# ▼▲▼ XRXS27. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼ # # Re-upload 2010/ 3/25 # #============================================================================== # □ カスタマイズポイント #============================================================================== class Scene_Battle MAGIC_REFREX_STATE_NAME = "魔法反射" # 「魔法反射」ステート名 MAGIC_REFREX_ANIMATION_ID = 64 #  魔法反射のアニメーションID REFREX_PENETRATION_ELEMENT_NAME = "反射貫通" # 「反射貫通」属性名 end class Scene_Battle #-------------------------------------------------------------------------- # ○ スキルが魔法であるかどうか #-------------------------------------------------------------------------- def skill_is_a_magic?(skill) return false unless skill.is_a?(RPG::Skill) return (skill.int_f > skill.str_f) end end #============================================================================= # ◇ 「魔法反射」ステート #============================================================================= class Scene_Battle #-------------------------------------------------------------------------- # ● スキルまたはアイテムの対象側バトラー設定 #-------------------------------------------------------------------------- alias xrxs_magic_refrex_set_target_battlers set_target_battlers def set_target_battlers(scope) xrxs_magic_refrex_set_target_battlers(scope) # スキル使用時 if @active_battler.current_action.kind == 1 # 魔法である場合 if skill_is_a_magic?(@skill) element_id = get_refrex_penetration_id # スキルに反射貫通が付加されているか。 skill_state_penetration(@skill, element_id, @active_battler) if @active_battler.penetration != true # 検索 for target in @target_battlers.dup # 魔法反射ステートにかかっているか? state_id = get_magical_refrex_id if state_id != nil and target.state?(state_id) # 反射--- target.refrexed = true @target_battlers.delete(target) unless @target_battlers.include?(@active_battler) @target_battlers.push(@active_battler) end # ---反射の設定完了 end end end end end end #-------------------------------------------------------------------------- # ● スキルに反射貫通属性が付加されているか #-------------------------------------------------------------------------- def skill_state_penetration(skill, element_id, user) if skill.element_set.include?(element_id) # 反射フラグリセット user.refrexed = false # 貫通フラグをセット user.penetration = true end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション) #-------------------------------------------------------------------------- alias xrxs_magic_refrex_update_phase4_step4 update_phase4_step4 def update_phase4_step4 # 対象側アニメーション xrxs_magic_refrex_update_phase4_step4 # 魔法反射(貫通しない場合) for target in $game_party.actors + $game_troop.enemies - @target_battlers next if target.refrexed == nil or target.refrexed == false target.animation_id = MAGIC_REFREX_ANIMATION_ID target.animation_hit = (target.damage != "Miss") # 反射フラグリセット target.refrexed = false end for target in @target_battlers # 反射フラグリセット target.refrexed = false end # 貫通フラグリセット @active_battler.penetration = false end #-------------------------------------------------------------------------- # ○ 魔法反射ステートのID取得 #-------------------------------------------------------------------------- def get_magical_refrex_id if @xrxs27_magic_refrex_state_id == nil result = nil for i in 1 ... $data_states.size if $data_states[i].name[/\A#{MAGIC_REFREX_STATE_NAME}\Z/] result = $data_states[i].id break end end @xrxs27_magic_refrex_state_id = result end return @xrxs27_magic_refrex_state_id end #-------------------------------------------------------------------------- # ○ 反射貫通属性のID取得 #-------------------------------------------------------------------------- def get_refrex_penetration_id if @xrxs27_refrex_penetration_element_id == nil result = nil for i in 1 ... $data_system.elements.size if $data_system.elements[i] == REFREX_PENETRATION_ELEMENT_NAME result = i break end end @xrxs27_refrex_penetration_element_id = result end return @xrxs27_refrex_penetration_element_id end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler attr_accessor :refrexed attr_accessor :penetration end