#=============================================================================
# ◇ 「魔法反射」ステート by 桜雅 在土
#=============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● スキルまたはアイテムの対象側バトラー設定
#--------------------------------------------------------------------------
alias xrxs_magic_refrex_set_target_battlers set_target_battlers
def set_target_battlers(scope,battler)
xrxs_magic_refrex_set_target_battlers(scope,battler)
# スキル使用時
if battler.current_action.kind == 1
# 魔法である場合
element_id = get_refrex_penetration_id
# スキルに反射貫通が付加されているか。
skill_state_penetration(@skill, element_id, battler)
if battler.penetration != true
# 検索
for target in battler.target.dup
# 魔法反射ステートにかかっているか?
state_id = get_magical_refrex_id
if state_id != nil and target.state?(state_id)
# 反射---
if rand(10) < 5
target.refrexed = true
battler.target.delete(target)
unless battler.target.include?(battler)
battler.target.push(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(battler)
# 対象側アニメーション
xrxs_magic_refrex_update_phase4_step4(battler)
# 魔法反射(貫通しない場合)
for target in $game_party.actors + $game_troop.enemies - battler.target
next if target.refrexed == nil or target.refrexed == false
# target.animation_id = MAGIC_REFREX_ANIMATION_ID
# target.animation_hit = (target.damage != "Miss")
target.animation.push([MAGIC_REFREX_ANIMATION_ID,
(target.damage[battler] != "Miss")])
# 反射フラグリセット
target.refrexed = false
end
for target in battler.target
# 反射フラグリセット
target.refrexed = false
end
# 貫通フラグリセット
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.name[/\A#{MAGIC_REFREX_STATE_NAME}\Z/]
result = $data_states.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 == 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
[/pre]
把中间##那段替换相应的位置就可以
不过我把反射的定义改了,单体才能反射,全体魔法不能反射,下面是我自己改的定义
def skill_is_a_magic?(skill)
return false unless skill.is_a?(RPG::Skill)
return (skill.atk_f ==0 and (skill.scope==1 or skill.scope==3 or skill.scope==5))
end
end
LZ对何种技能才能反射的定义需要如何改的话,自己看着办吧,我只提供随机反射的效果