上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
MPが毎ターン自然回復するようなステートを作ってみました。

無題

ツクール2000では非常に面倒だったこの状態も、VXならなんと15分で出来てしかもアフターケアの必要もなし。すばらしいです。

ただ、バランスが難しい。

1.回復量はいくつにするか?

言うまでも無く25%とかにしてしまうと効果がでかすぎだし、かといって3%にしてしまうと、少なすぎる。間を取って1/8か1/16程度が妥当と思いましたが、今回は1/16としました。
このステートの最大の問題点は、雑魚戦で敵を1匹だけ残した状態でこの魔法を唱え、延々防御し続けるといかなる局面からでもMPがMAXまで回復できてしまうと言う点にあります。
作者としてはボス戦などの長期戦で使って欲しいのに、プレイヤーは便利なので雑魚戦で上記のような使いかをしてしまう点。挙句、回復量が少なすぎると逆に「MP回復めんどくさい」という本末転倒な結果になってしまうのが作者としては難しいところです。
個人的には、16ターンも防御し続けるという面倒をしているわけだから、その引き換えにMPが最大値まで回復できたっていいじゃない、と思うので特に制限は設けませんが。
あ、この魔法自体は自分にしか掛けられないですけどね。

2.ステート解除条件は?
・16ターンで解除→ちょうどMPが最大値まで回復したら解除。バランス的にはこれがいいかも。
・ダメージを受けたら解除→魔力を集中しているわけで、ダメージを受ける=集中が乱されると言う解釈で解除。全体攻撃を使うボスなんかでは全く使い物にならず死にステートと化しますね。回復量が30%とかでかければ、その辺の駆け引きも面白くなる、かも。
・永続→補助魔法何度も掛けなおすの面倒だよ派。自分がそうなので採用。永続な代わりに、1回辺りの回復量を抑えて長期戦向けにとするわけです。
他に、睡眠や麻痺ったりしたら解除、でも面白いかもしれませんね。

作り方は至って簡単です。 要は、
”あるステートのときに実行される処理”
を作ればいいわけです。

この処理、非常に汎用性が高く
・ダメージを2倍にするステート
・逆にダメージを半減するステート
・炎による攻撃を完全にシャットダウンするステート
・絶対命中するステート
などなど、様々な用途に応用が利きます。
やり方も至って簡単で、


 if state?(n) and not dead?
   #色々な処理
  end


nに好きなステートのIDを入れて処理を入れるだけ。キャラが生きているときのみ走らせたいので後ろの「and not dead?」もつけます。

っつーか、デフォである「 自動回復の実行 (ターン終了時に呼び出し)」を殆どコピっただけなんだけどね。

一応やり方を。

無題

今回はID22に登録しました。
っつーわけで、こんな感じ。

・Game_Party

#--------------------------------------------------------------------------
# ● 自動回復(MP)の実行 (ターン終了時に呼び出し)
#--------------------------------------------------------------------------
def do_auto_mp_recovery
 for actor in members
  actor.do_auto_mp_recovery
 end
end



・Game_Actor

#--------------------------------------------------------------------------
# ● 自動回復の実行 (ターン終了時に呼び出し)
#--------------------------------------------------------------------------
def do_auto_mp_recovery
 if state?(22) and not dead?
  self.mp += maxmp / 16
 end
end



・Scene_Battle

#--------------------------------------------------------------------------
# ● ターン終了
#--------------------------------------------------------------------------
def turn_end
 $game_troop.turn_ending = true
 $game_party.slip_damage_effect
 $game_troop.slip_damage_effect
 $game_party.do_auto_recovery
 $game_party.do_auto_mp_recovery    #MP自然治癒  ←追加
 $game_troop.preemptive = false
 $game_troop.surprise = false
 process_battle_event
 $game_troop.turn_ending = false
s tart_party_command_selection
end



こんだけでOK。
あ、敵にも同じ処理をさせたい場合はGame_Enemyにも使いしないといけないです。
まあ、敵の場合はバトルイベントで作ったほうが簡単だし確実とは思いますが・・・

色々応用できそうなので、面白いステート作ってみたいと思います。
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメントの投稿

URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
powered by
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。