From 0f1a52d7931cf9ee01a583b539f410183eafcd1b Mon Sep 17 00:00:00 2001 From: mumra Date: Fri, 21 Feb 2025 17:28:14 +0000 Subject: [PATCH] Balloon Yak: new Zot monster A yak-themed chaos construction found in the realm of Zot. On death it explodes with a wind blast and a spread of chaotic clouds (based on old plague shambler code) to pressure the player to move. Spawns in rather small packs or in random single bands; the clouds would get completely over the top in typical yak band sizes. For placeholder tiles, I've recoloured the plain yak tile into red, blue, yellow and green variants; I couldn't decide which was the best balloon colour so why not use all of them (I went with red in console as it was available on "Y"). --- crawl-ref/source/dat/database/shout.txt | 8 ++++++ crawl-ref/source/dat/descript/monsters.txt | 6 ++++ crawl-ref/source/dat/descript/quotes.txt | 8 ++++++ crawl-ref/source/dat/mons/balloon-yak.yaml | 19 +++++++++++++ crawl-ref/source/melee-attack.cc | 5 ++++ crawl-ref/source/mgen-enum.h | 1 + crawl-ref/source/mon-death.cc | 26 ++++++++++++++++++ crawl-ref/source/mon-enum.h | 1 + crawl-ref/source/mon-pick-data.h | 1 + crawl-ref/source/mon-place.cc | 6 ++++ crawl-ref/source/mon-util.cc | 5 +++- crawl-ref/source/monster-type.h | 4 +++ crawl-ref/source/monster.cc | 3 +- crawl-ref/source/rltiles/dc-mon.txt | 4 +++ .../rltiles/mon/animals/balloon_yak1.png | Bin 0 -> 1760 bytes .../rltiles/mon/animals/balloon_yak2.png | Bin 0 -> 1841 bytes .../rltiles/mon/animals/balloon_yak3.png | Bin 0 -> 1835 bytes .../rltiles/mon/animals/balloon_yak4.png | Bin 0 -> 1823 bytes crawl-ref/source/shout.cc | 1 + 19 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 crawl-ref/source/dat/mons/balloon-yak.yaml create mode 100644 crawl-ref/source/rltiles/mon/animals/balloon_yak1.png create mode 100644 crawl-ref/source/rltiles/mon/animals/balloon_yak2.png create mode 100644 crawl-ref/source/rltiles/mon/animals/balloon_yak3.png create mode 100644 crawl-ref/source/rltiles/mon/animals/balloon_yak4.png diff --git a/crawl-ref/source/dat/database/shout.txt b/crawl-ref/source/dat/database/shout.txt index a4c90280531..4ee53f4ade1 100644 --- a/crawl-ref/source/dat/database/shout.txt +++ b/crawl-ref/source/dat/database/shout.txt @@ -222,6 +222,14 @@ __SQUEAK seen SOUND:@The_monster@ squeaks loudly. %%%% +__RASPBERRY unseen + +SOUND:You hear a loud raspberry. +%%%% +__RASPBERRY seen + +SOUND:@The_monster@ blows a very loud wet raspberry. +%%%% ############################################ # End of default shouts ############################################ diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt index 021086b90e1..0314847c435 100644 --- a/crawl-ref/source/dat/descript/monsters.txt +++ b/crawl-ref/source/dat/descript/monsters.txt @@ -737,6 +737,12 @@ A fast, gas-filled floating spore released by a ballistomycete when it senses a threat. After seeking out its foe, the spore will explode, damaging anything caught in the blast and further confusing living creatures. %%%% +balloon yak + +A cartoonish caricature of a living beast, twisted together by some insane street +performer and given life with a breath of chaos. On death will create a rapid +expulsion of air followed by a slower release of clouds of chaos. +%%%% balrug A huge and very powerful demon, wreathed in fire and shadows. diff --git a/crawl-ref/source/dat/descript/quotes.txt b/crawl-ref/source/dat/descript/quotes.txt index f80b9279ffb..c0295db6945 100644 --- a/crawl-ref/source/dat/descript/quotes.txt +++ b/crawl-ref/source/dat/descript/quotes.txt @@ -2689,6 +2689,14 @@ arcanist %%%% +balloon yak + +“I suppose even a simple slogan can be twisted into whatever shape we want, + like a balloon animal – we can even make it loop back around on itself, + becoming a noose. In the end, the measure of who we are can be seen in + the shapes of our balloon animals.” + -Neal Shusterman +%%%% basilisk “Be thou like the imperial Basilisk diff --git a/crawl-ref/source/dat/mons/balloon-yak.yaml b/crawl-ref/source/dat/mons/balloon-yak.yaml new file mode 100644 index 00000000000..ea744f173a6 --- /dev/null +++ b/crawl-ref/source/dat/mons/balloon-yak.yaml @@ -0,0 +1,19 @@ +name: "balloon yak" +glyph: {char: "Y", colour: red} +flags: [flies, herd, unbreathing, no_skeleton, no_zombie, no_gen_derived] +xp_mult: 15 +genus: yak +will: 100 +attacks: + - {type: gore, damage: 42} +hd: 18 +hp_10x: 1200 +ac: 12 +ev: 4 +spells: balloon_yak +has_corpse: false +shout: raspberry +intelligence: animal +size: large +shape: quadruped +tile_variance: mod diff --git a/crawl-ref/source/melee-attack.cc b/crawl-ref/source/melee-attack.cc index af63a021c61..6ceb491a9d8 100644 --- a/crawl-ref/source/melee-attack.cc +++ b/crawl-ref/source/melee-attack.cc @@ -2279,6 +2279,11 @@ void melee_attack::set_attack_verb(int damage) attack_verb = "spit"; verb_degree = "like the proverbial pig"; } + else if (defender->type == MONS_BALLOON_YAK) + { + attack_verb = "pop"; + verb_degree = "like a balloon"; + } else if (defender_genus == MONS_CRAB && Options.has_fake_lang(flang_t::grunt)) { diff --git a/crawl-ref/source/mgen-enum.h b/crawl-ref/source/mgen-enum.h index 4643ea6653b..a20f0097afd 100644 --- a/crawl-ref/source/mgen-enum.h +++ b/crawl-ref/source/mgen-enum.h @@ -137,6 +137,7 @@ enum band_type BAND_SLIMES_AND_MASTER, BAND_ELEPHANTS_AND_MASTER, BAND_SPHINXES, + BAND_BALLOON_YAKS, NUM_BANDS // always last }; diff --git a/crawl-ref/source/mon-death.cc b/crawl-ref/source/mon-death.cc index 8a84803875a..3bac3ab8cda 100644 --- a/crawl-ref/source/mon-death.cc +++ b/crawl-ref/source/mon-death.cc @@ -27,6 +27,7 @@ #include "dgn-overview.h" #include "english.h" #include "env.h" +#include "evoke.h" // Windblast death effect #include "fineff.h" #include "god-abil.h" #include "god-blessing.h" @@ -3112,6 +3113,31 @@ item_def* monster_die(monster& mons, killer_type killer, treant_release_fauna(mons); else if (mons.type == MONS_PHARAOH_ANT && real_death) _pharaoh_ant_bind_souls(&mons); + else if (mons.type == MONS_BALLOON_YAK && real_death && !mons.pacified()) + { + if (you.can_see(mons)) + { + mprf(MSGCH_WARN, "The %s ruptures with a %s and chaos begins " + "spilling from the puncture!", mons.name(DESC_PLAIN).c_str(), + silenced(you.pos()) ? "rush of air" : "loud pop"); + } + else if (!silenced(you.pos())) + mprf(MSGCH_WARN, "You hear a loud pop and a rush of air!"); + + // Wind blast their foe or otherwise you. The real spell power + // would knock you well out of reach of the clouds, 50 is about right. + auto foe = mons.get_foe(); + wind_blast(&mons, 50, foe ? foe->pos() : you.pos()); + + map_cloud_spreader_marker *marker = + new map_cloud_spreader_marker(mons.pos(), CLOUD_CHAOS, 8, + 40 + random2(25), LOS_DEFAULT_RANGE, + 8, &mons); + // Start the cloud at radius 1, regardless of the speed of the killing blow + marker->speed_increment -= you.time_taken; + env.markers.add(marker); + env.markers.clear_need_activate(); + } else if (!mons.is_summoned() && mummy_curse_power(mons.type) > 0) { // TODO: set attacker better? (Player attacker is handled by checking diff --git a/crawl-ref/source/mon-enum.h b/crawl-ref/source/mon-enum.h index 549e9f73457..cff95578a65 100644 --- a/crawl-ref/source/mon-enum.h +++ b/crawl-ref/source/mon-enum.h @@ -293,6 +293,7 @@ enum shout_type S_LOUD_ROAR, // dragons, &c. loud! S_RUSTLE, // books S_SQUEAK, // rats and similar + S_RASPBERRY, // balloon yaks NUM_SHOUTS, // Loudness setting for shouts that are only defined in dat/shout.txt diff --git a/crawl-ref/source/mon-pick-data.h b/crawl-ref/source/mon-pick-data.h index fd1f024f7a2..fa298e4137c 100644 --- a/crawl-ref/source/mon-pick-data.h +++ b/crawl-ref/source/mon-pick-data.h @@ -779,6 +779,7 @@ POP_DEPTHS, { 1, 5, 150, RISE, MONS_CURSE_TOE }, { 1, 5, 515, FLAT, MONS_TENTACLED_MONSTROSITY }, { 1, 5, 89, FALL, MONS_ELECTRIC_GOLEM }, + { 1, 5, 42, FLAT, MONS_BALLOON_YAK }, { 1, 5, 42, FLAT, MONS_ORB_OF_FIRE }, }, #if TAG_MAJOR_VERSION == 34 diff --git a/crawl-ref/source/mon-place.cc b/crawl-ref/source/mon-place.cc index a6dad1ec757..d6bc32538ba 100644 --- a/crawl-ref/source/mon-place.cc +++ b/crawl-ref/source/mon-place.cc @@ -1783,6 +1783,11 @@ static const map bands_by_leader = { { MONS_YAKTAUR_CAPTAIN, { {2}, {{ BAND_YAKTAURS, {2, 5}, true }}}}, { MONS_YAKTAUR, { {2}, {{ BAND_YAKTAURS, {2, 5} }}}}, { MONS_DEATH_YAK, { {}, {{ BAND_DEATH_YAKS, {2, 6} }}}}, + { MONS_BALLOON_YAK, { {2, 0, []() { + return branch_has_monsters(you.where_are_you) + || !vault_mon_types.empty(); + }}, {{ BAND_BALLOON_YAKS, {1, 2} }, + { BAND_RANDOM_SINGLE, {1, 3} }}}}, { MONS_OGRE_MAGE, { {}, {{ BAND_OGRE_MAGE, {4, 8} }}}}, { MONS_LODUL, { {}, {{ BAND_OGRES, {6, 10}, true }}}}, { MONS_BALRUG, { {0, 0, []() { return !player_in_hell(); }}, @@ -2205,6 +2210,7 @@ static const map> band_membership = { { BAND_ALLIGATOR, {{{MONS_ALLIGATOR, 1}}}}, { BAND_JELLYFISH, {{{MONS_FORMLESS_JELLYFISH, 1}}}}, { BAND_DEATH_YAKS, {{{MONS_DEATH_YAK, 1}}}}, + { BAND_BALLOON_YAKS, {{{MONS_BALLOON_YAK, 1}}}}, { BAND_GREEN_RATS, {{{MONS_RIVER_RAT, 1}}}}, { BAND_BRAIN_WORMS, {{{MONS_BRAIN_WORM, 1}}}}, { BAND_BLINK_FROGS, {{{MONS_BLINK_FROG, 1}}}}, diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index b5e66159d72..7a9eabcda82 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -1324,6 +1324,7 @@ int get_shout_noise_level(const shout_type shout) case S_SOFT: return 6; case S_LOUD: + case S_RASPBERRY: return 10; case S_LOUD_ROAR: case S_VERY_LOUD: @@ -1354,11 +1355,12 @@ static bool _shout_fits_monster(monster_type mc, int shout) switch (shout) { - // Bees, books, cherubs and two-headed ogres never fit. + // Bees, books, cherubs, two-headed ogres and balloon yaks never fit. case S_SHOUT2: case S_BUZZ: case S_CHERUB: case S_RUSTLE: + case S_RASPBERRY: // The beast cannot speak. case S_DEMON_TAUNT: return false; @@ -4835,6 +4837,7 @@ string do_mon_str_replacements(const string &in_msg, const monster& mons, "roars", "rustles", // dubious "squeaks", + "wetly raspberries", // balloon yak "buggily says", // NUM_SHOUTS "breathes", // S_VERY_SOFT "whispers", // S_SOFT diff --git a/crawl-ref/source/monster-type.h b/crawl-ref/source/monster-type.h index e3fd5f33be4..3624dec65cf 100644 --- a/crawl-ref/source/monster-type.h +++ b/crawl-ref/source/monster-type.h @@ -95,6 +95,9 @@ enum monster_type // env.mons[].type #endif MONS_YAK, MONS_DEATH_YAK, +#if TAG_MAJOR_VERSION > 34 + MONS_BALLOON_YAK, +#endif MONS_CATOBLEPAS, MONS_ELEPHANT, MONS_DIRE_ELEPHANT, @@ -1330,6 +1333,7 @@ enum monster_type // env.mons[].type MONS_POLTERGEIST, // player species dummy MONS_VAMPIRE_BLOODPRINCE, MONS_REVENANT, // player species dummy + MONS_BALLOON_YAK, #endif NUM_MONSTERS, // used for polymorph diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index cee49f7e390..edfa8f3209b 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -2381,7 +2381,8 @@ string monster::foot_name(bool plural, bool *can_plural) const str = "paw"; else if (ch == 'l' || ch == 'D') str = "talon"; - else if (type == MONS_YAK || type == MONS_DEATH_YAK) + else if (type == MONS_YAK || type == MONS_DEATH_YAK + || type == MONS_BALLOON_YAK) str = "hoof"; else if (ch == 'H') { diff --git a/crawl-ref/source/rltiles/dc-mon.txt b/crawl-ref/source/rltiles/dc-mon.txt index 508ee5d7f3d..897a20fc96b 100644 --- a/crawl-ref/source/rltiles/dc-mon.txt +++ b/crawl-ref/source/rltiles/dc-mon.txt @@ -306,6 +306,10 @@ polar_bear MONS_POLAR_BEAR dream_sheep MONS_DREAM_SHEEP yak MONS_YAK death_yak MONS_DEATH_YAK +balloon_yak1 MONS_BALLOON_YAK +balloon_yak2 +balloon_yak3 +balloon_yak4 catoblepas MONS_CATOBLEPAS elephant MONS_ELEPHANT elephant_dire MONS_DIRE_ELEPHANT diff --git a/crawl-ref/source/rltiles/mon/animals/balloon_yak1.png b/crawl-ref/source/rltiles/mon/animals/balloon_yak1.png new file mode 100644 index 0000000000000000000000000000000000000000..e57c4c760fbb2069978b37b7d179351200e0d5ac GIT binary patch literal 1760 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 tueziZ96nRBsbwI{c; literal 0 HcmV?d00001 diff --git a/crawl-ref/source/rltiles/mon/animals/balloon_yak3.png b/crawl-ref/source/rltiles/mon/animals/balloon_yak3.png new file mode 100644 index 0000000000000000000000000000000000000000..df6cf645e5356b9a66214bfc6a51b78d29865ae6 GIT binary patch literal 1835 zcmbVNd05kS7>=OG5H?XRkFih?becBl-AdI;sTAa};OHECFl|$)(59w=mO3V&Q&E_p z;ymz}7sYvPOb2)XqIOQeDI(qnPNxIuc+d$tbSZ+{A3pxEJV|~>-uL~E-}gPqkBgb* z;WpL{000kJghWn_pyP3Mq25M|O`ARq3^fZW0Ubu7pjnr$Hww)nTEDK4nme``G_W5+rio~; zol-={fnhj-fjl}BQo%3`@&t55$>pFtfs#E1WWr1)1LiUi7Q|!a2P(+n@1}UOZ&c2R9XNZn|Bdj+L{@)(p;3`eE>r*a0jsB&~n-?Rd?c+*Unp6VciY8C5GTszf)Q8I}*!F=sh z;?&dxvDb0@X5p38ot~T5afj4QR${91zt#`gAHQqlxDn&Nk0_ppMlBjGzp6+NSm75? zh>aENrUX^i71$d(vg{4&2ilV}>FyQyv}dI+HcqW5F*bc2Z^>-9IMTZJmv2jaUZ#B+ z?BCPP0`Au$WfDzzFfFcezqc=;f7L2)*349ITB=`cYWylTCA~-bqA&1C(h~co9K5tS zd%4!b{J1S*j@wdv-$qV;@X(MZvxoP+q{)Zt$|qdE{$X#{7piEl^>tyl&u{U6(Yte5 z5HbDc0S})Aeh(pqJ@}sW_iA~R=-1d-04l3>4mp1$?b^~LedzYS+K>fT%KUHK(#Lv= zJi3P7P+#Tp>VZ1%p1#j2?iO~&uUUr8NAgdfhF^7kKKtZopy%%@;8Zm5>iOyP6k9qf zZkxLnIz!k?LTa}LB}D8BDB$OK)&{t_1myO1Up7CwwIuEXFZXO2+a1h#dF^r0lRhnE zo#EtD=JaP_Mn%*&&hV-^O>OIj9zWYN`k3N9Mp6M}>mo{w$HQNnc=!& z3nOvKZm&FL$Ac~0d~1*h8hVEG3^L?jKv0+r4X^&6&#EHZ1cojV? zsl98-X&zCOGI@VqDIv0VB!}X;RnI#6GP9F;_3|KEtxQ^%p>o^P34JK&Xzg{DMZ|4& zQM^i>pz+w9(BK~_b87e6P$P&Lb*Xi2T9tC&BTHV|jg98SWskddFdIBac5kv)KkHii zo2Y1!^Y#|KiBoCM>TA1rVb$>NYpNvM#f+r-sP7_^PoId1J@YbY@pE|P555fxpDysI zEpC=vinLW12k$%ZD5HfuvpIiBL6f(C^|an@V`=k6;cjlE2uk_q(1$+XgB;tjEhJp)1x4I`sdnPtcpsjJq&SuZq zk=^VoZ*5<`=w-^WWN>bm&bDUXeST1jwX5iscl*J{6WOcnUYC8w+sR|?RR!%=E2P`z z?euT+yS=jGuz1#9TTM8zI0h9>$#p+yYbBdLei{>FUA20QrAo1)CsMQRMZJ9T)51?O pvY0KtjUV0JHoNR({gE0ccR<2*#m?3Aavi@fS$K@(z|8r1{{V2P)cybf literal 0 HcmV?d00001 diff --git a/crawl-ref/source/rltiles/mon/animals/balloon_yak4.png b/crawl-ref/source/rltiles/mon/animals/balloon_yak4.png new file mode 100644 index 0000000000000000000000000000000000000000..3c14b707f1a88b82bc0e96c96cc9ed3250ea7653 GIT binary patch literal 1823 zcmbVNX;2eq7+wg<(LoNY#RFXzD^N*xHzB742!tb}LF5qdf=#lR6p{^_g@gzd@#x?! zQbd%Zg$mj>a#W`l6cFmjh}5GV^>#$GwS!PVR8+b_u>IlqqdU9%9s4}bdwlOZTM!); z;p{Zs2><|RS)??E9zpBlFp+*6%;o`lm_~&qQn5rTWyDAvkf;a+4$8FHYCHzVRM{Er zcmMz}vNUmtRHA&5NJ(f}m=(h^Y4tQ400M$cdQ6#yQ=kH0tqBw1CelpevF4~ar8!M0R6#+3V1P+P3uti)15Mg=ok3(0L!-JPdT!l@A#fBzrHP@p zP9@5t!BB$4K|YJkR3Zoh@`Wr^!Q*0lp~Bw}WFu@gjPPKT!(_8X2uk1J*aguBNmZ&S zMjAe5j$Vl&HAU$~Fl;m$Sw;?vAXmevP$+~EHq2%-X#~@dt)nm#Q)loRSCHZcC8^O< z8bSwJ6)^>oNr@ra*|$+>^>X<;VVz+tS9I236Q+kz76NOv*3d@L1}X;s*Nyk04RP6e z9FD;aL?)@Ek0jM=oJ^L) zJRT=ph=h%EWjX_e>6G}mZ4GUEj4S;hR}@O(7)6kA1d%>o2+?YSA`EIm53)HdF6fh> z(WwZd!Pk05Z$p;iq$Uejg_DF998I!F^BxCyIEwIb1)GVb;(R8D4wWeorgE8l6(2za zINu)?aG){1>i;GWrk#SVmGYm;8Q-GI(K>zC3iRS#GvPYAgGjnn3L~(3x&wn`Qc0ZY zMq9%9&p(#9_9RuDk_0D`eLfy;64xBY$;ZF9=C6_4F;1MvbRhwAues&eo}6p?d!E~~ zI(2h}gZo*IolLayN<24SEcUGTt32>W*_*>pzbo&t{LnbmBf`5ZNgIOW<7eHtaQa;L zo(Jp7IC~f^wMbQg-llBlTlnV~BREZV5sUG4IrzTqap>{Hmb;%ml= zM=r^?PrnE=wEmQQ%Q7Rex;6NY?Gu*~)8+o34;GtKzBSsOC8rJq=Ptkcc!SF2df;Eq z1x~|T?Sozywq22JvEwyOAeSfW^IDvHP2IQlML6W_MW%s@$i~Kq2Zm6n8_3&{;1=n@ zcz#A^x3+d35Iog!byq6^i(S!KDQ*x|G-uLdGhn+U#ixAaOzpAwzCy#VeSv`ML}l;( z5(Kb$yf(0{^5}Cv$gxJ?y~e&}@=)1=FJ`t@vMSsi9b0bBE*mWRDBBiXWb5Z0{Ak&q zRegdZD}0lfb5f$^(BcEzitA?1UgDm0wPEl?Tdi@Kx}$An!^&nCu-(sQ&aUqKK0CJy z#dBr2bbTEtSg0*mGEN!4Y~JzPrbDqiV=bKx1A`5dN`@>!=bARDeY=1>&NOEW?^*NK zHT@BjhGw`_4g%{*=$paVbJL6J6g?8(-FcbQOV;)ac7wTIgMJC_X&JA7{KOd5*gkAu zW*<4NGb8_WV^rL+YuuaJE})}6$bE0&%}2XX-@N|qN6U|IHwT)7J7xwsxg@ujs=r$L z%g(L$@z#Z5EY~bU3hN&Au(0sdyjib_?RWU9xq9Ymt1_lb8<{hq>cNT^!pd* z4Hu%zc9<9&6;)Kgllhfqea*{V;t_OJ_0k9V+a}+r=Gh2sh}|z&-rEy)zbC&? zb=AW~c(_zv?jAW%6xv+e)x7Xd`|;c>=^3RH9(|VdhM^j%NzDIr@u8O;uWUzDo1Ko{ bVA**9*{MDb6FOgdSbtfvuqde|BqjeJ3Wd3Y literal 0 HcmV?d00001 diff --git a/crawl-ref/source/shout.cc b/crawl-ref/source/shout.cc index dbd04fe3255..9ec2865a3d7 100644 --- a/crawl-ref/source/shout.cc +++ b/crawl-ref/source/shout.cc @@ -70,6 +70,7 @@ static const map default_msg_keys = { { S_LOUD_ROAR, "__LOUD_ROAR" }, { S_RUSTLE, "__RUSTLE" }, { S_SQUEAK, "__SQUEAK" }, + { S_RASPBERRY, "__RASPBERRY" }, }; /**