敵のパラメータに変数を用いる

p-sight: Annex - Using Variables to Enemies' Parameter

Tag: 戦闘関連 / 数値処理

説明

敵のパラメータの一部(あるいはすべて)に変数を代入できるようにするスクリプトです。

設定可能な項目

HP_VARIABLE

敵のHPが1の時に参照される変数のID。

SP_VARIABLE

敵のSPが1の時に参照される変数のID。

STR_VARIABLE

敵の腕力が1の時に参照される変数のID。

DEX_VARIABLE

敵の器用さが1の時に参照される変数のID。

AGI_VARIABLE

敵の素早さが1の時に参照される変数のID。

INT_VARIABLE

敵の魔力が1の時に参照される変数のID。

ATK_VARIABLE

敵の攻撃力が1の時に参照される変数のID。

PDEF_VARIABLE

敵の物理防御が1の時に参照される変数のID。

MDEF_VARIABLE

敵の魔法防御が1の時に参照される変数のID。

EVA_VARIABLE

敵の回避修正が1の時に参照される変数のID。

また、上記の設定項目に「0」を設定した場合は、 データベースで値を1に設定しても変数を参照しなくなります。

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 # 敵の回避修正を格納する変数

使い方

データベースで「MAX HP」、「MAX SP」、「腕力」、「器用さ」、「素早さ」、「魔力」、 「攻撃力」、「物理防御」、「魔法防御」、「回避修正」のいずれか、あるいは複数について、 能力値を1に設定してください。
能力値を1に設定された部分のパラメータについては 戦闘開始と同時に変数を取得し、その部分の能力が変数の値と同じになります。

ただし、例えば複数の敵が別の値を参照してパラメータを決定したい場合や、 戦闘開始時にならないと変数を設定できない場合は、 戦闘開始後、バトルイベントからのスクリプトで変数を設定した後に 「set_enemy_parameter([index, [cure]])」の形式で設定してください。
indexを-1にすると全員のパラメータを再計算しなおします。
cureをtrueにするとパラメータの再計算時にHPとSPが全回復します。
これらは省略可能で、省略した場合はcureは「false」、indexは「-1」だとみなします。

一番左の一体(indexが0の敵)所持金に応じて敵のパラメータを決定したい場合

戦闘開始直後にバトルイベントから変数の操作で「所持金」を変数ID1(敵HP)に代入

スクリプトで「set_enemy_parameter(0, true)」と設定。 # これでHPとSPが全回復する。 # HPとSPを回復させたくない場合は「set_enemy_parameter(0)」とすれば良い

戦闘で6ターン目に全員のSTRを再設定したい場合

バトルイベントの6ターン目の自動実行イベントで変数3(腕力)を変更

スクリプトで「set_enemy_parameter」と設定。 # これで全員が回復無しでパラメータの再計算を行う # HPとSPを回復させたい場合は「set_enemy_parameter(-1, true)」とすれば良い

また、任意のアクターの任意のレベルのときのパラメータを取得することも可能です。
イベントの「スクリプト」で「copy_parameter(id, level)」と入力してください。
id には アクターのIDを、 levelにはそのアクターのレベルを設定できます。
ただし、このスクリプトで取得できるパラメータはレベルによって変動するもの、 つまり「HP」「SP」「腕力」「器用さ」「素早さ」「魔力」の六つのみとなっています。

自分の分身(アクターID 1、レベルは自分と同じ、攻撃力や防御も同じ) と闘いたい場合
※ アニメーションは変数やスクリプトでの設定はできないので、ご注意ください

変数 11(プレイヤーのレベルを取得する暫定的な変数) に アクター1のレベルを代入。

スクリプトで「copy_parameter(1, $game_variables[11])」を実行。

変数 7(攻撃力) に アクター1 の攻撃力を代入。
変数 8(物理防御) に アクター1 の物理防御を代入。
変数 9(魔法防御) に アクター1 の魔法防御を代入。

これら変数処理を戦闘開始後に行ったのであれば、 set_enemy_parameter で敵のパラメータを再計算する。

他のスクリプトとの競合について

再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Game_Enemy < Game_Battler
 def base_maxhp
 def base_maxsp
 def base_str
 def base_dex
 def base_agi
 def base_int
 def base_atk
 def base_pdef
 def base_mdef
 def base_eva

aliasを使って再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Game_Variables
 def initialize

class Game_Enemy < Game_Battler
 def initialize

ソースと導入方法

導入方法

スクリプトの「Game_Enemy」より下、「Main」よりも上に以下のソースを丸々挿入してください。

ソースと更新履歴

Using Variables to Enemies' Parameter: ソース

更新履歴

2006 09/30 公開。


This page is written in Japanese(Shift_JIS)
(c) T-Akf, in p-sight