OSDN Git Service

[Refactor] #37353 ダンジョンの雰囲気処理を floor-events.c/h に移動。
[hengband/hengband.git] / src / monster.h
index 0636bad..2358a05 100644 (file)
@@ -1,4 +1,272 @@
-/*
+
+#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
+
+/*
  * Bit flags for the place_monster_???() (etc)
  */
 #define PM_ALLOW_SLEEP    0x00000001    /*!< モンスター生成フラグ: 眠っている状態で生成されても良い */
@@ -18,3 +286,52 @@ extern bool place_monster(POSITION y, POSITION x, BIT_FLAGS mode);
 extern bool alloc_horde(POSITION y, POSITION x);
 extern bool alloc_guardian(bool def_val);
 extern bool alloc_monster(POSITION dis, BIT_FLAGS mode);
+
+extern void monster_desc(char *desc, monster_type *m_ptr, BIT_FLAGS mode);
+/* Bit flags for monster_desc() */
+#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) /* 加害明記向け */
+
+extern void monster_name(MONSTER_IDX m_idx, char* m_name);
+
+extern void roff_top(MONRACE_IDX r_idx);
+extern void screen_roff(MONRACE_IDX r_idx, BIT_FLAGS mode);
+extern void display_roff(MONRACE_IDX r_idx);
+extern void output_monster_spoiler(MONRACE_IDX r_idx, void(*roff_func)(TERM_COLOR attr, concptr str));
+extern concptr extract_note_dies(MONRACE_IDX r_idx);
+extern void monster_death(MONSTER_IDX m_idx, bool drop_item);
+extern monsterrace_hook_type get_monster_hook(void);
+extern monsterrace_hook_type get_monster_hook2(POSITION y, POSITION x);
+extern void set_friendly(monster_type *m_ptr);
+extern void set_pet(monster_type *m_ptr);
+extern void set_hostile(monster_type *m_ptr);
+extern void anger_monster(monster_type *m_ptr);
+extern bool monster_can_cross_terrain(FEAT_IDX feat, monster_race *r_ptr, BIT_FLAGS16 mode);
+extern bool monster_can_enter(POSITION y, POSITION x, monster_race *r_ptr, BIT_FLAGS16 mode);
+extern bool are_enemies(monster_type *m_ptr1, monster_type *m_ptr2);
+extern bool monster_has_hostile_align(monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr);
+extern void dice_to_string(int base_damage, int dice_num, int dice_side, int dice_mult, int dice_div, char* msg);
+extern concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode);
+extern int get_monster_crowd_number(MONSTER_IDX m_idx);
+
+#define is_friendly(A) \
+        (bool)(((A)->smart & SM_FRIENDLY) ? TRUE : FALSE)
+
+#define is_friendly_idx(IDX) \
+        (bool)((IDX) > 0 && is_friendly(&current_floor_ptr->m_list[(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)
\ No newline at end of file