#============================================================================== # ■ RGSS3 戦闘不能時TP操作 Ver2.01 by 星潟 #------------------------------------------------------------------------------ # 戦闘不能時、TPを0にする設定と # 戦闘不能時、TPを0にする設定の状態でもTPが0にならなくなる、 # あるいはTPが最大値になる特徴を作成できます。 #============================================================================== # アクター・エネミー・職業・装備・ステート等のメモ欄に記述。 #------------------------------------------------------------------------------ # # # D_TP0の設定を無視する。 #------------------------------------------------------------------------------ # <逆襲> # # 戦闘不能時、TPが最大値まで増加する。 #============================================================================== # Ver2.00 TP0化のタイミングを変更。 # また、特徴による判定をキャッシュ化。 # Ver2.01 初期化時の処理においてこのスクリプトが効果を発揮しないように変更。 # (VXAceの仕様上、アクター・エネミーは最初は戦闘不能状態で作成される) #============================================================================== module VDTPD #戦闘不能時TPを0にするか否か。 true →0になる false→変化なし D_TP0 = true #TP維持の設定用キーワードを指定。 WORD1 = "TP維持" #逆襲の設定用キーワードを指定。 WORD2 = "逆襲" end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # セットアップ #-------------------------------------------------------------------------- alias setup_tpzero setup def setup(actor_id) @anti_vdtpd = true setup_tpzero(actor_id) remove_instance_variable(:@anti_vdtpd) end end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_tpzero initialize def initialize(index, enemy_id) @anti_vdtpd = true initialize_tpzero(index, enemy_id) remove_instance_variable(:@anti_vdtpd) end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 戦闘不能になる #-------------------------------------------------------------------------- alias die_tpzero die def die die_tpzero if @hp <= 0 && !@anti_vdtpd @tp = 0 if !void_death_tpdelete? @tp = max_tp if revenge_tpplus? end end #-------------------------------------------------------------------------- # TP0化回避 #-------------------------------------------------------------------------- def void_death_tpdelete? !VDTPD::D_TP0 or feature_objects.any? {|f| f.death_tp_zero} end #-------------------------------------------------------------------------- # TP最大値化 #-------------------------------------------------------------------------- def revenge_tpplus? feature_objects.any? {|f| f.revenge_tp_plus} end end class RPG::BaseItem #-------------------------------------------------------------------------- # TP0化回避 #-------------------------------------------------------------------------- def death_tp_zero (@death_tp_zero ||= /<#{VDTPD::WORD1}>/ =~ note ? 1 : 0) == 1 end #-------------------------------------------------------------------------- # TP最大値化 #-------------------------------------------------------------------------- def revenge_tp_plus (@revenge_tp_plus ||= /<#{VDTPD::WORD2}>/ =~ note ? 1 : 0) == 1 end end