上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
つづき。

即死魔法:いわゆるデス、敵を即死させる。アンデッドには無効。
浄化魔法:アンデッドを消滅させる。いわゆるニフラムとかイクソシズム。

同じ戦闘不能ステートを引き起こす魔法ですが、ツクールVXのデフォではステートを付加させる魔法に属性はつけられない(というかつけても意味が無い)です。

そこで、戦闘不能ステートを2つ用意して、いずれかのステートに掛かったときはHPを0にして敵を倒したことにしようとした前回ですが、HPを0にするとこまでは出来たけれど敵が(見かけ上)消えてくれない。そんなお題でしたが、

無題


上手く解消できたのでご紹介。

ステートを2つ増やすとかめんどくさいことはせずに、ステート付加させる魔法に属性をつけられるようにすれば良かっただけの話でした。
WS000001_20081129231458.jpg

WS000020_20081129231502.jpg

前述したとおり、デフォ戦闘では上の属性情報は反映されないため、ちょこっとだけスクリプトいじってやりましょう。 こんなかんじ。

・Game_Battler

 #--------------------------------------------------------------------------
 # ● ステート変化の適用
 #   obj : スキル、アイテム、または攻撃者
 #--------------------------------------------------------------------------
 def apply_state_changes(obj)
  plus = obj.plus_state_set       # ステート変化(+) を取得
  minus = obj.minus_state_set      # ステート変化(-) を取得
  
  for i in plus             # ステート変化 (+)
   next if state_resist?(i)      # 無効化されている?
   next if dead?            # 戦闘不能?
   next if i == 1 and @immortal    # 不死身?
   if state?(i)            # すでに付加されている?
    @remained_states.push(i)     # 変化しなかったステートを記録
    next
   end
   
   element = elements_max_rate(obj.element_set) # 属性取得
   if rand(100) < state_probability(i) * element # 確率判定

    add_state(i)           # ステートを付加
    @added_states.push(i)       # 付加したステートを記録
   end
  (以下略)



やりたい事はたったこれだけでOK。簡単でした。

本当は、
「~を倒した」
ではなく、
「~を消滅させた」
としたかったところなんですが、っていうか実際作ったんだけどコモンイベントの実行タイミングの問題で簡単には作れなさそうってのがわかったので断念。またメモ使ったりスクリプト駆使すれば出来なくはないんだけど、なにぶん面倒なもので妥協しました。

これを応用すれば色々面白いことが出来るかもしれません。
つーか、この辺りはデフォで用意して欲しいところです。

スポンサーサイト

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

承認待ちコメント

このコメントは管理者の承認待ちです
2013/06/14 15:07 | #[ 編集 ]

コメントの投稿

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

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