#include "wild.h"
#include "warning.h"
#include "player-status.h"
+#include "monster-spell.h"
#define HORDE_NOGOOD 0x01 /*!< (未実装フラグ)HORDE生成でGOODなモンスターの生成を禁止する? */
#define HORDE_NOEVIL 0x02 /*!< (未実装フラグ)HORDE生成でEVILなモンスターの生成を禁止する? */
/*!
- * @var horror_desc
- * @brief ELDRITCH HORROR効果時のモンスターの形容メッセージ(通常時)
- */
-concptr horror_desc[MAX_SAN_HORROR] =
-{
-#ifdef JP
- "忌まわしい",
- "底知れぬ",
- "ぞっとする",
- "破滅的な",
- "冒涜的な",
-
- "いやな",
- "恐ろしい",
- "不潔な",
- "容赦のない",
- "おぞましい",
-
- "地獄の",
- "身の毛もよだつ",
- "地獄の",
- "忌まわしい",
- "悪夢のような",
-
- "嫌悪を感じる",
- "罰当たりな",
- "恐い",
- "不浄な",
- "言うもおぞましい",
-#else
- "abominable",
- "abysmal",
- "appalling",
- "baleful",
- "blasphemous",
-
- "disgusting",
- "dreadful",
- "filthy",
- "grisly",
- "hideous",
-
- "hellish",
- "horrible",
- "infernal",
- "loathsome",
- "nightmarish",
-
- "repulsive",
- "sacrilegious",
- "terrible",
- "unclean",
- "unspeakable",
-#endif
-
-};
-
-/*!
- * @var funny_desc
- * @brief ELDRITCH HORROR効果時のモンスターの形容メッセージ(幻覚状態時)
- */
-concptr funny_desc[MAX_SAN_FUNNY] =
-{
-#ifdef JP
- "間抜けな",
- "滑稽な",
- "ばからしい",
- "無味乾燥な",
- "馬鹿げた",
-
- "笑える",
- "ばかばかしい",
- "ぶっとんだ",
- "いかした",
- "ポストモダンな",
-
- "ファンタスティックな",
- "ダダイズム的な",
- "キュビズム的な",
- "宇宙的な",
- "卓越した",
-
- "理解不能な",
- "ものすごい",
- "驚くべき",
- "信じられない",
- "カオティックな",
-
- "野性的な",
- "非常識な",
-#else
- "silly",
- "hilarious",
- "absurd",
- "insipid",
- "ridiculous",
-
- "laughable",
- "ludicrous",
- "far-out",
- "groovy",
- "postmodern",
-
- "fantastic",
- "dadaistic",
- "cubistic",
- "cosmic",
- "awesome",
-
- "incomprehensible",
- "fabulous",
- "amazing",
- "incredible",
- "chaotic",
-
- "wild",
- "preposterous",
-#endif
-
-};
-
-/*!
- * @var funny_comments
- * @brief ELDRITCH HORROR効果時の幻覚時間延長を示す錯乱表現
- */
-concptr funny_comments[MAX_SAN_COMMENT] =
-{
-#ifdef JP
- /* nuke me */
- "最高だぜ!",
- "うひょー!",
- "いかすぜ!",
- "すんばらしい!",
- "ぶっとびー!"
-#else
- "Wow, cosmic, man!",
- "Rad!",
- "Groovy!",
- "Cool!",
- "Far out!"
-#endif
-
-};
-
-
-/*!
* @brief モンスターの目標地点をセットする / Set the target of counter attack
* @param m_ptr モンスターの参照ポインタ
* @param y 目標y座標
delete_object_idx(this_o_idx);
}
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
-
(void)WIPE(m_ptr, monster_type);
/* Count monsters */
m_cnt--;
- /* Visual update */
lite_spot(y, x);
-
- /* Update some things */
if (r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK))
+ {
p_ptr->update |= (PU_MON_LITE);
+ }
}
void delete_monster(POSITION y, POSITION x)
{
grid_type *g_ptr;
-
- /* Paranoia */
if (!in_bounds(y, x)) return;
/* Check the grid */
* @param i2 配列移動先添字
* @return なし
*/
-static void compact_monsters_aux(IDX i1, IDX i2)
+static void compact_monsters_aux(MONSTER_IDX i1, MONSTER_IDX i2)
{
POSITION y, x;
int i;
}
}
+/*!
+* @brief モンスターIDを取り、モンスター名をm_nameに代入する /
+* @param m_idx モンスターID
+* @param m_name モンスター名を入力する配列
+*/
+void monster_name(MONSTER_IDX m_idx, char* m_name)
+{
+ monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx];
+ monster_desc(m_name, m_ptr, 0x00);
+}
/*!
* @brief カメレオンの変身対象となるモンスターかどうか判定する / Hack -- the index of the summoning monster
* @param r_idx モンスター種族ID
* @return 対象にできるならtrueを返す
+ * @todo グローバル変数対策の上 monster_hook.cへ移す。
*/
static bool monster_hook_chameleon(MONRACE_IDX r_idx)
{
r_ptr = &r_info[r_idx];
chameleon_change_m_idx = 0;
-
- /* Paranoia */
if (!r_idx) return;
}
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
-
m_ptr->r_idx = r_idx;
m_ptr->ap_r_idx = r_idx;
update_monster(m_idx, FALSE);
(r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK)))
p_ptr->update |= (PU_MON_LITE);
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, TRUE);
-
if (born)
{
/* Sub-alignment of a chameleon */
* @brief たぬきの変身対象となるモンスターかどうか判定する / Hook for Tanuki
* @param r_idx モンスター種族ID
* @return 対象にできるならtrueを返す
+ * @todo グローバル変数対策の上 monster_hook.cへ移す。
*/
static bool monster_hook_tanuki(MONRACE_IDX r_idx)
{
* @param r_idx モンスター種族ID
* @return モンスター種族の表層ID
*/
-static IDX initial_r_appearance(MONRACE_IDX r_idx)
+static MONRACE_IDX initial_r_appearance(MONRACE_IDX r_idx, BIT_FLAGS generate_mode)
{
int attempts = 1000;
- IDX ap_r_idx;
- DEPTH min = MIN(current_floor_ptr->base_level-5, 50);
+ MONRACE_IDX ap_r_idx;
+ DEPTH min = MIN(current_floor_ptr->base_level - 5, 50);
- if (p_ptr->pseikaku == SEIKAKU_CHARGEMAN)
+ if (p_ptr->pseikaku == SEIKAKU_CHARGEMAN && !(generate_mode & (PM_MULTIPLY | PM_KAGE)))
{
if (current_floor_ptr->base_level == 0 || one_in_(5)) return MON_ALIEN_JURAL;
}
* @param r_ptr モンスター種族の参照ポインタ
* @return 加速値
*/
-byte get_mspeed(monster_race *r_ptr)
+SPEED get_mspeed(monster_race *r_ptr)
{
/* Extract the monster base speed */
- int mspeed = r_ptr->speed;
+ SPEED mspeed = r_ptr->speed;
/* Hack -- small racial variety */
if (!(r_ptr->flags1 & RF1_UNIQUE) && !p_ptr->inside_arena)
if (mspeed > 199) mspeed = 199;
- return (byte)mspeed;
+ return mspeed;
}
*/
static bool place_monster_one(MONSTER_IDX who, POSITION y, POSITION x, MONRACE_IDX r_idx, BIT_FLAGS mode)
{
- /* Access the location */
grid_type *g_ptr = ¤t_floor_ptr->grid_array[y][x];
monster_type *m_ptr;
monster_race *r_ptr = &r_info[r_idx];
/* Verify location */
if (!in_bounds(y, x)) return (FALSE);
-
- /* Paranoia */
if (!r_idx) return (FALSE);
-
- /* Paranoia */
if (!r_ptr->name) return (FALSE);
if (!(mode & PM_IGNORE_TERRAIN))
/* Save the race */
m_ptr->r_idx = r_idx;
- m_ptr->ap_r_idx = initial_r_appearance(r_idx);
+ m_ptr->ap_r_idx = initial_r_appearance(r_idx, mode);
/* No flags */
m_ptr->mflag = 0;
bool summon_named_creature(MONSTER_IDX who, POSITION oy, POSITION ox, MONRACE_IDX r_idx, BIT_FLAGS mode)
{
POSITION x, y;
-
- /* Paranoia */
/* if (!r_idx) return; */
/* Prevent illegal monsters */