program bugs instead).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7696 c06c8d41-db1a-0410-9941-cceddc491573
LHYTGOCNDWX3CVD2HSQ6LAYC6NLKKI6ZKKNWZ5IQWP6YP5PQEVWQC
AIJ434SS5YQOCKY6GVSXCWPEPI373SRFTKFE75M5G2C7DHUYWJIAC
BZ44477ROG4ECZ5BIQYK3BKD635WUHSKHYTVKJPBGQUQUWVLZAWQC
EQNPQNYN6JCLT47M3ETBMMV5JOB26TQY6NY2ZNPPBTQDO7XTWD4AC
HFZQADL3R7ITWM3VPW5G3NCB2AHRMAMKYZOI3STW5LWUCTV4FFFQC
RE735MKKI332QV2TPH4UYQN5TKQK23AZF6GOFNLCWQHJFC5QREYAC
WFG3MHLJUHQEHV65SPAIOI74NIZTGM447T4WKWKF7CMUIUNRUQOAC
7G4KWTOOBRLHOZZGFGAXGTUCDF3FGSZOXVHUZZ3V2KVWYSFE7EKAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
3SQQ4MM6YO4I37CQ6GIBIX6BXAEVHNVNHPVMR3PPBBNO454D6XWQC
U4EZJ7TIJLEYKFYGH6T4MHHDTN3JTO4KGCI3BLZKDNVKV3TVHUUQC
3XRTONH32W5DNI2V2SGAHXN3EHOZQ26ZXMVYL5TRP6HLQN7P4HNAC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
WQSH2ITHKHQAONM55ME7JXLZYL6OQS5F477U66P2R5VHJVI2Q22QC
4SUUJM2DQUEWHDG3UKJUDZABLHFVF2CFUX5GVAWKT7BBBGR2ISTQC
YP2ADVIVFDLAU4NYFG7BTHV6BMH7VPKUYQ6WVQF3Z725L3DSX7HAC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
HBXWZNXAJ7LUX7FYUIHQYBTRMWVJC6CAQQL3NNZHK5ETLIFEZJ7QC
5FMXUX2ZFIF6NQZCS54W7ZOCVSH7XR6UIMQ5FW2UZLEN4EWP5PSAC
LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
C3OUSRCHDUOJ6ELVDX6YWMQQVXDJLNEXTXWCDDAYWTKNPFPNSONAC
3HGELZU7NELOQ635HZO6IJIYLBSNCJ5VPH46IE22KA3OSLEFK7AQC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
LJ7HIRLTL5KHP3DJP57KRDH3PHZIS37HNC4SLZGK2ZQI2WTQBOPAC
2TZT4GURBCNHSVOXO5ZMN7XEIO3K4GWJCDPVSYUCMVZ6UFDL4DIQC
D7SLVLRNCYCBDYYRANHDG3JYEF25CFCSUY5FMF5KXVD5D4UZSDDAC
CHO4U5JC3RNTLXVIDXXJYZMOBZJ4VXW2GVJWDOTBRKK3AJ36LDLQC
5DTIUKGTVV66QTZE2DFRBGGBCS57NVM4H6DRQRYEJNWJ2LYFRARQC
5JS3QSE3EIXSBVI4DATH2EIFD7QN3POAFEUM7MK4NRMPH5JOPAAQC
IBITKTCFECTUF6E6WMQVWXQT5Z52O5B4IZBWOLP5DWXGUHGC62AQC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
VSIPMW33QR6LF34ZLWDH5WAIM6JYBH6PODMNSRW7EHEXEDESJPQAC
TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC
3WHI3KM43ZCN4ITJLFQQBQBC4OJPRS7QTBPIQ6QBCUVKRSK476SAC
JFDTUUUT6AKIGPBKGYFC7HZKGQUZOMG7EUWU4QYKSDVXXPQBBFHAC
OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC
PWY4VZVHDLYL7UVNCCOW7BM7LYK2BOGTL23P75HXUJ33MHJPEJPQC
QOCFIEKMI5JXRCFCRZXHK3AGMRFYZODHAHEMV46XOOHXWEK3TTUQC
HEDTNFJ5PHLUAP2HO3G2L32PP5PYE43QPV4OMN2SMLS7KNJP2DWAC
O7OBYGSZTPWMK3EADTZWXQ6VAEMMFEK2I4MXTCMOQJKVJMLYEB5AC
WMHFDQKUDCUGM3R245LLVZ5NNEZSCXFDSTNMVS2O5EFUHHO7HU3AC
CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC
FWLLPRIZDBJVQ336TPOLYAFT6WYGAFC52OFIOTRN2YQPFZ3PQVRQC
SPWOUV6ZNHLBSAX455ACJDBEJYVFHGO4H76L4NPAE5DF6BEAK34QC
H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC
case MONS_RED_DEVIL:
return TILEP_MONS_RED_DEVIL;
case MONS_ETTIN:
return TILEP_MONS_ETTIN;
case MONS_CENTAUR_WARRIOR:
return TILEP_MONS_CENTAUR_WARRIOR + _bow_offset(mon);
case MONS_YAKTAUR:
return TILEP_MONS_YAKTAUR + _bow_offset(mon);
case MONS_YAKTAUR_CAPTAIN:
return TILEP_MONS_YAKTAUR_CAPTAIN + _bow_offset(mon);
// elves ('e')
case MONS_ELF:
return TILEP_MONS_ELF;
case MONS_DEEP_ELF_SOLDIER:
return TILEP_MONS_DEEP_ELF_SOLDIER;
case MONS_DEEP_ELF_FIGHTER:
return TILEP_MONS_DEEP_ELF_FIGHTER;
case MONS_DEEP_ELF_KNIGHT:
return TILEP_MONS_DEEP_ELF_KNIGHT;
case MONS_DEEP_ELF_MAGE:
return TILEP_MONS_DEEP_ELF_MAGE;
case MONS_DEEP_ELF_SUMMONER:
return TILEP_MONS_DEEP_ELF_SUMMONER;
case MONS_DEEP_ELF_CONJURER:
return TILEP_MONS_DEEP_ELF_CONJURER;
case MONS_DEEP_ELF_PRIEST:
return TILEP_MONS_DEEP_ELF_PRIEST;
case MONS_DEEP_ELF_HIGH_PRIEST:
return TILEP_MONS_DEEP_ELF_HIGH_PRIEST;
case MONS_DEEP_ELF_DEMONOLOGIST:
return TILEP_MONS_DEEP_ELF_DEMONOLOGIST;
case MONS_DEEP_ELF_ANNIHILATOR:
return TILEP_MONS_DEEP_ELF_ANNIHILATOR;
case MONS_DEEP_ELF_SORCERER:
return TILEP_MONS_DEEP_ELF_SORCERER;
case MONS_DEEP_ELF_DEATH_MAGE:
return TILEP_MONS_DEEP_ELF_DEATH_MAGE;
case MONS_DEEP_ELF_BLADEMASTER:
return TILEP_MONS_DEEP_ELF_BLADEMASTER;
case MONS_DEEP_ELF_MASTER_ARCHER:
return TILEP_MONS_DEEP_ELF_MASTER_ARCHER;
// fungi ('f')
case MONS_HOUND:
return TILEP_MONS_HOUND;
case MONS_IMP:
return TILEP_MONS_IMP;
case MONS_HOBGOBLIN:
return TILEP_MONS_HOBGOBLIN;
case MONS_GNOLL:
return TILEP_MONS_GNOLL;
case MONS_BOGGART:
return TILEP_MONS_BOGGART;
// hounds ('h')
case MONS_HOUND:
return TILEP_MONS_HOUND;
case MONS_WARG:
return TILEP_MONS_WARG;
case MONS_WOLF:
return TILEP_MONS_WOLF;
case MONS_WAR_DOG:
return TILEP_MONS_WAR_DOG;
case MONS_HOG:
return TILEP_MONS_HOG;
case MONS_HELL_HOUND:
return TILEP_MONS_HELL_HOUND;
case MONS_HELL_HOG:
return TILEP_MONS_HELL_HOG;
// slugs ('j')
case MONS_ELEPHANT_SLUG:
return TILEP_MONS_ELEPHANT_SLUG;
case MONS_GIANT_SLUG:
return TILEP_MONS_GIANT_SLUG;
case MONS_GIANT_SNAIL:
return TILEP_MONS_GIANT_SNAIL;
// killer bees ('k')
case MONS_KILLER_BEE_LARVA:
return TILEP_MONS_KILLER_BEE_LARVA;
case MONS_MANTICORE:
return TILEP_MONS_MANTICORE;
case MONS_BUMBLEBEE:
return TILEP_MONS_BUMBLEBEE;
// lizards ('l')
case MONS_GIANT_NEWT:
return TILEP_MONS_GIANT_NEWT;
case MONS_GIANT_GECKO:
return TILEP_MONS_GIANT_GECKO;
case MONS_GIANT_IGUANA:
return TILEP_MONS_GIANT_IGUANA;
case MONS_GIANT_LIZARD:
return TILEP_MONS_GIANT_LIZARD;
case MONS_GILA_MONSTER:
return TILEP_MONS_GILA_MONSTER;
case MONS_KOMODO_DRAGON:
return TILEP_MONS_KOMODO_DRAGON;
// drakes (also 'l', but dragon type)
case MONS_SWAMP_DRAKE:
return TILEP_MONS_SWAMP_DRAKE;
case MONS_FIREDRAKE:
return TILEP_MONS_FIREDRAKE;
case MONS_LINDWURM:
return TILEP_MONS_LINDWURM;
case MONS_DEATH_DRAKE:
return TILEP_MONS_DEATH_DRAKE;
// merfolk ('m')
case MONS_MERFOLK:
if (in_water)
return TILEP_MONS_MERFOLK_FIGHTER_WATER;
else
return TILEP_MONS_MERFOLK_FIGHTER;
case MONS_MERMAID:
if (in_water)
return TILEP_MONS_MERMAID_WATER;
else
return TILEP_MONS_MERMAID;
case MONS_SIREN:
if (in_water)
return TILEP_MONS_SIREN_WATER;
else
return TILEP_MONS_SIREN;
// rotting monsters ('n')
case MONS_ORC_WIZARD:
return TILEP_MONS_ORC_WIZARD;
case MONS_ORC_PRIEST:
return TILEP_MONS_ORC_PRIEST;
case MONS_ORC_WARRIOR:
return TILEP_MONS_ORC_WARRIOR;
case MONS_ORC_KNIGHT:
return TILEP_MONS_ORC_KNIGHT;
case MONS_ORC_WARLORD:
return TILEP_MONS_ORC_WARLORD;
case MONS_ORC_SORCERER:
return TILEP_MONS_ORC_SORCERER;
case MONS_ORC_HIGH_PRIEST:
return TILEP_MONS_ORC_HIGH_PRIEST;
// phantoms and ghosts ('p')
case MONS_QUASIT:
return TILEP_MONS_QUASIT;
case MONS_HUNGRY_GHOST:
return TILEP_MONS_HUNGRY_GHOST;
case MONS_FLAYED_GHOST:
return TILEP_MONS_FLAYED_GHOST;
case MONS_PLAYER_GHOST:
return TILEP_MONS_PLAYER_GHOST;
case MONS_INSUBSTANTIAL_WISP:
return TILEP_MONS_INSUBSTANTIAL_WISP;
// rodents ('r')
case MONS_QUOKKA:
return TILEP_MONS_QUOKKA;
case MONS_GREY_RAT:
return TILEP_MONS_GREY_RAT;
case MONS_GREEN_RAT:
return TILEP_MONS_GREEN_RAT;
case MONS_ORANGE_RAT:
return TILEP_MONS_ORANGE_RAT;
// spiders ('s')
case MONS_GIANT_MITE:
return TILEP_MONS_GIANT_MITE;
case MONS_GIANT_CENTIPEDE:
return TILEP_MONS_GIANT_CENTIPEDE;
case MONS_SPATIAL_VORTEX:
return TILEP_MONS_SPATIAL_VORTEX;
// elementals (different symbols)
case MONS_AIR_ELEMENTAL:
return TILEP_MONS_AIR_ELEMENTAL;
case MONS_EARTH_ELEMENTAL:
return TILEP_MONS_EARTH_ELEMENTAL;
case MONS_FIRE_ELEMENTAL:
return TILEP_MONS_FIRE_ELEMENTAL;
case MONS_WATER_ELEMENTAL:
return TILEP_MONS_WATER_ELEMENTAL;
// worms and larvae ('w')
case MONS_KILLER_BEE_LARVA:
return TILEP_MONS_KILLER_BEE_LARVA;
case MONS_ANT_LARVA:
return TILEP_MONS_ANT_LARVA;
case MONS_BRAIN_WORM:
return TILEP_MONS_BRAIN_WORM;
case MONS_SWAMP_WORM:
return TILEP_MONS_SWAMP_WORM;
case MONS_SPINY_WORM:
return TILEP_MONS_SPINY_WORM;
// small abominations ('x')
case MONS_UNSEEN_HORROR:
return TILEP_MONS_UNSEEN_HORROR;
case MONS_SIMULACRUM_SMALL:
return TILEP_MONS_SIMULACRUM_SMALL;
case MONS_SKELETON_SMALL:
return TILEP_MONS_SKELETON_SMALL;
case MONS_SKELETAL_WARRIOR:
return TILEP_MONS_SKELETAL_WARRIOR;
case MONS_FLYING_SKULL:
return TILEP_MONS_FLYING_SKULL;
case MONS_FLAMING_CORPSE:
return TILEP_MONS_FLAMING_CORPSE;
case MONS_CURSE_SKULL:
return TILEP_MONS_CURSE_SKULL;
case MONS_CURSE_TOE:
return TILEP_MONS_CURSE_TOE;
// angelic beings ('A')
case MONS_TWO_HEADED_OGRE:
return TILEP_MONS_TWO_HEADED_OGRE;
case MONS_FIEND:
return TILEP_MONS_FIEND;
case MONS_HYDRA:
// Number of heads
return TILEP_MONS_HYDRA + std::min((int)mon->number, 7) - 1;
case MONS_ICE_DRAGON:
return TILEP_MONS_ICE_DRAGON;
case MONS_STEAM_DRAGON:
return TILEP_MONS_STEAM_DRAGON;
case MONS_SWAMP_DRAGON:
return TILEP_MONS_SWAMP_DRAGON;
case MONS_MOTTLED_DRAGON:
return TILEP_MONS_MOTTLED_DRAGON;
case MONS_QUICKSILVER_DRAGON:
return TILEP_MONS_QUICKSILVER_DRAGON;
case MONS_IRON_DRAGON:
return TILEP_MONS_IRON_DRAGON;
case MONS_STORM_DRAGON:
return TILEP_MONS_STORM_DRAGON;
case MONS_GOLDEN_DRAGON:
return TILEP_MONS_GOLDEN_DRAGON;
case MONS_SHADOW_DRAGON:
return TILEP_MONS_SHADOW_DRAGON;
case MONS_SKELETAL_DRAGON:
return TILEP_MONS_SKELETAL_DRAGON;
case MONS_SERPENT_OF_HELL:
return TILEP_MONS_SERPENT_OF_HELL;
// efreet ('E')
case MONS_EFREET:
return TILEP_MONS_EFREET;
// frogs ('F')
case MONS_GIANT_FROG:
return TILEP_MONS_GIANT_FROG;
case MONS_GIANT_BROWN_FROG:
return TILEP_MONS_GIANT_BROWN_FROG;
case MONS_SPINY_FROG:
return TILEP_MONS_SPINY_FROG;
case MONS_BLINK_FROG:
return TILEP_MONS_BLINK_FROG;
// eyes and spores ('G')
case MONS_HOBGOBLIN:
return TILEP_MONS_HOBGOBLIN;
case MONS_GIANT_EYEBALL:
return TILEP_MONS_GIANT_EYEBALL;
case MONS_EYE_OF_DRAINING:
return TILEP_MONS_EYE_OF_DRAINING;
case MONS_GIANT_ORANGE_BRAIN:
return TILEP_MONS_GIANT_ORANGE_BRAIN;
case MONS_GREAT_ORB_OF_EYES:
return TILEP_MONS_GREAT_ORB_OF_EYES;
case MONS_SHINING_EYE:
return TILEP_MONS_SHINING_EYE;
case MONS_EYE_OF_DEVASTATION:
return TILEP_MONS_EYE_OF_DEVASTATION;
// half-breeds ('H')
case MONS_HIPPOGRIFF:
return TILEP_MONS_HIPPOGRIFF;
case MONS_MANTICORE:
return TILEP_MONS_MANTICORE;
case MONS_GRIFFON:
return TILEP_MONS_GRIFFON;
case MONS_SPHINX:
return TILEP_MONS_SPHINX;
// ice beast ('I')
case MONS_SLIME_CREATURE:
return TILEP_MONS_SLIME_CREATURE;
case MONS_PULSATING_LUMP:
return TILEP_MONS_PULSATING_LUMP;
case MONS_GIANT_AMOEBA:
return TILEP_MONS_GIANT_AMOEBA;
case MONS_BROWN_OOZE:
return TILEP_MONS_BROWN_OOZE;
case MONS_AZURE_JELLY:
return TILEP_MONS_AZURE_JELLY;
case MONS_DEATH_OOZE:
return TILEP_MONS_DEATH_OOZE;
case MONS_ACID_BLOB:
return TILEP_MONS_ACID_BLOB;
case MONS_ROYAL_JELLY:
return TILEP_MONS_ROYAL_JELLY;
// kobolds ('K')
case MONS_UNSEEN_HORROR:
return TILEP_MONS_UNSEEN_HORROR;
case MONS_ROCK_TROLL:
return TILEP_MONS_ROCK_TROLL;
case MONS_IRON_TROLL:
return TILEP_MONS_IRON_TROLL;
case MONS_DEEP_TROLL:
return TILEP_MONS_DEEP_TROLL;
// bears ('U')
case MONS_BEAR:
return TILEP_MONS_BEAR;
case MONS_GRIZZLY_BEAR:
return TILEP_MONS_GRIZZLY_BEAR;
case MONS_POLAR_BEAR:
return TILEP_MONS_POLAR_BEAR;
case MONS_BLACK_BEAR:
return TILEP_MONS_BLACK_BEAR;
// vampires ('V')
case MONS_ORC_WARRIOR:
return TILEP_MONS_ORC_WARRIOR;
case MONS_KOBOLD_DEMONOLOGIST:
return TILEP_MONS_KOBOLD_DEMONOLOGIST;
case MONS_ORC_WIZARD:
return TILEP_MONS_ORC_WIZARD;
case MONS_ORC_KNIGHT:
return TILEP_MONS_ORC_KNIGHT;
case MONS_WYVERN:
return TILEP_MONS_WYVERN;
case MONS_BIG_KOBOLD:
return TILEP_MONS_BIG_KOBOLD;
case MONS_GIANT_EYEBALL:
return TILEP_MONS_GIANT_EYEBALL;
case MONS_WIGHT:
return TILEP_MONS_WIGHT;
case MONS_OKLOB_PLANT:
return TILEP_MONS_OKLOB_PLANT;
case MONS_WOLF_SPIDER:
return TILEP_MONS_WOLF_SPIDER;
case MONS_TRAPDOOR_SPIDER:
return TILEP_MONS_TRAPDOOR_SPIDER;
case MONS_SHADOW:
return TILEP_MONS_SHADOW;
case MONS_HUNGRY_GHOST:
return TILEP_MONS_HUNGRY_GHOST;
case MONS_EYE_OF_DRAINING:
return TILEP_MONS_EYE_OF_DRAINING;
case MONS_BUTTERFLY:
return TILEP_MONS_BUTTERFLY + ((mon->colour)%7);
case MONS_WANDERING_MUSHROOM:
return TILEP_MONS_WANDERING_MUSHROOM;
case MONS_EFREET:
return TILEP_MONS_EFREET;
case MONS_BRAIN_WORM:
return TILEP_MONS_BRAIN_WORM;
case MONS_GIANT_ORANGE_BRAIN:
return TILEP_MONS_GIANT_ORANGE_BRAIN;
case MONS_BOULDER_BEETLE:
return TILEP_MONS_BOULDER_BEETLE;
case MONS_FLYING_SKULL:
return TILEP_MONS_FLYING_SKULL;
case MONS_HELL_HOUND:
return TILEP_MONS_HELL_HOUND;
case MONS_MINOTAUR:
return TILEP_MONS_MINOTAUR;
case MONS_ICE_DRAGON:
return TILEP_MONS_ICE_DRAGON;
case MONS_SLIME_CREATURE:
return TILEP_MONS_SLIME_CREATURE;
case MONS_FREEZING_WRAITH:
return TILEP_MONS_FREEZING_WRAITH;
case MONS_RAKSHASA_FAKE:
return TILEP_MONS_RAKSHASA_FAKE;
case MONS_GREAT_ORB_OF_EYES:
return TILEP_MONS_GREAT_ORB_OF_EYES;
case MONS_HELLION:
return TILEP_MONS_HELLION;
case MONS_ROTTING_DEVIL:
return TILEP_MONS_ROTTING_DEVIL;
case MONS_TORMENTOR:
return TILEP_MONS_TORMENTOR;
case MONS_REAPER:
return TILEP_MONS_REAPER;
case MONS_SOUL_EATER:
return TILEP_MONS_SOUL_EATER;
case MONS_HAIRY_DEVIL:
return TILEP_MONS_HAIRY_DEVIL;
case MONS_ICE_DEVIL:
return TILEP_MONS_ICE_DEVIL;
case MONS_BLUE_DEVIL:
return TILEP_MONS_BLUE_DEVIL;
case MONS_BEAST:
return TILEP_MONS_BEAST;
case MONS_IRON_DEVIL:
return TILEP_MONS_IRON_DEVIL;
case MONS_GLOWING_SHAPESHIFTER:
return TILEP_MONS_GLOWING_SHAPESHIFTER;
case MONS_SHAPESHIFTER:
return TILEP_MONS_SHAPESHIFTER;
case MONS_GIANT_MITE:
return TILEP_MONS_GIANT_MITE;
case MONS_STEAM_DRAGON:
return TILEP_MONS_STEAM_DRAGON;
case MONS_VERY_UGLY_THING:
return TILEP_MONS_VERY_UGLY_THING;
case MONS_ORC_SORCERER:
return TILEP_MONS_ORC_SORCERER;
case MONS_HIPPOGRIFF:
return TILEP_MONS_HIPPOGRIFF;
case MONS_GRIFFON:
return TILEP_MONS_GRIFFON;
case MONS_HYDRA:
// Number of heads
return TILEP_MONS_HYDRA + std::min((int)mon->number, 7) - 1;
case MONS_SKELETON_SMALL:
return TILEP_MONS_SKELETON_SMALL;
case MONS_SIMULACRUM_LARGE:
return TILEP_MONS_SIMULACRUM_LARGE;
// water monsters
case MONS_BIG_FISH:
return TILEP_MONS_BIG_FISH;
case MONS_GIANT_GOLDFISH:
return TILEP_MONS_GIANT_GOLDFISH;
case MONS_ELECTRICAL_EEL:
return TILEP_MONS_ELECTRICAL_EEL;
case MONS_JELLYFISH:
return TILEP_MONS_JELLYFISH;
// lava monsters
case MONS_LAVA_WORM:
return TILEP_MONS_LAVA_WORM;
case MONS_LAVA_FISH:
return TILEP_MONS_LAVA_FISH;
case MONS_LAVA_SNAKE:
return TILEP_MONS_LAVA_SNAKE;
case MONS_SALAMANDER:
return TILEP_MONS_SALAMANDER;
// monsters moving through rock
case MONS_ROCK_WORM:
return TILEP_MONS_ROCK_WORM;
// humans ('@')
case MONS_HUMAN:
return TILEP_MONS_HUMAN;
case MONS_ORC_PRIEST:
return TILEP_MONS_ORC_PRIEST;
case MONS_ORC_HIGH_PRIEST:
return TILEP_MONS_ORC_HIGH_PRIEST;
case MONS_HUMAN:
return TILEP_MONS_HUMAN;
case MONS_GNOLL:
return TILEP_MONS_GNOLL;
case MONS_CLAY_GOLEM:
return TILEP_MONS_CLAY_GOLEM;
case MONS_WOOD_GOLEM:
return TILEP_MONS_WOOD_GOLEM;
case MONS_STONE_GOLEM:
return TILEP_MONS_STONE_GOLEM;
case MONS_IRON_GOLEM:
return TILEP_MONS_IRON_GOLEM;
case MONS_CRYSTAL_GOLEM:
return TILEP_MONS_CRYSTAL_GOLEM;
case MONS_TOENAIL_GOLEM:
return TILEP_MONS_TOENAIL_GOLEM;
case MONS_MOTTLED_DRAGON:
return TILEP_MONS_MOTTLED_DRAGON;
case MONS_EARTH_ELEMENTAL:
return TILEP_MONS_EARTH_ELEMENTAL;
case MONS_FIRE_ELEMENTAL:
return TILEP_MONS_FIRE_ELEMENTAL;
case MONS_AIR_ELEMENTAL:
return TILEP_MONS_AIR_ELEMENTAL;
case MONS_ICE_FIEND:
return TILEP_MONS_ICE_FIEND;
case MONS_SHADOW_FIEND:
return TILEP_MONS_SHADOW_FIEND;
case MONS_BROWN_SNAKE:
return TILEP_MONS_BROWN_SNAKE;
case MONS_GIANT_LIZARD:
return TILEP_MONS_GIANT_LIZARD;
case MONS_SPECTRAL_WARRIOR:
return TILEP_MONS_SPECTRAL_WARRIOR;
case MONS_PULSATING_LUMP:
return TILEP_MONS_PULSATING_LUMP;
case MONS_STORM_DRAGON:
return TILEP_MONS_STORM_DRAGON;
case MONS_YAKTAUR:
return TILEP_MONS_YAKTAUR + _bow_offset(mon);
case MONS_DEATH_YAK:
return TILEP_MONS_DEATH_YAK;
case MONS_ROCK_TROLL:
return TILEP_MONS_ROCK_TROLL;
case MONS_STONE_GIANT:
return TILEP_MONS_STONE_GIANT;
case MONS_FLAYED_GHOST:
return TILEP_MONS_FLAYED_GHOST;
case MONS_FLAMING_CORPSE:
return TILEP_MONS_FLAMING_CORPSE;
case MONS_BUMBLEBEE:
return TILEP_MONS_BUMBLEBEE;
case MONS_REDBACK:
return TILEP_MONS_REDBACK;
case MONS_INSUBSTANTIAL_WISP:
return TILEP_MONS_INSUBSTANTIAL_WISP;
case MONS_VAPOUR:
return TILEP_MONS_VAPOUR;
case MONS_OGRE_MAGE:
return TILEP_MONS_OGRE_MAGE;
case MONS_SPINY_WORM:
return TILEP_MONS_SPINY_WORM;
case MONS_VAULT_GUARD:
return TILEP_MONS_VAULT_GUARD;
case MONS_SHAPESHIFTER:
return TILEP_MONS_SHAPESHIFTER;
case MONS_GLOWING_SHAPESHIFTER:
return TILEP_MONS_GLOWING_SHAPESHIFTER;
case MONS_KILLER_KLOWN:
return TILEP_MONS_KILLER_KLOWN;
// mimics
case MONS_GOLD_MIMIC:
case MONS_WEAPON_MIMIC:
case MONS_ARMOUR_MIMIC:
case MONS_SCROLL_MIMIC:
case MONS_POTION_MIMIC:
{
// Use item tile
item_def item;
get_mimic_item( mon, item );
return tileidx_item(item);
}
case MONS_TITAN:
return TILEP_MONS_TITAN;
case MONS_GOLDEN_DRAGON:
return TILEP_MONS_GOLDEN_DRAGON;
case MONS_ELF:
return TILEP_MONS_ELF;
case MONS_LINDWURM:
return TILEP_MONS_LINDWURM;
case MONS_ELEPHANT_SLUG:
return TILEP_MONS_ELEPHANT_SLUG;
case MONS_WAR_DOG:
return TILEP_MONS_WAR_DOG;
case MONS_GREY_RAT:
return TILEP_MONS_GREY_RAT;
case MONS_GREEN_RAT:
return TILEP_MONS_GREEN_RAT;
case MONS_ORANGE_RAT:
return TILEP_MONS_ORANGE_RAT;
case MONS_BLACK_SNAKE:
return TILEP_MONS_BLACK_SNAKE;
case MONS_SHEEP:
return TILEP_MONS_SHEEP;
case MONS_GHOUL:
return TILEP_MONS_GHOUL;
case MONS_HOG:
return TILEP_MONS_HOG;
case MONS_GIANT_MOSQUITO:
return TILEP_MONS_GIANT_MOSQUITO;
case MONS_GIANT_CENTIPEDE:
return TILEP_MONS_GIANT_CENTIPEDE;
case MONS_IRON_TROLL:
return TILEP_MONS_IRON_TROLL;
case MONS_NAGA:
return TILEP_MONS_NAGA;
case MONS_FIRE_GIANT:
return TILEP_MONS_FIRE_GIANT;
case MONS_FROST_GIANT:
return TILEP_MONS_FROST_GIANT;
case MONS_FIREDRAKE:
return TILEP_MONS_FIREDRAKE;
case MONS_SHADOW_DRAGON:
return TILEP_MONS_SHADOW_DRAGON;
case MONS_YELLOW_SNAKE:
return TILEP_MONS_YELLOW_SNAKE;
case MONS_GREY_SNAKE:
return TILEP_MONS_GREY_SNAKE;
case MONS_DEEP_TROLL:
return TILEP_MONS_DEEP_TROLL;
case MONS_GIANT_BLOWFLY:
return TILEP_MONS_GIANT_BLOWFLY;
case MONS_RED_WASP:
return TILEP_MONS_RED_WASP;
case MONS_SWAMP_DRAGON:
return TILEP_MONS_SWAMP_DRAGON;
case MONS_SWAMP_DRAKE:
return TILEP_MONS_SWAMP_DRAKE;
case MONS_SOLDIER_ANT:
return TILEP_MONS_SOLDIER_ANT;
case MONS_HILL_GIANT:
return TILEP_MONS_HILL_GIANT;
case MONS_QUEEN_ANT:
return TILEP_MONS_QUEEN_ANT;
case MONS_ANT_LARVA:
return TILEP_MONS_ANT_LARVA;
case MONS_GIANT_FROG:
return TILEP_MONS_GIANT_FROG;
case MONS_GIANT_BROWN_FROG:
return TILEP_MONS_GIANT_BROWN_FROG;
case MONS_SPINY_FROG:
return TILEP_MONS_SPINY_FROG;
case MONS_BLINK_FROG:
return TILEP_MONS_BLINK_FROG;
case MONS_GIANT_COCKROACH:
return TILEP_MONS_GIANT_COCKROACH;
case MONS_SMALL_SNAKE:
return TILEP_MONS_SMALL_SNAKE;
case MONS_SHUGGOTH:
return TILE_TODO;
case MONS_WOLF:
return TILEP_MONS_WOLF;
case MONS_WARG:
return TILEP_MONS_WARG;
case MONS_BEAR:
return TILEP_MONS_BEAR;
case MONS_GRIZZLY_BEAR:
return TILEP_MONS_GRIZZLY_BEAR;
case MONS_POLAR_BEAR:
return TILEP_MONS_POLAR_BEAR;
case MONS_BLACK_BEAR:
return TILEP_MONS_BLACK_BEAR;
case MONS_SIMULACRUM_SMALL:
return TILEP_MONS_SIMULACRUM_SMALL;
case MONS_SIMULACRUM_LARGE:
return TILEP_MONS_SIMULACRUM_LARGE;
// '5' demons
case MONS_IMP:
return TILEP_MONS_IMP;
case MONS_QUASIT:
return TILEP_MONS_QUASIT;
case MONS_SHADOW_IMP:
return TILEP_MONS_SHADOW_IMP;
// '4' demons
case MONS_RED_DEVIL:
return TILEP_MONS_RED_DEVIL;
case MONS_HAIRY_DEVIL:
return TILEP_MONS_HAIRY_DEVIL;
case MONS_ROTTING_DEVIL:
return TILEP_MONS_ROTTING_DEVIL;
case MONS_BEAST:
return TILEP_MONS_BEAST;
case MONS_SMOKE_DEMON:
return TILEP_MONS_SMOKE_DEMON;
// '3' demons
case MONS_HELLION:
return TILEP_MONS_HELLION;
case MONS_TORMENTOR:
return TILEP_MONS_TORMENTOR;
case MONS_BLUE_DEVIL:
return TILEP_MONS_BLUE_DEVIL;
case MONS_IRON_DEVIL:
return TILEP_MONS_IRON_DEVIL;
case MONS_DEMONIC_CRAWLER:
return TILEP_MONS_DEMONIC_CRAWLER;
case MONS_SHADOW_DEMON:
return TILEP_MONS_SHADOW_DEMON;
case MONS_CHAOS_SPAWN:
return TILEP_MONS_CHAOS_SPAWN;
// '2' demon
case MONS_SUN_DEMON:
return TILEP_MONS_SUN_DEMON;
case MONS_REAPER:
return TILEP_MONS_REAPER;
case MONS_SOUL_EATER:
return TILEP_MONS_SOUL_EATER;
case MONS_ICE_DEVIL:
return TILEP_MONS_ICE_DEVIL;
case MONS_LOROCYPROCA:
return TILEP_MONS_LOROCYPROCA;
// '1' demons
case MONS_FIEND:
return TILEP_MONS_FIEND;
case MONS_ICE_FIEND:
return TILEP_MONS_ICE_FIEND;
case MONS_SHADOW_FIEND:
return TILEP_MONS_SHADOW_FIEND;
case MONS_PIT_FIEND:
return TILEP_MONS_PIT_FIEND;
case MONS_DEMONIC_CRAWLER:
return TILEP_MONS_DEMONIC_CRAWLER;
case MONS_SUN_DEMON:
return TILEP_MONS_SUN_DEMON;
case MONS_SHADOW_IMP:
return TILEP_MONS_SHADOW_IMP;
case MONS_SHADOW_DEMON:
return TILEP_MONS_SHADOW_DEMON;
case MONS_LOROCYPROCA:
return TILEP_MONS_LOROCYPROCA;
case MONS_SHADOW_WRAITH:
return TILEP_MONS_SHADOW_WRAITH;
case MONS_GIANT_AMOEBA:
return TILEP_MONS_GIANT_AMOEBA;
case MONS_GIANT_SLUG:
return TILEP_MONS_GIANT_SLUG;
case MONS_GIANT_SNAIL:
return TILEP_MONS_GIANT_SNAIL;
case MONS_SPATIAL_VORTEX:
return TILEP_MONS_SPATIAL_VORTEX;
case MONS_PIT_FIEND:
return TILEP_MONS_PIT_FIEND;
case MONS_BORING_BEETLE:
return TILEP_MONS_BORING_BEETLE;
// non-living creatures
// golems ('8')
case MONS_CLAY_GOLEM:
return TILEP_MONS_CLAY_GOLEM;
case MONS_WOOD_GOLEM:
return TILEP_MONS_WOOD_GOLEM;
case MONS_IRON_GOLEM:
return TILEP_MONS_IRON_GOLEM;
case MONS_STONE_GOLEM:
return TILEP_MONS_STONE_GOLEM;
case MONS_CRYSTAL_GOLEM:
return TILEP_MONS_CRYSTAL_GOLEM;
case MONS_TOENAIL_GOLEM:
return TILEP_MONS_TOENAIL_GOLEM;
case MONS_ELECTRIC_GOLEM:
return TILEP_MONS_ELECTRIC_GOLEM;
// statues (also '8')
case MONS_ICE_STATUE:
return TILEP_ICE_STATUE;
case MONS_SILVER_STATUE:
return TILEP_SILVER_STATUE;
case MONS_ORANGE_STATUE:
return TILEP_ORANGE_CRYSTAL_STATUE;
// gargoyles ('9')
case MONS_PROGRAM_BUG:
return TILEP_MONS_PROGRAM_BUG;
case MONS_MNOLEG:
return TILEP_MONS_MNOLEG;
case MONS_LOM_LOBON:
return TILEP_MONS_LOM_LOBON;
case MONS_CEREBOV:
return TILEP_MONS_CEREBOV;
case MONS_GLOORX_VLOQ:
return TILEP_MONS_GLOORX_VLOQ;
case MONS_MOLLUSC_LORD:
return TILE_TODO;
case MONS_NAGA_MAGE:
return TILEP_MONS_NAGA_MAGE;
case MONS_NAGA_WARRIOR:
return TILEP_MONS_NAGA_WARRIOR;
case MONS_ORC_WARLORD:
return TILEP_MONS_ORC_WARLORD;
case MONS_DEEP_ELF_SOLDIER:
return TILEP_MONS_DEEP_ELF_SOLDIER;
case MONS_DEEP_ELF_FIGHTER:
return TILEP_MONS_DEEP_ELF_FIGHTER;
case MONS_DEEP_ELF_KNIGHT:
return TILEP_MONS_DEEP_ELF_KNIGHT;
case MONS_DEEP_ELF_MAGE:
return TILEP_MONS_DEEP_ELF_MAGE;
case MONS_DEEP_ELF_SUMMONER:
return TILEP_MONS_DEEP_ELF_SUMMONER;
case MONS_DEEP_ELF_CONJURER:
return TILEP_MONS_DEEP_ELF_CONJURER;
case MONS_DEEP_ELF_PRIEST:
return TILEP_MONS_DEEP_ELF_PRIEST;
case MONS_DEEP_ELF_HIGH_PRIEST:
return TILEP_MONS_DEEP_ELF_HIGH_PRIEST;
case MONS_DEEP_ELF_DEMONOLOGIST:
return TILEP_MONS_DEEP_ELF_DEMONOLOGIST;
case MONS_DEEP_ELF_ANNIHILATOR:
return TILEP_MONS_DEEP_ELF_ANNIHILATOR;
case MONS_DEEP_ELF_SORCERER:
return TILEP_MONS_DEEP_ELF_SORCERER;
case MONS_DEEP_ELF_DEATH_MAGE:
return TILEP_MONS_DEEP_ELF_DEATH_MAGE;
case MONS_BROWN_OOZE:
return TILEP_MONS_BROWN_OOZE;
case MONS_AZURE_JELLY:
return TILEP_MONS_AZURE_JELLY;
case MONS_DEATH_OOZE:
return TILEP_MONS_DEATH_OOZE;
case MONS_ACID_BLOB:
return TILEP_MONS_ACID_BLOB;
case MONS_ROYAL_JELLY:
return TILEP_MONS_ROYAL_JELLY;
// major demons ('&')
case MONS_PANDEMONIUM_DEMON:
return TILEP_MONS_PANDEMONIUM_DEMON;
// ball lightning / orb of fire ('*')
case MONS_BALL_LIGHTNING:
return TILEP_MONS_BALL_LIGHTNING;
case MONS_ORB_OF_FIRE:
return TILEP_MONS_ORB_OF_FIRE;
// other symbols
case MONS_VAPOUR:
return TILEP_MONS_VAPOUR;
case MONS_SHADOW:
return TILEP_MONS_SHADOW;
case MONS_DEATH_COB:
return TILEP_MONS_DEATH_COB;
// non-human uniques
case MONS_IJYB:
return TILEP_MONS_IJYB;
case MONS_URUG:
return TILEP_MONS_URUG;
case MONS_EROLCHA:
return TILEP_MONS_EROLCHA;
case MONS_SNORG:
return TILEP_MONS_SNORG;
case MONS_POLYPHEMUS:
return TILEP_MONS_POLYPHEMUS;
case MONS_ANTAEUS:
return TILEP_MONS_ANTAEUS;
case MONS_TIAMAT:
return TILEP_MONS_TIAMAT;
case MONS_XTAHUA:
return TILEP_MONS_XTAHUA;
case MONS_BORIS:
return TILEP_MONS_BORIS;
case MONS_MURRAY:
return TILEP_MONS_MURRAY;
// human uniques ('@')
case MONS_POLYPHEMUS:
return TILEP_MONS_POLYPHEMUS;
case MONS_BORIS:
return TILEP_MONS_BORIS;
// Draconians handled above
case MONS_MURRAY:
return TILEP_MONS_MURRAY;
case MONS_TIAMAT:
return TILEP_MONS_TIAMAT;
case MONS_DEEP_ELF_BLADEMASTER:
return TILEP_MONS_DEEP_ELF_BLADEMASTER;
case MONS_DEEP_ELF_MASTER_ARCHER:
return TILEP_MONS_DEEP_ELF_MASTER_ARCHER;
case MONS_ANCIENT_LICH:
return TILEP_MONS_ANCIENT_LICH;
case MONS_OOZE:
return TILEP_MONS_OOZE;
case MONS_VAULT_GUARD:
return TILEP_MONS_VAULT_GUARD;
case MONS_CURSE_SKULL:
return TILEP_MONS_CURSE_SKULL;
case MONS_VAMPIRE_KNIGHT:
return TILEP_MONS_VAMPIRE_KNIGHT;
case MONS_VAMPIRE_MAGE:
return TILEP_MONS_VAMPIRE_MAGE;
case MONS_SHINING_EYE:
return TILEP_MONS_SHINING_EYE;
case MONS_ORB_GUARDIAN:
return TILEP_MONS_ORB_GUARDIAN;
case MONS_DAEVA:
return TILEP_MONS_DAEVA;
case MONS_SPECTRAL_THING:
return TILEP_MONS_SPECTRAL_THING;
case MONS_GREATER_NAGA:
return TILEP_MONS_GREATER_NAGA;
case MONS_SKELETAL_DRAGON:
return TILEP_MONS_SKELETAL_DRAGON;
case MONS_TENTACLED_MONSTROSITY:
return TILEP_MONS_TENTACLED_MONSTROSITY;
case MONS_SPHINX:
return TILEP_MONS_SPHINX;
case MONS_ROTTING_HULK:
return TILEP_MONS_ROTTING_HULK;
case MONS_GUARDIAN_MUMMY:
return TILEP_MONS_GUARDIAN_MUMMY;
case MONS_GREATER_MUMMY:
return TILEP_MONS_GREATER_MUMMY;
case MONS_MUMMY_PRIEST:
return TILEP_MONS_MUMMY_PRIEST;
case MONS_CENTAUR_WARRIOR:
return TILEP_MONS_CENTAUR_WARRIOR + _bow_offset(mon);
case MONS_YAKTAUR_CAPTAIN:
return TILEP_MONS_YAKTAUR_CAPTAIN + _bow_offset(mon);
case MONS_KILLER_KLOWN:
return TILEP_MONS_KILLER_KLOWN;
case MONS_ELECTRIC_GOLEM:
return TILEP_MONS_ELECTRIC_GOLEM;
case MONS_BALL_LIGHTNING:
return TILEP_MONS_BALL_LIGHTNING;
case MONS_ORB_OF_FIRE:
return TILEP_MONS_ORB_OF_FIRE;
case MONS_QUOKKA:
return TILEP_MONS_QUOKKA;
case MONS_EYE_OF_DEVASTATION:
return TILEP_MONS_EYE_OF_DEVASTATION;
case MONS_MOTH_OF_WRATH:
return TILEP_MONS_MOTH_OF_WRATH;
case MONS_DEATH_COB:
return TILEP_MONS_DEATH_COB;
case MONS_CURSE_TOE:
return TILEP_MONS_CURSE_TOE;
case MONS_GOLD_MIMIC:
case MONS_WEAPON_MIMIC:
case MONS_ARMOUR_MIMIC:
case MONS_SCROLL_MIMIC:
case MONS_POTION_MIMIC:
{
// Use item tile
item_def item;
get_mimic_item( mon, item );
return tileidx_item(item);
case MONS_HELL_HOG:
return TILEP_MONS_HELL_HOG;
case MONS_SERPENT_OF_HELL:
return TILEP_MONS_SERPENT_OF_HELL;
case MONS_BOGGART:
return TILEP_MONS_BOGGART;
case MONS_QUICKSILVER_DRAGON:
return TILEP_MONS_QUICKSILVER_DRAGON;
case MONS_IRON_DRAGON:
return TILEP_MONS_IRON_DRAGON;
case MONS_SKELETAL_WARRIOR:
return TILEP_MONS_SKELETAL_WARRIOR;
case MONS_PLAYER_GHOST:
return TILEP_MONS_PLAYER_GHOST;
case MONS_PANDEMONIUM_DEMON:
return TILEP_MONS_PANDEMONIUM_DEMON;
case MONS_GIANT_NEWT:
return TILEP_MONS_GIANT_NEWT;
case MONS_GIANT_GECKO:
return TILEP_MONS_GIANT_GECKO;
case MONS_GIANT_IGUANA:
return TILEP_MONS_GIANT_IGUANA;
case MONS_GILA_MONSTER:
return TILEP_MONS_GILA_MONSTER;
case MONS_KOMODO_DRAGON:
return TILEP_MONS_KOMODO_DRAGON;
case MONS_LAVA_WORM:
return TILEP_MONS_LAVA_WORM;
case MONS_LAVA_FISH:
return TILEP_MONS_LAVA_FISH;
case MONS_LAVA_SNAKE:
return TILEP_MONS_LAVA_SNAKE;
case MONS_SALAMANDER:
return TILEP_MONS_SALAMANDER;
case MONS_BIG_FISH:
return TILEP_MONS_BIG_FISH;
case MONS_GIANT_GOLDFISH:
return TILEP_MONS_GIANT_GOLDFISH;
case MONS_ELECTRICAL_EEL:
return TILEP_MONS_ELECTRICAL_EEL;
case MONS_JELLYFISH:
return TILEP_MONS_JELLYFISH;
case MONS_WATER_ELEMENTAL:
return TILEP_MONS_WATER_ELEMENTAL;
case MONS_SWAMP_WORM:
return TILEP_MONS_SWAMP_WORM;
case MONS_ROCK_WORM:
return TILEP_MONS_ROCK_WORM;
case MONS_ORANGE_STATUE:
return TILEP_ORANGE_CRYSTAL_STATUE;
case MONS_SILVER_STATUE:
return TILEP_SILVER_STATUE;
case MONS_ICE_STATUE:
return TILEP_ICE_STATUE;
case MONS_DEATH_DRAKE:
return TILEP_MONS_DEATH_DRAKE;
case MONS_MERFOLK:
if (in_water)
return TILEP_MONS_MERFOLK_FIGHTER_WATER;
else
return TILEP_MONS_MERFOLK_FIGHTER;
case MONS_MERMAID:
if (in_water)
return TILEP_MONS_MERMAID_WATER;
else
return TILEP_MONS_MERMAID;
}
static bool _is_poly_power_unsuitable(
poly_power_type power,
int src_pow,
int tgt_pow,
int relax)
static bool _is_poly_power_unsuitable( poly_power_type power,
int src_pow, int tgt_pow, int relax )
}
return (false);
}
static int _count_water_neighbours(coord_def p)
{
int deep_water_count = 0;
for (adjacent_iterator ai(p); ai; ++ai)
if (grd(p) == DNGN_DEEP_WATER)
deep_water_count++;
return (deep_water_count);
}
static bool _find_siren_water_target(monsters *mon)
{
mpr("in _find_siren_water_target");
ASSERT(mon->type == MONS_SIREN);
if (mon->travel_target == MTRAV_SIREN && !one_chance_in(8))
return (true);
int water_count;
int best_water_count = 0;
coord_def best_target;
int best_num;
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;
const coord_def c(mon->pos() + coord_def(k*x, k*y));
if (!grid_is_water(grd(c)))
continue;
water_count = _count_water_neighbours(c);
if (water_count <= best_water_count)
continue;
if (water_count > best_water_count)
{
best_water_count = water_count;
best_target = c;
best_num = 1;
}
else // if (water_count == best_water_count)
{
best_num++;
if (one_chance_in(best_num))
best_target = c;
}
}
if (best_water_count == 0)
return (false);
monster_pathfind mp;
if (mp.init_pathfind(mon, best_target))
{
mon->travel_path = mp.calc_waypoints();
if (!mon->travel_path.empty())
{
mprf("Found a path to (%d, %d) with %d surrounding water squares",
best_target.x, best_target.y, best_water_count);
// Okay then, we found a path. Let's use it!
mon->target = mon->travel_path[0];
mon->travel_target = MTRAV_SIREN;
return (true);
}
// If the claimed undead is the player, it must be
// a non-vampire, or a bloodless vampire.
&& (foe != &you || you.is_undead != US_SEMI_UNDEAD ||
you.hunger_state == HS_STARVING))
// Demons, but not demonspawn - demonspawn will show
// up as demonic for purposes of things like holy
// wrath, but are still (usually) susceptible to
// torment and draining.
|| (holiness == MH_DEMONIC && foe != &you)
|| holiness == MH_NONLIVING || holiness == MH_PLANT);
// If the claimed undead is the player, it must be
// a non-vampire, or a bloodless vampire.
&& (foe != &you || you.is_undead != US_SEMI_UNDEAD
|| you.hunger_state == HS_STARVING))
// Demons, but not demonspawn - demonspawn will show
// up as demonic for purposes of things like holy
// wrath, but are still (usually) susceptible to
// torment and draining.
|| holiness == MH_DEMONIC && foe != &you
|| holiness == MH_NONLIVING || holiness == MH_PLANT);
if (mons_is_unique(mon_type) && mon_type != MONS_PLAYER_GHOST
|| mon_type == MONS_MERMAID)
if (mons_genus(mon_type) == MONS_MERMAID)
gender = GENDER_FEMALE;
else if (mons_is_unique(mon_type) && mon_type != MONS_PLAYER_GHOST)
const bool has_ranged_attack =
type == MONS_ELECTRICAL_EEL
|| type == MONS_LAVA_SNAKE
|| (type == MONS_MERMAID && you.species != SP_MERFOLK);
const bool has_ranged_attack = (type == MONS_ELECTRICAL_EEL
|| type == MONS_LAVA_SNAKE
|| mons_genus(type) == MONS_MERMAID
&& you.species != SP_MERFOLK);
{ 8, 2, 4, 0 },
{ 8, 2, 3, 0 },
4, 12, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_SHOUT, I_NORMAL,
HT_AMPHIBIOUS_WATER, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
{
MONS_SIREN, 'm', LIGHTCYAN, "siren",
M_SPELLCASTER | M_WARM_BLOOD | M_SPEAKS,
MR_RES_POISON | MR_RES_COLD,
500, 12, MONS_MERMAID, MONS_SIREN, MH_NATURAL, -7,
{ {AT_HIT, AF_PLAIN, 10}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 8, 2, 3, 0 },
MONS_SWAMP_WORM, 'w', BROWN, "swamp worm",
M_NO_FLAGS,
MR_NO_FLAGS,
0, 10, MONS_WORM, MONS_SWAMP_WORM, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 5, 5, 5, 0 },
3, 12, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, I_PLANT,
HT_WATER, 12, DEFAULT_ENERGY, MONUSE_NOTHING, SIZE_LARGE
},
{
},
{
MONS_FLAMING_CORPSE, 'z', LIGHTRED, "flaming corpse",
M_SENSE_INVIS | M_EVIL | M_GLOWS,
MR_RES_POISON | MR_VUL_COLD | mrd(MR_RES_FIRE, 3) | MR_RES_STICKY_FLAME,
0, 17, MONS_FLAMING_CORPSE, MONS_FLAMING_CORPSE, MH_UNDEAD, -4,
{ {AT_HIT, AF_NAPALM, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 8, 3, 5, 0 },
12, 13, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SCREAM, I_NORMAL,
HT_LAND, 12, DEFAULT_ENERGY, MONUSE_OPEN_DOORS, SIZE_MEDIUM
},
{
MONS_FLAMING_CORPSE, 'z', LIGHTRED, "flaming corpse",
M_SENSE_INVIS | M_EVIL | M_GLOWS,
MR_RES_POISON | MR_VUL_COLD | mrd(MR_RES_FIRE, 3) | MR_RES_STICKY_FLAME,
0, 17, MONS_FLAMING_CORPSE, MONS_FLAMING_CORPSE, MH_UNDEAD, -4,
{ {AT_HIT, AF_NAPALM, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 8, 3, 5, 0 },
12, 13, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SCREAM, I_NORMAL,
HT_LAND, 12, DEFAULT_ENERGY, MONUSE_OPEN_DOORS, SIZE_MEDIUM
},
{
MONS_SWAMP_WORM, 'w', BROWN, "swamp worm",
M_NO_FLAGS,
MR_NO_FLAGS,
0, 10, MONS_WORM, MONS_SWAMP_WORM, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 20}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 5, 5, 5, 0 },
3, 12, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, I_PLANT,
HT_WATER, 12, DEFAULT_ENERGY, MONUSE_NOTHING, SIZE_LARGE