Ticket #37549

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

Eröffnet am: 2017-10-03 21:52 Letztes Update: 2017-10-03 21:52

Auswertung:
Verantwortlicher:
Typ:
Status:
Offen [Owner assigned]
Komponente:
(Keine)
Priorität:
5 - Mittel
Schweregrad:
7
Lösung:
Keine
Datei:
Keine

Details

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氏の報告あり。これを直すのは大きな下方修正になるので、件の修復仕様の調整も踏まえながら慎重に行う。

Ticket-Verlauf (1/1 Historien)

2017-10-03 21:52 Aktualisiert von: deskull
  • New Ticket "折れ剣修復時の折れたダガーのベースアイテム選択バグ" created

Dateianhangliste

Keine Anhänge

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden