diff --git a/language.def_voice b/language.def_voice index e074ced47..b23b7eec9 100644 --- a/language.def_voice +++ b/language.def_voice @@ -431,6 +431,10 @@ SWWM_SUBS_DEFAULT_BLAST3 = "Pew!"; SWWM_SUBS_DEFAULT_BLAST4 = "Boom!"; SWWM_SUBS_DEFAULT_BLAST5 = "Kapow!"; SWWM_SUBS_DEFAULT_BLAST6 = "Kaboom."; +// Sheen HMG kill +SWWM_SUBS_DEFAULT_NSHEENKILL = "2"; +SWWM_SUBS_DEFAULT_SHEENKILL1 = "Dakka dakka dakka."; +SWWM_SUBS_DEFAULT_SHEENKILL2 = "Cry some more!"; // Wall busting SWWM_SUBS_DEFAULT_BUSTKILL = "Bustin' makes me feel good~ ♪"; // Cyberdemon killed by parrying @@ -449,7 +453,7 @@ SWWM_SUBS_DEFAULT_EAT2 = "*eating*"; SWWM_SUBS_DEFAULT_EAT3 = "Mmmmm..."; SWWM_SUBS_DEFAULT_EAT4 = "Mmmm! Tasty!"; SWWM_SUBS_DEFAULT_EAT5 = "Mah favorite!"; -// Hurtfloor damage +// Hurtfloor damage (currently unused) SWWM_SUBS_DEFAULT_NHURTFLOOR = "5"; SWWM_SUBS_DEFAULT_HURTFLOOR1 = "Ffffff..."; SWWM_SUBS_DEFAULT_HURTFLOOR2 = "Huff oof..."; diff --git a/language.es_voice b/language.es_voice index c350c66b3..16ca4287d 100644 --- a/language.es_voice +++ b/language.es_voice @@ -372,40 +372,36 @@ SWWM_SUBS_DEFAULT_BUTTONPUSH2 = "Bup."; SWWM_SUBS_DEFAULT_FALLING = "¡Wiiiiiiiiiiii~!"; /// Special kill messages (rare) // Buttslam -SWWM_SUBS_DEFAULT_NASSKILL = "2"; SWWM_SUBS_DEFAULT_ASSKILL1 = "¡Es hora del CULO!"; SWWM_SUBS_DEFAULT_ASSKILL2 = "¡Masacrando con las nalgas!"; SWWM_SUBS_DEFAULT_ASSKILL3 = "Muy bien, ¿Quien quiere comer CULO?"; // Lead ball crit -SWWM_SUBS_DEFAULT_NBALLSKILL = "2"; SWWM_SUBS_DEFAULT_BALLSKILL1 = "¡Peligrosa Acción de Pelotas!"; SWWM_SUBS_DEFAULT_BALLSKILL2 = "¡Cuidado al jugar con vuestras pelotas, chavales!"; // Explosion kill -SWWM_SUBS_DEFAULT_NBLAST = "6"; SWWM_SUBS_DEFAULT_BLAST1 = "¡Bang!"; SWWM_SUBS_DEFAULT_BLAST2 = "¡Bangabangbangbang!"; SWWM_SUBS_DEFAULT_BLAST3 = "¡Píu!"; SWWM_SUBS_DEFAULT_BLAST4 = "¡Bum!"; SWWM_SUBS_DEFAULT_BLAST5 = "¡Kapow!"; SWWM_SUBS_DEFAULT_BLAST6 = "Kabúm."; +// Sheen HMG kill +SWWM_SUBS_DEFAULT_SHEENKILL2 = "¡Llora un poco más!"; // Wall busting // Cyberdemon killed by parrying SWWM_SUBS_DEFAULT_CYBULLY = "Solo estoy haciendo un poco de cyberbullying..."; // Cacodemon petting -SWWM_SUBS_DEFAULT_NPETCACO = "3"; SWWM_SUBS_DEFAULT_PETCACO1 = "¡Caco!"; SWWM_SUBS_DEFAULT_PETCACO2 = "¿Quien es un buen cacodemonio?"; SWWM_SUBS_DEFAULT_PETCACO3 = "Albondiguilla~"; // (rare) skull key pickup gesture SWWM_SUBS_DEFAULT_SKULLGET = "Ay, probre Yorick. Yo le conocía, Horacio."; // Grilled Cheese Sandwich eating -SWWM_SUBS_DEFAULT_NEAT = "5"; SWWM_SUBS_DEFAULT_EAT1 = "Ñam ñam ñam... Ñam ñam..."; SWWM_SUBS_DEFAULT_EAT2 = "*comiendo*"; SWWM_SUBS_DEFAULT_EAT4 = "¡Mmmm! ¡Rico!"; SWWM_SUBS_DEFAULT_EAT5 = "¡Mi favorito!"; -// Hurtfloor damage -SWWM_SUBS_DEFAULT_NHURTFLOOR = "5"; +// Hurtfloor damage (currently unused) SWWM_SUBS_DEFAULT_HURTFLOOR2 = "Buf uf..."; SWWM_SUBS_DEFAULT_HURTFLOOR3 = "Uuuu uuu... Aaa aaaa ooo..."; SWWM_SUBS_DEFAULT_HURTFLOOR4 = "Uuu aa aaaa... Ooo..."; diff --git a/language.version b/language.version index 158e3786f..c353a897d 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r203 \cu(Sat 23 Jul 17:05:04 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r203 \cu(2022-07-23 17:05:04)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r204 \cu(Sat 23 Jul 17:54:41 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r204 \cu(2022-07-23 17:54:41)\c-"; diff --git a/sndinfo.defvoice b/sndinfo.defvoice index 1bcac391a..43dcc58b6 100644 --- a/sndinfo.defvoice +++ b/sndinfo.defvoice @@ -402,6 +402,8 @@ voice/default/blast3 sounds/voice/default/va/demoblast3.ogg voice/default/blast4 sounds/voice/default/va/demoblast4.ogg voice/default/blast5 sounds/voice/default/va/demoblast5.ogg voice/default/blast6 sounds/voice/default/va/demoblast6.ogg +voice/default/sheenkill1 sounds/voice/default/va/demosheenkill1.ogg +voice/default/sheenkill2 sounds/voice/default/va/demosheenkill2.ogg voice/default/petcaco1 sounds/voice/default/va/demopetcaco1.ogg voice/default/petcaco2 sounds/voice/default/va/demopetcaco2.ogg voice/default/petcaco3 sounds/voice/default/va/demopetcaco3.ogg diff --git a/sounds/voice/default/va/demosheenkill1.ogg b/sounds/voice/default/va/demosheenkill1.ogg new file mode 100644 index 000000000..a4aa0c6ff Binary files /dev/null and b/sounds/voice/default/va/demosheenkill1.ogg differ diff --git a/sounds/voice/default/va/demosheenkill2.ogg b/sounds/voice/default/va/demosheenkill2.ogg new file mode 100644 index 000000000..7ea631f2a Binary files /dev/null and b/sounds/voice/default/va/demosheenkill2.ogg differ diff --git a/zscript/handler/swwm_handler_damage.zsc b/zscript/handler/swwm_handler_damage.zsc index d9f9ce9bf..6f57f71ab 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -182,6 +182,8 @@ extend Class SWWMHandler if ( !Random[DemoLines](0,3) && buff && (e.Thing is 'Cyberdemon') && (inflictor is 'Rocket') && (buff.tracer == e.Thing) ) lc = AddOneliner("cybully",1,15); else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:2) && (e.DamageType == 'CriticalConcussion') ) lc = AddOneliner("ballskill",1,15); else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?2:5) && (e.DamageType == 'Buttslam') ) lc = AddOneliner("asskill",1,15); + else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?3:6) && ((inflictor is 'HeavyMahSheenGun') || (inflictor is 'SheenTrail')) ) + lc = AddOneliner("sheenkill",1,15); if ( !lc ) { if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:4) ) diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index 85005ab1d..726314ee5 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -1141,6 +1141,22 @@ Class SWWMUtility Victim.vel += Momentum; } + // fixes some false positives for explosion taunts + static bool IsExplosiveSource( Actor s ) + { + if ( s is 'DemolitionistShockwave' ) return false; + if ( s is 'BigPunchSplash' ) return false; + if ( s is 'AirBullet' ) return false; + if ( s is 'SaltBeam' ) return false; + if ( s is 'CorrodeDebuff' ) return false; + if ( s is 'CorrosiveSplash' ) return false; + if ( s is 'TheBall' ) return false; + if ( s is 'SilverAirRip' ) return false; + if ( s is 'SilverImpact' ) return false; + if ( s is 'SheenTrail' ) return false; + return true; + } + // complete spherical and more accurate replacement of A_Explode // 100% free of the buggery GZDoom's own splash damage has // returns the number of shootables hit/killed @@ -1235,7 +1251,7 @@ Class SWWMUtility let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); if ( !hnd || (hnd.psectors.Size() <= 1) ) { - if ( (Instigator is 'Demolitionist') && haskilled ) + if ( (Instigator is 'Demolitionist') && haskilled && IsExplosiveSource(Source) ) { let demo = Demolitionist(Instigator); if ( (gametic > demo.lastbang+30) && (!hnd || (gametic > hnd.lastcombat+10)) && !Random[DemoLines](0,1) ) @@ -1317,7 +1333,7 @@ Class SWWMUtility if ( (!a || (a.Health <= 0)) && (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nkill++; } } - if ( (Instigator is 'Demolitionist') && haskilled ) + if ( (Instigator is 'Demolitionist') && haskilled && IsExplosiveSource(Source) ) { let demo = Demolitionist(Instigator); if ( (gametic > demo.lastbang+30) && (gametic > hnd.lastcombat+10) && !Random[DemoLines](0,1) )