【解決済み】ダメージが0なら効果も失敗、というスキルシステム

湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

【解決済み】ダメージが0なら効果も失敗、というスキルシステム

投稿記事by 湯喜乃湯 » 2016年11月29日(火) 03:41

いつもお世話になっております。ペコリ。
質問なのですが、例えば、毒のナイフによる攻撃、といったスキルがあるとして・・・
そのスキルにステート「毒(特徴:HP再生率-5%)」といった効果を相手に与えるように設定したとします。
これだと、成功率は別として、相手へのダメージが0でも毒の効果は与えられてしまいますが・・・
「ダメージを与えられないのに毒だけは成功っていうのは・・・」と思い、敵へのダメージが0の時にはステートの効果も与えられない(失敗)というシステムを希望しています。

デフォルトシステムの応用や工夫、もしくはスクリプトによるものでも構いません。
ご教授頂ければ幸いです。宜しくお願い致します。
最後に編集したユーザー 湯喜乃湯 on 2016年11月29日(火) 17:56 [ 編集 1 回目 ]

奈々(なな)
記事: 69
登録日時: 2016年11月06日(日) 16:57

Re: ダメージが0なら効果も失敗、というスキルシステム

投稿記事by 奈々(なな) » 2016年11月29日(火) 09:01

※追記
下記の内容で投稿しましたが、後述の理由で機能しませんでした。
誰かの間違いも何かの参考にはなると思いますので、書き込みは残しておきます。

その条件ならば、ステートの応用+αで作成可能です。

まずステートを1つ作成します。仮に「ダメージ0判定用」とします。
これに毒無効の特徴を付けます。必要なら麻痺や眠りなども無効にして下さい。
そしてダメージで100%解除を付けます。
裏方用なので、他は無設定にしておきます。

次に、ターン毎バトルイベントで全員に「ダメージ0判定用」を付与します。
すると
ダメージが0なら、「ダメージ0判定用」によって毒は無効となり
ダメージが1以上なら、先に「ダメージ0判定用」が解除されて毒は有効となります。
これで要望の挙動になると思います。


この手法の難点は、ステート付与が「ターン毎」であるため
複数アクターで集中攻撃した場合に機能しないケースが出ることです。
なのでそれを解消するために、(自作で申し訳ないですが)以下のスクリプトを使います。
http://heptanas.mamagoto.com/Entry/242/

これは行動毎にバトルイベントを起動できるスクリプトですので
誰かがダメージを与えた後も「ダメージ0判定用」を付与し続けることができます。

これだけだと戦闘開始時に付与されないので
加えて0ターン目のバトルイベント(条件:0+0*X)を作るか
以下のスクリプトを併用してスイッチをonにして下さい。
http://heptanas.mamagoto.com/Entry/39/


以上です。
試作してみましたが機能したので大丈夫かと。
作り方で何か質問があれば、お気軽にお願いします。
最後に編集したユーザー 奈々(なな) on 2016年11月29日(火) 15:45 [ 編集 1 回目 ]
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
faida
記事: 216
登録日時: 2015年12月17日(木) 16:44

Re: ダメージが0なら効果も失敗、というスキルシステム

投稿記事by faida » 2016年11月29日(火) 12:35

シンプルに要望通りのスクリプトならこちら。

コード: 全て選択

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 使用効果の適用
  #--------------------------------------------------------------------------
  alias fai_ndne_item_effect_apply item_effect_apply
  def item_effect_apply(user, item, effect)
    return if opposite?(user) && item.damage.to_hp? && @result.hp_damage == 0 # 条件
    fai_ndne_item_effect_apply(user, item, effect)
  end
end
この # 条件 というところが条件です。「敵で」「HPに作用する(回復含む)スキルで」「HPダメージが0」なら、
一切の使用効果を無効化します。(ただし例外としてコモンイベントは起動します)
奈々様の挙げられた方法のほうが確実ではありますが、こういう方法もあると思って提示させていただきました。
VXにはこういう機能ありました(小声)
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
奈々(なな)
記事: 69
登録日時: 2016年11月06日(日) 16:57

Re: ダメージが0なら効果も失敗、というスキルシステム

投稿記事by 奈々(なな) » 2016年11月29日(火) 15:37

申し訳ない、帰ってから気が付きましたが私の方法はダメです。

ダメージの有無で毒ステートを付与する、しないのところまではOKですが
その付与した毒ステートが、直後に「ダメージ0判定用」によって消えてしまいます。
(特徴のステート無効は、既に掛かっているステートも解除する仕様なので)

テストプレイ時に、ステートが持続しているかのチェックが甘かったです。
なので申し訳ありませんが、faidaさんのスクリプトを採用して下さい。
せっかくfaidaさんがフォローしてくれたのにこのざまである。
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: ダメージが0なら効果も失敗、というスキルシステム

投稿記事by 湯喜乃湯 » 2016年11月29日(火) 17:55

>奈々さん
ご教授頂き有難うございます。ペコリ。
テストまでガッツリやっていただいたようで・・・恐縮です。
奈々さんの意向を鑑みて、奈々さんにご教授頂いた方法も残しておく事にします。
またお教えいただけるような機会があれば、宜しくお願い致します!!

>faidaさん
お教え頂いたスクリプト、動作確認させて頂きました。
完・璧です!!
本当に、毎度の事ながら有難うございます。
大感謝です!!

これにて、このトピックは解決済みとさせて頂きます。
奈々さん、faidaさん、改めて有難うございました!!

“VX / Ace:質問” へ戻る