バグ:カードが別のカードのローカル変数を持った状態で配布される
Issue #871
resolved
配布されたカードの使用時イベントでローカル変数を書き換えてからカード使用画面を閉じ、
その後、同カードを配布すると先に使ったカードのローカル変数を持った状態で配布されます。
一度の冒険内で配布されたカードが共有状態になるようで、宿に持ち帰ったことのあるカードは引き継がれないようです。
再現性は10回中10回です。
環境
OS:Win 10 Home 17134.1
エンジン:CardWirthPy 4.0 Beta 3 (64-bit)Build: 2019-11-02 23:50:58
エディタ:CWXEditor / Version.7.0 Beta 3 Build: 2019-11-02 01:19:55 Debug (64-bit)Compiled by Digital Mars D 2088
サンプルシナリオを添付しますので、ご確認よろしくお願いします。
以下手順です。
- シナリオを開始し、カード配布を行う。
- 配布されたカードを一回使用して変数の設定を行う。
- もう一枚カード配布を行う。
- (3.)で配布された新しいカードを使うと(1.)で配布されたカードと同値の変数になっている。
Comments (5)
-
repo owner -
reporter カードが初期状態で配布されるようになったことを確認しました。
そして最初に配布したカードの変数が初期化される新たなバグを発見しました。
ご確認よろしくお願いします。以下手順です。
- シナリオを開始し、カード配布を行う。
- 配布されたカードを荷物袋から直接使用して変数の設定を行う。
- いったんシナリオを抜けて再度開始する。
- 二枚目のカード配布を行う。
- (2.)で使用した最初のカードを再度使用すると変数が初期化されている。
-
repo owner pull request #2650
ありがとうございます。変数の値が保存されないケースがあったので修正しました。
バグだらけで申し訳ありません。ご報告いただいて大変助かっております。
-
reporter 無事、正常に動作することを確認しました。
いつも素早くご対応していただけて、こちらの方こそ頭が下がる思いです。
微力ながら自分も開発の一助となれているのでしたら幸いです。この度のバグの修正、ありがとうございました。
-
reporter - changed status to resolved
- Log in to comment
pull request #2649
ご報告ありがとうございます。修正しました。
大量のカード配付を繰り返す方法で計算を行っているシナリオの処理を軽くするため、現在のCWPyは必要な時以外はカードデータを再読み込みせずにメモリ上にあるものを使い回すようにしているのですが、そのせいで状態変数値まで使い回される状態になっていました。
この現象は荷物袋に配付した場合に限り発生します(発見できていなかったのはそのためです)。また、宿へ持ち帰った際にはパスの書き換えなどの都合でデータのコピーが行われるため、発生しなくなります。