#============================================================================== # # ■アイテム・スキルの使用の改善 □Ver1.02 □製作者:月紳士 # # ・RPGツクールVX用 RGSS2スクリプト # # ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド # # ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。 #---------------------------------------------------------------------------- # 更新履歴 # Ver1.02 エラー修正。 # Ver1.01 エラー修正。 #============================================================================== =begin  このスクリプトはアイテム・スキル使用時の処理を改良するスクリプトです。  ○ 毒を食らうアイテムをメニュー画面で味方に使用したら、    ブザーがなったけど、何度もやってるうちに使えた…  ○ コモンイベントだけを設定したアイテムがメニュー画面で使えない!  ○ ↑のアイテムを戦闘で使えたが「効かなかった!」とか余計な表示がでちゃう!  といった、よくわからない系の不具合(?)を解消するスクリプトです。 =end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ○ オブジェクトの付加ステート・解除ステートが有効か判定 # obj : スキルもしくはアイテム # # テスト時におこなわれる、clone(クローン)に対しての仮ステート付加処理が # アクター本人に本当に付加されてしまう不具合があり、 # テスト動作は実は上手く出来ていません。 # これが不具合の原因ではありませんが、その処理を取り除いて # テスト用の独自の処理にて、有効か、否かの判定を行っています。 #-------------------------------------------------------------------------- def available_obj_state(obj) return false if obj == nil ava = false minus = obj.minus_state_set if minus != [] for i in minus ava = true if state?(i) end end plus = obj.plus_state_set if plus != [] for i in plus ava = true ava = false if state?(i) ava = false if state_ignore?(i) end end return ava end #-------------------------------------------------------------------------- # ● スキルの適用テスト # user : スキルの使用者 # skill : スキル # 使用対象が全快しているときの回復禁止などを判定する。 #-------------------------------------------------------------------------- def skill_test(user, skill) tester = self.clone tester.make_obj_damage_value(user, skill) # tester.apply_state_changes(skill) 除外 if tester.hp_damage < 0 return true if tester.hp < tester.maxhp end if tester.mp_damage < 0 return true if tester.mp < tester.maxmp end return true if available_obj_state(skill) ## 変更部分 return true if skill.common_event_id != 0 ## 追加部分 return false end #-------------------------------------------------------------------------- # ● アイテムの適用テスト # user : アイテムの使用者 # item : アイテム # 使用対象が全快しているときの回復禁止などを判定する。 #-------------------------------------------------------------------------- def item_test(user, item) tester = self.clone tester.make_obj_damage_value(user, item) # tester.apply_state_changes(item) 除外 if tester.hp_damage < 0 or tester.calc_hp_recovery(user, item) > 0 return true if tester.hp < tester.maxhp end if tester.mp_damage < 0 or tester.calc_mp_recovery(user, item) > 0 return true if tester.mp < tester.maxmp end return true if available_obj_state(item) ## 変更部分 return true if item.parameter_type > 0 return true if item.common_event_id != 0 ## 追加部分 return false end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ◎ 失敗の表示 # ※ オブジェクトにコモンイベントが設定してあれば失敗表示しない #-------------------------------------------------------------------------- alias tig_ous_display_failure display_failure def display_failure(target, obj) return if obj.common_event_id != 0 tig_ous_display_failure(target, obj) end end