From 90c82de40dc8c8f2f79455f514e745a4487b07d6 Mon Sep 17 00:00:00 2001 From: deskull Date: Mon, 10 Aug 2020 01:18:21 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#40514=20have=5Fresist=5Fchaos()=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=5Fchaos()=20f?= =?utf8?q?rom=20calc=5Fbonuses().?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/player/player-class.c | 3 +-- src/player/player-race.c | 5 ----- src/player/player-status-flags.c | 32 ++++++++++++++++++++++++++++++++ src/player/player-status.c | 4 ---- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/player/player-class.c b/src/player/player-class.c index 623eee244..72e52d7a5 100644 --- a/src/player/player-class.c +++ b/src/player/player-class.c @@ -1210,8 +1210,7 @@ void calc_class_status(player_type *creature_ptr) creature_ptr->resist_fear = TRUE; break; case CLASS_CHAOS_WARRIOR: - if (creature_ptr->lev > 29) - creature_ptr->resist_chaos = TRUE; + if (creature_ptr->lev > 39) creature_ptr->resist_fear = TRUE; break; diff --git a/src/player/player-race.c b/src/player/player-race.c index d51b19222..d3ab65045 100644 --- a/src/player/player-race.c +++ b/src/player/player-race.c @@ -131,13 +131,11 @@ void calc_race_status(player_type *creature_ptr) if (creature_ptr->mimic_form) { switch (creature_ptr->mimic_form) { case MIMIC_DEMON: - creature_ptr->resist_chaos = TRUE; creature_ptr->resist_neth = TRUE; creature_ptr->oppose_fire = 1; creature_ptr->redraw |= PR_STATUS; break; case MIMIC_DEMON_LORD: - creature_ptr->resist_chaos = TRUE; creature_ptr->resist_neth = TRUE; creature_ptr->resist_disen = TRUE; creature_ptr->resist_nexus = TRUE; @@ -161,9 +159,6 @@ void calc_race_status(player_type *creature_ptr) case RACE_HALF_GIANT: creature_ptr->resist_shard = TRUE; break; - case RACE_HALF_TITAN: - creature_ptr->resist_chaos = TRUE; - break; case RACE_YEEK: if (creature_ptr->lev > 19) creature_ptr->immune_acid = TRUE; diff --git a/src/player/player-status-flags.c b/src/player/player-status-flags.c index 4fdd98249..488752c11 100644 --- a/src/player/player-status-flags.c +++ b/src/player/player-status-flags.c @@ -1695,3 +1695,35 @@ void have_resist_dark(player_type *creature_ptr) creature_ptr->resist_dark = TRUE; } } + +void have_resist_chaos(player_type *creature_ptr) +{ + object_type *o_ptr; + BIT_FLAGS flgs[TR_FLAG_SIZE]; + creature_ptr->resist_chaos = FALSE; + + if (creature_ptr->pclass == CLASS_CHAOS_WARRIOR && creature_ptr->lev > 29) + creature_ptr->resist_chaos = TRUE; + + if (creature_ptr->mimic_form == MIMIC_DEMON || creature_ptr->mimic_form == MIMIC_DEMON_LORD) { + creature_ptr->resist_chaos = TRUE; + } + + if (!creature_ptr->mimic_form && creature_ptr->prace == RACE_HALF_TITAN) + creature_ptr->resist_chaos = TRUE; + + if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) { + creature_ptr->resist_chaos = 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_CHAOS)) + creature_ptr->resist_chaos = TRUE; + } +} diff --git a/src/player/player-status.c b/src/player/player-status.c index b8e59c226..bdaaaff8c 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_chaos = FALSE; creature_ptr->resist_disen = FALSE; creature_ptr->resist_shard = FALSE; creature_ptr->resist_nexus = FALSE; @@ -4439,7 +4438,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_chaos = TRUE; creature_ptr->resist_disen = TRUE; creature_ptr->resist_shard = TRUE; creature_ptr->resist_nexus = TRUE; @@ -4509,8 +4507,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_CHAOS)) - creature_ptr->resist_chaos = TRUE; if (have_flag(flgs, TR_RES_DISEN)) creature_ptr->resist_disen = TRUE; if (have_flag(flgs, TR_RES_SHARDS)) -- 2.11.0