チケット #37549

折れ剣修復時の折れたダガーのベースアイテム選択バグ

登録: 2017-10-03 21:52 最終更新: 2022-02-05 21:47

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
優先度:
5 - 中
重要度:
7
解決法:
重複
ファイル:
なし

詳細

repair_broken_weapon_aux 中の if (o_ptr->sval == SV_BROKEN_DAGGER) 内で、該当するベースアイテムを等確率で選択しようと思われるアルゴリズムにミスがあった。

IDX j;
int n = 1;

/* Suppress compiler warning */
k_idx = 0;

for (j = 1; j < max_k_idx; j++)
{
    object_kind *k_aux_ptr = &k_info[j];

    if (k_aux_ptr->tval != TV_SWORD) continue;
    if ((k_aux_ptr->sval == SV_BROKEN_DAGGER) ||
        (k_aux_ptr->sval == SV_BROKEN_SWORD) ||
        (k_aux_ptr->sval == SV_DOKUBARI)) continue;
    if (k_aux_ptr->weight > 99) continue;

    if (one_in_(n)) 
    {
        k_idx = j;
        n++;
    }
}

n++;はif(one_in_(n))の外に置かないとk_idxの最終値の確率はjが大きいほど高くなる。この結果、ダガーでの修復はIDの一番大きい隼の剣が本来の10%から22.5%になっていたというhradish氏の報告あり。これを直すのは大きな下方修正になるので、件の修復仕様の調整も踏まえながら慎重に行う。

チケットの履歴 (4 件中 3 件表示)

2017-10-03 21:52 更新者: deskull
  • 新しいチケット "折れ剣修復時の折れたダガーのベースアイテム選択バグ" が作成されました
2020-12-29 00:32 更新者: deskull
コメント

3.0.0正式版の間に仕様を決定して解決予定。

2021-04-01 09:01 更新者: None
2022-02-05 21:47 更新者: hourier
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 重複 に更新されました
コメント

GitHubへ移行し、こちらはクローズ

添付ファイルリスト

添付ファイルはありません

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする