Still needs a tile.
Also, actually use the M_BATTY flag instead of hardcoding batty monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7734 c06c8d41-db1a-0410-9941-cceddc491573
T4FNOPMWYYJHJBTTY33PB43HTJPKEC46L62YERTWIX73HYZSELXQC 7X5YDPAU34LOFKEGJYE6GC7EOEDKGT3O6CUGZBYJI45L3FQOAKHQC JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC ZJMTMMZBCXHCPFHBTI2PL3Q4XTJQUWMMHCCG6JDIEDMJYCC33TFQC 5FZYO6GQ5DWJFMRHCFSLAI4NVGK2HJ6RE7BLHBVTNQJHN75K5LUQC QWZR7TCGSJAKK755AVEKFIMF5CX5GQLQC46TLI6URKZO2NJ3O26AC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC HAM54HXIO2245W6REO4RZDY2QMIH476AWWJSMYAMSYYNEBBJSHWAC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC K6S3LX4GPSVHOVIZVVGJDOMT6GXENOTXD6FM3ZHBN5GO4JA5E6YAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC KABMEHHPUS7RLDZ2A5ADC6GMYSBJ5OHD3WPUBDWBM22XWHB7X6WQC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC IIK2W5J4NQWD3BVXPJDUCTONSF2ENXPSZBWMZCBC25RCTNMKSK6AC 47NSOFQMBZCDIBHEAZSENFUGDSQCX3GJHFBUZ65ARDKCYIZ435LAC RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC HHW3CT6TLHVUGKIBE2KNYJTWGZMSFA6OVIUFOTZTIH6SGRA7DLDQC QDWDUURSNLMT6AXNNJ3DEQCWAKCAIHV6MP5F7QGIBGXOG2BI2NPQC 3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC ISSEUTHG7EH3QTFLS23GXFIOQXCI5HJPJMK6GWNFMC6NDRD2H34QC S6SJSGXKHMDFIDXI2DSFX4W5W4HV36XO5KRXCXGKJUGWCKGHUHKQC AY3CBJCAR4XMZODH5N4DVJXXJF3B5HUKICRGO7KCTCFACAYVGN4QC WMHFDQKUDCUGM3R245LLVZ5NNEZSCXFDSTNMVS2O5EFUHHO7HU3AC 3WHI3KM43ZCN4ITJLFQQBQBC4OJPRS7QTBPIQ6QBCUVKRSK476SAC 4VK7VHWRVRO66BRSGTBPSYJGGXLRF6AG6G74UDTPHTPXR7ZRNINQC HH3HFWVXABJ4IRMN22PPJCREMULZSN6DA7VYKOGECGMNUQTZ5QNQC LHYTGOCNDWX3CVD2HSQ6LAYC6NLKKI6ZKKNWZ5IQWP6YP5PQEVWQC JFDTUUUT6AKIGPBKGYFC7HZKGQUZOMG7EUWU4QYKSDVXXPQBBFHAC JLAGD2FAV3CWVO7PLXTHLT7MBI23TUSYLSNHFAWP5IB5UO77VKJAC BNRY5YIXLFE2TDNU2JQHWWXJQVWNSEWQ52DU7XUWIT5DZWKGBDDAC 4SWAT5KCKQV527NKELAXFQ5XA4Q5HONQXD4VBXMUZNPVPQKPCPNAC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC HOPP345EQLSF24XJYE3625VKU23PBKM5ZZKNCXBXUWYYORYPMDAAC PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC if (is_valid_item(you.inv[i])&& (you.inv[i].base_type == target_class|| target_class == OBJ_FOOD&& you.inv[i].base_type == OBJ_CORPSES))
if (you.inv[i].base_type == target_class|| target_class == OBJ_FOOD&& you.inv[i].base_type == OBJ_CORPSES)
switch (target_class){case OBJ_SCROLLS:mprf("%s you are carrying %s fire!",(num_dest > 1) ? "Some of the scrolls" : "A scroll",(num_dest > 1) ? "catch" : "catches" );break;
case OBJ_SCROLLS:mprf("%s you are carrying %s fire!",(num_dest > 1) ? "Some of the scrolls" : "A scroll",(num_dest > 1) ? "catch" : "catches" );break;
case OBJ_POTIONS:mprf("%s you are carrying %s and %s!",(num_dest > 1) ? "Some of the potions" : "A potion",(num_dest > 1) ? "freeze" : "freezes",(num_dest > 1) ? "shatter" : "shatters" );break;
case OBJ_POTIONS:mprf("%s you are carrying %s and %s!",(num_dest > 1) ? "Some of the potions" : "A potion",(num_dest > 1) ? "freeze" : "freezes",(num_dest > 1) ? "shatter" : "shatters" );break;
default:mprf("%s you are carrying %s destroyed!",(num_dest > 1) ? "Some items" : "An item",(num_dest > 1) ? "were" : "was" );break;}
default:mprf("%s you are carrying %s destroyed!",(num_dest > 1) ? "Some items" : "An item",(num_dest > 1) ? "were" : "was" );break;}
if (mg.cls == MONS_GIANT_BAT || mg.cls == MONS_UNSEEN_HORROR|| mg.cls == MONS_GIANT_BLOWFLY){menv[id].flags |= MF_BATTY;}
// do not remove, or seekmonster will crash on unknown mc request// it is also a good prototype for new monsters
// NOTE: Do not remove, or seekmonster will crash on unknown mc request!// It is also a good prototype for new monsters.
{MONS_HARPY, 'H', GREEN, "harpy",M_FLIES | M_WARM_BLOOD | M_BATTY,MR_NO_FLAGS,1000, 10, MONS_HARPY, MONS_HARPY, MH_NATURAL, -3,{ {AT_BITE, AF_PLAIN, 10}, {AT_CLAW, AF_PLAIN, 8},{AT_CLAW, AF_STEAL_FOOD, 5}, AT_NO_ATK },{ 7, 3, 5, 0 },2, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_BIG, S_SCREECH, I_ANIMAL,HT_LAND, 30, DEFAULT_ENERGY, MONUSE_NOTHING, SIZE_MEDIUM},
break;case AF_STEAL_FOOD:// Monsters don't carry food.if (defender->atype() != ACT_PLAYER)break;// Only use this attack sometimes.if (!one_chance_in(3))break;if (expose_player_to_element(BEAM_STEAL_FOOD, 10) && needs_message){mprf("%s steals some of your food!",atk_name(DESC_CAP_THE).c_str());}
MF_BATTY = 0x02, // flutters like a batMF_JUST_SUMMONED = 0x04, // monster skips next available actionMF_TAKING_STAIRS = 0x08, // is following player through stairsMF_INTERESTING = 0x10, // Player finds monster interestingMF_SEEN = 0x20, // Player has already seen monsterMF_DIVINE_PROTECTION = 0x40, // Monster has divine protection.
MF_JUST_SUMMONED = 0x02, // monster skips next available actionMF_TAKING_STAIRS = 0x04, // is following player through stairsMF_INTERESTING = 0x08, // Player finds monster interesting
MF_BANISHED = 0x100, // Monster that has been banished.MF_HARD_RESET = 0x200, // Summoned, should not drop gear on resetMF_WAS_NEUTRAL = 0x400, // mirror to CREATED_FRIENDLY for neutralsMF_ATT_CHANGE_ATTEMPT = 0x800, // Saw player and attitude changed (or
MF_BANISHED = 0x80, // Monster that has been banished.MF_HARD_RESET = 0x100, // Summoned, should not drop gear on resetMF_WAS_NEUTRAL = 0x200, // mirror to CREATED_FRIENDLY for neutralsMF_ATT_CHANGE_ATTEMPT = 0x400, // Saw player and attitude changed (or
MF_WAS_IN_VIEW = 0x1000, // Was in view during previous turnMF_BAND_MEMBER = 0x2000, // Created as a member of a bandMF_GOT_HALF_XP = 0x4000, // Player already got half xp value earlierMF_HONORARY_UNDEAD = 0x8000, // Consider this monster to have MH_UNDEAD
MF_WAS_IN_VIEW = 0x800, // Was in view during previous turn.MF_BAND_MEMBER = 0x1000, // Created as a member of a bandMF_GOT_HALF_XP = 0x2000, // Player already got half xp value earlierMF_HONORARY_UNDEAD = 0x4000, // Consider this monster to have MH_UNDEAD