From 2fc760c943bf79b3f46487c18d6363c691aed3f8 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sat, 8 Aug 2020 14:49:21 +0900 Subject: [PATCH] [Refactor] #39010 Reshaped do_cmd_throw() --- src/cmd-item/cmd-throw.c | 10 +-- src/effect/effect-monster-charm.c | 47 +++++----- src/effect/effect-monster-charm.h | 19 ++-- src/effect/effect-monster-curse.c | 17 ++-- src/effect/effect-monster-curse.h | 11 +-- src/effect/effect-monster-evil.c | 67 +++++++------- src/effect/effect-monster-evil.h | 27 +++--- src/effect/effect-monster-lite-dark.c | 19 ++-- src/effect/effect-monster-lite-dark.h | 9 +- src/effect/effect-monster-oldies.c | 47 +++++----- src/effect/effect-monster-oldies.h | 23 ++--- src/effect/effect-monster-psi.c | 15 ++-- src/effect/effect-monster-psi.h | 9 +- src/effect/effect-monster-resist-hurt.c | 153 ++++++++++++++++---------------- src/effect/effect-monster-resist-hurt.h | 53 +++++------ src/effect/effect-monster-spirit.c | 19 ++-- src/effect/effect-monster-spirit.h | 9 +- src/effect/effect-monster-switcher.c | 57 ++++++------ src/effect/effect-monster-switcher.h | 5 +- src/effect/effect-monster.c | 8 +- src/system/h-type.h | 10 +-- 21 files changed, 326 insertions(+), 308 deletions(-) diff --git a/src/cmd-item/cmd-throw.c b/src/cmd-item/cmd-throw.c index 48efdb34e..55d68e89b 100644 --- a/src/cmd-item/cmd-throw.c +++ b/src/cmd-item/cmd-throw.c @@ -67,7 +67,7 @@ static bool check_throw_boomerang(player_type *creature_ptr, it_type *it_ptr, co item_tester_hook = item_tester_hook_boomerang; *q = _("どの武器を投げますか? ", "Throw which it_ptr->item? "); *s = _("投げる武器がない。", "You have nothing to throw."); - it_ptr->o_ptr = choose_object(creature_ptr, &it_ptr->item, q, s, USE_EQUIP, 0); + it_ptr->o_ptr = choose_object(creature_ptr, &it_ptr->item, *q, *s, USE_EQUIP, 0); if (!it_ptr->o_ptr) { flush(); return FALSE; @@ -212,15 +212,15 @@ bool do_cmd_throw(player_type *creature_ptr, int mult, bool boomerang, OBJECT_ID if ((it_ptr->q_ptr->name1 == ART_MJOLLNIR) || (it_ptr->q_ptr->name1 == ART_AEGISFANG) || it_ptr->boomerang) it_ptr->return_when_thrown = TRUE; - if (it_ptr->item >= 0) { + if (it_ptr->item < 0) { + floor_item_increase(creature_ptr->current_floor_ptr, 0 - it_ptr->item, -1); + floor_item_optimize(creature_ptr, 0 - it_ptr->item); + } else { inven_item_increase(creature_ptr, it_ptr->item, -1); if (!it_ptr->return_when_thrown) inven_item_describe(creature_ptr, it_ptr->item); inven_item_optimize(creature_ptr, it_ptr->item); - } else { - floor_item_increase(creature_ptr->current_floor_ptr, 0 - it_ptr->item, -1); - floor_item_optimize(creature_ptr, 0 - it_ptr->item); } if (it_ptr->item >= INVEN_RARM) { diff --git a/src/effect/effect-monster-charm.c b/src/effect/effect-monster-charm.c index 23d48c507..081845f4f 100644 --- a/src/effect/effect-monster-charm.c +++ b/src/effect/effect-monster-charm.c @@ -1,5 +1,6 @@ #include "effect/effect-monster-charm.h" #include "dungeon/quest.h" +#include "effect/effect-monster-util.h" #include "effect/spells-effect-util.h" #include "monster-race/monster-race-hook.h" #include "monster-race/monster-race.h" @@ -42,7 +43,7 @@ static void effect_monster_charm_resist(player_type *caster_ptr, effect_monster_ } } -switch_result effect_monster_charm(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_charm(player_type *caster_ptr, effect_monster_type *em_ptr) { int vir = virtue_number(caster_ptr, V_HARMONY); if (vir) { @@ -59,10 +60,10 @@ switch_result effect_monster_charm(player_type *caster_ptr, effect_monster_type effect_monster_charm_resist(caster_ptr, em_ptr); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_control_undead(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_control_undead(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -92,10 +93,10 @@ switch_result effect_monster_control_undead(player_type *caster_ptr, effect_mons } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_control_demon(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_control_demon(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -125,10 +126,10 @@ switch_result effect_monster_control_demon(player_type *caster_ptr, effect_monst } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_control_animal(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_control_animal(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -160,10 +161,10 @@ switch_result effect_monster_control_animal(player_type *caster_ptr, effect_mons } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_charm_living(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_charm_living(player_type *caster_ptr, effect_monster_type *em_ptr) { int vir = virtue_number(caster_ptr, V_UNLIFE); if (em_ptr->seen) @@ -198,7 +199,7 @@ switch_result effect_monster_charm_living(player_type *caster_ptr, effect_monste } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } static void effect_monster_domination_corrupted_addition(player_type *caster_ptr, effect_monster_type *em_ptr) @@ -255,10 +256,10 @@ static void effect_monster_domination_addition(effect_monster_type *em_ptr) } } -switch_result effect_monster_domination(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_domination(player_type *caster_ptr, effect_monster_type *em_ptr) { if (!is_hostile(em_ptr->m_ptr)) - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -271,19 +272,19 @@ switch_result effect_monster_domination(player_type *caster_ptr, effect_monster_ em_ptr->do_conf = 0; effect_monster_domination_corrupted(caster_ptr, em_ptr); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (!common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr)) { em_ptr->note = _("があなたに隷属した。", " is in your thrall!"); set_pet(caster_ptr, em_ptr->m_ptr); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } effect_monster_domination_addition(em_ptr); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } static bool effect_monster_crusade_domination(player_type *caster_ptr, effect_monster_type *em_ptr) @@ -319,14 +320,14 @@ static bool effect_monster_crusade_domination(player_type *caster_ptr, effect_mo return TRUE; } -switch_result effect_monster_crusade(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_crusade(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; bool success = effect_monster_crusade_domination(caster_ptr, em_ptr); if (success) { em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if ((em_ptr->r_ptr->flags3 & RF3_NO_FEAR) == 0) @@ -335,7 +336,7 @@ switch_result effect_monster_crusade(player_type *caster_ptr, effect_monster_typ em_ptr->r_ptr->r_flags3 |= RF3_NO_FEAR; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } static bool effect_monster_capture_attemption(player_type *caster_ptr, effect_monster_type *em_ptr, int capturable_hp) @@ -359,7 +360,7 @@ static bool effect_monster_capture_attemption(player_type *caster_ptr, effect_mo return TRUE; } -switch_result effect_monster_capture(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_capture(player_type *caster_ptr, effect_monster_type *em_ptr) { floor_type *floor_ptr = caster_ptr->current_floor_ptr; int capturable_hp; @@ -368,7 +369,7 @@ switch_result effect_monster_capture(player_type *caster_ptr, effect_monster_typ || (em_ptr->r_ptr->flags1 & RF1_QUESTOR) || em_ptr->m_ptr->parent_m_idx) { msg_format(_("%sには効果がなかった。", "%s is unaffected."), em_ptr->m_name); em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (is_pet(em_ptr->m_ptr)) @@ -381,13 +382,13 @@ switch_result effect_monster_capture(player_type *caster_ptr, effect_monster_typ if (em_ptr->m_ptr->hp >= capturable_hp) { msg_format(_("もっと弱らせないと。", "You need to weaken %s more."), em_ptr->m_name); em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (effect_monster_capture_attemption(caster_ptr, em_ptr, capturable_hp)) - return SWITCH_TRUE; + return PROCESS_TRUE; msg_format(_("うまく捕まえられなかった。", "You failed to capture %s."), em_ptr->m_name); em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-charm.h b/src/effect/effect-monster-charm.h index b1c143d0d..65b5e90b2 100644 --- a/src/effect/effect-monster-charm.h +++ b/src/effect/effect-monster-charm.h @@ -1,13 +1,14 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result effect_monster_charm(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_control_undead(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_control_demon(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_control_animal(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_charm_living(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_domination(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_crusade(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_capture(player_type *caster_ptr, effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_charm(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_control_undead(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_control_demon(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_control_animal(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_charm_living(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_domination(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_crusade(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_capture(player_type *caster_ptr, effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-curse.c b/src/effect/effect-monster-curse.c index 8e907146e..c1ad7397c 100644 --- a/src/effect/effect-monster-curse.c +++ b/src/effect/effect-monster-curse.c @@ -1,9 +1,10 @@ #include "effect/effect-monster-curse.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race.h" #include "monster-race/race-indice-types.h" #include "view/display-messages.h" -switch_result effect_monster_curse_1(effect_monster_type *em_ptr) +process_result effect_monster_curse_1(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!em_ptr->who) msg_format(_("%sを指差して呪いをかけた。", "You point at %s and curse."), em_ptr->m_name); @@ -13,11 +14,11 @@ switch_result effect_monster_curse_1(effect_monster_type *em_ptr) em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_curse_2(effect_monster_type *em_ptr) +process_result effect_monster_curse_2(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!em_ptr->who) msg_format(_("%sを指差して恐ろしげに呪いをかけた。", "You point at %s and curse horribly."), em_ptr->m_name); @@ -28,11 +29,11 @@ switch_result effect_monster_curse_2(effect_monster_type *em_ptr) em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_curse_3(effect_monster_type *em_ptr) +process_result effect_monster_curse_3(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!em_ptr->who) msg_format(_("%sを指差し、恐ろしげに呪文を唱えた!", "You point at %s, incanting terribly!"), em_ptr->m_name); @@ -43,11 +44,11 @@ switch_result effect_monster_curse_3(effect_monster_type *em_ptr) em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_curse_4(effect_monster_type *em_ptr) +process_result effect_monster_curse_4(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!em_ptr->who) @@ -60,5 +61,5 @@ switch_result effect_monster_curse_4(effect_monster_type *em_ptr) em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-curse.h b/src/effect/effect-monster-curse.h index 4bea2ade6..3673cbdf7 100644 --- a/src/effect/effect-monster-curse.h +++ b/src/effect/effect-monster-curse.h @@ -1,9 +1,10 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result effect_monster_curse_1(effect_monster_type *em_ptr); -switch_result effect_monster_curse_2(effect_monster_type *em_ptr); -switch_result effect_monster_curse_3(effect_monster_type *em_ptr); -switch_result effect_monster_curse_4(effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_curse_1(effect_monster_type *em_ptr); +process_result effect_monster_curse_2(effect_monster_type *em_ptr); +process_result effect_monster_curse_3(effect_monster_type *em_ptr); +process_result effect_monster_curse_4(effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-evil.c b/src/effect/effect-monster-evil.c index 750938326..38f87371b 100644 --- a/src/effect/effect-monster-evil.c +++ b/src/effect/effect-monster-evil.c @@ -1,4 +1,5 @@ #include "effect/effect-monster-evil.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race-hook.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags-resistance.h" @@ -28,13 +29,13 @@ static bool effect_monster_away_resist(player_type *caster_ptr, effect_monster_t } -switch_result effect_monster_away_undead(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_away_undead(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } bool resists_tele = effect_monster_away_resist(caster_ptr, em_ptr); @@ -48,17 +49,17 @@ switch_result effect_monster_away_undead(player_type *caster_ptr, effect_monster } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_away_evil(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_away_evil(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_EVIL)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } bool resists_tele = effect_monster_away_resist(caster_ptr, em_ptr); @@ -72,11 +73,11 @@ switch_result effect_monster_away_evil(player_type *caster_ptr, effect_monster_t } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_away_all(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_away_all(player_type *caster_ptr, effect_monster_type *em_ptr) { bool resists_tele = effect_monster_away_resist(caster_ptr, em_ptr); if (!resists_tele) @@ -87,17 +88,17 @@ switch_result effect_monster_away_all(player_type *caster_ptr, effect_monster_ty } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_turn_undead(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_turn_undead(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -113,17 +114,17 @@ switch_result effect_monster_turn_undead(player_type *caster_ptr, effect_monster } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_turn_evil(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_turn_evil(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_EVIL)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -139,11 +140,11 @@ switch_result effect_monster_turn_evil(player_type *caster_ptr, effect_monster_t } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_turn_all(effect_monster_type *em_ptr) +process_result effect_monster_turn_all(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -158,17 +159,17 @@ switch_result effect_monster_turn_all(effect_monster_type *em_ptr) } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disp_undead(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_disp_undead(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -178,17 +179,17 @@ switch_result effect_monster_disp_undead(player_type *caster_ptr, effect_monster em_ptr->note = _("は身震いした。", " shudders."); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disp_evil(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_disp_evil(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_EVIL)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -197,17 +198,17 @@ switch_result effect_monster_disp_evil(player_type *caster_ptr, effect_monster_t em_ptr->note = _("は身震いした。", " shudders."); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disp_good(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_disp_good(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_GOOD)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -216,34 +217,34 @@ switch_result effect_monster_disp_good(player_type *caster_ptr, effect_monster_t em_ptr->note = _("は身震いした。", " shudders."); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disp_living(effect_monster_type *em_ptr) +process_result effect_monster_disp_living(effect_monster_type *em_ptr) { if (!monster_living(em_ptr->m_ptr->r_idx)) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; em_ptr->note = _("は身震いした。", " shudders."); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disp_demon(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_disp_demon(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_DEMON)) == 0) { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -252,15 +253,15 @@ switch_result effect_monster_disp_demon(player_type *caster_ptr, effect_monster_ em_ptr->note = _("は身震いした。", " shudders."); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disp_all(effect_monster_type *em_ptr) +process_result effect_monster_disp_all(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; em_ptr->note = _("は身震いした。", " shudders."); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-evil.h b/src/effect/effect-monster-evil.h index 9533bfbe3..45162d711 100644 --- a/src/effect/effect-monster-evil.h +++ b/src/effect/effect-monster-evil.h @@ -1,17 +1,18 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result effect_monster_away_undead(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_away_evil(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_away_all(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_turn_undead(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_turn_evil(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_turn_all(effect_monster_type *em_ptr); -switch_result effect_monster_disp_undead(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_disp_evil(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_disp_good(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_disp_living(effect_monster_type *em_ptr); -switch_result effect_monster_disp_demon(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_disp_all(effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_away_undead(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_away_evil(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_away_all(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_turn_undead(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_turn_evil(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_turn_all(effect_monster_type *em_ptr); +process_result effect_monster_disp_undead(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_disp_evil(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_disp_good(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_disp_living(effect_monster_type *em_ptr); +process_result effect_monster_disp_demon(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_disp_all(effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-lite-dark.c b/src/effect/effect-monster-lite-dark.c index 278fa51e7..dc1d12718 100644 --- a/src/effect/effect-monster-lite-dark.c +++ b/src/effect/effect-monster-lite-dark.c @@ -1,21 +1,22 @@ #include "effect/effect-monster-lite-dark.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags-resistance.h" #include "monster-race/race-flags3.h" #include "monster/monster-info.h" -switch_result effect_monster_lite_weak(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_lite_weak(player_type *caster_ptr, effect_monster_type *em_ptr) { if (!em_ptr->dam) { em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if ((em_ptr->r_ptr->flags3 & RF3_HURT_LITE) == 0) { em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -25,11 +26,11 @@ switch_result effect_monster_lite_weak(player_type *caster_ptr, effect_monster_t em_ptr->note = _("は光に身をすくめた!", " cringes from the light!"); em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_lite(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_lite(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -50,21 +51,21 @@ switch_result effect_monster_lite(player_type *caster_ptr, effect_monster_type * em_ptr->dam *= 2; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_dark(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_dark(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if ((em_ptr->r_ptr->flagsr & RFR_RES_DARK) == 0) - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; em_ptr->note = _("には耐性がある!", " resists!"); em_ptr->dam *= 2; em_ptr->dam /= (randint1(6) + 6); if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_DARK); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-lite-dark.h b/src/effect/effect-monster-lite-dark.h index 2d1912112..24c638415 100644 --- a/src/effect/effect-monster-lite-dark.h +++ b/src/effect/effect-monster-lite-dark.h @@ -1,8 +1,9 @@ #pragma once -#include "effect/effect-monster-util.h" #include "system/angband.h" -switch_result effect_monster_lite_weak(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_lite(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_dark(player_type *caster_ptr, effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_lite_weak(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_lite(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_dark(player_type *caster_ptr, effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-oldies.c b/src/effect/effect-monster-oldies.c index fba4541fc..2ad8e7725 100644 --- a/src/effect/effect-monster-oldies.c +++ b/src/effect/effect-monster-oldies.c @@ -1,5 +1,6 @@ #include "effect/effect-monster-oldies.h" #include "core/player-redraw-types.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags1.h" #include "monster-race/race-flags3.h" @@ -13,7 +14,7 @@ #include "view/display-messages.h" // Powerful monsters can resist. -switch_result effect_monster_old_poly(effect_monster_type *em_ptr) +process_result effect_monster_old_poly(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; em_ptr->do_polymorph = TRUE; @@ -28,11 +29,11 @@ switch_result effect_monster_old_poly(effect_monster_type *em_ptr) } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -43,7 +44,7 @@ switch_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_t { em_ptr->note = _("には効果がなかった。", " is unaffected."); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp; @@ -51,11 +52,11 @@ switch_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_t em_ptr->note = _("が分裂した!", " spawns!"); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_star_heal(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_star_heal(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -75,10 +76,10 @@ switch_result effect_monster_star_heal(player_type *caster_ptr, effect_monster_t if (caster_ptr->riding == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_UHEALTH); - return SWITCH_FALSE; + return PROCESS_FALSE; } - return SWITCH_TRUE; + return PROCESS_TRUE; } @@ -135,7 +136,7 @@ static void effect_monster_old_heal_recovery(player_type *caster_ptr, effect_mon // todo サーペントのHPがマジックナンバー扱いになっている -switch_result effect_monster_old_heal(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_old_heal(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -157,11 +158,11 @@ switch_result effect_monster_old_heal(player_type *caster_ptr, effect_monster_ty em_ptr->note = _("は体力を回復したようだ。", " looks healthier."); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_old_speed(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_old_speed(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -179,11 +180,11 @@ switch_result effect_monster_old_speed(player_type *caster_ptr, effect_monster_t } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -194,14 +195,14 @@ switch_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_ty em_ptr->note = _("には効果がなかった。", " is unaffected."); em_ptr->obvious = FALSE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50)) em_ptr->note = _("の動きが遅くなった。", " starts moving slower."); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -209,7 +210,7 @@ switch_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_ty * todo 「ユニークは (魔法では)常に眠らない」はr_infoの趣旨に反すると思われる * 眠る確率を半分にするとかしておいた方が良さそう */ -switch_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -232,7 +233,7 @@ switch_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_t } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -240,7 +241,7 @@ switch_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_t * todo 「ユニークは (魔法では)常に混乱しない」はr_infoの趣旨に反すると思われる * 眠る確率を半分にするとかしておいた方が良さそう */ -switch_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -260,11 +261,11 @@ switch_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_ty } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil) +process_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -285,11 +286,11 @@ switch_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil) } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_stun(effect_monster_type *em_ptr) +process_result effect_monster_stun(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -303,5 +304,5 @@ switch_result effect_monster_stun(effect_monster_type *em_ptr) } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-oldies.h b/src/effect/effect-monster-oldies.h index 3de3c11c7..15f1997ca 100644 --- a/src/effect/effect-monster-oldies.h +++ b/src/effect/effect-monster-oldies.h @@ -1,15 +1,16 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result effect_monster_old_poly(effect_monster_type *em_ptr); -switch_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_star_heal(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_old_heal(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_old_speed(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil); -switch_result effect_monster_stun(effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_old_poly(effect_monster_type *em_ptr); +process_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_star_heal(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_old_heal(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_old_speed(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil); +process_result effect_monster_stun(effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-psi.c b/src/effect/effect-monster-psi.c index 8e0d999dc..3f24742a7 100644 --- a/src/effect/effect-monster-psi.c +++ b/src/effect/effect-monster-psi.c @@ -1,6 +1,7 @@ #include "effect/effect-monster-psi.h" #include "core/player-redraw-types.h" #include "core/window-redrawer.h" +#include "effect/effect-monster-util.h" #include "floor/floor.h" #include "mind/mind-mirror-master.h" #include "monster-race/monster-race.h" @@ -135,7 +136,7 @@ static void effect_monster_psi_addition(effect_monster_type *em_ptr) } -switch_result effect_monster_psi(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_psi(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!(los(caster_ptr, em_ptr->m_ptr->fy, em_ptr->m_ptr->fx, caster_ptr->y, caster_ptr->x))) @@ -144,13 +145,13 @@ switch_result effect_monster_psi(player_type *caster_ptr, effect_monster_type *e msg_format(_("%sはあなたが見えないので影響されない!", "%^s can't see you, and isn't affected!"), em_ptr->m_name); em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } effect_monster_psi_resist(caster_ptr, em_ptr); effect_monster_psi_addition(em_ptr); em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk."); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -217,7 +218,7 @@ static void effect_monster_psi_drain_change_power(player_type *caster_ptr, effec } -switch_result effect_monster_psi_drain(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_psi_drain(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -238,11 +239,11 @@ switch_result effect_monster_psi_drain(player_type *caster_ptr, effect_monster_t } em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk."); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_telekinesis(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_telekinesis(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (one_in_(4)) @@ -259,5 +260,5 @@ switch_result effect_monster_telekinesis(player_type *caster_ptr, effect_monster em_ptr->obvious = FALSE; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-psi.h b/src/effect/effect-monster-psi.h index 6693b137a..755256411 100644 --- a/src/effect/effect-monster-psi.h +++ b/src/effect/effect-monster-psi.h @@ -1,8 +1,9 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result effect_monster_psi(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_psi_drain(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_telekinesis(player_type *caster_ptr, effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_psi(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_psi_drain(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_telekinesis(player_type *caster_ptr, effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-resist-hurt.c b/src/effect/effect-monster-resist-hurt.c index 57e210f8f..b5dc4c3c7 100644 --- a/src/effect/effect-monster-resist-hurt.c +++ b/src/effect/effect-monster-resist-hurt.c @@ -1,4 +1,5 @@ #include "effect/effect-monster-resist-hurt.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags-resistance.h" #include "monster-race/race-flags1.h" @@ -7,42 +8,42 @@ #include "monster/monster-status.h" #include "monster/monster-info.h" -switch_result effect_monster_void(effect_monster_type *em_ptr) +process_result effect_monster_void(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_acid(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_acid(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_IM_ACID) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_IM_ACID) == 0) return PROCESS_CONTINUE; em_ptr->note = _("にはかなり耐性がある!", " resists a lot."); em_ptr->dam /= 9; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_ACID); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_elec(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_elec(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_IM_ELEC) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_IM_ELEC) == 0) return PROCESS_CONTINUE; em_ptr->note = _("にはかなり耐性がある!", " resists a lot."); em_ptr->dam /= 9; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_ELEC); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_fire(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_fire(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (em_ptr->r_ptr->flagsr & RFR_IM_FIRE) @@ -52,21 +53,21 @@ switch_result effect_monster_fire(player_type *caster_ptr, effect_monster_type * if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_FIRE); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } - if ((em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE)) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE)) == 0) return PROCESS_CONTINUE; em_ptr->note = _("はひどい痛手をうけた。", " is hit hard."); em_ptr->dam *= 2; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_FIRE); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_cold(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_cold(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (em_ptr->r_ptr->flagsr & RFR_IM_COLD) @@ -76,35 +77,35 @@ switch_result effect_monster_cold(player_type *caster_ptr, effect_monster_type * if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } - if ((em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) == 0) return PROCESS_CONTINUE; em_ptr->note = _("はひどい痛手をうけた。", " is hit hard."); em_ptr->dam *= 2; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_pois(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_pois(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_IM_POIS) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_IM_POIS) == 0) return PROCESS_CONTINUE; em_ptr->note = _("にはかなり耐性がある!", " resists a lot."); em_ptr->dam /= 9; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (em_ptr->r_ptr->flagsr & RFR_IM_POIS) @@ -114,37 +115,37 @@ switch_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type * if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (one_in_(3)) em_ptr->do_polymorph = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_hell_fire(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_hell_fire(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flags3 & RF3_GOOD) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flags3 & RF3_GOOD) == 0) return PROCESS_CONTINUE; em_ptr->note = _("はひどい痛手をうけた。", " is hit hard."); em_ptr->dam *= 2; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= RF3_GOOD; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0) { em_ptr->note = _("には耐性がある。", " resists."); em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->dam *= 2; @@ -152,21 +153,21 @@ switch_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_t if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= RF3_EVIL; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_plasma(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_plasma(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_RES_PLAS) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_RES_PLAS) == 0) return PROCESS_CONTINUE; em_ptr->note = _("には耐性がある。", " resists."); em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_PLAS); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -194,26 +195,26 @@ static bool effect_monster_nether_resist(player_type *caster_ptr, effect_monster } -switch_result effect_monster_nether(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_nether(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if (effect_monster_nether_resist(caster_ptr, em_ptr)) return SWITCH_CONTINUE; - if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0) return SWITCH_CONTINUE; + if (effect_monster_nether_resist(caster_ptr, em_ptr)) return PROCESS_CONTINUE; + if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0) return PROCESS_CONTINUE; em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat."); em_ptr->dam /= 2; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_water(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_water(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_RES_WATE) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_RES_WATE) == 0) return PROCESS_CONTINUE; if ((em_ptr->m_ptr->r_idx == MON_WATER_ELEM) || (em_ptr->m_ptr->r_idx == MON_UNMAKER)) { @@ -229,11 +230,11 @@ switch_result effect_monster_water(player_type *caster_ptr, effect_monster_type if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_WATE); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (em_ptr->r_ptr->flagsr & RFR_RES_CHAO) @@ -256,45 +257,45 @@ switch_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type em_ptr->do_conf = (5 + randint1(11) + em_ptr->r) / (em_ptr->r + 1); } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_shards(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_shards(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0) return PROCESS_CONTINUE; em_ptr->note = _("には耐性がある。", " resists."); em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_rocket(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_rocket(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0) return PROCESS_CONTINUE; em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat."); em_ptr->dam /= 2; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_sound(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_sound(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if ((em_ptr->r_ptr->flagsr & RFR_RES_SOUN) == 0) { em_ptr->do_stun = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->note = _("には耐性がある。", " resists."); @@ -302,17 +303,17 @@ switch_result effect_monster_sound(player_type *caster_ptr, effect_monster_type if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SOUN); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_confusion(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_confusion(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if ((em_ptr->r_ptr->flags3 & RF3_NO_CONF) == 0) { em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->note = _("には耐性がある。", " resists."); @@ -320,45 +321,45 @@ switch_result effect_monster_confusion(player_type *caster_ptr, effect_monster_t if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disenchant(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_disenchant(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_RES_DISE) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_RES_DISE) == 0) return PROCESS_CONTINUE; em_ptr->note = _("には耐性がある。", " resists."); em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_DISE); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_nexus(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_nexus(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flagsr & RFR_RES_NEXU) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flagsr & RFR_RES_NEXU) == 0) return PROCESS_CONTINUE; em_ptr->note = _("には耐性がある。", " resists."); em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_NEXU); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_force(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_force(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if ((em_ptr->r_ptr->flagsr & RFR_RES_WALL) == 0) { em_ptr->do_stun = (randint1(15) + em_ptr->r) / (em_ptr->r + 1); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->note = _("には耐性がある。", " resists."); @@ -366,12 +367,12 @@ switch_result effect_monster_force(player_type *caster_ptr, effect_monster_type if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_WALL); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } // Powerful monsters can resists and normal monsters slow down. -switch_result effect_monster_inertial(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_inertial(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (em_ptr->r_ptr->flagsr & RFR_RES_INER) @@ -381,30 +382,30 @@ switch_result effect_monster_inertial(player_type *caster_ptr, effect_monster_ty if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_INER); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) { em_ptr->obvious = FALSE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50)) em_ptr->note = _("の動きが遅くなった。", " starts moving slower."); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_time(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_time(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if ((em_ptr->r_ptr->flagsr & RFR_RES_TIME) == 0) { em_ptr->do_time = (em_ptr->dam + 1) / 2; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->note = _("には耐性がある。", " resists."); @@ -412,7 +413,7 @@ switch_result effect_monster_time(player_type *caster_ptr, effect_monster_type * if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_TIME); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -469,7 +470,7 @@ static void effect_monster_gravity_stun(effect_monster_type *em_ptr) * Powerful monsters can resist and normal monsters slow down * Furthermore, this magic can make non-unique monsters slow/stun. */ -switch_result effect_monster_gravity(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_gravity(player_type *caster_ptr, effect_monster_type *em_ptr) { em_ptr->do_dist = effect_monster_gravity_resist_teleport(caster_ptr, em_ptr) ? 0 : 10; if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding)) em_ptr->do_dist = 0; @@ -482,19 +483,19 @@ switch_result effect_monster_gravity(player_type *caster_ptr, effect_monster_typ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_GRAV); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } effect_monster_gravity_slow(caster_ptr, em_ptr); effect_monster_gravity_stun(em_ptr); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_disintegration(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_disintegration(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; - if ((em_ptr->r_ptr->flags3 & RF3_HURT_ROCK) == 0) return SWITCH_CONTINUE; + if ((em_ptr->r_ptr->flags3 & RF3_HURT_ROCK) == 0) return PROCESS_CONTINUE; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK); @@ -502,10 +503,10 @@ switch_result effect_monster_disintegration(player_type *caster_ptr, effect_mons em_ptr->note = _("の皮膚がただれた!", " loses some skin!"); em_ptr->note_dies = _("は蒸発した!", " evaporates!"); em_ptr->dam *= 2; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -525,5 +526,5 @@ switch_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_t em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD); } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-resist-hurt.h b/src/effect/effect-monster-resist-hurt.h index 68086266b..a36309f1d 100644 --- a/src/effect/effect-monster-resist-hurt.h +++ b/src/effect/effect-monster-resist-hurt.h @@ -1,30 +1,31 @@ #pragma once -#include "effect/effect-monster-util.h" #include "system/angband.h" -switch_result effect_monster_void(effect_monster_type *em_ptr); -switch_result effect_monster_acid(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_elec(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_fire(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_cold(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_pois(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_hell_fire(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_plasma(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_nether(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_water(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_shards(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_rocket(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_sound(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_confusion(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_disenchant(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_nexus(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_force(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_inertial(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_time(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_gravity(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_disintegration(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_void(effect_monster_type *em_ptr); +process_result effect_monster_acid(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_elec(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_fire(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_cold(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_pois(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_hell_fire(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_plasma(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_nether(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_water(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_shards(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_rocket(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_sound(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_confusion(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_disenchant(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_nexus(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_force(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_inertial(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_time(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_gravity(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_disintegration(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-spirit.c b/src/effect/effect-monster-spirit.c index 2beb962c1..48e85751f 100644 --- a/src/effect/effect-monster-spirit.c +++ b/src/effect/effect-monster-spirit.c @@ -1,6 +1,7 @@ #include "effect/effect-monster-spirit.h" #include "core/hp-mp-processor.h" #include "core/player-redraw-types.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags1.h" #include "monster-race/race-flags2.h" @@ -14,7 +15,7 @@ #include "mspell/mspell-mask-definitions.h" #include "view/display-messages.h" -switch_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; bool has_mana = ((em_ptr->r_ptr->flags4 & ~(RF4_NOMAGIC_MASK))) != 0; @@ -26,7 +27,7 @@ switch_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_ msg_format(_("%sには効果がなかった。", "%s is unaffected."), em_ptr->m_name); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->who <= 0) @@ -34,13 +35,13 @@ switch_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_ msg_format(_("%sから精神エネルギーを吸いとった。", "You draw psychic energy from %s."), em_ptr->m_name); (void)hp_player(caster_ptr, em_ptr->dam); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->m_caster_ptr->hp >= em_ptr->m_caster_ptr->maxhp) { em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } em_ptr->m_caster_ptr->hp += em_ptr->dam; @@ -60,11 +61,11 @@ switch_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_ } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_mind_blast(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_mind_blast(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!em_ptr->who) msg_format(_("%sをじっと睨んだ。", "You gaze intently at %s."), em_ptr->m_name); @@ -102,11 +103,11 @@ switch_result effect_monster_mind_blast(player_type *caster_ptr, effect_monster_ else em_ptr->do_conf = randint0(8) + 8; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_brain_smash(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_brain_smash(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (!em_ptr->who) msg_format(_("%sをじっと睨んだ。", "You gaze intently at %s."), em_ptr->m_name); @@ -158,5 +159,5 @@ switch_result effect_monster_brain_smash(player_type *caster_ptr, effect_monster (void)set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 10); } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } diff --git a/src/effect/effect-monster-spirit.h b/src/effect/effect-monster-spirit.h index df961f13b..3c724c062 100644 --- a/src/effect/effect-monster-spirit.h +++ b/src/effect/effect-monster-spirit.h @@ -1,8 +1,9 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_mind_blast(player_type *caster_ptr, effect_monster_type *em_ptr); -switch_result effect_monster_brain_smash(player_type *caster_ptr, effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result effect_monster_drain_mana(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_mind_blast(player_type *caster_ptr, effect_monster_type *em_ptr); +process_result effect_monster_brain_smash(player_type *caster_ptr, effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster-switcher.c b/src/effect/effect-monster-switcher.c index 222547c2b..60d7138e8 100644 --- a/src/effect/effect-monster-switcher.c +++ b/src/effect/effect-monster-switcher.c @@ -16,6 +16,7 @@ #include "effect/effect-monster-psi.h" #include "effect/effect-monster-resist-hurt.h" #include "effect/effect-monster-spirit.h" +#include "effect/effect-monster-util.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags1.h" #include "monster-race/race-flags2.h" @@ -30,14 +31,14 @@ #include "spell/spell-types.h" #include "view/display-messages.h" -switch_result effect_monster_hypodynamia(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_hypodynamia(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (monster_living(em_ptr->m_ptr->r_idx)) { em_ptr->do_time = (em_ptr->dam + 7) / 8; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) @@ -50,12 +51,12 @@ switch_result effect_monster_hypodynamia(player_type *caster_ptr, effect_monster em_ptr->note = _("には効果がなかった。", " is unaffected."); em_ptr->obvious = FALSE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } // todo リファクタリング前のコード時点で、単に耐性があるだけでもダメージ0だった. -switch_result effect_monster_death_ray(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_death_ray(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -71,7 +72,7 @@ switch_result effect_monster_death_ray(player_type *caster_ptr, effect_monster_t em_ptr->note = _("には完全な耐性がある!", " is immune."); em_ptr->obvious = FALSE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (((em_ptr->r_ptr->flags1 & RF1_UNIQUE) && @@ -84,16 +85,16 @@ switch_result effect_monster_death_ray(player_type *caster_ptr, effect_monster_t em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_kill_wall(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_kill_wall(player_type *caster_ptr, effect_monster_type *em_ptr) { if ((em_ptr->r_ptr->flags3 & (RF3_HURT_ROCK)) == 0) { em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -102,11 +103,11 @@ switch_result effect_monster_kill_wall(player_type *caster_ptr, effect_monster_t em_ptr->note = _("の皮膚がただれた!", " loses some skin!"); em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!"); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_hand_doom(effect_monster_type *em_ptr) +process_result effect_monster_hand_doom(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -114,7 +115,7 @@ switch_result effect_monster_hand_doom(effect_monster_type *em_ptr) { em_ptr->note = _("には効果がなかった。", " is unaffected."); em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if ((em_ptr->who > 0) ? ((em_ptr->caster_lev + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + 10 + randint1(20))) : @@ -130,11 +131,11 @@ switch_result effect_monster_hand_doom(effect_monster_type *em_ptr) em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_engetsu(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_engetsu(player_type *caster_ptr, effect_monster_type *em_ptr) { int effect = 0; bool done = TRUE; @@ -146,7 +147,7 @@ switch_result effect_monster_engetsu(player_type *caster_ptr, effect_monster_typ em_ptr->dam = 0; em_ptr->skipped = TRUE; if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND); - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (monster_csleep_remaining(em_ptr->m_ptr)) @@ -154,7 +155,7 @@ switch_result effect_monster_engetsu(player_type *caster_ptr, effect_monster_typ em_ptr->note = _("には効果がなかった。", " is unaffected."); em_ptr->dam = 0; em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } if (one_in_(5)) effect = 1; @@ -217,26 +218,26 @@ switch_result effect_monster_engetsu(player_type *caster_ptr, effect_monster_typ } em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_genocide(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_genocide(player_type *caster_ptr, effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; if (genocide_aux(caster_ptr, em_ptr->g_ptr->m_idx, em_ptr->dam, !em_ptr->who, (em_ptr->r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One"))) { if (em_ptr->seen_msg) msg_format(_("%sは消滅した!", "%^s disappeared!"), em_ptr->m_name); chg_virtue(caster_ptr, V_VITALITY, -1); - return SWITCH_TRUE; + return PROCESS_TRUE; } em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_photo(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result effect_monster_photo(player_type *caster_ptr, effect_monster_type *em_ptr) { if (!em_ptr->who) msg_format(_("%sを写真に撮った。", "You take a photograph of %s."), em_ptr->m_name); @@ -256,11 +257,11 @@ switch_result effect_monster_photo(player_type *caster_ptr, effect_monster_type } em_ptr->photo = em_ptr->m_ptr->r_idx; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } -switch_result effect_monster_wounds(effect_monster_type *em_ptr) +process_result effect_monster_wounds(effect_monster_type *em_ptr) { if (em_ptr->seen) em_ptr->obvious = TRUE; @@ -270,7 +271,7 @@ switch_result effect_monster_wounds(effect_monster_type *em_ptr) em_ptr->dam = 0; } - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -279,7 +280,7 @@ switch_result effect_monster_wounds(effect_monster_type *em_ptr) * @param em_ptr モンスター効果構造体への参照ポインタ * @return ここのスイッチングで終るならTRUEかFALSE、後続処理を実行するならCONTINUE */ -switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr) +process_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr) { switch (em_ptr->effect_type) { @@ -357,8 +358,8 @@ switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_typ case GF_OLD_CLONE: return effect_monster_old_clone(caster_ptr, em_ptr); case GF_STAR_HEAL: - if (effect_monster_old_clone(caster_ptr, em_ptr) == SWITCH_TRUE) - return SWITCH_CONTINUE; + if (effect_monster_old_clone(caster_ptr, em_ptr) == PROCESS_TRUE) + return PROCESS_CONTINUE; /* Fall through */ case GF_OLD_HEAL: return effect_monster_old_heal(caster_ptr, em_ptr); @@ -437,7 +438,7 @@ switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_typ case GF_CAPTURE: return effect_monster_capture(caster_ptr, em_ptr); case GF_ATTACK: - return (switch_result)do_cmd_attack(caster_ptr, em_ptr->y, em_ptr->x, em_ptr->dam); + return (process_result)do_cmd_attack(caster_ptr, em_ptr->y, em_ptr->x, em_ptr->dam); case GF_ENGETSU: return effect_monster_engetsu(caster_ptr, em_ptr); case GF_GENOCIDE: @@ -452,7 +453,7 @@ switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_typ { em_ptr->skipped = TRUE; em_ptr->dam = 0; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } } } diff --git a/src/effect/effect-monster-switcher.h b/src/effect/effect-monster-switcher.h index ab0303cea..740b36e4f 100644 --- a/src/effect/effect-monster-switcher.h +++ b/src/effect/effect-monster-switcher.h @@ -1,6 +1,7 @@ #pragma once #include "system/angband.h" -#include "effect/effect-monster-util.h" -switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr); +typedef enum process_result process_resut; +typedef struct effect_monster_type effect_monster_type; +process_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr); diff --git a/src/effect/effect-monster.c b/src/effect/effect-monster.c index a1165efeb..4a1088b59 100644 --- a/src/effect/effect-monster.c +++ b/src/effect/effect-monster.c @@ -90,7 +90,7 @@ static void decide_spell_result_description(player_type *caster_ptr, effect_mons * @param em_ptr モンスター効果構造体への参照ポインタ * @return 完全耐性ならCONTINUE、そうでないなら効果処理の結果 */ -static switch_result process_monster_perfect_resistance(player_type *caster_ptr, effect_monster_type *em_ptr) +static process_result process_monster_perfect_resistance(player_type *caster_ptr, effect_monster_type *em_ptr) { if (((em_ptr->r_ptr->flagsr & RFR_RES_ALL) == 0) || em_ptr->effect_type == GF_OLD_CLONE || @@ -109,7 +109,7 @@ static switch_result process_monster_perfect_resistance(player_type *caster_ptr, if (em_ptr->effect_type == GF_LITE_WEAK || em_ptr->effect_type == GF_KILL_WALL) em_ptr->skipped = TRUE; - return SWITCH_CONTINUE; + return PROCESS_CONTINUE; } @@ -592,8 +592,8 @@ bool affect_monster(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITI if (!is_never_effect(caster_ptr, em_ptr)) return FALSE; decide_spell_result_description(caster_ptr, em_ptr); - switch_result result = process_monster_perfect_resistance(caster_ptr, em_ptr); - if (result != SWITCH_CONTINUE) return (bool)result; + process_result result = process_monster_perfect_resistance(caster_ptr, em_ptr); + if (result != PROCESS_CONTINUE) return (bool)result; if (em_ptr->skipped) return FALSE; diff --git a/src/system/h-type.h b/src/system/h-type.h index f942df4c0..d380037d6 100644 --- a/src/system/h-type.h +++ b/src/system/h-type.h @@ -247,10 +247,10 @@ typedef uint (*func_hsh)(vptr, uint); /* A key extractor takes a thing and returns (a pointer to) some key */ typedef vptr (*func_key)(vptr); -typedef enum switch_result { - SWITCH_FALSE = 0, - SWITCH_TRUE = 1, - SWITCH_CONTINUE = 2, -} switch_result; +typedef enum process_result { + PROCESS_FALSE = 0, + PROCESS_TRUE = 1, + PROCESS_CONTINUE = 2, +} process_result; #endif -- 2.11.0