king-exit/Scripts/_.67.rb
2024-08-31 14:17:23 -05:00

159 lines
No EOL
6.5 KiB
Ruby

#==============================================================================
# ■身代わり拡張 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