From: dis- Date: Mon, 24 Jun 2013 13:59:29 +0000 (+0000) Subject: Fix bug of light of darkness radius X-Git-Tag: v2.1.3~10 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3c6bd969d0476541899f182e0ab57b4337a301a5;p=hengband%2Fhengband.git Fix bug of light of darkness radius --- diff --git a/src/defines.h b/src/defines.h index abf9d53d5..d00676228 100644 --- a/src/defines.h +++ b/src/defines.h @@ -76,7 +76,7 @@ #define H_VER_MAJOR 2 #define H_VER_MINOR 1 #define H_VER_PATCH 2 -#define H_VER_EXTRA 3 +#define H_VER_EXTRA 4 #define ANGBAND_2_8_1 diff --git a/src/load.c b/src/load.c index a84b28b8e..940a58c60 100644 --- a/src/load.c +++ b/src/load.c @@ -663,7 +663,7 @@ static void rd_item(object_type *o_ptr) } else o_ptr->art_name = 0; - if(h_older_than(2,1,2,3)) + if(h_older_than(2,1,2,4)) { u32b flgs[TR_FLAG_SIZE]; object_flags(o_ptr, flgs); diff --git a/src/object1.c b/src/object1.c index 2bfaa0f71..f88472f27 100644 --- a/src/object1.c +++ b/src/object1.c @@ -677,16 +677,16 @@ info[i++] = " if (o_ptr->name2 == EGO_LITE_DARKNESS) info[i++] = _("¤½¤ì¤ÏÁ´¤¯¸÷¤é¤Ê¤¤¡£", "It provides no light."); rad = 0; - if (have_flag(flgs, TR_LITE_1)) rad += 1; - if (have_flag(flgs, TR_LITE_2)) rad += 2; - if (have_flag(flgs, TR_LITE_3)) rad += 3; + if (have_flag(flgs, TR_LITE_1) && o_ptr->name2 != EGO_LITE_DARKNESS) rad += 1; + if (have_flag(flgs, TR_LITE_2) && o_ptr->name2 != EGO_LITE_DARKNESS) rad += 2; + if (have_flag(flgs, TR_LITE_3) && o_ptr->name2 != EGO_LITE_DARKNESS) rad += 3; if (have_flag(flgs, TR_LITE_M1)) rad -= 1; if (have_flag(flgs, TR_LITE_M2)) rad -= 2; if (have_flag(flgs, TR_LITE_M3)) rad -= 3; if(o_ptr->name2 == EGO_LITE_SHINE) rad++; - if (have_flag(flgs, TR_LITE_FUEL)) + if (have_flag(flgs, TR_LITE_FUEL) && o_ptr->name2 != EGO_LITE_DARKNESS) { if(rad > 0) sprintf(desc, _("¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â %d)¤ò¼ø¤±¤ë¡£", "It provides light (radius %d) when fueled."), rad); } diff --git a/src/object2.c b/src/object2.c index c4a811c50..792c44c1d 100644 --- a/src/object2.c +++ b/src/object2.c @@ -3968,6 +3968,19 @@ static void a_m_aux_4(object_type *o_ptr, int level, int power) { case EGO_LITE_DARKNESS: o_ptr->xtra4 = 0; + + if (o_ptr->sval == SV_LITE_TORCH) + { + add_flag(o_ptr->art_flags, TR_LITE_M1); + } + else if (o_ptr->sval == SV_LITE_LANTERN) + { + add_flag(o_ptr->art_flags, TR_LITE_M2); + } + else if (o_ptr->sval == SV_LITE_FEANOR) + { + add_flag(o_ptr->art_flags, TR_LITE_M3); + } break; } } diff --git a/src/xtra1.c b/src/xtra1.c index 28f4bb8ee..0969c8b52 100644 --- a/src/xtra1.c +++ b/src/xtra1.c @@ -3016,7 +3016,7 @@ static void calc_hitpoints(void) */ static void calc_torch(void) { - int i; + int i, rad; object_type *o_ptr; u32b flgs[TR_FLAG_SIZE]; @@ -3046,12 +3046,15 @@ static void calc_torch(void) object_flags(o_ptr, flgs); /* calc the lite_radius */ - if (have_flag(flgs, TR_LITE_1)) p_ptr->cur_lite += 1; - if (have_flag(flgs, TR_LITE_2)) p_ptr->cur_lite += 2; - if (have_flag(flgs, TR_LITE_3)) p_ptr->cur_lite += 3; - if (have_flag(flgs, TR_LITE_M1)) p_ptr->cur_lite -= 1; - if (have_flag(flgs, TR_LITE_M2)) p_ptr->cur_lite -= 2; - if (have_flag(flgs, TR_LITE_M3)) p_ptr->cur_lite -= 3; + + rad = 0; + if (have_flag(flgs, TR_LITE_1) && o_ptr->name2 != EGO_LITE_DARKNESS) rad += 1; + if (have_flag(flgs, TR_LITE_2) && o_ptr->name2 != EGO_LITE_DARKNESS) rad += 2; + if (have_flag(flgs, TR_LITE_3) && o_ptr->name2 != EGO_LITE_DARKNESS) rad += 3; + if (have_flag(flgs, TR_LITE_M1)) rad -= 1; + if (have_flag(flgs, TR_LITE_M2)) rad -= 2; + if (have_flag(flgs, TR_LITE_M3)) rad -= 3; + p_ptr->cur_lite += rad; } /* max radius is 14 (was 5) without rewriting other code -- */