Hengband  2.2.1
データ構造 | マクロ定義 | 型定義 | 関数 | 変数
monster.h ファイル
#include "monsterrace.h"
monster.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  monster_type
 

マクロ定義

#define MAX_NAZGUL_NUM   5
 
#define MTIMED_CSLEEP   0 /* Monster is sleeping */
 
#define MTIMED_FAST   1 /* Monster is temporarily fast */
 
#define MTIMED_SLOW   2 /* Monster is temporarily slow */
 
#define MTIMED_STUNNED   3 /* Monster is stunned */
 
#define MTIMED_CONFUSED   4 /* Monster is confused */
 
#define MTIMED_MONFEAR   5 /* Monster is afraid */
 
#define MTIMED_INVULNER   6 /* Monster is temporarily invulnerable */
 
#define MAX_MTIMED   7
 
#define MON_CSLEEP(M_PTR)   ((M_PTR)->mtimed[MTIMED_CSLEEP])
 
#define MON_FAST(M_PTR)   ((M_PTR)->mtimed[MTIMED_FAST])
 
#define MON_SLOW(M_PTR)   ((M_PTR)->mtimed[MTIMED_SLOW])
 
#define MON_STUNNED(M_PTR)   ((M_PTR)->mtimed[MTIMED_STUNNED])
 
#define MON_CONFUSED(M_PTR)   ((M_PTR)->mtimed[MTIMED_CONFUSED])
 
#define MON_MONFEAR(M_PTR)   ((M_PTR)->mtimed[MTIMED_MONFEAR])
 
#define MON_INVULNER(M_PTR)   ((M_PTR)->mtimed[MTIMED_INVULNER])
 
#define SUB_ALIGN_NEUTRAL   0x0000
 
#define SUB_ALIGN_EVIL   0x0001
 
#define SUB_ALIGN_GOOD   0x0002
 
#define MFLAG_VIEW   0x01 /* Monster is in line of sight */
 
#define MFLAG_LOS   0x02 /* Monster is marked for project_all_los() */
 
#define MFLAG_XXX2   0x04 /* (unused) */
 
#define MFLAG_ETF   0x08 /* Monster is entering the field. */
 
#define MFLAG_BORN   0x10 /* Monster is still being born */
 
#define MFLAG_NICE   0x20 /* Monster is still being nice */
 
#define MFLAG2_KAGE   0x01 /* Monster is kage */
 
#define MFLAG2_NOPET   0x02 /* Cannot make monster pet */
 
#define MFLAG2_NOGENO   0x04 /* Cannot genocide */
 
#define MFLAG2_CHAMELEON   0x08 /* Monster is chameleon */
 
#define MFLAG2_NOFLOW   0x10 /* Monster is in no_flow_by_smell mode */
 
#define MFLAG2_SHOW   0x20 /* Monster is recently memorized */
 
#define MFLAG2_MARK   0x40 /* Monster is currently memorized */
 
#define SM_RES_ACID   0x00000001
 モンスターの学習フラグ: プレイヤーに酸耐性あり [詳解]
 
#define SM_RES_ELEC   0x00000002
 モンスターの学習フラグ: プレイヤーに電撃耐性あり [詳解]
 
#define SM_RES_FIRE   0x00000004
 モンスターの学習フラグ: プレイヤーに火炎耐性あり [詳解]
 
#define SM_RES_COLD   0x00000008
 モンスターの学習フラグ: プレイヤーに冷気耐性あり [詳解]
 
#define SM_RES_POIS   0x00000010
 モンスターの学習フラグ: プレイヤーに毒耐性あり [詳解]
 
#define SM_RES_NETH   0x00000020
 モンスターの学習フラグ: プレイヤーに地獄耐性あり [詳解]
 
#define SM_RES_LITE   0x00000040
 モンスターの学習フラグ: プレイヤーに閃光耐性あり [詳解]
 
#define SM_RES_DARK   0x00000080
 モンスターの学習フラグ: プレイヤーに暗黒耐性あり [詳解]
 
#define SM_RES_FEAR   0x00000100
 モンスターの学習フラグ: プレイヤーに恐怖耐性あり [詳解]
 
#define SM_RES_CONF   0x00000200
 モンスターの学習フラグ: プレイヤーに混乱耐性あり [詳解]
 
#define SM_RES_CHAOS   0x00000400
 モンスターの学習フラグ: プレイヤーにカオス耐性あり [詳解]
 
#define SM_RES_DISEN   0x00000800
 モンスターの学習フラグ: プレイヤーに劣化耐性あり [詳解]
 
#define SM_RES_BLIND   0x00001000
 モンスターの学習フラグ: プレイヤーに盲目耐性あり [詳解]
 
#define SM_RES_NEXUS   0x00002000
 モンスターの学習フラグ: プレイヤーに因果混乱耐性あり [詳解]
 
#define SM_RES_SOUND   0x00004000
 モンスターの学習フラグ: プレイヤーに轟音耐性あり [詳解]
 
#define SM_RES_SHARD   0x00008000
 モンスターの学習フラグ: プレイヤーに破片耐性あり [詳解]
 
#define SM_OPP_ACID   0x00010000
 モンスターの学習フラグ: プレイヤーに二重酸耐性あり [詳解]
 
#define SM_OPP_ELEC   0x00020000
 モンスターの学習フラグ: プレイヤーに二重電撃耐性あり [詳解]
 
#define SM_OPP_FIRE   0x00040000
 モンスターの学習フラグ: プレイヤーに二重火炎耐性あり [詳解]
 
#define SM_OPP_COLD   0x00080000
 モンスターの学習フラグ: プレイヤーに二重冷気耐性あり [詳解]
 
#define SM_OPP_POIS   0x00100000
 モンスターの学習フラグ: プレイヤーに二重毒耐性あり [詳解]
 
#define SM_OPP_XXX1   0x00200000
 未使用 / (unused) [詳解]
 
#define SM_CLONED   0x00400000
 クローンである / Cloned [詳解]
 
#define SM_PET   0x00800000
 ペットである / Pet [詳解]
 
#define SM_IMM_ACID   0x01000000
 モンスターの学習フラグ: プレイヤーに酸免疫あり [詳解]
 
#define SM_IMM_ELEC   0x02000000
 モンスターの学習フラグ: プレイヤーに電撃免疫あり [詳解]
 
#define SM_IMM_FIRE   0x04000000
 モンスターの学習フラグ: プレイヤーに火炎免疫あり [詳解]
 
#define SM_IMM_COLD   0x08000000
 モンスターの学習フラグ: プレイヤーに冷気免疫あり [詳解]
 
#define SM_FRIENDLY   0x10000000
 友好的である / Friendly [詳解]
 
#define SM_IMM_REFLECT   0x20000000
 モンスターの学習フラグ: プレイヤーに反射あり [詳解]
 
#define SM_IMM_FREE   0x40000000
 モンスターの学習フラグ: プレイヤーに麻痺耐性あり [詳解]
 
#define SM_IMM_MANA   0x80000000
 モンスターの学習フラグ: プレイヤーにMPがない [詳解]
 
#define MON_BEGGAR   12
 
#define MON_LEPER   13
 
#define MON_BLACK_MARKET   14
 
#define MON_LION_HEART   19
 
#define MON_GHB   39
 
#define MON_NOV_PRIEST   45
 
#define MON_GRIP   53
 
#define MON_WOLF   54
 
#define MON_FANG   55
 
#define MON_LOUSE   69
 
#define MON_PIRANHA   70
 
#define MON_COPPER_COINS   85
 
#define MON_NOV_PALADIN   97
 
#define MON_GREEN_G   100
 
#define MON_NOV_PRIEST_G   109
 
#define MON_SILVER_COINS   117
 
#define MON_D_ELF   122
 
#define MON_MANES   128
 
#define MON_LOST_SOUL   133
 
#define MON_ROBIN_HOOD   138
 
#define MON_NOV_PALADIN_G   147
 
#define MON_PHANTOM_W   152
 
#define MON_WOUNDED_BEAR   159
 
#define MON_D_ELF_MAGE   178
 
#define MON_D_ELF_WARRIOR   182
 
#define MON_BLUE_HORROR   189
 
#define MON_GOLD_COINS   195
 
#define MON_VORPAL_BUNNY   205
 
#define MON_MASTER_YEEK   224
 
#define MON_PRIEST   225
 
#define MON_D_ELF_PRIEST   226
 
#define MON_TIGER   230
 
#define MON_MITHRIL_COINS   239
 
#define MON_DRUID   241
 
#define MON_PINK_HORROR   242
 
#define MON_HILL_GIANT   255
 
#define MON_WERERAT   270
 
#define MON_UMBER_HULK   283
 
#define MON_ORC_CAPTAIN   285
 
#define MON_BERSERKER   293
 
#define MON_IMP   296
 
#define MON_SHAGRAT   314
 
#define MON_GORBAG   315
 
#define MON_STONE_GIANT   321
 
#define MON_LIZARD_KING   332
 
#define MON_WYVERN   334
 
#define MON_SABRE_TIGER   339
 
#define MON_D_ELF_LORD   348
 
#define MON_FIRE_VOR   354
 
#define MON_WATER_VOR   355
 
#define MON_ARCH_VILE   357
 
#define MON_COLD_VOR   358
 
#define MON_ENERGY_VOR   359
 
#define MON_IRON_GOLEM   367
 
#define MON_JADE_MONK   370
 
#define MON_D_ELF_WARLOCK   375
 
#define MON_HAGEN   383
 
#define MON_MENELDOR   384
 
#define MON_PHANTOM_B   385
 
#define MON_C_CRAWLER   395
 
#define MON_XICLOTLAN   396
 
#define MON_D_ELF_DRUID   400
 
#define MON_TROLL_PRIEST   403
 
#define MON_GWAIHIR   410
 
#define MON_ANGEL   417
 
#define MON_ADAMANT_COINS   423
 
#define MON_COLBRAN   435
 
#define MON_SPIRIT_NAGA   436
 
#define MON_GACHAPIN   441
 
#define MON_BASILISK   453
 
#define MON_ARCHANGEL   456
 
#define MON_MITHRIL_GOLEM   464
 
#define MON_THORONDOR   468
 
#define MON_SHADOW_DRAKE   471
 
#define MON_GHOST   477
 
#define MON_OGRE_SHAMAN   479
 
#define MON_GHOUL_KING   483
 
#define MON_NINJA   485
 
#define MON_BICLOPS   490
 
#define MON_IVORY_MONK   492
 
#define MON_LOG_MASTER   498
 
#define MON_ETHER_DRAKE   504
 
#define MON_GOEMON   505
 
#define MON_CHERUB   511
 
#define MON_WATER_ELEM   512
 
#define MON_JURT   517
 
#define MON_LICH   518
 
#define MON_BLOODLETTER   523
 
#define MON_HALFLING_S   539
 
#define MON_GRAV_HOUND   540
 
#define MON_REVENANT   555
 
#define MON_RAAL   557
 
#define MON_COLOSSUS   558
 
#define MON_NIGHTBLADE   564
 
#define MON_ELDER_THING   569
 
#define MON_CRYPT_THING   577
 
#define MON_NEXUS_VOR   587
 
#define MON_PLASMA_VOR   588
 
#define MON_TIME_VOR   589
 
#define MON_M_MH_DRAGON   593
 
#define MON_MANDOR   598
 
#define MON_SHIM_VOR   600
 
#define MON_SERAPH   605
 
#define MON_BARON_HELL   609
 
#define MON_KAVLAX   616
 
#define MON_ETTIN   621
 
#define MON_VAMPIRE_LORD   623
 
#define MON_JUBJUB   640
 
#define MON_G_C_DRAKE   646
 
#define MON_CLUB_DEMON   648
 
#define MON_F_ANGEL   652
 
#define MON_D_ELF_SORC   657
 
#define MON_MASTER_LICH   658
 
#define MON_RINALDO   660
 
#define MON_ARCHON   661
 
#define MON_UND_BEHOLDER   664
 
#define MON_IRON_LICH   666
 
#define MON_JACK_SHADOWS   670
 
#define MON_LLOIGOR   682
 
#define MON_DREADMASTER   690
 
#define MON_DROLEM   691
 
#define MON_DAWN   693
 
#define MON_NAZGUL   696
 
#define MON_SMAUG   697
 
#define MON_STORMBRINGER   698
 
#define MON_ULTRA_PALADIN   699
 
#define MON_G_TITAN   702
 
#define MON_S_TYRANNO   705
 
#define MON_FAFNER   712
 
#define MON_G_BALROG   720
 
#define MON_TIME_HOUND   725
 
#define MON_PLASMA_HOUND   726
 
#define MON_BULLGATES   732
 
#define MON_SANTACLAUS   733
 
#define MON_LORD_CHAOS   737
 
#define MON_TINDALOS   739
 
#define MON_DEMILICH   742
 
#define MON_NIGHTCRAWLER   744
 
#define MON_CHAOS_VOR   751
 
#define MON_AETHER_VOR   752
 
#define MON_FUNDIN   762
 
#define MON_DWORKIN   763
 
#define MON_NIGHTWALKER   768
 
#define MON_RAPHAEL   769
 
#define MON_SARUMAN   771
 
#define MON_GANDALF   772
 
#define MON_BRAND   773
 
#define MON_SHADOWLORD   774
 
#define MON_ARCHLICH   776
 
#define MON_JABBERWOCK   778
 
#define MON_CHAOS_HOUND   779
 
#define MON_ULT_BEHOLDER   781
 
#define MON_SHAMBLER   786
 
#define MON_BLEYS   789
 
#define MON_FIONA   791
 
#define MON_SKY_DRAKE   793
 
#define MON_JULIAN   794
 
#define MON_BLACK_REAVER   798
 
#define MON_CAINE   799
 
#define MON_GERARD   807
 
#define MON_UNGOLIANT   808
 
#define MON_ATLACH_NACHA   809
 
#define MON_Y_GOLONAC   810
 
#define MON_AETHER_HOUND   811
 
#define MON_WARP_DEMON   812
 
#define MON_ERIC   813
 
#define MON_UNMAKER   815
 
#define MON_CYBER   816
 
#define MON_KLING   819
 
#define MON_CORWIN   820
 
#define MON_ANGMAR   825
 
#define MON_CANTORAS   830
 
#define MON_GODZILLA   832
 
#define MON_SPAWN_CTH   836
 
#define MON_SURTUR   837
 
#define MON_TARRASQUE   838
 
#define MON_LUNGORTHIN   839
 
#define MON_CYBER_KING   843
 
#define MON_WYRM_POWER   847
 
#define MON_NODENS   849
 
#define MON_JORMUNGAND   854
 
#define MON_DESTROYER   855
 
#define MON_GOTHMOG   856
 
#define MON_G_CTHULHU   857
 
#define MON_SAURON   858
 
#define MON_UNICORN_ORD   859
 
#define MON_OBERON   860
 
#define MON_MORGOTH   861
 
#define MON_SERPENT   862
 
#define MON_ONE_RING   864
 
#define MON_CAAWS   866
 
#define MON_CULVERIN   867
 
#define MON_EBONY_MONK   870
 
#define MON_HAGURE   871
 
#define MON_OROCHI   872
 
#define MON_ECHIZEN   873
 
#define MON_SPECT_WYRM   874
 
#define MON_DIO   878
 
#define MON_OHMU   879
 
#define MON_WONG   880
 
#define MON_ZOMBI_SERPENT   883
 
#define MON_D_ELF_SHADE   886
 
#define MON_MANA_HOUND   887
 
#define MON_VENOM_WYRM   890
 
#define MON_TROLL_KING   894
 
#define MON_BAZOOKER   896
 
#define MON_SHARD_VOR   897
 
#define MON_ELF_LORD   900
 
#define MON_MASTER_MYS   916
 
#define MON_G_MASTER_MYS   917
 
#define MON_IE   921
 
#define MON_TSUCHINOKO   926
 
#define MON_GCWADL   929
 
#define MON_LOCKE_CLONE   930
 
#define MON_CALDARM   931
 
#define MON_BANORLUPART   932
 
#define MON_BANOR   933
 
#define MON_LUPART   934
 
#define MON_KENSHIROU   936
 
#define MON_W_KNIGHT   938
 
#define MON_PLANETAR   942
 
#define MON_SOLAR   943
 
#define MON_BIKETAL   945
 
#define MON_RICH   948
 
#define MON_IKETA   949
 
#define MON_B_DEATH_SWORD   953
 
#define MON_YASE_HORSE   955
 
#define MON_HORSE   956
 
#define MON_BOTEI   963
 
#define MON_KAGE   964
 
#define MON_JAIAN   967
 
#define MON_BELD   973
 
#define MON_THAT_BAT   975
 
#define MON_SHUTEN   979
 
#define MON_FENGHUANG   988
 
#define MON_KIRIN   989
 
#define MON_BAHAMUT   1000
 
#define MON_SUKE   1001
 
#define MON_KAKU   1002
 
#define MON_GHOST_Q   1003
 
#define MON_PIP   1004
 
#define MON_A_GOLD   1010
 
#define MON_A_SILVER   1011
 
#define MON_ROLENTO   1013
 
#define MON_RAOU   1018
 
#define MON_SHURYUUDAN   1023
 
#define MON_WAHHA   1031
 
#define MON_DEBBY   1032
 
#define MON_KNI_TEMPLAR   1037
 
#define MON_PALADIN   1038
 
#define MON_CHAMELEON   1040
 
#define MON_CHAMELEON_K   1041
 
#define MON_TOPAZ_MONK   1047
 
#define MON_M_MINDCRAFTER   1056
 
#define MON_ELDER_VAMPIRE   1058
 
#define MON_NOBORTA   1059
 
#define MON_MORI_TROLL   1060
 
#define MON_BARNEY   1061
 
#define MON_GROO   1062
 
#define MON_LOUSY   1063
 
#define MON_WYRM_SPACE   1064
 
#define MON_JIZOTAKO   1065
 
#define MON_TANUKI   1067
 
#define MON_ALIEN_JURAL   1082
 
#define MON_HATOPOPPO   1083
 
#define MON_KOGAN   1096
 
#define PM_ALLOW_SLEEP   0x00000001
 モンスター生成フラグ: 眠っている状態で生成されても良い [詳解]
 
#define PM_ALLOW_GROUP   0x00000002
 モンスター生成フラグ: 集団生成されても良い [詳解]
 
#define PM_FORCE_FRIENDLY   0x00000004
 モンスター生成フラグ: 必ず友好的に生成される [詳解]
 
#define PM_FORCE_PET   0x00000008
 モンスター生成フラグ: 必ずペットとして生成される [詳解]
 
#define PM_NO_KAGE   0x00000010
 モンスター生成フラグ: 必ずあやしい影としては生成されない [詳解]
 
#define PM_NO_PET   0x00000020
 モンスター生成フラグ: 必ずペットとして生成されない [詳解]
 
#define PM_ALLOW_UNIQUE   0x00000040
 モンスター生成フラグ: ユニークの選択生成を許可する [詳解]
 
#define PM_IGNORE_TERRAIN   0x00000080
 モンスター生成フラグ: 侵入可能地形を考慮せずに生成する [詳解]
 
#define PM_HASTE   0x00000100
 モンスター生成フラグ: 加速状態で生成する [詳解]
 
#define PM_KAGE   0x00000200
 モンスター生成フラグ: 必ずあやしい影として生成する [詳解]
 
#define PM_MULTIPLY   0x00000400
 モンスター生成フラグ: 増殖処理時として生成する [詳解]
 
#define MD_OBJECTIVE   0x00000001 /* Objective (or Reflexive) */
 
#define MD_POSSESSIVE   0x00000002 /* Possessive (or Reflexive) */
 
#define MD_INDEF_HIDDEN   0x00000004 /* Use indefinites for hidden monsters ("something") */
 
#define MD_INDEF_VISIBLE   0x00000008 /* Use indefinites for visible monsters ("a kobold") */
 
#define MD_PRON_HIDDEN   0x00000010 /* Pronominalize hidden monsters */
 
#define MD_PRON_VISIBLE   0x00000020 /* Pronominalize visible monsters */
 
#define MD_ASSUME_HIDDEN   0x00000040 /* Assume the monster is hidden */
 
#define MD_ASSUME_VISIBLE   0x00000080 /* Assume the monster is visible */
 
#define MD_TRUE_NAME   0x00000100 /* Chameleon's true name */
 
#define MD_IGNORE_HALLU   0x00000200 /* Ignore hallucination, and penetrate shape change */
 
#define MD_WRONGDOER_NAME   (MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE) /* 加害明記向け */
 
#define CEM_RIDING   0x0001
 
#define CEM_P_CAN_ENTER_PATTERN   0x0002
 
#define DRS_ACID   1
 
#define DRS_ELEC   2
 
#define DRS_FIRE   3
 
#define DRS_COLD   4
 
#define DRS_POIS   5
 
#define DRS_NETH   6
 
#define DRS_LITE   7
 
#define DRS_DARK   8
 
#define DRS_FEAR   9
 
#define DRS_CONF   10
 
#define DRS_CHAOS   11
 
#define DRS_DISEN   12
 
#define DRS_BLIND   13
 
#define DRS_NEXUS   14
 
#define DRS_SOUND   15
 
#define DRS_SHARD   16
 
#define DRS_FREE   30
 
#define DRS_MANA   31
 
#define DRS_REFLECT   32
 
#define is_friendly(A)   (bool)(((A)->smart & SM_FRIENDLY) ? TRUE : FALSE)
 
#define is_friendly_idx(MONSTER_IDX)   (bool)((MONSTER_IDX) > 0 && is_friendly(&p_ptr->current_floor_ptr->m_list[(MONSTER_IDX)]))
 
#define is_pet(A)   (bool)(((A)->smart & SM_PET) ? TRUE : FALSE)
 
#define is_hostile(A)   (bool)((is_friendly(A) || is_pet(A)) ? FALSE : TRUE)
 
#define is_original_ap(A)   (bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE)
 

型定義

typedef bool(* monsterrace_hook_type) (MONRACE_IDX r_idx)
 
typedef struct monster_type monster_type
 

関数

bool place_monster_aux (MONSTER_IDX who, POSITION y, POSITION x, MONRACE_IDX r_idx, BIT_FLAGS mode)
 一般的なモンスター生成処理のサブルーチン / Attempt to place a monster of the given race at the given location [詳解]
 
bool place_monster (POSITION y, POSITION x, BIT_FLAGS mode)
 一般的なモンスター生成処理のメインルーチン / Attempt to place a monster of the given race at the given location [詳解]
 
bool alloc_horde (POSITION y, POSITION x)
 指定地点に1種類のモンスター種族による群れを生成する [詳解]
 
bool alloc_guardian (bool def_val)
 ダンジョンの主生成を試みる / Put the Guardian [詳解]
 
bool alloc_monster (POSITION dis, BIT_FLAGS mode)
 ダンジョンの初期配置モンスターを生成1回生成する / Attempt to allocate a random monster in the dungeon. [詳解]
 
void monster_desc (char *desc, monster_type *m_ptr, BIT_FLAGS mode)
 モンスターの呼称を作成する / Build a string describing a monster in some way. [詳解]
 
void monster_name (MONSTER_IDX m_idx, char *m_name)
 モンスターIDを取り、モンスター名をm_nameに代入する / [詳解]
 
void roff_top (MONRACE_IDX r_idx)
 モンスター情報のヘッダを記述する Hack – Display the "name" and "attr/chars" of a monster race [詳解]
 
void screen_roff (MONRACE_IDX r_idx, BIT_FLAGS mode)
 モンスター情報の表示と共に画面を一時消去するサブルーチン / Hack – describe the given monster race at the top of the screen [詳解]
 
void display_roff (MONRACE_IDX r_idx)
 モンスター情報の現在のウィンドウに表示する / Hack – describe the given monster race in the current "term" window [詳解]
 
void output_monster_spoiler (MONRACE_IDX r_idx, void(*roff_func)(TERM_COLOR attr, concptr str))
 モンスター詳細情報を自動スポイラー向けに出力する / Hack – output description of the given monster race [詳解]
 
concptr extract_note_dies (MONRACE_IDX r_idx)
 モンスターを撃破した際の述語メッセージを返す / Return monster death string [詳解]
 
void monster_death (MONSTER_IDX m_idx, bool drop_item)
 モンスターが死亡した時の処理 / Handle the "death" of a monster. [詳解]
 
monsterrace_hook_type get_monster_hook (void)
 プレイヤーの現在の広域マップ座標から得た地勢を元にモンスターの生成条件関数を返す [詳解]
 
monsterrace_hook_type get_monster_hook2 (POSITION y, POSITION x)
 指定された広域マップ座標の地勢を元にモンスターの生成条件関数を返す [詳解]
 
void set_friendly (monster_type *m_ptr)
 モンスターを友好的にする [詳解]
 
void set_pet (monster_type *m_ptr)
 モンスターをペットにする [詳解]
 
void set_hostile (monster_type *m_ptr)
 モンスターを敵に回す Makes the monster hostile towards the player [詳解]
 
void anger_monster (monster_type *m_ptr)
 モンスターを怒らせる Anger the monster [詳解]
 
bool monster_can_cross_terrain (FEAT_IDX feat, monster_race *r_ptr, BIT_FLAGS16 mode)
 モンスターが地形を踏破できるかどうかを返す Check if monster can cross terrain [詳解]
 
bool monster_can_enter (POSITION y, POSITION x, monster_race *r_ptr, BIT_FLAGS16 mode)
 指定された座標の地形をモンスターが踏破できるかどうかを返す Strictly check if monster can enter the grid [詳解]
 
bool are_enemies (monster_type *m_ptr1, monster_type *m_ptr2)
 モンスターの属性の基づいた敵対関係の有無を返す Check if two monsters are enemies [詳解]
 
bool monster_has_hostile_align (monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr)
 モンスターがプレイヤーに対して敵意を抱くかどうかを返す Check if this monster race has "hostile" alignment [詳解]
 
void dice_to_string (int base_damage, int dice_num, int dice_side, int dice_mult, int dice_div, char *msg)
 ダイス目を文字列に変換する [詳解]
 
concptr look_mon_desc (monster_type *m_ptr, BIT_FLAGS mode)
 
int get_monster_crowd_number (MONSTER_IDX m_idx)
 指定したモンスターに隣接しているモンスターの数を返す。 / Count number of adjacent monsters [詳解]
 
void message_pain (MONSTER_IDX m_idx, HIT_POINT dam)
 ダメージを受けたモンスターの様子を記述する / Dump a message describing a monster's reaction to damage [詳解]
 
void set_target (monster_type *m_ptr, POSITION y, POSITION x)
 モンスターの目標地点をセットする / Set the target of counter attack [詳解]
 
void reset_target (monster_type *m_ptr)
 モンスターの目標地点をリセットする / Reset the target of counter attack [詳解]
 
monster_racereal_r_ptr (monster_type *m_ptr)
 モンスターの真の種族を返す / Extract monster race pointer of a monster's true form [詳解]
 
MONRACE_IDX real_r_idx (monster_type *m_ptr)
 
void delete_monster_idx (MONSTER_IDX i)
 モンスター配列からモンスターを消去する / Delete a monster by index. [詳解]
 
void delete_monster (POSITION y, POSITION x)
 指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location [詳解]
 
void compact_monsters (int size)
 モンスター情報配列を圧縮する / Compact and Reorder the monster list [詳解]
 
void wipe_m_list (void)
 プレイヤーのフロア離脱に伴う全モンスター配列の消去 / Delete/Remove all the monsters when the player leaves the level [詳解]
 
MONSTER_IDX m_pop (void)
 モンスター配列の空きを探す / Acquires and returns the index of a "free" monster. [詳解]
 
errr get_mon_num_prep (monsterrace_hook_type monster_hook, monsterrace_hook_type monster_hook2)
 モンスター生成制限関数最大2つから / Apply a "monster restriction function" to the "monster allocation table" [詳解]
 
MONRACE_IDX get_mon_num (DEPTH level)
 生成モンスター種族を1種生成テーブルから選択する [詳解]
 
int lore_do_probe (MONRACE_IDX r_idx)
 モンスターの調査による思い出補完処理 / Learn about a monster (by "probing" it) [詳解]
 
void lore_treasure (MONSTER_IDX m_idx, ITEM_NUMBER num_item, ITEM_NUMBER num_gold)
 モンスターの撃破に伴うドロップ情報の保管処理 / Take note that the given monster just dropped some treasure [詳解]
 
void update_monster (MONSTER_IDX m_idx, bool full)
 モンスターの各情報を更新する / This function updates the monster record of the given monster [詳解]
 
void update_monsters (bool full)
 単純に生存している全モンスターの更新処理を行う / This function simply updates all the (non-dead) monsters (see above). [詳解]
 
bool multiply_monster (MONSTER_IDX m_idx, bool clone, BIT_FLAGS mode)
 モンスターを増殖生成する / Let the given monster attempt to reproduce. [詳解]
 
void update_smart_learn (MONSTER_IDX m_idx, int what)
 SMART(適格に攻撃を行う)モンスターの学習状況を更新する / Learn about an "observed" resistance. [詳解]
 
void choose_new_monster (MONSTER_IDX m_idx, bool born, MONRACE_IDX r_idx)
 モンスターの変身処理 [詳解]
 
SPEED get_mspeed (monster_race *r_ptr)
 モンスターの個体加速を設定する / Get initial monster speed [詳解]
 
void monster_drop_carried_objects (monster_type *m_ptr)
 モンスターが盗みや拾いで確保していたアイテムを全てドロップさせる / Drop all items carried by a monster [詳解]
 

変数

MONSTER_IDX hack_m_idx
 
MONSTER_IDX hack_m_idx_ii
 

マクロ定義詳解

◆ CEM_P_CAN_ENTER_PATTERN

#define CEM_P_CAN_ENTER_PATTERN   0x0002

◆ CEM_RIDING

#define CEM_RIDING   0x0001

◆ DRS_ACID

#define DRS_ACID   1

◆ DRS_BLIND

#define DRS_BLIND   13

◆ DRS_CHAOS

#define DRS_CHAOS   11

◆ DRS_COLD

#define DRS_COLD   4

◆ DRS_CONF

#define DRS_CONF   10

◆ DRS_DARK

#define DRS_DARK   8

◆ DRS_DISEN

#define DRS_DISEN   12

◆ DRS_ELEC

#define DRS_ELEC   2

◆ DRS_FEAR

#define DRS_FEAR   9

◆ DRS_FIRE

#define DRS_FIRE   3

◆ DRS_FREE

#define DRS_FREE   30

◆ DRS_LITE

#define DRS_LITE   7

◆ DRS_MANA

#define DRS_MANA   31

◆ DRS_NETH

#define DRS_NETH   6

◆ DRS_NEXUS

#define DRS_NEXUS   14

◆ DRS_POIS

#define DRS_POIS   5

◆ DRS_REFLECT

#define DRS_REFLECT   32

◆ DRS_SHARD

#define DRS_SHARD   16

◆ DRS_SOUND

#define DRS_SOUND   15

◆ is_friendly

#define is_friendly (   A)    (bool)(((A)->smart & SM_FRIENDLY) ? TRUE : FALSE)

◆ is_friendly_idx

#define is_friendly_idx (   MONSTER_IDX)    (bool)((MONSTER_IDX) > 0 && is_friendly(&p_ptr->current_floor_ptr->m_list[(MONSTER_IDX)]))

◆ is_hostile

#define is_hostile (   A)    (bool)((is_friendly(A) || is_pet(A)) ? FALSE : TRUE)

◆ is_original_ap

#define is_original_ap (   A)    (bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE)

◆ is_pet

#define is_pet (   A)    (bool)(((A)->smart & SM_PET) ? TRUE : FALSE)

◆ MAX_MTIMED

#define MAX_MTIMED   7

◆ MAX_NAZGUL_NUM

#define MAX_NAZGUL_NUM   5

◆ MD_ASSUME_HIDDEN

#define MD_ASSUME_HIDDEN   0x00000040 /* Assume the monster is hidden */

◆ MD_ASSUME_VISIBLE

#define MD_ASSUME_VISIBLE   0x00000080 /* Assume the monster is visible */

◆ MD_IGNORE_HALLU

#define MD_IGNORE_HALLU   0x00000200 /* Ignore hallucination, and penetrate shape change */

◆ MD_INDEF_HIDDEN

#define MD_INDEF_HIDDEN   0x00000004 /* Use indefinites for hidden monsters ("something") */

◆ MD_INDEF_VISIBLE

#define MD_INDEF_VISIBLE   0x00000008 /* Use indefinites for visible monsters ("a kobold") */

◆ MD_OBJECTIVE

#define MD_OBJECTIVE   0x00000001 /* Objective (or Reflexive) */

◆ MD_POSSESSIVE

#define MD_POSSESSIVE   0x00000002 /* Possessive (or Reflexive) */

◆ MD_PRON_HIDDEN

#define MD_PRON_HIDDEN   0x00000010 /* Pronominalize hidden monsters */

◆ MD_PRON_VISIBLE

#define MD_PRON_VISIBLE   0x00000020 /* Pronominalize visible monsters */

◆ MD_TRUE_NAME

#define MD_TRUE_NAME   0x00000100 /* Chameleon's true name */

◆ MD_WRONGDOER_NAME

#define MD_WRONGDOER_NAME   (MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE) /* 加害明記向け */

◆ MFLAG2_CHAMELEON

#define MFLAG2_CHAMELEON   0x08 /* Monster is chameleon */

◆ MFLAG2_KAGE

#define MFLAG2_KAGE   0x01 /* Monster is kage */

◆ MFLAG2_MARK

#define MFLAG2_MARK   0x40 /* Monster is currently memorized */

◆ MFLAG2_NOFLOW

#define MFLAG2_NOFLOW   0x10 /* Monster is in no_flow_by_smell mode */

◆ MFLAG2_NOGENO

#define MFLAG2_NOGENO   0x04 /* Cannot genocide */

◆ MFLAG2_NOPET

#define MFLAG2_NOPET   0x02 /* Cannot make monster pet */

◆ MFLAG2_SHOW

#define MFLAG2_SHOW   0x20 /* Monster is recently memorized */

◆ MFLAG_BORN

#define MFLAG_BORN   0x10 /* Monster is still being born */

◆ MFLAG_ETF

#define MFLAG_ETF   0x08 /* Monster is entering the field. */

◆ MFLAG_LOS

#define MFLAG_LOS   0x02 /* Monster is marked for project_all_los() */

◆ MFLAG_NICE

#define MFLAG_NICE   0x20 /* Monster is still being nice */

◆ MFLAG_VIEW

#define MFLAG_VIEW   0x01 /* Monster is in line of sight */

◆ MFLAG_XXX2

#define MFLAG_XXX2   0x04 /* (unused) */

◆ MON_A_GOLD

#define MON_A_GOLD   1010

◆ MON_A_SILVER

#define MON_A_SILVER   1011

◆ MON_ADAMANT_COINS

#define MON_ADAMANT_COINS   423

◆ MON_AETHER_HOUND

#define MON_AETHER_HOUND   811

◆ MON_AETHER_VOR

#define MON_AETHER_VOR   752

◆ MON_ALIEN_JURAL

#define MON_ALIEN_JURAL   1082

◆ MON_ANGEL

#define MON_ANGEL   417

◆ MON_ANGMAR

#define MON_ANGMAR   825

◆ MON_ARCH_VILE

#define MON_ARCH_VILE   357

◆ MON_ARCHANGEL

#define MON_ARCHANGEL   456

◆ MON_ARCHLICH

#define MON_ARCHLICH   776

◆ MON_ARCHON

#define MON_ARCHON   661

◆ MON_ATLACH_NACHA

#define MON_ATLACH_NACHA   809

◆ MON_B_DEATH_SWORD

#define MON_B_DEATH_SWORD   953

◆ MON_BAHAMUT

#define MON_BAHAMUT   1000

◆ MON_BANOR

#define MON_BANOR   933

◆ MON_BANORLUPART

#define MON_BANORLUPART   932

◆ MON_BARNEY

#define MON_BARNEY   1061

◆ MON_BARON_HELL

#define MON_BARON_HELL   609

◆ MON_BASILISK

#define MON_BASILISK   453

◆ MON_BAZOOKER

#define MON_BAZOOKER   896

◆ MON_BEGGAR

#define MON_BEGGAR   12

◆ MON_BELD

#define MON_BELD   973

◆ MON_BERSERKER

#define MON_BERSERKER   293

◆ MON_BICLOPS

#define MON_BICLOPS   490

◆ MON_BIKETAL

#define MON_BIKETAL   945

◆ MON_BLACK_MARKET

#define MON_BLACK_MARKET   14

◆ MON_BLACK_REAVER

#define MON_BLACK_REAVER   798

◆ MON_BLEYS

#define MON_BLEYS   789

◆ MON_BLOODLETTER

#define MON_BLOODLETTER   523

◆ MON_BLUE_HORROR

#define MON_BLUE_HORROR   189

◆ MON_BOTEI

#define MON_BOTEI   963

◆ MON_BRAND

#define MON_BRAND   773

◆ MON_BULLGATES

#define MON_BULLGATES   732

◆ MON_C_CRAWLER

#define MON_C_CRAWLER   395

◆ MON_CAAWS

#define MON_CAAWS   866

◆ MON_CAINE

#define MON_CAINE   799

◆ MON_CALDARM

#define MON_CALDARM   931

◆ MON_CANTORAS

#define MON_CANTORAS   830

◆ MON_CHAMELEON

#define MON_CHAMELEON   1040

◆ MON_CHAMELEON_K

#define MON_CHAMELEON_K   1041

◆ MON_CHAOS_HOUND

#define MON_CHAOS_HOUND   779

◆ MON_CHAOS_VOR

#define MON_CHAOS_VOR   751

◆ MON_CHERUB

#define MON_CHERUB   511

◆ MON_CLUB_DEMON

#define MON_CLUB_DEMON   648

◆ MON_COLBRAN

#define MON_COLBRAN   435

◆ MON_COLD_VOR

#define MON_COLD_VOR   358

◆ MON_COLOSSUS

#define MON_COLOSSUS   558

◆ MON_CONFUSED

#define MON_CONFUSED (   M_PTR)    ((M_PTR)->mtimed[MTIMED_CONFUSED])

◆ MON_COPPER_COINS

#define MON_COPPER_COINS   85

◆ MON_CORWIN

#define MON_CORWIN   820

◆ MON_CRYPT_THING

#define MON_CRYPT_THING   577

◆ MON_CSLEEP

#define MON_CSLEEP (   M_PTR)    ((M_PTR)->mtimed[MTIMED_CSLEEP])

◆ MON_CULVERIN

#define MON_CULVERIN   867

◆ MON_CYBER

#define MON_CYBER   816

◆ MON_CYBER_KING

#define MON_CYBER_KING   843

◆ MON_D_ELF

#define MON_D_ELF   122

◆ MON_D_ELF_DRUID

#define MON_D_ELF_DRUID   400

◆ MON_D_ELF_LORD

#define MON_D_ELF_LORD   348

◆ MON_D_ELF_MAGE

#define MON_D_ELF_MAGE   178

◆ MON_D_ELF_PRIEST

#define MON_D_ELF_PRIEST   226

◆ MON_D_ELF_SHADE

#define MON_D_ELF_SHADE   886

◆ MON_D_ELF_SORC

#define MON_D_ELF_SORC   657

◆ MON_D_ELF_WARLOCK

#define MON_D_ELF_WARLOCK   375

◆ MON_D_ELF_WARRIOR

#define MON_D_ELF_WARRIOR   182

◆ MON_DAWN

#define MON_DAWN   693

◆ MON_DEBBY

#define MON_DEBBY   1032

◆ MON_DEMILICH

#define MON_DEMILICH   742

◆ MON_DESTROYER

#define MON_DESTROYER   855

◆ MON_DIO

#define MON_DIO   878

◆ MON_DREADMASTER

#define MON_DREADMASTER   690

◆ MON_DROLEM

#define MON_DROLEM   691

◆ MON_DRUID

#define MON_DRUID   241

◆ MON_DWORKIN

#define MON_DWORKIN   763

◆ MON_EBONY_MONK

#define MON_EBONY_MONK   870

◆ MON_ECHIZEN

#define MON_ECHIZEN   873

◆ MON_ELDER_THING

#define MON_ELDER_THING   569

◆ MON_ELDER_VAMPIRE

#define MON_ELDER_VAMPIRE   1058

◆ MON_ELF_LORD

#define MON_ELF_LORD   900

◆ MON_ENERGY_VOR

#define MON_ENERGY_VOR   359

◆ MON_ERIC

#define MON_ERIC   813

◆ MON_ETHER_DRAKE

#define MON_ETHER_DRAKE   504

◆ MON_ETTIN

#define MON_ETTIN   621

◆ MON_F_ANGEL

#define MON_F_ANGEL   652

◆ MON_FAFNER

#define MON_FAFNER   712

◆ MON_FANG

#define MON_FANG   55

◆ MON_FAST

#define MON_FAST (   M_PTR)    ((M_PTR)->mtimed[MTIMED_FAST])

◆ MON_FENGHUANG

#define MON_FENGHUANG   988

◆ MON_FIONA

#define MON_FIONA   791

◆ MON_FIRE_VOR

#define MON_FIRE_VOR   354

◆ MON_FUNDIN

#define MON_FUNDIN   762

◆ MON_G_BALROG

#define MON_G_BALROG   720

◆ MON_G_C_DRAKE

#define MON_G_C_DRAKE   646

◆ MON_G_CTHULHU

#define MON_G_CTHULHU   857

◆ MON_G_MASTER_MYS

#define MON_G_MASTER_MYS   917

◆ MON_G_TITAN

#define MON_G_TITAN   702

◆ MON_GACHAPIN

#define MON_GACHAPIN   441

◆ MON_GANDALF

#define MON_GANDALF   772

◆ MON_GCWADL

#define MON_GCWADL   929

◆ MON_GERARD

#define MON_GERARD   807

◆ MON_GHB

#define MON_GHB   39

◆ MON_GHOST

#define MON_GHOST   477

◆ MON_GHOST_Q

#define MON_GHOST_Q   1003

◆ MON_GHOUL_KING

#define MON_GHOUL_KING   483

◆ MON_GODZILLA

#define MON_GODZILLA   832

◆ MON_GOEMON

#define MON_GOEMON   505

◆ MON_GOLD_COINS

#define MON_GOLD_COINS   195

◆ MON_GORBAG

#define MON_GORBAG   315

◆ MON_GOTHMOG

#define MON_GOTHMOG   856

◆ MON_GRAV_HOUND

#define MON_GRAV_HOUND   540

◆ MON_GREEN_G

#define MON_GREEN_G   100

◆ MON_GRIP

#define MON_GRIP   53

◆ MON_GROO

#define MON_GROO   1062

◆ MON_GWAIHIR

#define MON_GWAIHIR   410

◆ MON_HAGEN

#define MON_HAGEN   383

◆ MON_HAGURE

#define MON_HAGURE   871

◆ MON_HALFLING_S

#define MON_HALFLING_S   539

◆ MON_HATOPOPPO

#define MON_HATOPOPPO   1083

◆ MON_HILL_GIANT

#define MON_HILL_GIANT   255

◆ MON_HORSE

#define MON_HORSE   956

◆ MON_IE

#define MON_IE   921

◆ MON_IKETA

#define MON_IKETA   949

◆ MON_IMP

#define MON_IMP   296

◆ MON_INVULNER

#define MON_INVULNER (   M_PTR)    ((M_PTR)->mtimed[MTIMED_INVULNER])

◆ MON_IRON_GOLEM

#define MON_IRON_GOLEM   367

◆ MON_IRON_LICH

#define MON_IRON_LICH   666

◆ MON_IVORY_MONK

#define MON_IVORY_MONK   492

◆ MON_JABBERWOCK

#define MON_JABBERWOCK   778

◆ MON_JACK_SHADOWS

#define MON_JACK_SHADOWS   670

◆ MON_JADE_MONK

#define MON_JADE_MONK   370

◆ MON_JAIAN

#define MON_JAIAN   967

◆ MON_JIZOTAKO

#define MON_JIZOTAKO   1065

◆ MON_JORMUNGAND

#define MON_JORMUNGAND   854

◆ MON_JUBJUB

#define MON_JUBJUB   640

◆ MON_JULIAN

#define MON_JULIAN   794

◆ MON_JURT

#define MON_JURT   517

◆ MON_KAGE

#define MON_KAGE   964

◆ MON_KAKU

#define MON_KAKU   1002

◆ MON_KAVLAX

#define MON_KAVLAX   616

◆ MON_KENSHIROU

#define MON_KENSHIROU   936

◆ MON_KIRIN

#define MON_KIRIN   989

◆ MON_KLING

#define MON_KLING   819

◆ MON_KNI_TEMPLAR

#define MON_KNI_TEMPLAR   1037

◆ MON_KOGAN

#define MON_KOGAN   1096

◆ MON_LEPER

#define MON_LEPER   13

◆ MON_LICH

#define MON_LICH   518

◆ MON_LION_HEART

#define MON_LION_HEART   19

◆ MON_LIZARD_KING

#define MON_LIZARD_KING   332

◆ MON_LLOIGOR

#define MON_LLOIGOR   682

◆ MON_LOCKE_CLONE

#define MON_LOCKE_CLONE   930

◆ MON_LOG_MASTER

#define MON_LOG_MASTER   498

◆ MON_LORD_CHAOS

#define MON_LORD_CHAOS   737

◆ MON_LOST_SOUL

#define MON_LOST_SOUL   133

◆ MON_LOUSE

#define MON_LOUSE   69

◆ MON_LOUSY

#define MON_LOUSY   1063

◆ MON_LUNGORTHIN

#define MON_LUNGORTHIN   839

◆ MON_LUPART

#define MON_LUPART   934

◆ MON_M_MH_DRAGON

#define MON_M_MH_DRAGON   593

◆ MON_M_MINDCRAFTER

#define MON_M_MINDCRAFTER   1056

◆ MON_MANA_HOUND

#define MON_MANA_HOUND   887

◆ MON_MANDOR

#define MON_MANDOR   598

◆ MON_MANES

#define MON_MANES   128

◆ MON_MASTER_LICH

#define MON_MASTER_LICH   658

◆ MON_MASTER_MYS

#define MON_MASTER_MYS   916

◆ MON_MASTER_YEEK

#define MON_MASTER_YEEK   224

◆ MON_MENELDOR

#define MON_MENELDOR   384

◆ MON_MITHRIL_COINS

#define MON_MITHRIL_COINS   239

◆ MON_MITHRIL_GOLEM

#define MON_MITHRIL_GOLEM   464

◆ MON_MONFEAR

#define MON_MONFEAR (   M_PTR)    ((M_PTR)->mtimed[MTIMED_MONFEAR])

◆ MON_MORGOTH

#define MON_MORGOTH   861

◆ MON_MORI_TROLL

#define MON_MORI_TROLL   1060

◆ MON_NAZGUL

#define MON_NAZGUL   696

◆ MON_NEXUS_VOR

#define MON_NEXUS_VOR   587

◆ MON_NIGHTBLADE

#define MON_NIGHTBLADE   564

◆ MON_NIGHTCRAWLER

#define MON_NIGHTCRAWLER   744

◆ MON_NIGHTWALKER

#define MON_NIGHTWALKER   768

◆ MON_NINJA

#define MON_NINJA   485

◆ MON_NOBORTA

#define MON_NOBORTA   1059

◆ MON_NODENS

#define MON_NODENS   849

◆ MON_NOV_PALADIN

#define MON_NOV_PALADIN   97

◆ MON_NOV_PALADIN_G

#define MON_NOV_PALADIN_G   147

◆ MON_NOV_PRIEST

#define MON_NOV_PRIEST   45

◆ MON_NOV_PRIEST_G

#define MON_NOV_PRIEST_G   109

◆ MON_OBERON

#define MON_OBERON   860

◆ MON_OGRE_SHAMAN

#define MON_OGRE_SHAMAN   479

◆ MON_OHMU

#define MON_OHMU   879

◆ MON_ONE_RING

#define MON_ONE_RING   864

◆ MON_ORC_CAPTAIN

#define MON_ORC_CAPTAIN   285

◆ MON_OROCHI

#define MON_OROCHI   872

◆ MON_PALADIN

#define MON_PALADIN   1038

◆ MON_PHANTOM_B

#define MON_PHANTOM_B   385

◆ MON_PHANTOM_W

#define MON_PHANTOM_W   152

◆ MON_PINK_HORROR

#define MON_PINK_HORROR   242

◆ MON_PIP

#define MON_PIP   1004

◆ MON_PIRANHA

#define MON_PIRANHA   70

◆ MON_PLANETAR

#define MON_PLANETAR   942

◆ MON_PLASMA_HOUND

#define MON_PLASMA_HOUND   726

◆ MON_PLASMA_VOR

#define MON_PLASMA_VOR   588

◆ MON_PRIEST

#define MON_PRIEST   225

◆ MON_RAAL

#define MON_RAAL   557

◆ MON_RAOU

#define MON_RAOU   1018

◆ MON_RAPHAEL

#define MON_RAPHAEL   769

◆ MON_REVENANT

#define MON_REVENANT   555

◆ MON_RICH

#define MON_RICH   948

◆ MON_RINALDO

#define MON_RINALDO   660

◆ MON_ROBIN_HOOD

#define MON_ROBIN_HOOD   138

◆ MON_ROLENTO

#define MON_ROLENTO   1013

◆ MON_S_TYRANNO

#define MON_S_TYRANNO   705

◆ MON_SABRE_TIGER

#define MON_SABRE_TIGER   339

◆ MON_SANTACLAUS

#define MON_SANTACLAUS   733

◆ MON_SARUMAN

#define MON_SARUMAN   771

◆ MON_SAURON

#define MON_SAURON   858

◆ MON_SERAPH

#define MON_SERAPH   605

◆ MON_SERPENT

#define MON_SERPENT   862

◆ MON_SHADOW_DRAKE

#define MON_SHADOW_DRAKE   471

◆ MON_SHADOWLORD

#define MON_SHADOWLORD   774

◆ MON_SHAGRAT

#define MON_SHAGRAT   314

◆ MON_SHAMBLER

#define MON_SHAMBLER   786

◆ MON_SHARD_VOR

#define MON_SHARD_VOR   897

◆ MON_SHIM_VOR

#define MON_SHIM_VOR   600

◆ MON_SHURYUUDAN

#define MON_SHURYUUDAN   1023

◆ MON_SHUTEN

#define MON_SHUTEN   979

◆ MON_SILVER_COINS

#define MON_SILVER_COINS   117

◆ MON_SKY_DRAKE

#define MON_SKY_DRAKE   793

◆ MON_SLOW

#define MON_SLOW (   M_PTR)    ((M_PTR)->mtimed[MTIMED_SLOW])

◆ MON_SMAUG

#define MON_SMAUG   697

◆ MON_SOLAR

#define MON_SOLAR   943

◆ MON_SPAWN_CTH

#define MON_SPAWN_CTH   836

◆ MON_SPECT_WYRM

#define MON_SPECT_WYRM   874

◆ MON_SPIRIT_NAGA

#define MON_SPIRIT_NAGA   436

◆ MON_STONE_GIANT

#define MON_STONE_GIANT   321

◆ MON_STORMBRINGER

#define MON_STORMBRINGER   698

◆ MON_STUNNED

#define MON_STUNNED (   M_PTR)    ((M_PTR)->mtimed[MTIMED_STUNNED])

◆ MON_SUKE

#define MON_SUKE   1001

◆ MON_SURTUR

#define MON_SURTUR   837

◆ MON_TANUKI

#define MON_TANUKI   1067

◆ MON_TARRASQUE

#define MON_TARRASQUE   838

◆ MON_THAT_BAT

#define MON_THAT_BAT   975

◆ MON_THORONDOR

#define MON_THORONDOR   468

◆ MON_TIGER

#define MON_TIGER   230

◆ MON_TIME_HOUND

#define MON_TIME_HOUND   725

◆ MON_TIME_VOR

#define MON_TIME_VOR   589

◆ MON_TINDALOS

#define MON_TINDALOS   739

◆ MON_TOPAZ_MONK

#define MON_TOPAZ_MONK   1047

◆ MON_TROLL_KING

#define MON_TROLL_KING   894

◆ MON_TROLL_PRIEST

#define MON_TROLL_PRIEST   403

◆ MON_TSUCHINOKO

#define MON_TSUCHINOKO   926

◆ MON_ULT_BEHOLDER

#define MON_ULT_BEHOLDER   781

◆ MON_ULTRA_PALADIN

#define MON_ULTRA_PALADIN   699

◆ MON_UMBER_HULK

#define MON_UMBER_HULK   283

◆ MON_UND_BEHOLDER

#define MON_UND_BEHOLDER   664

◆ MON_UNGOLIANT

#define MON_UNGOLIANT   808

◆ MON_UNICORN_ORD

#define MON_UNICORN_ORD   859

◆ MON_UNMAKER

#define MON_UNMAKER   815

◆ MON_VAMPIRE_LORD

#define MON_VAMPIRE_LORD   623

◆ MON_VENOM_WYRM

#define MON_VENOM_WYRM   890

◆ MON_VORPAL_BUNNY

#define MON_VORPAL_BUNNY   205

◆ MON_W_KNIGHT

#define MON_W_KNIGHT   938

◆ MON_WAHHA

#define MON_WAHHA   1031

◆ MON_WARP_DEMON

#define MON_WARP_DEMON   812

◆ MON_WATER_ELEM

#define MON_WATER_ELEM   512

◆ MON_WATER_VOR

#define MON_WATER_VOR   355

◆ MON_WERERAT

#define MON_WERERAT   270

◆ MON_WOLF

#define MON_WOLF   54

◆ MON_WONG

#define MON_WONG   880

◆ MON_WOUNDED_BEAR

#define MON_WOUNDED_BEAR   159

◆ MON_WYRM_POWER

#define MON_WYRM_POWER   847

◆ MON_WYRM_SPACE

#define MON_WYRM_SPACE   1064

◆ MON_WYVERN

#define MON_WYVERN   334

◆ MON_XICLOTLAN

#define MON_XICLOTLAN   396

◆ MON_Y_GOLONAC

#define MON_Y_GOLONAC   810

◆ MON_YASE_HORSE

#define MON_YASE_HORSE   955

◆ MON_ZOMBI_SERPENT

#define MON_ZOMBI_SERPENT   883

◆ MTIMED_CONFUSED

#define MTIMED_CONFUSED   4 /* Monster is confused */

◆ MTIMED_CSLEEP

#define MTIMED_CSLEEP   0 /* Monster is sleeping */

◆ MTIMED_FAST

#define MTIMED_FAST   1 /* Monster is temporarily fast */

◆ MTIMED_INVULNER

#define MTIMED_INVULNER   6 /* Monster is temporarily invulnerable */

◆ MTIMED_MONFEAR

#define MTIMED_MONFEAR   5 /* Monster is afraid */

◆ MTIMED_SLOW

#define MTIMED_SLOW   2 /* Monster is temporarily slow */

◆ MTIMED_STUNNED

#define MTIMED_STUNNED   3 /* Monster is stunned */

◆ PM_ALLOW_GROUP

#define PM_ALLOW_GROUP   0x00000002

モンスター生成フラグ: 集団生成されても良い

◆ PM_ALLOW_SLEEP

#define PM_ALLOW_SLEEP   0x00000001

モンスター生成フラグ: 眠っている状態で生成されても良い

◆ PM_ALLOW_UNIQUE

#define PM_ALLOW_UNIQUE   0x00000040

モンスター生成フラグ: ユニークの選択生成を許可する

◆ PM_FORCE_FRIENDLY

#define PM_FORCE_FRIENDLY   0x00000004

モンスター生成フラグ: 必ず友好的に生成される

◆ PM_FORCE_PET

#define PM_FORCE_PET   0x00000008

モンスター生成フラグ: 必ずペットとして生成される

◆ PM_HASTE

#define PM_HASTE   0x00000100

モンスター生成フラグ: 加速状態で生成する

◆ PM_IGNORE_TERRAIN

#define PM_IGNORE_TERRAIN   0x00000080

モンスター生成フラグ: 侵入可能地形を考慮せずに生成する

◆ PM_KAGE

#define PM_KAGE   0x00000200

モンスター生成フラグ: 必ずあやしい影として生成する

◆ PM_MULTIPLY

#define PM_MULTIPLY   0x00000400

モンスター生成フラグ: 増殖処理時として生成する

◆ PM_NO_KAGE

#define PM_NO_KAGE   0x00000010

モンスター生成フラグ: 必ずあやしい影としては生成されない

◆ PM_NO_PET

#define PM_NO_PET   0x00000020

モンスター生成フラグ: 必ずペットとして生成されない

◆ SM_CLONED

#define SM_CLONED   0x00400000

クローンである / Cloned

◆ SM_FRIENDLY

#define SM_FRIENDLY   0x10000000

友好的である / Friendly

◆ SM_IMM_ACID

#define SM_IMM_ACID   0x01000000

モンスターの学習フラグ: プレイヤーに酸免疫あり

◆ SM_IMM_COLD

#define SM_IMM_COLD   0x08000000

モンスターの学習フラグ: プレイヤーに冷気免疫あり

◆ SM_IMM_ELEC

#define SM_IMM_ELEC   0x02000000

モンスターの学習フラグ: プレイヤーに電撃免疫あり

◆ SM_IMM_FIRE

#define SM_IMM_FIRE   0x04000000

モンスターの学習フラグ: プレイヤーに火炎免疫あり

◆ SM_IMM_FREE

#define SM_IMM_FREE   0x40000000

モンスターの学習フラグ: プレイヤーに麻痺耐性あり

◆ SM_IMM_MANA

#define SM_IMM_MANA   0x80000000

モンスターの学習フラグ: プレイヤーにMPがない

◆ SM_IMM_REFLECT

#define SM_IMM_REFLECT   0x20000000

モンスターの学習フラグ: プレイヤーに反射あり

◆ SM_OPP_ACID

#define SM_OPP_ACID   0x00010000

モンスターの学習フラグ: プレイヤーに二重酸耐性あり

◆ SM_OPP_COLD

#define SM_OPP_COLD   0x00080000

モンスターの学習フラグ: プレイヤーに二重冷気耐性あり

◆ SM_OPP_ELEC

#define SM_OPP_ELEC   0x00020000

モンスターの学習フラグ: プレイヤーに二重電撃耐性あり

◆ SM_OPP_FIRE

#define SM_OPP_FIRE   0x00040000

モンスターの学習フラグ: プレイヤーに二重火炎耐性あり

◆ SM_OPP_POIS

#define SM_OPP_POIS   0x00100000

モンスターの学習フラグ: プレイヤーに二重毒耐性あり

◆ SM_OPP_XXX1

#define SM_OPP_XXX1   0x00200000

未使用 / (unused)

◆ SM_PET

#define SM_PET   0x00800000

ペットである / Pet

◆ SM_RES_ACID

#define SM_RES_ACID   0x00000001

モンスターの学習フラグ: プレイヤーに酸耐性あり

◆ SM_RES_BLIND

#define SM_RES_BLIND   0x00001000

モンスターの学習フラグ: プレイヤーに盲目耐性あり

◆ SM_RES_CHAOS

#define SM_RES_CHAOS   0x00000400

モンスターの学習フラグ: プレイヤーにカオス耐性あり

◆ SM_RES_COLD

#define SM_RES_COLD   0x00000008

モンスターの学習フラグ: プレイヤーに冷気耐性あり

◆ SM_RES_CONF

#define SM_RES_CONF   0x00000200

モンスターの学習フラグ: プレイヤーに混乱耐性あり

◆ SM_RES_DARK

#define SM_RES_DARK   0x00000080

モンスターの学習フラグ: プレイヤーに暗黒耐性あり

◆ SM_RES_DISEN

#define SM_RES_DISEN   0x00000800

モンスターの学習フラグ: プレイヤーに劣化耐性あり

◆ SM_RES_ELEC

#define SM_RES_ELEC   0x00000002

モンスターの学習フラグ: プレイヤーに電撃耐性あり

◆ SM_RES_FEAR

#define SM_RES_FEAR   0x00000100

モンスターの学習フラグ: プレイヤーに恐怖耐性あり

◆ SM_RES_FIRE

#define SM_RES_FIRE   0x00000004

モンスターの学習フラグ: プレイヤーに火炎耐性あり

◆ SM_RES_LITE

#define SM_RES_LITE   0x00000040

モンスターの学習フラグ: プレイヤーに閃光耐性あり

◆ SM_RES_NETH

#define SM_RES_NETH   0x00000020

モンスターの学習フラグ: プレイヤーに地獄耐性あり

◆ SM_RES_NEXUS

#define SM_RES_NEXUS   0x00002000

モンスターの学習フラグ: プレイヤーに因果混乱耐性あり

◆ SM_RES_POIS

#define SM_RES_POIS   0x00000010

モンスターの学習フラグ: プレイヤーに毒耐性あり

◆ SM_RES_SHARD

#define SM_RES_SHARD   0x00008000

モンスターの学習フラグ: プレイヤーに破片耐性あり

◆ SM_RES_SOUND

#define SM_RES_SOUND   0x00004000

モンスターの学習フラグ: プレイヤーに轟音耐性あり

◆ SUB_ALIGN_EVIL

#define SUB_ALIGN_EVIL   0x0001

◆ SUB_ALIGN_GOOD

#define SUB_ALIGN_GOOD   0x0002

◆ SUB_ALIGN_NEUTRAL

#define SUB_ALIGN_NEUTRAL   0x0000

型定義詳解

◆ monster_type

typedef struct monster_type monster_type

◆ monsterrace_hook_type

typedef bool(* monsterrace_hook_type) (MONRACE_IDX r_idx)

関数詳解

◆ alloc_guardian()

bool alloc_guardian ( bool  def_val)

ダンジョンの主生成を試みる / Put the Guardian

引数
def_val現在の主の生成状態
戻り値
生成に成功したらtrue
呼び出し関係図:

◆ alloc_horde()

bool alloc_horde ( POSITION  y,
POSITION  x 
)

指定地点に1種類のモンスター種族による群れを生成する

引数
y生成地点y座標
x生成地点x座標
戻り値
生成に成功したらtrue
呼び出し関係図:

◆ alloc_monster()

bool alloc_monster ( POSITION  dis,
BIT_FLAGS  mode 
)

ダンジョンの初期配置モンスターを生成1回生成する / Attempt to allocate a random monster in the dungeon.

引数
disプレイヤーから離れるべき最低距離
mode生成オプション
戻り値
生成に成功したらtrue

Place the monster at least "dis" distance from the player. Use "slp" to choose the initial "sleep" status Use "p_ptr->current_floor_ptr->monster_level" for the monster level

呼び出し関係図:

◆ anger_monster()

void anger_monster ( monster_type m_ptr)

モンスターを怒らせる Anger the monster

引数
m_ptrモンスター情報構造体の参照ポインタ
戻り値
なし
呼び出し関係図:

◆ are_enemies()

bool are_enemies ( monster_type m_ptr,
monster_type n_ptr 
)

モンスターの属性の基づいた敵対関係の有無を返す Check if two monsters are enemies

引数
m_ptrモンスター1の構造体参照ポインタ
n_ptrモンスター2の構造体参照ポインタ
戻り値
敵対関係にあるならばTRUEを返す
呼び出し関係図:

◆ choose_new_monster()

void choose_new_monster ( MONSTER_IDX  m_idx,
bool  born,
MONRACE_IDX  r_idx 
)

モンスターの変身処理

引数
m_idx変身処理を受けるモンスター情報のID
born生成時の初変身先指定ならばtrue
r_idx旧モンスター種族のID
戻り値
なし
呼び出し関係図:

◆ compact_monsters()

void compact_monsters ( int  size)

モンスター情報配列を圧縮する / Compact and Reorder the monster list

引数
size圧縮後のモンスター件数目標
戻り値
なし

This function can be very dangerous, use with caution!

When actually "compacting" monsters, we base the saving throw on a combination of monster level, distance from player, and current "desperation".

After "compacting" (if needed), we "reorder" the monsters into a more compact order, and we reset the allocation info, and the "live" array.

呼び出し関係図:

◆ delete_monster()

void delete_monster ( POSITION  y,
POSITION  x 
)

指定位置に存在するモンスターを削除する / Delete the monster, if any, at a given location

引数
x削除位置x座標
y削除位置y座標
戻り値
なし
呼び出し関係図:

◆ delete_monster_idx()

void delete_monster_idx ( MONSTER_IDX  i)

モンスター配列からモンスターを消去する / Delete a monster by index.

引数
i消去するモンスターのID
戻り値
なし

モンスターを削除するとそのモンスターが拾っていたアイテムも同時に削除される。 / When a monster is deleted, all of its objects are deleted.

呼び出し関係図:

◆ dice_to_string()

void dice_to_string ( int  base_damage,
int  dice_num,
int  dice_side,
int  dice_mult,
int  dice_div,
char *  msg 
)

ダイス目を文字列に変換する

引数
base_damage固定値
dice_numダイス数
dice_sideダイス面
dice_multダイス倍率
dice_divダイス除数
msg文字列を格納するポインタ
戻り値
なし

◆ display_roff()

void display_roff ( MONRACE_IDX  r_idx)

モンスター情報の現在のウィンドウに表示する / Hack – describe the given monster race in the current "term" window

引数
r_idxモンスターの種族ID
戻り値
なし
呼び出し関係図:

◆ extract_note_dies()

concptr extract_note_dies ( MONRACE_IDX  r_idx)

モンスターを撃破した際の述語メッセージを返す / Return monster death string

引数
r_ptr撃破されたモンスターの種族情報を持つ構造体の参照ポインタ
戻り値
撃破されたモンスターの述語
呼び出し関係図:

◆ get_mon_num()

MONRACE_IDX get_mon_num ( DEPTH  level)

生成モンスター種族を1種生成テーブルから選択する

引数
level生成階
戻り値
選択されたモンスター生成種族

Choose a monster race that seems "appropriate" to the given level

This function uses the "prob2" field of the "monster allocation table", and various local information, to calculate the "prob3" field of the same table, which is then used to choose an "appropriate" monster, in a relatively efficient manner.

Note that "town" monsters will only be created in the town, and "normal" monsters will never be created in the town, unless the "level" is "modified", for example, by polymorph or summoning.

There is a small chance (1/50) of "boosting" the given depth by a small amount (up to four levels), except in the town.

It is (slightly) more likely to acquire a monster of the given level than one of a lower level. This is done by choosing several monsters appropriate to the given level and keeping the "hardest" one.

Note that if no monsters are "appropriate", then this function will fail, and return zero, but this should almost never happen.

呼び出し関係図:

◆ get_mon_num_prep()

errr get_mon_num_prep ( monsterrace_hook_type  monster_hook,
monsterrace_hook_type  monster_hook2 
)

モンスター生成制限関数最大2つから / Apply a "monster restriction function" to the "monster allocation table"

引数
monster_hook制限関数1
monster_hook2制限関数2
戻り値
エラーコード
呼び出し関係図:

◆ get_monster_crowd_number()

int get_monster_crowd_number ( MONSTER_IDX  m_idx)

指定したモンスターに隣接しているモンスターの数を返す。 / Count number of adjacent monsters

引数
m_idx隣接数を調べたいモンスターのID
戻り値
隣接しているモンスターの数

◆ get_monster_hook()

monsterrace_hook_type get_monster_hook ( void  )

プレイヤーの現在の広域マップ座標から得た地勢を元にモンスターの生成条件関数を返す

戻り値
地勢にあったモンスターの生成条件関数
呼び出し関係図:

◆ get_monster_hook2()

monsterrace_hook_type get_monster_hook2 ( POSITION  y,
POSITION  x 
)

指定された広域マップ座標の地勢を元にモンスターの生成条件関数を返す

戻り値
地勢にあったモンスターの生成条件関数
呼び出し関係図:

◆ get_mspeed()

SPEED get_mspeed ( monster_race r_ptr)

モンスターの個体加速を設定する / Get initial monster speed

引数
r_ptrモンスター種族の参照ポインタ
戻り値
加速値

◆ look_mon_desc()

concptr look_mon_desc ( monster_type m_ptr,
BIT_FLAGS  mode 
)
呼び出し関係図:

◆ lore_do_probe()

int lore_do_probe ( MONRACE_IDX  r_idx)

モンスターの調査による思い出補完処理 / Learn about a monster (by "probing" it)

引数
r_idx補完されるモンスター種族ID
戻り値
明らかになった情報の度数

Return the number of new flags learnt. -Mogami-

◆ lore_treasure()

void lore_treasure ( MONSTER_IDX  m_idx,
ITEM_NUMBER  num_item,
ITEM_NUMBER  num_gold 
)

モンスターの撃破に伴うドロップ情報の保管処理 / Take note that the given monster just dropped some treasure

引数
m_idxモンスター情報のID
num_item手に入れたアイテム数
num_gold手に入れた財宝の単位数
戻り値
なし

Note that learning the "GOOD"/"GREAT" flags gives information about the treasure (even when the monster is killed for the first time, such as uniques, and the treasure has not been examined yet).

This "indirect" method is used to prevent the player from learning exactly how much treasure a monster can drop from observing only a single example of a drop. This method actually observes how much gold and items are dropped, and remembers that information to be described later by the monster recall code.

◆ m_pop()

MONSTER_IDX m_pop ( void  )

モンスター配列の空きを探す / Acquires and returns the index of a "free" monster.

戻り値
利用可能なモンスター配列の添字

This routine should almost never fail, but it can happen.

呼び出し関係図:

◆ message_pain()

void message_pain ( MONSTER_IDX  m_idx,
HIT_POINT  dam 
)

ダメージを受けたモンスターの様子を記述する / Dump a message describing a monster's reaction to damage

引数
m_idxモンスター情報ID
dam与えたダメージ
戻り値
なし

Technically should attempt to treat "Beholder"'s as jelly's

呼び出し関係図:

◆ monster_can_cross_terrain()

bool monster_can_cross_terrain ( FEAT_IDX  feat,
monster_race r_ptr,
BIT_FLAGS16  mode 
)

モンスターが地形を踏破できるかどうかを返す Check if monster can cross terrain

引数
feat地形ID
r_ptrモンスター種族構造体の参照ポインタ
modeオプション
戻り値
踏破可能ならばTRUEを返す

◆ monster_can_enter()

bool monster_can_enter ( POSITION  y,
POSITION  x,
monster_race r_ptr,
BIT_FLAGS16  mode 
)

指定された座標の地形をモンスターが踏破できるかどうかを返す Strictly check if monster can enter the grid

引数
y地形のY座標
x地形のX座標
r_ptrモンスター種族構造体の参照ポインタ
modeオプション
戻り値
踏破可能ならばTRUEを返す
呼び出し関係図:

◆ monster_death()

void monster_death ( MONSTER_IDX  m_idx,
bool  drop_item 
)

モンスターが死亡した時の処理 / Handle the "death" of a monster.

引数
m_idx死亡したモンスターのID
drop_itemTRUEならばモンスターのドロップ処理を行う
戻り値
撃破されたモンスターの述語
Disperse treasures centered at the monster location based on the
various flags contained in the monster flags fields.
Check for "Quest" completion when a quest monster is killed.
Note that only the player can induce "monster_death()" on Uniques.
Thus (for now) all Quest monsters should be Uniques.
Note that monsters can now carry objects, and when a monster dies,
it drops all of its objects, which may disappear in crowded rooms.
呼び出し関係図:

◆ monster_desc()

void monster_desc ( char *  desc,
monster_type m_ptr,
BIT_FLAGS  mode 
)

モンスターの呼称を作成する / Build a string describing a monster in some way.

引数
desc記述出力先の文字列参照ポインタ
m_ptrモンスターの参照ポインタ
mode呼称オプション
戻り値
なし

We can correctly describe monsters based on their visibility. We can force all monsters to be treated as visible or invisible. We can build nominatives, objectives, possessives, or reflexives. We can selectively pronominalize hidden, visible, or all monsters. We can use definite or indefinite descriptions for hidden monsters. We can use definite or indefinite descriptions for visible monsters.

Pronominalization involves the gender whenever possible and allowed, so that by cleverly requesting pronominalization / visibility, you can get messages like "You hit someone. She screams in agony!".

Reflexives are acquired by requesting Objective plus Possessive.

If no m_ptr arg is given (?), the monster is assumed to be hidden, unless the "Assume Visible" mode is requested.

If no r_ptr arg is given, it is extracted from m_ptr and r_info If neither m_ptr nor r_ptr is given, the monster is assumed to be neuter, singular, and hidden (unless "Assume Visible" is set), in which case you may be in trouble... :-)

I am assuming that no monster name is more than 70 characters long, so that "char desc[80];" is sufficiently large for any result.

Mode Flags: MD_OBJECTIVE --> Objective (or Reflexive) MD_POSSESSIVE --> Possessive (or Reflexive) MD_INDEF_HIDDEN --> Use indefinites for hidden monsters ("something") MD_INDEF_VISIBLE --> Use indefinites for visible monsters ("a kobold") MD_PRON_HIDDEN --> Pronominalize hidden monsters MD_PRON_VISIBLE --> Pronominalize visible monsters MD_ASSUME_HIDDEN --> Assume the monster is hidden MD_ASSUME_VISIBLE --> Assume the monster is visible MD_TRUE_NAME --> Chameleon's true name MD_IGNORE_HALLU --> Ignore hallucination, and penetrate shape change

Useful Modes: 0x00 --> Full nominative name ("the kobold") or "it" MD_INDEF_HIDDEN --> Full nominative name ("the kobold") or "something" MD_ASSUME_VISIBLE --> Genocide resistance name ("the kobold") MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE --> Killing name ("a kobold") MD_PRON_VISIBLE | MD_POSSESSIVE --> Possessive, genderized if visable ("his") or "its" MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE --> Reflexive, genderized if visable ("himself") or "itself"

呼び出し関係図:

◆ monster_drop_carried_objects()

void monster_drop_carried_objects ( monster_type m_ptr)

モンスターが盗みや拾いで確保していたアイテムを全てドロップさせる / Drop all items carried by a monster

引数
m_ptrモンスター参照ポインタ
戻り値
なし
呼び出し関係図:

◆ monster_has_hostile_align()

bool monster_has_hostile_align ( monster_type m_ptr,
int  pa_good,
int  pa_evil,
monster_race r_ptr 
)

モンスターがプレイヤーに対して敵意を抱くかどうかを返す Check if this monster race has "hostile" alignment

引数
m_ptrモンスター情報構造体の参照ポインタ
pa_goodプレイヤーの善傾向値
pa_evilプレイヤーの悪傾向値
r_ptrモンスター種族情報の構造体参照ポインタ
戻り値
プレイヤーに敵意を持つならばTRUEを返す

If user is player, m_ptr == NULL.

呼び出し関係図:

◆ monster_name()

void monster_name ( MONSTER_IDX  m_idx,
char *  m_name 
)

モンスターIDを取り、モンスター名をm_nameに代入する /

引数
m_idxモンスターID
m_nameモンスター名を入力する配列
呼び出し関係図:

◆ multiply_monster()

bool multiply_monster ( MONSTER_IDX  m_idx,
bool  clone,
BIT_FLAGS  mode 
)

モンスターを増殖生成する / Let the given monster attempt to reproduce.

引数
m_idx増殖するモンスター情報ID
cloneクローン・モンスター処理ならばtrue
mode生成オプション
戻り値
生成できたらtrueを返す

Note that "reproduction" REQUIRES empty space.

呼び出し関係図:

◆ output_monster_spoiler()

void output_monster_spoiler ( MONRACE_IDX  r_idx,
void(*)(TERM_COLOR attr, concptr str)  roff_func 
)

モンスター詳細情報を自動スポイラー向けに出力する / Hack – output description of the given monster race

引数
r_idxモンスターの種族ID
roff_func出力処理を行う関数ポインタ
戻り値
なし
呼び出し関係図:

◆ place_monster()

bool place_monster ( POSITION  y,
POSITION  x,
BIT_FLAGS  mode 
)

一般的なモンスター生成処理のメインルーチン / Attempt to place a monster of the given race at the given location

引数
y生成地点y座標
x生成地点x座標
mode生成オプション
戻り値
生成に成功したらtrue
呼び出し関係図:

◆ place_monster_aux()

bool place_monster_aux ( MONSTER_IDX  who,
POSITION  y,
POSITION  x,
MONRACE_IDX  r_idx,
BIT_FLAGS  mode 
)

一般的なモンスター生成処理のサブルーチン / Attempt to place a monster of the given race at the given location

引数
who召喚主のモンスター情報ID
y生成地点y座標
x生成地点x座標
r_idx生成するモンスターの種族ID
mode生成オプション
戻り値
生成に成功したらtrue

Note that certain monsters are now marked as requiring "friends". These monsters, if successfully placed, and if the "grp" parameter is TRUE, will be surrounded by a "group" of identical monsters.

Note that certain monsters are now marked as requiring an "escort", which is a collection of monsters with similar "race" but lower level.

Some monsters induce a fake "group" flag on their escorts.

Note the "bizarre" use of non-recursion to prevent annoying output when running a code profiler.

Note the use of the new "monster allocation table" code to restrict the "get_mon_num()" function to "legal" escort types.

呼び出し関係図:

◆ real_r_idx()

MONRACE_IDX real_r_idx ( monster_type m_ptr)

◆ real_r_ptr()

monster_race* real_r_ptr ( monster_type m_ptr)

モンスターの真の種族を返す / Extract monster race pointer of a monster's true form

引数
m_ptrモンスターの参照ポインタ
戻り値
本当のモンスター種族参照ポインタ
呼び出し関係図:

◆ reset_target()

void reset_target ( monster_type m_ptr)

モンスターの目標地点をリセットする / Reset the target of counter attack

引数
m_ptrモンスターの参照ポインタ
戻り値
なし
呼び出し関係図:

◆ roff_top()

void roff_top ( MONRACE_IDX  r_idx)

モンスター情報のヘッダを記述する Hack – Display the "name" and "attr/chars" of a monster race

引数
r_idxモンスターの種族ID
戻り値
なし
呼び出し関係図:

◆ screen_roff()

void screen_roff ( MONRACE_IDX  r_idx,
BIT_FLAGS  mode 
)

モンスター情報の表示と共に画面を一時消去するサブルーチン / Hack – describe the given monster race at the top of the screen

引数
r_idxモンスターの種族ID
mode表示オプション
戻り値
なし
呼び出し関係図:

◆ set_friendly()

void set_friendly ( monster_type m_ptr)

モンスターを友好的にする

引数
m_ptrモンスター情報構造体の参照ポインタ
戻り値
なし

◆ set_hostile()

void set_hostile ( monster_type m_ptr)

モンスターを敵に回す Makes the monster hostile towards the player

引数
m_ptrモンスター情報構造体の参照ポインタ
戻り値
なし

◆ set_pet()

void set_pet ( monster_type m_ptr)

モンスターをペットにする

引数
m_ptrモンスター情報構造体の参照ポインタ
戻り値
なし
呼び出し関係図:

◆ set_target()

void set_target ( monster_type m_ptr,
POSITION  y,
POSITION  x 
)

モンスターの目標地点をセットする / Set the target of counter attack

引数
m_ptrモンスターの参照ポインタ
y目標y座標
x目標x座標
戻り値
なし

◆ update_monster()

void update_monster ( MONSTER_IDX  m_idx,
bool  full 
)

モンスターの各情報を更新する / This function updates the monster record of the given monster

引数
m_idx更新するモンスター情報のID
fullプレイヤーとの距離更新を行うならばtrue
戻り値
なし

This involves extracting the distance to the player (if requested), and then checking for visibility (natural, infravision, see-invis, telepathy), updating the monster visibility flag, redrawing (or erasing) the monster when its visibility changes, and taking note of any interesting monster flags (cold-blooded, invisible, etc).

Note the new "mflag" field which encodes several monster state flags, including "view" for when the monster is currently in line of sight, and "mark" for when the monster is currently visible via detection.

The only monster fields that are changed here are "cdis" (the distance from the player), "ml" (visible to the player), and "mflag" (to maintain the "MFLAG_VIEW" flag).

Note the special "update_monsters()" function which can be used to call this function once for every monster.

Note the "full" flag which requests that the "cdis" field be updated, this is only needed when the monster (or the player) has moved.

Every time a monster moves, we must call this function for that monster, and update the distance, and the visibility. Every time the player moves, we must call this function for every monster, and update the distance, and the visibility. Whenever the player "state" changes in certain ways ("blindness", "infravision", "telepathy", and "see invisible"), we must call this function for every monster, and update the visibility.

Routines that change the "illumination" of a grid must also call this function for any monster in that grid, since the "visibility" of some monsters may be based on the illumination of their grid.

Note that this function is called once per monster every time the player moves. When the player is running, this function is one of the primary bottlenecks, along with "update_view()" and the "process_monsters()" code, so efficiency is important.

Note the optimized "inline" version of the "distance()" function.

A monster is "visible" to the player if (1) it has been detected by the player, (2) it is close to the player and the player has telepathy, or (3) it is close to the player, and in line of sight of the player, and it is "illuminated" by some combination of infravision, torch light, or permanent light (invisible monsters are only affected by "light" if the player can see invisible).

Monsters which are not on the current panel may be "visible" to the player, and their descriptions will include an "offscreen" reference. Currently, offscreen monsters cannot be targetted or viewed directly, but old targets will remain set. XXX XXX

The player can choose to be disturbed by several things, including "disturb_move" (monster which is viewable moves in some way), and "disturb_near" (monster which is "easily" viewable moves in some way). Note that "moves" includes "appears" and "disappears".

呼び出し関係図:

◆ update_monsters()

void update_monsters ( bool  full)

単純に生存している全モンスターの更新処理を行う / This function simply updates all the (non-dead) monsters (see above).

引数
full距離更新を行うならtrue
戻り値
なし
呼び出し関係図:

◆ update_smart_learn()

void update_smart_learn ( MONSTER_IDX  m_idx,
int  what 
)

SMART(適格に攻撃を行う)モンスターの学習状況を更新する / Learn about an "observed" resistance.

引数
m_idx更新を行う「モンスター情報ID
what学習対象ID
戻り値
なし

◆ wipe_m_list()

void wipe_m_list ( void  )

プレイヤーのフロア離脱に伴う全モンスター配列の消去 / Delete/Remove all the monsters when the player leaves the level

戻り値
なし

This is an efficient method of simulating multiple calls to the "delete_monster()" function, with no visual effects.

呼び出し関係図:

変数詳解

◆ hack_m_idx

MONSTER_IDX hack_m_idx

◆ hack_m_idx_ii

MONSTER_IDX hack_m_idx_ii