Tíquete #41316

イーク窟での強制終了バグ(Re: 変愚蛮怒3.0.0Alpha2リリースまでの要望/報告 (フォーラムメッセージ #86779 からの引用))

: 2021-01-23 21:43 Última Atualização: 2021-01-26 22:47

Relator:
Dono:
Tipo:
Estado:
Fechado
Componente:
(Nenhum)
Prioridade:
9 - Highest
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
1

Details

フォーラム 変愚蛮怒3.0.0Alpha開発フォーラム [#86779] からの引用

[forum: 86779]

メッセージ #86590 への返信

引き続きの不具合報告、要望はこちらでお願いします。スレッドの運用の仕方についてはまだ検討中ではあります。

イークの洞窟にてシャベルを使って財宝を回収中、一歩歩いたら必ずゲームが終了するバグに遭遇しました。
詳細な発生条件を報告することは困難ですが、セーブデータがあるので可能であればアップロード致します。

Ticket History (3/11 Histories)

2021-01-23 21:43 Updated by: deskull
  • New Ticket "イーク窟での強制終了バグ(Re: 変愚蛮怒3.0.0Alpha2リリースまでの要望/報告 (フォーラムメッセージ #86779 からの引用))" created
2021-01-24 08:31 Updated by: tx105
Comentário

これでよろしいでしょうか? イーク洞窟におけるクラッシュです。展開は自己責任と思われます。

2021-01-24 08:35 Updated by: deskull
Comentário

ありがとうございます。再現できるかどうかは他の作業を追って確認します。

2021-01-24 23:00 Updated by: dis-
Comentário

自動セーブのメッセージが入ったあとに無限ループに入っています。

賞金首の決定ルーチンでレベルキャップの条件を満たせず無限ループに入っているのを確認しました。

地上や鉄獄ではなくイーク洞で0時を迎えると発生しやすく、5Fくらいまで潜ってからだと再現しやすいようです。

少し根が深そうなので修正方法を検討中です。

(Edited, 2021-01-24 23:55 Updated by: dis-)
2021-01-25 09:19 Updated by: hourier
  • Dono Update from deskull to hourier
  • Resolução Update from Nenhum to Accepted
  • Details Updated
Comentário

本件、何とか再現できそうなのでこちらで確認してみます
不明点があったら相談するかもしれませんがよろしくお願いします

2021-01-25 21:46 Updated by: hourier
  • Dono Update from hourier to deskull
Comentário

determine_daily_bounty() の中で、過去にphase_out処理をしていたのをget_mon_num() に押し込んだが、その時の調整ミスと思われる事象で本件が発生していることが分かりました
お手数ですがご確認下さい、恐らくget_mon_num() を修正した方が良さそうです

2021-01-25 22:13 Updated by: deskull
  • Prioridade Update from 5 - Medium to 9 - Highest
2021-01-26 01:09 Updated by: deskull
Comentário

賞金首選択時の最低階足切りと、ダンジョン生成の組み合わせによって無限ループになる。根源的な原因は不明だがとにかく、こんなことが起きないようになるべく従来の使用通りのまま、対応する。

2021-01-26 22:47 Updated by: deskull
  • Estado Update from Aberto to Fechado
  • Resolução Update from Accepted to Fixed
Comentário

https://osdn.net/projects/hengband/scm/git/hengband/commits/c02230e80f4eafddd5a5365030bb9837820582c3 ここまででひとまず修正完了できたと思われる。

  • バグ修正がやりづらかったのでget_mon_num()に最低階条件処理を移動させる。
    • その結果起きたエンバグは一通り潰す。
  • イーク窟で賞金首エンドレスループが発生した原因はget_mon_num_prep()時に同ダンジョンのMONSTER_DIV値が0のせいでentry->prob2値が0になるモンスターが続出し賞金首候補がなくなってwhileの中でグルグルするため。entry->prob2に最低値1を保証。
  • ついでに「cheat_hear」フラグでこの辺周りのデバッグメッセージを表示するよう仕様追加。

将来的にこの辺の秘伝のソースはいい加減潰すがひとまず今回はこれでバグが残ってない限り完了扱いとし、一度マージする。

(Edited, 2021-01-26 22:47 Updated by: deskull)

Attachment File List

Editar

Please login to add comment to this ticket » Login