バグ: 特殊なキーコード発火条件の挙動について

Issue #207 new
k4nagatsuki repo owner created an issue

pull request #770でキーコード不保有イベントの挙動の不都合な点を直したのですが、その際の調査でCW 1.50があまりにもおかしな挙動をしたため、完全に合わせる事はできませんでした。

確認した挙動は次のようなものです。前者は理解できますが、後者は私には意味が分かりません。バグと言ってしまってよいと思います。これに合わせるかは、検討する必要があります。

「!攻撃○」が発火条件の場合
!が優先され、「攻撃○」というキーコードを持たないカードで通常キーコードイベントが発火する
「!フェイント」と「!攻撃」がAND条件でついている場合
攻撃カードと攻撃+フェイントカードは両方とも通常キーコードイベントが発火する他、それ以外のカードは通常キーコードイベントが発火する上に成功・失敗キーコードイベントが発火する

Comments (2)

  1. 暗黒 騎士

    「○」「!○」でエネミーが状態異常になっているかを事後検知し、それを即時解除するというギミックのシナリオがあったのですが、どうもPyでは上手く動いていないようです。

    以下はいつものです。

    https://bitbucket.org/akkw/cardwirthpy-reboot/downloads/Classic_test.zip

    戦闘メニュー>!○イベントが発火しない?(開始イベントで配布されるアイテム「呪縛攻撃」を使って下さい。)

    1.50では攻撃前と後にイベントが起こるのに対して、Pyでは攻撃前しか起こらず、二回目の呪縛解除イベントが次のPCが攻撃した時に起こります。

    またXEditorでは「○」のみを入力できないようになっているようでした。(コピペは可能)

  2. k4nagatsuki reporter

    ご報告ありがとうございます。

    !○の組み合わせでそのような挙動になるのが理屈に合わないので調べてみたところ、どうやらこれはこのIssueの問題とは無関係で、カードに設定されたキーコードに空文字列があり、その空文字列が成功・失敗した時に発火が起きているという事のようでした。実際、関係ないキーコードで呪縛攻撃の残り4つの枠を埋めると、1.50でも成功時のイベントは発生しなくなります。

    これもどうもCWのバグと思えるのですが、使っているシナリオがあるのであれば仕方ないので合わせます。pull request #2010

    またXEditorでは「○」のみを入力できないようになっているようでした。(コピペは可能)

    そのような入力がされた場合のcwxeditorの挙動は、キーコードに空文字列を設定しようとした時と同じ(キャンセル)になります。

    空文字列の成功や失敗というものは、本来使うべきではありません。5件キーコードがあるカードと4件までのカードで挙動が変わってしまい、普通は制御不能になります。

    !○のような文字列の場合は「○」というキーコードの不一致として扱われますが、これもできれば使ってほしくないものではあります。

  3. Log in to comment