From 06eb73be837d192963435c25f19e74a78550cb37 Mon Sep 17 00:00:00 2001 From: Habu Date: Fri, 15 Jan 2021 18:34:51 +0900 Subject: [PATCH] =?utf8?q?[Fix]=20#41173=20=E3=82=A6=E3=82=A3=E3=83=B3?= =?utf8?q?=E3=83=89=E3=82=A6=E3=83=95=E3=83=A9=E3=82=B0=E3=81=AB=E8=A3=85?= =?utf8?q?=E5=82=99=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=9F=E7=8A=B6?= =?utf8?q?=E6=85=8B=E3=81=A7=E5=B0=84=E6=92=83=E6=AD=A6=E5=99=A8=E3=82=92?= =?utf8?q?=E8=A3=85=E5=82=99=E3=81=99=E3=82=8B=E3=81=A8=E5=BC=B7=E5=88=B6?= =?utf8?q?=E7=B5=82=E4=BA=86=E3=81=99=E3=82=8B=E4=B8=8D=E5=85=B7=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit player_ptr->tval_ammo には、calc_bonuses() において装備している射撃武器に合った矢弾の tval がセットされる。 しかし、射撃武器を装備した時にサブウィンドウに装備を描画する段階では まだ player_ptr->tval_ammo が更新されておらず TV_NONE になっている。 この状態で空欄になっている装備スロットに対し describe_flavor() が呼ばれると 装備無しスロットは tval が TV_NONE なので player_ptr->tval_ammo と一致してしまい、 空欄に対して矢弾のダメージ表記を計算しようとしてしまう。 空欄なので weight が 0 であるため、0除算が発生して強制終了となる。 player_ptr->tval_ammo は使用せず、bow_tval_ammo() を直接呼び出して正しい矢弾の種類を得るようにする。 --- src/flavor/flavor-describer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/flavor/flavor-describer.c b/src/flavor/flavor-describer.c index 12902b53f..1546bfb0e 100644 --- a/src/flavor/flavor-describer.c +++ b/src/flavor/flavor-describer.c @@ -26,6 +26,7 @@ #include "object/object-kind.h" #include "perception/object-perception.h" #include "player/player-status-table.h" +#include "specific-object/bow.h" #include "sv-definition/sv-lite-types.h" #include "util/bit-flags-calculator.h" #include "util/string-processor.h" @@ -487,7 +488,7 @@ void describe_flavor(player_type *player_ptr, char *buf, object_type *o_ptr, BIT describe_tval(player_ptr, flavor_ptr); describe_named_item_tval(flavor_ptr); flavor_ptr->bow_ptr = &player_ptr->inventory_list[INVEN_BOW]; - if ((flavor_ptr->bow_ptr->k_idx != 0) && (flavor_ptr->o_ptr->tval == player_ptr->tval_ammo)) + if ((flavor_ptr->bow_ptr->k_idx != 0) && (flavor_ptr->o_ptr->tval == bow_tval_ammo(flavor_ptr->bow_ptr))) describe_bow_power(player_ptr, flavor_ptr); else if ((player_ptr->pclass == CLASS_NINJA) && (flavor_ptr->o_ptr->tval == TV_SPIKE)) describe_spike_power(player_ptr, flavor_ptr); -- 2.11.0