ターンの初めか終りにオートで発動するスキル

shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

ターンの初めか終りにオートで発動するスキル

投稿記事by shimei » 2017年5月08日(月) 18:43

ターンの初めか終りに、オートで発動するスキル(を作れるスクリプト)がほしいです。
たとえば特定のスキルを持つキャラが参加していると、ターンの初めに勝手に敵全体のMPを下げるとか
また逆に味方のHPを回復したりとかです
よろしくお願いします

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

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by TOMO » 2017年5月08日(月) 19:19

その程度イベントコマンドで出来るだろ・・・
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by shimei » 2017年5月08日(月) 19:38

TOMOさま>
全部のバトルイベントで設定するのは、かなり面倒かと思ってのリクエストでした
とくに、今制作中のは魔物を仲間にできたりするので、ユニット数が100を超える予定なのです
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by TOMO » 2017年5月08日(月) 21:06

だったら少しだけ楽が出来るであろう方法を…

コード: 全て選択

class Game_Troop
  #--------------------------------------------------------------------------
  # ● バトルイベントのセットアップ
  #--------------------------------------------------------------------------
  def setup_battle_event
    return if @interpreter.running?
    return if @interpreter.setup_reserved_common_event
    troop.pages.each do |page|
      next unless conditions_met?(page)
      @interpreter.setup(page.list)
      @event_flags[page] = true if page.span <= 1
      return
    end
    # 追加分
    if @troop_id != 1
      $data_troops[1].pages.each do |page|
        next unless conditions_met?(page)
        @interpreter.setup(page.list)
        @event_flags[page] = true if page.span <= 1
        return
      end
    end
    # ここまで
  end
  #--------------------------------------------------------------------------
  # ● ターンの増加
  #--------------------------------------------------------------------------
  def increase_turn
    # 追加分
    if @troop_id != 1
      $data_troops[1].pages.each {|page| @event_flags[page] = false if page.span == 1 }
    end
    # ここまで
    troop.pages.each {|page| @event_flags[page] = false if page.span == 1 }
    @turn_count += 1
  end
end

こんな感じのを入れれば、全部の敵グループに設定する手間が省けます

やってる内容は、
「敵グループID:1のバトルイベントの内容を、全敵グループとの戦闘で追加実行する」
です


あとはイベントコマンドの条件分岐で

コード: 全て選択

$game_party.battle_members.any?{|member|member.skill_learn?($data_skills[30])}

とやれば、
「戦闘メンバー内の誰かが、スキルID:30を習得しているか?」となるので、
更に設定が楽になると思います
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by shimei » 2017年5月09日(火) 00:15

>TOMOさま
これはつまり、スキル由来のイベントを1に全部設定しておけば、戦闘行動の強制に限らず、いろんなイベントを起こせるということですね。
すばらしいです!
あと、「戦闘メンバー内」ということはアクター側ということですよね。バトラーにもそういうスキルを持たせる場合は、どう表記すればよいでしょう?
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by TOMO » 2017年5月09日(火) 02:42

とりあえず1つ訂正

コード: 全て選択

$game_party.battle_members.any?{|member|member.alive? && member.skill_learn?($data_skills[30])}

と、生存している戦闘メンバーだけで判定するべきでしたね
-----------------------------------------------------------------------------------------------------------------------------------
出来なくはないけど、敵側は必要?
(発動させる気のないスキルだろうし)

コード: 全て選択

$game_troop.alive_members.any?{|member|member.enemy_id == 1}

で、敵キャラIDで判定すればいいような…

行動条件のは、変数の操作で敵のHP・MPは取得できるし、
ステートやスイッチも条件分岐にある、
パーティレベルは

コード: 全て選択

$game_party.highest_level >= 50

といった感じのを条件分岐でやれば出来ますし


一応書いておくと、

コード: 全て選択

class Game_Enemy
  def skill_learn?(skill_id)
    return false if @actions.empty?
    enemy.actions.any? {|a| a.skill_id == skill_id && action_valid?(a) }
  end
end

のスクリプトを入れて、条件分岐で

コード: 全て選択

$game_troop.alive_members.any?{|member|member.skill_learn?(30)}

とすれば出来ます
(行動条件がある為、上記スクリプトを作って入れる必要があります)
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by shimei » 2017年5月09日(火) 10:23

二つほど分かりません…

「いやし系というスキルを持つ、モンスターが」
「毎ターン最初にモンスター全体の回復をしつつ(=いやし系の効果)」
「ほかの、設定してある行動もする」
としたいのですが、
図の設定だと、
「いやし系を持たないモンスターが」
「いやし系しか行わなくなります」
どこを変えればよいでしょうか…

※ちなみに行動回数追加を入れたのは、二回行動なら「いやし系」以外のこともするかと期待してのことでしたが
戦闘行動の強制はそれ一つしか行わない仕様のようです
添付ファイル
rtrt.png
rtrt.png (6.39 KiB) 閲覧数: 8099 回
ショウ
記事: 149
登録日時: 2016年8月10日(水) 19:52

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by ショウ » 2017年5月09日(火) 15:54

他にどんなスクリプト入れてるかとか分からんからなんだが、
いやし系しか行わないのは戦闘行動の強制で行動回数を消費するからそれで行動終了してしまうからだと思うよ。
そのイベントだと二回行動になるのは次のターンからだし。
あといやし系をパッシブスキル的な位置づけで使わせた上で他の行動もさせたいなら、
まぁ色々方法はあるけど、0ターンに設定して戦闘開始前に行動回数増加ステートつけるとか、
いっそイベントコマンドでアニメーションの表示させてHPの増減させて
文章で”~のいやし系発動”とか表示させればいいよ。

あとイベント共有のは結局の所最初からそういうのが欲しかったわけで、
なら最初からもっと詳しく書いた方が良いよ。
それにこれちょっとググれば分かる事だし俺も過去スレで答えた事もあるから、
もうちょっと調べた上でリクエストした方が良いかと。
それとこれは他の人にも言える事だけどVXなのかVXACEなのかは書いた方が良い、
作ってもらっといて実はVXで動きませんはあまりにも失礼だからね。
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by shimei » 2017年5月12日(金) 07:40

ショウさま>
おっしゃる通りの方法で、パーティやエネミー全体を対象にする場合は直接イベントコマンドでできるようになりました
ありがとうございます

しかし、たとえばパーティやエネミーの中からランダムに2体を選んで効果を及ぼすとなると、やり方が分かりません
戦闘行動の強制なら簡単でしょうが、それだと、複数回行動にしていても、通常の行動がキャンセルされてしまうようなのです
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: ターンの初めか終りにオートで発動するスキル

投稿記事by faida » 2017年5月12日(金) 08:48

強制行動の後に行動を再作成する、とか……どうですかね。

コード: 全て選択

$game_troop.members[n].make_actions # nは隊列順
BattleManager.make_action_orders # おまじない
これを行うと敵キャラの(n+1)番目の行動を再作成することができます。
「1番前はnが0」ですので、お間違えの無いよう。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。

“VX / Ace:スクリプト素材のリクエスト” へ戻る