}
dam = damroll(7, 7);
- if (randint0(100 + rlev/2) < (MAX(5, p_ptr->skill_sav)))
- {
-#ifdef JP
-msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_print("You resist the effects!");
-#endif
- learn_spell(MS_MIND_BLAST);
- }
- else
- {
-#ifdef JP
-msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
-#else
- msg_print("Your mind is blasted by psyonic energy.");
-#endif
-
- if (!p_ptr->resist_conf)
- {
- (void)set_confused(p_ptr->confused + randint0(4) + 4);
- }
-
- if (!p_ptr->resist_chaos && one_in_(3))
- {
- (void)set_image(p_ptr->image + randint0(250) + 150);
- }
-
- p_ptr->csp -= 50;
- if (p_ptr->csp < 0)
- {
- p_ptr->csp = 0;
- p_ptr->csp_frac = 0;
- }
- p_ptr->redraw |= PR_MANA;
-
- take_hit(DAMAGE_ATTACK, dam, ddesc, MS_MIND_BLAST);
- }
+ breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, learnable);
break;
}
}
dam = damroll(12, 12);
- if (randint0(100 + rlev/2) < (MAX(5, p_ptr->skill_sav)))
- {
-#ifdef JP
-msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_print("You resist the effects!");
-#endif
- learn_spell(MS_BRAIN_SMASH);
- }
- else
- {
-#ifdef JP
-msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
-#else
- msg_print("Your mind is blasted by psionic energy.");
-#endif
-
- p_ptr->csp -= 100;
- if (p_ptr->csp < 0)
- {
- p_ptr->csp = 0;
- p_ptr->csp_frac = 0;
- }
- p_ptr->redraw |= PR_MANA;
-
- take_hit(DAMAGE_ATTACK, dam, ddesc, MS_BRAIN_SMASH);
- if (!p_ptr->resist_blind)
- {
- (void)set_blind(p_ptr->blind + 8 + randint0(8));
- }
- if (!p_ptr->resist_conf)
- {
- (void)set_confused(p_ptr->confused + randint0(4) + 4);
- }
- if (!p_ptr->free_act)
- {
- (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
- }
- (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
-
- while (randint0(100 + rlev/2) > (MAX(5, p_ptr->skill_sav)))
- (void)do_dec_stat(A_INT);
- while (randint0(100 + rlev/2) > (MAX(5, p_ptr->skill_sav)))
- (void)do_dec_stat(A_WIS);
-
- if (!p_ptr->resist_chaos)
- {
- (void)set_image(p_ptr->image + randint0(250) + 150);
- }
- }
+ breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, learnable);
break;
}
#endif
dam = damroll(3, 8);
- if (randint0(100 + rlev/2) < p_ptr->skill_sav)
- {
-#ifdef JP
-msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_print("You resist the effects!");
-#endif
- learn_spell(MS_CAUSE_1);
- }
- else
- {
- curse_equipment(15, 0);
- take_hit(DAMAGE_ATTACK, dam, ddesc, MS_CAUSE_1);
- }
+ breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, learnable);
break;
}
#endif
dam = damroll(8, 8);
- if (randint0(100 + rlev/2) < p_ptr->skill_sav)
- {
-#ifdef JP
-msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_print("You resist the effects!");
-#endif
- learn_spell(MS_CAUSE_2);
- }
- else
- {
- curse_equipment(25, MIN(rlev/2-15, 5));
- take_hit(DAMAGE_ATTACK, dam, ddesc, MS_CAUSE_2);
- }
+ breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, learnable);
break;
}
#endif
dam = damroll(10, 15);
- if (randint0(100 + rlev/2) < p_ptr->skill_sav)
- {
-#ifdef JP
-msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_print("You resist the effects!");
-#endif
- learn_spell(MS_CAUSE_3);
- }
- else
- {
- curse_equipment(33, MIN(rlev/2-15, 15));
- take_hit(DAMAGE_ATTACK, dam, ddesc, MS_CAUSE_3);
- }
+ breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, learnable);
break;
}
#endif
dam = damroll(15, 15);
- if ((randint0(100 + rlev/2) < p_ptr->skill_sav) && !(m_ptr->r_idx == MON_KENSHIROU))
- {
-#ifdef JP
-msg_print("¤·¤«¤·È빦¤òÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_print("You resist the effects!");
-#endif
- learn_spell(MS_CAUSE_4);
- }
- else
- {
- take_hit(DAMAGE_ATTACK, dam, ddesc, MS_CAUSE_4);
- (void)set_cut(p_ptr->cut + damroll(10, 10));
- }
+ breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, learnable);
break;
}
#else
msg_format("%^s invokes the Hand of Doom!", m_name);
#endif
-
- if (randint0(100 + rlev/2) < p_ptr->skill_sav)
- {
-#ifdef JP
-msg_format("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
-#else
- msg_format("You resist the effects!");
-#endif
- learn_spell(MS_HAND_DOOM);
-
- }
- else
- {
- int dummy = (((s32b) ((40 + randint1(20)) * (p_ptr->chp))) / 100);
-#ifdef JP
-msg_print("¤¢¤Ê¤¿¤ÏÌ¿¤¬Çö¤Þ¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë´¶¤¸¤¿¡ª");
-#else
- msg_print("Your feel your life fade away!");
-#endif
-
- take_hit(DAMAGE_ATTACK, dummy, m_name, MS_HAND_DOOM);
- curse_equipment(40, 20);
-
- if (p_ptr->chp < 1) p_ptr->chp = 1;
- }
+ dam = (((s32b) ((40 + randint1(20)) * (p_ptr->chp))) / 100);
+ breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, learnable);
break;
}
else
{
int dam = damroll(4, 8);
+ int get_damage = 0;
#ifdef JP
msg_format("%^s¤¬¤¢¤Ê¤¿¤òÄϤó¤Ç¶õÃ椫¤éÅꤲÍ¤¿¡£", m_name);
#else
dam += damroll(6, 8);
}
- take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
+ /* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
+ -- henkma
+ */
+ get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
+ if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
+ {
+#ifdef JP
+ msg_format("¹¶·â¤¬%s¼«¿È¤ò½ý¤Ä¤±¤¿¡ª", m_name);
+#else
+ char m_name_self[80];
+
+ /* hisself */
+ monster_desc(m_name_self, m_ptr, 0x23);
+
+ msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
+#endif
+ project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL | PROJECT_NO_REF, -1);
+ set_tim_eyeeye(p_ptr->tim_eyeeye-5, TRUE);
+ }
}
break;
}
static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int typ, int a_rad, int monspell)
{
int k = 0;
+ int rlev;
/* Hack -- assume obvious */
bool obvious = TRUE;
/* Get the source monster */
m_ptr = &m_list[who];
+ /* Extract the monster level */
+ rlev = (((&r_info[m_ptr->r_idx])->level >= 1) ? (&r_info[m_ptr->r_idx])->level : 1);
/* Get the monster name */
monster_desc(m_name, m_ptr, 0);
break;
}
+ /* Mind blast */
+ case GF_MIND_BLAST:
+ {
+ if (randint0(100 + rlev/2) < (MAX(5, p_ptr->skill_sav)))
+ {
+#ifdef JP
+msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_print("You resist the effects!");
+#endif
+ learn_spell(MS_MIND_BLAST);
+ }
+ else
+ {
+#ifdef JP
+msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
+#else
+ msg_print("Your mind is blasted by psyonic energy.");
+#endif
+
+ if (!p_ptr->resist_conf)
+ {
+ (void)set_confused(p_ptr->confused + randint0(4) + 4);
+ }
+
+ if (!p_ptr->resist_chaos && one_in_(3))
+ {
+ (void)set_image(p_ptr->image + randint0(250) + 150);
+ }
+
+ p_ptr->csp -= 50;
+ if (p_ptr->csp < 0)
+ {
+ p_ptr->csp = 0;
+ p_ptr->csp_frac = 0;
+ }
+ p_ptr->redraw |= PR_MANA;
+
+ get_damage = take_hit(DAMAGE_ATTACK, dam, killer, MS_MIND_BLAST);
+ }
+ break;
+ }
+ /* Brain smash */
+ case GF_BRAIN_SMASH:
+ {
+ if (randint0(100 + rlev/2) < (MAX(5, p_ptr->skill_sav)))
+ {
+#ifdef JP
+msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_print("You resist the effects!");
+#endif
+ learn_spell(MS_BRAIN_SMASH);
+ }
+ else
+ {
+#ifdef JP
+msg_print("ÎîŪ¥¨¥Í¥ë¥®¡¼¤ÇÀº¿À¤¬¹¶·â¤µ¤ì¤¿¡£");
+#else
+ msg_print("Your mind is blasted by psionic energy.");
+#endif
+
+ p_ptr->csp -= 100;
+ if (p_ptr->csp < 0)
+ {
+ p_ptr->csp = 0;
+ p_ptr->csp_frac = 0;
+ }
+ p_ptr->redraw |= PR_MANA;
+
+ get_damage = take_hit(DAMAGE_ATTACK, dam, killer, MS_BRAIN_SMASH);
+ if (!p_ptr->resist_blind)
+ {
+ (void)set_blind(p_ptr->blind + 8 + randint0(8));
+ }
+ if (!p_ptr->resist_conf)
+ {
+ (void)set_confused(p_ptr->confused + randint0(4) + 4);
+ }
+ if (!p_ptr->free_act)
+ {
+ (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
+ }
+ (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
+
+ while (randint0(100 + rlev/2) > (MAX(5, p_ptr->skill_sav)))
+ (void)do_dec_stat(A_INT);
+ while (randint0(100 + rlev/2) > (MAX(5, p_ptr->skill_sav)))
+ (void)do_dec_stat(A_WIS);
+
+ if (!p_ptr->resist_chaos)
+ {
+ (void)set_image(p_ptr->image + randint0(250) + 150);
+ }
+ }
+ break;
+ }
+ /* cause 1 */
+ case GF_CAUSE_1:
+ {
+ if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+ {
+#ifdef JP
+msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_print("You resist the effects!");
+#endif
+ learn_spell(MS_CAUSE_1);
+ }
+ else
+ {
+ curse_equipment(15, 0);
+ get_damage = take_hit(DAMAGE_ATTACK, dam, killer, MS_CAUSE_1);
+ }
+ break;
+ }
+ /* cause 2 */
+ case GF_CAUSE_2:
+ {
+ if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+ {
+#ifdef JP
+msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_print("You resist the effects!");
+#endif
+ learn_spell(MS_CAUSE_2);
+ }
+ else
+ {
+ curse_equipment(25, MIN(rlev/2-15, 5));
+ get_damage = take_hit(DAMAGE_ATTACK, dam, killer, MS_CAUSE_2);
+ }
+ break;
+ }
+ /* cause 3 */
+ case GF_CAUSE_3:
+ {
+ if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+ {
+#ifdef JP
+msg_print("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_print("You resist the effects!");
+#endif
+ learn_spell(MS_CAUSE_3);
+ }
+ else
+ {
+ curse_equipment(33, MIN(rlev/2-15, 15));
+ get_damage = take_hit(DAMAGE_ATTACK, dam, killer, MS_CAUSE_3);
+ }
+ break;
+ }
+ /* cause 4 */
+ case GF_CAUSE_4:
+ {
+ if ((randint0(100 + rlev/2) < p_ptr->skill_sav) && !(m_ptr->r_idx == MON_KENSHIROU))
+ {
+#ifdef JP
+msg_print("¤·¤«¤·È빦¤òÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_print("You resist the effects!");
+#endif
+ learn_spell(MS_CAUSE_4);
+ }
+ else
+ {
+ get_damage = take_hit(DAMAGE_ATTACK, dam, killer, MS_CAUSE_4);
+ (void)set_cut(p_ptr->cut + damroll(10, 10));
+ }
+ break;
+ }
+ /* Hand of Doom */
+ case GF_HAND_DOOM:
+ {
+ if (randint0(100 + rlev/2) < p_ptr->skill_sav)
+ {
+#ifdef JP
+msg_format("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª");
+#else
+ msg_format("You resist the effects!");
+#endif
+ learn_spell(MS_HAND_DOOM);
+
+ }
+ else
+ {
+#ifdef JP
+msg_print("¤¢¤Ê¤¿¤ÏÌ¿¤¬Çö¤Þ¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë´¶¤¸¤¿¡ª");
+#else
+ msg_print("Your feel your life fade away!");
+#endif
+
+ get_damage = take_hit(DAMAGE_ATTACK, dam, m_name, MS_HAND_DOOM);
+ curse_equipment(40, 20);
+
+ if (p_ptr->chp < 1) p_ptr->chp = 1;
+ }
+ break;
+ }
/* Default */
default: