う~ん…タイトルがいつも微妙でごめん。
今回は
アクターのパラメータが最大の時
パラメータ上昇アイテムを使用不可にするように改造します。
なんとこれで…
「能力値MAXなのに間違えて使っちまった!!!うおおおぉ~~~ん!!!」
という勿体無く嘆かわしい出来事も防げるんです!
アイテム使用時のターゲットステータスに腕力だとか、魔力だとかの詳細はデフォルトのままだと見えないし、その状態で能力アップを間違えて使っちゃうのはプレイヤーにとって不親切かな~とか思ってやってみました。
ステータスについては、まあ…
レイアウトや表示を変えれば解決するんですが。
プレイヤーさんが
「このパラメータは最大値だな」と思ってても
間違えてポチっと使っちゃう事も
あるかもしれないじゃないですか(・ω・)
…え?烏守じゃないから間違えないって?
あややややや(((゚Д゚;)))
まあとりあえず、やってみましょー!
【今回の変更点】
■Game_Battler 3
デフォルトではHP、SP回復アイテムの場合だと
対象アクターが全回復している状態なら
ブザーが鳴ってアイテムが使用できないようになっていますよね。
今回はそこを応用してみました。
とりあえず、HP回復アイテム処理のスクリプトについて解説!
last_hp = self.hp
last_sp = self.sp
self.hp += recover_hp
self.sp += recover_sp
effective |= self.hp != last_hp
effective |= self.sp != last_sp
recover_hp がアイテムに設定されている「HP回復量」で
self.hp が対象アクターの現在のHPを表しています。
アイテムの回復量で現在HP、SPが変化したかどうかで
effective が切り替わるようになってます。
この effective という変数は、
アイテムを使用したかどうかを判断させるための
スイッチのような存在になってます。
これが true であれば、消費アイテムは消費されます。
では、パラメータの方も
最大の場合にはアイテムを消費しないように変更してみましょう。
変更場所は以下のwhen…の下です。
(デフォルトのままなら271行目あたり)
# パラメータ上昇値が有効の場合
if item.parameter_type > 0 and item.parameter_points != 0
# パラメータで分岐
case item.parameter_type
when 1 # MaxHP
:
:
パラメータごとに
「@maxhp_plus += item.parameter_points」
のようになっていますが、
最大値はGame_Battler 1 と Game_Actorで設定してある
MaxHP の取得等で制限される事になるので
中身を思いっ切り
maxhp = self.maxhp
self.maxhp += item.parameter_points
effective |= self.maxhp != maxhp
に変更!
self.maxhpが最大HP、self.maxspが最大SP
self.strが腕力…というように
selfで対象アクターのパラメータを示します。
パラメータ分岐の中身を変更し終えたら
最後尾についている
# 有効フラグをセット
effective = true
を消去しておきましょう。
これでプレイヤーさんが
アクターのパラメータが最大値の時に間違ってアイテムを使ってしまって
「あ~~勿体無い事した~~orz」
なんて目には合わなくなったハズ。
完成したら必ず面倒だと言わずにテストしておくように(・ω・)