Hengband
2.2.1
|
#include "monsterrace.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_race * | real_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 |
#define CEM_P_CAN_ENTER_PATTERN 0x0002 |
#define CEM_RIDING 0x0001 |
#define DRS_ACID 1 |
#define DRS_BLIND 13 |
#define DRS_CHAOS 11 |
#define DRS_COLD 4 |
#define DRS_CONF 10 |
#define DRS_DARK 8 |
#define DRS_DISEN 12 |
#define DRS_ELEC 2 |
#define DRS_FEAR 9 |
#define DRS_FIRE 3 |
#define DRS_FREE 30 |
#define DRS_LITE 7 |
#define DRS_MANA 31 |
#define DRS_NETH 6 |
#define DRS_NEXUS 14 |
#define DRS_POIS 5 |
#define DRS_REFLECT 32 |
#define DRS_SHARD 16 |
#define DRS_SOUND 15 |
#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_hostile | ( | A | ) | (bool)((is_friendly(A) || is_pet(A)) ? FALSE : TRUE) |
#define MAX_MTIMED 7 |
#define MAX_NAZGUL_NUM 5 |
#define MD_ASSUME_HIDDEN 0x00000040 /* Assume the monster is hidden */ |
#define MD_ASSUME_VISIBLE 0x00000080 /* Assume the monster is visible */ |
#define MD_IGNORE_HALLU 0x00000200 /* Ignore hallucination, and penetrate shape change */ |
#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_OBJECTIVE 0x00000001 /* Objective (or Reflexive) */ |
#define MD_POSSESSIVE 0x00000002 /* Possessive (or Reflexive) */ |
#define MD_PRON_HIDDEN 0x00000010 /* Pronominalize hidden monsters */ |
#define MD_PRON_VISIBLE 0x00000020 /* Pronominalize visible monsters */ |
#define MD_TRUE_NAME 0x00000100 /* Chameleon's true name */ |
#define MD_WRONGDOER_NAME (MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE) /* 加害明記向け */ |
#define MFLAG2_CHAMELEON 0x08 /* Monster is chameleon */ |
#define MFLAG2_KAGE 0x01 /* Monster is kage */ |
#define MFLAG2_MARK 0x40 /* Monster is currently memorized */ |
#define MFLAG2_NOFLOW 0x10 /* Monster is in no_flow_by_smell mode */ |
#define MFLAG2_NOGENO 0x04 /* Cannot genocide */ |
#define MFLAG2_NOPET 0x02 /* Cannot make monster pet */ |
#define MFLAG2_SHOW 0x20 /* Monster is recently memorized */ |
#define MFLAG_BORN 0x10 /* Monster is still being born */ |
#define MFLAG_ETF 0x08 /* Monster is entering the field. */ |
#define MFLAG_LOS 0x02 /* Monster is marked for project_all_los() */ |
#define MFLAG_NICE 0x20 /* Monster is still being nice */ |
#define MFLAG_VIEW 0x01 /* Monster is in line of sight */ |
#define MFLAG_XXX2 0x04 /* (unused) */ |
#define MON_A_GOLD 1010 |
#define MON_A_SILVER 1011 |
#define MON_ADAMANT_COINS 423 |
#define MON_AETHER_HOUND 811 |
#define MON_AETHER_VOR 752 |
#define MON_ALIEN_JURAL 1082 |
#define MON_ANGEL 417 |
#define MON_ANGMAR 825 |
#define MON_ARCH_VILE 357 |
#define MON_ARCHANGEL 456 |
#define MON_ARCHLICH 776 |
#define MON_ARCHON 661 |
#define MON_ATLACH_NACHA 809 |
#define MON_B_DEATH_SWORD 953 |
#define MON_BAHAMUT 1000 |
#define MON_BANOR 933 |
#define MON_BANORLUPART 932 |
#define MON_BARNEY 1061 |
#define MON_BARON_HELL 609 |
#define MON_BASILISK 453 |
#define MON_BAZOOKER 896 |
#define MON_BEGGAR 12 |
#define MON_BELD 973 |
#define MON_BERSERKER 293 |
#define MON_BICLOPS 490 |
#define MON_BIKETAL 945 |
#define MON_BLACK_MARKET 14 |
#define MON_BLACK_REAVER 798 |
#define MON_BLEYS 789 |
#define MON_BLOODLETTER 523 |
#define MON_BLUE_HORROR 189 |
#define MON_BOTEI 963 |
#define MON_BRAND 773 |
#define MON_BULLGATES 732 |
#define MON_C_CRAWLER 395 |
#define MON_CAAWS 866 |
#define MON_CAINE 799 |
#define MON_CALDARM 931 |
#define MON_CANTORAS 830 |
#define MON_CHAMELEON 1040 |
#define MON_CHAMELEON_K 1041 |
#define MON_CHAOS_HOUND 779 |
#define MON_CHAOS_VOR 751 |
#define MON_CHERUB 511 |
#define MON_CLUB_DEMON 648 |
#define MON_COLBRAN 435 |
#define MON_COLD_VOR 358 |
#define MON_COLOSSUS 558 |
#define MON_CONFUSED | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_CONFUSED]) |
#define MON_COPPER_COINS 85 |
#define MON_CORWIN 820 |
#define MON_CRYPT_THING 577 |
#define MON_CSLEEP | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_CSLEEP]) |
#define MON_CULVERIN 867 |
#define MON_CYBER 816 |
#define MON_CYBER_KING 843 |
#define MON_D_ELF 122 |
#define MON_D_ELF_DRUID 400 |
#define MON_D_ELF_LORD 348 |
#define MON_D_ELF_MAGE 178 |
#define MON_D_ELF_PRIEST 226 |
#define MON_D_ELF_SHADE 886 |
#define MON_D_ELF_SORC 657 |
#define MON_D_ELF_WARLOCK 375 |
#define MON_D_ELF_WARRIOR 182 |
#define MON_DAWN 693 |
#define MON_DEBBY 1032 |
#define MON_DEMILICH 742 |
#define MON_DESTROYER 855 |
#define MON_DIO 878 |
#define MON_DREADMASTER 690 |
#define MON_DROLEM 691 |
#define MON_DRUID 241 |
#define MON_DWORKIN 763 |
#define MON_EBONY_MONK 870 |
#define MON_ECHIZEN 873 |
#define MON_ELDER_THING 569 |
#define MON_ELDER_VAMPIRE 1058 |
#define MON_ELF_LORD 900 |
#define MON_ENERGY_VOR 359 |
#define MON_ERIC 813 |
#define MON_ETHER_DRAKE 504 |
#define MON_ETTIN 621 |
#define MON_F_ANGEL 652 |
#define MON_FAFNER 712 |
#define MON_FANG 55 |
#define MON_FAST | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_FAST]) |
#define MON_FENGHUANG 988 |
#define MON_FIONA 791 |
#define MON_FIRE_VOR 354 |
#define MON_FUNDIN 762 |
#define MON_G_BALROG 720 |
#define MON_G_C_DRAKE 646 |
#define MON_G_CTHULHU 857 |
#define MON_G_MASTER_MYS 917 |
#define MON_G_TITAN 702 |
#define MON_GACHAPIN 441 |
#define MON_GANDALF 772 |
#define MON_GCWADL 929 |
#define MON_GERARD 807 |
#define MON_GHB 39 |
#define MON_GHOST 477 |
#define MON_GHOST_Q 1003 |
#define MON_GHOUL_KING 483 |
#define MON_GODZILLA 832 |
#define MON_GOEMON 505 |
#define MON_GOLD_COINS 195 |
#define MON_GORBAG 315 |
#define MON_GOTHMOG 856 |
#define MON_GRAV_HOUND 540 |
#define MON_GREEN_G 100 |
#define MON_GRIP 53 |
#define MON_GROO 1062 |
#define MON_GWAIHIR 410 |
#define MON_HAGEN 383 |
#define MON_HAGURE 871 |
#define MON_HALFLING_S 539 |
#define MON_HATOPOPPO 1083 |
#define MON_HILL_GIANT 255 |
#define MON_HORSE 956 |
#define MON_IE 921 |
#define MON_IKETA 949 |
#define MON_IMP 296 |
#define MON_INVULNER | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_INVULNER]) |
#define MON_IRON_GOLEM 367 |
#define MON_IRON_LICH 666 |
#define MON_IVORY_MONK 492 |
#define MON_JABBERWOCK 778 |
#define MON_JACK_SHADOWS 670 |
#define MON_JADE_MONK 370 |
#define MON_JAIAN 967 |
#define MON_JIZOTAKO 1065 |
#define MON_JORMUNGAND 854 |
#define MON_JUBJUB 640 |
#define MON_JULIAN 794 |
#define MON_JURT 517 |
#define MON_KAGE 964 |
#define MON_KAKU 1002 |
#define MON_KAVLAX 616 |
#define MON_KENSHIROU 936 |
#define MON_KIRIN 989 |
#define MON_KLING 819 |
#define MON_KNI_TEMPLAR 1037 |
#define MON_KOGAN 1096 |
#define MON_LEPER 13 |
#define MON_LICH 518 |
#define MON_LION_HEART 19 |
#define MON_LIZARD_KING 332 |
#define MON_LLOIGOR 682 |
#define MON_LOCKE_CLONE 930 |
#define MON_LOG_MASTER 498 |
#define MON_LORD_CHAOS 737 |
#define MON_LOST_SOUL 133 |
#define MON_LOUSE 69 |
#define MON_LOUSY 1063 |
#define MON_LUNGORTHIN 839 |
#define MON_LUPART 934 |
#define MON_M_MH_DRAGON 593 |
#define MON_M_MINDCRAFTER 1056 |
#define MON_MANA_HOUND 887 |
#define MON_MANDOR 598 |
#define MON_MANES 128 |
#define MON_MASTER_LICH 658 |
#define MON_MASTER_MYS 916 |
#define MON_MASTER_YEEK 224 |
#define MON_MENELDOR 384 |
#define MON_MITHRIL_COINS 239 |
#define MON_MITHRIL_GOLEM 464 |
#define MON_MONFEAR | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_MONFEAR]) |
#define MON_MORGOTH 861 |
#define MON_MORI_TROLL 1060 |
#define MON_NAZGUL 696 |
#define MON_NEXUS_VOR 587 |
#define MON_NIGHTBLADE 564 |
#define MON_NIGHTCRAWLER 744 |
#define MON_NIGHTWALKER 768 |
#define MON_NINJA 485 |
#define MON_NOBORTA 1059 |
#define MON_NODENS 849 |
#define MON_NOV_PALADIN 97 |
#define MON_NOV_PALADIN_G 147 |
#define MON_NOV_PRIEST 45 |
#define MON_NOV_PRIEST_G 109 |
#define MON_OBERON 860 |
#define MON_OGRE_SHAMAN 479 |
#define MON_OHMU 879 |
#define MON_ONE_RING 864 |
#define MON_ORC_CAPTAIN 285 |
#define MON_OROCHI 872 |
#define MON_PALADIN 1038 |
#define MON_PHANTOM_B 385 |
#define MON_PHANTOM_W 152 |
#define MON_PINK_HORROR 242 |
#define MON_PIP 1004 |
#define MON_PIRANHA 70 |
#define MON_PLANETAR 942 |
#define MON_PLASMA_HOUND 726 |
#define MON_PLASMA_VOR 588 |
#define MON_PRIEST 225 |
#define MON_RAAL 557 |
#define MON_RAOU 1018 |
#define MON_RAPHAEL 769 |
#define MON_REVENANT 555 |
#define MON_RICH 948 |
#define MON_RINALDO 660 |
#define MON_ROBIN_HOOD 138 |
#define MON_ROLENTO 1013 |
#define MON_S_TYRANNO 705 |
#define MON_SABRE_TIGER 339 |
#define MON_SANTACLAUS 733 |
#define MON_SARUMAN 771 |
#define MON_SAURON 858 |
#define MON_SERAPH 605 |
#define MON_SERPENT 862 |
#define MON_SHADOW_DRAKE 471 |
#define MON_SHADOWLORD 774 |
#define MON_SHAGRAT 314 |
#define MON_SHAMBLER 786 |
#define MON_SHARD_VOR 897 |
#define MON_SHIM_VOR 600 |
#define MON_SHURYUUDAN 1023 |
#define MON_SHUTEN 979 |
#define MON_SILVER_COINS 117 |
#define MON_SKY_DRAKE 793 |
#define MON_SLOW | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_SLOW]) |
#define MON_SMAUG 697 |
#define MON_SOLAR 943 |
#define MON_SPAWN_CTH 836 |
#define MON_SPECT_WYRM 874 |
#define MON_SPIRIT_NAGA 436 |
#define MON_STONE_GIANT 321 |
#define MON_STORMBRINGER 698 |
#define MON_STUNNED | ( | M_PTR | ) | ((M_PTR)->mtimed[MTIMED_STUNNED]) |
#define MON_SUKE 1001 |
#define MON_SURTUR 837 |
#define MON_TANUKI 1067 |
#define MON_TARRASQUE 838 |
#define MON_THAT_BAT 975 |
#define MON_THORONDOR 468 |
#define MON_TIGER 230 |
#define MON_TIME_HOUND 725 |
#define MON_TIME_VOR 589 |
#define MON_TINDALOS 739 |
#define MON_TOPAZ_MONK 1047 |
#define MON_TROLL_KING 894 |
#define MON_TROLL_PRIEST 403 |
#define MON_TSUCHINOKO 926 |
#define MON_ULT_BEHOLDER 781 |
#define MON_ULTRA_PALADIN 699 |
#define MON_UMBER_HULK 283 |
#define MON_UND_BEHOLDER 664 |
#define MON_UNGOLIANT 808 |
#define MON_UNICORN_ORD 859 |
#define MON_UNMAKER 815 |
#define MON_VAMPIRE_LORD 623 |
#define MON_VENOM_WYRM 890 |
#define MON_VORPAL_BUNNY 205 |
#define MON_W_KNIGHT 938 |
#define MON_WAHHA 1031 |
#define MON_WARP_DEMON 812 |
#define MON_WATER_ELEM 512 |
#define MON_WATER_VOR 355 |
#define MON_WERERAT 270 |
#define MON_WOLF 54 |
#define MON_WONG 880 |
#define MON_WOUNDED_BEAR 159 |
#define MON_WYRM_POWER 847 |
#define MON_WYRM_SPACE 1064 |
#define MON_WYVERN 334 |
#define MON_XICLOTLAN 396 |
#define MON_Y_GOLONAC 810 |
#define MON_YASE_HORSE 955 |
#define MON_ZOMBI_SERPENT 883 |
#define MTIMED_CONFUSED 4 /* Monster is confused */ |
#define MTIMED_CSLEEP 0 /* Monster is sleeping */ |
#define MTIMED_FAST 1 /* Monster is temporarily fast */ |
#define MTIMED_INVULNER 6 /* Monster is temporarily invulnerable */ |
#define MTIMED_MONFEAR 5 /* Monster is afraid */ |
#define MTIMED_SLOW 2 /* Monster is temporarily slow */ |
#define MTIMED_STUNNED 3 /* Monster is stunned */ |
#define PM_ALLOW_GROUP 0x00000002 |
モンスター生成フラグ: 集団生成されても良い
#define PM_ALLOW_SLEEP 0x00000001 |
モンスター生成フラグ: 眠っている状態で生成されても良い
#define PM_ALLOW_UNIQUE 0x00000040 |
モンスター生成フラグ: ユニークの選択生成を許可する
#define PM_FORCE_FRIENDLY 0x00000004 |
モンスター生成フラグ: 必ず友好的に生成される
#define PM_FORCE_PET 0x00000008 |
モンスター生成フラグ: 必ずペットとして生成される
#define PM_HASTE 0x00000100 |
モンスター生成フラグ: 加速状態で生成する
#define PM_IGNORE_TERRAIN 0x00000080 |
モンスター生成フラグ: 侵入可能地形を考慮せずに生成する
#define PM_KAGE 0x00000200 |
モンスター生成フラグ: 必ずあやしい影として生成する
#define PM_MULTIPLY 0x00000400 |
モンスター生成フラグ: 増殖処理時として生成する
#define PM_NO_KAGE 0x00000010 |
モンスター生成フラグ: 必ずあやしい影としては生成されない
#define PM_NO_PET 0x00000020 |
モンスター生成フラグ: 必ずペットとして生成されない
#define SM_CLONED 0x00400000 |
クローンである / Cloned
#define SM_FRIENDLY 0x10000000 |
友好的である / Friendly
#define SM_IMM_ACID 0x01000000 |
モンスターの学習フラグ: プレイヤーに酸免疫あり
#define SM_IMM_COLD 0x08000000 |
モンスターの学習フラグ: プレイヤーに冷気免疫あり
#define SM_IMM_ELEC 0x02000000 |
モンスターの学習フラグ: プレイヤーに電撃免疫あり
#define SM_IMM_FIRE 0x04000000 |
モンスターの学習フラグ: プレイヤーに火炎免疫あり
#define SM_IMM_FREE 0x40000000 |
モンスターの学習フラグ: プレイヤーに麻痺耐性あり
#define SM_IMM_MANA 0x80000000 |
モンスターの学習フラグ: プレイヤーにMPがない
#define SM_IMM_REFLECT 0x20000000 |
モンスターの学習フラグ: プレイヤーに反射あり
#define SM_OPP_ACID 0x00010000 |
モンスターの学習フラグ: プレイヤーに二重酸耐性あり
#define SM_OPP_COLD 0x00080000 |
モンスターの学習フラグ: プレイヤーに二重冷気耐性あり
#define SM_OPP_ELEC 0x00020000 |
モンスターの学習フラグ: プレイヤーに二重電撃耐性あり
#define SM_OPP_FIRE 0x00040000 |
モンスターの学習フラグ: プレイヤーに二重火炎耐性あり
#define SM_OPP_POIS 0x00100000 |
モンスターの学習フラグ: プレイヤーに二重毒耐性あり
#define SM_OPP_XXX1 0x00200000 |
未使用 / (unused)
#define SM_PET 0x00800000 |
ペットである / Pet
#define SM_RES_ACID 0x00000001 |
モンスターの学習フラグ: プレイヤーに酸耐性あり
#define SM_RES_BLIND 0x00001000 |
モンスターの学習フラグ: プレイヤーに盲目耐性あり
#define SM_RES_CHAOS 0x00000400 |
モンスターの学習フラグ: プレイヤーにカオス耐性あり
#define SM_RES_COLD 0x00000008 |
モンスターの学習フラグ: プレイヤーに冷気耐性あり
#define SM_RES_CONF 0x00000200 |
モンスターの学習フラグ: プレイヤーに混乱耐性あり
#define SM_RES_DARK 0x00000080 |
モンスターの学習フラグ: プレイヤーに暗黒耐性あり
#define SM_RES_DISEN 0x00000800 |
モンスターの学習フラグ: プレイヤーに劣化耐性あり
#define SM_RES_ELEC 0x00000002 |
モンスターの学習フラグ: プレイヤーに電撃耐性あり
#define SM_RES_FEAR 0x00000100 |
モンスターの学習フラグ: プレイヤーに恐怖耐性あり
#define SM_RES_FIRE 0x00000004 |
モンスターの学習フラグ: プレイヤーに火炎耐性あり
#define SM_RES_LITE 0x00000040 |
モンスターの学習フラグ: プレイヤーに閃光耐性あり
#define SM_RES_NETH 0x00000020 |
モンスターの学習フラグ: プレイヤーに地獄耐性あり
#define SM_RES_NEXUS 0x00002000 |
モンスターの学習フラグ: プレイヤーに因果混乱耐性あり
#define SM_RES_POIS 0x00000010 |
モンスターの学習フラグ: プレイヤーに毒耐性あり
#define SM_RES_SHARD 0x00008000 |
モンスターの学習フラグ: プレイヤーに破片耐性あり
#define SM_RES_SOUND 0x00004000 |
モンスターの学習フラグ: プレイヤーに轟音耐性あり
#define SUB_ALIGN_EVIL 0x0001 |
#define SUB_ALIGN_GOOD 0x0002 |
#define SUB_ALIGN_NEUTRAL 0x0000 |
typedef struct monster_type monster_type |
typedef bool(* monsterrace_hook_type) (MONRACE_IDX r_idx) |
ダンジョンの主生成を試みる / Put the Guardian
def_val | 現在の主の生成状態 |
指定地点に1種類のモンスター種族による群れを生成する
y | 生成地点y座標 |
x | 生成地点x座標 |
ダンジョンの初期配置モンスターを生成1回生成する / Attempt to allocate a random monster in the dungeon.
dis | プレイヤーから離れるべき最低距離 |
mode | 生成オプション |
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
void anger_monster | ( | monster_type * | m_ptr | ) |
モンスターを怒らせる Anger the monster
m_ptr | モンスター情報構造体の参照ポインタ |
bool are_enemies | ( | monster_type * | m_ptr, |
monster_type * | n_ptr | ||
) |
モンスターの属性の基づいた敵対関係の有無を返す Check if two monsters are enemies
m_ptr | モンスター1の構造体参照ポインタ |
n_ptr | モンスター2の構造体参照ポインタ |
void choose_new_monster | ( | MONSTER_IDX | m_idx, |
bool | born, | ||
MONRACE_IDX | r_idx | ||
) |
モンスターの変身処理
m_idx | 変身処理を受けるモンスター情報のID |
born | 生成時の初変身先指定ならばtrue |
r_idx | 旧モンスター種族のID |
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 the monster, if any, at a given location
x | 削除位置x座標 |
y | 削除位置y座標 |
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.
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 | 文字列を格納するポインタ |
void display_roff | ( | MONRACE_IDX | r_idx | ) |
モンスター情報の現在のウィンドウに表示する / Hack – describe the given monster race in the current "term" window
r_idx | モンスターの種族ID |
concptr extract_note_dies | ( | MONRACE_IDX | r_idx | ) |
モンスターを撃破した際の述語メッセージを返す / Return monster death string
r_ptr | 撃破されたモンスターの種族情報を持つ構造体の参照ポインタ |
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.
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 |
int get_monster_crowd_number | ( | MONSTER_IDX | m_idx | ) |
指定したモンスターに隣接しているモンスターの数を返す。 / Count number of adjacent monsters
m_idx | 隣接数を調べたいモンスターのID |
monsterrace_hook_type get_monster_hook | ( | void | ) |
プレイヤーの現在の広域マップ座標から得た地勢を元にモンスターの生成条件関数を返す
monsterrace_hook_type get_monster_hook2 | ( | POSITION | y, |
POSITION | x | ||
) |
指定された広域マップ座標の地勢を元にモンスターの生成条件関数を返す
SPEED get_mspeed | ( | monster_race * | r_ptr | ) |
モンスターの個体加速を設定する / Get initial monster speed
r_ptr | モンスター種族の参照ポインタ |
concptr look_mon_desc | ( | monster_type * | m_ptr, |
BIT_FLAGS | mode | ||
) |
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-
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.
MONSTER_IDX m_pop | ( | void | ) |
モンスター配列の空きを探す / Acquires and returns the index of a "free" monster.
This routine should almost never fail, but it can happen.
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
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 | オプション |
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 | オプション |
void monster_death | ( | MONSTER_IDX | m_idx, |
bool | drop_item | ||
) |
モンスターが死亡した時の処理 / Handle the "death" of a monster.
m_idx | 死亡したモンスターのID |
drop_item | TRUEならばモンスターのドロップ処理を行う |
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.
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"
void monster_drop_carried_objects | ( | monster_type * | m_ptr | ) |
モンスターが盗みや拾いで確保していたアイテムを全てドロップさせる / Drop all items carried by a monster
m_ptr | モンスター参照ポインタ |
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 | モンスター種族情報の構造体参照ポインタ |
If user is player, m_ptr == NULL.
void monster_name | ( | MONSTER_IDX | m_idx, |
char * | m_name | ||
) |
モンスターIDを取り、モンスター名をm_nameに代入する /
m_idx | モンスターID |
m_name | モンスター名を入力する配列 |
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 | 生成オプション |
Note that "reproduction" REQUIRES empty space.
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 | 出力処理を行う関数ポインタ |
一般的なモンスター生成処理のメインルーチン / Attempt to place a monster of the given race at the given location
y | 生成地点y座標 |
x | 生成地点x座標 |
mode | 生成オプション |
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 | 生成オプション |
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.
MONRACE_IDX real_r_idx | ( | monster_type * | m_ptr | ) |
monster_race* real_r_ptr | ( | monster_type * | m_ptr | ) |
モンスターの真の種族を返す / Extract monster race pointer of a monster's true form
m_ptr | モンスターの参照ポインタ |
void reset_target | ( | monster_type * | m_ptr | ) |
モンスターの目標地点をリセットする / Reset the target of counter attack
m_ptr | モンスターの参照ポインタ |
void roff_top | ( | MONRACE_IDX | r_idx | ) |
モンスター情報のヘッダを記述する Hack – Display the "name" and "attr/chars" of a monster race
r_idx | モンスターの種族ID |
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 | 表示オプション |
void set_friendly | ( | monster_type * | m_ptr | ) |
モンスターを友好的にする
m_ptr | モンスター情報構造体の参照ポインタ |
void set_hostile | ( | monster_type * | m_ptr | ) |
モンスターを敵に回す Makes the monster hostile towards the player
m_ptr | モンスター情報構造体の参照ポインタ |
void set_pet | ( | monster_type * | m_ptr | ) |
モンスターをペットにする
m_ptr | モンスター情報構造体の参照ポインタ |
void set_target | ( | monster_type * | m_ptr, |
POSITION | y, | ||
POSITION | x | ||
) |
モンスターの目標地点をセットする / Set the target of counter attack
m_ptr | モンスターの参照ポインタ |
y | 目標y座標 |
x | 目標x座標 |
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".
void update_monsters | ( | bool | full | ) |
単純に生存している全モンスターの更新処理を行う / This function simply updates all the (non-dead) monsters (see above).
full | 距離更新を行うならtrue |
void update_smart_learn | ( | MONSTER_IDX | m_idx, |
int | what | ||
) |
SMART(適格に攻撃を行う)モンスターの学習状況を更新する / Learn about an "observed" resistance.
m_idx | 更新を行う「モンスター情報ID |
what | 学習対象ID |
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.
MONSTER_IDX hack_m_idx |
MONSTER_IDX hack_m_idx_ii |