extern bool dispel_check(int m_idx);
extern bool spell_is_inate(u16b spell);
extern bool make_attack_spell(int m_idx);
-extern void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable);
+extern void beam(int m_idx, int typ, int dam_hp, int monspell);
/* mspells2.c */
extern void get_project_point(int sy, int sx, int *ty, int *tx, int flg);
/* mane.c */
extern bool do_cmd_mane(bool baigaesi);
-extern void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable);
-extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable);
+extern void bolt(int m_idx, int typ, int dam_hp, int monspell);
+extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell);
/* mspells2.c */
-extern void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable);
+extern void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell);
/* mspells3.c */
extern bool do_cmd_cast_learned(void);
extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
/* mspells4.c */
+extern bool spell_learnable(int m_idx);
/* spells monster to player */
extern void MP_spell_RF4_SHRIEK(int m_idx);
n = damroll(r_ptr->reinforce_dd[i], r_ptr->reinforce_ds[i]);
for(j = 0; j < n; j++)
{
- int nx, ny, z, d = 7;
+ int nx, ny, d = 7;
scatter(&ny, &nx, y, x, d, 0);
(void)place_monster_one(place_monster_m_idx, ny, nx, r_ptr->reinforce_id[i], mode);
}
* @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤«Èݤ«
* @return ¤Ê¤·
*/
-void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
+void bolt(int m_idx, int typ, int dam_hp, int monspell)
{
- int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
+ int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
+ bool learnable = spell_learnable(m_idx);
if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
/* Target the player with a bolt attack */
* @param typ ¸ú²Ì°ÀID
* @param dam_hp °ÒÎÏ
* @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤«Èݤ«
* @return ¤Ê¤·
*/
-void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
+void beam(int m_idx, int typ, int dam_hp, int monspell)
{
- int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
+ int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
+ bool learnable = spell_learnable(m_idx);
/* Target the player with a bolt attack */
(void)project(m_idx, 0, py, px, dam_hp, typ, flg, (learnable ? monspell : -1));
* @param rad Ⱦ·Â
* @param breath TRUE¤Ê¤é¤Ð¥Ö¥ì¥¹½èÍý¡¢FALSE¤Ê¤é¤Ð¥Ü¡¼¥ë½èÍý
* @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤«Èݤ«
* @return ¤Ê¤·
*/
-void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
+void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell)
{
int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ bool learnable = spell_learnable(m_idx);
/* Determine the radius of the blast */
if ((rad < 1) && breath) rad = (r_ptr->flags2 & (RF2_POWERFUL)) ? 3 : 2;
/* Extract the "see-able-ness" */
bool seen = (!blind && m_ptr->ml);
-
bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
- bool learnable = (seen && maneable && !world_monster);
/* Check "projectable" */
bool direct;
* @param rad Ⱦ·Â
* @param breath TRUE¤Ê¤é¤Ð¥Ö¥ì¥¹ / FALSE¤Ê¤é¤Ð¥Ü¡¼¥ë
* @param monspell Æü칶·â¤ÎID
- * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤ÊÁ°Äó¤¬Â·¤Ã¤Æ¤¤¤ë¤Ê¤é¤ÐTRUE
* @return ¤Ê¤·
* @details
* Pass over any monsters that may be in the way
* Affect grids, objects, monsters, and the player
*/
-void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
+void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell)
{
int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+ bool learnable = spell_learnable(m_idx);
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
* Stop if we hit a monster
* Affect monsters and the player
*/
-static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
+static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell)
{
int flg = PROJECT_STOP | PROJECT_KILL;
+ bool learnable = spell_learnable(m_idx);
+
if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
(void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
}
* @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤ÊÁ°Äó¤¬Â·¤Ã¤Æ¤¤¤ë¤Ê¤é¤ÐTRUE
* @return ¤Ê¤·
*/
-static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
+static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell)
{
int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
+ bool learnable = spell_learnable(m_idx);
(void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
}
bool see_m = is_seen(m_ptr);
bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
- bool learnable = (m_ptr->ml && maneable && !world_monster);
bool see_t;
bool see_either;
bool known;
}
dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
- monst_bolt_monst(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_ARROW, dam, MS_SHOOT);
break;
dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_ACID,
- dam,0, TRUE, MS_BR_ACID, learnable);
+ dam,0, TRUE, MS_BR_ACID);
break;
dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_ELEC,
- dam,0, TRUE, MS_BR_ELEC, learnable);
+ dam,0, TRUE, MS_BR_ELEC);
break;
dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_FIRE,
- dam,0, TRUE, MS_BR_FIRE, learnable);
+ dam,0, TRUE, MS_BR_FIRE);
break;
dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_COLD,
- dam,0, TRUE, MS_BR_COLD, learnable);
+ dam,0, TRUE, MS_BR_COLD);
break;
/* RF4_BR_POIS */
dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_POIS,
- dam,0, TRUE, MS_BR_POIS, learnable);
+ dam,0, TRUE, MS_BR_POIS);
break;
dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_NETHER,
- dam,0, TRUE, MS_BR_NETHER, learnable);
+ dam,0, TRUE, MS_BR_NETHER);
break;
dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_LITE,
- dam,0, TRUE, MS_BR_LITE, learnable);
+ dam,0, TRUE, MS_BR_LITE);
break;
dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_DARK,
- dam,0, TRUE, MS_BR_DARK, learnable);
+ dam,0, TRUE, MS_BR_DARK);
break;
dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_CONFUSION,
- dam,0, TRUE, MS_BR_CONF, learnable);
+ dam,0, TRUE, MS_BR_CONF);
break;
dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_SOUND,
- dam,0, TRUE, MS_BR_SOUND, learnable);
+ dam,0, TRUE, MS_BR_SOUND);
break;
dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_CHAOS,
- dam,0, TRUE, MS_BR_CHAOS, learnable);
+ dam,0, TRUE, MS_BR_CHAOS);
break;
dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_DISENCHANT,
- dam,0, TRUE, MS_BR_DISEN, learnable);
+ dam,0, TRUE, MS_BR_DISEN);
break;
dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_NEXUS,
- dam,0, TRUE, MS_BR_NEXUS, learnable);
+ dam,0, TRUE, MS_BR_NEXUS);
break;
dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_TIME,
- dam,0, TRUE, MS_BR_TIME, learnable);
+ dam,0, TRUE, MS_BR_TIME);
break;
dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_INERTIA,
- dam,0, TRUE, MS_BR_INERTIA, learnable);
+ dam,0, TRUE, MS_BR_INERTIA);
break;
dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_GRAVITY,
- dam,0, TRUE, MS_BR_GRAVITY, learnable);
+ dam,0, TRUE, MS_BR_GRAVITY);
break;
dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_SHARDS,
- dam,0, TRUE, MS_BR_SHARDS, learnable);
+ dam,0, TRUE, MS_BR_SHARDS);
break;
dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_PLASMA,
- dam,0, TRUE, MS_BR_PLASMA, learnable);
+ dam,0, TRUE, MS_BR_PLASMA);
break;
dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_FORCE,
- dam,0, TRUE, MS_BR_FORCE, learnable);
+ dam,0, TRUE, MS_BR_FORCE);
break;
/* RF4_BR_MANA */
dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_MANA,
- dam,0, TRUE, MS_BR_MANA, learnable);
+ dam,0, TRUE, MS_BR_MANA);
break;
dam = (rlev + damroll(10, 6));
monst_breath_monst(m_idx, y, x, GF_NUKE,
- dam, 2, FALSE, MS_BALL_NUKE, learnable);
+ dam, 2, FALSE, MS_BALL_NUKE);
break;
dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
monst_breath_monst(m_idx, y, x, GF_NUKE,
- dam,0, TRUE, MS_BR_NUKE, learnable);
+ dam,0, TRUE, MS_BR_NUKE);
break;
/* RF4_BA_CHAO */
dam = (rlev * 2) + damroll(10, 10);
monst_breath_monst(m_idx, y, x, GF_CHAOS,
- dam, 4, FALSE, MS_BALL_CHAOS, learnable);
+ dam, 4, FALSE, MS_BALL_CHAOS);
break;
dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
monst_breath_monst(m_idx, y, x, GF_DISINTEGRATE,
- dam,0, TRUE, MS_BR_DISI, learnable);
+ dam,0, TRUE, MS_BR_DISI);
break;
/* RF5_BA_ACID */
rad = 2;
dam = (randint1(rlev * 3) + 15);
}
- monst_breath_monst(m_idx, y, x, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, learnable);
+ monst_breath_monst(m_idx, y, x, GF_ACID, dam, rad, FALSE, MS_BALL_ACID);
break;
/* RF5_BA_ELEC */
rad = 2;
dam = (randint1(rlev * 3 / 2) + 8);
}
- monst_breath_monst(m_idx, y, x, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, learnable);
+ monst_breath_monst(m_idx, y, x, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC);
break;
/* RF5_BA_FIRE */
rad = 2;
dam = (randint1(rlev * 7 / 2) + 10);
}
- monst_breath_monst(m_idx, y, x, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, learnable);
+ monst_breath_monst(m_idx, y, x, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE);
break;
/* RF5_BA_COLD */
rad = 2;
dam = (randint1(rlev * 3 / 2) + 10);
}
- monst_breath_monst(m_idx, y, x, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, learnable);
+ monst_breath_monst(m_idx, y, x, GF_COLD, dam, rad, FALSE, MS_BALL_COLD);
break;
/* RF5_BA_POIS */
}
dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_breath_monst(m_idx, y, x, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, learnable);
+ monst_breath_monst(m_idx, y, x, GF_POIS, dam, 2, FALSE, MS_BALL_POIS);
break;
}
dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
- monst_breath_monst(m_idx, y, x, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, learnable);
+ monst_breath_monst(m_idx, y, x, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER);
break;
}
dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
- monst_breath_monst(m_idx, y, x, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, learnable);
+ monst_breath_monst(m_idx, y, x, GF_WATER, dam, 4, FALSE, MS_BALL_WATER);
break;
}
dam = (rlev * 4) + 50 + damroll(10, 10);
- monst_breath_monst(m_idx, y, x, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, learnable);
+ monst_breath_monst(m_idx, y, x, GF_MANA, dam, 4, FALSE, MS_BALL_MANA);
break;
}
dam = (rlev * 4) + 50 + damroll(10, 10);
- monst_breath_monst(m_idx, y, x, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, learnable);
+ monst_breath_monst(m_idx, y, x, GF_DARK, dam, 4, FALSE, MS_BALL_DARK);
break;
}
dam = ((randint1(rlev) / 2) + 1);
- monst_breath_monst(m_idx, y, x, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, learnable);
+ monst_breath_monst(m_idx, y, x, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA);
break;
}
dam = damroll(7, 7);
- monst_breath_monst(m_idx, y, x, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, learnable);
+ monst_breath_monst(m_idx, y, x, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST);
break;
}
dam = damroll(12, 12);
- monst_breath_monst(m_idx, y, x, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, learnable);
+ monst_breath_monst(m_idx, y, x, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH);
break;
}
dam = damroll(3, 8);
- monst_breath_monst(m_idx, y, x, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, learnable);
+ monst_breath_monst(m_idx, y, x, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1);
break;
}
dam = damroll(8, 8);
- monst_breath_monst(m_idx, y, x, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, learnable);
+ monst_breath_monst(m_idx, y, x, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2);
break;
}
dam = damroll(10, 15);
- monst_breath_monst(m_idx, y, x, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, learnable);
+ monst_breath_monst(m_idx, y, x, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3);
break;
}
dam = damroll(15, 15);
- monst_breath_monst(m_idx, y, x, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, learnable);
+ monst_breath_monst(m_idx, y, x, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4);
break;
}
dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_ACID,
- dam, MS_BOLT_ACID, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID);
break;
}
dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_ELEC,
- dam, MS_BOLT_ELEC, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC);
break;
}
dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_FIRE,
- dam, MS_BOLT_FIRE, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE);
break;
}
dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_COLD,
- dam, MS_BOLT_COLD, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD);
break;
}
dam = (rlev * 4) + 50 + damroll(10, 10);
- monst_breath_monst(m_idx, y, x, GF_LITE, dam, 4, FALSE, MS_STARBURST, learnable);
+ monst_breath_monst(m_idx, y, x, GF_LITE, dam, 4, FALSE, MS_STARBURST);
break;
}
dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
- monst_bolt_monst(m_idx, y, x, GF_NETHER,
- dam, MS_BOLT_NETHER, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER);
break;
}
dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- monst_bolt_monst(m_idx, y, x, GF_WATER,
- dam, MS_BOLT_WATER, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER);
break;
}
dam = randint1(rlev * 7 / 2) + 50;
- monst_bolt_monst(m_idx, y, x, GF_MANA,
- dam, MS_BOLT_MANA, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA);
break;
}
dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- monst_bolt_monst(m_idx, y, x, GF_PLASMA,
- dam, MS_BOLT_PLASMA, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA);
break;
}
dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- monst_bolt_monst(m_idx, y, x, GF_ICE,
- dam, MS_BOLT_ICE, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE);
break;
}
dam = damroll(2, 6) + (rlev / 3);
- monst_bolt_monst(m_idx, y, x, GF_MISSILE,
- dam, MS_MAGIC_MISSILE, learnable);
+ monst_bolt_monst(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE);
break;
}
dam = 20; /* Dummy power */
- monst_breath_monst(m_idx, y, x, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, learnable);
+ monst_breath_monst(m_idx, y, x, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM);
break;
}
dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 180) : (randint1(rlev * 3 / 2) + 120);
- monst_beam_monst(m_idx, y, x, GF_PSY_SPEAR,
- dam, MS_PSY_SPEAR, learnable);
+ monst_beam_monst(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR);
break;
/* RF6_DARKNESS */
cptr monster_name(int m_idx)
{
- char m_name[80];
+ static char m_name[80];
monster_type *m_ptr = &m_list[m_idx];
monster_desc(m_name, m_ptr, 0x00);
return m_name;
dam = (hp / 4) > 800 ? 800 : (hp / 4);
if (SPELL_TYPE == SPELL_MON_TO_PLAYER)
{
- breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, learnable);
+ breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET);
update_smart_learn(m_idx, DRS_SHARD);
}
else if (SPELL_TYPE == SPELL_MON_TO_MON)
{
- monst_breath_monst(m_idx, y, x, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, learnable);
+ monst_breath_monst(m_idx, y, x, GF_ROCKET, dam, 2, FALSE, MS_ROCKET);
}
break;
}
msg_format(_("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."), m_name);
dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
- bolt(m_idx, GF_ARROW, dam, MS_SHOOT, learnable);
+ bolt(m_idx, GF_ARROW, dam, MS_SHOOT);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
}
msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
}
- breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, learnable);
+ breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type);
if (smart_learn) update_smart_learn(m_idx, drs_type);
return dam;
}
dam = ((r_ptr->flags2 & RF2_POWERFUL) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
- breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, learnable);
+ breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS);
update_smart_learn(m_idx, DRS_CHAOS);
return dam;
}
dam = (rlev + damroll(10, 6)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, learnable);
+ breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE);
update_smart_learn(m_idx, DRS_POIS);
return dam;
}
rad = 2;
dam = (randint1(rlev * 3) + 15);
}
- breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, learnable);
+ breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID);
update_smart_learn(m_idx, DRS_ACID);
return dam;
}
rad = 2;
dam = (randint1(rlev * 3 / 2) + 8);
}
- breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, learnable);
+ breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC);
update_smart_learn(m_idx, DRS_ELEC);
return dam;
}
rad = 2;
dam = (randint1(rlev * 7 / 2) + 10);
}
- breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, learnable);
+ breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE);
update_smart_learn(m_idx, DRS_FIRE);
return dam;
}
rad = 2;
dam = (randint1(rlev * 3 / 2) + 10);
}
- breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, learnable);
+ breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD);
update_smart_learn(m_idx, DRS_COLD);
return dam;
}
msg_format(_("%^s¤¬°½±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."), m_name);
dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, learnable);
+ breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS);
update_smart_learn(m_idx, DRS_POIS);
return dam;
}
msg_format(_("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."), m_name);
dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
- breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, learnable);
+ breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER);
update_smart_learn(m_idx, DRS_NETH);
return dam;
}
msg_print(_("¤¢¤Ê¤¿¤Ï±²´¬¤¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
- breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, learnable);
+ breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER);
return dam;
}
int spell_RF5_BA_MANA(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
msg_format(_("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."), m_name);
dam = (rlev * 4) + 50 + damroll(10, 10);
- breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, learnable);
+ breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA);
return dam;
}
int spell_RF5_BA_DARK(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
msg_format(_("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."), m_name);
dam = (rlev * 4) + 50 + damroll(10, 10);
- breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, learnable);
+ breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK);
update_smart_learn(m_idx, DRS_DARK);
return dam;
}
int spell_RF5_DRAIN_MANA(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
int rlev = monster_level_idx(m_idx);
int dam;
disturb(1, 1);
dam = (randint1(rlev) / 2) + 1;
- breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, learnable);
+ breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA);
update_smart_learn(m_idx, DRS_MANA);
return dam;
}
int spell_RF5_MIND_BLAST(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
monster_type *m_ptr = &m_list[m_idx];
bool seen = (!p_ptr->blind && m_ptr->ml);
msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
dam = damroll(7, 7);
- breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, learnable);
+ breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST);
return dam;
}
int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
monster_type *m_ptr = &m_list[m_idx];
bool seen = (!p_ptr->blind && m_ptr->ml);
msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¸«¤Æ¤¤¤ë¡£", "%^s looks deep into your eyes."), m_name);
dam = damroll(12, 12);
- breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, learnable);
+ breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH);
return dam;
}
int spell_RF5_CAUSE_1(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
int rlev = monster_level_idx(m_idx);
int dam;
msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses."), m_name);
dam = damroll(3, 8);
- breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, learnable);
+ breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1);
return dam;
}
int spell_RF5_CAUSE_2(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
int rlev = monster_level_idx(m_idx);
int dam;
msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly."), m_name);
dam = damroll(8, 8);
- breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, learnable);
+ breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2);
return dam;
}
int spell_RF5_CAUSE_3(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
int rlev = monster_level_idx(m_idx);
int dam;
msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!"), m_name);
dam = damroll(10, 15);
- breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, learnable);
+ breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3);
return dam;
}
int spell_RF5_CAUSE_4(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
int rlev = monster_level_idx(m_idx);
int dam;
"%^s points at you, screaming the word DIE!"), m_name);
dam = damroll(15, 15);
- breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, learnable);
+ breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4);
return dam;
}
msg_format(_("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."), m_name);
dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- bolt(m_idx, GF_ACID, dam, MS_BOLT_ACID, learnable);
+ bolt(m_idx, GF_ACID, dam, MS_BOLT_ACID);
update_smart_learn(m_idx, DRS_ACID);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
msg_format(_("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."), m_name);
dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- bolt(m_idx, GF_ELEC, dam, MS_BOLT_ELEC, learnable);
+ bolt(m_idx, GF_ELEC, dam, MS_BOLT_ELEC);
update_smart_learn(m_idx, DRS_ELEC);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
msg_format(_("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."), m_name);
dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- bolt(m_idx, GF_FIRE, dam, MS_BOLT_FIRE, learnable);
+ bolt(m_idx, GF_FIRE, dam, MS_BOLT_FIRE);
update_smart_learn(m_idx, DRS_FIRE);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
msg_format(_("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."), m_name);
dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- bolt(m_idx, GF_COLD, dam, MS_BOLT_COLD, learnable);
+ bolt(m_idx, GF_COLD, dam, MS_BOLT_COLD);
update_smart_learn(m_idx, DRS_COLD);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
int spell_RF5_BA_LITE(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
int rlev = monster_level_idx(m_idx);
int dam;
msg_format(_("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."), m_name);
dam = (rlev * 4) + 50 + damroll(10, 10);
- breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, learnable);
+ breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST);
update_smart_learn(m_idx, DRS_LITE);
return dam;
}
msg_format(_("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."), m_name);
dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
- bolt(m_idx, GF_NETHER, dam, MS_BOLT_NETHER, learnable);
+ bolt(m_idx, GF_NETHER, dam, MS_BOLT_NETHER);
update_smart_learn(m_idx, DRS_NETH);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
msg_format(_("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."), m_name);
dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- bolt(m_idx, GF_WATER, dam, MS_BOLT_WATER, learnable);
+ bolt(m_idx, GF_WATER, dam, MS_BOLT_WATER);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
}
msg_format(_("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."), m_name);
dam = randint1(rlev * 7 / 2) + 50;
- bolt(m_idx, GF_MANA, dam, MS_BOLT_MANA, learnable);
+ bolt(m_idx, GF_MANA, dam, MS_BOLT_MANA);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
}
msg_format(_("%^s¤¬¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt."), m_name);
dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- bolt(m_idx, GF_PLASMA, dam, MS_BOLT_PLASMA, learnable);
+ bolt(m_idx, GF_PLASMA, dam, MS_BOLT_PLASMA);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
}
msg_format(_("%^s¤¬¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt."), m_name);
dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- bolt(m_idx, GF_ICE, dam, MS_BOLT_ICE, learnable);
+ bolt(m_idx, GF_ICE, dam, MS_BOLT_ICE);
update_smart_learn(m_idx, DRS_COLD);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
msg_format(_("%^s¤¬¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile."), m_name);
dam = damroll(2, 6) + (rlev / 3);
- bolt(m_idx, GF_MISSILE, dam, MS_MAGIC_MISSILE, learnable);
+ bolt(m_idx, GF_MISSILE, dam, MS_MAGIC_MISSILE);
update_smart_learn(m_idx, DRS_REFLECT);
return dam;
}
int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
{
- bool learnable = spell_learnable(m_idx);
cptr m_name = monster_name(m_idx);
monster_type *m_ptr = &m_list[m_idx];
int dam;
disturb(1, 1);
msg_format(_("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"), m_name);
dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
- breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, learnable);
+ breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM);
return dam;
}
msg_format(_("%^s¤¬¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "%^s throw a Psycho-Spear."), m_name);
dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
- beam(m_idx, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, learnable);
+ beam(m_idx, GF_PSY_SPEAR, dam, MS_PSY_SPEAR);
return dam;
}
}
/* Special penalty for rest_and_shoot exp scum */
- if ((m_ptr->dealt_damage > m_ptr->max_maxhp) && (m_ptr->hp >= 0))
+ if ((m_ptr->dealt_damage > (u32b)m_ptr->max_maxhp) && (m_ptr->hp >= 0))
{
int over_damage = m_ptr->dealt_damage / m_ptr->max_maxhp;
if (over_damage > 32) over_damage = 32;
m_ptr->hp -= dam;
m_ptr->dealt_damage += dam;
- if(m_ptr->dealt_damage > m_ptr->max_maxhp * 100) m_ptr->dealt_damage = m_ptr->max_maxhp * 100;
+ if(m_ptr->dealt_damage > (u32b)m_ptr->max_maxhp * 100) m_ptr->dealt_damage = m_ptr->max_maxhp * 100;
if (p_ptr->wizard)
{
msg_format( _("¹ç·×%d/%d¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤¿¡£","You do %d (out of %d) damage."),