バグ:バトル中にフラグ分岐のフラグ指定が喪失?
5.0a cardwirthpy_20210228d_x64
シナリオ「明日への飛翔」バトル中に、Py4.3ではおきなかったループ嵌りが発生するのでデバッガを見ると、テングのキーコード発火イベントでイベントツリー [攻撃] (2) のフラグ分岐が「フラグが指定されていません」になっており、それが原因になっているようでした。しかし該当部をエディタで開くとフラグ指定はされています。
必ず発生するわけではないようですが、自動戦闘にしてマウスホイールを回しながら放置していればだいたい遅くとも10ラウンドまでには発生する感じです。
エラー表示のウインドウはなく、イベントがループするだけですが、エラーログを見ると以下の記載がありました。
DateTime: 2021-03-02 19:21:14
Traceback (most recent call last):
File ".\cw\frame.py", line 550, in OnEXECFUNC
File ".\cw\debug\debugger.py", line 3009, in func
File ".\cw\debug\debugger.py", line 2954, in _get_item
IndexError: string index out of range
Comments (4)
-
repo owner -
reporter 5.0a x64 デイリービルドの上書き無しで設定何もいじらずでも発生します。4.3では発生しません。
どうもデバッガを表示させていないと発生しないようです。最初に気付いた時もデバッガ起動中だったという事かと思います。
-
repo owner ありがとうございます。
デバッガが表示用の文字列を作る時に各コンテントからシナリオの外にあるものか・内にあるものか(外部から持ち込んだカードの使用時イベントかどうか)という情報を得ているのですが、その際に正しくな情報をキャッシュしてしまい、シナリオ内のフラグが取れなくなっていました。
-
reporter - changed status to resolved
修正確認しました。ありがとうございます。
- Log in to comment
pull request #230
エラーログは呼び出し履歴のバグによるものでした。フラグ分岐の問題とは関係ありません。
フラグ分岐の問題は、手元で十回ほど(バトルが終わるまで)試したのですが、まだ再現できていません。初期状態でのCWPy等、いかなる状況でも再現できるものではなく、なんらかの条件があるのかもしれません。初期状態で試して再現できるか見ていただけないでしょうか?
また再現は確率的なようですが、4.3では絶対に再現しないのでしょうか?