#============================================================================== # ■ RGSS3 成長封印特徴/イベントコマンド Ver1.01 by 星潟 #------------------------------------------------------------------------------ # アクター/エネミーの成長効果(所謂ドーピング)を無効化する特徴を # 作成する事ができるようになります。(エネミーの特徴は通常考えられませんが一応) # # また、アクター/エネミー全体の成長効果を一時的に無効にする # イベントコマンドを利用できるようになります。 #------------------------------------------------------------------------------ # 使用方法 #------------------------------------------------------------------------------ # ★成長効果を無効化する特徴を作成したい場合 # # 特徴を有する項目(アクター・職業・装備・ステート等)のメモ欄に # <成長封印>と記入する事で機能します。 #------------------------------------------------------------------------------ # ★アクター全体の成長効果を無効にしたい場合 # # イベントコマンドのスクリプトで下記のように入力して下さい。 # # actor_pp_seal(true) #------------------------------------------------------------------------------ # ★アクター全体の成長効果を有効にしたい場合 # # イベントコマンドのスクリプトで下記のように入力して下さい。 # # actor_pp_seal(false) #------------------------------------------------------------------------------ # ★エネミー全体の成長効果を無効にしたい場合 # # イベントコマンドのスクリプトで下記のように入力して下さい。 # # enemy_pp_seal(true) #------------------------------------------------------------------------------ # ★エネミー全体の成長効果を有効にしたい場合 # # イベントコマンドのスクリプトで下記のように入力して下さい。 # # enemy_pp_seal(false) #============================================================================== # Ver1.01 キャッシュ化・処理変更による軽量化。 # 成長効果がマイナスの場合に処理をしない機能を追加。 #============================================================================== module PP_SEAL #成長を封印する特徴を作成する為のキーワードを設定します。 WORD = "<成長封印>" #成長効果がマイナスでも封印するか? #trueで封印する。falseで封印しない。 MINUS = false end class Game_BattlerBase #-------------------------------------------------------------------------- # 通常能力値の加算値取得 #-------------------------------------------------------------------------- alias param_plus_pp_seal param_plus def param_plus(param_id) #成長が封印されている場合は0、そうでない場合は通常の処理を行う。 data = param_plus_pp_seal(param_id) (pp_seal? && (PP_SEAL::MINUS or (!PP_SEAL::MINUS && data > 0))) ? 0 : data end #-------------------------------------------------------------------------- # 成長封印判定 #-------------------------------------------------------------------------- def pp_seal? #パーティのオブジェクトが作成されていない場合はfalseを返す。(保険) return false if $game_party == nil #アクターの場合とエネミーの場合で、成長封印フラグを分ける。 return true if self.actor? ? $game_party.pp_seal(0) : $game_party.pp_seal(1) #成長が封印されているか全ての特徴をチェックする。 feature_objects.each {|f| return true if f.doping_break} #封印されていなければfalseを返す。 false end end class Game_Party < Game_Unit #-------------------------------------------------------------------------- # 成長封印判定 #-------------------------------------------------------------------------- def pp_seal(type) #判定用配列が存在しない場合に限り、封印状態の判定用配列を作成する。 pp_seal_create if @pp_seal == nil #封印状態のデータを返す。 @pp_seal[type] end #-------------------------------------------------------------------------- # 封印状態配列作成 #-------------------------------------------------------------------------- def pp_seal_create #封印状態の配列を作成する。初期状態は共にfalse。(封印状態を無効) @pp_seal = [false, false] end #-------------------------------------------------------------------------- # アクター側封印状態切り替え #-------------------------------------------------------------------------- def actor_pp_seal(type) #判定用配列が存在しない場合に限り、封印状態の判定用配列を作成する。 pp_seal_create if @pp_seal == nil #引数に従って判定用配列を変更する。 @pp_seal[0] = type #能力変動が発生し得る為、全アクターをリフレッシュし直す。 $data_actors.size.times {|i| $game_actors[i].refresh if $game_actors[i]} end #-------------------------------------------------------------------------- # エネミー側封印状態切り替え #-------------------------------------------------------------------------- def enemy_pp_seal(type) #判定用配列が存在しない場合に限り、封印状態の判定用配列を作成する。 pp_seal_create if @pp_seal == nil #引数に従って判定用配列を変更する。 @pp_seal[1] = type #戦闘中でなければここで処理を中断する。 return if !$game_party.in_battle #能力変動が発生し得る為、全エネミーをリフレッシュし直す。 $game_troop.members.each {|enemy| enemy ? enemy.refresh : next} end end class Game_Interpreter #-------------------------------------------------------------------------- # アクター側封印状態切り替え #-------------------------------------------------------------------------- def actor_pp_seal(type) $game_party.actor_pp_seal(type) end #-------------------------------------------------------------------------- # エネミー側封印状態切り替え #-------------------------------------------------------------------------- def enemy_pp_seal(type) $game_party.enemy_pp_seal(type) end end class RPG::BaseItem #-------------------------------------------------------------------------- # ドーピング無効 #-------------------------------------------------------------------------- def doping_break #キャッシュが存在する場合はキャッシュを返す。 return @doping_break if @doping_break != nil #データを取得。 @doping_break = self.note.include?(PP_SEAL::WORD) #データを返す。 @doping_break end end