1 #include "temporary-resistances.h"
3 #include "realm-song.h"
6 * @brief プレイヤーの一時的魔法効果による耐性を返す
7 * Prints ratings on certain abilities
8 * @param creature_ptr プレーヤーへの参照ポインタ
9 * @param flgs フラグを保管する配列
12 * xtra1.c周りと多重実装になっているのを何とかする
14 void tim_player_flags(player_type *creature_ptr, BIT_FLAGS flgs[TR_FLAG_SIZE])
16 for (int i = 0; i < TR_FLAG_SIZE; i++)
19 if (IS_HERO(creature_ptr) || creature_ptr->shero)
20 add_flag(flgs, TR_RES_FEAR);
21 if (creature_ptr->tim_invis)
22 add_flag(flgs, TR_SEE_INVIS);
23 if (creature_ptr->tim_regen)
24 add_flag(flgs, TR_REGEN);
25 if (is_time_limit_esp(creature_ptr))
26 add_flag(flgs, TR_TELEPATHY);
27 if (IS_FAST(creature_ptr) || creature_ptr->slow)
28 add_flag(flgs, TR_SPEED);
30 if (is_oppose_acid(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_ACID) && !(PRACE_IS_(creature_ptr, RACE_YEEK) && (creature_ptr->lev > 19)))
31 add_flag(flgs, TR_RES_ACID);
32 if (is_oppose_elec(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_ELEC))
33 add_flag(flgs, TR_RES_ELEC);
34 if (is_oppose_fire(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_FIRE))
35 add_flag(flgs, TR_RES_FIRE);
36 if (is_oppose_cold(creature_ptr) && !(creature_ptr->special_defense & DEFENSE_COLD))
37 add_flag(flgs, TR_RES_COLD);
38 if (is_oppose_pois(creature_ptr))
39 add_flag(flgs, TR_RES_POIS);
41 if (creature_ptr->special_attack & ATTACK_ACID)
42 add_flag(flgs, TR_BRAND_ACID);
43 if (creature_ptr->special_attack & ATTACK_ELEC)
44 add_flag(flgs, TR_BRAND_ELEC);
45 if (creature_ptr->special_attack & ATTACK_FIRE)
46 add_flag(flgs, TR_BRAND_FIRE);
47 if (creature_ptr->special_attack & ATTACK_COLD)
48 add_flag(flgs, TR_BRAND_COLD);
49 if (creature_ptr->special_attack & ATTACK_POIS)
50 add_flag(flgs, TR_BRAND_POIS);
51 if (creature_ptr->special_defense & DEFENSE_ACID)
52 add_flag(flgs, TR_IM_ACID);
53 if (creature_ptr->special_defense & DEFENSE_ELEC)
54 add_flag(flgs, TR_IM_ELEC);
55 if (creature_ptr->special_defense & DEFENSE_FIRE)
56 add_flag(flgs, TR_IM_FIRE);
57 if (creature_ptr->special_defense & DEFENSE_COLD)
58 add_flag(flgs, TR_IM_COLD);
59 if (creature_ptr->wraith_form)
60 add_flag(flgs, TR_REFLECT);
61 if (creature_ptr->tim_reflect)
62 add_flag(flgs, TR_REFLECT);
64 if (creature_ptr->magicdef)
66 add_flag(flgs, TR_RES_BLIND);
67 add_flag(flgs, TR_RES_CONF);
68 add_flag(flgs, TR_REFLECT);
69 add_flag(flgs, TR_FREE_ACT);
70 add_flag(flgs, TR_LEVITATION);
73 if (creature_ptr->tim_res_nether) add_flag(flgs, TR_RES_NETHER);
75 if (creature_ptr->tim_sh_fire) add_flag(flgs, TR_SH_FIRE);
77 if (creature_ptr->ult_res)
79 add_flag(flgs, TR_RES_FEAR);
80 add_flag(flgs, TR_RES_LITE);
81 add_flag(flgs, TR_RES_DARK);
82 add_flag(flgs, TR_RES_BLIND);
83 add_flag(flgs, TR_RES_CONF);
84 add_flag(flgs, TR_RES_SOUND);
85 add_flag(flgs, TR_RES_SHARDS);
86 add_flag(flgs, TR_RES_NETHER);
87 add_flag(flgs, TR_RES_NEXUS);
88 add_flag(flgs, TR_RES_CHAOS);
89 add_flag(flgs, TR_RES_DISEN);
90 add_flag(flgs, TR_REFLECT);
91 add_flag(flgs, TR_HOLD_EXP);
92 add_flag(flgs, TR_FREE_ACT);
93 add_flag(flgs, TR_SH_FIRE);
94 add_flag(flgs, TR_SH_ELEC);
95 add_flag(flgs, TR_SH_COLD);
96 add_flag(flgs, TR_LEVITATION);
97 add_flag(flgs, TR_LITE_1);
98 add_flag(flgs, TR_SEE_INVIS);
99 add_flag(flgs, TR_TELEPATHY);
100 add_flag(flgs, TR_SLOW_DIGEST);
101 add_flag(flgs, TR_REGEN);
102 add_flag(flgs, TR_SUST_STR);
103 add_flag(flgs, TR_SUST_INT);
104 add_flag(flgs, TR_SUST_WIS);
105 add_flag(flgs, TR_SUST_DEX);
106 add_flag(flgs, TR_SUST_CON);
107 add_flag(flgs, TR_SUST_CHR);
110 if (creature_ptr->realm1 != REALM_HEX) return;
112 if (hex_spelling(creature_ptr, HEX_DEMON_AURA))
114 add_flag(flgs, TR_SH_FIRE);
115 add_flag(flgs, TR_REGEN);
118 if (hex_spelling(creature_ptr, HEX_ICE_ARMOR)) add_flag(flgs, TR_SH_COLD);
119 if (hex_spelling(creature_ptr, HEX_SHOCK_CLOAK)) add_flag(flgs, TR_SH_ELEC);