/*!
* @brief 仙術領域魔法の各処理を行う
+* @param caster_ptr プレーヤーへの参照ポインタ
* @param spell 魔法ID
* @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
* @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
*/
-concptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
+concptr do_sorcery_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
{
bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
DIRECTION dir;
- PLAYER_LEVEL plev = p_ptr->lev;
+ PLAYER_LEVEL plev = caster_ptr->lev;
switch (spell)
{
if (cast)
{
- detect_monsters_normal(rad);
+ detect_monsters_normal(caster_ptr, rad);
}
}
break;
if (cast)
{
- teleport_player(range, 0L);
+ teleport_player(caster_ptr, range, 0L);
}
}
break;
if (cast)
{
- detect_traps(rad, TRUE);
- detect_doors(rad);
- detect_stairs(rad);
+ detect_traps(caster_ptr, rad, TRUE);
+ detect_doors(caster_ptr, rad);
+ detect_stairs(caster_ptr, rad);
}
}
break;
if (cast)
{
- teleport_player(range, 0L);
+ teleport_player(caster_ptr, range, 0L);
}
}
break;
if (cast)
{
- if (!recharge(power)) return NULL;
+ if (!recharge(caster_ptr, power)) return NULL;
}
}
break;
if (cast)
{
- map_area(rad);
+ map_area(caster_ptr, rad);
}
}
break;
{
if (cast)
{
- if (!ident_spell(FALSE)) return NULL;
+ if (!ident_spell(caster_ptr, FALSE)) return NULL;
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_beam(GF_AWAY_ALL, dir, power);
+ fire_beam(caster_ptr, GF_AWAY_ALL, dir, power);
}
}
break;
if (cast)
{
- set_fast(p_ptr, randint1(sides) + base, FALSE);
+ set_fast(caster_ptr, randint1(sides) + base, FALSE);
}
}
break;
if (cast)
{
- detect_all(rad);
+ detect_all(caster_ptr, rad);
}
}
break;
if (cast)
{
- detect_objects_normal(rad);
- detect_treasure(rad);
- detect_objects_gold(rad);
+ detect_objects_normal(caster_ptr, rad);
+ detect_treasure(caster_ptr, rad);
+ detect_objects_gold(caster_ptr, rad);
}
}
break;
if (cast)
{
- set_tim_esp(p_ptr, randint1(sides) + base, FALSE);
+ set_tim_esp(caster_ptr, randint1(sides) + base, FALSE);
}
}
break;
{
if (cast)
{
- if (!tele_town()) return NULL;
+ if (!tele_town(caster_ptr)) return NULL;
}
}
break;
{
if (cast)
{
- self_knowledge();
+ self_knowledge(caster_ptr);
}
}
break;
if (cast)
{
if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)"))) return NULL;
- teleport_level(0);
+ teleport_level(caster_ptr, 0);
}
}
break;
if (cast)
{
- if (!recall_player(p_ptr, randint0(21) + 15)) return NULL;
+ if (!recall_player(caster_ptr, randint0(21) + 15)) return NULL;
}
}
break;
{
if (cast)
{
- probing();
+ probing(caster_ptr);
}
}
break;
if (cast)
{
- explosive_rune();
+ explosive_rune(caster_ptr->current_floor_ptr, caster_ptr->y, caster_ptr->x);
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fetch(dir, weight, FALSE);
+ fetch(caster_ptr, dir, weight, FALSE);
}
}
break;
if (cast)
{
- chg_virtue(V_KNOWLEDGE, 1);
- chg_virtue(V_ENLIGHTEN, 1);
+ chg_virtue(caster_ptr, V_KNOWLEDGE, 1);
+ chg_virtue(caster_ptr, V_ENLIGHTEN, 1);
- wiz_lite(FALSE);
+ wiz_lite(p_ptr, FALSE);
- if (!p_ptr->telepathy)
+ if (!caster_ptr->telepathy)
{
- set_tim_esp(p_ptr, randint1(sides) + base, FALSE);
+ set_tim_esp(caster_ptr, randint1(sides) + base, FALSE);
}
}
}
{
if (cast)
{
- if (!alchemy()) return NULL;
+ if (!alchemy(caster_ptr)) return NULL;
}
}
break;
if (cast)
{
- set_invuln(p_ptr, randint1(base) + base, FALSE);
+ set_invuln(caster_ptr, randint1(base) + base, FALSE);
}
}
break;