<ClCompile Include="..\..\src\lore\magic-types-setter.c" />\r
<ClCompile Include="..\..\src\lore\lore-calculator.c" />\r
<ClCompile Include="..\..\src\lore\lore-util.c" />\r
+ <ClCompile Include="..\..\src\monster-floor\monster-summon.c" />\r
<ClCompile Include="..\..\src\monster-floor\one-monster-placer.c" />\r
<ClCompile Include="..\..\src\monster\monster-compaction.c" />\r
<ClCompile Include="..\..\src\monster-floor\monster-death.c" />\r
<ClInclude Include="..\..\src\lore\lore-util.h" />\r
<ClInclude Include="..\..\src\mind\drs-types.h" />\r
<ClInclude Include="..\..\src\mind\snipe-types.h" />\r
+ <ClInclude Include="..\..\src\monster-floor\monster-summon.h" />\r
<ClInclude Include="..\..\src\monster-floor\one-monster-placer.h" />\r
<ClInclude Include="..\..\src\monster\monster-compaction.h" />\r
<ClInclude Include="..\..\src\monster-floor\monster-death.h" />\r
<ClCompile Include="..\..\src\monster-floor\one-monster-placer.c">
<Filter>monster-floor</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\monster-floor\monster-summon.c">
+ <Filter>monster-floor</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\cmd\cmd-basic.h">
<ClInclude Include="..\..\src\monster-floor\one-monster-placer.h">
<Filter>monster-floor</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\monster-floor\monster-summon.h">
+ <Filter>monster-floor</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
monster-floor/monster-remover.c monster-floor/monster-remover.h \
monster-floor/monster-runaway.c monster-floor/monster-runaway.h \
monster-floor/monster-safety-hiding.c monster-floor/monster-safety-hiding.h \
+ monster-floor/monster-summon.c monster-floor/monster-summon.h \
monster-floor/monster-sweep-grid.c monster-floor/monster-sweep-grid.h \
monster-floor/one-monster-placer.c monster-floor/one-monster-placer.h \
monster-floor/place-monster-types.h \
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags-resistance.h"
#include "monster/monster-describer.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster/monster-info.h"
#include "monster/monster-processor.h"
#include "monster/monster-status.h"
-#include "monster-floor/place-monster-types.h"
#include "mspell/monster-spell.h"
#include "mspell/mspell-type.h"
#include "player/player-effects.h"
#include "io/files-util.h"
#include "io/targeting.h"
#include "main/sound-definitions-table.h"
-#include "monster-race/race-flags1.h"
#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-race/race-flags1.h"
#include "monster/monster-info.h"
#include "monster/monster-status.h"
#include "monster/monster-util.h"
#include "inventory/player-inventory.h"
#include "io/files-util.h"
#include "main/sound-definitions-table.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "object/item-use-flags.h"
#include "object/object-flavor.h"
#include "inventory/inventory-object.h"
#include "inventory/player-inventory.h"
#include "main/sound-definitions-table.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "object-enchant/special-object-flags.h"
#include "object/item-use-flags.h"
#include "mind/snipe-types.h"
#include "monster/monster-describer.h"
#include "monster-floor/monster-death.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster/monster-status.h"
#include "monster/monster-info.h"
-#include "monster-floor/place-monster-types.h"
#include "object-enchant/special-object-flags.h"
#include "object-enchant/tr-types.h"
#include "object/item-use-flags.h"
#include "effect/effect-item.h"
#include "autopick/autopick.h"
#include "floor/floor-object.h"
-#include "monster-floor/monster-generator.h"
-#include "monster/monster-info.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
+#include "monster/monster-info.h"
#include "object-enchant/tr-types.h"
#include "object/object-broken.h"
#include "object/object-flags.h"
#include "io/write-diary.h"
#include "main/sound-definitions-table.h"
#include "mind/mind-mirror-master.h"
-#include "monster-floor/monster-generator.h"
-#include "monster/monster-util.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
+#include "monster/monster-util.h"
#include "player/eldritch-horror.h"
#include "player/player-class.h"
#include "player/player-damage.h"
#include "inventory/inventory-curse.h"
#include "art-definition/art-accessory-types.h"
#include "io/files-util.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "object-enchant/item-feeling.h"
#include "object-enchant/object-curse.h"
#include "mind/mind-mirror-master.h"
#include "mind/mind-ninja.h"
#include "mind/mind-warrior.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster/monster-status.h"
#include "monster-floor/place-monster-types.h"
#include "player/avatar.h"
#include "floor/floor-object.h"
#include "floor/floor.h"
#include "io/write-diary.h"
+#include "lore/lore-store.h"
#include "main/music-definitions-table.h"
#include "market/arena-info-table.h"
-#include "lore/lore-store.h"
+#include "monster-floor/monster-object.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/monster-race-hook.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags2.h"
#include "monster/monster-describer.h"
#include "monster/monster-description-types.h"
#include "monster/monster-flag-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-list.h"
-#include "monster-floor/monster-object.h"
-#include "monster-floor/place-monster-types.h"
#include "monster/smart-learn-types.h"
#include "object-enchant/apply-magic.h"
#include "object-enchant/artifact.h"
#include "monster-floor/monster-generator.h"
#include "dungeon/dungeon.h"
#include "floor/floor.h"
-#include "main/sound-definitions-table.h"
+#include "monster-floor/monster-summon.h" // todo 相互依存してしまった、何とかする.
#include "monster-floor/one-monster-placer.h"
#include "monster-floor/place-monster-types.h"
#include "monster-race/monster-race-hook.h"
static MONSTER_IDX place_monster_m_idx = 0;
/*!
- * @var summon_specific_who
- * @brief 召喚を行ったプレイヤーあるいはモンスターのIDを示すグローバル変数 / Hack -- the index of the summoning monster
- * @todo summon_specific_who グローバル変数の除去と関数引数への代替を行う
- */
-int summon_specific_who = -1;
-
-/*!
- * @var summon_unique_okay
- * @brief 召喚対象にユニークを含めるかを示すグローバル変数 / summoning unique enable
- * @todo summon_unique_okay グローバル変数の除去と関数引数への代替を行う
- */
-bool summon_unique_okay = FALSE;
-
-/*!
* @brief モンスター1体を目標地点に可能な限り近い位置に生成する / improved version of scatter() for place monster
* @param player_ptr プレーヤーへの参照ポインタ
* @param r_idx 生成モンスター種族
* @return 成功したらtrue
*
*/
-static bool mon_scatter(player_type *player_ptr, MONRACE_IDX r_idx, POSITION *yp, POSITION *xp, POSITION y, POSITION x, POSITION max_dist)
+bool mon_scatter(player_type *player_ptr, MONRACE_IDX r_idx, POSITION *yp, POSITION *xp, POSITION y, POSITION x, POSITION max_dist)
{
POSITION place_x[MON_SCAT_MAXD];
POSITION place_y[MON_SCAT_MAXD];
}
/*!
- * todo ここにplayer_typeを追加すると関数ポインタ周りの収拾がつかなくなるので保留
- * @brief モンスターが召喚の基本条件に合っているかをチェックする / Hack -- help decide if a monster race is "okay" to summon
- * @param r_idx チェックするモンスター種族ID
- * @return 召喚対象にできるならばTRUE
- */
-static bool summon_specific_okay(MONRACE_IDX r_idx)
-{
- monster_race *r_ptr = &r_info[r_idx];
- monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[summon_specific_who];
- if (!mon_hook_dungeon(r_idx))
- return FALSE;
-
- if (summon_specific_who > 0) {
- if (monster_has_hostile_align(p_ptr, m_ptr, 0, 0, r_ptr))
- return FALSE;
- } else if (summon_specific_who < 0) {
- if (monster_has_hostile_align(p_ptr, NULL, 10, -10, r_ptr)) {
- if (!one_in_(ABS(p_ptr->align) / 2 + 1))
- return FALSE;
- }
- }
-
- if (!summon_unique_okay && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)))
- return FALSE;
-
- if (!summon_specific_type)
- return TRUE;
-
- if ((summon_specific_who < 0) && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) && monster_has_hostile_align(p_ptr, NULL, 10, -10, r_ptr))
- return FALSE;
-
- if ((r_ptr->flags7 & RF7_CHAMELEON) && (d_info[p_ptr->dungeon_idx].flags1 & DF1_CHAMELEON))
- return TRUE;
-
- return (check_summon_specific(p_ptr, m_ptr->r_idx, r_idx));
-}
-
-/*!
- * @brief モンスターを召喚により配置する / Place a monster (of the specified "type") near the given location. Return TRUE if a monster was actually summoned.
- * @param player_ptr プレーヤーへの参照ポインタ
- * @param who 召喚主のモンスター情報ID
- * @param y1 目標地点y座標
- * @param x1 目標地点x座標
- * @param lev 相当生成階
- * @param type 召喚種別
- * @param mode 生成オプション
- * @return 召喚できたらtrueを返す
- */
-bool summon_specific(player_type *player_ptr, MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode)
-{
- floor_type *floor_ptr = player_ptr->current_floor_ptr;
- if (floor_ptr->inside_arena)
- return FALSE;
-
- POSITION x, y;
- if (!mon_scatter(player_ptr, 0, &y, &x, y1, x1, 2))
- return FALSE;
-
- summon_specific_who = who;
- summon_specific_type = type;
- summon_unique_okay = (mode & PM_ALLOW_UNIQUE) ? TRUE : FALSE;
- get_mon_num_prep(player_ptr, summon_specific_okay, get_monster_hook2(player_ptr, y, x));
-
- MONRACE_IDX r_idx = get_mon_num(player_ptr, (floor_ptr->dun_level + lev) / 2 + 5, 0);
- if (!r_idx) {
- summon_specific_type = 0;
- return FALSE;
- }
-
- if ((type == SUMMON_BLUE_HORROR) || (type == SUMMON_DAWN))
- mode |= PM_NO_KAGE;
-
- if (!place_monster_aux(player_ptr, who, y, x, r_idx, mode)) {
- summon_specific_type = 0;
- return FALSE;
- }
-
- summon_specific_type = 0;
- sound(SOUND_SUMMON);
- return TRUE;
-}
-
-/*!
- * @brief 特定モンスター種族を召喚により生成する / A "dangerous" function, creates a pet of the specified type
- * @param player_ptr プレーヤーへの参照ポインタ
- * @param who 召喚主のモンスター情報ID
- * @param oy 目標地点y座標
- * @param ox 目標地点x座標
- * @param r_idx 生成するモンスター種族ID
- * @param mode 生成オプション
- * @return 召喚できたらtrueを返す
- */
-bool summon_named_creature(player_type *player_ptr, MONSTER_IDX who, POSITION oy, POSITION ox, MONRACE_IDX r_idx, BIT_FLAGS mode)
-{
- if (r_idx >= max_r_idx)
- return FALSE;
-
- POSITION x, y;
- if (player_ptr->current_floor_ptr->inside_arena)
- return FALSE;
-
- if (!mon_scatter(player_ptr, r_idx, &y, &x, oy, ox, 2))
- return FALSE;
-
- return place_monster_aux(player_ptr, who, y, x, r_idx, (mode | PM_NO_KAGE));
-}
-
-/*!
* @brief モンスターを増殖生成する / Let the given monster attempt to reproduce.
* @param player_ptr プレーヤーへの参照ポインタ
* @param m_idx 増殖するモンスター情報ID
#include "system/angband.h"
-extern int summon_specific_who;
-extern bool summon_unique_okay;
-
-bool summon_specific(player_type *player_ptr, MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode);
-bool summon_named_creature(player_type *player_ptr, MONSTER_IDX who, POSITION oy, POSITION ox, MONRACE_IDX r_idx, BIT_FLAGS mode);
+bool mon_scatter(player_type *player_ptr, MONRACE_IDX r_idx, POSITION *yp, POSITION *xp, POSITION y, POSITION x, POSITION max_dist);
bool multiply_monster(player_type *player_ptr, MONSTER_IDX m_idx, bool clone, BIT_FLAGS mode);
bool place_monster_aux(player_type *player_ptr, MONSTER_IDX who, POSITION y, POSITION x, MONRACE_IDX r_idx, BIT_FLAGS mode);
bool place_monster(player_type *player_ptr, POSITION y, POSITION x, BIT_FLAGS mode);
--- /dev/null
+#include "monster-floor/monster-summon.h"
+#include "dungeon/dungeon.h"
+#include "floor/floor.h"
+#include "main/sound-definitions-table.h"
+#include "monster-floor/monster-generator.h" // todo 相互依存してしまった、何とかする.
+#include "monster-floor/place-monster-types.h"
+#include "monster-race/monster-race-hook.h"
+#include "monster-race/race-flags1.h"
+#include "monster-race/race-flags7.h"
+#include "monster/monster-info.h"
+#include "monster/monster-list.h"
+#include "monster/monster-util.h"
+#include "mspell/summon-checker.h"
+#include "spell/spells-summon.h"
+#include "system/monster-type-definition.h"
+
+/*!
+ * @var summon_specific_who
+ * @brief 召喚を行ったプレイヤーあるいはモンスターのIDを示すグローバル変数 / Hack -- the index of the summoning monster
+ * @todo summon_specific_who グローバル変数の除去と関数引数への代替を行う
+ */
+int summon_specific_who = -1;
+
+/*!
+ * @var summon_unique_okay
+ * @brief 召喚対象にユニークを含めるかを示すグローバル変数 / summoning unique enable
+ * @todo summon_unique_okay グローバル変数の除去と関数引数への代替を行う
+ */
+bool summon_unique_okay = FALSE;
+
+/*!
+ * todo ここにplayer_typeを追加すると関数ポインタ周りの収拾がつかなくなるので保留
+ * @brief モンスターが召喚の基本条件に合っているかをチェックする / Hack -- help decide if a monster race is "okay" to summon
+ * @param r_idx チェックするモンスター種族ID
+ * @return 召喚対象にできるならばTRUE
+ */
+static bool summon_specific_okay(MONRACE_IDX r_idx)
+{
+ monster_race *r_ptr = &r_info[r_idx];
+ monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[summon_specific_who];
+ if (!mon_hook_dungeon(r_idx))
+ return FALSE;
+
+ if (summon_specific_who > 0) {
+ if (monster_has_hostile_align(p_ptr, m_ptr, 0, 0, r_ptr))
+ return FALSE;
+ } else if (summon_specific_who < 0) {
+ if (monster_has_hostile_align(p_ptr, NULL, 10, -10, r_ptr)) {
+ if (!one_in_(ABS(p_ptr->align) / 2 + 1))
+ return FALSE;
+ }
+ }
+
+ if (!summon_unique_okay && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)))
+ return FALSE;
+
+ if (!summon_specific_type)
+ return TRUE;
+
+ if ((summon_specific_who < 0) && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) && monster_has_hostile_align(p_ptr, NULL, 10, -10, r_ptr))
+ return FALSE;
+
+ if ((r_ptr->flags7 & RF7_CHAMELEON) && (d_info[p_ptr->dungeon_idx].flags1 & DF1_CHAMELEON))
+ return TRUE;
+
+ return (check_summon_specific(p_ptr, m_ptr->r_idx, r_idx));
+}
+
+/*!
+ * @brief モンスターを召喚により配置する / Place a monster (of the specified "type") near the given location. Return TRUE if a monster was actually summoned.
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param who 召喚主のモンスター情報ID
+ * @param y1 目標地点y座標
+ * @param x1 目標地点x座標
+ * @param lev 相当生成階
+ * @param type 召喚種別
+ * @param mode 生成オプション
+ * @return 召喚できたらtrueを返す
+ */
+bool summon_specific(player_type *player_ptr, MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode)
+{
+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ if (floor_ptr->inside_arena)
+ return FALSE;
+
+ POSITION x, y;
+ if (!mon_scatter(player_ptr, 0, &y, &x, y1, x1, 2))
+ return FALSE;
+
+ summon_specific_who = who;
+ summon_specific_type = type;
+ summon_unique_okay = (mode & PM_ALLOW_UNIQUE) ? TRUE : FALSE;
+ get_mon_num_prep(player_ptr, summon_specific_okay, get_monster_hook2(player_ptr, y, x));
+
+ MONRACE_IDX r_idx = get_mon_num(player_ptr, (floor_ptr->dun_level + lev) / 2 + 5, 0);
+ if (!r_idx) {
+ summon_specific_type = 0;
+ return FALSE;
+ }
+
+ if ((type == SUMMON_BLUE_HORROR) || (type == SUMMON_DAWN))
+ mode |= PM_NO_KAGE;
+
+ if (!place_monster_aux(player_ptr, who, y, x, r_idx, mode)) {
+ summon_specific_type = 0;
+ return FALSE;
+ }
+
+ summon_specific_type = 0;
+ sound(SOUND_SUMMON);
+ return TRUE;
+}
+
+/*!
+ * @brief 特定モンスター種族を召喚により生成する / A "dangerous" function, creates a pet of the specified type
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param who 召喚主のモンスター情報ID
+ * @param oy 目標地点y座標
+ * @param ox 目標地点x座標
+ * @param r_idx 生成するモンスター種族ID
+ * @param mode 生成オプション
+ * @return 召喚できたらtrueを返す
+ */
+bool summon_named_creature(player_type *player_ptr, MONSTER_IDX who, POSITION oy, POSITION ox, MONRACE_IDX r_idx, BIT_FLAGS mode)
+{
+ if (r_idx >= max_r_idx)
+ return FALSE;
+
+ POSITION x, y;
+ if (player_ptr->current_floor_ptr->inside_arena)
+ return FALSE;
+
+ if (!mon_scatter(player_ptr, r_idx, &y, &x, oy, ox, 2))
+ return FALSE;
+
+ return place_monster_aux(player_ptr, who, y, x, r_idx, (mode | PM_NO_KAGE));
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+extern int summon_specific_who;
+extern bool summon_unique_okay;
+
+bool summon_specific(player_type *player_ptr, MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode);
+bool summon_named_creature(player_type *player_ptr, MONSTER_IDX who, POSITION oy, POSITION ox, MONRACE_IDX r_idx, BIT_FLAGS mode);
#include "floor/floor.h"
#include "grid/grid.h"
#include "monster-floor/monster-move.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags2.h"
if (r_ptr->flags2 & RF2_MULTIPLY)
floor_ptr->num_repro++;
- warn_unique_generation();
+ warn_unique_generation(player_ptr, r_idx);
if (!is_explosive_rune_grid(g_ptr))
return TRUE;
#include "dungeon/dungeon.h"
#include "floor/floor-object.h"
#include "floor/wild.h"
+#include "monster-floor/monster-summon.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags2.h"
#include "monster-race/race-flags3.h"
#include "monster-race/race-flags7.h"
#include "monster-race/race-indice-types.h"
#include "monster/monster-describer.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-update.h"
#include "monster/monster-util.h"
#include "grid/grid.h"
#include "io/write-diary.h"
#include "melee/melee-postprocess.h"
+#include "monster-floor/monster-direction.h"
+#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-move.h"
+#include "monster-floor/monster-remover.h"
+#include "monster-floor/monster-runaway.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
+#include "monster-floor/quantum-effect.h"
#include "monster-race/race-flags-ability2.h"
#include "monster-race/race-flags-resistance.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-indice-types.h"
#include "monster/monster-describer.h"
#include "monster/monster-description-types.h"
-#include "monster-floor/monster-direction.h"
#include "monster/monster-flag-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-list.h"
-#include "monster-floor/monster-move.h"
#include "monster/monster-processor-util.h"
-#include "monster-floor/monster-remover.h"
-#include "monster-floor/monster-runaway.h"
#include "monster/monster-status.h"
#include "monster/monster-update.h"
#include "monster/monster-util.h"
-#include "monster-floor/place-monster-types.h"
-#include "monster-floor/quantum-effect.h"
#include "mspell/monster-spell.h"
#include "object-enchant/trc-types.h"
#include "pet/pet-fall-off.h"
#include "main/sound-definitions-table.h"
#include "monster-attack/monster-attack-effect.h"
#include "monster-attack/monster-attack-types.h"
+#include "monster-floor/monster-death.h"
+#include "monster-floor/monster-move.h"
+#include "monster-floor/monster-remover.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/monster-race-hook.h"
#include "monster-race/race-flags-ability2.h"
#include "monster-race/race-flags-resistance.h"
#include "monster-race/race-flags7.h"
#include "monster-race/race-flags8.h"
#include "monster-race/race-indice-types.h"
-#include "monster-floor/monster-death.h"
#include "monster/monster-describer.h"
#include "monster/monster-description-types.h"
#include "monster/monster-flag-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-list.h"
-#include "monster-floor/monster-move.h"
#include "monster/monster-processor.h"
-#include "monster-floor/monster-remover.h"
#include "monster/monster-update.h"
#include "monster/monster-util.h"
-#include "monster-floor/place-monster-types.h"
#include "monster/smart-learn-types.h"
#include "mspell/monster-spell.h"
#include "object-enchant/object-curse.h"
*/
#include "mspell/mspell-special.h"
-#include "melee/melee-postprocess.h"
#include "effect/effect-characteristics.h"
#include "main/sound-definitions-table.h"
+#include "melee/melee-postprocess.h"
+#include "monster-floor/monster-death.h"
+#include "monster-floor/monster-remover.h"
+#include "monster-floor/monster-summon.h"
#include "monster-race/race-flags7.h"
#include "monster-race/race-indice-types.h"
-#include "monster/monster-description-types.h"
-#include "monster-floor/monster-death.h"
#include "monster/monster-describer.h"
-#include "monster-floor/monster-generator.h"
+#include "monster/monster-description-types.h"
#include "monster/monster-info.h"
-#include "monster-floor/monster-remover.h"
#include "monster/monster-util.h"
#include "mspell/monster-spell.h"
#include "mspell/mspell-util.h"
#include "player/player-damage.h"
#include "player/player-effects.h"
#include "player/player-move.h"
-#include "spell/process-effect.h"
#include "spell-kind/spells-teleport.h"
+#include "spell/process-effect.h"
#include "spell/spells-type.h"
/*!
* @param player_ptr プレーヤーへの参照ポインタ
* @param m_idx 呪文を唱えるモンスターID
*/
-HIT_POINT spell_RF6_SPECIAL_BANORLUPART(player_type* target_ptr, MONSTER_IDX m_idx)
+HIT_POINT spell_RF6_SPECIAL_BANORLUPART(player_type *target_ptr, MONSTER_IDX m_idx)
{
- floor_type* floor_ptr = target_ptr->current_floor_ptr;
- monster_type* m_ptr = &floor_ptr->m_list[m_idx];
+ floor_type *floor_ptr = target_ptr->current_floor_ptr;
+ monster_type *m_ptr = &floor_ptr->m_list[m_idx];
HIT_POINT dummy_hp, dummy_maxhp;
POSITION dummy_y = m_ptr->fy;
POSITION dummy_x = m_ptr->fx;
* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
* @return ダメージ量を返す。
*/
-HIT_POINT spell_RF6_SPECIAL_ROLENTO(player_type* target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_SPECIAL_ROLENTO(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
{
int count = 0, k;
int num = 1 + randint1(3);
BIT_FLAGS mode = 0L;
- monspell_message(target_ptr, m_idx, t_idx,
- _("%^sが何か大量に投げた。", "%^s spreads something."),
- _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."),
- _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."),
- TARGET_TYPE);
+ monspell_message(target_ptr, m_idx, t_idx, _("%^sが何か大量に投げた。", "%^s spreads something."),
+ _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."), _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."), TARGET_TYPE);
for (k = 0; k < num; k++) {
count += summon_named_creature(target_ptr, m_idx, y, x, MON_GRENADE, mode);
* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
* @return ダメージ量を返す。
*/
-HIT_POINT spell_RF6_SPECIAL_B(player_type* target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_SPECIAL_B(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
{
HIT_POINT dam = -1;
- floor_type* floor_ptr = target_ptr->current_floor_ptr;
- monster_type* m_ptr = &floor_ptr->m_list[m_idx];
- monster_type* t_ptr = &floor_ptr->m_list[t_idx];
- monster_race* tr_ptr = &r_info[t_ptr->r_idx];
+ floor_type *floor_ptr = target_ptr->current_floor_ptr;
+ monster_type *m_ptr = &floor_ptr->m_list[m_idx];
+ monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+ monster_race *tr_ptr = &r_info[t_ptr->r_idx];
bool monster_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
bool monster_to_monster = (TARGET_TYPE == MONSTER_TO_MONSTER);
bool direct = player_bold(target_ptr, y, x);
disturb(target_ptr, TRUE, TRUE);
if (one_in_(3) || !direct) {
- simple_monspell_message(target_ptr, m_idx, t_idx,
- _("%^sは突然視界から消えた!", "%^s suddenly go out of your sight!"),
- _("%^sは突然急上昇して視界から消えた!", "%^s suddenly go out of your sight!"),
- TARGET_TYPE);
+ simple_monspell_message(target_ptr, m_idx, t_idx, _("%^sは突然視界から消えた!", "%^s suddenly go out of your sight!"),
+ _("%^sは突然急上昇して視界から消えた!", "%^s suddenly go out of your sight!"), TARGET_TYPE);
teleport_away(target_ptr, m_idx, 10, TELEPORT_NONMAGICAL);
target_ptr->update |= (PU_MONSTERS);
int get_damage = 0;
bool fear, dead; /* dummy */
- simple_monspell_message(target_ptr, m_idx, t_idx,
- _("%^sがあなたを掴んで空中から投げ落とした。", "%^s holds you, and drops from the sky."),
- _("%^sが%sを掴んで空中から投げ落とした。", "%^s holds %s, and drops from the sky."),
- TARGET_TYPE);
+ simple_monspell_message(target_ptr, m_idx, t_idx, _("%^sがあなたを掴んで空中から投げ落とした。", "%^s holds you, and drops from the sky."),
+ _("%^sが%sを掴んで空中から投げ落とした。", "%^s holds %s, and drops from the sky."), TARGET_TYPE);
dam = damroll(4, 8);
sound(SOUND_FALL);
if ((monster_to_player && target_ptr->levitation) || (monster_to_monster && (tr_ptr->flags7 & RF7_CAN_FLY))) {
- simple_monspell_message(target_ptr, m_idx, t_idx,
- _("あなたは静かに着地した。", "You float gently down to the ground."),
- _("%^sは静かに着地した。", "%^s floats gently down to the ground."),
- TARGET_TYPE);
+ simple_monspell_message(target_ptr, m_idx, t_idx, _("あなたは静かに着地した。", "You float gently down to the ground."),
+ _("%^sは静かに着地した。", "%^s floats gently down to the ground."), TARGET_TYPE);
} else {
- simple_monspell_message(target_ptr, m_idx, t_idx,
- _("あなたは地面に叩きつけられた。", "You crashed into the ground."),
- _("%^sは地面に叩きつけられた。", "%^s crashed into the ground."),
- TARGET_TYPE);
+ simple_monspell_message(target_ptr, m_idx, t_idx, _("あなたは地面に叩きつけられた。", "You crashed into the ground."),
+ _("%^sは地面に叩きつけられた。", "%^s crashed into the ground."), TARGET_TYPE);
dam += damroll(6, 8);
}
* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
* @return ダメージ量を返す。
*/
-HIT_POINT spell_RF6_SPECIAL(player_type* target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_SPECIAL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
{
- floor_type* floor_ptr = target_ptr->current_floor_ptr;
- monster_type* m_ptr = &floor_ptr->m_list[m_idx];
- monster_race* r_ptr = &r_info[m_ptr->r_idx];
+ floor_type *floor_ptr = target_ptr->current_floor_ptr;
+ monster_type *m_ptr = &floor_ptr->m_list[m_idx];
+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
disturb(target_ptr, TRUE, TRUE);
switch (m_ptr->r_idx) {
#include "mspell/mspell-summon.h"
#include "effect/effect-characteristics.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-indice-types.h"
#include "monster/monster-describer.h"
#include "monster/monster-description-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-status.h"
-#include "monster-floor/place-monster-types.h"
#include "mspell/monster-spell.h"
#include "mspell/mspell-util.h"
#include "player/player-move.h"
-#include "spell/process-effect.h"
#include "spell-kind/spells-launcher.h"
+#include "spell/process-effect.h"
#include "spell/spells-summon.h"
#include "spell/spells-type.h"
#include "io/targeting.h"
#include "lore/lore-calculator.h"
#include "main/sound-definitions-table.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/race-flags-ability1.h"
#include "monster-race/race-flags-ability2.h"
#include "monster-race/race-flags-resistance.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags4.h"
#include "monster/monster-describer.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-status.h"
-#include "monster-floor/place-monster-types.h"
#include "mspell/monster-spell.h"
#include "mspell/mspell-damage-calculator.h"
#include "mspell/mspell-type.h"
#include "mutation/mutation-processor.h"
#include "io/targeting.h"
-#include "monster-floor/monster-generator.h"
-#include "monster/monster-status.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
+#include "monster/monster-status.h"
#include "mutation/mutation.h"
#include "object/lite-processor.h"
#include "object/object-hook.h"
#include "player/player-effects.h"
#include "player/player-move.h"
#include "spell-kind/spells-floor.h"
-#include "spell-realm/spells-hex.h"
#include "spell-kind/spells-launcher.h"
#include "spell-kind/spells-lite.h"
#include "spell-kind/spells-sight.h"
-#include "spell/spells-summon.h"
#include "spell-kind/spells-teleport.h"
+#include "spell-realm/spells-hex.h"
+#include "spell/spells-summon.h"
#include "spell/spells-type.h"
#include "spell/spells3.h"
#include "store/store-owners.h"
* / Handle mutation effects once every 10 game turns
* @return なし
*/
-void process_world_aux_mutation(player_type* creature_ptr)
+void process_world_aux_mutation(player_type *creature_ptr)
{
if (!creature_ptr->muta2)
return;
}
if ((creature_ptr->muta2 & MUT2_EAT_LIGHT) && one_in_(3000)) {
- object_type* o_ptr;
+ object_type *o_ptr;
msg_print(_("影につつまれた。", "A shadow passes over you."));
msg_print(NULL);
}
/*
- * Unlite the area (radius 10) around player and
- * do 50 points damage to every affected monster
- */
+ * Unlite the area (radius 10) around player and
+ * do 50 points damage to every affected monster
+ */
unlite_area(creature_ptr, 50, 10);
}
if ((creature_ptr->muta2 & MUT2_WARNING) && one_in_(1000)) {
int danger_amount = 0;
for (MONSTER_IDX monster = 0; monster < creature_ptr->current_floor_ptr->m_max; monster++) {
- monster_type* m_ptr = &creature_ptr->current_floor_ptr->m_list[monster];
- monster_race* r_ptr = &r_info[m_ptr->r_idx];
+ monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[monster];
+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
if (!monster_is_valid(m_ptr))
continue;
#include "io/write-diary.h"
#include "mind/mind-warrior.h"
#include "mind/racial-vampire.h"
+#include "monster-floor/monster-remover.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags3.h"
#include "monster/monster-describer.h"
+#include "monster/monster-description-types.h"
#include "monster/monster-flag-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
-#include "monster-floor/monster-remover.h"
-#include "monster/monster-description-types.h"
-#include "monster-floor/place-monster-types.h"
#include "monster/smart-learn-types.h"
#include "object-enchant/item-feeling.h"
#include "object/object-hook.h"
#include "cmd-io/cmd-dump.h"
#include "floor/floor.h"
#include "io/write-diary.h"
-#include "monster-race/monster-race-hook.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
+#include "monster-race/monster-race-hook.h"
#include "mutation/mutation.h"
#include "object-enchant/object-curse.h"
#include "object/object-flavor.h"
#include "spell-kind/spells-floor.h"
#include "spell-kind/spells-genocide.h"
#include "spell-kind/spells-launcher.h"
-#include "spell/spells-object.h"
#include "spell-kind/spells-random.h"
#include "spell-kind/spells-sight.h"
+#include "spell/spells-object.h"
#include "spell/spells-status.h"
#include "spell/spells-summon.h"
#include "spell/spells-type.h"
#include "realm/realm-arcane.h"
#include "cmd-action/cmd-spell.h"
#include "io/targeting.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "player/avatar.h"
#include "player/player-effects.h"
#include "realm/realm-craft.h"
#include "cmd-action/cmd-spell.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "mutation/mutation.h"
#include "player/player-effects.h"
#include "effect/effect-characteristics.h"
#include "floor/floor.h"
#include "io/targeting.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "player/player-class.h"
#include "player/player-effects.h"
#include "realm/realm-daemon.h"
#include "cmd-action/cmd-spell.h"
#include "io/targeting.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "player/player-class.h"
#include "player/player-damage.h"
#include "effect/spells-effect-util.h"
#include "floor/floor-object.h"
#include "io/targeting.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "object/object-generator.h"
#include "object/object-kind-hook.h"
#include "grid/grid.h"
#include "grid/trap.h"
#include "main/sound-definitions-table.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "object-enchant/item-apply-magic.h"
#include "object/object-generator.h"
#include "floor/floor.h"
#include "io/targeting.h"
#include "main/sound-definitions-table.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "mutation/mutation.h"
#include "player/avatar.h"
#include "player/player-damage.h"
#include "player/player-effects.h"
-#include "spell/spells-type.h"
#include "spell-kind/earthquake.h"
#include "spell-kind/spells-floor.h"
#include "spell-kind/spells-genocide.h"
#include "spell-realm/spells-trump.h"
#include "floor/floor.h"
#include "io/targeting.h"
-#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
#include "mutation/mutation.h"
#include "player/avatar.h"
#include "player/player-effects.h"
#include "spell-kind/earthquake.h"
-#include "spell-kind/spells-random.h"
#include "spell-kind/spells-charm.h"
#include "spell-kind/spells-floor.h"
#include "spell-kind/spells-lite.h"
#include "spell-kind/spells-neighbor.h"
+#include "spell-kind/spells-random.h"
#include "spell-kind/spells-sight.h"
#include "spell-kind/spells-teleport.h"
#include "spell/spells-status.h"
#include "floor/floor.h"
#include "inventory/inventory-object.h"
#include "inventory/player-inventory.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/race-indice-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-status.h"
-#include "monster-floor/place-monster-types.h"
#include "monster/smart-learn-types.h"
#include "object/item-use-flags.h"
#include "object/object-hook.h"
#include "mind/mind-force-trainer.h"
#include "mind/mind-sniper.h"
#include "mind/mind.h"
+#include "monster-floor/monster-generator.h"
+#include "monster-floor/monster-remover.h"
+#include "monster-floor/monster-summon.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags7.h"
#include "monster/monster-describer.h"
#include "monster/monster-flag-types.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-info.h"
#include "monster/monster-list.h"
#include "monster/monster-processor.h"
-#include "monster-floor/monster-remover.h"
#include "monster/monster-status.h"
#include "monster/monster-update.h"
#include "monster/monster-util.h"
-#include "monster-floor/place-monster-types.h"
#include "mspell/monster-spell.h"
#include "object-enchant/artifact.h"
#include "object-enchant/item-feeling.h"
#include "io/targeting.h"
#include "io/write-diary.h"
#include "market/arena.h"
-#include "monster/monster-status.h"
-#include "monster/monster-description-types.h"
-#include "monster/monster-describer.h"
#include "monster-floor/monster-generator.h"
-#include "monster/monster-info.h"
#include "monster-floor/monster-remover.h"
+#include "monster-floor/monster-summon.h"
#include "monster-floor/place-monster-types.h"
+#include "monster/monster-describer.h"
+#include "monster/monster-description-types.h"
+#include "monster/monster-info.h"
+#include "monster/monster-status.h"
#include "monster/smart-learn-types.h"
#include "mspell/monster-spell.h"
#include "mutation/mutation.h"