#============================================================================== # ■身代わり拡張 for RGSS3 Ver1.00-β6 # □作成者 kure #=============================================================================== #============================================================================== # ■ RPG::BaseItem #============================================================================== class RPG::BaseItem #-------------------------------------------------------------------------- # ● 特徴の取得 #-------------------------------------------------------------------------- def features features = @features.clone #通常身代わり @note.match(/<身代わり発動\s?(\d+)%\s?>/) features.push(RPG::BaseItem::Feature.new(62, 4, $1.to_i)) if $1 @note.match(/<完全身代わり発動\s?(\d+)%\s?>/) features.push(RPG::BaseItem::Feature.new(62, 5, $1.to_i)) if $1 return features end #-------------------------------------------------------------------------- # ● 身代わり対象外の取得 #-------------------------------------------------------------------------- def not_substitute_obj return false unless @note return true if @note.include?("<身代わり対象外>") return false end #-------------------------------------------------------------------------- # ● 身代わり対象の取得 #-------------------------------------------------------------------------- def force_substitute_obj return false unless @note return true if @note.include?("<身代わり対象>") return false end end #============================================================================== # ■ Game_BattlerBase #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # ● 定数(特殊フラグ) #-------------------------------------------------------------------------- FLAG_ID_ADVANCE_SUBSTITUTE = 4 # 上級身代わりフラグ FLAG_ID_ADVANCE_SUBSTITUTE_P = 5 # 完全身代わりフラグ #-------------------------------------------------------------------------- # ● 上級身代わりの判定(追加定義) #-------------------------------------------------------------------------- def substitute_ex(per) special_flag_ex(per) && movable? end #-------------------------------------------------------------------------- # ● 完全身代わりの判定(追加定義) #-------------------------------------------------------------------------- def substitute_ex2(per) special_flag_ex2(per) && movable? end #-------------------------------------------------------------------------- # ● 特殊フラグ判定(追加定義) #-------------------------------------------------------------------------- def special_flag_ex(per) features(FEATURE_SPECIAL_FLAG).any? {|ft| ft.data_id == 4 && ft.value >= per} end #-------------------------------------------------------------------------- # ● 特殊フラグ判定(追加定義) #-------------------------------------------------------------------------- def special_flag_ex2(per) features(FEATURE_SPECIAL_FLAG).any? {|ft| ft.data_id == 5 && ft.value >= per} end end #============================================================================== # ■ Game_Unit #============================================================================== class Game_Unit #-------------------------------------------------------------------------- # ● 上級身代わりバトラーの取得(追加定義) #-------------------------------------------------------------------------- def substitute_battler_ex(target,per) members.find {|member| member.substitute_ex(per) && member != target} end #-------------------------------------------------------------------------- # ● 完全身代わりバトラーの取得(追加定義) #-------------------------------------------------------------------------- def substitute_battler_ex2(target,per) members.find {|member| member.substitute_ex2(per) && member != target} end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 身代わりの適用 #-------------------------------------------------------------------------- alias k_before_apply_substitute apply_substitute def apply_substitute(target, item) #割合取得 per = target.hp * 100 / target.mhp if $kure_base_script[:base_A] #身代わり発動 if check_substitute_ex(target, item) substitute = target.substitute_unit.select {|member| member.movable? } if substitute[0] && target != substitute[0] && item.id != target.guard_skill_id @log_window.display_substitute(substitute[0], target) return substitute[0] end end end #上級身代わり if check_substitute_ex(target, item) substitute = target.friends_unit.substitute_battler_ex(target,per) if substitute && target != substitute @log_window.display_substitute(substitute, target) return substitute end end #完全身代わり if check_substitute_ex2(target, item) substitute = target.friends_unit.substitute_battler_ex2(target,per) if substitute && target != substitute @log_window.display_substitute(substitute, target) return substitute end end k_before_apply_substitute(target, item) end #-------------------------------------------------------------------------- # ● 上級身代わり条件チェック(追加定義) #-------------------------------------------------------------------------- def check_substitute_ex(target, item) return false unless item return true if item.force_substitute_obj return false if item.not_substitute_obj return false if item.certain? return true end #-------------------------------------------------------------------------- # ● 完全身代わり条件チェック(追加定義) #-------------------------------------------------------------------------- def check_substitute_ex2(target, item) return false unless item return true if item.force_substitute_obj return false if item.not_substitute_obj return true end end