OSDN Git Service

[Refactor] #38997 detect_*() にplayer_type * 引数を追加 / Added player_type * argument...
[hengband/hengband.git] / src / realm-sorcery.c
index 0651966..d3af297 100644 (file)
@@ -1,14 +1,24 @@
 #include "angband.h"
+#include "util.h"
+
 #include "cmd-spell.h"
 #include "selfinfo.h"
+#include "avatar.h"
+
+#include "spells.h"
+#include "spells-status.h"
+#include "spells-floor.h"
+#include "player-effects.h"
+#include "targeting.h"
 
 /*!
 * @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文字列を返す。
 */
-cptr 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;
@@ -16,7 +26,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
        bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
 
        DIRECTION dir;
-       int plev = p_ptr->lev;
+       PLAYER_LEVEL plev = caster_ptr->lev;
 
        switch (spell)
        {
@@ -31,7 +41,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               detect_monsters_normal(rad);
+                               detect_monsters_normal(caster_ptr, rad);
                        }
                }
                break;
@@ -47,7 +57,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               teleport_player(range, 0L);
+                               teleport_player(caster_ptr, range, 0L);
                        }
                }
                break;
@@ -63,9 +73,9 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        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;
@@ -75,8 +85,8 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
 
                {
-                       int dice = 2;
-                       int sides = plev / 2;
+                       DICE_NUMBER dice = 2;
+                       DICE_SID sides = plev / 2;
                        POSITION rad = plev / 10 + 1;
 
                        if (info) return info_damage(dice, sides, 0);
@@ -93,7 +103,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("モンスター1体を混乱させる。抵抗されると無効。", "Attempts to confuse a monster.");
 
                {
-                       int power = (plev * 3) / 2;
+                       PLAYER_LEVEL power = (plev * 3) / 2;
 
                        if (info) return info_power(power);
 
@@ -117,7 +127,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               teleport_player(range, 0L);
+                               teleport_player(caster_ptr, range, 0L);
                        }
                }
                break;
@@ -151,7 +161,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               if (!recharge(power)) return NULL;
+                               if (!recharge(caster_ptr, power)) return NULL;
                        }
                }
                break;
@@ -167,7 +177,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               map_area(rad);
+                               map_area(caster_ptr, rad);
                        }
                }
                break;
@@ -179,7 +189,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!ident_spell(FALSE)) return NULL;
+                               if (!ident_spell(caster_ptr, FALSE)) return NULL;
                        }
                }
                break;
@@ -231,7 +241,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               fire_beam(GF_AWAY_ALL, dir, power);
+                               fire_beam(caster_ptr, GF_AWAY_ALL, dir, power);
                        }
                }
                break;
@@ -242,13 +252,13 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                {
                        int base = plev;
-                       int sides = 20 + plev;
+                       DICE_SID sides = 20 + plev;
 
                        if (info) return info_duration(base, sides);
 
                        if (cast)
                        {
-                               set_fast(randint1(sides) + base, FALSE);
+                               set_fast(caster_ptr, randint1(sides) + base, FALSE);
                        }
                }
                break;
@@ -265,7 +275,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               detect_all(rad);
+                               detect_all(caster_ptr, rad);
                        }
                }
                break;
@@ -293,9 +303,9 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        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;
@@ -313,7 +323,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               charm_monster(dir, power);
+                               charm_monster(dir, plev);
                        }
                }
                break;
@@ -324,13 +334,13 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                {
                        int base = 25;
-                       int sides = 30;
+                       DICE_SID sides = 30;
 
                        if (info) return info_duration(base, sides);
 
                        if (cast)
                        {
-                               set_tim_esp(randint1(sides) + base, FALSE);
+                               set_tim_esp(caster_ptr, randint1(sides) + base, FALSE);
                        }
                }
                break;
@@ -342,7 +352,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!tele_town()) return NULL;
+                               if (!tele_town(caster_ptr)) return NULL;
                        }
                }
                break;
@@ -355,7 +365,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               self_knowledge();
+                               self_knowledge(caster_ptr);
                        }
                }
                break;
@@ -368,7 +378,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                        if (cast)
                        {
                                if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)"))) return NULL;
-                               teleport_level(0);
+                               teleport_level(caster_ptr, 0);
                        }
                }
                break;
@@ -380,13 +390,13 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                {
                        int base = 15;
-                       int sides = 20;
+                       DICE_SID sides = 20;
 
                        if (info) return info_delay(base, sides);
 
                        if (cast)
                        {
-                               if (!word_of_recall()) return NULL;
+                               if (!recall_player(caster_ptr, randint0(21) + 15)) return NULL;
                        }
                }
                break;
@@ -416,7 +426,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               probing();
+                               probing(caster_ptr);
                        }
                }
                break;
@@ -427,15 +437,15 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                        "Sets a glyph under you. The glyph will explode when a monster moves on it.");
 
                {
-                       int dice = 7;
-                       int sides = 7;
+                       DICE_NUMBER dice = 7;
+                       DICE_SID sides = 7;
                        int base = plev;
 
                        if (info) return info_damage(dice, sides, base);
 
                        if (cast)
                        {
-                               explosive_rune();
+                               explosive_rune(caster_ptr->current_floor_ptr, caster_ptr->y, caster_ptr->x);
                        }
                }
                break;
@@ -445,7 +455,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("アイテムを自分の足元へ移動させる。", "Pulls a distant item close to you.");
 
                {
-                       int weight = plev * 15;
+                       WEIGHT weight = plev * 15;
 
                        if (info) return info_weight(weight);
 
@@ -453,7 +463,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               fetch(dir, weight, FALSE);
+                               fetch(caster_ptr, dir, weight, FALSE);
                        }
                }
                break;
@@ -465,20 +475,20 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                {
                        int base = 25;
-                       int sides = 30;
+                       DICE_SID sides = 30;
 
                        if (info) return info_duration(base, sides);
 
                        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(randint1(sides) + base, FALSE);
+                                       set_tim_esp(caster_ptr, randint1(sides) + base, FALSE);
                                }
                        }
                }
@@ -507,7 +517,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!alchemy()) return NULL;
+                               if (!alchemy(caster_ptr)) return NULL;
                        }
                }
                break;
@@ -540,7 +550,7 @@ cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               set_invuln(randint1(base) + base, FALSE);
+                               set_invuln(caster_ptr, randint1(base) + base, FALSE);
                        }
                }
                break;