WSN追加案: 効果コンテントにキーコードをつける

Issue #428 resolved
k4nagatsuki repo owner created an issue

issue #405の議論の中で出た提案です。

振る舞いは#405の死亡イベントと同じような形になると思います。効果適用前に通常のキーコードイベント、適用後に○×の成功・失敗イベントが発火し、死亡イベントが発火している場合はそちらが優先されます。従来通り何も発火させたくない場合はキーコードを設定しなければいいだけです。

使用中カードの名前がキーコードとして発生するかどうかは検討が必要だと思います。パッケージで共通化した場合など、ややこしい事になりそうです。個人的にはオプションにしてしまうのがいいと思っています(ついでに一般カードのカード名キーコードもオプションで無しにできるようにするといい気がしますがそれは別の話で)。

Comments (14)

  1. k4nagatsuki reporter

    手許で試験実装をしているのですが、問題に突き当たりました。死亡イベントの発火有無(#405)との兼ね合いを考える必要があります。

    カード効果によってシナリオの一連のイベントが発火するのですが、その時「死亡イベントだけが発火する」「キーコードイベントだけが発火する」というのはシナリオ側で想定しづらいと思われます。一連のイベントは、一貫して機能するようにするべきではないかという事です。

    例えば#405のオプションで死亡イベントを非発火にし、さらにキーコードを設定すると、死亡イベントが発火した時に無効になるはずの成功・失敗イベントが、普通なら死亡イベントが発火するはずの状況で発火する、もしくは死亡イベントが無効状態で動いていないのに成功・失敗が発火しない、というような挙動が、実装次第で発生し得ます。これはレアケースでシナリオの誤動作を生むかもしれません。

    すなわち、#405のオプションのオン・オフは、死亡イベントだけでなく、各種のカード効果で発火する一連のイベント全体をカバーするべきではないかという事です。

    Wsn.2でそういう一貫した仕様にすると、他の仕様で各種イベントごとに分割して発火できるようになっていた時に仕様の不一致が発生しますが、一貫しているものを後から分解する事は容易ではあります。

  2. 暗黒 騎士

    ご懸念の点がよくわからないのですが、死亡イベント非発火でキーコード発火はたとえば特殊キーコード「逃走」+「攻撃」キーコードで現状でも発生するのではないのでしょうか?

  3. k4nagatsuki reporter

    はい、発生します。

    それはもう元々あるので仕方ありません。CWに数ある作ってはいけないカードの類だと言うしかないです。新機能では初めからそうしたデータを作れないようにする事が可能だがどうするべきか、というのが今回の問題です。

  4. 暗黒 騎士

    バトルギミック的には作れた方が良いと思います。死亡時イベントは発火させたくないが、麻痺イベントを発火させたいということがあります。(麻痺になった時点で死亡時イベントが優先発生するため麻痺の○イベントは現状で意味がないというバグに出会ったことがあります)

  5. k4nagatsuki reporter

    麻痺成功の検出は死亡イベントで可能なので、それは単にシナリオのバグではないでしょうか。

    実を言うとイベントの発火を一貫してOn・Offできないと、仕様上のある小さな点で困難にぶつかってしまうのです。

    • 死亡イベントが発火した時に無効になるはずの成功・失敗イベントが、普通なら死亡イベントが発火するはずの状況で発火する
    • 死亡イベントが無効状態で動いていないのに成功・失敗が発火しない

    この2点が発生する状況は論理的に矛盾しており、両立しません。必ずどちらかを選択しなければなりません。そしてどちらを選択するという基準は今のところどこにも無いので、恣意で決めるしかありませんが、それは仕様の衝突を招くのでしたくないのです。

    他の仕様がどちらかを選択したら、それに合わせればいいだけなので簡単です。

  6. 暗黒 騎士

    えっ、はい。そういう意味です。>シナリオのバグ

    要するに#405のオプションで「発火しない(デフォルト)」では死亡イベントだけではなくキーコード(先)発火およびキーコード○×(後)発火イベント全体を発火しないで、「発火する」または「使用時イベントのみ発火する(NEXT)」を選択した時のみキーコードを付けられるようにした方がいいという感じでしょうか。 であれば異論はありません。

  7. k4nagatsuki reporter

    はい、要するに「死亡イベントを発火させるか」ではなくて「イベントの発火をさせるか」にする、という事ですね。

    もちろんエディタの方では発火させない時はキーコード欄を無効にした方がいいでしょう。

    とりあえずもう数日待ってみて、他に異論が出なければその筋で試験実装してみます。その場合、#405deadeventという属性名は変わる事になると思います。

  8. k4nagatsuki reporter

    pull request #1626

    Effectの子要素にKeyCodesを追加し、ignite="True"の時にエリア・カードのキーコードイベントが発火するようにしました。

    対応するエディタはcwxeditorの20161104版以降です。

  9. 暗黒 騎士

    お疲れ様です。別タブになったんですね。インターフェース良い感じでした。 この「使用時イベントで攻撃するカードを作れそうで作れない問題」は10年以上のもやもや案件だったので心が洗われるようです…

    さっそくフィールド全体から@効果対象を現在選択中にして複数キーコードから選んで発火させるアイテムを作ってみたのですが、 当たり前ですが、ゴブ洞の見張りゴブリンなどの「メニューカード」にクーポンの概念はなく@効果対象は 配布されないので移動時には使えないんですね。 NEXTの「使用カードの効果目標」がメニューカードを対象に取れるとちょっと事情が変わってくるんじゃ?と焦って検証してみましたが 多分取れていない(効果音も無効化音も鳴らない)ようなので一安心でした。

    将来的により汎用的に活用できるようにするには@効果対象のみ例外的にメニューカードにも一時配布できたり(困難?)、 あるいは#405長月さん考案の「フィールド・選択メンバのキーコード条件を発火させるイベントコンテント」の方でメニューカードを対象に取れるとありがたいのかもしれません。

  10. k4nagatsuki reporter

    そういえばメニューカードの存在を完全に忘れていました。残るは行動の自動選択くらいかと思っていたんですが、カードの作り次第で非戦闘時に使い物にならないのは問題ですね。

    別件として扱った方がよさそうですが、プレイヤーが狙ったメニューカードに対して効果を発揮できるようにしたいですね。

  11. gorfrog

    効果コンテントによる死亡時イベントは、無くても良いと思います。何故なら、これは工夫次第で対処できるからです。例えば、ダメージと共に毒を固定値1で付与し、敵の状態判定、戦闘不能時に絶対成功の対象レベル-99回復固定値1。するとターン終了時に敵が生命力1で生き残り毒で死にます。死因は失血死とでも脳内補完すれば何の問題も無いと思われます。

    効果コンテントのキーコードについてはあった方がいいと思います。何故なら、カイザスが雑魚になってしまうからです。抵抗属性の効果コンテントは防げないので上記の方法を使えば死亡時イベントも発火可能。あっさり攻略できてしまいます。私はこう思うのですが、如何でしょう?

  12. k4nagatsuki reporter

    頑張ればできる事をシステムでサポートする事には意味があります。

    例えば10段階のステップで5桁の数値を扱えるようにし、それで四則演算を行う事は可能ですが、では巨大な数値を扱える変数と演算の機能がいらないかというと、そんな事は無い事が分かっていただけると思います。

    実現できたとしても完全でなかったりどこかに無理があったりする機能もあります。例えばラウンド終了イベントは中毒の挙動を利用して実現する事が可能ですが、

    • 起動前に不自然な音が鳴る。
    • 勝利イベントで話を進めようとすると、敵が全滅してもラウンド終了時まで戦闘が終わらない。

    といった欠陥があります。もちろん手順も複雑です。

    仰る方法には手順の複雑さと挙動の不自然さの両方の欠点がありますので、これを解消できるに越した事はありません。

    ところで、効果コンテントは回避属性のものも作れますので、回避力が売りの敵の特長を潰してしまうような事はありません。効果属性の設定が正しくされている事が前提ですが。

  13. k4nagatsuki reporter

    プレイヤーが狙ったメニューカードに対して効果を発揮できるようにしたいですね。

    この問題の解決を目指してissue #437を立てました。どうもメニューカードと効果コンテントは相性が悪いですね。元々無関係なので当たり前なのですが。

  14. Log in to comment