{
msg_print(_("様々な色の火花を発している...", "It glows in scintillating colours..."));
if (!get_aim_dir(&dir)) return FALSE;
- confuse_monster(dir, 20);
+ confuse_monster(user_ptr, dir, 20);
break;
}
if (!get_aim_dir(&dir)) return FALSE;
else msg_print(_("恐ろしげな幻覚を作り出した。", "You cast a fearful illusion."));
- fear_monster(dir, plev+10);
+ fear_monster(caster_ptr, dir, plev+10);
break;
case MS_BLIND:
if (!get_aim_dir(&dir)) return FALSE;
- confuse_monster(dir, plev * 2);
+ confuse_monster(caster_ptr, dir, plev * 2);
break;
case MS_CONF:
if (!get_aim_dir(&dir)) return FALSE;
else msg_print(_("誘惑的な幻覚をつくり出した。", "You cast a mesmerizing illusion."));
- confuse_monster(dir, plev * 2);
+ confuse_monster(caster_ptr, dir, plev * 2);
break;
case MS_SLOW:
if (!get_aim_dir(&dir)) return FALSE;
- slow_monster(dir, plev);
+ slow_monster(caster_ptr, dir, plev);
break;
case MS_SLEEP:
if (!get_aim_dir(&dir)) return FALSE;
- sleep_monster(dir, plev);
+ sleep_monster(caster_ptr, dir, plev);
break;
case MS_SPEED:
(void)set_fast(caster_ptr, randint1(20 + plev) + plev, FALSE);
case SV_ROD_SLEEP_MONSTER:
{
- if (sleep_monster(dir, lev)) ident = TRUE;
+ if (sleep_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_ROD_SLOW_MONSTER:
{
- if (slow_monster(dir, lev)) ident = TRUE;
+ if (slow_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_ROD_POLYMORPH:
{
- if (poly_monster(dir, lev)) ident = TRUE;
+ if (poly_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_WAND_HEAL_MONSTER:
{
HIT_POINT dam = damroll((powerful ? 20 : 10), 10);
- if (heal_monster(dir, dam)) ident = TRUE;
+ if (heal_monster(creature_ptr, dir, dam)) ident = TRUE;
break;
}
case SV_WAND_HASTE_MONSTER:
{
- if (speed_monster(dir, lev)) ident = TRUE;
+ if (speed_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_WAND_CLONE_MONSTER:
{
- if (clone_monster(dir)) ident = TRUE;
+ if (clone_monster(creature_ptr, dir)) ident = TRUE;
break;
}
case SV_WAND_SLEEP_MONSTER:
{
- if (sleep_monster(dir, lev)) ident = TRUE;
+ if (sleep_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_WAND_SLOW_MONSTER:
{
- if (slow_monster(dir, lev)) ident = TRUE;
+ if (slow_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_WAND_CONFUSE_MONSTER:
{
- if (confuse_monster(dir, lev)) ident = TRUE;
+ if (confuse_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_WAND_FEAR_MONSTER:
{
- if (fear_monster(dir, lev)) ident = TRUE;
+ if (fear_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case SV_WAND_POLYMORPH:
{
- if (poly_monster(dir, lev)) ident = TRUE;
+ if (poly_monster(creature_ptr, dir, lev)) ident = TRUE;
break;
}
case 6:
{
if (!get_aim_dir(&dir)) return FALSE;
- (void)stasis_monster(dir);
+ (void)stasis_monster(caster_ptr, dir);
break;
}
case 7:
if (!get_aim_dir(&dir)) return FALSE;
msg_print(_("恐ろしげな幻覚を作り出した。", "You cast a fearful illusion."));
- fear_monster(dir, plev+10);
+ fear_monster(caster_ptr, dir, plev+10);
break;
case MS_BLIND:
if (!get_aim_dir(&dir)) return FALSE;
- confuse_monster(dir, plev * 2);
+ confuse_monster(caster_ptr, dir, plev * 2);
break;
case MS_CONF:
if (!get_aim_dir(&dir)) return FALSE;
msg_print(_("誘惑的な幻覚をつくり出した。", "You cast a mesmerizing illusion."));
- confuse_monster(dir, plev * 2);
+ confuse_monster(caster_ptr, dir, plev * 2);
break;
case MS_SLOW:
if (!get_aim_dir(&dir)) return FALSE;
- slow_monster(dir, plev);
+ slow_monster(caster_ptr, dir, plev);
break;
case MS_SLEEP:
if (!get_aim_dir(&dir)) return FALSE;
- sleep_monster(dir, plev);
+ sleep_monster(caster_ptr, dir, plev);
break;
case MS_SPEED:
(void)set_fast(caster_ptr, randint1(20 + plev) + plev, FALSE);
if (!get_aim_dir(&dir)) return FALSE;
stop_mouth(creature_ptr);
msg_print(_("身の毛もよだつ叫び声を上げた!", "You make a horrible scream!"));
- (void)fear_monster(dir, plev);
+ (void)fear_monster(creature_ptr, dir, plev);
break;
case RACE_KLACKON:
if (!get_aim_dir(&dir)) return FALSE;
stop_mouth(creature_ptr);
msg_print(_("あなたはおどろおどろしい叫び声をあげた!", "You emit an eldritch howl!"));
- (void)fear_monster(dir, plev);
+ (void)fear_monster(creature_ptr, dir, plev);
break;
case RACE_SPRITE:
free_turn(creature_ptr);
}
}
+
return TRUE;
}
+
/*!
* @brief レイシャル・パワーコマンドのメインルーチン / Allow user to choose a power (racial / mutation) to activate
* @return なし
{
if (!get_aim_dir(&dir)) return NULL;
- poly_monster(dir, plev);
+ poly_monster(caster_ptr, dir, plev);
}
}
break;
if (cast)
{
if (!get_aim_dir(&dir)) return NULL;
- fear_monster(dir, power);
+ fear_monster(caster_ptr, dir, power);
}
}
break;
if (cast)
{
if (!get_aim_dir(&dir)) return NULL;
- stasis_evil(dir);
+ stasis_evil(caster_ptr, dir);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fear_monster(dir, power);
- stun_monster(dir, power);
+ fear_monster(caster_ptr, dir, power);
+ stun_monster(caster_ptr, dir, power);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- sleep_monster(dir, plev);
+ sleep_monster(caster_ptr, dir, plev);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fear_monster(dir, plev);
- stun_monster(dir, plev);
+ fear_monster(caster_ptr, dir, plev);
+ stun_monster(caster_ptr, dir, plev);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- confuse_monster(dir, power);
+ confuse_monster(caster_ptr, dir, power);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- sleep_monster(dir, plev);
+ sleep_monster(caster_ptr, dir, plev);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- slow_monster(dir, plev);
+ slow_monster(caster_ptr, dir, plev);
}
}
break;
if (!result) return NULL;
- speed_monster(dir, plev);
+ speed_monster(caster_ptr, dir, plev);
}
}
break;
if (!result) return NULL;
- heal_monster(dir, heal);
+ heal_monster(caster_ptr, dir, heal);
}
}
break;
* @param dam 威力
* @return 作用が実際にあった場合TRUEを返す
*/
-bool heal_monster(DIRECTION dir, HIT_POINT dam)
+bool heal_monster(player_type *caster_ptr, DIRECTION dir, HIT_POINT dam)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_OLD_HEAL, dir, dam, flg));
+ return (project_hook(caster_ptr, GF_OLD_HEAL, dir, dam, flg));
}
+
/*!
* @brief モンスター加速処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param power 効力
* @return 作用が実際にあった場合TRUEを返す
*/
-bool speed_monster(DIRECTION dir, int power)
+bool speed_monster(player_type *caster_ptr, DIRECTION dir, int power)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_OLD_SPEED, dir, power, flg));
+ return (project_hook(caster_ptr, GF_OLD_SPEED, dir, power, flg));
}
+
/*!
* @brief モンスター減速処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param power 効力
* @return 作用が実際にあった場合TRUEを返す
*/
-bool slow_monster(DIRECTION dir, int power)
+bool slow_monster(player_type *caster_ptr, DIRECTION dir, int power)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_OLD_SLOW, dir, power, flg));
+ return (project_hook(caster_ptr, GF_OLD_SLOW, dir, power, flg));
}
+
/*!
* @brief モンスター催眠処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param power 効力
* @return 作用が実際にあった場合TRUEを返す
*/
-bool sleep_monster(DIRECTION dir, int power)
+bool sleep_monster(player_type *caster_ptr, DIRECTION dir, int power)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_OLD_SLEEP, dir, power, flg));
+ return (project_hook(caster_ptr, GF_OLD_SLEEP, dir, power, flg));
}
+
/*!
* @brief モンスター拘束(STASIS)処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @return 作用が実際にあった場合TRUEを返す
* @details 威力はプレイヤーレベル*2に固定
*/
-bool stasis_monster(DIRECTION dir)
+bool stasis_monster(player_type *caster_ptr, DIRECTION dir)
{
- return (fire_ball_hide(p_ptr, GF_STASIS, dir, p_ptr->lev * 2, 0));
+ return (fire_ball_hide(caster_ptr, GF_STASIS, dir, caster_ptr->lev * 2, 0));
}
+
/*!
* @brief 邪悪なモンスター拘束(STASIS)処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @return 作用が実際にあった場合TRUEを返す
* @details 威力はプレイヤーレベル*2に固定
*/
-bool stasis_evil(DIRECTION dir)
+bool stasis_evil(player_type *caster_ptr, DIRECTION dir)
{
- return (fire_ball_hide(p_ptr, GF_STASIS_EVIL, dir, p_ptr->lev * 2, 0));
+ return (fire_ball_hide(caster_ptr, GF_STASIS_EVIL, dir, caster_ptr->lev * 2, 0));
}
+
/*!
* @brief モンスター混乱処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param plev プレイヤーレベル(=効力)
* @return 作用が実際にあった場合TRUEを返す
*/
-bool confuse_monster(DIRECTION dir, PLAYER_LEVEL plev)
+bool confuse_monster(player_type *caster_ptr, DIRECTION dir, PLAYER_LEVEL plev)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_OLD_CONF, dir, plev, flg));
+ return (project_hook(caster_ptr, GF_OLD_CONF, dir, plev, flg));
}
+
/*!
* @brief モンスター朦朧処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param plev プレイヤーレベル(=効力)
* @return 作用が実際にあった場合TRUEを返す
*/
-bool stun_monster(DIRECTION dir, PLAYER_LEVEL plev)
+bool stun_monster(player_type *caster_ptr, DIRECTION dir, PLAYER_LEVEL plev)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_STUN, dir, plev, flg));
+ return (project_hook(caster_ptr, GF_STUN, dir, plev, flg));
}
+
/*!
* @brief チェンジモンスター処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param power 効力
* @return 作用が実際にあった場合TRUEを返す
*/
-bool poly_monster(DIRECTION dir, int power)
+bool poly_monster(player_type *caster_ptr, DIRECTION dir, int power)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- bool tester = (project_hook(p_ptr, GF_OLD_POLY, dir, power, flg));
+ bool tester = (project_hook(caster_ptr, GF_OLD_POLY, dir, power, flg));
if (tester)
- chg_virtue(p_ptr, V_CHANCE, 1);
+ chg_virtue(caster_ptr, V_CHANCE, 1);
return(tester);
}
+
/*!
* @brief クローンモンスター処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
* @return 作用が実際にあった場合TRUEを返す
*/
-bool clone_monster(DIRECTION dir)
+bool clone_monster(player_type *caster_ptr, DIRECTION dir)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_OLD_CLONE, dir, 0, flg));
+ return (project_hook(caster_ptr, GF_OLD_CLONE, dir, 0, flg));
}
+
/*!
* @brief モンスター恐慌処理
* @param caster_ptr プレーヤーへの参照ポインタ
* @param plev プレイヤーレベル(=効力)
* @return 作用が実際にあった場合TRUEを返す
*/
-bool fear_monster(DIRECTION dir, PLAYER_LEVEL plev)
+bool fear_monster(player_type *caster_ptr, DIRECTION dir, PLAYER_LEVEL plev)
{
BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
- return (project_hook(p_ptr, GF_TURN_ALL, dir, plev, flg));
+ return (project_hook(caster_ptr, GF_TURN_ALL, dir, plev, flg));
}
+
/*!
* @brief 歌の停止を処理する / Stop singing if the player is a Bard
* @return なし
creature_ptr->redraw |= (PR_STATUS);
}
+
bool time_walk(player_type *creature_ptr)
{
if (creature_ptr->timewalk)
return TRUE;
}
+
/*!
* @brief プレイヤーのヒットダイスを振る / Role Hitpoints
* @param options スペル共通オプション
}
}
+
bool_hack life_stream(player_type *creature_ptr, bool_hack message, bool_hack virtue_change)
{
if (virtue_change)
return TRUE;
}
+
bool_hack heroism(player_type *creature_ptr, int base)
{
bool_hack ident = FALSE;
return ident;
}
+
bool_hack berserk(player_type *creature_ptr, int base)
{
bool_hack ident = FALSE;
return ident;
}
+
bool_hack cure_light_wounds(player_type *creature_ptr, DICE_NUMBER dice, DICE_SID sides)
{
bool_hack ident = FALSE;
return ident;
}
+
bool_hack cure_serious_wounds(player_type *creature_ptr, DICE_NUMBER dice, DICE_SID sides)
{
bool_hack ident = FALSE;
return ident;
}
+
bool_hack cure_critical_wounds(player_type *creature_ptr, HIT_POINT pow)
{
bool_hack ident = FALSE;
return ident;
}
+
bool_hack true_healing(player_type *creature_ptr, HIT_POINT pow)
{
bool_hack ident = FALSE;
return ident;
}
+
bool_hack restore_mana(player_type *creature_ptr, bool_hack magic_eater)
{
bool_hack ident = FALSE;
return ident;
}
+
bool restore_all_status(player_type *creature_ptr)
{
bool ident = FALSE;
return ident;
}
+
bool fishing(player_type *creature_ptr)
{
DIRECTION dir;
-extern bool heal_monster(DIRECTION dir, HIT_POINT dam);
-extern bool speed_monster(DIRECTION dir, int power);
-extern bool slow_monster(DIRECTION dir, int power);
-extern bool sleep_monster(DIRECTION dir, int power);
-extern bool stasis_monster(DIRECTION dir); /* Like sleep, affects undead as well */
-extern bool stasis_evil(DIRECTION dir); /* Like sleep, affects undead as well */
-extern bool confuse_monster(DIRECTION dir, PLAYER_LEVEL plev);
-extern bool stun_monster(DIRECTION dir, PLAYER_LEVEL plev);
-extern bool fear_monster(DIRECTION dir, PLAYER_LEVEL plev);
-extern bool poly_monster(DIRECTION dir, int power);
-extern bool clone_monster(DIRECTION dir);
+extern bool heal_monster(player_type *caster_ptr, DIRECTION dir, HIT_POINT dam);
+extern bool speed_monster(player_type *caster_ptr, DIRECTION dir, int power);
+extern bool slow_monster(player_type *caster_ptr, DIRECTION dir, int power);
+extern bool sleep_monster(player_type *caster_ptr, DIRECTION dir, int power);
+extern bool stasis_monster(player_type *caster_ptr, DIRECTION dir); /* Like sleep, affects undead as well */
+extern bool stasis_evil(player_type *caster_ptr, DIRECTION dir); /* Like sleep, affects undead as well */
+extern bool confuse_monster(player_type *caster_ptr, DIRECTION dir, PLAYER_LEVEL plev);
+extern bool stun_monster(player_type *caster_ptr, DIRECTION dir, PLAYER_LEVEL plev);
+extern bool fear_monster(player_type *caster_ptr, DIRECTION dir, PLAYER_LEVEL plev);
+extern bool poly_monster(player_type *caster_ptr, DIRECTION dir, int power);
+extern bool clone_monster(player_type *caster_ptr, DIRECTION dir);
extern void stop_singing(player_type *creature_ptr);
extern bool time_walk(player_type *creature_ptr);
extern void roll_hitdice(player_type *creature_ptr, SPOP_FLAGS options);
if (die < 8)
{
- clone_monster(dir);
+ clone_monster(caster_ptr, dir);
return;
}
if (die < 14)
{
- speed_monster(dir, plev);
+ speed_monster(caster_ptr, dir, plev);
return;
}
if (die < 26)
{
- heal_monster(dir, damroll(4, 6));
+ heal_monster(caster_ptr, dir, damroll(4, 6));
return;
}
if (die < 31)
{
- poly_monster(dir, plev);
+ poly_monster(caster_ptr, dir, plev);
return;
}
if (die < 41)
{
- confuse_monster(dir, plev);
+ confuse_monster(caster_ptr, dir, plev);
return;
}
}
else if (die < 31)
{
- poly_monster(dir, plev);
+ poly_monster(caster_ptr, dir, plev);
}
else if (die < 36)
{
}
else if (die < 41)
{
- confuse_monster(dir, plev);
+ confuse_monster(caster_ptr, dir, plev);
}
else if (die < 46)
{