チケット #37549

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

登録: 2017-10-03 21:52 最終更新: 2017-10-03 21:52

報告者:
担当者:
チケットの種類:
状況:
オープン [担当者決定済み]
コンポーネント:
(未割り当て)
マイルストーン:
優先度:
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氏の報告あり。これを直すのは大きな下方修正になるので、件の修復仕様の調整も踏まえながら慎重に行う。

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

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

添付ファイルリスト

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

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする