static const pop_entry pop_d[] = { // Dungeon (OOD cap: 27) { -3, 7, 515, SEMI, MONS_GIANT_NEWT }, { -2, 8, 515, SEMI, MONS_GIANT_COCKROACH }, { -2, 8, 192, PEAK, MONS_BALL_PYTHON }, { -1, 7, 136, SEMI, MONS_OOZE }, { 0, 10, 1000, FLAT, MONS_BAT }, { 0, 10, 1000, FLAT, MONS_KOBOLD }, { 0, 10, 1000, FLAT, MONS_RAT }, { 1, 7, 1000, FLAT, MONS_GOBLIN }, { 1, 11, 1000, FLAT, MONS_HOBGOBLIN }, { 1, 11, 515, SEMI, MONS_GIANT_GECKO }, { 1, 11, 335, SEMI, MONS_JACKAL }, { 1, 11, 192, PEAK, MONS_GIANT_MITE }, { 1, 11, 192, PEAK, MONS_GNOLL }, { 2, 12, 925, FLAT, MONS_ADDER }, { 2, 12, 515, SEMI, MONS_QUOKKA }, { 2, 6, 515, DOWN, MONS_WORM }, { 3, 13, 1000, FLAT, MONS_ORC }, { 4, 10, 52, SEMI, MONS_GNOLL_SHAMAN }, { 4, 12, 136, SEMI, MONS_ORC_PRIEST }, { 4, 14, 925, FLAT, MONS_WORKER_ANT }, { 4, 14, 825, SEMI, MONS_HOUND }, { 4, 14, 825, SEMI, MONS_OGRE }, { 4, 14, 515, SEMI, MONS_IGUANA }, { 4, 14, 515, SEMI, MONS_ORC_WIZARD }, { 4, 14, 515, SEMI, MONS_SCORPION }, { 4, 14, 335, SEMI, MONS_PHANTOM }, { 4, 16, 1000, FLAT, MONS_SKELETON }, { 5, 13, 89, PEAK, MONS_GNOLL_SERGEANT }, { 5, 15, 650, FLAT, MONS_CRIMSON_IMP }, { 5, 15, 350, FLAT, MONS_SHADOW_IMP }, { 5, 15, 825, SEMI, MONS_CENTAUR }, { 5, 15, 515, SEMI, MONS_ICE_BEAST }, { 5, 15, 515, SEMI, MONS_JELLY }, { 5, 15, 515, SEMI, MONS_SKY_BEAST }, { 5, 15, 192, PEAK, MONS_NECROPHAGE }, { 5, 15, 192, PEAK, MONS_QUASIT }, { 5, 15, 192, PEAK, MONS_WATER_MOCCASIN }, { 5, 16, 1000, FLAT, MONS_ZOMBIE }, { 6, 11, 515, DOWN, MONS_GOLIATH_BEETLE }, { 6, 13, 285, SEMI, MONS_BLACK_BEAR }, { 6, 16, 1000, FLAT, MONS_GIANT_FROG }, { 6, 16, 825, SEMI, MONS_ORC_WARRIOR }, { 6, 16, 335, SEMI, MONS_GIANT_SPORE }, { 6, 16, 335, SEMI, MONS_WIGHT }, { 6, 16, 192, PEAK, MONS_MUMMY }, { 7, 14, 415, SEMI, MONS_BIG_KOBOLD }, { 7, 14, 500, SEMI, MONS_KILLER_BEE }, { 7, 15, 89, PEAK, MONS_STEAM_DRAGON }, { 7, 17, 515, SEMI, MONS_HIPPOGRIFF }, { 7, 17, 350, SEMI, MONS_HUNGRY_GHOST }, { 7, 17, 192, PEAK, MONS_CROCODILE }, { 7, 17, 192, PEAK, MONS_YELLOW_WASP }, { 8, 17, 300, SEMI, MONS_TWO_HEADED_OGRE }, { 8, 18, 335, SEMI, MONS_WYVERN }, { 8, 18, 230, PEAK, MONS_EYE_OF_DRAINING }, { 9, 14, 825, SEMI, MONS_YAK }, { 9, 16, 475, SEMI, MONS_DEEP_ELF_MAGE }, { 9, 17, 825, SEMI, MONS_TROLL }, { 10, 16, 194, PEAK, MONS_SOLDIER_ANT }, { 10, 18, 1000, FLAT, MONS_HILL_GIANT }, { 10, 18, 370, SEMI, MONS_GARGOYLE }, { 10, 18, 335, SEMI, MONS_WRAITH }, { 10, 18, 220, PEAK, MONS_TRAPDOOR_SPIDER }, { 10, 20, 515, SEMI, MONS_UNSEEN_HORROR }, { 10, 20, 192, PEAK, MONS_KOMODO_DRAGON }, { 11, 18, 235, SEMI, MONS_KOBOLD_DEMONOLOGIST }, { 11, 18, 750, FLAT, MONS_UGLY_THING }, { 11, 21, 420, SEMI, MONS_MANTICORE }, { 11, 21, 825, SEMI, MONS_CYCLOPS }, { 11, 21, 380, SEMI, MONS_SHADOW }, { 11, 21, 335, SEMI, MONS_MOTTLED_DRAGON }, { 11, 21, 260, PEAK, MONS_BASILISK }, { 11, 21, 192, PEAK, MONS_SKELETAL_WARRIOR }, { 11, 21, 146, PEAK, MONS_BRAIN_WORM }, { 11, 23, 515, SEMI, MONS_HYDRA }, { 12, 20, 515, SEMI, MONS_VAMPIRE_MOSQUITO }, { 12, 22, 440, DOWN, MONS_SLIME_CREATURE }, { 12, 22, 192, PEAK, MONS_VAMPIRE }, { 13, 21, 89, PEAK, MONS_RAKSHASA }, { 13, 17, 925, FLAT, MONS_CENTAUR_WARRIOR }, { 18, 23, 925, DOWN, MONS_CENTAUR_WARRIOR }, { 13, 19, 365, SEMI, MONS_TENGU_WARRIOR }, { 13, 19, 205, SEMI, MONS_TENGU_CONJURER }, { 13, 19, 285, SEMI, MONS_EFREET }, { 13, 23, 675, SEMI, MONS_SHAPESHIFTER }, { 13, 23, 335, SEMI, MONS_GRIFFON }, { 13, 27, 89, DOWN, MONS_CATOBLEPAS }, { 14, 19, 140, FLAT, MONS_WIZARD }, { 14, 20, 136, SEMI, MONS_DEEP_ELF_FIGHTER }, { 14, 22, 260, SEMI, MONS_FREEZING_WRAITH }, { 14, 22, 270, SEMI, MONS_SIMULACRUM }, { 14, 22, 115, SEMI, MONS_BOGGART }, { 14, 27, 192, PEAK, MONS_FIRE_DRAGON }, { 15, 20, 335, SEMI, MONS_YAKTAUR }, { 15, 24, 345, DOWN, MONS_ORC_KNIGHT }, { 15, 25, 315, DOWN, MONS_OGRE_MAGE }, { 15, 25, 275, PEAK, MONS_WOLF_SPIDER }, { 16, 24, 89, PEAK, MONS_REDBACK }, { 16, 24, 66, PEAK, MONS_BORING_BEETLE }, { 16, 24, 25, PEAK, MONS_SHADOW_WRAITH }, { 16, 27, 92, PEAK, MONS_ICE_DRAGON }, { 17, 23, 89, PEAK, MONS_VERY_UGLY_THING }, { 17, 24, 245, PEAK, MONS_BOULDER_BEETLE }, { 17, 24, 102, SEMI, MONS_GREAT_ORB_OF_EYES }, { 17, 24, 52, SEMI, MONS_NECROMANCER }, { 17, 25, 136, SEMI, MONS_DEEP_ELF_KNIGHT }, { 17, 25, 136, SEMI, MONS_RED_WASP }, { 17, 25, 89, PEAK, MONS_FIRE_CRAB }, { 17, 25, 89, PEAK, MONS_HARPY }, { 17, 25, 68, SEMI, MONS_DEEP_ELF_CONJURER }, { 17, 25, 68, SEMI, MONS_DEEP_ELF_PRIEST }, { 18, 24, 52, SEMI, MONS_GIANT_ORANGE_BRAIN }, { 18, 28, 180, PEAK, MONS_FLAYED_GHOST }, { 19, 25, 35, PEAK, MONS_ORC_HIGH_PRIEST }, { 19, 26, 136, SEMI, MONS_DEEP_TROLL }, { 19, 27, 89, UP, MONS_SPHINX }, { 20, 30, 310, DOWN, MONS_YAKTAUR_CAPTAIN }, { 20, 30, 136, SEMI, MONS_FIRE_GIANT }, { 20, 30, 136, SEMI, MONS_FROST_GIANT }, { 21, 27, 25, PEAK, MONS_ORC_SORCERER }, { 21, 27, 310, DOWN, MONS_STONE_GIANT }, { 21, 31, 192, PEAK, MONS_ETTIN }, { 22, 30, 136, SEMI, MONS_DEEP_TROLL_EARTH_MAGE }, { 23, 27, 89, UP, MONS_STORM_DRAGON }, { 23, 27, 28, SEMI, MONS_ORC_WARLORD }, { 23, 29, 25, PEAK, MONS_HELL_KNIGHT }, { 23, 31, 89, PEAK, MONS_PHANTASMAL_WARRIOR }, { 23, 27, 136, FLAT, MONS_GLOWING_SHAPESHIFTER }, { 24, 27, 22, UP, MONS_DEEP_ELF_ANNIHILATOR }, { 24, 27, 22, UP, MONS_DEEP_ELF_HIGH_PRIEST }, { 24, 27, 22, UP, MONS_VAMPIRE_KNIGHT }, { 24, 27, 136, UP, MONS_TENGU_REAVER }, { 24, 27, 8, UP, MONS_DANCING_WEAPON }, { 24, 27, 25, FLAT, MONS_WAR_GARGOYLE }, { 25, 27, 12, UP, MONS_CRYSTAL_GUARDIAN }, { 27, 27, 18, FLAT, MONS_SHADOW_DRAGON }, { 27, 27, 8, FLAT, MONS_IRON_DRAGON }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_temple[] = { // Temple { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_orc[] = { // Orcish Mines { 1, 4, 25, DOWN, MONS_FUNGUS }, { 1, 4, 192, FLAT, MONS_GOBLIN }, { 1, 4, 1000, FLAT, MONS_ORC }, { 1, 4, 89, FLAT, MONS_HOBGOBLIN }, { 1, 4, 192, FLAT, MONS_ORC_WARRIOR }, { 1, 4, 25, SEMI, MONS_ORC_PRIEST }, { 1, 4, 40, FLAT, MONS_WARG }, { 2, 4, 3, SEMI, MONS_GNOLL }, { 1, 5, 25, SEMI, MONS_ORC_WIZARD }, { 1, 5, 25, SEMI, MONS_ORC_KNIGHT }, { 1, 4, 89, FLAT, MONS_OGRE }, { 4, 4, 1, FLAT, MONS_GNOLL_SHAMAN }, { 4, 4, 1, FLAT, MONS_GNOLL_SERGEANT }, { 2, 4, 8, UP, MONS_ORC_HIGH_PRIEST }, { 1, 4, 25, UP, MONS_ORC_SORCERER }, { 2, 4, 8, UP, MONS_ORC_WARLORD }, { 2, 4, 8, UP, MONS_TWO_HEADED_OGRE }, { 4, 4, 1, FLAT, MONS_OGRE_MAGE }, { 1, 4, 40, UP, MONS_TROLL }, { 2, 4, 8, UP, MONS_CYCLOPS }, { 3, 4, 4, UP, MONS_ETTIN }, { 3, 4, 4, UP, MONS_STONE_GIANT }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_elf[] = { // Elven Halls (OOD cap: 7) { 1, 7, 1000, FLAT, MONS_FUNGUS }, { 1, 7, 1000, FLAT, MONS_DEEP_ELF_FIGHTER }, { 1, 7, 1200, FLAT, MONS_DEEP_ELF_MAGE }, { 1, 7, 650, FLAT, MONS_DEEP_ELF_SUMMONER }, { 1, 7, 780, FLAT, MONS_DEEP_ELF_CONJURER }, { 1, 6, 150, FLAT, MONS_SHAPESHIFTER }, { 1, 5, 50, FLAT, MONS_ORC_HIGH_PRIEST }, { 1, 6, 50, FLAT, MONS_ORC_SORCERER }, { 1, 7, 925, FLAT, MONS_DEEP_ELF_KNIGHT }, { 1, 7, 350, FLAT, MONS_DEEP_ELF_PRIEST }, { 1, 6, 65, SEMI, MONS_GLOWING_SHAPESHIFTER }, { 1, 7, 40, SEMI, MONS_DEEP_ELF_HIGH_PRIEST }, { 1, 8, 65, SEMI, MONS_DEEP_ELF_DEMONOLOGIST }, { 1, 7, 40, SEMI, MONS_DEEP_ELF_ANNIHILATOR }, { 1, 8, 65, SEMI, MONS_DEEP_ELF_SORCERER }, { 0, 7, 45, SEMI, MONS_DEEP_ELF_DEATH_MAGE }, { 6, 7, 10, UP, MONS_DEEP_ELF_BLADEMASTER }, { 6, 7, 10, UP, MONS_DEEP_ELF_MASTER_ARCHER }, { 0,0,0,FLAT,MONS_0 } }; #if TAG_MAJOR_VERSION == 34 static const pop_entry pop_dwarf[] = { // Dwarven Hall { 1, 1, 1000, FLAT, MONS_DEEP_DWARF }, { 1, 1, 690, FLAT, MONS_DEATH_KNIGHT }, { 1, 1, 335, FLAT, MONS_UNBORN }, { 1, 1, 3, FLAT, MONS_DEEP_TROLL }, { 1, 1, 3, FLAT, MONS_DEEP_TROLL_EARTH_MAGE }, { 1, 1, 3, FLAT, MONS_DEEP_TROLL_SHAMAN }, { 1, 1, 8, FLAT, MONS_STONE_GIANT }, { 1, 1, 8, FLAT, MONS_FIRE_GIANT }, { 1, 1, 8, FLAT, MONS_FROST_GIANT }, { 1, 1, 192, FLAT, MONS_WRAITH }, { 1, 1, 3, FLAT, MONS_SHADOW_WRAITH }, { 1, 1, 8, FLAT, MONS_EIDOLON }, { 1, 1, 8, FLAT, MONS_PHANTASMAL_WARRIOR }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_blade[] = { // Hall of Blades { 1, 1, 1000, FLAT, MONS_DANCING_WEAPON }, { 0,0,0,FLAT,MONS_0 } }; #endif static const pop_entry pop_lair[] = { // Lair { -4, 6, 825, SEMI, MONS_IGUANA }, { 1, 6, 1000, FLAT, MONS_QUOKKA }, { 1, 7, 1000, FLAT, MONS_PORCUPINE }, { -3, 7, 690, SEMI, MONS_HOUND }, { 1, 7, 1000, FLAT, MONS_GIANT_FROG }, { -1, 5, 52, SEMI, MONS_BLACK_BEAR }, { 1, 8, 925, FLAT, MONS_ADDER }, { -2, 8, 750, SEMI, MONS_GREEN_RAT }, { 1, 8, 980, FLAT, MONS_CROCODILE }, { 0, 6, 25, PEAK, MONS_SCORPION }, { 0, 8, 260, SEMI, MONS_BASILISK }, { 1, 8, 980, FLAT, MONS_WATER_MOCCASIN }, { 0, 8, 260, SEMI, MONS_WOLF }, { 1, 8, 515, FLAT, MONS_HIPPOGRIFF }, { 1, 8, 880, FLAT, MONS_SPINY_FROG }, { 2, 6, 8, PEAK, MONS_YELLOW_WASP }, { 1, 8, 515, FLAT, MONS_KOMODO_DRAGON }, { 2, 8, 25, PEAK, MONS_ORANGE_RAT }, { 1, 9, 275, SEMI, MONS_SHEEP }, { 1, 8, 515, FLAT, MONS_YAK }, { 2, 8, 52, SEMI, MONS_POLAR_BEAR }, { 1, 9, 420, SEMI, MONS_BLINK_FROG }, { 2, 8, 25, PEAK, MONS_STEAM_DRAGON }, { 1, 11, 455, SEMI, MONS_BLACK_MAMBA }, { 1, 11, 515, SEMI, MONS_HYDRA }, { 3, 9, 52, SEMI, MONS_CATOBLEPAS }, { 3, 9, 80, SEMI, MONS_TORPOR_SNAIL }, { 4, 8, 14, SEMI, MONS_BRAIN_WORM }, { 2, 10, 89, PEAK, MONS_WYVERN }, { 1, 11, 275, PEAK, MONS_FIRE_DRAKE }, { 4, 8, 8, PEAK, MONS_TRAPDOOR_SPIDER }, { 3, 9, 25, PEAK, MONS_OKLOB_PLANT }, { 2, 12, 275, PEAK, MONS_ELEPHANT }, { 2, 12, 192, PEAK, MONS_GRIFFON }, { 4, 10, 52, SEMI, MONS_POLAR_BEAR }, { 4, 10, 25, PEAK, MONS_LINDWURM }, { 5, 9, 11, PEAK, MONS_WOLF_SPIDER }, { 5, 9, 17, SEMI, MONS_REDBACK }, { 5, 9, 17, SEMI, MONS_WANDERING_MUSHROOM }, { 3, 8, 192, UP , MONS_DEATH_YAK }, { 5, 12, 66, UP , MONS_FIRE_CRAB }, { 3, 8, 180, UP , MONS_BORING_BEETLE }, { 4, 8, 89, UP , MONS_BOULDER_BEETLE }, { 1, 6, 3000, FLAT, MONS_NO_MONSTER }, // Roughly old D:1 chaff weight { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_swamp[] = { // Swamp { 1, 5, 1000, FLAT, MONS_FUNGUS }, { 1, 5, 1000, FLAT, MONS_PLANT }, { 1, 5, 880, FLAT, MONS_WATER_MOCCASIN }, { 1, 5, 1000, FLAT, MONS_ALLIGATOR }, { -2, 5, 155, FLAT, MONS_GIANT_FROG }, { 1, 5, 925, FLAT, MONS_SWAMP_DRAKE }, { -2, 5, 345, FLAT, MONS_RAVEN }, { -2, 5, 275, SEMI, MONS_CROCODILE }, { 1, 5, 915, FLAT, MONS_HYDRA }, { 1, 5, 665, FLAT, MONS_VAMPIRE_MOSQUITO }, { 1, 5, 925, FLAT, MONS_BOG_BODY }, { 1, 5, 100, DOWN, MONS_KOMODO_DRAGON }, { 1, 5, 825, FLAT, MONS_GIANT_LEECH }, { 1, 5, 1000, FLAT, MONS_SPINY_FROG }, { 1, 5, 500, FLAT, MONS_SWAMP_DRAGON }, { 1, 5, 192, FLAT, MONS_RED_WASP }, { 1, 7, 40, PEAK, MONS_UGLY_THING }, { 1, 5, 335, FLAT, MONS_INSUBSTANTIAL_WISP }, { 1, 7, 40, PEAK, MONS_PHANTOM }, { -1, 7, 245, SEMI, MONS_SHADOW }, { 2, 8, 115, PEAK, MONS_BLINK_FROG }, { -5, 5, 480, UP, MONS_SLIME_CREATURE }, { 2, 8, 52, SEMI, MONS_VERY_UGLY_THING }, { 2, 5, 25, UP, MONS_TENTACLED_MONSTROSITY }, { 2, 6, 425, SEMI, MONS_SHAMBLING_MANGROVE }, { 1, 6, 480, SEMI, MONS_SPRIGGAN_RIDER }, { 3, 5, 525, UP, MONS_SPRIGGAN_DRUID }, { 2, 5, 435, UP, MONS_THORN_HUNTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_shoals[] = { // Shoals { 1, 5, 475, FLAT, MONS_SEA_SNAKE }, { 1, 5, 220, DOWN, MONS_HIPPOGRIFF }, { 1, 5, 450, SEMI, MONS_GRIFFON }, { 1, 5, 735, FLAT, MONS_MERFOLK }, { 1, 5, 300, FLAT, MONS_MERMAID }, { -1, 5, 89, SEMI, MONS_CENTAUR }, { 1, 5, 360, FLAT, MONS_MANTICORE }, { 1, 5, 175, FLAT, MONS_HARPY }, { 1, 5, 385, FLAT, MONS_SNAPPING_TURTLE }, { 1, 7, 170, SEMI, MONS_SIREN }, { 1, 7, 110, SEMI, MONS_CYCLOPS }, { 1, 7, 73, SEMI, MONS_KRAKEN }, { 2, 8, 85, PEAK, MONS_ALLIGATOR_SNAPPING_TURTLE }, { 1, 8, 265, SEMI, MONS_MERFOLK_IMPALER }, { 1, 8, 125, SEMI, MONS_MERFOLK_AQUAMANCER }, { 2, 8, 135, PEAK, MONS_MERFOLK_JAVELINEER }, { 1, 4, 255, SEMI, MONS_FAUN }, { 3, 5, 190, SEMI, MONS_SATYR }, { 1, 5, 125, FLAT, MONS_WIND_DRAKE }, { 1, 5, 195, FLAT, MONS_WATER_ELEMENTAL }, { 1, 7, 300, SEMI, MONS_WATER_NYMPH }, { -1, 3, 100, DOWN, MONS_NO_MONSTER }, // Old bat weight { 3, 7, 740, SEMI, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_snake[] = { // Snake Pit { 1, 7, 650, DOWN, MONS_WATER_MOCCASIN }, { 1, 9, 1125, SEMI, MONS_BLACK_MAMBA }, { 1, 7, 315, SEMI, MONS_ANACONDA }, { 1, 9, 415, PEAK, MONS_SHOCK_SERPENT }, { 1, 5, 200, FLAT, MONS_MANA_VIPER }, { -3, 5, 750, SEMI, MONS_NAGA }, { 1, 9, 340, SEMI, MONS_NAGA_WARRIOR }, { 1, 9, 550, SEMI, MONS_NAGA_MAGE }, { 1, 9, 225, SEMI, MONS_NAGA_RITUALIST }, { 1, 9, 315, SEMI, MONS_NAGA_SHARPSHOOTER }, { 2, 8, 225, PEAK, MONS_GUARDIAN_SERPENT }, { 3, 9, 245, SEMI, MONS_GREATER_NAGA }, { 1, 5, 215, SEMI, MONS_SALAMANDER }, { 3, 7, 110, PEAK, MONS_SALAMANDER_MYSTIC }, { 1, 5, 500, DOWN, MONS_NO_MONSTER }, // Old adder weight { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_spider[] = { // Spider Nest { 1, 5, 335, FLAT, MONS_SPIDER }, { 1, 5, 260, FLAT, MONS_SCORPION }, { 1, 5, 52, FLAT, MONS_YELLOW_WASP }, { 1, 5, 880, FLAT, MONS_TRAPDOOR_SPIDER }, { 1, 5, 605, FLAT, MONS_REDBACK }, { 1, 7, 52, SEMI, MONS_BORING_BEETLE }, { 1, 7, 89, SEMI, MONS_BOULDER_BEETLE }, { 1, 7, 765, FLAT, MONS_JUMPING_SPIDER }, { 1, 7, 550, FLAT, MONS_ORB_SPIDER }, { 1, 7, 690, FLAT, MONS_TARANTELLA }, { 0, 5, 260, UP, MONS_RED_WASP }, { 1, 5, 955, FLAT, MONS_WOLF_SPIDER }, { 2, 7, 190, SEMI, MONS_EMPEROR_SCORPION }, { 0, 10, 765, SEMI, MONS_DEMONIC_CRAWLER }, { 2, 10, 200, PEAK, MONS_GHOST_MOTH }, { 2, 7, 155, SEMI, MONS_MOTH_OF_WRATH }, { 1, 7, 100, FLAT, MONS_TORPOR_SNAIL }, { -1, 5, 193, SEMI, MONS_NO_MONSTER}, // Old worm/cockroach/mite weight { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_slime[] = { // Slime Pits { 1, 6, 2000, FLAT, MONS_JELLY }, { 1, 6, 1000, FLAT, MONS_ACID_BLOB }, { 0, 6, 2000, FLAT, MONS_SLIME_CREATURE }, { 0, 6, 515, FLAT, MONS_EYE_OF_DRAINING }, { 1, 6, 515, FLAT, MONS_AZURE_JELLY }, { 1, 6, 515, FLAT, MONS_SHINING_EYE }, { 1, 6, 200, FLAT, MONS_GOLDEN_EYE }, { 1, 9, 300, SEMI, MONS_EYE_OF_DEVASTATION }, { 1, 9, 390, SEMI, MONS_GREAT_ORB_OF_EYES }, { 1, 6, 200, UP, MONS_DEATH_OOZE }, { 2, 6, 100, UP, MONS_GIANT_ORANGE_BRAIN }, { 1, 6, 800, FLAT, MONS_NO_MONSTER }, // Old ooze weight { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_vaults[] = { // Vaults (OOD cap: 12) { -7, 3, 515, SEMI, MONS_VAMPIRE_MOSQUITO }, { -6, 4, 675, SEMI, MONS_SHAPESHIFTER }, { -6, 4, 335, SEMI, MONS_GRIFFON }, { -5, 3, 270, SEMI, MONS_SIMULACRUM }, { -5, 3, 136, SEMI, MONS_BOGGART }, { -5, 5, 192, PEAK, MONS_FIRE_DRAGON }, { -4, 6, 420, SEMI, MONS_OGRE_MAGE }, { -4, 6, 335, SEMI, MONS_YAKTAUR }, { -2, 6, 136, SEMI, MONS_GREAT_ORB_OF_EYES }, { -2, 6, 136, SEMI, MONS_RED_WASP }, { -2, 6, 136, SEMI, MONS_DEEP_ELF_FIGHTER }, { -2, 6, 136, SEMI, MONS_DEEP_ELF_KNIGHT }, { -2, 6, 89, PEAK, MONS_ICE_DRAGON }, { -2, 6, 89, PEAK, MONS_HARPY }, { -2, 6, 89, PEAK, MONS_FIRE_CRAB }, { -2, 6, 89, PEAK, MONS_VERY_UGLY_THING }, { -2, 8, 245, PEAK, MONS_BOULDER_BEETLE }, { -1, 5, 89, PEAK, MONS_GIANT_ORANGE_BRAIN }, { -1, 9, 260, PEAK, MONS_FREEZING_WRAITH }, { -1, 9, 89, PEAK, MONS_SHADOW_WRAITH }, { -1, 9, 60, PEAK, MONS_FLAYED_GHOST }, { 0, 8, 89, PEAK, MONS_REDBACK }, { 0, 12, 89, PEAK, MONS_SPHINX }, { 1, 1, 440, FLAT, MONS_HILL_GIANT }, { 1, 1, 255, FLAT, MONS_UNSEEN_HORROR }, { 1, 1, 185, FLAT, MONS_WRAITH }, { 1, 2, 415, FLAT, MONS_CYCLOPS }, { 1, 2, 165, FLAT, MONS_MOTTLED_DRAGON }, { 1, 2, 89, FLAT, MONS_SKELETAL_WARRIOR }, { 1, 2, 89, FLAT, MONS_RAKSHASA }, { 1, 3, 440, DOWN, MONS_SLIME_CREATURE }, { 1, 3, 96, DOWN, MONS_VAMPIRE_MOSQUITO }, { 1, 3, 89, FLAT, MONS_WIZARD }, { 1, 3, 89, FLAT, MONS_KOBOLD_DEMONOLOGIST }, { 1, 4, 440, DOWN, MONS_UGLY_THING }, { 1, 4, 440, DOWN, MONS_CENTAUR_WARRIOR }, { 1, 5, 89, FLAT, MONS_NECROMANCER }, { 1, 6, 275, DOWN, MONS_WOLF_SPIDER }, { 1, 7, 690, DOWN, MONS_ORC_KNIGHT }, { 1, 10, 640, DOWN, MONS_VAULT_SENTINEL }, { 1, 10, 640, DOWN, MONS_IRONBRAND_CONVOKER }, { 1, 11, 575, DOWN, MONS_IRONHEART_PRESERVER }, { 1, 12, 510, DOWN, MONS_VAULT_WARDEN }, { 1, 12, 415, DOWN, MONS_YAKTAUR_CAPTAIN }, { 2, 6, 32, PEAK, MONS_CRYSTAL_GUARDIAN }, { 2, 12, 340, DOWN, MONS_STONE_GIANT }, { 2, 12, 192, PEAK, MONS_ETTIN }, { 3, 10, 40, FLAT, MONS_DEEP_ELF_CONJURER }, { 3, 10, 40, FLAT, MONS_DEEP_ELF_PRIEST }, { 3, 11, 136, SEMI, MONS_FIRE_GIANT }, { 3, 11, 136, SEMI, MONS_FROST_GIANT }, { 3, 11, 68, SEMI, MONS_DEEP_TROLL }, { 3, 11, 66, PEAK, MONS_LICH }, { 4, 8, 30, PEAK, MONS_ORC_WARLORD }, { 4, 10, 25, PEAK, MONS_HELL_KNIGHT }, { 4, 12, 155, PEAK, MONS_TENGU_REAVER }, { 4, 12, 89, PEAK, MONS_STORM_DRAGON }, { 4, 12, 89, PEAK, MONS_PHANTASMAL_WARRIOR }, { 5, 11, 70, FLAT, MONS_WAR_GARGOYLE }, { 5, 12, 25, PEAK, MONS_DANCING_WEAPON }, { 5, 13, 193, DOWN, MONS_GLOWING_SHAPESHIFTER }, { 5, 13, 66, PEAK, MONS_TENTACLED_MONSTROSITY }, { 8, 12, 50, FLAT, MONS_SHADOW_DRAGON }, { 9, 12, 50, FLAT, MONS_TITAN }, { 10, 12, 25, FLAT, MONS_DEEP_ELF_HIGH_PRIEST }, { 10, 12, 16, UP, MONS_QUICKSILVER_DRAGON }, { 10, 12, 16, UP, MONS_IRON_DRAGON }, { 10, 14, 25, SEMI, MONS_GOLDEN_DRAGON }, { 11, 12, 16, FLAT, MONS_DEEP_ELF_DEMONOLOGIST }, { 11, 12, 16, FLAT, MONS_DEEP_ELF_ANNIHILATOR }, { 11, 12, 16, FLAT, MONS_DEEP_ELF_SORCERER }, { 11, 12, 16, FLAT, MONS_DEEP_ELF_DEATH_MAGE }, { 12, 12, 16, FLAT, MONS_ANCIENT_LICH }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_crypt[] = { // Crypt { 2, 7, 145, SEMI, MONS_EIDOLON }, { 1, 6, 160, DOWN, MONS_WRAITH }, { 1, 3, 65, SEMI, MONS_FREEZING_WRAITH }, { 1, 5, 125, SEMI, MONS_PHANTASMAL_WARRIOR }, { 3, 6, 95, SEMI, MONS_SHADOW_WRAITH }, { 1, 5, 75, FLAT, MONS_SKELETAL_WARRIOR }, { 0, 6, 140, UP, MONS_ANCIENT_CHAMPION }, { 2, 5, 99, SEMI, MONS_GHOUL }, { 1, 4, 85, DOWN, MONS_VAMPIRE }, { 1, 6, 125, PEAK, MONS_VAMPIRE_MAGE }, { 1, 6, 105, UP, MONS_VAMPIRE_KNIGHT }, { 1, 5, 75, SEMI, MONS_JIANGSHI }, { -2, 4, 75, SEMI, MONS_NECROMANCER }, { 1, 5, 30, FLAT, MONS_SILENT_SPECTRE }, { 3, 6, 145, SEMI, MONS_FLAYED_GHOST }, { 3, 8, 40, SEMI, MONS_REAPER }, { 2, 6, 55, SEMI, MONS_SOUL_EATER }, { 1, 7, 55, SEMI, MONS_DEATH_KNIGHT }, { 2, 7, 80, SEMI, MONS_DEEP_ELF_DEATH_MAGE }, { 3, 7, 40, SEMI, MONS_UNBORN }, { 2, 8, 85, SEMI, MONS_REVENANT }, { 3, 8, 55, PEAK, MONS_LICH }, { 4, 8, 15, PEAK, MONS_ANCIENT_LICH }, { -2, 4, 70, PEAK, MONS_SHADOW }, { -2, 4, 40, PEAK, MONS_WIGHT }, { -2, 4, 45, PEAK, MONS_FLYING_SKULL }, { 1, 5, 75, DOWN, MONS_GHOST_CRAB }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_tomb[] = { // Tomb (OOD cap: 5) { 1, 5, 185, FLAT, MONS_ZOMBIE }, { 1, 3, 3, SEMI, MONS_TRAPDOOR_SPIDER }, { 1, 5, 1000, FLAT, MONS_MUMMY }, { 1, 5, 200, FLAT, MONS_SKELETON }, { 1, 5, 1000, FLAT, MONS_GUARDIAN_MUMMY }, { 1, 5, 230, FLAT, MONS_FLYING_SKULL }, { 1, 5, 50, SEMI, MONS_SIMULACRUM }, { -1, 9, 335, SEMI, MONS_MUMMY_PRIEST }, { 3, 5, 6, FLAT, MONS_LICH }, { 3, 5, 3, SEMI, MONS_ANCIENT_LICH }, { 4, 5, 3, UP, MONS_GREATER_MUMMY }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_hell[] = { // Hell { 1, 1, 89, FLAT, MONS_ORANGE_RAT }, { 1, 1, 89, FLAT, MONS_HELL_HOUND }, { 1, 1, 136, FLAT, MONS_HELL_HOG }, { 1, 1, 25, FLAT, MONS_HELLEPHANT }, { 1, 1, 89, FLAT, MONS_DEMONIC_CRAWLER }, { 1, 1, 136, FLAT, MONS_HELL_KNIGHT }, { 1, 1, 136, FLAT, MONS_NECROMANCER }, { 1, 1, 89, FLAT, MONS_RED_DEVIL }, { 1, 1, 25, FLAT, MONS_HELLION }, { 1, 1, 89, FLAT, MONS_LOROCYPROCA }, { 1, 1, 25, FLAT, MONS_TORMENTOR }, { 1, 1, 515, FLAT, MONS_REAPER }, { 1, 1, 515, FLAT, MONS_SOUL_EATER }, { 1, 1, 515, FLAT, MONS_ICE_DEVIL }, { 1, 1, 89, FLAT, MONS_BLUE_DEVIL }, { 1, 1, 89, FLAT, MONS_IRON_DEVIL }, { 1, 1, 52, FLAT, MONS_GREEN_DEATH }, { 1, 1, 52, FLAT, MONS_BLIZZARD_DEMON }, { 1, 1, 52, FLAT, MONS_BALRUG }, { 1, 1, 52, FLAT, MONS_CACODEMON }, { 1, 1, 515, FLAT, MONS_SUN_DEMON }, { 1, 1, 25, FLAT, MONS_TENTACLED_MONSTROSITY }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_dis[] = { // Dis { 1, 2, 8, DOWN, MONS_CRIMSON_IMP }, { 1, 7, 540, DOWN, MONS_RED_DEVIL }, { 1, 7, 136, DOWN, MONS_NECROPHAGE }, { 1, 12, 515, DOWN, MONS_SKELETAL_WARRIOR }, { 1, 7, 2000, FLAT, MONS_ZOMBIE }, { 1, 12, 440, DOWN, MONS_HELL_HOUND }, { 1, 7, 25, DOWN, MONS_HELL_KNIGHT }, { 1, 7, 775, FLAT, MONS_TORMENTOR }, { 1, 7, 66, DOWN, MONS_PHANTOM }, { 1, 5, 625, DOWN, MONS_SHADOW }, { 1, 6, 420, DOWN, MONS_WIGHT }, { 1, 12, 270, DOWN, MONS_SKELETON }, { 1, 7, 89, DOWN, MONS_HELL_HOG }, { 1, 12, 60, DOWN, MONS_IRON_GOLEM }, { 1, 7, 300, FLAT, MONS_HELLION }, { 1, 7, 25, FLAT, MONS_EFREET }, { 1, 7, 420, DOWN, MONS_MUMMY }, { 1, 7, 260, DOWN, MONS_FLYING_SKULL }, { 1, 7, 1000, FLAT, MONS_IRON_IMP }, { 1, 7, 1000, FLAT, MONS_IRON_DEVIL }, { 1, 7, 81, PEAK, MONS_VAMPIRE }, { 1, 7, 136, SEMI, MONS_FLAYED_GHOST }, { 1, 7, 475, SEMI, MONS_WRAITH }, { 1, 7, 192, SEMI, MONS_FREEZING_WRAITH }, { 1, 7, 25, PEAK, MONS_DANCING_WEAPON }, { 1, 7, 900, FLAT, MONS_REAPER }, { 1, 7, 25, PEAK, MONS_SOUL_EATER }, { 1, 7, 192, FLAT, MONS_ICE_DEVIL }, { 1, 7, 335, FLAT, MONS_BLUE_DEVIL }, { 1, 7, 160, PEAK, MONS_PHANTASMAL_WARRIOR }, { 1, 7, 25, PEAK, MONS_LICH }, { 1, 9, 89, PEAK, MONS_BONE_DRAGON }, { 2, 8, 25, PEAK, MONS_IRON_DRAGON }, { 4, 7, 4, FLAT, MONS_BRIMSTONE_FIEND }, //{ 4, 6, 4, SEMI, MONS_ANCIENT_LICH }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_geh[] = { // Gehenna { 1, 12, 690, DOWN, MONS_RED_DEVIL }, { 1, 7, 2000, FLAT, MONS_SKELETON }, { 1, 7, 2000, FLAT, MONS_ZOMBIE }, { 1, 7, 350, FLAT, MONS_HELL_HOUND }, { 1, 7, 192, FLAT, MONS_HELL_HOG }, { 1, 7, 46, DOWN, MONS_FIRE_BAT }, { 1, 7, 30, FLAT, MONS_IRON_GOLEM }, { 1, 7, 192, DOWN, MONS_CRIMSON_IMP }, { 1, 7, 515, DOWN, MONS_NECROPHAGE }, { 1, 7, 215, DOWN, MONS_PHANTOM }, { 1, 7, 705, DOWN, MONS_SHADOW }, { 1, 7, 690, DOWN, MONS_WIGHT }, { 1, 7, 385, FLAT, MONS_FLYING_SKULL }, { -1, 7, 515, PEAK, MONS_HELL_KNIGHT }, { -1, 7, 89, PEAK, MONS_IRON_DEVIL }, { -1, 7, 400, SEMI, MONS_VAMPIRE }, { -1, 7, 570, FLAT, MONS_WRAITH }, { 2, 6, 8, PEAK, MONS_FIRE_CRAB }, { 1, 7, 590, FLAT, MONS_HELLION }, { 1, 7, 365, FLAT, MONS_TORMENTOR }, { 1, 7, 192, FLAT, MONS_BALRUG }, { 2, 6, 215, FLAT, MONS_EFREET }, { 1, 7, 215, FLAT, MONS_FLAYED_GHOST }, { 2, 8, 25, PEAK, MONS_BONE_DRAGON }, { 1, 9, 385, SEMI, MONS_REAPER }, { 3, 7, 8, PEAK, MONS_SOUL_EATER }, { 3, 7, 14, SEMI, MONS_HELL_SENTINEL }, { 3, 7, 8, PEAK, MONS_BRIMSTONE_FIEND }, { 1, 9, 89, PEAK, MONS_PHANTASMAL_WARRIOR }, { 1, 9, 136, SEMI, MONS_LICH }, { 4, 7, 2, FLAT, MONS_ANCIENT_LICH }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_coc[] = { // Cocytus { 1, 7, 136, DOWN, MONS_NECROPHAGE }, { 1, 7, 515, FLAT, MONS_SKELETAL_WARRIOR }, { 1, 7, 1915, FLAT, MONS_SKELETON }, { 1, 7, 1915, FLAT, MONS_ZOMBIE }, { 1, 7, 70, DOWN, MONS_SIMULACRUM }, { 1, 7, 955, DOWN, MONS_ICE_BEAST }, { 1, 7, 890, SEMI, MONS_BLUE_DEVIL }, { 1, 5, 136, DOWN, MONS_PHANTOM }, { 1, 6, 625, DOWN, MONS_SHADOW }, { 1, 7, 345, DOWN, MONS_VAMPIRE }, { 1, 7, 420, DOWN, MONS_WIGHT }, { 1, 7, 640, SEMI, MONS_FLYING_SKULL }, { -1, 7, 260, SEMI, MONS_MUMMY }, { -1, 7, 146, SEMI, MONS_HUNGRY_GHOST }, { -1, 7, 420, SEMI, MONS_WRAITH }, { 1, 7, 970, FLAT, MONS_FREEZING_WRAITH }, { 1, 7, 89, PEAK, MONS_PHANTASMAL_WARRIOR }, { 1, 7, 305, FLAT, MONS_ICE_DRAGON }, { 1, 7, 890, FLAT, MONS_WHITE_IMP }, { 1, 7, 285, FLAT, MONS_TORMENTOR }, { 1, 7, 890, FLAT, MONS_ICE_DEVIL }, { 1, 7, 192, FLAT, MONS_BLIZZARD_DEMON }, { 2, 7, 35, FLAT, MONS_BONE_DRAGON }, { 1, 7, 455, UP, MONS_REAPER }, { 1, 7, 81, PEAK, MONS_SOUL_EATER }, { 2, 8, 35, PEAK, MONS_LICH }, { 3, 7, 8, PEAK, MONS_ANCIENT_LICH }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_tar[] = { // Tartarus { 1, 7, 89, DOWN, MONS_CRIMSON_IMP }, { 1, 7, 1000, FLAT, MONS_SHADOW_IMP }, { 1, 7, 40, PEAK, MONS_RED_DEVIL }, { 1, 7, 1000, FLAT, MONS_SKELETAL_WARRIOR }, { 1, 7, 2000, FLAT, MONS_SKELETON }, { 1, 7, 89, FLAT, MONS_DEATH_DRAKE }, { 1, 7, 46, DOWN, MONS_HELL_KNIGHT }, { 1, 7, 850, SEMI, MONS_NECROPHAGE }, { 1, 7, 550, DOWN, MONS_PHANTOM }, { 1, 7, 835, DOWN, MONS_WIGHT }, { 1, 7, 2000, FLAT, MONS_ZOMBIE }, { 1, 7, 550, DOWN, MONS_HELL_HOUND }, { 1, 7, 35, PEAK, MONS_NECROMANCER }, { 1, 7, 990, FLAT, MONS_SHADOW }, { 1, 7, 550, SEMI, MONS_WRAITH }, { 1, 7, 690, SEMI, MONS_FREEZING_WRAITH }, { 1, 7, 260, FLAT, MONS_SILENT_SPECTRE }, { 1, 7, 334, FLAT, MONS_BONE_DRAGON }, { 1, 7, 365, FLAT, MONS_TORMENTOR }, { 1, 7, 245, SEMI, MONS_ICE_DEVIL }, { 1, 7, 215, SEMI, MONS_BLUE_DEVIL }, { 1, 7, 230, SEMI, MONS_GHOST_CRAB }, { 1, 7, 215, FLAT, MONS_HUNGRY_GHOST }, { 1, 7, 192, FLAT, MONS_FLAYED_GHOST }, { 1, 7, 420, FLAT, MONS_PHANTASMAL_WARRIOR }, { 1, 7, 70, PEAK, MONS_SIMULACRUM }, { 1, 7, 89, SEMI, MONS_SHADOW_DRAGON }, { 1, 7, 720, FLAT, MONS_NECROPHAGE }, { 1, 7, 365, FLAT, MONS_HELLION }, { 1, 7, 860, FLAT, MONS_REAPER }, { 1, 7, 365, FLAT, MONS_SHADOW_DEMON }, { 1, 7, 400, FLAT, MONS_VAMPIRE }, { 1, 7, 570, FLAT, MONS_FLYING_SKULL }, { 1, 9, 260, SEMI, MONS_SOUL_EATER }, { 1, 9, 125, PEAK, MONS_LICH }, { 3, 7, 11, PEAK, MONS_ANCIENT_LICH }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_zot[] = { // Zot { 1, 5, 89, DOWN, MONS_ELECTRIC_GOLEM }, { 1, 5, 42, FLAT, MONS_ORB_OF_FIRE }, { 1, 5, 970, FLAT, MONS_MOTH_OF_WRATH }, { 1, 5, 73, FLAT, MONS_BLACK_DRACONIAN }, { 1, 5, 73, FLAT, MONS_MOTTLED_DRACONIAN }, { 1, 5, 73, FLAT, MONS_YELLOW_DRACONIAN }, { 1, 5, 73, FLAT, MONS_GREEN_DRACONIAN }, { 1, 5, 73, FLAT, MONS_PURPLE_DRACONIAN }, { 1, 5, 73, FLAT, MONS_RED_DRACONIAN }, { 1, 5, 73, FLAT, MONS_WHITE_DRACONIAN }, { 1, 5, 73, FLAT, MONS_GREY_DRACONIAN }, { 1, 5, 73, FLAT, MONS_PALE_DRACONIAN }, { 1, 5, 59, FLAT, MONS_DRACONIAN_CALLER }, { 1, 5, 59, FLAT, MONS_DRACONIAN_MONK }, { 1, 5, 59, FLAT, MONS_DRACONIAN_ZEALOT }, { 1, 5, 59, FLAT, MONS_DRACONIAN_SHIFTER }, { 1, 5, 59, FLAT, MONS_DRACONIAN_ANNIHILATOR }, { 1, 5, 59, FLAT, MONS_DRACONIAN_KNIGHT }, { 1, 5, 59, FLAT, MONS_DRACONIAN_SCORCHER }, { 1, 5, 515, FLAT, MONS_TENTACLED_MONSTROSITY }, { 1, 5, 335, FLAT, MONS_FIRE_DRAGON }, { 1, 5, 335, FLAT, MONS_ICE_DRAGON }, { 1, 5, 335, FLAT, MONS_DEATH_COB }, { 1, 5, 192, UP, MONS_SHADOW_DRAGON }, { -4, 5, 515, UP, MONS_STORM_DRAGON }, { 1, 5, 192, UP, MONS_GHOST_MOTH }, { 2, 8, 52, SEMI, MONS_KILLER_KLOWN }, { 1, 5, 150, UP, MONS_CURSE_TOE }, { 1, 11, 365, SEMI, MONS_GOLDEN_DRAGON }, { 0,0,0,FLAT,MONS_0 } }; #if TAG_MAJOR_VERSION == 34 static const pop_entry pop_forest[] = { // Forest { 1, 5, 120, DOWN, MONS_WOLF }, { 1, 5, 35, DOWN, MONS_BLACK_BEAR }, { 1, 5, 50, FLAT, MONS_YAK }, { 1, 7, 145, SEMI, MONS_DIRE_ELEPHANT }, { 1, 5, 15, DOWN, MONS_YELLOW_WASP }, { 1, 5, 30, FLAT, MONS_RED_WASP }, { 1, 6, 75, DOWN, MONS_REDBACK }, { 2, 7, 35, SEMI, MONS_WOLF_SPIDER }, { 1, 9, 75, SEMI, MONS_OKLOB_PLANT }, { 1, 5, 170, FLAT, MONS_DRYAD }, { 1, 5, 120, FLAT, MONS_WIND_DRAKE }, { -1, 5, 75, SEMI, MONS_FAUN }, { 0, 9, 105, SEMI, MONS_SATYR }, { 2, 8, 55, SEMI, MONS_SPRIGGAN_DRUID }, { 1, 6, 155, SEMI, MONS_SPRIGGAN_RIDER }, { 1, 9, 235, SEMI, MONS_SPRIGGAN_BERSERKER }, { 1, 8, 155, SEMI, MONS_SPRIGGAN_AIR_MAGE }, { 3, 5, 115, UP, MONS_SPRIGGAN_DEFENDER }, { 1, 7, 85, PEAK, MONS_APIS }, { 2, 7, 165, SEMI, MONS_SHAMBLING_MANGROVE }, { 1, 6, 85, SEMI, MONS_ANACONDA }, { 1, 9, 100, PEAK, MONS_THORN_HUNTER }, { 1, 5, 125, FLAT, MONS_BUTTERFLY }, { 0,0,0,FLAT,MONS_0 } }; #endif static const pop_entry pop_abyss[] = { // Abyss { 1, 5, 50, FLAT, MONS_SHAPESHIFTER }, { 1, 10, 10, SEMI, MONS_GLOWING_SHAPESHIFTER }, { 1, 5, 35, FLAT, MONS_UNSEEN_HORROR }, { -1, 6, 1500, DOWN, MONS_ABOMINATION_SMALL }, { 1, 5, 1000, FLAT, MONS_ABOMINATION_LARGE }, { 1, 10, 16, SEMI, MONS_TENTACLED_MONSTROSITY }, { 1, 5, 335, FLAT, MONS_WRETCHED_STAR }, { 1, 5, 335, FLAT, MONS_TENTACLED_STARSPAWN }, { 1, 5, 335, FLAT, MONS_ANCIENT_ZYME }, { 1, 5, 335, FLAT, MONS_STARCURSED_MASS }, { 1, 5, 335, FLAT, MONS_THRASHING_HORROR }, { 1, 5, 89, FLAT, MONS_LURKING_HORROR }, { 1, 10, 180, SEMI, MONS_SPATIAL_MAELSTROM }, { 1, 5, 89, FLAT, MONS_APOCALYPSE_CRAB }, { 1, 5, 300, FLAT, MONS_RAIJU }, { 1, 8, 165, DOWN, MONS_WORLDBINDER }, { 1, 5, 52, FLAT, MONS_VERY_UGLY_THING }, // Demons { 1, 4, 25, DOWN, MONS_CRIMSON_IMP }, { 1, 4, 192, DOWN, MONS_WHITE_IMP }, { 1, 4, 192, DOWN, MONS_QUASIT }, { 1, 4, 192, DOWN, MONS_UFETUBUS }, { 1, 4, 192, DOWN, MONS_IRON_IMP }, { 1, 4, 25, DOWN, MONS_SHADOW_IMP }, { 1, 5, 8, DOWN, MONS_RED_DEVIL }, { 1, 5, 25, DOWN, MONS_BLUE_DEVIL }, { 1, 5, 36, DOWN, MONS_IRON_DEVIL }, { 1, 8, 73, DOWN, MONS_HELLWING }, { 1, 8, 91, DOWN, MONS_SIXFIRHY }, { 1, 5, 125, DOWN, MONS_ORANGE_DEMON }, { 1, 8, 315, DOWN, MONS_YNOXINUL }, { 1, 5, 325, FLAT, MONS_NEQOXEC }, { 1, 5, 300, FLAT, MONS_SMOKE_DEMON }, { 1, 5, 192, FLAT, MONS_CHAOS_SPAWN }, { 1, 5, 22, FLAT, MONS_ICE_DEVIL }, { 1, 5, 22, FLAT, MONS_SUN_DEMON }, { 1, 5, 14, FLAT, MONS_SOUL_EATER }, { 1, 5, 25, FLAT, MONS_HELLION }, { 1, 5, 25, FLAT, MONS_LOROCYPROCA }, { 1, 5, 21, FLAT, MONS_TORMENTOR }, { 1, 5, 12, FLAT, MONS_REAPER }, { 1, 5, 22, FLAT, MONS_GREEN_DEATH }, { 1, 5, 22, FLAT, MONS_BLIZZARD_DEMON }, { 1, 5, 22, FLAT, MONS_BALRUG }, { 1, 5, 25, FLAT, MONS_CACODEMON }, { 1, 10, 16, SEMI, MONS_SHADOW_DEMON }, { 1, 5, 25, FLAT, MONS_EXECUTIONER }, { 1, 5, 10, FLAT, MONS_HELL_SENTINEL }, { 1, 5, 63, FLAT, MONS_EFREET }, { 1, 5, 66, FLAT, MONS_RAKSHASA }, { 1, 5, 25, FLAT, MONS_DEMONIC_CRAWLER }, { 1, 5, 30, FLAT, MONS_HELL_HOUND }, { 1, 5, 30, FLAT, MONS_HELL_HOG }, { 1, 10, 16, SEMI, MONS_HELLEPHANT }, // Misc Undead { 1, 5, 110, DOWN, MONS_SKELETON }, { 1, 5, 104, DOWN, MONS_ZOMBIE }, { 1, 5, 42, FLAT, MONS_SIMULACRUM }, { 1, 4, 25, DOWN, MONS_WIGHT }, { 1, 5, 30, DOWN, MONS_HUNGRY_GHOST }, { 1, 8, 52, DOWN, MONS_FLYING_SKULL }, { 1, 8, 52, DOWN, MONS_WRAITH }, { 1, 8, 30, DOWN, MONS_SHADOW }, { 1, 8, 21, DOWN, MONS_VAMPIRE }, { 1, 5, 40, FLAT, MONS_FREEZING_WRAITH }, { 1, 5, 23, FLAT, MONS_SHADOW_WRAITH }, { 1, 5, 8, FLAT, MONS_SILENT_SPECTRE }, { 1, 5, 8, FLAT, MONS_PHANTASMAL_WARRIOR }, { 1, 10, 22, SEMI, MONS_PROFANE_SERVITOR }, { 1, 5, 80, FLAT, MONS_BONE_DRAGON }, { 1, 5, 8, FLAT, MONS_UNBORN }, { 1, 5, 9, FLAT, MONS_REVENANT }, { 1, 5, 46, FLAT, MONS_LICH }, { 1, 5, 8, FLAT, MONS_ANCIENT_LICH }, // Thematic branch representatives, outsiders { 1, 5, 8, FLAT, MONS_ORC_SORCERER }, { 1, 5, 4, FLAT, MONS_DEEP_ELF_PRIEST }, { 1, 5, 8, FLAT, MONS_DEEP_ELF_SORCERER }, { 1, 5, 5, FLAT, MONS_DEEP_ELF_DEMONOLOGIST }, { 1, 5, 29, FLAT, MONS_BLINK_FROG }, { 1, 5, 4, DOWN, MONS_BASILISK }, { 1, 5, 8, FLAT, MONS_MANA_VIPER }, { 1, 5, 25, FLAT, MONS_GUARDIAN_SERPENT }, { 1, 8, 35, DOWN, MONS_INSUBSTANTIAL_WISP }, { 1, 5, 8, FLAT, MONS_ORB_SPIDER }, { 1, 10, 4, SEMI, MONS_GHOST_MOTH }, { 1, 5, 17, FLAT, MONS_EIDOLON }, { 1, 10, 18, SEMI, MONS_FLAYED_GHOST }, { 1, 5, 12, FLAT, MONS_VAMPIRE_MAGE }, { 1, 5, 3, FLAT, MONS_DANCING_WEAPON }, { 1, 5, 21, DOWN, MONS_JELLY }, { 1, 5, 46, FLAT, MONS_EYE_OF_DRAINING }, { 1, 5, 8, FLAT, MONS_SHINING_EYE }, { 1, 5, 33, FLAT, MONS_GOLDEN_EYE }, { 1, 5, 8, FLAT, MONS_EYE_OF_DEVASTATION }, { 1, 5, 33, FLAT, MONS_GREAT_ORB_OF_EYES }, { 1, 5, 52, FLAT, MONS_GIANT_ORANGE_BRAIN }, { 1, 5, 3, FLAT, MONS_BLACK_DRACONIAN }, { 1, 5, 3, FLAT, MONS_MOTTLED_DRACONIAN }, { 1, 5, 3, FLAT, MONS_YELLOW_DRACONIAN }, { 1, 5, 3, FLAT, MONS_GREEN_DRACONIAN }, { 1, 5, 3, FLAT, MONS_PURPLE_DRACONIAN }, { 1, 5, 3, FLAT, MONS_RED_DRACONIAN }, { 1, 5, 3, FLAT, MONS_WHITE_DRACONIAN }, { 1, 5, 3, FLAT, MONS_GREY_DRACONIAN }, { 1, 5, 3, FLAT, MONS_PALE_DRACONIAN }, { 1, 5, 2, FLAT, MONS_DRACONIAN_CALLER }, { 1, 5, 3, FLAT, MONS_DRACONIAN_MONK }, { 1, 5, 3, FLAT, MONS_DRACONIAN_ZEALOT }, { 1, 5, 4, FLAT, MONS_DRACONIAN_SHIFTER }, { 1, 5, 3, FLAT, MONS_DRACONIAN_ANNIHILATOR }, { 1, 5, 3, FLAT, MONS_DRACONIAN_KNIGHT }, { 1, 5, 3, FLAT, MONS_DRACONIAN_SCORCHER }, { 3, 5, 1, FLAT, MONS_CORRUPTER }, // Misc { 1, 5, 50, DOWN, MONS_BRAIN_WORM }, { 1, 5, 8, FLAT, MONS_DEATH_DRAKE }, { 1, 5, 2, FLAT, MONS_SHADOW_DRAGON }, { 1, 5, 2, FLAT, MONS_QUICKSILVER_DRAGON }, { 1, 5, 2, FLAT, MONS_CRYSTAL_GUARDIAN }, { 1, 5, 1, FLAT, MONS_TOENAIL_GOLEM }, { 1, 5, 18, FLAT, MONS_EARTH_ELEMENTAL }, { 1, 5, 6, FLAT, MONS_FIRE_ELEMENTAL }, { 1, 5, 6, FLAT, MONS_AIR_ELEMENTAL }, { 1, 5, 6, FLAT, MONS_WATER_ELEMENTAL }, { 1, 5, 46, DOWN, MONS_FIRE_BAT }, { 1, 4, 21, DOWN, MONS_ICE_BEAST }, { 1, 4, 21, DOWN, MONS_SKY_BEAST }, { 1, 5, 14, DOWN, MONS_KOBOLD_DEMONOLOGIST }, { 1, 5, 8, FLAT, MONS_DEATH_KNIGHT }, { 1, 5, 4, FLAT, MONS_HELL_KNIGHT }, { 1, 5, 4, FLAT, MONS_NECROMANCER }, { 1, 5, 8, FLAT, MONS_WIZARD }, { 1, 4, 17, DOWN, MONS_WANDERING_MUSHROOM }, { 1, 4, 3, DOWN, MONS_GIANT_SPORE }, { 1, 5, 11, FLAT, MONS_ANGEL }, { 1, 5, 14, FLAT, MONS_DAEVA }, { 1, 5, 8, FLAT, MONS_OPHAN }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_pan[] = { // Pandemonium { 1, 1, 25, FLAT, MONS_HELL_HOUND }, { 1, 1, 25, FLAT, MONS_HELL_HOG }, { 1, 1, 25, FLAT, MONS_HELLEPHANT }, { 1, 1, 4, FLAT, MONS_EYE_OF_DRAINING }, { 1, 1, 4, FLAT, MONS_GREAT_ORB_OF_EYES }, { 1, 1, 4, FLAT, MONS_GIANT_ORANGE_BRAIN }, { 1, 1, 4, FLAT, MONS_GOLDEN_EYE }, { 1, 1, 192, FLAT, MONS_DEMONIC_CRAWLER }, { 1, 1, 8, FLAT, MONS_TOENAIL_GOLEM }, { 1, 1, 670, FLAT, MONS_RED_DEVIL }, { 1, 1, 1000, FLAT, MONS_HELLWING }, { 1, 1, 1000, FLAT, MONS_SIXFIRHY }, { 1, 1, 900, FLAT, MONS_NEQOXEC }, { 1, 1, 1000, FLAT, MONS_ORANGE_DEMON }, { 1, 1, 900, FLAT, MONS_SMOKE_DEMON }, { 1, 1, 1000, FLAT, MONS_YNOXINUL }, { 1, 1, 192, FLAT, MONS_CHAOS_SPAWN }, { 1, 1, 335, FLAT, MONS_LOROCYPROCA }, { 1, 1, 335, FLAT, MONS_TORMENTOR }, { 1, 1, 335, FLAT, MONS_REAPER }, { 1, 1, 335, FLAT, MONS_SOUL_EATER }, { 1, 1, 335, FLAT, MONS_ICE_DEVIL }, { 1, 1, 335, FLAT, MONS_BLUE_DEVIL }, { 1, 1, 335, FLAT, MONS_HELL_BEAST }, { 1, 1, 335, FLAT, MONS_IRON_DEVIL }, { 1, 1, 1000, FLAT, MONS_EXECUTIONER }, { 1, 1, 1000, FLAT, MONS_GREEN_DEATH }, { 1, 1, 1000, FLAT, MONS_BLIZZARD_DEMON }, { 1, 1, 1000, FLAT, MONS_BALRUG }, { 1, 1, 1000, FLAT, MONS_CACODEMON }, { 1, 1, 335, FLAT, MONS_BRIMSTONE_FIEND }, { 1, 1, 335, FLAT, MONS_ICE_FIEND }, { 1, 1, 335, FLAT, MONS_SHADOW_FIEND }, { 1, 1, 335, FLAT, MONS_HELL_SENTINEL }, { 1, 1, 335, FLAT, MONS_SUN_DEMON }, { 1, 1, 335, FLAT, MONS_SHADOW_DEMON }, { 1, 1, 335, FLAT, MONS_HELLION }, { 1, 1, 89, FLAT, MONS_EFREET }, { 1, 1, 89, FLAT, MONS_RAKSHASA }, { 1, 1, 1000, FLAT, MONS_ABOMINATION_LARGE }, { 1, 1, 8, FLAT, MONS_PROFANE_SERVITOR }, { 1, 1, 200, FLAT, MONS_MONSTROUS_DEMONSPAWN }, { 1, 1, 200, FLAT, MONS_GELID_DEMONSPAWN }, { 1, 1, 200, FLAT, MONS_INFERNAL_DEMONSPAWN }, { 1, 1, 200, FLAT, MONS_PUTRID_DEMONSPAWN }, { 1, 1, 200, FLAT, MONS_TORTUROUS_DEMONSPAWN }, { 1, 1, 500, FLAT, MONS_BLOOD_SAINT }, { 1, 1, 500, FLAT, MONS_CHAOS_CHAMPION }, { 1, 1, 500, FLAT, MONS_WARMONGER }, { 1, 1, 500, FLAT, MONS_CORRUPTER }, { 1, 1, 500, FLAT, MONS_BLACK_SUN }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_zig[] = { // Ziggurat { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_lab[] = { // Labyrinth { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_bazaar[] = { // Bazaar { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_trove[] = { // Trove { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_sewer[] = { // Sewer { 1, 1, 1000, FLAT, MONS_GIANT_NEWT }, { 1, 1, 515, FLAT, MONS_GIANT_GECKO }, { 1, 1, 1000, FLAT, MONS_BAT }, { 1, 1, 515, FLAT, MONS_BALL_PYTHON }, { 1, 1, 515, FLAT, MONS_ADDER }, { 1, 1, 515, FLAT, MONS_WORM }, { 1, 1, 515, FLAT, MONS_OOZE }, { 1, 1, 515, FLAT, MONS_GIANT_COCKROACH }, { 1, 1, 515, FLAT, MONS_GIANT_MITE }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_ossuary[] = { // Ossuary { 1, 1, 89, FLAT, MONS_MUMMY }, { 1, 1, 515, FLAT, MONS_SKELETON }, { 1, 1, 515, FLAT, MONS_ZOMBIE }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_bailey[] = { // Bailey { 1, 1, 515, FLAT, MONS_GNOLL }, { 1, 1, 515, FLAT, MONS_ORC }, { 1, 1, 260, FLAT, MONS_ORC_WARRIOR }, { 1, 1, 25, FLAT, MONS_ORC_KNIGHT }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_icecv[] = { // Ice Cave { 1, 1, 89, FLAT, MONS_YAK }, { 1, 1, 89, FLAT, MONS_POLAR_BEAR }, { 1, 1, 515, FLAT, MONS_ICE_BEAST }, { 1, 1, 515, FLAT, MONS_WHITE_IMP }, { 1, 1, 515, FLAT, MONS_ICE_DEVIL }, { 1, 1, 25, FLAT, MONS_BLUE_DEVIL }, { 1, 1, 260, FLAT, MONS_FREEZING_WRAITH }, { 1, 1, 1030, FLAT, MONS_SIMULACRUM }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_volcano[] = { // Volcano { 1, 1, 515, FLAT, MONS_HELL_HOUND }, { 1, 1, 385, FLAT, MONS_HELL_HOG }, { 1, 1, 515, FLAT, MONS_MANTICORE }, { 1, 1, 515, FLAT, MONS_LINDWURM }, { 1, 1, 515, FLAT, MONS_FIRE_DRAKE }, { 1, 1, 385, FLAT, MONS_TOENAIL_GOLEM }, { 1, 1, 515, FLAT, MONS_FIRE_ELEMENTAL }, { 1, 1, 385, FLAT, MONS_GARGOYLE }, { 1, 1, 385, FLAT, MONS_RED_DEVIL }, { 1, 1, 515, FLAT, MONS_EFREET }, { 1, 1, 515, FLAT, MONS_SALAMANDER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_wizlab[] = { // Wizlab { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_depths[] = { // Depths (OOD cap: 14) { -2, 4, 100, SEMI, MONS_BOGGART }, { -2, 4, 200, SEMI, MONS_SLIME_CREATURE }, { -2, 4, 250, SEMI, MONS_RAKSHASA }, { -2, 4, 100, SEMI, MONS_WIZARD }, { -2, 4, 100, SEMI, MONS_NECROMANCER }, { -2, 4, 100, SEMI, MONS_MANTICORE }, { -2, 10, 250, PEAK, MONS_FIRE_GIANT }, { -2, 10, 260, PEAK, MONS_FROST_GIANT }, { -2, 10, 70, PEAK, MONS_HELL_KNIGHT }, { -2, 10, 55, PEAK, MONS_VAMPIRE_KNIGHT }, { -1, 3, 200, SEMI, MONS_HILL_GIANT }, { -1, 3, 100, SEMI, MONS_VAMPIRE }, { 1, 3, 300, DOWN, MONS_UGLY_THING }, { 1, 4, 250, DOWN, MONS_CENTAUR_WARRIOR }, { 1, 4, 300, DOWN, MONS_OGRE_MAGE }, { 1, 6, 375, DOWN, MONS_YAKTAUR }, { 1, 6, 375, UP, MONS_YAKTAUR_CAPTAIN }, { 1, 6, 300, DOWN, MONS_SHAPESHIFTER }, { 1, 6, 180, FLAT, MONS_DEEP_TROLL_SHAMAN }, { 1, 6, 180, FLAT, MONS_DEEP_TROLL_EARTH_MAGE }, { 1, 6, 295, FLAT, MONS_FIRE_DRAGON }, { 1, 6, 295, FLAT, MONS_ICE_DRAGON }, { 1, 6, 200, FLAT, MONS_VERY_UGLY_THING }, { 1, 6, 175, FLAT, MONS_GREAT_ORB_OF_EYES }, { 1, 6, 75, FLAT, MONS_GIANT_ORANGE_BRAIN }, { 1, 6, 75, FLAT, MONS_TORPOR_SNAIL }, { 1, 6, 125, FLAT, MONS_MINOTAUR }, { 1, 7, 250, DOWN, MONS_DIRE_ELEPHANT }, { 1, 7, 250, DOWN, MONS_EMPEROR_SCORPION }, { 1, 7, 250, DOWN, MONS_DEATH_YAK }, { 1, 7, 50, DOWN, MONS_CATOBLEPAS }, { 1, 7, 50, DOWN, MONS_VAMPIRE_MAGE }, { 1, 7, 100, DOWN, MONS_DEEP_ELF_KNIGHT }, { 1, 7, 50, DOWN, MONS_DEEP_ELF_MAGE }, { 1, 7, 50, DOWN, MONS_DEEP_ELF_CONJURER }, { 1, 7, 50, DOWN, MONS_DEEP_ELF_SUMMONER }, { 1, 7, 50, DOWN, MONS_DEEP_ELF_PRIEST }, { 1, 7, 100, DOWN, MONS_TENGU_WARRIOR }, { 1, 7, 50, DOWN, MONS_TENGU_CONJURER }, { 1, 8, 600, DOWN, MONS_STONE_GIANT }, { 1, 8, 370, DOWN, MONS_ETTIN }, { 1, 12, 60, FLAT, MONS_LICH }, { 1, 12, 40, FLAT, MONS_FLAYED_GHOST }, { 1, 14, 80, SEMI, MONS_GLOWING_SHAPESHIFTER }, { 1, 14, 80, SEMI, MONS_TENGU_REAVER }, { 1, 14, 60, SEMI, MONS_SPHINX }, { 2, 8, 135, SEMI, MONS_SPRIGGAN_AIR_MAGE }, { 2, 8, 185, SEMI, MONS_SPRIGGAN_BERSERKER }, { 3, 14, 45, FLAT, MONS_SPRIGGAN_DEFENDER }, { 4, 14, 80, SEMI, MONS_TENTACLED_MONSTROSITY }, { 4, 14, 40, FLAT, MONS_STORM_DRAGON }, { 4, 14, 40, FLAT, MONS_SHADOW_DRAGON }, { 4, 14, 20, FLAT, MONS_QUICKSILVER_DRAGON }, { 4, 14, 40, FLAT, MONS_IRON_DRAGON }, { 4, 14, 80, SEMI, MONS_GOLDEN_DRAGON }, { 4, 14, 50, UP, MONS_DEEP_ELF_HIGH_PRIEST }, { 4, 14, 25, UP, MONS_DEEP_ELF_DEMONOLOGIST }, { 4, 14, 25, UP, MONS_DEEP_ELF_ANNIHILATOR }, { 4, 14, 25, UP, MONS_DEEP_ELF_SORCERER }, { 4, 14, 25, UP, MONS_DEEP_ELF_DEATH_MAGE }, { 6, 14, 50, FLAT, MONS_TITAN }, { 10, 14, 10, FLAT, MONS_ANCIENT_LICH }, { 0,0,0,FLAT,MONS_0 } }; // In C++ prior to C++11, we can't have an array of pointers to initialized // arrays of different sizes without declaring individual arrays as // standalone symbols first. Thus this fugly list. // Statically defined counts are merely an inconsequential nicety, no need // to preserve them. #define POP(x) { pop_##x, ARRAYSZ(pop_##x) - 1 } static const struct { const pop_entry *pop; int count; } population[] = { POP(d), POP(temple), POP(orc), POP(elf), #if TAG_MAJOR_VERSION == 34 POP(dwarf), #endif POP(lair), POP(swamp), POP(shoals), POP(snake), POP(spider), POP(slime), POP(vaults), #if TAG_MAJOR_VERSION == 34 POP(blade), #endif POP(crypt), POP(tomb), #if TAG_MAJOR_VERSION > 34 POP(depths), #endif POP(hell), POP(dis), POP(geh), POP(coc), POP(tar), POP(zot), #if TAG_MAJOR_VERSION == 34 POP(forest), #endif POP(abyss), POP(pan), POP(zig), POP(lab), POP(bazaar), POP(trove), POP(sewer), POP(ossuary), POP(bailey), POP(icecv), POP(volcano), POP(wizlab), #if TAG_MAJOR_VERSION == 34 POP(depths), #endif }; // Lists for picking zombies from. static const pop_entry pop_generic_late_zombie[] = { // Extended generic zombie bases { 1, 27, 110, FLAT, MONS_ETTIN }, { 1, 27, 105, FLAT, MONS_FIRE_GIANT }, { 1, 27, 105, FLAT, MONS_FROST_GIANT }, { 1, 27, 105, FLAT, MONS_STONE_GIANT }, { 1, 27, 100, FLAT, MONS_TITAN }, { 1, 27, 80, FLAT, MONS_FIRE_DRAGON }, { 1, 27, 80, FLAT, MONS_ICE_DRAGON }, { 1, 27, 80, FLAT, MONS_STORM_DRAGON }, { 1, 27, 80, FLAT, MONS_SHADOW_DRAGON }, { 1, 27, 80, FLAT, MONS_IRON_DRAGON }, { 1, 27, 80, FLAT, MONS_QUICKSILVER_DRAGON }, { 1, 27, 65, FLAT, MONS_GOLDEN_DRAGON }, { 1, 27, 80, FLAT, MONS_DIRE_ELEPHANT }, { 1, 27, 45, FLAT, MONS_SPINY_FROG }, { 1, 27, 25, FLAT, MONS_CATOBLEPAS }, { 1, 27, 90, FLAT, MONS_HYDRA }, { 1, 27, 30, FLAT, MONS_SWAMP_DRAGON }, { 1, 27, 30, FLAT, MONS_ALLIGATOR }, { 1, 27, 85, FLAT, MONS_ANACONDA }, { 1, 27, 35, FLAT, MONS_BLACK_MAMBA }, { 1, 27, 30, FLAT, MONS_SHOCK_SERPENT }, { 1, 27, 75, FLAT, MONS_SNAPPING_TURTLE }, { 1, 27, 45, FLAT, MONS_HARPY }, { 1, 27, 30, FLAT, MONS_MANTICORE }, { 1, 27, 80, FLAT, MONS_WOLF_SPIDER }, { 1, 27, 35, FLAT, MONS_EMPEROR_SCORPION }, { 1, 27, 35, FLAT, MONS_GHOST_MOTH }, { 1, 27, 10, FLAT, MONS_CENTAUR }, { 1, 27, 12, FLAT, MONS_ELF }, { 1, 27, 27, FLAT, MONS_HUMAN }, { 1, 27, 10, FLAT, MONS_KOBOLD }, { 1, 27, 10, FLAT, MONS_MERFOLK }, { 1, 27, 10, FLAT, MONS_NAGA }, { 1, 27, 10, FLAT, MONS_OGRE }, { 1, 27, 12, FLAT, MONS_ORC }, { 1, 27, 10, FLAT, MONS_SPRIGGAN }, { 1, 27, 10, FLAT, MONS_TENGU }, { 1, 27, 10, FLAT, MONS_TROLL }, { 1, 27, 1, FLAT, MONS_BLACK_DRACONIAN }, { 1, 27, 1, FLAT, MONS_MOTTLED_DRACONIAN }, { 1, 27, 1, FLAT, MONS_YELLOW_DRACONIAN }, { 1, 27, 1, FLAT, MONS_GREEN_DRACONIAN }, { 1, 27, 1, FLAT, MONS_PURPLE_DRACONIAN }, { 1, 27, 1, FLAT, MONS_RED_DRACONIAN }, { 1, 27, 1, FLAT, MONS_WHITE_DRACONIAN }, { 1, 27, 1, FLAT, MONS_GREY_DRACONIAN }, { 1, 27, 1, FLAT, MONS_PALE_DRACONIAN }, { 1, 27, 5, FLAT, MONS_MINOTAUR }, { 1, 27, 1, FLAT, MONS_MONSTROUS_DEMONSPAWN }, { 1, 27, 1, FLAT, MONS_INFERNAL_DEMONSPAWN }, { 1, 27, 1, FLAT, MONS_GELID_DEMONSPAWN }, { 1, 27, 1, FLAT, MONS_PUTRID_DEMONSPAWN }, { 1, 27, 1, FLAT, MONS_TORTUROUS_DEMONSPAWN }, { 0,0,0,FLAT,MONS_0 } }; static const struct { const pop_entry *pop; int count; } population_zombie[] = { POP(d), POP(temple), POP(orc), POP(elf), #if TAG_MAJOR_VERSION == 34 POP(dwarf), #endif POP(lair), POP(swamp), POP(shoals), POP(snake), POP(spider), POP(slime), POP(vaults), #if TAG_MAJOR_VERSION == 34 POP(blade), #endif POP(generic_late_zombie), POP(generic_late_zombie), #if TAG_MAJOR_VERSION > 34 POP(depths), #endif POP(generic_late_zombie), POP(generic_late_zombie), POP(generic_late_zombie), POP(generic_late_zombie), POP(generic_late_zombie), POP(zot), #if TAG_MAJOR_VERSION == 34 POP(forest), #endif POP(generic_late_zombie), POP(generic_late_zombie), POP(zig), POP(lab), POP(bazaar), POP(trove), POP(sewer), POP(ossuary), POP(bailey), POP(icecv), POP(volcano), POP(wizlab), #if TAG_MAJOR_VERSION == 34 POP(depths), #endif }; static const pop_entry pop_water_generic[] = { // Generic water monsters { 1, 27, 150, FLAT, MONS_ELECTRIC_EEL }, { 1, 27, 500, FLAT, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_water_d[] = { // Dungeon water monsters { 5, 16, 60, FLAT, MONS_ELECTRIC_EEL }, { 7, 16, 185, PEAK, MONS_ELECTRIC_EEL }, { 11, 27, 600, UP, MONS_WATER_ELEMENTAL }, { 5, 22, 130, FLAT, MONS_NO_MONSTER }, { 9, 32, 250, SEMI, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_water_depths[] = { // Depths water monsters { 1, 6, 600, FLAT, MONS_WATER_ELEMENTAL }, { 1, 6, 45, FLAT, MONS_MERFOLK_IMPALER }, { 1, 6, 45, FLAT, MONS_MERFOLK_JAVELINEER }, { 1, 6, 100, FLAT, MONS_OCTOPODE_CRUSHER }, { 1, 6, 200, DOWN, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_water_swamp[] = { // Swamp water monsters { 1, 5, 600, FLAT, MONS_SWAMP_WORM }, { 1, 5, 1050, FLAT, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_water_snake[] = { // Snake water monsters { 1, 5, 100, DOWN, MONS_ELECTRIC_EEL }, { 1, 5, 200, UP, MONS_SEA_SNAKE }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_water_hell[] = { // Hell branch water monsters { 1, 7, 150, FLAT, MONS_SPINY_FROG }, { 1, 7, 120, FLAT, MONS_ALLIGATOR }, { 1, 7, 130, FLAT, MONS_ANACONDA }, { 1, 7, 230, FLAT, MONS_HYDRA }, { 1, 7, 115, FLAT, MONS_WATER_ELEMENTAL }, { 1, 7, 37, FLAT, MONS_KRAKEN }, { 0,0,0,FLAT,MONS_0 } }; static const struct { const pop_entry *pop; int count; } population_water[] = { POP(water_d), POP(water_generic), POP(water_generic), POP(water_generic), #if TAG_MAJOR_VERSION == 34 POP(water_generic), #endif POP(water_generic), POP(water_swamp), POP(water_generic), // Shoals isn't actually used POP(water_snake), POP(water_generic), POP(water_generic), POP(water_generic), #if TAG_MAJOR_VERSION == 34 POP(water_generic), #endif POP(water_generic), POP(water_generic), #if TAG_MAJOR_VERSION > 34 POP(water_depths), #endif POP(water_hell), POP(water_hell), POP(water_hell), POP(water_hell), POP(water_hell), POP(water_generic), #if TAG_MAJOR_VERSION == 34 POP(water_generic), // Forest #endif POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), POP(water_generic), #if TAG_MAJOR_VERSION == 34 POP(water_depths), #endif }; static const pop_entry pop_lava_generic[] = { // Generic lava monsters { 1, 27, 145, FLAT, MONS_LAVA_SNAKE }, { 1, 27, 15, FLAT, MONS_SALAMANDER }, { 1, 27, 100, FLAT, MONS_FIRE_ELEMENTAL }, { 1, 27, 100, FLAT, MONS_FIRE_BAT }, { 1, 27, 50, FLAT, MONS_MOLTEN_GARGOYLE }, { 1, 27, 50, FLAT, MONS_FIRE_VORTEX }, { 1, 27, 290, FLAT, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_lava_d[] = { // Dungeon lava monsters { 7, 27, 145, FLAT, MONS_LAVA_SNAKE }, { 11, 27, 290, UP, MONS_FIRE_ELEMENTAL }, { 11, 27, 145, UP, MONS_MOLTEN_GARGOYLE }, { 11, 27, 145, UP, MONS_FIRE_VORTEX }, { 7, 27, 290, FLAT, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_lava_snake[] = { // Snake lava monsters { 1, 5, 200, FLAT, MONS_LAVA_SNAKE }, { 1, 5, 200, FLAT, MONS_SALAMANDER }, { 1, 7, 85, SEMI, MONS_SALAMANDER_MYSTIC }, { 3, 5, 55, UP, MONS_SALAMANDER_FIREBRAND }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_lava_depths[] = { // Depths lava monsters { 1, 6, 22, DOWN, MONS_FIRE_ELEMENTAL }, { 1, 6, 22, DOWN, MONS_FIRE_BAT }, { 1, 6, 11, DOWN, MONS_FIRE_VORTEX }, { 1, 6, 11, DOWN, MONS_MOLTEN_GARGOYLE }, { 1, 6, 100, FLAT, MONS_SALAMANDER }, { 1, 8, 85, SEMI, MONS_SALAMANDER_MYSTIC }, { 3, 6, 55, UP, MONS_SALAMANDER_FIREBRAND }, { 1, 6, 400, FLAT, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const pop_entry pop_lava_hell[] = { // Hell branch lava monsters { 1, 6, 25, DOWN, MONS_MOLTEN_GARGOYLE }, { 1, 8, 300, DOWN, MONS_FIRE_ELEMENTAL }, { 1, 7, 75, FLAT, MONS_SALAMANDER_FIREBRAND }, { 1, 7, 25, FLAT, MONS_SMOKE_DEMON }, { 1, 7, 100, FLAT, MONS_NO_MONSTER }, { 0,0,0,FLAT,MONS_0 } }; static const struct { const pop_entry *pop; int count; } population_lava[] = { POP(lava_d), POP(lava_generic), POP(lava_generic), POP(lava_generic), #if TAG_MAJOR_VERSION == 34 POP(lava_generic), #endif POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_snake), POP(lava_generic), POP(lava_generic), POP(lava_generic), #if TAG_MAJOR_VERSION == 34 POP(lava_generic), #endif POP(lava_generic), POP(lava_generic), #if TAG_MAJOR_VERSION > 34 POP(lava_depths), #endif POP(lava_hell), POP(lava_hell), POP(lava_hell), POP(lava_hell), POP(lava_hell), POP(lava_generic), #if TAG_MAJOR_VERSION == 34 POP(lava_generic), #endif POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), POP(lava_generic), #if TAG_MAJOR_VERSION == 34 POP(lava_depths), #endif };