バグ: バトル時、カードの使用時イベント中に強制ロードを行ったとき、直後の行動でカードの使用時イベントが重なるとCWPyが異常な状態になる事がある

Issue #393 resolved
Liar_cw NA created an issue

説明が難しいですが、例えば、メッセージコンテント「あ」がひとつだけ設定された召喚獣カードを2枚所有するキャストとバトルを行い 1枚目のメッセージ表示中に強制ロードを行うと 1枚目を処理を中断するも 2枚目のメッセージを表示してしまい、そのまま異常な状態でロードされてしまいます。エラーログはその条件の時に出力された物です。

  1. 最終セーブが拠点だった場合、メッセージが表示されたまま拠点へ戻る。PCなどの各カードを選択する事が可能だが、メッセージ送りをするとフリーズ。
  2. 最終セーブがシナリオ内だった場合、やはりメッセージが表示されたまま戻る。拠点の時とほぼ同じ状態。
  • 展開されたXML形式のシナリオにて確認。
  • 二枚目のイベントを効果コンテントひとつに変更した場合は異常は発生しなかったが、使用時イベントの内容次第(検証用として新たに用意できないほど複雑なもの)では処理もロードもできずにフリーズしてしまうことがあった。
  • 例に出したようにメッセージコンテントが 2枚連続する場合は、確定で異常が発生した。
  • 召喚獣カード 2枚といわず、召喚獣カードから技能またはアイテムカードの流れでも可。
  • 複数キャストを用いた検証は行っていない。
cardwirthpy_20160714
Version : 1.0 Beta 3 / 2016-07-14 23:04:57
DateTime: 2016-07-22 21:09:03
Traceback (most recent call last):
  File "cw\thread.pyo", line 683, in run
  File "cw\thread.pyo", line 713, in _run
  File "cw\thread.pyo", line 722, in main_loop
  File "cw\eventhandler.pyo", line 100, in run
  File "cw\eventhandler.pyo", line 309, in rclick_event
  File "cw\eventhandler.pyo", line 364, in background_event
  File "cw\thread.pyo", line 1290, in call_modaldlg
  File "cw\thread.pyo", line 722, in main_loop
  File "cw\eventhandler.pyo", line 113, in run
  File "cw\eventhandler.pyo", line 618, in executing_event
  File "cw\battle.pyo", line 84, in start
  File "cw\battle.pyo", line 147, in run
  File "cw\character.pyo", line 878, in action
  File "cw\character.pyo", line 824, in use_card
  File "cw\event.pyo", line 1031, in start
  File "cw\event.pyo", line 714, in start
  File "cw\event.pyo", line 766, in run
  File "cw\event.pyo", line 874, in action
  File "cw\content.pyo", line 3204, in action
  File "cw\thread.pyo", line 1453, in show_message
  File "cw\thread.pyo", line 935, in update
  File "cw\thread.pyo", line 938, in update_groups
  File "pygame\sprite.pyo", line 399, in update
  File "cw\sprite\message.pyo", line 649, in update
ValueError: <SelectionBar DirtySprite(in 1 groups)> is not in list

Comments (6)

  1. k4nagatsuki repo owner

    ありがとうございます。pull request #1511で修正できたと思います。

    宿の強制ロード処理はいくつかの段階に分けて行うのですが、その段階の隙間(最初の処理と戦闘の強制終了処理の間)に次の召喚獣やアクションが割り込んで動き出してしまっていました。

  2. Liar_cw NA reporter

    残念ながら、召喚獣やアクションの割り込みを確認しました。 確認方法は最初の報告の時と同じです。 異常な状態になったり、フリーズしてしまいました。

    cardwirthpy_20160723
    CardWirthPy 1.0 Beta 3
    Build: 2016-07-23 16:51:48
    
  3. k4nagatsuki repo owner

    pull request #1513

    PCの行動でテストしたのが間違いだったようです。敵とおそらくNPCの行動で問題が起きます。

    今度はそちらも修正できたと思います。いかがでしょうか。

  4. Liar_cw NA reporter

    PCや敵やNPCの行動が割り込むことなく強制ロードに成功することを確認しました。 三者全てでテストしましたが特に問題なく、正常に動作しました。

    • 確認方法は、メッセージコンテントひとつが設定された召喚獣カード2枚所有の同一PC/敵/NPCによる方法。最初の報告時と同じ方法です。
    cardwirthpy_20160724
    CardWirthPy 1.0 Beta 3
    Build: 2016-07-24 01:42:08
    
  5. Liar_cw NA reporter

    それでは、この Issueの resolvedを押させていただきます。

    • 報告者側で完了したか判断してしまっていいのかと考えてしまいますが、メールでこちらの報告内容も届いているはずですし、それほど重く考える必要もないはず……。
  6. Log in to comment