OSDN Git Service

[Refactor] #37353 monster-hook~rooms-*間整理。 / Refactor between monster-hook and rooms-*.
authorDeskull <deskull@users.sourceforge.jp>
Fri, 23 Nov 2018 11:15:25 +0000 (20:15 +0900)
committerDeskull <deskull@users.sourceforge.jp>
Fri, 23 Nov 2018 11:15:25 +0000 (20:15 +0900)
src/monster-hook.c
src/monster-hook.h
src/rooms-pitnest.c
src/rooms-special.c
src/rooms.h

index ab751df..47fd3b1 100644 (file)
@@ -1,6 +1,122 @@
 #include "angband.h"
 #include "monster-hook.h"
 
+/*! 通常pit生成時のモンスターの構成条件ID / Race index for "monster pit (clone)" */
+int vault_aux_race;
+
+/*! 単一シンボルpit生成時の指定シンボル / Race index for "monster pit (symbol clone)" */
+char vault_aux_char;
+
+/*! ブレス属性に基づくドラゴンpit生成時条件マスク / Breath mask for "monster pit (dragon)" */
+BIT_FLAGS vault_aux_dragon_mask4;
+
+
+/*!
+* @brief pit/nestの基準となる単種モンスターを決める /
+* @return なし
+*/
+void vault_prep_clone(void)
+{
+       /* Apply the monster restriction */
+       get_mon_num_prep(vault_aux_simple, NULL);
+
+       /* Pick a race to clone */
+       vault_aux_race = get_mon_num(dun_level + 10);
+
+       /* Remove the monster restriction */
+       get_mon_num_prep(NULL, NULL);
+}
+
+
+/*!
+* @brief pit/nestの基準となるモンスターシンボルを決める /
+* @return なし
+*/
+void vault_prep_symbol(void)
+{
+       MONRACE_IDX r_idx;
+
+       /* Apply the monster restriction */
+       get_mon_num_prep(vault_aux_simple, NULL);
+
+       /* Pick a race to clone */
+       r_idx = get_mon_num(dun_level + 10);
+
+       /* Remove the monster restriction */
+       get_mon_num_prep(NULL, NULL);
+
+       /* Extract the symbol */
+       vault_aux_char = r_info[r_idx].d_char;
+}
+
+
+
+/*!
+* @brief pit/nestの基準となるドラゴンの種類を決める /
+* @return なし
+*/
+void vault_prep_dragon(void)
+{
+       /* Pick dragon type */
+       switch (randint0(6))
+       {
+               /* Black */
+       case 0:
+       {
+               /* Restrict dragon breath type */
+               vault_aux_dragon_mask4 = RF4_BR_ACID;
+
+               break;
+       }
+
+       /* Blue */
+       case 1:
+       {
+               /* Restrict dragon breath type */
+               vault_aux_dragon_mask4 = RF4_BR_ELEC;
+
+               break;
+       }
+
+       /* Red */
+       case 2:
+       {
+               /* Restrict dragon breath type */
+               vault_aux_dragon_mask4 = RF4_BR_FIRE;
+
+               break;
+       }
+
+       /* White */
+       case 3:
+       {
+               /* Restrict dragon breath type */
+               vault_aux_dragon_mask4 = RF4_BR_COLD;
+
+               break;
+       }
+
+       /* Green */
+       case 4:
+       {
+               /* Restrict dragon breath type */
+               vault_aux_dragon_mask4 = RF4_BR_POIS;
+
+               break;
+       }
+
+       /* Multi-hued */
+       default:
+       {
+               /* Restrict dragon breath type */
+               vault_aux_dragon_mask4 = (RF4_BR_ACID | RF4_BR_ELEC |
+                       RF4_BR_FIRE | RF4_BR_COLD |
+                       RF4_BR_POIS);
+
+               break;
+       }
+       }
+}
 
 /*!
 * @brief モンスターがクエストの討伐対象に成り得るかを返す / Hook function for quest monsters
@@ -245,3 +361,392 @@ bool mon_hook_floor(MONRACE_IDX r_idx)
        else
                return FALSE;
 }
+
+/*
+* Helper function for "glass room"
+*/
+bool vault_aux_lite(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return FALSE;
+
+       /* Require lite attack */
+       if (!(r_ptr->flags4 & RF4_BR_LITE) && !(r_ptr->a_ability_flags1 & RF5_BA_LITE)) return FALSE;
+
+       /* No wall passing monsters */
+       if (r_ptr->flags2 & (RF2_PASS_WALL | RF2_KILL_WALL)) return FALSE;
+
+       /* No disintegrating monsters */
+       if (r_ptr->flags4 & RF4_BR_DISI) return FALSE;
+
+       return TRUE;
+}
+
+/*
+* Helper function for "glass room"
+*/
+bool vault_aux_shards(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return FALSE;
+
+       /* Require shards breath attack */
+       if (!(r_ptr->flags4 & RF4_BR_SHAR)) return FALSE;
+
+       return TRUE;
+}
+
+
+/*!
+* @brief モンスターがVault生成の最低必要条件を満たしているかを返す /
+* Helper monster selection function
+* @param r_idx 確認したいモンスター種族ID
+* @return Vault生成の最低必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_simple(MONRACE_IDX r_idx)
+{
+       return (vault_monster_okay(r_idx));
+}
+
+
+/*!
+* @brief モンスターがゼリーnestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (jelly)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_jelly(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);
+
+       /* Also decline evil jellies (like death molds and shoggoths) */
+       if (r_ptr->flags3 & (RF3_EVIL)) return (FALSE);
+
+       /* Require icky thing, jelly, mold, or mushroom */
+       if (!my_strchr("ijm,", r_ptr->d_char)) return (FALSE);
+
+       return (TRUE);
+}
+
+/*!
+* @brief モンスターが動物nestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (animal)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_animal(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require "animal" flag */
+       if (!(r_ptr->flags3 & (RF3_ANIMAL))) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターがアンデッドnestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (undead)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_undead(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require Undead */
+       if (!(r_ptr->flags3 & (RF3_UNDEAD))) return (FALSE);
+
+       return (TRUE);
+}
+
+/*!
+* @brief モンスターが聖堂nestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (chapel)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_chapel_g(MONRACE_IDX r_idx)
+{
+       static int chapel_list[] = {
+               MON_NOV_PRIEST, MON_NOV_PALADIN, MON_NOV_PRIEST_G, MON_NOV_PALADIN_G,
+               MON_PRIEST, MON_JADE_MONK, MON_IVORY_MONK, MON_ULTRA_PALADIN,
+               MON_EBONY_MONK, MON_W_KNIGHT, MON_KNI_TEMPLAR, MON_PALADIN,
+               MON_TOPAZ_MONK, 0 };
+
+       int i;
+
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       if (r_ptr->flags3 & (RF3_EVIL)) return (FALSE);
+       if ((r_idx == MON_A_GOLD) || (r_idx == MON_A_SILVER)) return (FALSE);
+
+       /* Require "priest" or Angel */
+
+       if (r_ptr->d_char == 'A') return TRUE;
+
+       for (i = 0; chapel_list[i]; i++)
+               if (r_idx == chapel_list[i]) return TRUE;
+
+       return FALSE;
+}
+
+/*!
+* @brief モンスターが犬小屋nestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (kennel)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_kennel(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require a Zephyr Hound or a dog */
+       if (!my_strchr("CZ", r_ptr->d_char)) return (FALSE);
+
+       return (TRUE);
+}
+
+/*!
+* @brief モンスターがミミックnestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (mimic)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_mimic(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require mimic */
+       if (!my_strchr("!$&(/=?[\\|", r_ptr->d_char)) return (FALSE);
+
+       return (TRUE);
+}
+
+/*!
+* @brief モンスターが単一クローンnestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (clone)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_clone(MONRACE_IDX r_idx)
+{
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       return (r_idx == vault_aux_race);
+}
+
+
+/*!
+* @brief モンスターが邪悪属性シンボルクローンnestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (symbol clone)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_symbol_e(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);
+
+       if (r_ptr->flags3 & (RF3_GOOD)) return (FALSE);
+
+       /* Decline incorrect symbol */
+       if (r_ptr->d_char != vault_aux_char) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターが善良属性シンボルクローンnestの生成必要条件を満たしているかを返す /
+* Helper function for "monster nest (symbol clone)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_symbol_g(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);
+
+       if (r_ptr->flags3 & (RF3_EVIL)) return (FALSE);
+
+       /* Decline incorrect symbol */
+       if (r_ptr->d_char != vault_aux_char) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターがオークpitの生成必要条件を満たしているかを返す /
+* Helper function for "monster pit (orc)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_orc(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require orc */
+       if (!(r_ptr->flags3 & RF3_ORC)) return (FALSE);
+
+       /* Decline undead */
+       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターがトロルpitの生成必要条件を満たしているかを返す /
+* Helper function for "monster pit (troll)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_troll(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require troll */
+       if (!(r_ptr->flags3 & RF3_TROLL)) return (FALSE);
+
+       /* Decline undead */
+       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターが巨人pitの生成必要条件を満たしているかを返す /
+* Helper function for "monster pit (giant)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_giant(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require giant */
+       if (!(r_ptr->flags3 & RF3_GIANT)) return (FALSE);
+
+       if (r_ptr->flags3 & RF3_GOOD) return (FALSE);
+
+       /* Decline undead */
+       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターがドラゴンpitの生成必要条件を満たしているかを返す /
+* Helper function for "monster pit (dragon)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_dragon(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       /* Require dragon */
+       if (!(r_ptr->flags3 & RF3_DRAGON)) return (FALSE);
+
+       /* Hack -- Require correct "breath attack" */
+       if (r_ptr->flags4 != vault_aux_dragon_mask4) return (FALSE);
+
+       /* Decline undead */
+       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターが悪魔pitの生成必要条件を満たしているかを返す /
+* Helper function for "monster pit (demon)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_demon(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);
+
+       /* Require demon */
+       if (!(r_ptr->flags3 & RF3_DEMON)) return (FALSE);
+
+       return (TRUE);
+}
+
+
+/*!
+* @brief モンスターが狂気pitの生成必要条件を満たしているかを返す /
+* Helper function for "monster pit (lovecraftian)"
+* @param r_idx 確認したいモンスター種族ID
+* @return 生成必要条件を満たしているならTRUEを返す。
+*/
+bool vault_aux_cthulhu(MONRACE_IDX r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       /* Validate the monster */
+       if (!vault_monster_okay(r_idx)) return (FALSE);
+
+       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);
+
+       /* Require eldritch horror */
+       if (!(r_ptr->flags2 & (RF2_ELDRITCH_HORROR))) return (FALSE);
+
+       return (TRUE);
+}
\ No newline at end of file
index dc3838d..d6b9e69 100644 (file)
@@ -1,4 +1,22 @@
 \r
+/*!\r
+* vaultに配置可能なモンスターの条件を指定するマクロ / Monster validation macro\r
+*\r
+* Line 1 -- forbid town monsters\r
+* Line 2 -- forbid uniques\r
+* Line 3 -- forbid aquatic monsters\r
+*/\r
+#define vault_monster_okay(I) \\r
+       (mon_hook_dungeon(I) && \\r
+        !(r_info[I].flags1 & RF1_UNIQUE) && \\r
+        !(r_info[I].flags7 & RF7_UNIQUE2) && \\r
+        !(r_info[I].flagsr & RFR_RES_ALL) && \\r
+        !(r_info[I].flags7 & RF7_AQUATIC))\r
+\r
+extern int vault_aux_race;\r
+extern char vault_aux_char;\r
+extern BIT_FLAGS vault_aux_dragon_mask4;\r
+\r
 extern bool mon_hook_quest(MONRACE_IDX r_idx);\r
 extern bool mon_hook_dungeon(MONRACE_IDX r_idx);\r
 extern bool mon_hook_ocean(MONRACE_IDX r_idx);\r
@@ -16,4 +34,26 @@ extern bool mon_hook_shallow_water(MONRACE_IDX r_idx);
 extern bool mon_hook_lava(MONRACE_IDX r_idx);\r
 extern bool mon_hook_floor(MONRACE_IDX r_idx);\r
 \r
+extern void vault_prep_clone(void);\r
+extern void vault_prep_dragon(void);\r
+extern void vault_prep_symbol(void);\r
+\r
+extern bool vault_aux_lite(MONRACE_IDX r_idx);\r
+extern bool vault_aux_shards(MONRACE_IDX r_idx);\r
+extern bool vault_aux_simple(MONRACE_IDX r_idx);\r
+extern bool vault_aux_jelly(MONRACE_IDX r_idx);\r
+extern bool vault_aux_animal(MONRACE_IDX r_idx);\r
+extern bool vault_aux_undead(MONRACE_IDX r_idx);\r
+extern bool vault_aux_chapel_g(MONRACE_IDX r_idx);\r
+extern bool vault_aux_kennel(MONRACE_IDX r_idx);\r
+extern bool vault_aux_mimic(MONRACE_IDX r_idx);\r
+extern bool vault_aux_clone(MONRACE_IDX r_idx);\r
+extern bool vault_aux_symbol_e(MONRACE_IDX r_idx);\r
+extern bool vault_aux_symbol_g(MONRACE_IDX r_idx);\r
+extern bool vault_aux_orc(MONRACE_IDX r_idx);\r
+extern bool vault_aux_troll(MONRACE_IDX r_idx);\r
+extern bool vault_aux_giant(MONRACE_IDX r_idx);\r
+extern bool vault_aux_dragon(MONRACE_IDX r_idx);\r
+extern bool vault_aux_demon(MONRACE_IDX r_idx);\r
+extern bool vault_aux_cthulhu(MONRACE_IDX r_idx);\r
 \r
index 769c9a8..bc88fc0 100644 (file)
@@ -47,477 +47,6 @@ struct vault_aux_type
 #define PIT_TYPE_DARK_ELF      9\r
 \r
 \r
-\r
-\r
-\r
-\r
-/*! 通常pit生成時のモンスターの構成条件ID / Race index for "monster pit (clone)" */\r
-static int vault_aux_race;\r
-\r
-/*! 単一シンボルpit生成時の指定シンボル / Race index for "monster pit (symbol clone)" */\r
-static char vault_aux_char;\r
-\r
-/*! ブレス属性に基づくドラゴンpit生成時条件マスク / Breath mask for "monster pit (dragon)" */\r
-static u32b vault_aux_dragon_mask4;\r
-\r
-\r
-/*!\r
-* @brief モンスターがVault生成の最低必要条件を満たしているかを返す /\r
-* Helper monster selection function\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return Vault生成の最低必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_simple(MONRACE_IDX r_idx)\r
-{\r
-       return (vault_monster_okay(r_idx));\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターがゼリーnestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (jelly)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_jelly(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);\r
-\r
-       /* Also decline evil jellies (like death molds and shoggoths) */\r
-       if (r_ptr->flags3 & (RF3_EVIL)) return (FALSE);\r
-\r
-       /* Require icky thing, jelly, mold, or mushroom */\r
-       if (!my_strchr("ijm,", r_ptr->d_char)) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-/*!\r
-* @brief モンスターが動物nestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (animal)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_animal(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require "animal" flag */\r
-       if (!(r_ptr->flags3 & (RF3_ANIMAL))) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターがアンデッドnestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (undead)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_undead(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require Undead */\r
-       if (!(r_ptr->flags3 & (RF3_UNDEAD))) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-/*!\r
-* @brief モンスターが聖堂nestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (chapel)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_chapel_g(MONRACE_IDX r_idx)\r
-{\r
-       static int chapel_list[] = {\r
-               MON_NOV_PRIEST, MON_NOV_PALADIN, MON_NOV_PRIEST_G, MON_NOV_PALADIN_G,\r
-               MON_PRIEST, MON_JADE_MONK, MON_IVORY_MONK, MON_ULTRA_PALADIN,\r
-               MON_EBONY_MONK, MON_W_KNIGHT, MON_KNI_TEMPLAR, MON_PALADIN,\r
-               MON_TOPAZ_MONK, 0 };\r
-\r
-       int i;\r
-\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       if (r_ptr->flags3 & (RF3_EVIL)) return (FALSE);\r
-       if ((r_idx == MON_A_GOLD) || (r_idx == MON_A_SILVER)) return (FALSE);\r
-\r
-       /* Require "priest" or Angel */\r
-\r
-       if (r_ptr->d_char == 'A') return TRUE;\r
-\r
-       for (i = 0; chapel_list[i]; i++)\r
-               if (r_idx == chapel_list[i]) return TRUE;\r
-\r
-       return FALSE;\r
-}\r
-\r
-/*!\r
-* @brief モンスターが犬小屋nestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (kennel)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_kennel(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require a Zephyr Hound or a dog */\r
-       if (!my_strchr("CZ", r_ptr->d_char)) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-/*!\r
-* @brief モンスターがミミックnestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (mimic)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_mimic(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require mimic */\r
-       if (!my_strchr("!$&(/=?[\\|", r_ptr->d_char)) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-/*!\r
-* @brief モンスターが単一クローンnestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (clone)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_clone(MONRACE_IDX r_idx)\r
-{\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       return (r_idx == vault_aux_race);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターが邪悪属性シンボルクローンnestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (symbol clone)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_symbol_e(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);\r
-\r
-       if (r_ptr->flags3 & (RF3_GOOD)) return (FALSE);\r
-\r
-       /* Decline incorrect symbol */\r
-       if (r_ptr->d_char != vault_aux_char) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターが善良属性シンボルクローンnestの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster nest (symbol clone)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_symbol_g(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);\r
-\r
-       if (r_ptr->flags3 & (RF3_EVIL)) return (FALSE);\r
-\r
-       /* Decline incorrect symbol */\r
-       if (r_ptr->d_char != vault_aux_char) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターがオークpitの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster pit (orc)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_orc(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require orc */\r
-       if (!(r_ptr->flags3 & RF3_ORC)) return (FALSE);\r
-\r
-       /* Decline undead */\r
-       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターがトロルpitの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster pit (troll)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_troll(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require troll */\r
-       if (!(r_ptr->flags3 & RF3_TROLL)) return (FALSE);\r
-\r
-       /* Decline undead */\r
-       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターが巨人pitの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster pit (giant)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_giant(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require giant */\r
-       if (!(r_ptr->flags3 & RF3_GIANT)) return (FALSE);\r
-\r
-       if (r_ptr->flags3 & RF3_GOOD) return (FALSE);\r
-\r
-       /* Decline undead */\r
-       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターがドラゴンpitの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster pit (dragon)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_dragon(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       /* Require dragon */\r
-       if (!(r_ptr->flags3 & RF3_DRAGON)) return (FALSE);\r
-\r
-       /* Hack -- Require correct "breath attack" */\r
-       if (r_ptr->flags4 != vault_aux_dragon_mask4) return (FALSE);\r
-\r
-       /* Decline undead */\r
-       if (r_ptr->flags3 & RF3_UNDEAD) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターが悪魔pitの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster pit (demon)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_demon(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);\r
-\r
-       /* Require demon */\r
-       if (!(r_ptr->flags3 & RF3_DEMON)) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief モンスターが狂気pitの生成必要条件を満たしているかを返す /\r
-* Helper function for "monster pit (lovecraftian)"\r
-* @param r_idx 確認したいモンスター種族ID\r
-* @return 生成必要条件を満たしているならTRUEを返す。\r
-*/\r
-static bool vault_aux_cthulhu(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return (FALSE);\r
-\r
-       if ((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW)) return (FALSE);\r
-\r
-       /* Require eldritch horror */\r
-       if (!(r_ptr->flags2 & (RF2_ELDRITCH_HORROR))) return (FALSE);\r
-\r
-       return (TRUE);\r
-}\r
-\r
-\r
-/*!\r
-* @brief pit/nestの基準となる単種モンスターを決める /\r
-* @return なし\r
-*/\r
-static void vault_prep_clone(void)\r
-{\r
-       /* Apply the monster restriction */\r
-       get_mon_num_prep(vault_aux_simple, NULL);\r
-\r
-       /* Pick a race to clone */\r
-       vault_aux_race = get_mon_num(dun_level + 10);\r
-\r
-       /* Remove the monster restriction */\r
-       get_mon_num_prep(NULL, NULL);\r
-}\r
-\r
-\r
-/*!\r
-* @brief pit/nestの基準となるモンスターシンボルを決める /\r
-* @return なし\r
-*/\r
-static void vault_prep_symbol(void)\r
-{\r
-       MONRACE_IDX r_idx;\r
-\r
-       /* Apply the monster restriction */\r
-       get_mon_num_prep(vault_aux_simple, NULL);\r
-\r
-       /* Pick a race to clone */\r
-       r_idx = get_mon_num(dun_level + 10);\r
-\r
-       /* Remove the monster restriction */\r
-       get_mon_num_prep(NULL, NULL);\r
-\r
-       /* Extract the symbol */\r
-       vault_aux_char = r_info[r_idx].d_char;\r
-}\r
-\r
-/*!\r
-* @brief pit/nestの基準となるドラゴンの種類を決める /\r
-* @return なし\r
-*/\r
-static void vault_prep_dragon(void)\r
-{\r
-       /* Pick dragon type */\r
-       switch (randint0(6))\r
-       {\r
-               /* Black */\r
-       case 0:\r
-       {\r
-               /* Restrict dragon breath type */\r
-               vault_aux_dragon_mask4 = RF4_BR_ACID;\r
-\r
-               break;\r
-       }\r
-\r
-       /* Blue */\r
-       case 1:\r
-       {\r
-               /* Restrict dragon breath type */\r
-               vault_aux_dragon_mask4 = RF4_BR_ELEC;\r
-\r
-               break;\r
-       }\r
-\r
-       /* Red */\r
-       case 2:\r
-       {\r
-               /* Restrict dragon breath type */\r
-               vault_aux_dragon_mask4 = RF4_BR_FIRE;\r
-\r
-               break;\r
-       }\r
-\r
-       /* White */\r
-       case 3:\r
-       {\r
-               /* Restrict dragon breath type */\r
-               vault_aux_dragon_mask4 = RF4_BR_COLD;\r
-\r
-               break;\r
-       }\r
-\r
-       /* Green */\r
-       case 4:\r
-       {\r
-               /* Restrict dragon breath type */\r
-               vault_aux_dragon_mask4 = RF4_BR_POIS;\r
-\r
-               break;\r
-       }\r
-\r
-       /* Multi-hued */\r
-       default:\r
-       {\r
-               /* Restrict dragon breath type */\r
-               vault_aux_dragon_mask4 = (RF4_BR_ACID | RF4_BR_ELEC |\r
-                       RF4_BR_FIRE | RF4_BR_COLD |\r
-                       RF4_BR_POIS);\r
-\r
-               break;\r
-       }\r
-       }\r
-}\r
-\r
-\r
 /*!\r
 * @brief モンスターがダークエルフpitの生成必要条件を満たしているかを返す /\r
 * Helper function for "monster pit (dark elf)"\r
@@ -638,14 +167,14 @@ static cptr pit_subtype_string(int type, bool nest)
                case PIT_TYPE_DRAGON:\r
                        switch (vault_aux_dragon_mask4)\r
                        {\r
-                               case RF4_BR_ACID: strcpy(inner_buf, _("(酸)", "(acid)"));   break;\r
-                               case RF4_BR_ELEC: strcpy(inner_buf, _("(稲妻)", "(lightning)")); break;\r
-                               case RF4_BR_FIRE: strcpy(inner_buf, _("(火炎)", "(fire)")); break;\r
-                               case RF4_BR_COLD: strcpy(inner_buf, _("(冷気)", "(frost)")); break;\r
-                               case RF4_BR_POIS: strcpy(inner_buf, _("(毒)", "(poison)"));   break;\r
-                               case (RF4_BR_ACID | RF4_BR_ELEC | RF4_BR_FIRE | RF4_BR_COLD | RF4_BR_POIS) :\r
-                                       strcpy(inner_buf, _("(万色)", "(multi-hued)")); break;\r
-                               default: strcpy(inner_buf, _("(未定義)", "(undefined)")); break;\r
+                       case RF4_BR_ACID: strcpy(inner_buf, _("(酸)", "(acid)"));   break;\r
+                       case RF4_BR_ELEC: strcpy(inner_buf, _("(稲妻)", "(lightning)")); break;\r
+                       case RF4_BR_FIRE: strcpy(inner_buf, _("(火炎)", "(fire)")); break;\r
+                       case RF4_BR_COLD: strcpy(inner_buf, _("(冷気)", "(frost)")); break;\r
+                       case RF4_BR_POIS: strcpy(inner_buf, _("(毒)", "(poison)"));   break;\r
+                       case (RF4_BR_ACID | RF4_BR_ELEC | RF4_BR_FIRE | RF4_BR_COLD | RF4_BR_POIS) :\r
+                               strcpy(inner_buf, _("(万色)", "(multi-hued)")); break;\r
+                       default: strcpy(inner_buf, _("(未定義)", "(undefined)")); break;\r
                        }\r
                        break;\r
                }\r
@@ -654,10 +183,6 @@ static cptr pit_subtype_string(int type, bool nest)
        return inner_buf;\r
 }\r
 \r
-\r
-\r
-\r
-\r
 /*\r
 *! @brief nestのモンスターリストをソートするための関数 /\r
 *  Comp function for sorting nest monster information\r
index c3d963a..6b0224a 100644 (file)
@@ -5,46 +5,8 @@
 #include "monster-hook.h"\r
 \r
 /*\r
-* Helper function for "glass room"\r
-*/\r
-static bool vault_aux_lite(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return FALSE;\r
-\r
-       /* Require lite attack */\r
-       if (!(r_ptr->flags4 & RF4_BR_LITE) && !(r_ptr->a_ability_flags1 & RF5_BA_LITE)) return FALSE;\r
-\r
-       /* No wall passing monsters */\r
-       if (r_ptr->flags2 & (RF2_PASS_WALL | RF2_KILL_WALL)) return FALSE;\r
-\r
-       /* No disintegrating monsters */\r
-       if (r_ptr->flags4 & RF4_BR_DISI) return FALSE;\r
-\r
-       return TRUE;\r
-}\r
-\r
-/*\r
-* Helper function for "glass room"\r
-*/\r
-static bool vault_aux_shards(MONRACE_IDX r_idx)\r
-{\r
-       monster_race *r_ptr = &r_info[r_idx];\r
-\r
-       /* Validate the monster */\r
-       if (!vault_monster_okay(r_idx)) return FALSE;\r
-\r
-       /* Require shards breath attack */\r
-       if (!(r_ptr->flags4 & RF4_BR_SHAR)) return FALSE;\r
-\r
-       return TRUE;\r
-}\r
-\r
-/*\r
-* Hack -- determine if a template is potion\r
-*/\r
+ * Hack -- determine if a template is potion\r
+ */\r
 static bool kind_is_potion(KIND_OBJECT_IDX k_idx)\r
 {\r
        return k_info[k_idx].tval == TV_POTION;\r
index 22c4103..4ceb6a5 100644 (file)
@@ -58,22 +58,6 @@ struct room_info_type
         byte min_level;
 };
 
-
-/*!
-* vaultに配置可能なモンスターの条件を指定するマクロ / Monster validation macro
-*
-* Line 1 -- forbid town monsters
-* Line 2 -- forbid uniques
-* Line 3 -- forbid aquatic monsters
-*/
-#define vault_monster_okay(I) \
-       (mon_hook_dungeon(I) && \
-        !(r_info[I].flags1 & RF1_UNIQUE) && \
-        !(r_info[I].flags7 & RF7_UNIQUE2) && \
-        !(r_info[I].flagsr & RFR_RES_ALL) && \
-        !(r_info[I].flags7 & RF7_AQUATIC))
-
-
 /* Externs */
 #ifdef ALLOW_CAVERNS_AND_LAKES
 extern void build_lake(int type);