From 0650cb7c5d9f3538143bfdd1c4a75c27dc86e17c Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Tue, 22 Sep 2009 10:42:23 +0000 Subject: Add new unique Gastronok (slug wizard), via a patch by bookofjude and some 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 --- crawl-ref/source/dat/database/monspeak.txt | 91 ++++++++++++++++++ crawl-ref/source/dat/database/monspell.txt | 18 ++++ crawl-ref/source/dat/database/quotes.txt | 13 ++- crawl-ref/source/dat/descript/monsters.txt | 6 +- crawl-ref/source/dungeon.cc | 9 +- crawl-ref/source/effects.cc | 21 +++++ crawl-ref/source/enum.h | 2 + crawl-ref/source/makeitem.cc | 9 +- crawl-ref/source/mon-data.h | 35 ++++--- crawl-ref/source/mon-spll.h | 13 +++ crawl-ref/source/mon-util.cc | 18 +++- crawl-ref/source/mstuff2.cc | 102 +++++++++++++++++---- crawl-ref/source/rltiles/dc-mon.txt | 5 +- .../source/rltiles/dc-mon/unique/gastronok.png | Bin 0 -> 1055 bytes crawl-ref/source/tilepick.cc | 2 + 15 files changed, 302 insertions(+), 42 deletions(-) create mode 100644 crawl-ref/source/rltiles/dc-mon/unique/gastronok.png diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt index c7c96a6b86..d6285ef88c 100644 --- a/crawl-ref/source/dat/database/monspeak.txt +++ b/crawl-ref/source/dat/database/monspeak.txt @@ -1595,6 +1595,97 @@ Frederick w:1 VISUAL:@The_monster@ polishes @possessive@ monocle. +%%%% +############ 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. + +@The_monster@ makes a slurping sound, then looks surprised. +%%%% +# 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." %%%% ############ GRUM ### A war dog-breeding gnoll Grum diff --git a/crawl-ref/source/dat/database/monspell.txt b/crawl-ref/source/dat/database/monspell.txt index 75b9bc8934..7da3ef67d5 100644 --- a/crawl-ref/source/dat/database/monspell.txt +++ b/crawl-ref/source/dat/database/monspell.txt @@ -222,6 +222,14 @@ unseen priest cast You hear some strange, mumbled prayers to @God@. %%%% +gastronok cast targeted + +@The_monster@ looks at @target@ while chanting. + +@The_monster@ looks at @target@ and mumbles some strange words. + +@The_monster@ casts a spell at @target@. +%%%% wizard cast targeted @The_monster@ gestures at @target@ while chanting. @@ -230,6 +238,16 @@ wizard cast targeted @The_monster@ casts a spell at @target@. %%%% +gastronok cast + +@The_monster@'s eyestalks quiver as @pronoun@ mumbles some strange words. + +@The_monster@ chants a spell, wobbling all the while. + +@The_monster@ mumbles some strange words. + +@The_monster@ casts a spell. +%%%% wizard cast @The_monster@ gestures wildly while chanting. diff --git a/crawl-ref/source/dat/database/quotes.txt b/crawl-ref/source/dat/database/quotes.txt index f81db51f0f..c99dd35037 100644 --- a/crawl-ref/source/dat/database/quotes.txt +++ b/crawl-ref/source/dat/database/quotes.txt @@ -375,7 +375,6 @@ __cap-T_suffix A laidly Trold has dragged it there." -George Borrow, _Lavengro_ %%%% -%%%% Antaeus "That country was then ruled by Antaeus, son of Poseidon, who used to @@ -405,7 +404,7 @@ Dispater %%%% Dowan -"Skill and grace, the twin brother and sister, +"Skill and grace, the twin brother and sister, are dancing playfully on your finger tips." -Rabindranath Tagore, _Chitra, Act I, Scene IV_ %%%% @@ -612,6 +611,16 @@ giant frog And tell me I'm your own." -Ida Emerson and Joseph E. Howard, "Hello My Baby!" %%%% +giant snail + +"Snail, snail, slug-slow, + To me thy four horns show; + If thou dost not show me thy four, + I will throw thee out of the door, + For the crow in the gutter, + To eat for bread and butter." + -Silesian rhyme, _Notes and Queries, Number 69_, 1851. +%%%% gnoll "Then he descended softly and beckoned to Nuth. But the gnoles had diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt index 3fa5e74a12..8e1b566dd0 100644 --- a/crawl-ref/source/dat/descript/monsters.txt +++ b/crawl-ref/source/dat/descript/monsters.txt @@ -120,6 +120,10 @@ Frederick A svelte fighter-mage, wearing a gold-rimmed monocle. %%%% +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. +%%%% Geryon A huge, three-headed, winged arch-demon, guardian of the gates of Hell. @@ -1396,7 +1400,7 @@ A huge animated statue made entirely from toenail clippings. Some people just ha %%%% toadstool -A short-lived species of fungus typically found on or around decaying organic matter. +A short-lived species of fungus typically found on or around decaying organic matter. %%%% tormentor diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index f4f8a147bb..ae86128d50 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -3286,6 +3286,7 @@ static bool _make_room(int sx,int sy,int ex,int ey,int max_doors, int doorlevel) // Dissolution (Slime), Murray (Hell), or Tiamat (Zot). // NOTE: The Lernaean hydra should *never* be randomly generated. // The Royal jelly likewise is only placed via Slime end vault. +// Dowan is automatically placed together with Duvessa. static monster_type _choose_unique_by_depth(int step) { int ret; @@ -3303,13 +3304,13 @@ static monster_type _choose_unique_by_depth(int step) case 2: // depth <= 9 ret = random_choose(MONS_BLORK_THE_ORC, MONS_EDMUND, MONS_PSYCHE, MONS_EROLCHA, MONS_PRINCE_RIBBIT, MONS_GRUM, - -1); + MONS_GASTRONOK, -1); break; case 3: // depth <= 13 ret = random_choose(MONS_PSYCHE, MONS_EROLCHA, MONS_DONALD, MONS_URUG, - 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); break; case 4: // depth <= 16 ret = random_choose(MONS_URUG, MONS_MICHAEL, MONS_EUSTACHIO, MONS_SONJA, diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index 83a048b643..f8d9ba6a3f 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -764,6 +764,27 @@ void direct_effect(monsters *source, spell_type spell, damage_taken = 7 + random2avg(11, 2); break; + case SPELL_AIRSTRIKE: + if (def) + simple_monster_message(def, " is struck by the twisting air!"); + else + mpr("The air twists around and strikes you!"); + + 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; + case SPELL_BRAIN_FEED: if (!def) { diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index dfb355dc91..a4d91768b2 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -2084,6 +2084,7 @@ enum monster_type // (int) menv[].type MONS_MENKAURE, MONS_DUVESSA, MONS_DOWAN, + MONS_GASTRONOK, // Testing monsters MONS_TEST_SPAWNER, @@ -2305,6 +2306,7 @@ enum mon_spellbook_type MST_GLOORX_VLOQ, MST_JESSICA, MST_BERSERK_ESCAPE, // 165 + MST_GASTRONOK, MST_TEST_SPAWNER = 170, NUM_MSTYPES, diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc index 491851efd7..047dec0917 100644 --- a/crawl-ref/source/makeitem.cc +++ b/crawl-ref/source/makeitem.cc @@ -3106,7 +3106,8 @@ static void _give_scroll(monsters *mon, int level) static void _give_wand(monsters *mon, int level) { - if (mons_is_unique(mon->type) && one_chance_in(5)) + if (mons_is_unique(mon->type) && mon->type != MONS_GASTRONOK + && one_chance_in(5)) { const int idx = items(0, OBJ_WANDS, OBJ_RANDOM, true, level, 0); @@ -4322,6 +4323,12 @@ void give_armour(monsters *mon, int level) return; break; + case MONS_GASTRONOK: + item_race = MAKE_ITEM_NO_RACE; + item.base_type = OBJ_ARMOUR; + item.sub_type = ARM_WIZARD_HAT; + break; + case MONS_DOWAN: item_race = MAKE_ITEM_ELVEN; case MONS_DONALD: diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h index 16bd3fe492..1bfb0fc92f 100644 --- a/crawl-ref/source/mon-data.h +++ b/crawl-ref/source/mon-data.h @@ -824,17 +824,6 @@ static monsterentry mondata[] = { }, // slugs ('j') -{ - 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_GIANT_SLUG, 'j', GREEN, "giant slug", M_NO_SKELETON, @@ -857,6 +846,17 @@ static monsterentry mondata[] = { HT_AMPHIBIOUS_LAND, 4, DEFAULT_ENERGY, MONUSE_NOTHING, MONEAT_NOTHING, SIZE_LARGE }, +{ + 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 +}, + // killer bees 'k' { MONS_KILLER_BEE, 'k', YELLOW, "killer bee", @@ -4235,6 +4235,19 @@ static monsterentry mondata[] = { HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, MONEAT_NOTHING, SIZE_MEDIUM }, +{ + 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 +}, + + // human uniques ('@') { MONS_TERENCE, '@', LIGHTCYAN, "Terence", diff --git a/crawl-ref/source/mon-spll.h b/crawl-ref/source/mon-spll.h index cb44ce64c7..559d56b8da 100644 --- a/crawl-ref/source/mon-spll.h +++ b/crawl-ref/source/mon-spll.h @@ -1101,6 +1101,18 @@ } }, + { MST_GASTRONOK, + { + SPELL_AIRSTRIKE, + SPELL_SLOW, + SPELL_CANTRIP, + SPELL_MAGIC_DART, + SPELL_CANTRIP, + SPELL_SUMMON_SMALL_MAMMALS, + } + }, + + // demon lords { MST_GERYON, { SPELL_SUMMON_BEAST, @@ -1200,6 +1212,7 @@ } }, + // fake spell for monsters berserking when fleeing { MST_BERSERK_ESCAPE, { SPELL_NO_SPELL, diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index a4376baa45..50ef978332 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -3215,8 +3215,11 @@ static bool _ms_los_spell( spell_type monspell ) if (SPELL_KRAKEN_TENTACLES) return (false); - if (monspell == SPELL_SMITING || spell_typematch(monspell, SPTYP_SUMMONING)) + if (monspell == SPELL_SMITING || monspell == SPELL_AIRSTRIKE + || spell_typematch(monspell, SPTYP_SUMMONING)) + { return (true); + } return (false); } @@ -3227,8 +3230,11 @@ static bool _ms_ranged_spell( spell_type monspell, bool attack_only = false, { // Check for Smiting specially, so it's not filtered along // with the summon spells. - if (attack_only && monspell == SPELL_SMITING) + if (attack_only + && (monspell == SPELL_SMITING || monspell == SPELL_AIRSTRIKE)) + { return (true); + } // These spells are ranged, but aren't direct attack spells. if (_ms_los_spell(monspell)) @@ -3461,7 +3467,8 @@ bool mons_has_smite_attack(const monsters *monster) if (hspell_pass[i] == SPELL_SYMBOL_OF_TORMENT || hspell_pass[i] == SPELL_SMITING || hspell_pass[i] == SPELL_HELLFIRE_BURST - || hspell_pass[i] == SPELL_FIRE_STORM) + || hspell_pass[i] == SPELL_FIRE_STORM + || hspell_pass[i] == SPELL_AIRSTRIKE) { return (true); } @@ -5006,6 +5013,11 @@ bool monsters::pickup_armour(item_def &item, int near, bool force) eq = EQ_BODY_ARMOUR; } break; + case ARM_WIZARD_HAT: + // HACK. + if (this->type == MONS_GASTRONOK) + eq = EQ_BODY_ARMOUR; + break; default: eq = get_armour_slot(item); } diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc index b80a1d0c26..b34a50be9e 100644 --- a/crawl-ref/source/mstuff2.cc +++ b/crawl-ref/source/mstuff2.cc @@ -128,6 +128,13 @@ static bool _los_free_spell(spell_type spell_cast) || spell_cast == SPELL_AIRSTRIKE); } +// Returns true if a message referring to the player's legs makes sense. +static bool _legs_msg_applicable() +{ + return (you.species != SP_NAGA + && (you.species != SP_MERFOLK || !player_is_swimming())); +} + void mons_cast(monsters *monster, bolt &pbolt, spell_type spell_cast, bool do_noise) { @@ -510,6 +517,9 @@ void mons_cast(monsters *monster, bolt &pbolt, spell_type spell_cast, } return; + // TODO: Outsource the cantrip messages and allow specification of + // special cantrip spells per monster, like for speech, both as + // "self buffs" and "player enchantments". case SPELL_CANTRIP: { // Monster spell of uselessness, just prints a message. @@ -528,25 +538,78 @@ void mons_cast(monsters *monster, bolt &pbolt, spell_type spell_cast, const msg_channel_type channel = (friendly) ? MSGCH_FRIEND_ENCHANT : MSGCH_MONSTER_ENCHANT; - // 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 - mpr(RANDOM_ELEMENT(other_msgs)); + 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); + // "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(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); + } + } + } + else + { + // 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)); + } + } return; } case SPELL_BLINK_OTHER: @@ -988,7 +1051,7 @@ void setup_mons_cast(monsters *monster, bolt &pbolt, if (pbolt.target.origin()) pbolt.target = monster->target; - // set bolt type and range + // Set bolt type and range. if (_los_free_spell(spell_cast)) { pbolt.range = 0; @@ -998,6 +1061,7 @@ void setup_mons_cast(monsters *monster, bolt &pbolt, pbolt.type = DMNBM_BRAIN_FEED; return; case SPELL_SMITING: + case SPELL_AIRSTRIKE: pbolt.type = DMNBM_SMITING; return; default: diff --git a/crawl-ref/source/rltiles/dc-mon.txt b/crawl-ref/source/rltiles/dc-mon.txt index 4bf32dc47a..fb3a3bdf6c 100644 --- a/crawl-ref/source/rltiles/dc-mon.txt +++ b/crawl-ref/source/rltiles/dc-mon.txt @@ -44,9 +44,12 @@ gila_monster MONS_GILA_MONSTER komodo_dragon MONS_KOMODO_DRAGON ## Slugs ('j') -elephant_slug MONS_ELEPHANT_SLUG +%sdir dc-mon/unique +gastronok MONS_GASTRONOK +%sdir dc-mon/animals giant_slug MONS_GIANT_SLUG giant_snail MONS_GIANT_SNAIL +elephant_slug MONS_ELEPHANT_SLUG ## Rodents ('r') rat MONS_RAT diff --git a/crawl-ref/source/rltiles/dc-mon/unique/gastronok.png b/crawl-ref/source/rltiles/dc-mon/unique/gastronok.png new file mode 100644 index 0000000000..68e918e621 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-mon/unique/gastronok.png differ diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index c401f49fde..ff0f574ebd 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -944,6 +944,8 @@ int tileidx_monster_base(const monsters *mon, bool detected) return TILEP_MONS_ILSUIW; case MONS_PRINCE_RIBBIT: return TILEP_MONS_PRINCE_RIBBIT; + case MONS_GASTRONOK: + return TILEP_MONS_GASTRONOK; case MONS_NERGALLE: return TILEP_MONS_NERGALLE; case MONS_SAINT_ROKA: -- cgit v1.2.3-54-g00ecf