1 #include "system/angband.h"
2 #include "effect-player-util.h"
3 #include "effect/effect-player-curse.h"
4 #include "effect/effect-player-switcher.h"
5 #include "effect/effect-player-oldies.h"
6 #include "effect/effect-player-resist-hurt.h"
7 #include "effect/effect-player-spirit.h"
8 #include "mspell/monster-spell.h"
9 #include "object/object-broken.h"
10 #include "object-enchant/object-curse.h"
11 #include "player/player-damage.h"
12 #include "mind/racial-mirror-master.h"
13 #include "inventory/inventory-damage.h"
14 #include "player/player-effects.h"
15 #include "player/mimic-info-table.h"
16 #include "spell/spells-type.h"
17 #include "world/world.h"
18 #include "player/player-races-table.h"
19 #include "cmd-action/cmd-attack.h"
21 void effect_player_mana(player_type *target_ptr, effect_player_type *ep_ptr) {
22 if (target_ptr->blind)
24 _("
\96\82\96@
\82Ì
\83I
\81[
\83\89\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I", "You are hit by an aura of magic!"));
26 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
27 ep_ptr->killer, ep_ptr->monspell);
30 void effect_player_psy_spear(player_type *target_ptr,
31 effect_player_type *ep_ptr) {
32 if (target_ptr->blind)
33 msg_print(_("
\83G
\83l
\83\8b\83M
\81[
\82Ì
\89ò
\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I", "You are hit by an energy!"));
35 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_FORCE, ep_ptr->dam,
36 ep_ptr->killer, ep_ptr->monspell);
39 void effect_player_meteor(player_type *target_ptr, effect_player_type *ep_ptr) {
40 if (target_ptr->blind)
41 msg_print(_("
\89½
\82©
\82ª
\8bó
\82©
\82ç
\82 \82È
\82½
\82Ì
\93ª
\8fã
\82É
\97\8e\82¿
\82Ä
\82«
\82½
\81I",
42 "Something falls from the sky on you!"));
44 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
45 ep_ptr->killer, ep_ptr->monspell);
46 if (!target_ptr->resist_shard || one_in_(13)) {
47 if (!target_ptr->immune_fire)
48 inventory_damage(target_ptr, set_fire_destroy, 2);
49 inventory_damage(target_ptr, set_cold_destroy, 2);
53 void effect_player_icee(player_type *target_ptr, effect_player_type *ep_ptr) {
54 if (target_ptr->blind)
55 msg_print(_("
\89½
\82©
\89s
\82
\97â
\82½
\82¢
\82à
\82Ì
\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I",
56 "You are hit by something sharp and cold!"));
58 ep_ptr->get_damage = cold_dam(target_ptr, ep_ptr->dam, ep_ptr->killer,
59 ep_ptr->monspell, FALSE);
60 if (check_multishadow(target_ptr))
63 if (!target_ptr->resist_shard) {
64 (void)set_cut(target_ptr, target_ptr->cut + damroll(5, 8));
67 if (!target_ptr->resist_sound) {
68 (void)set_stun(target_ptr, target_ptr->stun + randint1(15));
71 if ((!(target_ptr->resist_cold || is_oppose_cold(target_ptr))) ||
73 if (!target_ptr->immune_cold)
74 inventory_damage(target_ptr, set_cold_destroy, 3);
78 void effect_player_death_ray(player_type *target_ptr,
79 effect_player_type *ep_ptr) {
80 if (target_ptr->blind)
81 msg_print(_("
\89½
\82©
\94ñ
\8fí
\82É
\97â
\82½
\82¢
\82à
\82Ì
\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I",
82 "You are hit by something extremely cold!"));
84 if (target_ptr->mimic_form) {
85 if (!(mimic_info[target_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING))
86 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
87 ep_ptr->killer, ep_ptr->monspell);
92 switch (target_ptr->prace) {
103 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
104 ep_ptr->killer, ep_ptr->monspell);
110 void effect_player_hand_doom(player_type *target_ptr,
111 effect_player_type *ep_ptr) {
112 if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) &&
113 !check_multishadow(target_ptr)) {
114 msg_print(_("
\82µ
\82©
\82µ
\8cø
\97Í
\82ð
\92µ
\82Ë
\95Ô
\82µ
\82½
\81I", "You resist the effects!"));
115 learn_spell(target_ptr, ep_ptr->monspell);
117 if (!check_multishadow(target_ptr)) {
118 msg_print(_("
\82 \82È
\82½
\82Í
\96½
\82ª
\94\96\82Ü
\82Á
\82Ä
\82¢
\82
\82æ
\82¤
\82É
\8a´
\82¶
\82½
\81I",
119 "You feel your life fade away!"));
120 curse_equipment(target_ptr, 40, 20);
123 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
124 ep_ptr->m_name, ep_ptr->monspell);
126 if (target_ptr->chp < 1)
133 *
\96\82\96@
\82Ì
\8cø
\89Ê
\82É
\82æ
\82Á
\82Ä
\97l
\81X
\82È
\83\81\83b
\83Z
\81[
\82ð
\8fo
\97Í
\82µ
\82½
\82è
\97^
\82¦
\82é
\83_
\83\81\81[
\83W
\82Ì
\91\9d\8c¸
\82ð
\8ds
\82Á
\82½
\82è
\82·
\82é
134 * @param target_ptr
\83v
\83\8c\81[
\83\84\81[
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
135 * @param em_ptr
\83v
\83\8c\81[
\83\84\81[
\8cø
\89Ê
\8d\
\91¢
\91Ì
\82Ö
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
138 void switch_effects_player(player_type *target_ptr,
139 effect_player_type *ep_ptr) {
140 switch (ep_ptr->effect_type) {
142 effect_player_elements(target_ptr, ep_ptr,
143 _("
\8e_
\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I", "You are hit by acid!"),
147 effect_player_elements(target_ptr, ep_ptr,
148 _("
\89Î
\89\8a\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I", "You are hit by fire!"),
152 effect_player_elements(target_ptr, ep_ptr,
153 _("
\97â
\8bC
\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I", "You are hit by cold!"),
157 effect_player_elements(target_ptr, ep_ptr,
158 _("
\93d
\8c\82\82Å
\8dU
\8c\82\82³
\82ê
\82½
\81I", "You are hit by lightning!"),
162 effect_player_poison(target_ptr, ep_ptr);
165 effect_player_nuke(target_ptr, ep_ptr);
168 effect_player_missile(target_ptr, ep_ptr);
171 effect_player_holy_fire(target_ptr, ep_ptr);
174 effect_player_hell_fire(target_ptr, ep_ptr);
177 effect_player_arrow(target_ptr, ep_ptr);
180 effect_player_plasma(target_ptr, ep_ptr);
183 effect_player_nether(target_ptr, ep_ptr);
186 effect_player_water(target_ptr, ep_ptr);
189 effect_player_chaos(target_ptr, ep_ptr);
192 effect_player_shards(target_ptr, ep_ptr);
195 effect_player_sound(target_ptr, ep_ptr);
198 effect_player_confusion(target_ptr, ep_ptr);
201 effect_player_disenchant(target_ptr, ep_ptr);
204 effect_player_nexus(target_ptr, ep_ptr);
207 effect_player_force(target_ptr, ep_ptr);
210 effect_player_rocket(target_ptr, ep_ptr);
213 effect_player_inertial(target_ptr, ep_ptr);
216 effect_player_lite(target_ptr, ep_ptr);
219 effect_player_dark(target_ptr, ep_ptr);
222 effect_player_time(target_ptr, ep_ptr);
225 effect_player_gravity(target_ptr, ep_ptr);
227 case GF_DISINTEGRATE:
228 effect_player_disintegration(target_ptr, ep_ptr);
231 effect_player_old_heal(target_ptr, ep_ptr);
234 effect_player_old_speed(target_ptr, ep_ptr);
237 effect_player_old_slow(target_ptr);
240 effect_player_old_sleep(target_ptr, ep_ptr);
245 effect_player_mana(target_ptr, ep_ptr);
248 effect_player_psy_spear(target_ptr, ep_ptr);
251 effect_player_meteor(target_ptr, ep_ptr);
254 effect_player_icee(target_ptr, ep_ptr);
257 effect_player_death_ray(target_ptr, ep_ptr);
260 effect_player_drain_mana(target_ptr, ep_ptr);
263 effect_player_mind_blast(target_ptr, ep_ptr);
266 effect_player_brain_smash(target_ptr, ep_ptr);
269 effect_player_curse_1(target_ptr, ep_ptr);
272 effect_player_curse_2(target_ptr, ep_ptr);
275 effect_player_curse_3(target_ptr, ep_ptr);
278 effect_player_curse_4(target_ptr, ep_ptr);
281 effect_player_hand_doom(target_ptr, ep_ptr);