【解決済み】隠れる、出現するスキルを繰り返す敵の作り方(VX Ace)

kuro
記事: 3
登録日時: 2017年4月16日(日) 15:12

【解決済み】隠れる、出現するスキルを繰り返す敵の作り方(VX Ace)

投稿記事by kuro » 2017年4月16日(日) 15:38

こんにちは。何回か試行錯誤してうまくいかなかったので質問させてください。

自作ゲームで忍者やモグラのような「(敵側から見て)自分のターンにスキルで隠れ、攻撃時に姿を現す」
という敵を作っているのですが、どうしても自分の思う動作をするスキルをイベントで作れません。
具体的には
①敵は複数で出現する(忍者A、忍者B、忍者Cのようなパターン)
②それぞれの敵がランダムでスキル「隠れる」を使用し、その間は敵は無敵状態。
 ただし、味方の特殊攻撃スキル(例えば「忍び殺し」)を使うとダメージを与える事ができる。
③敵は敵ターン時「隠れたまま」「姿を現し攻撃」「隠れたまま攻撃」のスキルを使い、
 姿を現す場合以前に与えたダメージは蓄積したまま姿を現す。また、隠れたまま攻撃を受け
 HP0になれば通常通り戦闘不能
のようなものです。

「隠れる」という状態を別の敵キャラ扱いにすると出現、隠れるを繰り返すごとに忍者D、E、F・・・
のような別アルファベットの敵が出現することになり、HPの同期も出来ません。
また状態異常として「隠れた状態」を設定するとモンスターが出現隠れるを繰り返すごとに
グラフィック(エネミー画像)が意図したものと違うことになります。

出来ればスキルとして「隠れる」「出現する」などを作り、また隠れたエネミーと出現したエネミーの
同期(HP継続、忍者A→隠れた忍者A→忍者A→隠れた忍者A・・・をA,B,C個別に行う)を行いたいのですが、
スキルや「忍者」、「隠れ忍者」それぞれのエネミー設定欄をどうすればいいか教えてください。
よろしくお願いいたします。
最後に編集したユーザー kuro on 2017年4月25日(火) 21:47 [ 編集 1 回目 ]

TOMO
記事: 97
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 隠れる、出現するスキルを繰り返す敵の作り方(VX Ace)

投稿記事by TOMO » 2017年4月17日(月) 17:28

こんな感じですか?

コード: 全て選択

module TOMO
  module HideState
    # 「隠れる」ステートのID
    State = [30, 31]
  end
end

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● ダメージ計算
  #--------------------------------------------------------------------------
  alias tomo_hide_state_make_damage_value make_damage_value
  def make_damage_value(user, item)
    if TOMO::HideState::State.any?{|s| state?(s) } &&
        !item.note.include?("<忍び殺し>")
      @result.make_damage(0, item)
    else
      tomo_hide_state_make_damage_value(user, item)
    end
  end
end

「隠れる」ステートを作成して、そのステートIDを「State」の中に入れて下さい
(隠れる前に付与された毒などは普通に通ります)

「忍び殺し」はスキルのメモ欄に「<忍び殺し>」と入れれば、
そのスキルだけ通るようになります

ただし、隠れてる間も普通に見えてます
------------------------------------------------------
RGSS3を配布中

TOMOのスクリプト置き場
------------------------------------------------------
kuro
記事: 3
登録日時: 2017年4月16日(日) 15:12

Re: 隠れる、出現するスキルを繰り返す敵の作り方(VX Ace)

投稿記事by kuro » 2017年4月22日(土) 07:02

遅くなりましたがTOMOさん、ありがとうございます。
ただ、やはり隠れてる状態なのに姿がそのままなのは
違和感が・・・。
隠れステート時のみ、姿を自分で用意した透明エネミー画像に
変更する方法はないのでしょうか?
以前試みた時も、この透明エネミー変更方法がうまくいかず
エネミーの連番がずれたりしたものですから。
お手数おかけしますがよろしければご教示ください。
TOMO
記事: 97
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 隠れる、出現するスキルを繰り返す敵の作り方(VX Ace)

投稿記事by TOMO » 2017年4月22日(土) 16:34

試してないけど多分これで出来ます

コード: 全て選択

module TOMO
  module HideState
    # 「隠れる」ステートのID
    State = [30, 31]
   
    # 隠れてる間の画像名
    Bitmap = ""
  end
end

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● ダメージ計算
  #--------------------------------------------------------------------------
  alias tomo_hide_state_make_damage_value make_damage_value
  def make_damage_value(user, item)
    if TOMO::HideState::State.any?{|s| state?(s) } &&
        !item.note.include?("<忍び殺し>")
      @result.make_damage(0, item)
    else
      tomo_hide_state_make_damage_value(user, item)
    end
  end
end

class Sprite_Battler < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 転送元ビットマップの更新
  #--------------------------------------------------------------------------
  alias tomo_hide_state_update_bitmap update_bitmap
  def update_bitmap
    if TOMO::HideState::State.any?{|s| @battler.state?(s) }
      new_bitmap = Cache.battler(TOMO::HideState::Bitmap, @battler.battler_hue)
      if bitmap != new_bitmap
        self.bitmap = new_bitmap
        init_visibility
      end
    else
      tomo_hide_state_update_bitmap
    end
  end
end

「Bitmap」に、隠れてる間の画像名を入れて下さい
------------------------------------------------------
RGSS3を配布中

TOMOのスクリプト置き場
------------------------------------------------------
kuro
記事: 3
登録日時: 2017年4月16日(日) 15:12

Re: 【解決済み】隠れる、出現するスキルを繰り返す敵の作り方(VX Ace)

投稿記事by kuro » 2017年4月25日(火) 21:49

TOMOさん、ありがとうございました。
無事成功しましたので解決済みとさせていただきます。

“VX / Ace:質問” へ戻る