From 68ca93bc04a35f90b0e2a4697a450c56516280dd Mon Sep 17 00:00:00 2001 From: Hourier Date: Sat, 23 May 2020 17:47:14 +0900 Subject: [PATCH] [Refactor] #40416 Incorporated g_ptr int o player_attack_type --- src/combat/player-attack-util.h | 1 + src/combat/player-attack.c | 23 +++++++++++------------ src/mind/monk-attack.c | 8 ++++---- src/mind/monk-attack.h | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/combat/player-attack-util.h b/src/combat/player-attack-util.h index b4c7f5a71..3d1118b97 100644 --- a/src/combat/player-attack-util.h +++ b/src/combat/player-attack-util.h @@ -29,4 +29,5 @@ typedef struct player_attack_type { bool can_drain; const martial_arts *ma_ptr; int drain_result; + grid_type *g_ptr; } player_attack_type; diff --git a/src/combat/player-attack.c b/src/combat/player-attack.c index 1af76136b..853b18913 100644 --- a/src/combat/player-attack.c +++ b/src/combat/player-attack.c @@ -29,7 +29,7 @@ #include "spell/spells3.h" #include "world/world.h" -static player_attack_type *initialize_player_attack_type(player_attack_type *pa_ptr, s16b hand, combat_options mode, monster_type *m_ptr) +static player_attack_type *initialize_player_attack_type(player_attack_type *pa_ptr, s16b hand, combat_options mode, monster_type *m_ptr, grid_type *g_ptr) { pa_ptr->hand = hand; pa_ptr->mode = mode; @@ -43,6 +43,7 @@ static player_attack_type *initialize_player_attack_type(player_attack_type *pa_ pa_ptr->can_drain = FALSE; pa_ptr->ma_ptr = &ma_blows[0]; pa_ptr->drain_result = 0; + pa_ptr->g_ptr = g_ptr; return pa_ptr; } @@ -334,12 +335,12 @@ static void process_weapon_attack(player_type *attacker_ptr, player_attack_type * @details 取り敢えず素手と仮定し1とする. */ static void calc_attack_damage( - player_type *attacker_ptr, player_attack_type *pa_ptr, grid_type *g_ptr, bool *do_quake, const bool vorpal_cut, const int vorpal_chance) + player_type *attacker_ptr, player_attack_type *pa_ptr, bool *do_quake, const bool vorpal_cut, const int vorpal_chance) { object_type *o_ptr = &attacker_ptr->inventory_list[INVEN_RARM + pa_ptr->hand]; pa_ptr->attack_damage = 1; if (pa_ptr->monk_attack) { - process_monk_attack(attacker_ptr, pa_ptr, g_ptr); + process_monk_attack(attacker_ptr, pa_ptr); return; } @@ -380,7 +381,7 @@ static void apply_damage_bonus(player_type *attacker_ptr, player_attack_type *pa * @param is_ej_nullified 蜘蛛相手ならばTRUE * @details ダメージが0未満なら0に補正する */ -static void apply_damage_negative_effect(player_type *attacker_ptr, player_attack_type *pa_ptr, bool is_zantetsu_nullified, bool is_ej_nullified) +static void apply_damage_negative_effect(player_attack_type *pa_ptr, bool is_zantetsu_nullified, bool is_ej_nullified) { if (pa_ptr->attack_damage < 0) pa_ptr->attack_damage = 0; @@ -408,7 +409,7 @@ static void apply_damage_negative_effect(player_type *attacker_ptr, player_attac * @param g_ptr グリッドへの参照ポインタ * @return なし */ -static void mineuchi(player_type *attacker_ptr, player_attack_type *pa_ptr, grid_type *g_ptr) +static void mineuchi(player_type *attacker_ptr, player_attack_type *pa_ptr) { if (pa_ptr->mode != HISSATSU_MINEUCHI) return; @@ -429,7 +430,7 @@ static void mineuchi(player_type *attacker_ptr, player_attack_type *pa_ptr, grid } else msg_format(_("%s はもうろうとした。", "%s is dazed."), pa_ptr->m_name); - (void)set_monster_stunned(attacker_ptr, g_ptr->m_idx, MON_STUNNED(pa_ptr->m_ptr) + tmp); + (void)set_monster_stunned(attacker_ptr, pa_ptr->g_ptr->m_idx, MON_STUNNED(pa_ptr->m_ptr) + tmp); } /*! @@ -457,7 +458,7 @@ void exe_player_attack_to_monster(player_type *attacker_ptr, POSITION y, POSITIO grid_type *g_ptr = &floor_ptr->grid_array[y][x]; monster_type *m_ptr = &floor_ptr->m_list[g_ptr->m_idx]; player_attack_type tmp_attack; - player_attack_type *pa_ptr = initialize_player_attack_type(&tmp_attack, hand, mode, m_ptr); + player_attack_type *pa_ptr = initialize_player_attack_type(&tmp_attack, hand, mode, m_ptr, g_ptr); monster_race *r_ptr = &r_info[pa_ptr->m_ptr->r_idx]; bool is_human = (r_ptr->d_char == 'p'); bool is_lowlevel = (r_ptr->level < (attacker_ptr->lev - 15)); @@ -494,12 +495,10 @@ void exe_player_attack_to_monster(player_type *attacker_ptr, POSITION y, POSITIO bool vorpal_cut = (have_flag(pa_ptr->flags, TR_VORPAL) || hex_spelling(attacker_ptr, HEX_RUNESWORD)) && (randint1(vorpal_chance * 3 / 2) == 1) && !is_zantetsu_nullified; - calc_attack_damage(attacker_ptr, pa_ptr, g_ptr, &do_quake, vorpal_cut, vorpal_chance); + calc_attack_damage(attacker_ptr, pa_ptr, &do_quake, vorpal_cut, vorpal_chance); apply_damage_bonus(attacker_ptr, pa_ptr); - apply_damage_negative_effect(attacker_ptr, pa_ptr, is_zantetsu_nullified, is_ej_nullified); - mineuchi(attacker_ptr, pa_ptr, g_ptr); - - /* Modify the damage */ + apply_damage_negative_effect(pa_ptr, is_zantetsu_nullified, is_ej_nullified); + mineuchi(attacker_ptr, pa_ptr); pa_ptr->attack_damage = mon_damage_mod(attacker_ptr, m_ptr, pa_ptr->attack_damage, (bool)(((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE)) || ((attacker_ptr->pclass == CLASS_BERSERKER) && one_in_(2)))); if (((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_POISON_NEEDLE)) || (mode == HISSATSU_KYUSHO)) { diff --git a/src/mind/monk-attack.c b/src/mind/monk-attack.c index 441eb8295..8dcd1243b 100644 --- a/src/mind/monk-attack.c +++ b/src/mind/monk-attack.c @@ -183,12 +183,12 @@ static void process_attack_vital_spot(player_type *attacker_ptr, player_attack_t * @param resist_stun 朦朧への抵抗値 * @return なし */ -static void print_stun_effect(player_type *attacker_ptr, player_attack_type *pa_ptr, grid_type *g_ptr, const int stun_effect, const int resist_stun) +static void print_stun_effect(player_type *attacker_ptr, player_attack_type *pa_ptr, const int stun_effect, const int resist_stun) { monster_race *r_ptr = &r_info[pa_ptr->m_ptr->r_idx]; if (stun_effect && ((pa_ptr->attack_damage + attacker_ptr->to_d[pa_ptr->hand]) < pa_ptr->m_ptr->hp)) { if (attacker_ptr->lev > randint1(r_ptr->level + resist_stun + 10)) { - if (set_monster_stunned(attacker_ptr, g_ptr->m_idx, stun_effect + MON_STUNNED(pa_ptr->m_ptr))) { + if (set_monster_stunned(attacker_ptr, pa_ptr->g_ptr->m_idx, stun_effect + MON_STUNNED(pa_ptr->m_ptr))) { msg_format(_("%^sはフラフラになった。", "%^s is stunned."), pa_ptr->m_name); } else { msg_format(_("%^sはさらにフラフラになった。", "%^s is more stunned."), pa_ptr->m_name); @@ -204,7 +204,7 @@ static void print_stun_effect(player_type *attacker_ptr, player_attack_type *pa_ * @param g_ptr グリッドへの参照ポインタ * @return なし */ -void process_monk_attack(player_type *attacker_ptr, player_attack_type *pa_ptr, grid_type *g_ptr) +void process_monk_attack(player_type *attacker_ptr, player_attack_type *pa_ptr) { int resist_stun = calc_stun_resistance(pa_ptr); int max_blow_selection_times = calc_max_blow_selection_times(attacker_ptr); @@ -219,5 +219,5 @@ void process_monk_attack(player_type *attacker_ptr, player_attack_type *pa_ptr, WEIGHT weight = calc_monk_attack_weight(attacker_ptr); pa_ptr->attack_damage = critical_norm(attacker_ptr, attacker_ptr->lev * weight, min_level, pa_ptr->attack_damage, attacker_ptr->to_h[0], 0); process_attack_vital_spot(attacker_ptr, pa_ptr, &stun_effect, &resist_stun, special_effect); - print_stun_effect(attacker_ptr, pa_ptr, g_ptr, stun_effect, resist_stun); + print_stun_effect(attacker_ptr, pa_ptr, stun_effect, resist_stun); } diff --git a/src/mind/monk-attack.h b/src/mind/monk-attack.h index 8137e30cd..1109c3a0a 100644 --- a/src/mind/monk-attack.h +++ b/src/mind/monk-attack.h @@ -2,4 +2,4 @@ #include "combat/player-attack-util.h" -void process_monk_attack(player_type *attacker_ptr, player_attack_type *pa_ptr, grid_type *g_ptr); +void process_monk_attack(player_type *attacker_ptr, player_attack_type *pa_ptr); -- 2.11.0