cptr s_dur = "dur ";
cptr s_range = "range ";
#endif
- int plev = p_ptr->lev;
+ int plev = p_ptr->lev;
- strcpy(p, "");
+ strcpy(p, "");
- switch (use_mind)
- {
- case MIND_MINDCRAFTER:
- switch (power)
+ switch (use_mind)
{
- case 0: break;
- case 1: sprintf(p, " %s%dd%d", s_dam, 3 + ((plev - 1) / 4), 3 + plev/15); break;
- case 2: sprintf(p, " %s10", s_range); break;
- case 3: sprintf(p, " %s%d", s_range, plev * 5); break;
- case 4: break;
- case 5: sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 4)); break;
- case 6: sprintf(p, " %s%d", s_dur, plev); break;
- case 7: break;
- case 8: sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), s_dam, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1))); break;
- case 9: sprintf(p, " %s10+d%d", s_dur, plev * 3 / 2); break;
+ case MIND_MINDCRAFTER:
+ switch (power)
+ {
+ case 0: break;
+ case 1: sprintf(p, " %s%dd%d", s_dam, 3 + ((plev - 1) / 4), 3 + plev/15); break;
+ case 2: sprintf(p, " %s10", s_range); break;
+ case 3: sprintf(p, " %s%d", s_range, plev * 5); break;
+ case 4: break;
+ case 5: sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 4)); break;
+ case 6: sprintf(p, " %s%d", s_dur, plev); break;
+ case 7: break;
+ case 8: sprintf(p, (plev < 25 ? " %s%d" : " %sd%d"), s_dam, (plev < 25 ? plev * 3 / 2 : plev * ((plev - 5) / 10 + 1))); break;
+ case 9: sprintf(p, " %s10+d%d", s_dur, plev * 3 / 2); break;
#ifdef JP
- case 10: sprintf(p, " ºÇÂç½ÅÎÌ:%d.%dkg", lbtokg1(plev * 15),lbtokg2(plev * 15)); break;
+ case 10: sprintf(p, " ºÇÂç½ÅÎÌ:%d.%dkg", lbtokg1(plev * 15),lbtokg2(plev * 15)); break;
#else
- case 10: sprintf(p, " max wgt %d", plev * 15); break;
+ case 10: sprintf(p, " max wgt %d", plev * 15); break;
#endif
- case 11: sprintf(p, " %s%dd6", s_dam, plev / 2); break;
- case 12: sprintf(p, " %sd%d+%d", s_dam, plev * 3, plev * 3); break;
+ case 11: sprintf(p, " %s%dd6", s_dam, plev / 2); break;
+ case 12: sprintf(p, " %sd%d+%d", s_dam, plev * 3, plev * 3); break;
#ifdef JP
- case 13: sprintf(p, " ¹ÔÆ°:%ld²ó", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
+ case 13: sprintf(p, " ¹ÔÆ°:%ld²ó", (long int)(p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
#else
- case 13: sprintf(p, " %ld acts.", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
+ case 13: sprintf(p, " %ld acts.", (p_ptr->csp + 100-p_ptr->energy_need - 50)/100); break;
#endif
- }
- break;
- case MIND_KI:
- {
- int boost = p_ptr->magic_num1[0];
+ }
+ break;
+ case MIND_KI:
+ {
+ int boost = p_ptr->magic_num1[0];
- if (heavy_armor()) boost /= 2;
+ if (heavy_armor()) boost /= 2;
- switch (power)
- {
- case 0: sprintf(p, " %s%dd4", s_dam, 3 + ((plev - 1) / 5) + boost / 12); break;
- case 1: break;
- case 2: sprintf(p, " %s%d+d30", s_dur, 30 + boost / 5); break;
- case 3: sprintf(p, " %s%dd5", s_dam, 5 + ((plev - 1) / 5) + boost / 10); break;
- case 4: sprintf(p, " %s%d+d20", s_dur, 20 + boost / 5); break;
- case 5: break;
- case 6: sprintf(p, " %s%d+d%d", s_dur, 15 + boost / 7, plev / 2); break;
- case 7: sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 5) + boost / 12); break;
- case 8: sprintf(p, " %s10d6+%d", s_dam, plev * 3 / 2 + boost * 3 / 5); break;
- case 9: break;
+ switch (power)
+ {
+ case 0: sprintf(p, " %s%dd4", s_dam, 3 + ((plev - 1) / 5) + boost / 12); break;
+ case 1: break;
+ case 2: sprintf(p, " %s%d+d30", s_dur, 30 + boost / 5); break;
+ case 3: sprintf(p, " %s%dd5", s_dam, 5 + ((plev - 1) / 5) + boost / 10); break;
+ case 4: sprintf(p, " %s%d+d20", s_dur, 20 + boost / 5); break;
+ case 5: break;
+ case 6: sprintf(p, " %s%d+d%d", s_dur, 15 + boost / 7, plev / 2); break;
+ case 7: sprintf(p, " %s%dd8", s_dam, 8 + ((plev - 5) / 5) + boost / 12); break;
+ case 8: sprintf(p, " %s10d6+%d", s_dam, plev * 3 / 2 + boost * 3 / 5); break;
+ case 9: break;
#ifdef JP
- case 10: sprintf(p, " ºÇÂç%dɤ", 1+boost/100); break;
+ case 10: sprintf(p, " ºÇÂç%dÂÎ", 1+boost/100); break;
#else
- case 10: sprintf(p, " max %d", 1+boost/100); break;
+ case 10: sprintf(p, " max %d", 1+boost/100); break;
#endif
- case 11: sprintf(p, " %s%d", s_dam, 100 + plev + boost); break;
- case 12: sprintf(p, " %s%dd15", s_dam, 10 + plev / 2 + boost * 3 / 10); break;
+ case 11: sprintf(p, " %s%d", s_dam, 100 + plev + boost); break;
+ case 12: sprintf(p, " %s%dd15", s_dam, 10 + plev / 2 + boost * 3 / 10); break;
#ifdef JP
- case 13: sprintf(p, " ¹ÔÆ°:%d+d16²ó", 16+boost/20); break;
+ case 13: sprintf(p, " ¹ÔÆ°:%d+d16²ó", 16+boost/20); break;
#else
- case 13: sprintf(p, " %d+d16 acts", 16+boost/20); break;
+ case 13: sprintf(p, " %d+d16 acts", 16+boost/20); break;
#endif
- }
- break;
- case MIND_MIRROR_MASTER:
+ }
+ break;
+ }
+ case MIND_MIRROR_MASTER:
{
- switch (power)
- {
- case 0: break;
- case 1: break;
- case 2: sprintf(p, " %s%dd4", s_dam, 3 + ((plev - 1) / 5) ); break;
- case 3: sprintf(p, " %s10", s_range); break;
- case 4: break;
- case 5: sprintf(p, " %s%d", s_range, plev *5); break;
- case 6: sprintf(p, " %s20+d20", s_dur); break;
- case 7: break;
- case 8: sprintf(p, " %s%dd8", s_dam, 8+((plev -5)/4) ); break;
- case 9: break;
- case 10: sprintf(p, " %s%dd8", s_dam, 11+(plev-5)/4 ); break;
- case 11: break;
- case 12: sprintf(p, " %s20+d20", s_dur); break;
- case 13: sprintf(p, " %s150+d%d", s_dam, plev*2 ); break;
- case 14: break;
- case 15: break;
- case 16: sprintf(p, " %s%d", s_range, plev/2 +10); break;
- case 17: break;
- case 18: sprintf(p, " %s6+d6", s_dur); break;
- case 19: sprintf(p, " %s%d", s_dam, plev*11+5 ); break;
- case 20: sprintf(p, " %s4+d4", s_dur); break;
- }
- break;
+ switch (power)
+ {
+ case 0: break;
+ case 1: break;
+ case 2: sprintf(p, " %s%dd4", s_dam, 3 + ((plev - 1) / 5) ); break;
+ case 3: sprintf(p, " %s10", s_range); break;
+ case 4: break;
+ case 5: sprintf(p, " %s%d", s_range, plev *5); break;
+ case 6: sprintf(p, " %s20+d20", s_dur); break;
+ case 7: break;
+ case 8: sprintf(p, " %s%dd8", s_dam, 8+((plev -5)/4) ); break;
+ case 9: break;
+ case 10: sprintf(p, " %s%dd8", s_dam, 11+(plev-5)/4 ); break;
+ case 11: break;
+ case 12: sprintf(p, " %s20+d20", s_dur); break;
+ case 13: sprintf(p, " %s150+d%d", s_dam, plev*2 ); break;
+ case 14: break;
+ case 15: break;
+ case 16: sprintf(p, " %s%d", s_range, plev/2 +10); break;
+ case 17: break;
+ case 18: sprintf(p, " %s6+d6", s_dur); break;
+ case 19: sprintf(p, " %s%d", s_dam, plev*11+5 ); break;
+ case 20: sprintf(p, " %s4+d4", s_dur); break;
+ }
+ break;
}
- case MIND_NINJUTSU:
+ case MIND_NINJUTSU:
{
- switch (power)
- {
- case 0: break;
- case 1: break;
- case 2: sprintf(p, " %s10", s_range); break;
- case 3: break;
- case 4: sprintf(p, " %s%d", s_range , plev *5); break;
- case 5: sprintf(p, " %s30", s_range); break;
- case 6: break;
- case 7: break;
- case 8: sprintf(p, " %s20+d20", s_dur); break;
- case 9: sprintf(p, " %s%d", s_dam, (50+plev)/2 ); break;
- case 10: break;
- case 11: break;
- case 12: break;
- case 13: break;
- case 14: break;
- case 15: break;
- case 16: sprintf(p, " %s%d+d%d", s_dur, plev/2, plev/2); break;
- case 17: sprintf(p, " %s%d*3", s_dam, (75+plev*2/3)/2 ); break;
- case 18: sprintf(p, " %s%dd10", s_dam, 6+plev/8 ); break;
- case 19: sprintf(p, " %s6+d6", s_dur); break;
- }
- break;
+ switch (power)
+ {
+ case 0: break;
+ case 1: break;
+ case 2: sprintf(p, " %s10", s_range); break;
+ case 3: break;
+ case 4: sprintf(p, " %s%d", s_range , plev *5); break;
+ case 5: sprintf(p, " %s30", s_range); break;
+ case 6: break;
+ case 7: break;
+ case 8: sprintf(p, " %s20+d20", s_dur); break;
+ case 9: sprintf(p, " %s%d", s_dam, (50+plev)/2 ); break;
+ case 10: break;
+ case 11: break;
+ case 12: break;
+ case 13: break;
+ case 14: break;
+ case 15: break;
+ case 16: sprintf(p, " %s%d+d%d", s_dur, plev/2, plev/2); break;
+ case 17: sprintf(p, " %s%d*3", s_dam, (75+plev*2/3)/2 ); break;
+ case 18: sprintf(p, " %s%dd10", s_dam, 6+plev/8 ); break;
+ case 19: sprintf(p, " %s6+d6", s_dur); break;
+ }
+ break;
+ }
}
- }
- }
}
/*
break;
case 2:
/* Minor displace */
- teleport_player(10, FALSE);
+ teleport_player(10, 0L);
break;
case 3:
/* Major displace */
- teleport_player(plev * 5, FALSE);
+ teleport_player(plev * 5, 0L);
break;
case 4:
/* Domination */
break;
case 9:
{
- monster_type *m_ptr;
- char m_name[80];
+ int m_idx;
if (!target_set(TARGET_KILL)) return FALSE;
- if (!cave[target_row][target_col].m_idx) break;
+ m_idx = cave[target_row][target_col].m_idx;
+ if (!m_idx) break;
if (!player_has_los_bold(target_row, target_col)) break;
if (!projectable(py, px, target_row, target_col)) break;
- m_ptr = &m_list[cave[target_row][target_col].m_idx];
- monster_desc(m_name, m_ptr, 0);
- if (m_ptr->invulner)
- {
- m_ptr->invulner = 0;
- if (m_ptr->ml)
- {
-#ifdef JP
- msg_format("%s¤Ï¤â¤¦ÌµÅ¨¤Ç¤Ï¤Ê¤¤¡£", m_name);
-#else
- msg_format("%^s is no longer invulnerable.", m_name);
-#endif
- p_ptr->redraw |= (PR_HEALTH);
- if (p_ptr->riding == cave[target_row][target_col].m_idx) p_ptr->redraw |= (PR_UHEALTH);
- }
- m_ptr->energy_need += ENERGY_NEED();
- }
- if (m_ptr->fast)
- {
- m_ptr->fast = 0;
-#ifdef JP
- if (m_ptr->ml) msg_format("%s¤Ï¤â¤¦²Ã®¤µ¤ì¤Æ¤¤¤Ê¤¤¡£", m_name);
-#else
- if (m_ptr->ml) msg_format("%^s is no longer fast.", m_name);
-#endif
- }
- if (m_ptr->slow)
- {
- m_ptr->slow = 0;
-#ifdef JP
- if (m_ptr->ml) msg_format("%s¤Ï¤â¤¦¸ºÂ®¤µ¤ì¤Æ¤¤¤Ê¤¤¡£", m_name);
-#else
- if (m_ptr->ml) msg_format("%^s is no longer slow.", m_name);
-#endif
- }
-
+ dispel_monster_status(m_idx);
break;
}
case 10:
break;
/* warped mirror */
case 3:
- teleport_player(10, FALSE);
+ teleport_player(10, 0L);
break;
/* mirror of light */
case 4:
break;
/* mirror of wandering */
case 5:
- teleport_player(plev * 5, FALSE);
+ teleport_player(plev * 5, 0L);
break;
/* robe of dust */
case 6:
/* illusion light */
case 14:
tmp = is_mirror_grid(&cave[py][px]) ? 4 : 3;
- slow_monsters();
+ slow_monsters(plev);
stun_monsters(plev*tmp);
confuse_monsters(plev*tmp);
turn_monsters(plev*tmp);
break;
case 2:
{
- teleport_player(10, FALSE);
- if (cave[py][px].info & (CAVE_GLOW | CAVE_MNLT)) set_superstealth(FALSE);
- else if (p_ptr->cur_lite <= 0) set_superstealth(TRUE);
+ teleport_player(10, 0L);
break;
}
case 3:
}
case 4:
{
- teleport_player(p_ptr->lev * 5, FALSE);
- if (cave[py][px].info & (CAVE_GLOW | CAVE_MNLT)) set_superstealth(FALSE);
- else if (p_ptr->cur_lite <= 0) set_superstealth(TRUE);
+ teleport_player(p_ptr->lev * 5, 0L);
break;
}
case 5:
#endif
else
{
- teleport_player(30, FALSE);
- if (cave[py][px].info & (CAVE_GLOW | CAVE_MNLT)) set_superstealth(FALSE);
- else if (p_ptr->cur_lite <= 0) set_superstealth(TRUE);
+ teleport_player(30, 0L);
}
}
else
break;
case 9:
fire_ball(GF_FIRE, 0, 50+plev, plev/10+2);
- teleport_player(30, FALSE);
- if (cave[py][px].info & (CAVE_GLOW | CAVE_MNLT)) set_superstealth(FALSE);
- else if (p_ptr->cur_lite <= 0) set_superstealth(TRUE);
+ teleport_player(30, 0L);
set_oppose_fire(plev, FALSE);
break;
case 10:
if (!target_set(TARGET_KILL)) return FALSE;
m_idx = cave[target_row][target_col].m_idx;
if (!m_idx) break;
+ if (m_idx == p_ptr->riding) break;
if (!player_has_los_bold(target_row, target_col)) break;
if (!projectable(py, px, target_row, target_col)) break;
m_ptr = &m_list[m_idx];
m_ptr->fx = tx;
/* Wake the monster up */
- m_ptr->csleep = 0;
+ (void)set_monster_csleep(m_idx, 0);
/* Update the monster (new location) */
update_mon(m_idx, TRUE);
if (r_info[m_ptr->r_idx].flags7 & (RF7_LITE_MASK | RF7_DARK_MASK))
p_ptr->update |= (PU_MON_LITE);
+ if (m_ptr->ml)
+ {
+ /* Auto-Recall if possible and visible */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+
+ /* Track a new monster */
+ health_track(m_idx);
+ }
+
break;
}
case 13:
fire_ball(GF_POIS, 0, 75+plev*2/3, plev/5+2);
fire_ball(GF_OLD_DRAIN, 0, 75+plev*2/3, plev/5+2);
fire_ball(GF_CONFUSION, 0, 75+plev*2/3, plev/5+2);
- teleport_player(30, FALSE);
- if (cave[py][px].info & (CAVE_GLOW | CAVE_MNLT)) set_superstealth(FALSE);
- else if (p_ptr->cur_lite <= 0) set_superstealth(TRUE);
+ teleport_player(30, 0L);
break;
case 18:
{
msg_print("Your mind unleashes its power in an uncontrollable storm!");
#endif
- project(1, 2 + plev / 10, py, px, plev * 2,
+ project(PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, py, px, plev * 2,
GF_MANA, PROJECT_JUMP | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM, -1);
p_ptr->csp = MAX(0, p_ptr->csp - plev * MAX(1, plev / 10));
}
#else
msg_print("Weird visions seem to dance before your eyes...");
#endif
- teleport_player(10, TRUE);
+ teleport_player(10, TELEPORT_PASSIVE);
}
else if (b < 96)
{
msg_print("Your mind unleashes its power in an uncontrollable storm!");
#endif
- project(1, 2 + plev / 10, py, px, plev * 2,
+ project(PROJECT_WHO_UNCTRL_POWER, 2 + plev / 10, py, px, plev * 2,
GF_MANA, PROJECT_JUMP | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM, -1);
p_ptr->csp = MAX(0, p_ptr->csp - plev * MAX(1, plev / 10));
}