#============================================================================== # ★ 通常攻撃・防御変更 ver1.0 by USK #------------------------------------------------------------------------------ # ・攻撃・防御のコマンドを装備、職業、アクターに応じて変更します # ・複数設定されている場合は優先順位が高いスキルが適用されます #============================================================================== =begin ・通常攻撃 装備、職業、アクターのメモ欄に と記入すると一番優先度が高いスキルが通常攻撃の代わりになります。 例  同じ優先度のスキルがある場合、優先度は 装備(武器)>装備(防具)>職業>アクター となります。 一番優先度が高いスキルがMP不足等で使用不可能な場合次に優先度が高いスキルが 選ばれます。これを利用して必殺技的な使い方もできます。 ・防御 装備、職業、アクターのメモ欄に と記入すると一番優先度が高いスキルが防御の代わりになります。 同じ優先度のスキルがある場合、優先度は 装備(防具)>装備(武器)>職業>アクター となります。 一番優先度が高いスキルがMP不足等で使用不可能な場合次に優先度が高いスキルが 選ばれます。 =end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor #-------------------------------------------------------------------------- # ● 通常攻撃のスキル ID を取得 #-------------------------------------------------------------------------- alias usk_default_attack_skill_id attack_skill_id def attack_skill_id obj = {:id => 0, :weight => 0} equips.compact.reverse.each {|equip| change_skill(obj, equip.attack_skill)} change_skill(obj, self.class.attack_skill) change_skill(obj, actor.attack_skill) change_skill(obj, {:id => usk_default_attack_skill_id, :weight => 0}) obj[:id] end #-------------------------------------------------------------------------- # ● 防御のスキル ID を取得 #-------------------------------------------------------------------------- alias usk_default_guard_skill_id guard_skill_id def guard_skill_id obj = {:id => 0, :weight => 0} equips.compact.each {|equip| change_skill(obj, equip.guard_skill)} change_skill(obj, self.class.guard_skill) change_skill(obj, actor.guard_skill) change_skill(obj, {:id => usk_default_guard_skill_id, :weight => 0}) obj[:id] end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def change_skill(obj1, obj2) if obj1[:id] == 0 || !skill_conditions_met?($data_skills[obj1[:id]]) obj1[:id] = obj2[:id] obj1[:weight] = obj2[:weight] elsif obj1[:weight] < obj2[:weight] obj1[:id] = obj2[:id] obj1[:weight] = obj2[:weight] end end end class RPG::BaseItem #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def attack_skill @attack_skill ||= get_attack_skill end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def guard_skill @guard_skill ||= get_guard_skill end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def get_attack_skill ret = {:id => 0, :weight => 0} if @note =~ //m ret[:id] = $1.to_i ret[:weight] = $2.to_i if $2 end ret end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def get_guard_skill ret = {:id => 0, :weight => 0} if @note =~ //m ret[:id] = $1.to_i ret[:weight] = $2.to_i if $2 end ret end end #============================================================================== # ■ Window_ActorCommand #============================================================================== class Window_ActorCommand < Window_Command if $TEST && instance_methods.any? {|m| m.to_s =~ /.+add_(attack|guard)_command/} msgbox("通常攻撃変更と他のスクリプトが競合しています") end #-------------------------------------------------------------------------- # ● 攻撃コマンドをリストに追加 #-------------------------------------------------------------------------- def add_attack_command name = $data_skills[@actor.attack_skill_id].name add_command(name, :attack, @actor.attack_usable?) end #-------------------------------------------------------------------------- # ● 防御コマンドをリストに追加 #-------------------------------------------------------------------------- def add_guard_command name = $data_skills[@actor.guard_skill_id].name add_command(name, :guard, @actor.guard_usable?) end end