属性依存のカウンターシステム

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

属性依存のカウンターシステム

投稿記事by shimei » 2017年5月02日(火) 17:18

特定の属性にだけ反応して発動する、カウンタースクリプトがほしいです
できれば、カウンターを行うアクター・バトラーが対象じゃなくても発動するのが望ましいです。
お願いします

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

Re: 属性依存のカウンターシステム

投稿記事by TOMO » 2017年5月04日(木) 22:07

とりあえず作りましたが、これでいいですか?

コード: 全て選択

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの発動
  #--------------------------------------------------------------------------
  alias tomo_element_counter_attack_invoke_item invoke_item
  def invoke_item(target, item)
    if target.states.any? do |state|
        state.note.match(/<属性依存反撃:(\d+)>/i) &&
        $1.to_i == item.damage.element_id
      end
      invoke_counter_attack(target, item)
      @subject.last_target_index = target.index
    else
      tomo_element_counter_attack_invoke_item(target, item)
    end
  end
end

ステートのメモ欄に『<属性依存反撃:3>』と書いてください
(数値は属性ID)

その属性の攻撃に対し、
物理・魔法関係なく100%の確率で、「通常攻撃」で反撃します


「カウンターシステム」と言われても、
「物理限定や魔法限定で発動するタイプ」とか、
「属性別に反撃率を設定するタイプ」とか色々あるので、
出来れば詳しく書いてください
(コチラのような、ダメージを受けて反撃するタイプもあります)
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: 属性依存のカウンターシステム

投稿記事by shimei » 2017年5月05日(金) 03:02

TOMOさま>
ありがとうございます
たとえば、
カウンター発動者自身が対象じゃなくても、火属性の(スキル、武器、アイテム)をだれか(バトラーA、アクターA)が使用した場合、カウンター的に爆発して相手方全員にダメージを与え、戦闘不能になるバトラーB/アクターBを造りたいのです

また、タイトルとは違いますが、「特定のバトラーA/アクターAのHPが一定以下になったときに、カウンター的に攻撃力が激増するバトラーB/アクターB」というのも作りたいです
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 属性依存のカウンターシステム

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

とりあえず前者の方を作りました

コード: 全て選択

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの発動
  #--------------------------------------------------------------------------
  alias tomo_element_counter_attack_invoke_item invoke_item
  def invoke_item(target, item)
    if target.states.any? do |state|
        state.note.match(/<属性依存反撃:(\d+),(\d+)>/i) &&
        (item.damage.element_id < 0 ? @subject.atk_elements.include?($1.to_i) :
        $1.to_i == item.damage.element_id)
      end
      target.force_action($2.to_i, target.index)
      process_forced_action
      @subject.last_target_index = target.index
    else
      tomo_element_counter_attack_invoke_item(target, item)
    end
  end
end

ステートのメモ欄に『<属性依存反撃:3,20>』と書いてください
(数値は左から属性ID,スキルIDです)

これと、星潟様の「アイテム・スキル使用者ステート・能力変化」を使えば出来ると思います
(対象スキルのメモ欄に『<使用者ステート:1,100>』と書けば可能)
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 属性依存のカウンターシステム

投稿記事by faida » 2017年5月06日(土) 10:27

後者はここのトピックで見かけたような気がします。
viewtopic.php?f=46&t=2666
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: 属性依存のカウンターシステム

投稿記事by shimei » 2017年5月06日(土) 18:21

お二人ともありがとうございます!

>TOMO様 う~ん、当方の環境では機能してないような…?

>faida様 このスクリプトは、たとえば蜂の巣(バトラー)が1でもダメージを受けたら、一緒にでてきたキラービー(バトラー)の攻撃力が倍になるとかそういう使い方もできますかね?
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 属性依存のカウンターシステム

投稿記事by TOMO » 2017年5月06日(土) 18:48

私の方で試した方法は、
まず炎属性(属性ID:3)に反応して反撃するステートのメモ欄に「<属性依存反撃:3,128>」と書き、
スキルID:128に自爆スキルを作成し、
そのスキルのメモ欄に「<使用者ステート:1,100>」と書きます

そして「ダメージ計算式の「属性」が炎のスキル」または「攻撃時属性が炎のキャラ」で攻撃して試してました


私のスクリプトの中身としては、
特定属性の攻撃だった場合に、指定したスキルで「戦闘行動の強制」をし、即時発動させてるだけです

その後、星潟様のスクリプトの効果で、反撃したキャラを「戦闘不能」にしてます
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: 属性依存のカウンターシステム

投稿記事by shimei » 2017年5月06日(土) 19:03

TOMOさま>
なるほど、どうやらスクリプトが機能してない(ように見えた)のは、属性依存カウンターを発動する側の敏捷性が、炎属性攻撃をする側より早かったからのようです。
敏捷性を修正したら機能しました。ありがとうございました
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 属性依存のカウンターシステム

投稿記事by faida » 2017年5月06日(土) 20:46

わざわざスクリプトに頼らずとも、バトルイベントでできるような気がしますが……。
条件を「蜂の巣のHPが99%以下」にして、ステートを付加するとか。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 属性依存のカウンターシステム

投稿記事by TOMO » 2017年5月06日(土) 22:54

先に行動していても発動するようにしました

コード: 全て選択

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの発動
  #--------------------------------------------------------------------------
  alias tomo_element_counter_attack_invoke_item invoke_item
  def invoke_item(target, item)
    if target.states.any? do |state|
        state.note.match(/<属性依存反撃:(\d+),(\d+)>/i) &&
        (item.damage.element_id < 0 ? @subject.atk_elements.include?($1.to_i) :
        $1.to_i == item.damage.element_id)
      end
      invoke_element_counter_attack(target, $2.to_i)
      @subject.last_target_index = target.index
    else
      tomo_element_counter_attack_invoke_item(target, item)
    end
  end
  #--------------------------------------------------------------------------
  # ● 属性依存反撃の発動
  #--------------------------------------------------------------------------
  def invoke_element_counter_attack(user, skill_id)
    item = $data_skills[skill_id]
    @log_window.display_use_item(user, item)
    user.use_item(item)
    refresh_status
   
    action = Game_Action.new(user)
    action.set_skill(skill_id)
    targets = action.make_targets.compact
   
    show_animation(targets, item.animation_id)
    targets.each {|target| item.repeats.times {
      apply_item_effects(apply_substitute(target, item), item)
    } }
    begin # 星潟様のスクリプトがある場合
      user.ba_item_self_effect(item, false)
    rescue
    end
  end
end

ただし、「敵単体」などで「属性攻撃してきた相手」に反撃する事は出来ず、
対象選択はAI任せとなっています

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