#===================FPシステム ver0.90================================ #by かーい # #=================パラメータ追加 ver 1.30============================= #by みんと # #===================================================================== module Ka_battle #----------------------------------------------------------- # FPシステム #----------------------------------------------------------- ###############書き換え変数部分######################## #オートリロードの属性名 AUTO_RELOAD = "リロード" #オートリロード時の効果音 RELOAD_SE = ["033-Switch02", 80, 100] #FP加算の基本値(ダメージ%) FP_BASE = 50 #FPターン加算の基本値(%) FP_TURN_BASE = 5 end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler ################## include Ka_battle ################## #-------------------------------------------------------------------------- # ● HP の変更 # hp : 新しい HP #-------------------------------------------------------------------------- def hp=(hp) @hp = [[hp, maxhp].min, 0].max # 戦闘不能を付加または解除 for i in 1...$data_states.size if $data_states[i].zero_hp if self.dead? add_state(i) # FPを0に self.sp = 0 else remove_state(i) end end end end #-------------------------------------------------------------------------- # ● 通常攻撃の効果適用 # attacker : 攻撃者 (バトラー) #-------------------------------------------------------------------------- alias :ka_2_attack_effect :attack_effect attacker.ssp -= 1 ###AP消費による回数の追加処理とオートリロード####### if(attacker.ssp < skill.ssp_cost) if self.class.method_defined?("multy_element_set") eleset = attacker.multy_element_set elsif self.class.method_defined?("multy_element_set") eleset = attacker.equip_element_set else eleset = attacker.element_set end if defined?(XRXS) if XRXS.element_include?(eleset, AUTO_RELOAD) attacker.ssp += skill.ssp_cost Audio.se_play("Audio/SE/#{RELOAD_SE[0]}", RELOAD_SE[1], RELOAD_SE[2]) end else eleset.each{|x| if($data_system.elements[x] == AUTO_RELOAD) attacker.ssp += skill.ssp_cost Audio.se_play("Audio/SE/#{RELOAD_SE[0]}", RELOAD_SE[1], RELOAD_SE[2]) break end } ebd bool = false for x in attacker.states bool = ($data_states[x].name == AUTO_RELOAD) break if bool end if bool attacker.ssp += attacker.maxssp Audio.se_play("Audio/SE/#{RELOAD_SE[0]}", RELOAD_SE[1], RELOAD_SE[2]) end end result = ka_2_attack_effect(attacker) # FP処理 if(self.damage > 0) fp_plus = ((FP_BASE / 100.0) * self.damage / self.maxhp).round if defined?(XRXS) if self.class.method_defined?("multy_element_set") amount = XRXS.element_amount(attacker.multy_element_set, FP_TEXT) percent = XRXS.element_percent(attacker.multy_element_set, FP_TEXT) else amount = XRXS.element_amount(attacker.multy_element_set, FP_TEXT) percent = XRXS.element_percent(attacker.multy_element_set, FP_TEXT) end end fp_plus = fp_plus * (100 + percent) / 100 + amount self.sp += fp_plus end return result end #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 (バトラー) # skill : スキル #-------------------------------------------------------------------------- alias :ka_2_skill_effect :skill_effect def skill_effect(user, skill) ###AP消費による回数の追加処理とオートリロード####### if(attacker.ssp < skill.ssp_cost) if self.class.method_defined?("multy_element_set") eleset = attacker.multy_element_set elsif self.class.method_defined?("multy_element_set") eleset = attacker.equip_element_set else eleset = attacker.element_set end if defined?(XRXS) if XRXS.element_include?(eleset, AUTO_RELOAD) attacker.ssp += skill.ssp_cost Audio.se_play("Audio/SE/#{RELOAD_SE[0]}", RELOAD_SE[1], RELOAD_SE[2]) end else eleset.each{|x| if($data_system.elements[x] == AUTO_RELOAD) attacker.ssp += skill.ssp_cost Audio.se_play("Audio/SE/#{RELOAD_SE[0]}", RELOAD_SE[1], RELOAD_SE[2]) break end } end bool = false for x in attacker.states bool = ($data_states[x].name == AUTO_RELOAD) break if bool end if bool attacker.ssp += skill.ssp_cost Audio.se_play("Audio/SE/#{RELOAD_SE[0]}", RELOAD_SE[1], RELOAD_SE[2]) end end return ka_skill_effect(user, skill) end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● スキルアクション 結果作成 #-------------------------------------------------------------------------- if self.class.method_defined?("ka_make_skill_action_result") def ka_make_skill_action_result # スキルを取得 @skill = $data_skills[@active_battler.current_action.skill_id] # 強制アクションでなければ unless @active_battler.current_action.forcing # SP 切れなどで使用できなくなった場合 unless @active_battler.skill_can_use?(@skill.id) # アクション強制対象のバトラーをクリア $game_temp.forcing_battler = nil # ステップ 1 に移行 @phase4_step = 1 return end end # SP 消費 @active_battler.ssp -= @skill.ssp_cost @active_battler.sp -= @skill.sp_cost # ステータスウィンドウをリフレッシュ @status_window.refresh # ヘルプウィンドウにスキル名を表示 @help_window.set_text(@skill.name, 1) # アニメーション ID を設定 @animation1_id = @skill.animation1_id @animation2_id = @skill.animation2_id # コモンイベント ID を設定 @common_event_id = @skill.common_event_id # 対象側バトラーを設定 set_target_battlers(@skill.scope) # スキルの効果を適用 for target in @target_battlers target.skill_effect(@active_battler, @skill) end end else def make_skill_action_result # スキルを取得 @skill = $data_skills[@active_battler.current_action.skill_id] # 強制アクションでなければ unless @active_battler.current_action.forcing # SP 切れなどで使用できなくなった場合 unless @active_battler.skill_can_use?(@skill.id) # アクション強制対象のバトラーをクリア $game_temp.forcing_battler = nil # ステップ 1 に移行 @phase4_step = 1 return end end # SP 消費 @active_battler.ssp -= @skill.ssp_cost @active_battler.sp -= @skill.sp_cost # ステータスウィンドウをリフレッシュ @status_window.refresh # ヘルプウィンドウにスキル名を表示 @help_window.set_text(@skill.name, 1) # アニメーション ID を設定 @animation1_id = @skill.animation1_id @animation2_id = @skill.animation2_id # コモンイベント ID を設定 @common_event_id = @skill.common_event_id # 対象側バトラーを設定 set_target_battlers(@skill.scope) # スキルの効果を適用 for target in @target_battlers target.skill_effect(@active_battler, @skill) end end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ) #-------------------------------------------------------------------------- alias :ka_update_phase4_step6 :update_phase4_step6 def update_phase4_step6 ka_update_phase4_step6 # ターン終了時にFP回復 unless(@active_battler.dead?) base_plus = (battler.maxsp * Ka_battle::TURN_FP_BASE / 100) if defined?(XRXS) if self.class.method_defined?("multy_element_set") amount = XRXS.element_amount(attacker.multy_element_set, FP_TEXT) percent = XRXS.element_percent(attacker.multy_element_set, FP_TEXT) else amount = XRXS.element_amount(attacker.multy_element_set, FP_TEXT) percent = XRXS.element_percent(attacker.multy_element_set, FP_TEXT) end end battler.sp += (base_plus * (100 + percent) / 100) + amount end end end