# 設定項目 class Scene_Battle # ステート表示ウィンドウを表示するボタン KS_CONDITION_CALL = Input::X # ステート表示ウィンドウのX座標 KS_COND_X = 32 # ステート表示ウィンドウのY座標 KS_COND_Y = 64 # ステート表示ウィンドウのZ座標 KS_CONDITION_Z = 300 # ステート表示ウィンドウに並べる最大のステート数(ウィンドウ幅に関係する) KS_CONDITION_COLUMN = 14 # ステート表示ウィンドウを関連付けるビューポート KS_CONDITION_VIEWPORT = nil # 例・ステートを表示するウィンドウのビューポートを @viewport2 にする。 #KS_CONDITION_VIEWPORT = :@viewport2 # ステート表示ウィンドウ上のキャラ名に当てるスペース KS_COND_NAME = 96 KS_COND_SPAC = 4 KS_COND_AC_H = 30 KS_CONDITION_RECT = Rect.new(KS_COND_X, KS_COND_Y, KS_COND_NAME + KS_COND_SPAC + 24 * KS_CONDITION_COLUMN, 32 + KS_COND_AC_H * 5) remove_const(:KS_COND_X) remove_const(:KS_COND_Y) end =begin ★ks_パーティステート表示 最終更新日 2011/05/10 2011/05/10 そのターンにパーティーステートウィンドウを表示せずに、ターゲットアクターを選択する場合、 ウィンドウ内用が更新されない不具合を修正しました。 □===制作・著作===□ MaidensnowOnline 暴兎 使用プロジェクトを公開する場合、readme等に当HP名とそのアドレスを記述してください。 使用報告はしてくれると喜びます。 □===配置場所===□ 基本スクリプトおよび基本エリアスは必要ありません。 エリアスのみで構成されており、原則的に最後に処理されるべき項目があるので、 可能な限り"▼ メイン"の上、近くに配置してください。 □===説明・使用方法===□ 戦闘中のコマンド入力中に、設定したボタンを押すことでパーティの現在ステートと、 その残り時間を最大ターン数に対するゲージで表示する。 □===エリアスしているメソッド===□ Scene_Battle start terminate start_main update_party_command_selection update_actor_command_selection start_target_enemy_selection start_target_actor_selection end_target_actor_selection start_skill_selection start_item_selection =end class Window_Base def draw_icon_and_state_turn(state_id, x, y, battler) stat = $data_states[state_id] draw_icon(stat.icon_index, x, y, true) turns = battler.instance_variable_get(:@state_turns) if stat.auto_release_prob > 0 max = stat.hold_turn now = turns[state_id] if now <= 0 max = 1 now = 1 cc = text_color(23) cd = text_color(23) else cc = text_color(10) cd = text_color(14) end else return end ca = text_color(15) rect = Rect.new(x + 1, y + 24, 22, 5) rect.y = contents.height - rect.height if rect.y + rect.height > contents.height contents.fill_rect(rect, ca) rect.y += 1 rect.height -= 2 contents.gradient_fill_rect(rect, cc, cd) if max > now rect.width = rect.width * (max - now) / max rect.x += 22 - rect.width contents.fill_rect(rect, ca) end end end class Scene_Battle alias start_for_party_condition start def start start_for_party_condition xx = KS_CONDITION_RECT.x ww = KS_CONDITION_RECT.width yy = KS_CONDITION_RECT.y hh = KS_CONDITION_RECT.height @party_condition_window = Window_Base.new(xx, yy, ww, hh) @party_condition_window.contents = Bitmap.new(@party_condition_window.width - 32, @party_condition_window.height - 32) @party_condition_window.z = KS_CONDITION_Z @party_condition_window.viewport = instance_variable_get(KS_CONDITION_VIEWPORT) unless KS_CONDITION_VIEWPORT.nil? @party_condition_window.windowskin = Cache.system('Window') @party_condition_window.visible = false @need_refresh_conditon = true end alias terminate_for_party_condition terminate def terminate @party_condition_window.contents.dispose @party_condition_window.dispose terminate_for_party_condition end alias start_main_for_party_condition start_main def start_main @party_condition_window.visible = false @need_refresh_conditon = true start_main_for_party_condition end alias update_party_command_selection_for_party_condition update_party_command_selection def update_party_command_selection update_party_command_selection_for_party_condition update_condition_window end alias update_actor_command_selection_for_party_condition update_actor_command_selection def update_actor_command_selection update_actor_command_selection_for_party_condition update_condition_window end alias start_target_enemy_selection_for_party_condition start_target_enemy_selection def start_target_enemy_selection start_target_enemy_selection_for_party_condition @party_condition_window.visible = false end alias start_target_actor_selection_for_party_condition start_target_actor_selection def start_target_actor_selection start_target_actor_selection_for_party_condition show_condition_window end alias end_target_actor_selection_for_party_condition end_target_actor_selection def end_target_actor_selection end_target_actor_selection_for_party_condition @party_condition_window.visible = false end alias start_skill_selection_for_party_condition start_skill_selection def start_skill_selection start_skill_selection_for_party_condition @party_condition_window.visible = false end alias start_item_selection_for_party_condition start_item_selection def start_item_selection start_item_selection_for_party_condition @party_condition_window.visible = false end def update_condition_window if Input.trigger?(KS_CONDITION_CALL) Sound.play_decision @party_condition_window.visible = !@party_condition_window.visible show_condition_window if @party_condition_window.visible end end def show_condition_window @party_condition_window.visible = true if @need_refresh_conditon refresh_condition_window @need_refresh_conditon = false end end def refresh_condition_window window = @party_condition_window contents = window.contents contents.clear $game_party.members.each_with_index {|actor, i| rect = Rect.new(0, i * KS_COND_AC_H, KS_COND_NAME, 24) rect.width = KS_COND_NAME contents.draw_text(rect, actor.name) rect.x = KS_COND_NAME + KS_COND_SPAC rect.width = 24 state_turns = actor.instance_variable_get(:@state_turns) for state in actor.states window.draw_icon_and_state_turn(state.id, rect.x, rect.y, actor) rect.x += 24 end } end end