tweaks to make his speech and casting work correctly. Turns up around the same time as Erolcha and Grum.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10774 c06c8d41-db1a-0410-9941-cceddc491573
Q6QWWEURCCP5CRAMRDPFPMM7B6FLLOQZZMI553QKG4KEYVMXARCAC
QQZOPIYCZZUGZ47DMLBVANROL2U67OJAV4JYFDH47CLG35DZF4QQC
LBQL2RAWT6GFWH7FQKOHYS7ZJFUQVO4UP36YK37VAEBJKM5JCDPQC
FBLTPG3A4ZEAVOJBHH4DCPUF4ZBLOTN5WWVZJADVCFTEKRHK5R6QC
N5EBTOIR3CFMRSZ3EXXQIVAJ7NGXYWS75AKHEKYBOFBZXKI3Q5BAC
DMAHEX6B3PA6ALJAOQUBF2OWOIKJXHYARWNRIN64252SECR23N4QC
MWC7UO2WOLGKBKIDEJZT27MG6N7UAZ2LHCVYXO55S4FKMFAVRZVQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
TXVL24IFH5SK7EJAN7JAUHAZJHJV7GB364UU65P745GUBWJS6Q6AC
3XRTONH32W5DNI2V2SGAHXN3EHOZQ26ZXMVYL5TRP6HLQN7P4HNAC
UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC
ZEFGFQHN6J2S6EIPX7EPDG22C5YXTI6DMKQHHRCLWN5MQC44KY3AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
5JS3QSE3EIXSBVI4DATH2EIFD7QN3POAFEUM7MK4NRMPH5JOPAAQC
OC4O235ESV5UO3LREKILJWWIXYFVTYGF2RXQEB5AWPJUKLF5T3YAC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
IQSZTU2RGJGJTGGX4MFIKQD2BX5MLFI6JWMHXPELHTWEOCXPTYLAC
ORZ4ZAHPUVIWAI6UODCKDS3TB4U4Y6GL3TYSNL3ALNBERG3K4UHQC
UQ4P6W76CTKR2MQNH3EWPS4QPDXE3YRLJRR6744ZJJ32XKYPXQQQC
JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC
ASH5CK6CPBKMLGGIRJ5GKTWMS5W3OBVHTL66RTYZIPFM6KFBYA3QC
PQYLCUBDA6P4UY7X3NLIUUKMJ5GTQTB5X64VNSQVMCFS6ONMXXOQC
2FHNLTLN3DVVD67N4QMAQ2LO7YY4GVZWXJAOIWGCCYYGIX7UHSVQC
3WHI3KM43ZCN4ITJLFQQBQBC4OJPRS7QTBPIQ6QBCUVKRSK476SAC
PC6K5OQF3BWPMWTIN5JXAKHTZF453JQOELDWRUOSBZXR256FTUYQC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
5ZV2CS7GWT4FJWA5WCIZ52T4L5OLNVWMNRCBWV3UCFPNPRK4ZQTAC
6XJP54KUBUB46BX7ANY5DHMN24Q7EHJSQKS7U2BHCAUQUKNJD7DQC
CCDQMJMMVC6MIZRZ6JSKKCMEDPUGEVVSFPJUOC5WP63J6SX35MXAC
LDVACFLGUCRX2JCTH6U7YQYLABQ7DEKAIVUID7PQB63UYNYVUY3QC
G7ZXJ4RUQB3U5NL2DEWXMTHRRDT7WTONWKTPOOGWFCE46ZWUVLOQC
DO6W27HYFNVFMX7FSGG4RCX5UW32ORCVYZBQYPCUD4VCHMA4LFFQC
BNE3OKRCLL3BVGH7RSLHXU7E6IVDNII3GUCUDM6W4T7UCU6XQ7HQC
I7QLYOTE6DLQZM7YWUWYLKHRJRB2A3STQ42ALSRGQICEWKD2QTEQC
Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC
KZWOHH536QBWAPWROR32EOXEK5LRY6I5VHVL7HHI7GOFKCMQTCSQC
4RFKVDJKTCRBZU6WPJ2E5OVI5IRPY3UTRPOBLC5QHY4CQJJTLZKQC
KVPP3CYPEFADQCL5Y56ELSUBA47SFNAJNCSVCSOK2GF67DHVMBCQC
774O5HM4CU5QYP4MPKKLHIVZQ5JLLZETYIDZZYBAPOJSO6ILC5RAC
C4KYBBVGJVUJ6PRLOUZXSNIHS2TEYQTBV5NSDGGPEXQHE6JUXMZQC
BMHUBADDGIOZRVN4P3O5QKIDUYD4RFWBS7MP5X6LZWAYHUBRVD2QC
// Messages about the monster influencing itself.
const char* buff_msgs[] = { " glows brightly for a moment.",
" looks stronger.",
" becomes somewhat translucent.",
"'s eyes start to glow." };
// Messages about the monster influencing you.
const char* other_msgs[] = {
"You feel troubled.",
"You feel a wave of unholy energy pass over you."
};
if (monster->type == MONS_GASTRONOK)
{
bool has_mon_foe = !invalid_monster_index(monster->foe);
std::string slugform = "";
if (buff_only || crawl_state.arena && !has_mon_foe
|| friendly && !has_mon_foe || coinflip())
{
slugform = getSpeakString("gastronok_self_buff");
if (!slugform.empty())
{
slugform = replace_all(slugform, "@The_monster@",
monster->name(DESC_CAP_THE));
mpr(slugform.c_str(), channel);
}
}
else if (!friendly && !has_mon_foe)
{
mons_cast_noise(monster, pbolt, spell_cast);
if (buff_only || crawl_state.arena || x_chance_in_y(2,3))
simple_monster_message(monster, RANDOM_ELEMENT(buff_msgs), channel);
else if (friendly)
simple_monster_message(monster, " shimmers for a moment.", channel);
// "Enchant" the player.
slugform = getSpeakString("gastronok_debuff");
if (!slugform.empty()
&& (slugform.find("legs") == std::string::npos
|| _legs_msg_applicable()))
{
mpr(slugform.c_str());
}
}
else
{
// "Enchant" another monster.
const monsters* foe
= dynamic_cast<const monsters*>(monster->get_foe());
slugform = getSpeakString("gastronok_other_buff");
if (!slugform.empty())
{
slugform = replace_all(slugform, "@The_monster@",
foe->name(DESC_CAP_THE));
mpr(slugform.c_str(), MSGCH_MONSTER_ENCHANT);
}
}
}
mpr(RANDOM_ELEMENT(other_msgs));
{
// Messages about the monster influencing itself.
const char* buff_msgs[] = { " glows brightly for a moment.",
" looks stronger.",
" becomes somewhat translucent.",
"'s eyes start to glow." };
// Messages about the monster influencing you.
const char* other_msgs[] = {
"You feel troubled.",
"You feel a wave of unholy energy pass over you."
};
if (buff_only || crawl_state.arena || x_chance_in_y(2,3))
{
simple_monster_message(monster, RANDOM_ELEMENT(buff_msgs),
channel);
}
else if (friendly)
{
simple_monster_message(monster, " shimmers for a moment.",
channel);
}
else // "Enchant" the player.
{
mons_cast_noise(monster, pbolt, spell_cast);
mpr(RANDOM_ELEMENT(other_msgs));
}
}
{
MONS_ELEPHANT_SLUG, 'j', LIGHTGREY, "elephant slug",
M_NO_SKELETON,
MR_VUL_POISON,
1500, 10, MONS_GIANT_SLUG, MONS_ELEPHANT_SLUG, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 40}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 20, 5, 3, 0 },
2, 1, MST_NO_SPELLS, CE_POISONOUS, Z_BIG, S_SILENT, I_INSECT,
HT_LAND, 4, DEFAULT_ENERGY, MONUSE_NOTHING, MONEAT_NOTHING, SIZE_BIG
},
{
MONS_ELEPHANT_SLUG, 'j', LIGHTGREY, "elephant slug",
M_NO_SKELETON,
MR_VUL_POISON,
1500, 10, MONS_GIANT_SLUG, MONS_ELEPHANT_SLUG, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 40}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 20, 5, 3, 0 },
2, 1, MST_NO_SPELLS, CE_POISONOUS, Z_BIG, S_SILENT, I_INSECT,
HT_LAND, 4, DEFAULT_ENERGY, MONUSE_NOTHING, MONEAT_NOTHING, SIZE_BIG
},
{
MONS_GASTRONOK, 'j', LIGHTRED, "Gastronok",
M_NO_SKELETON | M_UNIQUE | M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS
| M_SPEAKS,
MR_RES_FIRE | MR_RES_COLD,
700, 10, MONS_GIANT_SLUG, MONS_GIANT_SLUG, MH_NATURAL, -4,
{ {AT_BITE, AF_PLAIN, 15}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 10, 0, 0, 90 },
1, 2, MST_GASTRONOK, CE_POISONOUS, Z_NOZOMBIE, S_GURGLE, I_NORMAL,
HT_AMPHIBIOUS_LAND, 5, DEFAULT_ENERGY, MONUSE_STARTING_EQUIPMENT, MONEAT_FOOD, SIZE_LARGE
},
pbolt.name = "airstrike";
pbolt.flavour = BEAM_MISSILE;
pbolt.aux_source = "by the air";
damage_taken = 8 + random2(random2(4) + (random2(source->hit_dice*5) / 6)
+ (random2(source->hit_dice*5) / 7));
if (defender->flight_mode() != FL_NONE)
{
damage_taken *= 3;
damage_taken /= 2;
}
damage_taken -= defender->armour_class();
break;
MONS_MICHAEL, MONS_EUSTACHIO, MONS_SONJA,
MONS_JOSEPH, MONS_ERICA, MONS_JOSEPHINE, MONS_GRUM,
MONS_HAROLD, MONS_NORBERT, MONS_JOZEF, -1);
MONS_MICHAEL, MONS_EUSTACHIO, MONS_SONJA, MONS_GRUM,
MONS_JOSEPH, MONS_ERICA, MONS_JOSEPHINE, MONS_JOZEF,
MONS_HAROLD, MONS_NORBERT, MONS_GASTRONOK, -1);
%%%%
Gastronok
A voracious and surprisingly intelligent slug, devoted to eating everything and everyone he comes across, with a pointed hat perched rakishly atop his head. He acquired the hat the same way he acquired his intelligence and his knowledge of spells: by consuming their former owner, a powerful wizard.
%%%%
############ Gastronok ### A rather hungry wizard-slug
# Cantrip messages:
gastronok_self_buff
@_gastronok_self_buff_@
%%%%
gastronok_other_buff
@_gastronok_other_buff_@
%%%%
gastronok_debuff
@_gastronok_debuff_@
%%%%
_gastronok_self_buff_
@The_monster@ bubbles merrily.
@The_monster@ glows a brilliant shade of cerise.
@The_monster@ wobbles crazily.
@The_monster@'s eyestalks stretch out, then return to normal size.
%%%%
# When targeting other monsters.
_gastronok_other_buff_
@The_monster@ wobbles.
@The_monster@ slows momentarily.
# Slugform affecting the player.
_gastronok_debuff_
w:20
You feel sluggish.
You feel an sudden, passing aversion to salt.
Your skin takes on a slight green cast.
# Doesn't work for Naga and transformed Merfolk.
# There's a hack in mstuff2.cc to prevent it from being used in those cases.
Your legs wobble like jelly.
w:5
You feel a sudden urge to swivel your nonexistent eyestalks around.
%%%%
# And finally, his speech.
Gastronok
@_Gastronok_common_@
w:4
@_Gastronok_rare_@
%%%%
_Gastronok_common_
VISUAL:@The_monster@ sloshes about.
@The_monster@ gurgles, "I'll eat you, I will!"
@The_monster@ gurgles, "A snack! A snack!"
@The_monster@ gurgles.
@The_monster@ makes a strange noise.
%%%%
_Gastronok_rare_
VISUAL:@The_monster@'s mouth opens, radula flailing wildly.
VISUAL:@The_monster@ is buffeted by a sudden breeze.
VISUAL:@The_monster@'s eyestalks wobble, almost dislodging @possessive@ wizard hat.
@The_monster@ gurgles, "You're how I like my food. Fast!"
@The_monster@ gurgles, "Slow down, so I can eat you."
@The_monster@ gurgles, "Are you a wizard? Wizards taste nice..."
@The_monster@ gurgles, "Huuuuuuuuuuungry!"
@The_monster@ gurgles, "It's true, you are what you eat."
@The_monster@ gurgles, "I bet you'll be tasty."
%%%%