###################### 敵のパラメータに変数を利用する ###################### # # # 一部の敵のパラメータに変数を利用できるようにするスクリプトです。 # # 能力値を「1」に設定したパラメータについては、 # # 設定で指定したIDの変数の値になります。 # # (デフォルトの場合 HP を 1 にすれば 変数ID 1 の値がHPになります) # # また、設定で「0」を指定すれば変数は呼び出されません。 # # (デフォルトの場合は回避修正を 1 にしても変数からの代入はありません) # # # # また、戦闘中に変数を変更し、結果能力を再び変動させたい場合は # # 変数の操作をした後バトルイベントのスクリプトで # # 「set_enemy_parameter(index, cure)」の形式で入力してください。 # # indexにはトループのindex(デフォルトならば一番左が0、以降1、2…) # # 全員を同時に再設定したい場合はindexを-1にして下さい。 # # cureはパラメータを変動させた後回復するか(省略した場合回復しない) # # # # 例えば戦闘開始後に変数1の値を2000に変更して、 # # 「set_enemy_parameter(0, true)」とした場合、 # # トループのindex0のキャラのHPがデータベース上で「1」に設定されていれば # # その敵の最大HPは2000となりHPとSPが回復します。 # # # # あとオマケとして「任意のアクターの任意のレベルにおける能力をコピー」も。 # # 「copy_parameter(id, level)」でその能力をコピーします。 # # 「copy_parameter(1, 32)」でIDが1のアクターのレベルが32の時の能力を # # 指定した変数に保存していきます。 # # 戦闘開始時のバトルイベントで # # 「copy_parameter(1, 32) # #  set_enemy_parameter(0, true)」とした場合、 # # トループのindexが0のエネミー(一番左)が # # ID1のアクターのレベル32の時の能力値をパラメータとした状態になります # # # # ただし、コピーされるのはレベルによって変動するパラメータのみです。 # # (つまりHP,SP,STR,DEX,AGI,INTの六つ) # # これ以外のパラメータを取得したい場合は変数の操作で取得してください。 # # # ############################################################################ module Annex HP_VARIABLE = 1 # 敵のHPを格納する変数 SP_VARIABLE = 2 # 敵のSPを格納する変数 STR_VARIABLE = 3 # 敵の腕力を格納する変数 DEX_VARIABLE = 4 # 敵の器用さを格納する変数 AGI_VARIABLE = 5 # 敵の素早さを格納する変数 INT_VARIABLE = 6 # 敵の魔力を格納する変数 ATK_VARIABLE = 7 # 敵の攻撃力を格納する変数 PDEF_VARIABLE = 8 # 敵の物理防御を格納する変数 MDEF_VARIABLE = 9 # 敵の魔法防御を格納する変数 EVA_VARIABLE = 0 # 敵の回避修正を格納する変数 end #============================================================================== # ■ Game_Variables #============================================================================== class Game_Variables #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- alias variable_parameter_initialize initialize def initialize # 呼び戻し variable_parameter_initialize # すべての値に暫定的に1を代入 # ※代入を忘れてしまうと腕力等が0になるため self[Annex::HP_VARIABLE] = 1 if Annex::HP_VARIABLE != 0 self[Annex::SP_VARIABLE] = 1 if Annex::SP_VARIABLE != 0 self[Annex::STR_VARIABLE] = 1 if Annex::STR_VARIABLE != 0 self[Annex::DEX_VARIABLE] = 1 if Annex::DEX_VARIABLE != 0 self[Annex::AGI_VARIABLE] = 1 if Annex::AGI_VARIABLE != 0 self[Annex::INT_VARIABLE] = 1 if Annex::INT_VARIABLE != 0 self[Annex::ATK_VARIABLE] = 1 if Annex::ATK_VARIABLE != 0 self[Annex::PDEF_VARIABLE] = 1 if Annex::PDEF_VARIABLE != 0 self[Annex::MDEF_VARIABLE] = 1 if Annex::MDEF_VARIABLE != 0 self[Annex::EVA_VARIABLE] = 1 if Annex::EVA_VARIABLE != 0 end end #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ○ オブジェクト初期化 # troop_id : トループ ID # member_index : トループメンバーのインデックス #-------------------------------------------------------------------------- alias variable_parameter_initialize initialize def initialize(troop_id, member_index) # ID だけ先に取得しちゃう @enemy_id = $data_troops[troop_id].members[member_index].enemy_id # パラメータの設定 set_parameter(false) # 呼び戻し variable_parameter_initialize(troop_id, member_index) end #-------------------------------------------------------------------------- # ◎ 追加:パラメータの設定 # cure : 設定後にHPとSPを回復させるか #-------------------------------------------------------------------------- def set_parameter(cure = true) # 全体の流れ: # とりあえず@base_xxxに代入 # その値が1で、なおかつ変数IDが0でない場合、変数を取得 # すべてのパラメータについて実行したあと、回復フラグチェック # MaxHPの設定 @base_maxhp = $data_enemies[@enemy_id].maxhp if @base_maxhp == 1 and Annex::HP_VARIABLE != 0 @base_maxhp = $game_variables[Annex::HP_VARIABLE] end # MaxSPの設定 @base_maxsp = $data_enemies[@enemy_id].maxsp if @base_maxsp == 1 and Annex::SP_VARIABLE != 0 @base_maxsp = $game_variables[Annex::SP_VARIABLE] end # 腕力の設定 @base_str = $data_enemies[@enemy_id].str if @base_str == 1 and Annex::STR_VARIABLE != 0 @base_str = $game_variables[Annex::STR_VARIABLE] end # 器用さの設定 @base_dex = $data_enemies[@enemy_id].dex if @base_dex == 1 and Annex::DEX_VARIABLE != 0 @base_dex = $game_variables[Annex::DEX_VARIABLE] end # 素早さの設定 @base_agi = $data_enemies[@enemy_id].agi if @base_agi == 1 and Annex::AGI_VARIABLE != 0 @base_agi = $game_variables[Annex::AGI_VARIABLE] end # 魔力の設定 @base_int = $data_enemies[@enemy_id].int if @base_int == 1 and Annex::INT_VARIABLE != 0 @base_int = $game_variables[Annex::INT_VARIABLE] end # 攻撃力の設定 @base_atk = $data_enemies[@enemy_id].atk if @base_atk == 1 and Annex::ATK_VARIABLE != 0 @base_atk = $game_variables[Annex::ATK_VARIABLE] end # 物理防御の設定 @base_pdef = $data_enemies[@enemy_id].pdef if @base_pdef == 1 and Annex::PDEF_VARIABLE != 0 @base_pdef = $game_variables[Annex::PDEF_VARIABLE] end # 魔法防御 @base_mdef = $data_enemies[@enemy_id].mdef if @base_mdef == 1 and Annex::MDEF_VARIABLE != 0 @base_mdef = $game_variables[Annex::MDEF_VARIABLE] end # 回避修正 @base_eva = $data_enemies[@enemy_id].eva if @base_eva == 1 and Annex::EVA_VARIABLE != 0 @base_eva = $game_variables[Annex::EVA_VARIABLE] end # HP/SPの回復 if cure @hp = maxhp @sp = maxsp end end #-------------------------------------------------------------------------- # ● 基本 MaxHP の取得 #-------------------------------------------------------------------------- def base_maxhp return @base_maxhp end #-------------------------------------------------------------------------- # ● 基本 MaxSP の取得 #-------------------------------------------------------------------------- def base_maxsp return @base_maxsp end #-------------------------------------------------------------------------- # ● 基本腕力の取得 #-------------------------------------------------------------------------- def base_str return @base_str end #-------------------------------------------------------------------------- # ● 基本器用さの取得 #-------------------------------------------------------------------------- def base_dex return @base_dex end #-------------------------------------------------------------------------- # ● 基本素早さの取得 #-------------------------------------------------------------------------- def base_agi return @base_agi end #-------------------------------------------------------------------------- # ● 基本魔力の取得 #-------------------------------------------------------------------------- def base_int return @base_int end #-------------------------------------------------------------------------- # ● 基本攻撃力の取得 #-------------------------------------------------------------------------- def base_atk return @base_atk end #-------------------------------------------------------------------------- # ● 基本物理防御の取得 #-------------------------------------------------------------------------- def base_pdef return @base_pdef end #-------------------------------------------------------------------------- # ● 基本魔法防御の取得 #-------------------------------------------------------------------------- def base_mdef return @base_mdef end #-------------------------------------------------------------------------- # ● 基本回避修正の取得 #-------------------------------------------------------------------------- def base_eva return @base_eva end end #============================================================================== # ■ Interpreter #============================================================================== class Interpreter #-------------------------------------------------------------------------- # ◎ 追加:パラメータの再設定 # index : エネミーindex (-1 で 全員) # cure : 回復するか否か #-------------------------------------------------------------------------- def set_enemy_parameter(index = -1, cure = false) # 戦闘中にのみ実行 if $game_temp.in_battle # index が 0 以上ならそのエネミーだけ実行 if index >= 0 # その index に敵が存在しないなら終了 return if $game_troop.enemies[index] == nil $game_troop.enemies[index].set_parameter(cure) return end # -1ならば全員 if index == -1 for enemy in $game_troop.enemies enemy.set_parameter(cure) end return end end return end #-------------------------------------------------------------------------- # ◎ 追加:パラメータのコピー # id : アクターID # level : アクターレベル #-------------------------------------------------------------------------- def copy_parameter(id, level) # アクターが存在しないなら 終了 return if $data_actors[id] == nil if Annex::HP_VARIABLE != 0 $game_variables[Annex::HP_VARIABLE] = $data_actors[id].parameters[0, level] end if Annex::SP_VARIABLE != 0 $game_variables[Annex::SP_VARIABLE] = $data_actors[id].parameters[1, level] end if Annex::STR_VARIABLE != 0 $game_variables[Annex::STR_VARIABLE] = $data_actors[id].parameters[2, level] end if Annex::DEX_VARIABLE != 0 $game_variables[Annex::DEX_VARIABLE] = $data_actors[id].parameters[3, level] end if Annex::AGI_VARIABLE != 0 $game_variables[Annex::AGI_VARIABLE] = $data_actors[id].parameters[4, level] end if Annex::INT_VARIABLE != 0 $game_variables[Annex::INT_VARIABLE] = $data_actors[id].parameters[5, level] end return end end