I know it doesn't fit there in an obvious way, not being undead, but aren't the pyramids rumoured to contain traps and such? A self-hiding poisonous spider pretty much fits that bill.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7707 c06c8d41-db1a-0410-9941-cceddc491573
ZJMTMMZBCXHCPFHBTI2PL3Q4XTJQUWMMHCCG6JDIEDMJYCC33TFQC
FIJJTGTISMR4BMUJCWGRVZCVJLEFQLAOK4S2SY2IASV5IJLPJQUAC
QKV56RZTWOX64VLWW52R2DEUM3HGGZNLRAJ2ZV2BHW5K422OPNJQC
FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
TJN537N2F5J7JWBCT2Z4VSTNXIMFCMEXTKTY7N2UCXIVUUQ3XJBQC
LHYTGOCNDWX3CVD2HSQ6LAYC6NLKKI6ZKKNWZ5IQWP6YP5PQEVWQC
HFZQADL3R7ITWM3VPW5G3NCB2AHRMAMKYZOI3STW5LWUCTV4FFFQC
BBQWA33DPXWEDYOOPO45VAYD4JQDZQVMZSEJ4RUI5LLC733IMIIQC
SJSIGISB5V6DOPFBA3IWLVEVYRXGPVJU3V7CVMTYH75OQOOD32JQC
2UO6ZOW7UCP5XJ2TJ26PJNQABILK2BZ4J3BAKLOKMZPJDQHW24MAC
DWSABP6YFM2CCMO7NVGGBWVCPAXOXOT5VQ6SADR4M66LHW66AP6QC
DMG73XDQHY2X2PHKWIY56XKD3O4NPGZKKIO6GX3IV2LLRVXPGKYQC
UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC
22QSFI3GQEJGETOKQHXI6JHR5VQV7GUC76VCLZCFYECSTSUIDRBQC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
PWY4VZVHDLYL7UVNCCOW7BM7LYK2BOGTL23P75HXUJ33MHJPEJPQC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC
WWR4IDWLXP4XLBWDZBA5GFG7CRKUJQNRK7FFUFOISK6OJTMYQPFQC
VSIPMW33QR6LF34ZLWDH5WAIM6JYBH6PODMNSRW7EHEXEDESJPQAC
LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC
RX6575DZOHRUXQUZH34YZGPZJF4STUPLBQDIVTINA2L6LVCKRIGQC
ZGQDH4PFMEMQ7BPPBA25YAEWDWQWERPXVUBBJQBJTF72KES4XQKQC
M2X33JKIB2O27DLCUPSH7LSHEFDN76TUCLGWFNU5LSSR767JSTUQC
coord_def targ_pos(mon->travel_path[mon->travel_path.size()-1]);
coord_def targ_pos(mon->travel_path[mon->travel_path.size() - 1]);
#ifdef DEBUG_PATHFIND
mprf("siren target is (%d, %d), dist = %d",
targ_pos.x, targ_pos.y, (int) (mon->pos() - targ_pos).rdist());
#endif
for (int k = 1; k <= LOS_RADIUS; k++)
for (int x = -1; x <= 1; x++)
for (int y = -1; y <= 1; y++)
{
if (x == 0 && y == 0)
continue;
while (true)
{
int best_num = 0;
for (radius_iterator ri(mon->pos(), LOS_RADIUS, true, false);
ri; ++ri)
{
if (!grid_is_water(grd(*ri)))
continue;
const coord_def c(mon->pos() + coord_def(k*x, k*y));
if (!grid_is_water(grd(c)))
continue;
// In the first iteration only count water grids that are
// not closer to the player than to the siren.
if (first && (mon->pos() - *ri).rdist() > (you.pos() - *ri).rdist())
continue;
water_count = _count_water_neighbours(c);
if (water_count <= best_water_count)
// Counts deep water twice.
const int water_count = _count_water_neighbours(*ri);
if (water_count < best_water_count)
continue;
if (water_count > best_water_count)
{
best_water_count = water_count;
best_target = *ri;
best_num = 1;
}
else // water_count == best_water_count
{
const int old_dist = (mon->pos() - best_target).rdist();
const int new_dist = (mon->pos() - *ri).rdist();
if (new_dist > old_dist)
// higher values returned means the monster is "more common"
// a return value of zero means the monster will never appear {dlb}
// NOTE: Higher values returned means the monster is "more common".
// A return value of zero means the monster will never appear. {dlb}
case MONS_HELL_HOUND:
case MONS_HELL_KNIGHT:
case MONS_SKELETON_LARGE:
case MONS_PHANTOM:
case MONS_ROTTING_DEVIL:
case MONS_SHADOW:
case MONS_SKELETON_SMALL:
case MONS_STONE_GOLEM:
case MONS_TORMENTOR:
case MONS_WIGHT:
case MONS_ZOMBIE_SMALL:
mlev += 2;
break;
case MONS_GIANT_COCKROACH:
case MONS_OOZE:
case MONS_SMALL_SNAKE:
return 2;
case MONS_FLAYED_GHOST:
case MONS_FREEZING_WRAITH:
case MONS_DEATH_DRAKE:
case MONS_HAIRY_DEVIL:
case MONS_IRON_DEVIL:
case MONS_VAMPIRE:
case MONS_WRAITH:
mlev += 3;
break;
case MONS_GIANT_GECKO:
case MONS_GIANT_MITE:
case MONS_GNOLL:
case MONS_HOBGOBLIN:
case MONS_JACKAL:
case MONS_KILLER_BEE_LARVA:
return 5;
case MONS_BLUE_DEVIL:
case MONS_DANCING_WEAPON:
case MONS_FLAMING_CORPSE:
case MONS_ICE_DEVIL:
case MONS_ICE_DRAGON:
case MONS_LICH:
case MONS_REAPER:
case MONS_SOUL_EATER:
case MONS_SPECTRAL_WARRIOR:
mlev += 5;
break;
case MONS_WORM:
case MONS_SNAKE:
case MONS_QUOKKA:
return 6;
default:
return 0;
}
return (mlev);
} // end mons_dis_level()
case MONS_FUNGUS:
case MONS_GIANT_ANT:
case MONS_GIANT_EYEBALL:
case MONS_HOUND:
case MONS_GIANT_IGUANA:
case MONS_OGRE:
case MONS_ORC_WIZARD:
case MONS_PHANTOM:
case MONS_SCORPION:
return 8;
case MONS_RED_DEVIL:
case MONS_SKELETAL_WARRIOR:
return 50;
case MONS_EYE_OF_DRAINING:
case MONS_GILA_MONSTER:
case MONS_MANTICORE:
case MONS_PLANT:
case MONS_WYVERN:
return 12;
case MONS_BIG_KOBOLD:
case MONS_GIANT_BROWN_FROG:
case MONS_GIANT_CENTIPEDE:
case MONS_OKLOB_PLANT:
case MONS_TROLL:
case MONS_TWO_HEADED_OGRE:
case MONS_WOOD_GOLEM:
case MONS_YAK:
return 13;
case MONS_SHADOW:
return 56;
case MONS_ARMOUR_MIMIC:
case MONS_BRAIN_WORM:
case MONS_CYCLOPS:
case MONS_EFREET:
case MONS_ETTIN:
case MONS_EYE_OF_DEVASTATION:
case MONS_GOLD_MIMIC:
case MONS_HYDRA:
case MONS_MOTTLED_DRAGON:
case MONS_POTION_MIMIC:
case MONS_SCROLL_MIMIC:
case MONS_SKELETAL_WARRIOR:
case MONS_WEAPON_MIMIC:
return 15;
case MONS_HELL_HOUND:
return 46;
case MONS_BLINK_FROG:
case MONS_BUTTERFLY:
case MONS_GIANT_BLOWFLY:
case MONS_GUARDIAN_NAGA:
case MONS_RAKSHASA:
case MONS_SLIME_CREATURE:
case MONS_STONE_GOLEM:
case MONS_VAMPIRE:
case MONS_WANDERING_MUSHROOM:
case MONS_ZOMBIE_LARGE:
return 16;
case MONS_MUMMY:
case MONS_WIGHT:
return 45;
case MONS_HELLION:
case MONS_BLUE_DEVIL:
return 40;
case MONS_BOGGART:
case MONS_CENTAUR_WARRIOR:
case MONS_CLAY_GOLEM:
case MONS_GRIFFON:
case MONS_SHAPESHIFTER:
case MONS_UGLY_THING:
case MONS_WIZARD:
case MONS_SIMULACRUM_SMALL:
case MONS_SIMULACRUM_LARGE:
return 17;
case MONS_FLAMING_CORPSE:
case MONS_FLAYED_GHOST:
case MONS_AIR_ELEMENTAL:
case MONS_DEEP_ELF_FIGHTER:
case MONS_DEEP_ELF_KNIGHT:
case MONS_DEEP_ELF_MAGE:
case MONS_DEEP_ELF_SUMMONER:
case MONS_EARTH_ELEMENTAL:
case MONS_FIRE_ELEMENTAL:
case MONS_GIANT_ORANGE_BRAIN:
case MONS_GIANT_SNAIL:
case MONS_GREAT_ORB_OF_EYES:
case MONS_ICE_DRAGON:
case MONS_FIEND:
return 3;
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_DEATH_MAGE:
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_DEEP_ELF_SORCERER:
case MONS_GOLDEN_DRAGON:
case MONS_IRON_DRAGON:
case MONS_QUICKSILVER_DRAGON:
case MONS_SHADOW_DRAGON:
case MONS_SKELETAL_DRAGON:
case MONS_TITAN:
return 30;
case MONS_DEEP_ELF_BLADEMASTER:
case MONS_DEEP_ELF_MASTER_ARCHER:
return 33;
case MONS_BIG_FISH:
case MONS_ELECTRICAL_EEL:
case MONS_GIANT_GOLDFISH:
case MONS_JELLYFISH:
case MONS_LAVA_FISH:
case MONS_LAVA_SNAKE:
case MONS_LAVA_WORM:
case MONS_SWAMP_WORM:
case MONS_WATER_ELEMENTAL:
return 500;
case MONS_CLAY_GOLEM:
case MONS_BIG_FISH:
case MONS_ELECTRICAL_EEL:
case MONS_GIANT_GOLDFISH:
case MONS_JELLYFISH:
case MONS_LAVA_FISH:
case MONS_LAVA_SNAKE:
case MONS_LAVA_WORM:
case MONS_SWAMP_WORM:
case MONS_WATER_ELEMENTAL:
case MONS_SALAMANDER:
return 500;
case MONS_GIANT_BAT:
case MONS_GIANT_FROG:
case MONS_GOBLIN:
case MONS_HILL_GIANT:
case MONS_HOBGOBLIN:
case MONS_IMP:
case MONS_KOBOLD:
case MONS_TORMENTOR:
mlev += 5;
break;
case MONS_ANCIENT_LICH:
case MONS_FIEND:
case MONS_LICH:
case MONS_PIT_FIEND:
case MONS_REAPER:
case MONS_SERPENT_OF_HELL:
case MONS_SKELETAL_DRAGON:
case MONS_SOUL_EATER:
case MONS_SPECTRAL_WARRIOR:
mlev += 6;
break;
default:
return 0;
}
return (mlev);
} // end mons_gehenna_level()
int mons_gehenna_rare(int mcls)
{
switch (mcls)
{
case MONS_SKELETON_LARGE:
case MONS_SKELETON_SMALL:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
return 99;
case MONS_MUMMY:
case MONS_HOUND:
case MONS_OGRE:
case MONS_ORC_WARRIOR:
case MONS_TROLL:
case MONS_YAK:
case MONS_YAKTAUR_CAPTAIN:
case MONS_NECROPHAGE:
case MONS_ROTTING_DEVIL:
case MONS_BIG_KOBOLD:
case MONS_GIANT_BEETLE:
case MONS_GIANT_BLOWFLY:
case MONS_GIANT_COCKROACH:
case MONS_GIANT_GECKO:
case MONS_GIANT_IGUANA:
case MONS_GIANT_NEWT:
case MONS_HIPPOGRIFF:
case MONS_HYDRA:
case MONS_ICE_BEAST:
case MONS_KILLER_BEE:
case MONS_ORC_WIZARD:
case MONS_QUOKKA:
case MONS_SCORPION:
case MONS_TORMENTOR:
case MONS_UNSEEN_HORROR:
case MONS_WORM:
case MONS_SPECTRAL_WARRIOR:
return 20;
case MONS_CLAY_GOLEM:
case MONS_SKELETAL_DRAGON:
return 10;
case MONS_STONE_GOLEM:
return 8;
case MONS_PIT_FIEND:
return 7;
case MONS_EFREET:
case MONS_FIEND:
case MONS_IRON_GOLEM:
case MONS_SOUL_EATER:
return 5;
case MONS_ANCIENT_LICH:
case MONS_SERPENT_OF_HELL:
return 4;
default:
return 0;
}
} // end mons_gehenna_rare()
int mons_cocytus_level(int mcls)
{
int mlev = 26;
switch (mcls)
{
case MONS_SKELETON_LARGE:
case MONS_NECROPHAGE:
case MONS_SKELETAL_WARRIOR:
case MONS_SKELETON_SMALL:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
case MONS_SIMULACRUM_LARGE:
case MONS_SIMULACRUM_SMALL:
mlev++;
break;
case MONS_BLUE_DEVIL:
case MONS_ICE_BEAST:
case MONS_JACKAL:
case MONS_MOTTLED_DRAGON:
mlev += 4;
break;
case MONS_ICE_DEVIL:
case MONS_ICE_DRAGON:
case MONS_TORMENTOR:
mlev += 5;
break;
case MONS_ANCIENT_LICH:
case MONS_LICH:
case MONS_REAPER:
case MONS_SKELETAL_DRAGON:
case MONS_SOUL_EATER:
mlev += 6;
break;
default:
return 0;
}
case MONS_WYVERN:
case MONS_YAKTAUR:
return 40;
case MONS_SHADOW:
return 56;
case MONS_SKELETAL_WARRIOR:
return 50;
case MONS_REAPER:
return 47;
case MONS_WIGHT:
case MONS_WRAITH:
return 45;
case MONS_ICE_DRAGON:
return 38;
case MONS_ROTTING_DEVIL:
case MONS_TORMENTOR:
return 37;
case MONS_ARMOUR_MIMIC:
case MONS_BROWN_SNAKE:
case MONS_DRAGON:
case MONS_ETTIN:
case MONS_FIRE_VORTEX:
case MONS_GIANT_LIZARD:
case MONS_GIANT_MITE:
case MONS_GNOLL:
case MONS_GOLD_MIMIC:
case MONS_KOMODO_DRAGON:
case MONS_NECROPHAGE:
case MONS_PHANTOM:
case MONS_BOGGART:
case MONS_DEEP_ELF_FIGHTER:
case MONS_DEEP_ELF_KNIGHT:
case MONS_DEEP_TROLL:
case MONS_FIRE_GIANT:
case MONS_FROST_GIANT:
case MONS_GREAT_ORB_OF_EYES:
case MONS_IRON_TROLL:
case MONS_OOZE:
case MONS_ORC_PRIEST:
case MONS_PLANT:
case MONS_RED_WASP:
case MONS_SIMULACRUM_SMALL:
case MONS_SIMULACRUM_LARGE:
case MONS_NECROPHAGE:
case MONS_PHANTOM:
case MONS_WIGHT:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
mlev += 2;
break;
case MONS_IRON_GOLEM:
case MONS_OKLOB_PLANT:
case MONS_ORC_SORCERER:
case MONS_SHADOW_WRAITH:
case MONS_STONE_GOLEM:
case MONS_TITAN:
case MONS_WANDERING_MUSHROOM:
return 10;
case MONS_BLUE_DEVIL:
case MONS_FLAYED_GHOST:
case MONS_HUNGRY_GHOST:
case MONS_ICE_DEVIL:
case MONS_MUMMY:
case MONS_CRYSTAL_GOLEM:
case MONS_DANCING_WEAPON:
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_DEEP_ELF_MAGE:
case MONS_DEEP_ELF_SUMMONER:
case MONS_IRON_DRAGON:
case MONS_NAGA_MAGE:
case MONS_NAGA_WARRIOR:
case MONS_FLYING_SKULL:
case MONS_HELLION:
case MONS_REAPER:
case MONS_ROTTING_DEVIL:
case MONS_SHADOW_DRAGON:
case MONS_VAMPIRE:
mlev += 5;
break;
case MONS_AIR_ELEMENTAL:
case MONS_DEEP_ELF_CONJURER:
case MONS_EARTH_ELEMENTAL:
case MONS_FIRE_ELEMENTAL:
return 4;
case MONS_HAIRY_DEVIL:
case MONS_LICH:
case MONS_SOUL_EATER:
mlev += 6;
break;
default:
return 0;
}
return (mlev);
} // end mons_tartarus_level()
int mons_tartarus_rare(int mcls)
{
switch (mcls)
{
case MONS_SKELETON_LARGE:
case MONS_SHADOW_IMP:
case MONS_SKELETAL_WARRIOR:
case MONS_SKELETON_SMALL:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
return 99;
case MONS_SHADOW:
return 92;
case MONS_REAPER:
return 73;
case MONS_NECROPHAGE:
return 72;
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_DEATH_MAGE:
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_PRIEST:
case MONS_DEEP_ELF_SORCERER:
case MONS_GUARDIAN_NAGA:
return 3;
case MONS_ROTTING_DEVIL:
return 62;
case MONS_FREEZING_WRAITH:
return 60;
case MONS_FLYING_SKULL:
return 53;
case MONS_HELL_HOUND:
case MONS_PHANTOM:
case MONS_WRAITH:
return 52;
case MONS_SHADOW_DEMON:
return 50;
case MONS_SPECTRAL_WARRIOR:
return 45;
case MONS_VAMPIRE:
return 44;
case MONS_HELLION:
case MONS_TORMENTOR:
return 42;
case MONS_SKELETAL_DRAGON:
return 40;
case MONS_SOUL_EATER:
return 35;
case MONS_ICE_DEVIL: // not really appropriate for a fiery hell
return 34;
case MONS_MUMMY:
return 33;
case MONS_BLUE_DEVIL:
case MONS_HUNGRY_GHOST:
return 32;
case MONS_FLAYED_GHOST:
case MONS_HAIRY_DEVIL:
return 30;
case MONS_LICH:
return 24;
case MONS_IMP:
case MONS_SHADOW_DRAGON:
case MONS_DEATH_DRAKE:
return 20;
case MONS_RED_DEVIL:
return 13;
case MONS_HELL_KNIGHT:
return 14;
case MONS_NECROMANCER:
case MONS_SIMULACRUM_LARGE:
case MONS_SIMULACRUM_SMALL:
return 12;
case MONS_ANCIENT_LICH:
return 6;
case MONS_ORC_SORCERER:
case MONS_DEEP_ELF_PRIEST:
case MONS_GLOWING_SHAPESHIFTER:
case MONS_DEEP_ELF_KNIGHT:
mlev += 4;
break;
case MONS_ORC_PRIEST:
case MONS_ORC_HIGH_PRIEST:
mlev += 5;
break;
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_SORCERER:
case MONS_DEEP_ELF_DEATH_MAGE:
mlev += 7;
break;
case MONS_DEEP_ELF_BLADEMASTER:
case MONS_DEEP_ELF_MASTER_ARCHER:
mlev += 10;
break;
case MONS_DEEP_ELF_KNIGHT:
return 80;
case MONS_DEEP_ELF_SUMMONER:
return 72;
case MONS_DEEP_ELF_CONJURER:
return 63;
case MONS_DEEP_ELF_PRIEST:
return 44;
case MONS_SHAPESHIFTER:
return 25;
case MONS_ORC:
return 20;
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_SORCERER:
return 17;
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_DEATH_MAGE:
case MONS_ORC_WIZARD:
return 13;
case MONS_ORC_WARRIOR:
return 11;
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_ORC_SORCERER:
case MONS_GLOWING_SHAPESHIFTER:
return 10;
} // end mons_lair_rare()
}
// The Swamp
int mons_swamp_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_SWAMP, 1);
switch (mcls)
{
case MONS_GIANT_BAT:
case MONS_GIANT_BLOWFLY:
case MONS_GIANT_FROG:
case MONS_GIANT_AMOEBA:
case MONS_GIANT_SLUG:
case MONS_GIANT_NEWT:
case MONS_GIANT_GECKO:
case MONS_RAT:
case MONS_SWAMP_DRAKE:
case MONS_WORM:
case MONS_SWAMP_WORM:
mlev++;
break;
case MONS_GIANT_BROWN_FROG:
case MONS_FUNGUS:
case MONS_NECROPHAGE:
case MONS_PLANT:
case MONS_SNAKE:
case MONS_BUTTERFLY:
case MONS_GIANT_LIZARD:
case MONS_GIANT_MOSQUITO:
case MONS_GIANT_SNAIL:
case MONS_HYDRA:
mlev += 2;
break;
case MONS_BROWN_SNAKE:
case MONS_HUNGRY_GHOST:
case MONS_INSUBSTANTIAL_WISP:
case MONS_JELLY:
case MONS_KOMODO_DRAGON:
case MONS_PHANTOM:
case MONS_RED_WASP:
case MONS_SPINY_FROG:
case MONS_SWAMP_DRAGON:
case MONS_UGLY_THING:
mlev += 3;
break;
case MONS_BLINK_FROG:
case MONS_SLIME_CREATURE:
case MONS_VERY_UGLY_THING:
case MONS_VAPOUR:
case MONS_TENTACLED_MONSTROSITY:
mlev += 4;
break;
default:
mlev += 99;
}
return (mlev);
}
int mons_swamp_rare(int mcls)
{
switch (mcls)
{
case MONS_GIANT_MOSQUITO:
return 250;
case MONS_PLANT:
return 200;
case MONS_GIANT_FROG:
return 150;
case MONS_GIANT_BLOWFLY:
return 100;
case MONS_GIANT_BAT:
case MONS_FUNGUS:
return 99;
case MONS_GIANT_BROWN_FROG:
return 90;
case MONS_SWAMP_DRAKE:
return 80;
case MONS_HYDRA:
return 70;
case MONS_RAT:
return 61;
case MONS_SLIME_CREATURE:
return 54;
case MONS_SNAKE:
return 52;
case MONS_INSUBSTANTIAL_WISP:
return 43;
case MONS_BROWN_SNAKE:
return 33;
case MONS_RED_WASP:
case MONS_SWAMP_DRAGON:
case MONS_SPINY_FROG:
return 30;
case MONS_JELLY:
case MONS_BUTTERFLY:
case MONS_GIANT_LIZARD:
return 25;
case MONS_WORM:
return 20;
case MONS_KOMODO_DRAGON:
case MONS_VERY_UGLY_THING:
case MONS_VAPOUR:
case MONS_MERMAID:
return 15;
case MONS_PHANTOM:
case MONS_UGLY_THING:
case MONS_HUNGRY_GHOST:
return 13;
case MONS_NECROPHAGE:
return 12;
case MONS_SIREN:
case MONS_BLINK_FROG:
case MONS_GIANT_AMOEBA:
case MONS_GIANT_GECKO:
case MONS_GIANT_NEWT:
case MONS_GIANT_SLUG:
case MONS_GIANT_SNAIL:
return 10;
case MONS_TENTACLED_MONSTROSITY:
return 5;
default:
return 0;
}
}
// The Shoals
int mons_shoals_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_SHOALS, 1);
switch (mcls)
{
case MONS_BUTTERFLY:
case MONS_PLANT:
case MONS_GIANT_BAT:
break;
case MONS_MERFOLK:
case MONS_MERMAID:
case MONS_CENTAUR:
case MONS_ETTIN:
case MONS_SHEEP:
case MONS_HIPPOGRIFF:
mlev++;
break;
case MONS_SIREN:
case MONS_YAKTAUR:
mlev += 2;
break;
case MONS_CENTAUR_WARRIOR:
case MONS_CYCLOPS: // will have a sheep band
mlev += 3;
break;
case MONS_STONE_GIANT:
case MONS_OKLOB_PLANT:
mlev += 4;
break;
case MONS_YAKTAUR_CAPTAIN:
mlev += 5;
break;
default:
mlev += 99;
}
return mlev;
}
int mons_shoals_rare(int mcls)
{
switch (mcls)
{
case MONS_PLANT:
return 150;
case MONS_ETTIN:
case MONS_SHEEP:
case MONS_MERFOLK:
return 50;
case MONS_MERMAID:
return 40;
case MONS_HIPPOGRIFF:
case MONS_GIANT_BAT:
case MONS_BUTTERFLY:
case MONS_CENTAUR:
return 35;
case MONS_SIREN:
case MONS_YAKTAUR:
return 25;
case MONS_CYCLOPS:
case MONS_CENTAUR_WARRIOR:
return 20;
case MONS_STONE_GIANT:
case MONS_YAKTAUR_CAPTAIN:
return 10;
case MONS_OKLOB_PLANT:
return 5;
default:
return 0;
}
}
// The Snake Pit
int mons_pitsnake_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_SNAKE_PIT, 1);
switch (mcls)
{
case MONS_SMALL_SNAKE:
case MONS_SNAKE:
mlev++;
break;
case MONS_BROWN_SNAKE:
case MONS_BLACK_SNAKE:
case MONS_YELLOW_SNAKE:
case MONS_GREY_SNAKE:
case MONS_NAGA:
mlev += 2;
break;
case MONS_NAGA_WARRIOR:
case MONS_NAGA_MAGE:
mlev += 3;
break;
case MONS_GUARDIAN_NAGA:
mlev += 4;
break;
case MONS_GREATER_NAGA:
mlev += 5;
break;
default:
mlev += 99;
}
return (mlev);
}
int mons_pitsnake_rare(int mcls)
{
switch (mcls)
{
case MONS_SNAKE:
case MONS_BROWN_SNAKE:
return 99;
case MONS_BLACK_SNAKE:
return 72;
case MONS_NAGA:
return 53;
case MONS_NAGA_WARRIOR:
case MONS_NAGA_MAGE:
return 34;
case MONS_YELLOW_SNAKE:
case MONS_GREY_SNAKE:
return 32;
case MONS_GREATER_NAGA:
case MONS_GUARDIAN_NAGA:
case MONS_SMALL_SNAKE:
return 15;
default:
return 0;
}
}
// The Slime Pits
} // end mons_pitslime_rare()
}
// The Hive
int mons_hive_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_HIVE, 1);
switch (mcls)
{
case MONS_PLANT:
case MONS_KILLER_BEE:
mlev += 0;
break;
case MONS_KILLER_BEE_LARVA:
mlev += 2;
break;
default:
return 99;
}
return (mlev);
}
int mons_hive_rare(int mcls)
{
switch (mcls)
{
case MONS_KILLER_BEE:
return 300;
case MONS_PLANT:
return 100;
case MONS_KILLER_BEE_LARVA:
return 50;
default:
return 0;
}
}
}
} // end mons_crypt_rare()
int mons_pitsnake_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_SNAKE_PIT, 1);
switch (mcls)
{
case MONS_SMALL_SNAKE:
case MONS_SNAKE:
mlev++;
break;
case MONS_BROWN_SNAKE:
case MONS_BLACK_SNAKE:
case MONS_YELLOW_SNAKE:
case MONS_GREY_SNAKE:
case MONS_NAGA:
mlev += 2;
break;
case MONS_NAGA_WARRIOR:
case MONS_NAGA_MAGE:
mlev += 3;
break;
case MONS_GUARDIAN_NAGA:
mlev += 4;
break;
case MONS_GREATER_NAGA:
mlev += 5;
break;
default:
mlev += 99;
return (mlev);
} // end mons_pitsnake_level()
int mons_pitsnake_rare(int mcls)
{
switch (mcls)
{
case MONS_SNAKE:
case MONS_BROWN_SNAKE:
return 99;
case MONS_BLACK_SNAKE:
return 72;
case MONS_NAGA:
return 53;
case MONS_NAGA_WARRIOR:
case MONS_NAGA_MAGE:
return 34;
case MONS_YELLOW_SNAKE:
case MONS_GREY_SNAKE:
return 32;
case MONS_GREATER_NAGA:
case MONS_GUARDIAN_NAGA:
case MONS_SMALL_SNAKE:
return 15;
default:
return 0;
}
} // end mons_pitsnake_rare()
int mons_hallelf_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_ELVEN_HALLS, 1);
switch (mcls)
{
case MONS_DEEP_ELF_SOLDIER:
case MONS_DEEP_ELF_FIGHTER:
case MONS_ORC:
case MONS_ORC_WARRIOR:
mlev++;
break;
case MONS_ORC_WIZARD:
case MONS_DEEP_ELF_MAGE:
case MONS_DEEP_ELF_SUMMONER:
mlev += 2;
break;
case MONS_FUNGUS:
case MONS_DEEP_ELF_CONJURER:
case MONS_SHAPESHIFTER:
case MONS_ORC_KNIGHT:
mlev += 3;
break;
case MONS_ORC_SORCERER:
case MONS_DEEP_ELF_PRIEST:
case MONS_GLOWING_SHAPESHIFTER:
case MONS_DEEP_ELF_KNIGHT:
mlev += 4;
break;
case MONS_ORC_PRIEST:
case MONS_ORC_HIGH_PRIEST:
mlev += 5;
break;
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_SORCERER:
case MONS_DEEP_ELF_DEATH_MAGE:
mlev += 7;
break;
case MONS_DEEP_ELF_BLADEMASTER:
case MONS_DEEP_ELF_MASTER_ARCHER:
mlev += 10;
break;
default:
mlev += 99;
break;
}
return (mlev);
} // end mons_hallelf_level()
int mons_hallelf_rare(int mcls)
{
switch (mcls)
{
case MONS_FUNGUS:
return 300;
case MONS_DEEP_ELF_SOLDIER:
case MONS_DEEP_ELF_FIGHTER:
case MONS_DEEP_ELF_MAGE:
return 100;
case MONS_DEEP_ELF_KNIGHT:
return 80;
case MONS_DEEP_ELF_SUMMONER:
return 72;
case MONS_DEEP_ELF_CONJURER:
return 63;
case MONS_DEEP_ELF_PRIEST:
return 44;
case MONS_SHAPESHIFTER:
return 25;
case MONS_ORC:
return 20;
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_SORCERER:
return 17;
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_DEATH_MAGE:
case MONS_ORC_WIZARD:
return 13;
case MONS_ORC_WARRIOR:
return 11;
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_ORC_SORCERER:
case MONS_GLOWING_SHAPESHIFTER:
return 10;
case MONS_ORC_KNIGHT:
case MONS_ORC_PRIEST:
case MONS_ORC_HIGH_PRIEST:
return 5;
case MONS_DEEP_ELF_BLADEMASTER:
case MONS_DEEP_ELF_MASTER_ARCHER:
return 1;
default:
return 0;
}
} // end mons_hallelf_rare()
// The Tomb
default:
return 0;
}
} // end mons_tomb_rare()
int mons_shoals_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_SHOALS, 1);
switch (mcls)
{
case MONS_BUTTERFLY:
case MONS_PLANT:
case MONS_GIANT_BAT:
break;
case MONS_MERFOLK:
case MONS_MERMAID:
case MONS_CENTAUR:
case MONS_ETTIN:
case MONS_SHEEP:
case MONS_HIPPOGRIFF:
mlev++;
break;
case MONS_SIREN:
case MONS_YAKTAUR:
mlev += 2;
break;
case MONS_CENTAUR_WARRIOR:
case MONS_CYCLOPS: // will have a sheep band
mlev += 3;
break;
case MONS_STONE_GIANT:
case MONS_OKLOB_PLANT:
mlev += 4;
break;
case MONS_YAKTAUR_CAPTAIN:
mlev += 5;
break;
default:
mlev += 99;
}
return mlev;
}
case MONS_ETTIN:
case MONS_SHEEP:
case MONS_MERFOLK:
return 50;
case MONS_MERMAID:
return 40;
case MONS_SIREN:
case MONS_HIPPOGRIFF:
case MONS_GIANT_BAT:
case MONS_BUTTERFLY:
case MONS_CENTAUR:
return 35;
case MONS_YAKTAUR:
return 25;
case MONS_CYCLOPS:
case MONS_CENTAUR_WARRIOR:
return 20;
case MONS_STONE_GIANT:
case MONS_YAKTAUR_CAPTAIN:
return 10;
case MONS_OKLOB_PLANT:
return 5;
int mons_swamp_level(int mcls)
{
int mlev = absdungeon_depth(BRANCH_SWAMP, 1);
switch (mcls)
{
case MONS_GIANT_BAT:
case MONS_GIANT_BLOWFLY:
case MONS_GIANT_FROG:
case MONS_GIANT_AMOEBA:
case MONS_GIANT_SLUG:
case MONS_GIANT_NEWT:
case MONS_GIANT_GECKO:
case MONS_RAT:
case MONS_SWAMP_DRAKE:
case MONS_WORM:
case MONS_SWAMP_WORM:
mlev++;
break;
case MONS_GIANT_BROWN_FROG:
case MONS_FUNGUS:
case MONS_NECROPHAGE:
case MONS_PLANT:
case MONS_SNAKE:
case MONS_BUTTERFLY:
case MONS_GIANT_LIZARD:
case MONS_GIANT_MOSQUITO:
case MONS_GIANT_SNAIL:
case MONS_HYDRA:
mlev += 2;
break;
case MONS_BROWN_SNAKE:
case MONS_HUNGRY_GHOST:
case MONS_INSUBSTANTIAL_WISP:
case MONS_JELLY:
case MONS_KOMODO_DRAGON:
case MONS_PHANTOM:
case MONS_RED_WASP:
case MONS_SPINY_FROG:
case MONS_SWAMP_DRAGON:
case MONS_UGLY_THING:
mlev += 3;
break;
case MONS_BLINK_FROG:
case MONS_SLIME_CREATURE:
case MONS_VERY_UGLY_THING:
case MONS_VAPOUR:
case MONS_TENTACLED_MONSTROSITY:
mlev += 4;
break;
default:
mlev += 99;
}
return (mlev);
} // end mons_swamp_level()
int mons_swamp_rare(int mcls)
{
switch (mcls)
{
case MONS_GIANT_MOSQUITO:
return 250;
case MONS_PLANT:
return 200;
case MONS_GIANT_FROG:
return 150;
case MONS_GIANT_BLOWFLY:
return 100;
case MONS_GIANT_BAT:
case MONS_FUNGUS:
return 99;
case MONS_GIANT_BROWN_FROG:
return 90;
case MONS_SWAMP_DRAKE:
return 80;
case MONS_HYDRA:
return 70;
case MONS_RAT:
return 61;
case MONS_SLIME_CREATURE:
return 54;
case MONS_SNAKE:
return 52;
case MONS_INSUBSTANTIAL_WISP:
return 43;
case MONS_BROWN_SNAKE:
return 33;
case MONS_RED_WASP:
case MONS_SWAMP_DRAGON:
case MONS_SPINY_FROG:
return 30;
case MONS_JELLY:
case MONS_BUTTERFLY:
case MONS_GIANT_LIZARD:
return 25;
case MONS_WORM:
return 20;
case MONS_KOMODO_DRAGON:
case MONS_VERY_UGLY_THING:
case MONS_VAPOUR:
case MONS_MERMAID:
return 15;
case MONS_PHANTOM:
case MONS_UGLY_THING:
case MONS_HUNGRY_GHOST:
return 13;
case MONS_NECROPHAGE:
return 12;
case MONS_SIREN:
case MONS_BLINK_FROG:
case MONS_GIANT_AMOEBA:
case MONS_GIANT_GECKO:
case MONS_GIANT_NEWT:
case MONS_GIANT_SLUG:
case MONS_GIANT_SNAIL:
return 10;
case MONS_TENTACLED_MONSTROSITY:
return 5;
default:
return 0;
}
} // end mons_swamp_rare()
int mons_hallblade_level(int mcls)
{
if (mcls == MONS_DANCING_WEAPON)
return absdungeon_depth(BRANCH_HALL_OF_BLADES, 1);
else
return 0;
} // end mons_hallblade_level
int mons_hallblade_rare(int mcls)
{
return ((mcls == MONS_DANCING_WEAPON) ? 1000 : 0);
} // end mons_hallblade_rare()
// New branch must be added in:
// - new_game stair location
// - down/up stairs (to and back) misc.cc
// - new_level (2 places) (misc.cc)
// - item_check items.cc
// - ouch ouch.cc (death message)
// - and here...
// The Halls of Zot
case MONS_GIANT_COCKROACH:
case MONS_OOZE:
case MONS_SMALL_SNAKE:
return 2;
case MONS_HELL_HOUND:
case MONS_HELL_KNIGHT:
case MONS_SKELETON_LARGE:
case MONS_PHANTOM:
case MONS_ROTTING_DEVIL:
case MONS_SHADOW:
case MONS_SKELETON_SMALL:
case MONS_STONE_GOLEM:
case MONS_TORMENTOR:
case MONS_WIGHT:
case MONS_ZOMBIE_SMALL:
mlev += 2;
break;
case MONS_GIANT_GECKO:
case MONS_GIANT_MITE:
case MONS_GNOLL:
case MONS_HOBGOBLIN:
case MONS_JACKAL:
case MONS_KILLER_BEE_LARVA:
return 5;
case MONS_FLAYED_GHOST:
case MONS_FREEZING_WRAITH:
case MONS_DEATH_DRAKE:
case MONS_HAIRY_DEVIL:
case MONS_IRON_DEVIL:
case MONS_VAMPIRE:
case MONS_WRAITH:
mlev += 3;
break;
case MONS_BLUE_DEVIL:
case MONS_DANCING_WEAPON:
case MONS_FLAMING_CORPSE:
case MONS_ICE_DEVIL:
case MONS_ICE_DRAGON:
case MONS_LICH:
case MONS_REAPER:
case MONS_SOUL_EATER:
case MONS_SPECTRAL_WARRIOR:
mlev += 5;
break;
case MONS_BIG_KOBOLD:
case MONS_GIANT_BROWN_FROG:
case MONS_GIANT_CENTIPEDE:
case MONS_OKLOB_PLANT:
case MONS_TROLL:
case MONS_TWO_HEADED_OGRE:
case MONS_WOOD_GOLEM:
case MONS_YAK:
return 13;
case MONS_RED_DEVIL:
case MONS_SKELETAL_WARRIOR:
return 50;
case MONS_ARMOUR_MIMIC:
case MONS_BRAIN_WORM:
case MONS_CYCLOPS:
case MONS_EFREET:
case MONS_ETTIN:
case MONS_EYE_OF_DEVASTATION:
case MONS_GOLD_MIMIC:
case MONS_HYDRA:
case MONS_MOTTLED_DRAGON:
case MONS_POTION_MIMIC:
case MONS_SCROLL_MIMIC:
case MONS_SKELETAL_WARRIOR:
case MONS_WEAPON_MIMIC:
return 15;
case MONS_SHADOW:
return 56;
case MONS_BLINK_FROG:
case MONS_BUTTERFLY:
case MONS_GIANT_BLOWFLY:
case MONS_GUARDIAN_NAGA:
case MONS_RAKSHASA:
case MONS_SLIME_CREATURE:
case MONS_STONE_GOLEM:
case MONS_VAMPIRE:
case MONS_WANDERING_MUSHROOM:
case MONS_ZOMBIE_LARGE:
return 16;
case MONS_HELL_HOUND:
return 46;
case MONS_BOGGART:
case MONS_CENTAUR_WARRIOR:
case MONS_CLAY_GOLEM:
case MONS_GRIFFON:
case MONS_SHAPESHIFTER:
case MONS_UGLY_THING:
case MONS_WIZARD:
case MONS_SIMULACRUM_SMALL:
case MONS_SIMULACRUM_LARGE:
return 17;
case MONS_MUMMY:
case MONS_WIGHT:
return 45;
case MONS_AIR_ELEMENTAL:
case MONS_DEEP_ELF_FIGHTER:
case MONS_DEEP_ELF_KNIGHT:
case MONS_DEEP_ELF_MAGE:
case MONS_DEEP_ELF_SUMMONER:
case MONS_EARTH_ELEMENTAL:
case MONS_FIRE_ELEMENTAL:
case MONS_GIANT_ORANGE_BRAIN:
case MONS_GIANT_SNAIL:
case MONS_GREAT_ORB_OF_EYES:
case MONS_ICE_DRAGON:
case MONS_FREEZING_WRAITH:
case MONS_ICE_DEVIL:
return 30;
case MONS_FLAMING_CORPSE:
case MONS_FLAYED_GHOST:
case MONS_BOULDER_BEETLE:
case MONS_ORC_HIGH_PRIEST:
case MONS_PULSATING_LUMP:
return 21;
case MONS_BORING_BEETLE:
case MONS_CRYSTAL_GOLEM:
case MONS_FLAYED_GHOST:
case MONS_FREEZING_WRAITH:
case MONS_REDBACK:
case MONS_SPHINX:
case MONS_VAPOUR:
return 22;
case MONS_VAMPIRE:
return 19;
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_DEATH_MAGE:
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_DEEP_ELF_SORCERER:
case MONS_GOLDEN_DRAGON:
case MONS_IRON_DRAGON:
case MONS_QUICKSILVER_DRAGON:
case MONS_SHADOW_DRAGON:
case MONS_SKELETAL_DRAGON:
case MONS_TITAN:
return 30;
case MONS_DEEP_ELF_BLADEMASTER:
case MONS_DEEP_ELF_MASTER_ARCHER:
return 33;
case MONS_FIEND:
return 3;
case MONS_BIG_FISH:
case MONS_ELECTRICAL_EEL:
case MONS_GIANT_GOLDFISH:
case MONS_JELLYFISH:
case MONS_LAVA_FISH:
case MONS_LAVA_SNAKE:
case MONS_LAVA_WORM:
case MONS_SWAMP_WORM:
case MONS_WATER_ELEMENTAL:
case MONS_SALAMANDER:
return 500;
case MONS_GIANT_BAT:
case MONS_GIANT_FROG:
case MONS_GOBLIN:
case MONS_HILL_GIANT:
case MONS_HOBGOBLIN:
case MONS_IMP:
case MONS_KOBOLD:
case MONS_CLAY_GOLEM:
case MONS_HOUND:
case MONS_OGRE:
case MONS_ORC_WARRIOR:
case MONS_TROLL:
case MONS_YAK:
case MONS_YAKTAUR_CAPTAIN:
case MONS_TORMENTOR:
mlev += 5;
break;
case MONS_ANCIENT_LICH:
case MONS_FIEND:
case MONS_LICH:
case MONS_PIT_FIEND:
case MONS_REAPER:
case MONS_SERPENT_OF_HELL:
case MONS_SKELETAL_DRAGON:
case MONS_SOUL_EATER:
case MONS_SPECTRAL_WARRIOR:
mlev += 6;
break;
default:
return 0;
}
return (mlev);
}
int mons_gehenna_rare(int mcls)
{
switch (mcls)
{
case MONS_SKELETON_LARGE:
case MONS_SKELETON_SMALL:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
return 99;
case MONS_MUMMY:
case MONS_BIG_KOBOLD:
case MONS_GIANT_BEETLE:
case MONS_GIANT_BLOWFLY:
case MONS_GIANT_COCKROACH:
case MONS_GIANT_GECKO:
case MONS_GIANT_IGUANA:
case MONS_GIANT_NEWT:
case MONS_HIPPOGRIFF:
case MONS_HYDRA:
case MONS_ICE_BEAST:
case MONS_KILLER_BEE:
case MONS_ORC_WIZARD:
case MONS_QUOKKA:
case MONS_SCORPION:
case MONS_TORMENTOR:
case MONS_UNSEEN_HORROR:
case MONS_WORM:
case MONS_NECROPHAGE:
case MONS_ROTTING_DEVIL:
case MONS_GIANT_CENTIPEDE:
case MONS_GIANT_EYEBALL:
case MONS_GIANT_SPORE:
case MONS_GRIFFON:
case MONS_FLAMING_CORPSE:
case MONS_FLAYED_GHOST:
case MONS_PHANTOM:
return 32;
case MONS_HELL_HOG:
case MONS_IMP:
case MONS_IRON_DEVIL:
return 30;
case MONS_LICH:
return 25;
case MONS_HELL_KNIGHT:
return 21;
case MONS_JACKAL:
case MONS_MOTTLED_DRAGON:
case MONS_SPECTRAL_WARRIOR:
return 20;
case MONS_CLAY_GOLEM:
case MONS_SKELETAL_DRAGON:
return 10;
case MONS_STONE_GOLEM:
return 8;
case MONS_PIT_FIEND:
return 7;
case MONS_EFREET:
case MONS_FIEND:
case MONS_IRON_GOLEM:
case MONS_SOUL_EATER:
return 5;
case MONS_ANCIENT_LICH:
case MONS_SERPENT_OF_HELL:
return 4;
default:
return 0;
}
}
// Cocytus - the ice hell
int mons_cocytus_level(int mcls)
{
int mlev = 26;
switch (mcls)
{
case MONS_SKELETON_LARGE:
case MONS_NECROPHAGE:
case MONS_SKELETAL_WARRIOR:
case MONS_SKELETON_SMALL:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
case MONS_SIMULACRUM_LARGE:
case MONS_SIMULACRUM_SMALL:
mlev++;
break;
case MONS_BLUE_DEVIL:
case MONS_ICE_BEAST:
case MONS_WYVERN:
case MONS_YAKTAUR:
return 40;
mlev += 4;
break;
case MONS_ICE_DEVIL:
case MONS_ICE_DRAGON:
case MONS_TORMENTOR:
mlev += 5;
break;
case MONS_ANCIENT_LICH:
case MONS_LICH:
case MONS_REAPER:
case MONS_SKELETAL_DRAGON:
case MONS_SOUL_EATER:
mlev += 6;
break;
default:
return 0;
}
case MONS_ARMOUR_MIMIC:
case MONS_BROWN_SNAKE:
case MONS_DRAGON:
case MONS_ETTIN:
case MONS_FIRE_VORTEX:
case MONS_GIANT_LIZARD:
case MONS_GIANT_MITE:
case MONS_GNOLL:
case MONS_GOLD_MIMIC:
case MONS_KOMODO_DRAGON:
case MONS_MUMMY:
case MONS_NECROPHAGE:
case MONS_POTION_MIMIC:
case MONS_SCROLL_MIMIC:
case MONS_QUASIT:
case MONS_BOGGART:
case MONS_DEEP_ELF_FIGHTER:
case MONS_DEEP_ELF_KNIGHT:
case MONS_DEEP_TROLL:
case MONS_FIRE_GIANT:
case MONS_FROST_GIANT:
case MONS_GREAT_ORB_OF_EYES:
case MONS_IRON_TROLL:
case MONS_OOZE:
case MONS_ORC_PRIEST:
case MONS_PLANT:
case MONS_RED_WASP:
case MONS_SIMULACRUM_SMALL:
case MONS_SIMULACRUM_LARGE:
case MONS_NECROPHAGE:
case MONS_PHANTOM:
case MONS_DEEP_ELF_SOLDIER:
case MONS_GIANT_ORANGE_BRAIN:
case MONS_HELL_KNIGHT:
case MONS_IRON_GOLEM:
case MONS_OKLOB_PLANT:
case MONS_ORC_SORCERER:
case MONS_SHADOW_WRAITH:
case MONS_STONE_GOLEM:
case MONS_TITAN:
case MONS_WANDERING_MUSHROOM:
return 10;
switch (mcls)
{
case MONS_IMP:
case MONS_SKELETON_LARGE:
case MONS_RED_DEVIL:
case MONS_SHADOW_IMP:
case MONS_SKELETAL_WARRIOR:
case MONS_SKELETON_SMALL:
mlev++;
break;
case MONS_CRYSTAL_GOLEM:
case MONS_DANCING_WEAPON:
case MONS_DEEP_ELF_HIGH_PRIEST:
case MONS_DEEP_ELF_MAGE:
case MONS_DEEP_ELF_SUMMONER:
case MONS_IRON_DRAGON:
case MONS_NAGA_MAGE:
case MONS_NAGA_WARRIOR:
case MONS_BLUE_DEVIL:
case MONS_FLAYED_GHOST:
case MONS_HUNGRY_GHOST:
case MONS_ICE_DEVIL:
case MONS_MUMMY:
case MONS_AIR_ELEMENTAL:
case MONS_DEEP_ELF_CONJURER:
case MONS_EARTH_ELEMENTAL:
case MONS_FIRE_ELEMENTAL:
return 4;
case MONS_FLYING_SKULL:
case MONS_HELLION:
case MONS_REAPER:
case MONS_ROTTING_DEVIL:
case MONS_SHADOW_DRAGON:
case MONS_VAMPIRE:
mlev += 5;
break;
case MONS_DEEP_ELF_ANNIHILATOR:
case MONS_DEEP_ELF_DEATH_MAGE:
case MONS_DEEP_ELF_DEMONOLOGIST:
case MONS_DEEP_ELF_PRIEST:
case MONS_DEEP_ELF_SORCERER:
case MONS_GUARDIAN_NAGA:
return 3;
case MONS_HAIRY_DEVIL:
case MONS_LICH:
case MONS_SOUL_EATER:
mlev += 6;
break;
case MONS_PULSATING_LUMP:
case MONS_SHINING_EYE:
case MONS_TOENAIL_GOLEM:
return 2;
default:
return 0;
}
return (mlev);
}
int mons_tartarus_rare(int mcls)
{
switch (mcls)
{
case MONS_SKELETON_LARGE:
case MONS_SHADOW_IMP:
case MONS_SKELETAL_WARRIOR:
case MONS_SKELETON_SMALL:
case MONS_ZOMBIE_LARGE:
case MONS_ZOMBIE_SMALL:
return 99;
case MONS_SHADOW:
return 92;
case MONS_REAPER:
return 73;
case MONS_NECROPHAGE:
return 72;
case MONS_WIGHT:
return 71;
case MONS_ROTTING_DEVIL:
return 62;
case MONS_FREEZING_WRAITH:
return 60;
case MONS_FLYING_SKULL:
return 53;
case MONS_HELL_HOUND:
case MONS_PHANTOM:
case MONS_WRAITH:
return 52;
case MONS_SHADOW_DEMON:
return 50;
case MONS_SPECTRAL_WARRIOR:
return 45;
case MONS_VAMPIRE:
return 44;
case MONS_HELLION:
case MONS_TORMENTOR:
return 42;
case MONS_SKELETAL_DRAGON:
return 40;
case MONS_SOUL_EATER:
return 35;
case MONS_ICE_DEVIL: // not really appropriate for a fiery hell
return 34;
case MONS_MUMMY:
return 33;
case MONS_BLUE_DEVIL:
case MONS_HUNGRY_GHOST:
return 32;
case MONS_FLAYED_GHOST:
case MONS_HAIRY_DEVIL:
return 30;
case MONS_LICH:
return 24;
case MONS_IMP:
case MONS_SHADOW_DRAGON:
case MONS_DEATH_DRAKE:
return 20;
case MONS_RED_DEVIL:
return 13;
case MONS_HELL_KNIGHT:
return 14;
case MONS_NECROMANCER:
case MONS_SIMULACRUM_LARGE:
case MONS_SIMULACRUM_SMALL:
return 12;
case MONS_ANCIENT_LICH:
return 6;