OSDN Git Service

[Refactor] #37353 is_open() を cave.c へ移動。 / Move is_open() to cave.c.
[hengband/hengband.git] / src / realm-arcane.c
index 55a18a5..10cc1c9 100644 (file)
@@ -1,5 +1,8 @@
 #include "angband.h"
 #include "cmd-spell.h"
+#include "spells-summon.h"
+#include "projection.h"
+#include "avatar.h"
 
 /*!
 * @brief 秘術領域魔法の各処理を行う
@@ -7,7 +10,7 @@
 * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
 */
-cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
+concptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
 {
        bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
        bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
@@ -24,8 +27,8 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("電撃のボルトもしくはビームを放つ。", "Fires a bolt or beam of lightning.");
 
                {
-                       int dice = 3 + (plev - 1) / 5;
-                       int sides = 3;
+                       DICE_NUMBER dice = 3 + (plev - 1) / 5;
+                       DICE_SID sides = 3;
 
                        if (info) return info_damage(dice, sides, 0);
 
@@ -105,8 +108,8 @@ cptr do_arcane_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);
@@ -137,8 +140,8 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("怪我と体力を少し回復させる。", "Heals cut and HP a little.");
 
                {
-                       int dice = 2;
-                       int sides = 8;
+                       DICE_NUMBER dice = 2;
+                       DICE_SID sides = 8;
 
                        if (info) return info_heal(dice, sides, 0);
                        if (cast) (void)cure_light_wounds(dice, sides);
@@ -308,8 +311,8 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("怪我と体力を中程度回復させる。", "Heals cut and HP more.");
 
                {
-                       int dice = 4;
-                       int sides = 8;
+                       DICE_NUMBER dice = 4;
+                       DICE_SID sides = 8;
 
                        if (info) return info_heal(dice, sides, 0);
                        if (cast) (void)cure_serious_wounds(4, 8);
@@ -349,8 +352,8 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("壁を溶かして床にする。", "Turns one rock square to mud.");
 
                {
-                       int dice = 1;
-                       int sides = 30;
+                       DICE_NUMBER dice = 1;
+                       DICE_SID sides = 30;
                        int base = 20;
 
                        if (info) return info_damage(dice, sides, base);
@@ -369,8 +372,8 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                if (desc) return _("光線を放つ。光りを嫌うモンスターに効果がある。", "Fires a beam of light which damages to light-sensitive monsters.");
 
                {
-                       int dice = 6;
-                       int sides = 8;
+                       DICE_NUMBER dice = 6;
+                       DICE_SID sides = 8;
 
                        if (info) return info_damage(dice, sides, 0);
 
@@ -419,7 +422,7 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET)))
+                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'))
                                {
                                        msg_print(_("エレメンタルは現れなかった。", "No Elementals arrive."));
                                }
@@ -511,13 +514,13 @@ cptr do_arcane_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(p_ptr, randint0(21) + 15)) return NULL;
                        }
                }
                break;
@@ -529,7 +532,7 @@ cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                {
                        int base = 25;
-                       int sides = 30;
+                       DICE_SID sides = 30;
 
                        if (info) return info_duration(base, sides);