From 03015752374512c726b633ad430c14ab60ff6dfe Mon Sep 17 00:00:00 2001 From: deskull Date: Thu, 25 Jun 2020 01:32:19 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#37353=20calc=5Fclass=5Fstatus()=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=20calc=5Fclass=5Fstatus()=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 | 118 +++++++++++++++++++++++++++++++++++++++++++++ src/player/player-class.h | 2 + src/player/player-status.c | 106 +--------------------------------------- 3 files changed, 121 insertions(+), 105 deletions(-) diff --git a/src/player/player-class.c b/src/player/player-class.c index bc008d304..b10c8a0d1 100644 --- a/src/player/player-class.c +++ b/src/player/player-class.c @@ -5,6 +5,7 @@ */ #include "player/player-class.h" +#include "system/object-type-definition.h" /* * The magic info @@ -1256,3 +1257,120 @@ const concptr player_title[MAX_CLASS][PY_MAX_LEVEL / 5] = }; #endif +void calc_class_status(player_type *creature_ptr) +{ + switch (creature_ptr->pclass) { + case CLASS_WARRIOR: + if (creature_ptr->lev > 29) + creature_ptr->resist_fear = TRUE; + if (creature_ptr->lev > 44) + creature_ptr->regenerate = TRUE; + break; + case CLASS_PALADIN: + if (creature_ptr->lev > 39) + 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; + case CLASS_MINDCRAFTER: + if (creature_ptr->lev > 9) + creature_ptr->resist_fear = TRUE; + if (creature_ptr->lev > 19) + creature_ptr->sustain_wis = TRUE; + if (creature_ptr->lev > 29) + creature_ptr->resist_conf = TRUE; + if (creature_ptr->lev > 39) + creature_ptr->telepathy = TRUE; + break; + case CLASS_MONK: + case CLASS_FORCETRAINER: + if (!(heavy_armor(creature_ptr))) { + if (!(is_specific_player_race(creature_ptr, RACE_KLACKON) || is_specific_player_race(creature_ptr, RACE_SPRITE) + || (creature_ptr->pseikaku == PERSONALITY_MUNCHKIN))) + creature_ptr->pspeed += (creature_ptr->lev) / 10; + + if (creature_ptr->lev > 24) + creature_ptr->free_act = TRUE; + } + + break; + case CLASS_SORCERER: + creature_ptr->to_a -= 50; + creature_ptr->dis_to_a -= 50; + break; + case CLASS_BARD: + creature_ptr->resist_sound = TRUE; + break; + case CLASS_SAMURAI: + if (creature_ptr->lev > 29) + creature_ptr->resist_fear = TRUE; + break; + case CLASS_BERSERKER: + creature_ptr->shero = 1; + creature_ptr->sustain_str = TRUE; + creature_ptr->sustain_dex = TRUE; + creature_ptr->sustain_con = TRUE; + creature_ptr->regenerate = TRUE; + creature_ptr->free_act = TRUE; + creature_ptr->pspeed += 2; + if (creature_ptr->lev > 29) + creature_ptr->pspeed++; + if (creature_ptr->lev > 39) + creature_ptr->pspeed++; + if (creature_ptr->lev > 44) + creature_ptr->pspeed++; + if (creature_ptr->lev > 49) + creature_ptr->pspeed++; + creature_ptr->to_a += 10 + creature_ptr->lev / 2; + creature_ptr->dis_to_a += 10 + creature_ptr->lev / 2; + creature_ptr->skill_dig += (100 + creature_ptr->lev * 8); + if (creature_ptr->lev > 39) + creature_ptr->reflect = TRUE; + creature_ptr->redraw |= PR_STATUS; + break; + case CLASS_MIRROR_MASTER: + if (creature_ptr->lev > 39) + creature_ptr->reflect = TRUE; + break; + case CLASS_NINJA: + if (heavy_armor(creature_ptr)) { + creature_ptr->pspeed -= (creature_ptr->lev) / 10; + creature_ptr->skill_stl -= (creature_ptr->lev) / 10; + } else if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || creature_ptr->migite) + && (!creature_ptr->inventory_list[INVEN_LARM].k_idx || creature_ptr->hidarite)) { + creature_ptr->pspeed += 3; + if (!(is_specific_player_race(creature_ptr, RACE_KLACKON) || is_specific_player_race(creature_ptr, RACE_SPRITE) + || (creature_ptr->pseikaku == PERSONALITY_MUNCHKIN))) + creature_ptr->pspeed += (creature_ptr->lev) / 10; + creature_ptr->skill_stl += (creature_ptr->lev) / 10; + if (creature_ptr->lev > 24) + creature_ptr->free_act = TRUE; + } + + if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || creature_ptr->migite) + && (!creature_ptr->inventory_list[INVEN_LARM].k_idx || creature_ptr->hidarite)) { + creature_ptr->to_a += creature_ptr->lev / 2 + 5; + creature_ptr->dis_to_a += creature_ptr->lev / 2 + 5; + } + + creature_ptr->slow_digest = TRUE; + creature_ptr->resist_fear = TRUE; + if (creature_ptr->lev > 19) + creature_ptr->resist_pois = TRUE; + if (creature_ptr->lev > 24) + creature_ptr->sustain_dex = TRUE; + if (creature_ptr->lev > 29) + creature_ptr->see_inv = TRUE; + if (creature_ptr->lev > 44) { + creature_ptr->oppose_pois = 1; + creature_ptr->redraw |= PR_STATUS; + } + + creature_ptr->see_nocto = TRUE; + break; + } +} diff --git a/src/player/player-class.h b/src/player/player-class.h index 49486c14c..987320bb0 100644 --- a/src/player/player-class.h +++ b/src/player/player-class.h @@ -99,3 +99,5 @@ extern const player_class class_info[MAX_CLASS]; extern const s32b realm_choices1[]; extern const s32b realm_choices2[]; extern const concptr player_title[MAX_CLASS][10]; + +void calc_class_status(player_type *creature_ptr); diff --git a/src/player/player-status.c b/src/player/player-status.c index f78bb5b42..a247fad86 100644 --- a/src/player/player-status.c +++ b/src/player/player-status.c @@ -1451,111 +1451,7 @@ void calc_bonuses(player_type *creature_ptr) } } - switch (creature_ptr->pclass) - { - case CLASS_WARRIOR: - if (creature_ptr->lev > 29) creature_ptr->resist_fear = TRUE; - if (creature_ptr->lev > 44) creature_ptr->regenerate = TRUE; - break; - case CLASS_PALADIN: - if (creature_ptr->lev > 39) 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; - case CLASS_MINDCRAFTER: - if (creature_ptr->lev > 9) creature_ptr->resist_fear = TRUE; - if (creature_ptr->lev > 19) creature_ptr->sustain_wis = TRUE; - if (creature_ptr->lev > 29) creature_ptr->resist_conf = TRUE; - if (creature_ptr->lev > 39) creature_ptr->telepathy = TRUE; - break; - case CLASS_MONK: - case CLASS_FORCETRAINER: - if (!(heavy_armor(creature_ptr))) - { - if (!(is_specific_player_race(creature_ptr, RACE_KLACKON) || - is_specific_player_race(creature_ptr, RACE_SPRITE) || - (creature_ptr->pseikaku == PERSONALITY_MUNCHKIN))) - creature_ptr->pspeed += (creature_ptr->lev) / 10; - - if (creature_ptr->lev > 24) - creature_ptr->free_act = TRUE; - } - - break; - case CLASS_SORCERER: - creature_ptr->to_a -= 50; - creature_ptr->dis_to_a -= 50; - break; - case CLASS_BARD: - creature_ptr->resist_sound = TRUE; - break; - case CLASS_SAMURAI: - if (creature_ptr->lev > 29) creature_ptr->resist_fear = TRUE; - break; - case CLASS_BERSERKER: - creature_ptr->shero = 1; - creature_ptr->sustain_str = TRUE; - creature_ptr->sustain_dex = TRUE; - creature_ptr->sustain_con = TRUE; - creature_ptr->regenerate = TRUE; - creature_ptr->free_act = TRUE; - creature_ptr->pspeed += 2; - if (creature_ptr->lev > 29) creature_ptr->pspeed++; - if (creature_ptr->lev > 39) creature_ptr->pspeed++; - if (creature_ptr->lev > 44) creature_ptr->pspeed++; - if (creature_ptr->lev > 49) creature_ptr->pspeed++; - creature_ptr->to_a += 10 + creature_ptr->lev / 2; - creature_ptr->dis_to_a += 10 + creature_ptr->lev / 2; - creature_ptr->skill_dig += (100 + creature_ptr->lev * 8); - if (creature_ptr->lev > 39) creature_ptr->reflect = TRUE; - creature_ptr->redraw |= PR_STATUS; - break; - case CLASS_MIRROR_MASTER: - if (creature_ptr->lev > 39) creature_ptr->reflect = TRUE; - break; - case CLASS_NINJA: - if (heavy_armor(creature_ptr)) - { - creature_ptr->pspeed -= (creature_ptr->lev) / 10; - creature_ptr->skill_stl -= (creature_ptr->lev) / 10; - } - else if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || creature_ptr->migite) && - (!creature_ptr->inventory_list[INVEN_LARM].k_idx || creature_ptr->hidarite)) - { - creature_ptr->pspeed += 3; - if (!(is_specific_player_race(creature_ptr, RACE_KLACKON) || - is_specific_player_race(creature_ptr, RACE_SPRITE) || - (creature_ptr->pseikaku == PERSONALITY_MUNCHKIN))) - creature_ptr->pspeed += (creature_ptr->lev) / 10; - creature_ptr->skill_stl += (creature_ptr->lev) / 10; - if (creature_ptr->lev > 24) - creature_ptr->free_act = TRUE; - } - - if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || creature_ptr->migite) && - (!creature_ptr->inventory_list[INVEN_LARM].k_idx || creature_ptr->hidarite)) - { - creature_ptr->to_a += creature_ptr->lev / 2 + 5; - creature_ptr->dis_to_a += creature_ptr->lev / 2 + 5; - } - - creature_ptr->slow_digest = TRUE; - creature_ptr->resist_fear = TRUE; - if (creature_ptr->lev > 19) creature_ptr->resist_pois = TRUE; - if (creature_ptr->lev > 24) creature_ptr->sustain_dex = TRUE; - if (creature_ptr->lev > 29) creature_ptr->see_inv = TRUE; - if (creature_ptr->lev > 44) - { - creature_ptr->oppose_pois = 1; - creature_ptr->redraw |= PR_STATUS; - } - - creature_ptr->see_nocto = TRUE; - break; - } - + calc_class_status(creature_ptr); if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) { -- 2.11.0