From: deskull Date: Sun, 9 Aug 2020 15:20:11 +0000 (+0900) Subject: [Refactor] #40514 have_resist_lite() を calc_bonuses() から分離. / Separated have_resist_l... X-Git-Tag: vmacos3.0.0-alpha52~715 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=0e25ed3700452f10444133fa126571ca140feaaa;p=hengbandforosx%2Fhengbandosx.git [Refactor] #40514 have_resist_lite() を calc_bonuses() から分離. / Separated have_resist_lite() from calc_bonuses(). --- diff --git a/src/player/player-race.c b/src/player/player-race.c index 3556fc3e7..58bc12fa4 100644 --- a/src/player/player-race.c +++ b/src/player/player-race.c @@ -152,18 +152,13 @@ void calc_race_status(player_type *creature_ptr) } } else { switch (creature_ptr->prace) { - case RACE_ELF: - creature_ptr->resist_lite = TRUE; - break; + case RACE_DWARF: creature_ptr->resist_blind = TRUE; break; case RACE_HALF_ORC: creature_ptr->resist_dark = TRUE; break; - case RACE_HIGH_ELF: - creature_ptr->resist_lite = TRUE; - break; case RACE_BARBARIAN: creature_ptr->resist_fear = TRUE; break; @@ -208,9 +203,7 @@ void calc_race_status(player_type *creature_ptr) creature_ptr->resist_pois = TRUE; creature_ptr->pass_wall = TRUE; break; - case RACE_SPRITE: - creature_ptr->resist_lite = TRUE; - break; + case RACE_BALROG: creature_ptr->resist_neth = TRUE; if (creature_ptr->lev > 44) { diff --git a/src/player/player-status-flags.c b/src/player/player-status-flags.c index 53b31999e..08e71e3e8 100644 --- a/src/player/player-status-flags.c +++ b/src/player/player-status-flags.c @@ -1637,3 +1637,29 @@ void have_resist_sound(player_type *creature_ptr) creature_ptr->resist_sound = TRUE; } } + +void have_resist_lite(player_type *creature_ptr) +{ + object_type *o_ptr; + BIT_FLAGS flgs[TR_FLAG_SIZE]; + creature_ptr->resist_lite = FALSE; + + if (!creature_ptr->mimic_form && (creature_ptr->prace == RACE_ELF || creature_ptr->prace == RACE_HIGH_ELF || creature_ptr->prace == RACE_SPRITE)) { + creature_ptr->resist_lite = TRUE; + } + + if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) { + creature_ptr->resist_lite = TRUE; + } + + for (int i = INVEN_RARM; i < INVEN_TOTAL; i++) { + o_ptr = &creature_ptr->inventory_list[i]; + if (!o_ptr->k_idx) + continue; + + object_flags(creature_ptr, o_ptr, flgs); + + if (have_flag(flgs, TR_RES_LITE)) + creature_ptr->resist_lite = TRUE; + } +} diff --git a/src/player/player-status-flags.h b/src/player/player-status-flags.h index eee3150ed..573c9dce9 100644 --- a/src/player/player-status-flags.h +++ b/src/player/player-status-flags.h @@ -56,5 +56,6 @@ void have_resist_cold(player_type *creature_ptr); void have_resist_pois(player_type *creature_ptr); void have_resist_conf(player_type *creature_ptr); void have_resist_sound(player_type *creature_ptr); +void have_resist_lite(player_type *creature_ptr); diff --git a/src/player/player-status.c b/src/player/player-status.c index f94d2ca8f..da9900990 100644 --- a/src/player/player-status.c +++ b/src/player/player-status.c @@ -560,7 +560,6 @@ static void delayed_visual_update(player_type *player_ptr) */ static void clear_creature_bonuses(player_type *creature_ptr) { - creature_ptr->resist_lite = FALSE; creature_ptr->resist_dark = FALSE; creature_ptr->resist_chaos = FALSE; creature_ptr->resist_disen = FALSE; @@ -732,6 +731,7 @@ void calc_bonuses(player_type *creature_ptr) have_resist_pois(creature_ptr); have_resist_conf(creature_ptr); have_resist_sound(creature_ptr); + have_resist_lite(creature_ptr); calc_race_status(creature_ptr); @@ -4439,7 +4439,6 @@ void calc_timelimit_status(player_type *creature_ptr) { if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) { creature_ptr->lite = TRUE; - creature_ptr->resist_lite = TRUE; creature_ptr->resist_dark = TRUE; creature_ptr->resist_chaos = TRUE; creature_ptr->resist_disen = TRUE; @@ -4511,8 +4510,6 @@ void calc_equipment_status(player_type *creature_ptr) if (have_flag(flgs, TR_RES_FEAR)) creature_ptr->resist_fear = TRUE; - if (have_flag(flgs, TR_RES_LITE)) - creature_ptr->resist_lite = TRUE; if (have_flag(flgs, TR_RES_DARK)) creature_ptr->resist_dark = TRUE; if (have_flag(flgs, TR_RES_CHAOS))