OSDN Git Service

[Refactor] #41493 Removed art-definition/
[hengband/hengband.git] / src / core / status-reseter.c
1 #include "core/status-reseter.h"
2 #include "core/speed-table.h"
3 #include "monster/monster-status-setter.h"
4 #include "player/attack-defense-types.h"
5 #include "player/player-race.h"
6
7 /*!
8  * @brief プレイヤーの全ての時限効果をリセットする。 / reset timed flags
9  * @return なし
10  */
11 void reset_tim_flags(player_type *creature_ptr)
12 {
13     creature_ptr->fast = 0; /* Timed -- Fast */
14     creature_ptr->lightspeed = 0;
15     creature_ptr->slow = 0; /* Timed -- Slow */
16     creature_ptr->blind = 0; /* Timed -- Blindness */
17     creature_ptr->paralyzed = 0; /* Timed -- Paralysis */
18     creature_ptr->confused = 0; /* Timed -- Confusion */
19     creature_ptr->afraid = 0; /* Timed -- Fear */
20     creature_ptr->image = 0; /* Timed -- Hallucination */
21     creature_ptr->poisoned = 0; /* Timed -- Poisoned */
22     creature_ptr->cut = 0; /* Timed -- Cut */
23     creature_ptr->stun = 0; /* Timed -- Stun */
24
25     creature_ptr->protevil = 0; /* Timed -- Protection */
26     creature_ptr->invuln = 0; /* Timed -- Invulnerable */
27     creature_ptr->ult_res = 0;
28     creature_ptr->hero = 0; /* Timed -- Heroism */
29     creature_ptr->shero = 0; /* Timed -- Super Heroism */
30     creature_ptr->shield = 0; /* Timed -- Shield Spell */
31     creature_ptr->blessed = 0; /* Timed -- Blessed */
32     creature_ptr->tim_invis = 0; /* Timed -- Invisibility */
33     creature_ptr->tim_infra = 0; /* Timed -- Infra Vision */
34     creature_ptr->tim_regen = 0; /* Timed -- Regeneration */
35     creature_ptr->tim_stealth = 0; /* Timed -- Stealth */
36     creature_ptr->tim_esp = 0;
37     creature_ptr->wraith_form = 0; /* Timed -- Wraith Form */
38     creature_ptr->tim_levitation = 0;
39     creature_ptr->tim_sh_touki = 0;
40     creature_ptr->tim_sh_fire = 0;
41     creature_ptr->tim_sh_holy = 0;
42     creature_ptr->tim_eyeeye = 0;
43     creature_ptr->magicdef = 0;
44     creature_ptr->resist_magic = 0;
45     creature_ptr->tsuyoshi = 0;
46     creature_ptr->tim_pass_wall = 0;
47     creature_ptr->tim_res_nether = 0;
48     creature_ptr->tim_res_time = 0;
49     creature_ptr->tim_mimic = 0;
50     creature_ptr->mimic_form = 0;
51     creature_ptr->tim_reflect = 0;
52     creature_ptr->multishadow = 0;
53     creature_ptr->dustrobe = 0;
54     creature_ptr->action = ACTION_NONE;
55
56     creature_ptr->oppose_acid = 0; /* Timed -- oppose acid */
57     creature_ptr->oppose_elec = 0; /* Timed -- oppose lightning */
58     creature_ptr->oppose_fire = 0; /* Timed -- oppose heat */
59     creature_ptr->oppose_cold = 0; /* Timed -- oppose cold */
60     creature_ptr->oppose_pois = 0; /* Timed -- oppose poison */
61
62     creature_ptr->word_recall = 0;
63     creature_ptr->alter_reality = 0;
64     creature_ptr->sutemi = FALSE;
65     creature_ptr->counter = FALSE;
66     creature_ptr->ele_attack = 0;
67     creature_ptr->ele_immune = 0;
68     creature_ptr->special_attack = 0L;
69     creature_ptr->special_defense = 0L;
70
71     while (creature_ptr->energy_need < 0)
72         creature_ptr->energy_need += ENERGY_NEED();
73
74     creature_ptr->timewalk = FALSE;
75
76     if (is_specific_player_race(creature_ptr, RACE_BALROG) && (creature_ptr->lev > 44))
77         creature_ptr->oppose_fire = 1;
78     if ((creature_ptr->pclass == CLASS_NINJA) && (creature_ptr->lev > 44))
79         creature_ptr->oppose_pois = 1;
80     if (creature_ptr->pclass == CLASS_BERSERKER)
81         creature_ptr->shero = 1;
82
83     if (creature_ptr->riding) {
84         (void)set_monster_fast(creature_ptr, creature_ptr->riding, 0);
85         (void)set_monster_slow(creature_ptr, creature_ptr->riding, 0);
86         (void)set_monster_invulner(creature_ptr, creature_ptr->riding, 0, FALSE);
87     }
88
89     if (creature_ptr->pclass == CLASS_BARD) {
90         SINGING_SONG_EFFECT(creature_ptr) = 0;
91         SINGING_SONG_ID(creature_ptr) = 0;
92     }
93 }