OSDN Git Service

[Refactor] #37285 新規追加ユニークのモンスター召喚処理を調整 / Adjusted summonning monsters of new uniques
authorHourier <hourier@users.sourceforge.jp>
Fri, 25 Sep 2020 12:27:27 +0000 (21:27 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Wed, 11 Nov 2020 21:56:16 +0000 (06:56 +0900)
(cherry picked from commit 8c0d40f98bedf81862da039474c0b151ab9a76a9)

src/mspell/mspell-summon.c
src/mspell/specified-summon.c
src/mspell/specified-summon.h
src/mspell/summon-checker.c
src/spell/summon-types.h

index 7c075b8..e4a0cfa 100644 (file)
@@ -135,7 +135,7 @@ void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_ID
         count += summon_LOUSE(target_ptr, y, x, rlev, m_idx);
         break;
     case MON_VAIF:
-        count += summon_MOAI(target_ptr, y, x, m_idx);
+        count += summon_MOAI(target_ptr, y, x, rlev, m_idx);
         break;
     case MON_DEMON_SLAYER_SENIOR:
         count += summon_DEMON_SLAYER(target_ptr, y, x, m_idx);
index c85b071..4d58d84 100644 (file)
@@ -129,12 +129,12 @@ MONSTER_NUMBER summon_LOUSE(player_type *target_ptr, POSITION y, POSITION x, int
     return count;
 }
 
-MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
+MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 {
     int count = 0;
     int num = 3 + randint1(3);
     for (int k = 0; k < num; k++)
-        count += summon_named_creature(target_ptr, m_idx, y, x, MON_SMALL_MOAI, PM_NONE);
+        count += summon_specific(target_ptr, m_idx, y, x, rlev, SUMMON_SMALL_MOAI, PM_NONE);
 
     return count;
 }
@@ -146,6 +146,9 @@ MONSTER_NUMBER summon_DEMON_SLAYER(player_type *target_ptr, POSITION y, POSITION
     for (int k = 0; k < num; k++)
         count += summon_named_creature(target_ptr, m_idx, y, x, MON_DEMON_SLAYER_MEMBER, PM_NONE);
 
+    if (count == 0)
+        msg_print(_("しかし、隊士は全滅していた…。", "However, all demon slayer member were murdered..."));
+
     return count;
 }
 
index 3c260c4..4951186 100644 (file)
@@ -7,6 +7,6 @@ MONSTER_NUMBER summon_IE(player_type *target_ptr, POSITION y, POSITION x, int rl
 MONSTER_NUMBER summon_guardian(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE);
 MONSTER_NUMBER summon_LOCKE_CLONE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_LOUSE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
-MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_DEMON_SLAYER(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_NAZGUL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
index d39dc53..68c24a2 100644 (file)
@@ -111,11 +111,11 @@ bool check_summon_specific(player_type *player_ptr, MONRACE_IDX summoner_idx, MO
         break;
     }
     case SUMMON_DAWN: {
-        is_match = (r_idx == MON_DAWN);
+        is_match = r_idx == MON_DAWN;
         break;
     }
     case SUMMON_ANIMAL: {
-        is_match = (r_ptr->flags3 & (RF3_ANIMAL));
+        is_match = (r_ptr->flags3 & RF3_ANIMAL) != 0;
         break;
     }
     case SUMMON_ANIMAL_RANGER: {
@@ -124,6 +124,10 @@ bool check_summon_specific(player_type *player_ptr, MONRACE_IDX summoner_idx, MO
             && !(r_ptr->flags4 || r_ptr->a_ability_flags1 || r_ptr->a_ability_flags2));
         break;
     }
+    case SUMMON_SMALL_MOAI: {
+        is_match = r_idx == MON_SMALL_MOAI;
+        break;
+    }
     case SUMMON_HI_DRAGON_LIVING: {
         is_match = ((r_ptr->d_char == 'D') && monster_living(r_idx));
         break;
index e28e910..b172b74 100644 (file)
@@ -27,6 +27,7 @@ typedef enum summon_type {
     SUMMON_DAWN = 41, /*!< \8f¢\8a«\83^\83C\83v: \8bÅ\82Ì\90í\8em */
     SUMMON_ANIMAL = 42, /*!< \8f¢\8a«\83^\83C\83v: \8e©\91R\8aE\82Ì\93®\95¨ */
     SUMMON_ANIMAL_RANGER = 43, /*!< \8f¢\8a«\83^\83C\83v: \83\8c\83\93\83W\83\83\81[\8cü\82¯\8e©\91R\8aE\82Ì\93®\95¨ */
+    SUMMON_SMALL_MOAI = 44, /*!< \8f¢\8a«\83^\83C\83v: \83v\83`\83\82\83A\83C */
     SUMMON_PHANTOM = 47, /*!< \8f¢\8a«\83^\83C\83v: \83S\81[\83X\83g */
     SUMMON_TOTEM_MOAI = 48, /*!< \8f¢\8a«\83^\83C\83v: \83g\81[\83e\83\80\83\82\83A\83C */
     SUMMON_BLUE_HORROR = 49, /*!< \8f¢\8a«\83^\83C\83v: \83u\83\8b\81[\81E\83z\83\89\81[ */