From 7841cd3f3123d7bcb15384436b04fa08f3c75f15 Mon Sep 17 00:00:00 2001 From: deskull Date: Mon, 10 Aug 2020 01:33:34 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#40514=20have=5Fresist=5Fshard()=20?= =?utf8?q?=E3=82=92=20calc=5Fbonuses()=E3=80=80=E3=81=8B=E3=82=89=E5=88=86?= =?utf8?q?=E9=9B=A2=EF=BC=8E=20/=20Separated=20have=5Fresist=5Fshard()=20f?= =?utf8?q?rom=20calc=5Fbonuses().?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/player/player-race.c | 6 ------ src/player/player-status-flags.c | 25 +++++++++++++++++++++++++ src/player/player-status-flags.h | 2 ++ src/player/player-status.c | 6 +----- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/player/player-race.c b/src/player/player-race.c index d9cea28b5..434dce0ea 100644 --- a/src/player/player-race.c +++ b/src/player/player-race.c @@ -155,9 +155,6 @@ void calc_race_status(player_type *creature_ptr) case RACE_BARBARIAN: creature_ptr->resist_fear = TRUE; break; - case RACE_HALF_GIANT: - creature_ptr->resist_shard = TRUE; - break; case RACE_YEEK: if (creature_ptr->lev > 19) creature_ptr->immune_acid = TRUE; @@ -165,9 +162,6 @@ void calc_race_status(player_type *creature_ptr) case RACE_KOBOLD: creature_ptr->resist_pois = TRUE; break; - case RACE_SKELETON: - creature_ptr->resist_shard = TRUE; - break; case RACE_ZOMBIE: creature_ptr->resist_neth = TRUE; creature_ptr->slow_digest = TRUE; diff --git a/src/player/player-status-flags.c b/src/player/player-status-flags.c index 250ede05c..59a8635a2 100644 --- a/src/player/player-status-flags.c +++ b/src/player/player-status-flags.c @@ -1756,3 +1756,28 @@ void have_resist_disen(player_type *creature_ptr) creature_ptr->resist_disen = TRUE; } } + +void have_resist_shard(player_type *creature_ptr) +{ + object_type *o_ptr; + BIT_FLAGS flgs[TR_FLAG_SIZE]; + creature_ptr->resist_shard = FALSE; + + if (!creature_ptr->mimic_form && (creature_ptr->prace == RACE_HALF_TITAN || creature_ptr->prace == RACE_SKELETON)) + creature_ptr->resist_shard = TRUE; + + if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) { + creature_ptr->resist_shard = 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_DISEN)) + creature_ptr->resist_shard = TRUE; + } +} diff --git a/src/player/player-status-flags.h b/src/player/player-status-flags.h index 3f277062c..a397198de 100644 --- a/src/player/player-status-flags.h +++ b/src/player/player-status-flags.h @@ -58,6 +58,8 @@ void have_resist_conf(player_type *creature_ptr); void have_resist_sound(player_type *creature_ptr); void have_resist_lite(player_type *creature_ptr); void have_resist_dark(player_type *creature_ptr); +void have_resist_chaos(player_type *creature_ptr); void have_resist_disen(player_type *creature_ptr); +void have_resist_shard(player_type *creature_ptr); diff --git a/src/player/player-status.c b/src/player/player-status.c index 5f2fbd6b7..e5629707d 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_shard = FALSE; creature_ptr->resist_nexus = FALSE; creature_ptr->resist_blind = FALSE; creature_ptr->resist_neth = FALSE; @@ -732,6 +731,7 @@ void calc_bonuses(player_type *creature_ptr) have_resist_dark(creature_ptr); have_resist_chaos(creature_ptr); have_resist_disen(creature_ptr); + have_resist_shard(creature_ptr); calc_race_status(creature_ptr); @@ -4439,8 +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_disen = TRUE; - creature_ptr->resist_shard = TRUE; creature_ptr->resist_nexus = TRUE; creature_ptr->resist_blind = TRUE; creature_ptr->resist_neth = TRUE; @@ -4508,8 +4506,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_SHARDS)) - creature_ptr->resist_shard = TRUE; if (have_flag(flgs, TR_RES_NEXUS)) creature_ptr->resist_nexus = TRUE; if (have_flag(flgs, TR_RES_BLIND)) -- 2.11.0