From f41fb2c0c79c8f9a48222a3af21601a905d72dc3 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sat, 16 Oct 2021 09:31:00 +0200 Subject: [PATCH] =?UTF-8?q?Stuff=20from=20master=E2=84=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- language.def_base | 12 +++- language.es_base | 13 ++++- language.version | 4 +- zscript/handler/swwm_handler_replacements.zsc | 20 +------ zscript/handler/swwm_handler_worldthings.zsc | 11 ++++ zscript/swwm_handler.zsc | 2 + zscript/swwm_monsters.zsc | 4 +- zscript/utility/swwm_utility.zsc | 58 ++++++++++++++++--- 8 files changed, 90 insertions(+), 34 deletions(-) diff --git a/language.def_base b/language.def_base index 4b042425e..a267ff45f 100644 --- a/language.def_base +++ b/language.def_base @@ -467,7 +467,7 @@ FN_WOLFGUARD_FUNN = "3"; FN_WOLFGUARD_FUN1 = "Budget Nazi"; FN_WOLFGUARD_FUN2 = "Pew Pew Boy"; FN_WOLFGUARD_FUN3 = "Brown Pants"; -FN_WOLFSS = "Schutzstaffel"; +FN_WOLFSS_ORIG = "Schutzstaffel"; FN_WOLFHANS = "Hans Grosse"; FN_WOLFHANS_FUN = "Thicc Hans"; // eviternity tags @@ -493,6 +493,12 @@ FN_NDEMON_FUNN = "3"; FN_NDEMON_FUN1 = "Greenie"; FN_NDEMON_FUN2 = "Angry Greens"; FN_NDEMON_FUN3 = "Spinach Demon"; +// ultimate doom 2 tags +FN_ELITEZOMBIE = "Elite Zombie"; +FN_ELITEZOMBIE_FUNN = "3"; +FN_ELITEZOMBIE_FUN1 = "Fastzomb"; +FN_ELITEZOMBIE_FUN2 = "He Schutt"; +FN_ELITEZOMBIE_FUN3 = "Blondie Boy"; // obituaries O_PUSHER = "%k carefully removed %o's cavities."; O_DEEPIMPACT = "%o was impacted deeply by %k."; @@ -598,7 +604,6 @@ OB_KNIGHT = "%o was bruised by green plasma."; OB_SPIDER = "%o ate all those bullets."; OB_BABY = "%o angered the spider bab."; OB_CYBORG = "%o didn't follow the protip."; -OB_WOLFSS = "%o was pelted by blondies."; OB_DOG = "%o angered the doggo."; OB_CHICKEN = "%o got the PECK."; OB_BEAST = "%o got flamed by a big friend."; @@ -642,6 +647,7 @@ OB_HERESIARCH = "%o saw that coming."; OB_PIG = "%o angered the hams."; // for when gzdoom fixes this (come on, graf) DEFOB_PIG = "$$OB_PIG"; // gzdoom will look this up since it has no obituary assigned OB_WOLFGUARD = "%o got pelted by some weakling."; +OB_WOLFSS_ORIG = "%o was pelted by blondies."; OB_WOLFHANS = "%o couldn't withstand such sheer girthitude."; // eviternity obituaries OB_FCAPTAIN = "%o was zapped by an angry green lad."; @@ -650,6 +656,8 @@ OB_NDEMON = "%o got scronched."; OB_ANGEL1 = "%o pissed off that angel."; OB_ANGEL2 = "%o really pissed off that angel."; OB_ASTRAL = "%o got scorched by a gray ball friend."; +// ultimate doom 2 obituaries +OB_ELITEZOMBIE = "%o was shot rapidly by some elite guy."; // misc D_BLASTSUIT = "The Blast Suit broke down."; D_GHOSTARTI = "The Ghost Artifact ran out of energy."; diff --git a/language.es_base b/language.es_base index 5986b6317..ff447b665 100644 --- a/language.es_base +++ b/language.es_base @@ -369,6 +369,10 @@ FN_KEEN_FUN = "Arruinado por Bethesda"; FN_VOODOO = "Muñeco Vudú de %s"; FN_PIG = "Cerdo"; FN_PIG_FUN = "Cochinillo"; +FN_WOLFGUARD_FUN1 = "Nazi de Bajo Presupuesto"; +FN_WOLFGUARD_FUN2 = "Chiquillo con Pistolilla"; +FN_WOLFGUARD_FUN3 = "Pantalones Marrones"; +FN_WOLFHANS_FUN = "Hans el Gordaco"; // eviternity tags FN_ANGEL_FUN = "Un Puto Ángel"; FN_ASTRAL = "Cacodemonio Astral"; @@ -387,6 +391,11 @@ FN_NDEMON = "Demonio de Pesadilla"; FN_NDEMON_FUN1 = "Verdín"; FN_NDEMON_FUN2 = "Verde Cabreado"; FN_NDEMON_FUN3 = "Demonio de Espinacas"; +// ultimate doom 2 tags +FN_ELITEZOMBIE = "Zombi de Élite"; +FN_ELITEZOMBIE_FUN1 = "Zomborápido"; +FN_ELITEZOMBIE_FUN2 = "Te Dispara"; +FN_ELITEZOMBIE_FUN3 = "Rubiales"; // obituaries O_PUSHER = "%k le quitó cuidadosamente las caries a %o."; O_DEEPIMPACT = "%o fue impactad@[ao_esp] profundamente por %k."; @@ -492,7 +501,6 @@ OB_KNIGHT = "%o fue churruscad@[ao_esp] por plasma verde."; OB_SPIDER = "%o se comió todas esas balas."; OB_BABY = "%o hizo enfadar al ñiño araña."; OB_CYBORG = "%o no siguió el consejo."; -OB_WOLFSS = "%o fue tiroteado por rubitos."; OB_DOG = "%o hizo enfadar al perrete."; OB_CHICKEN = "%o recibió el PICO."; OB_BEAST = "%o fue flambead@[ao_esp] por un amigo grandote."; @@ -535,6 +543,7 @@ OB_CBOSS = "%o fue fantasmado por la verga fantasma del tío santurrón."; OB_HERESIARCH = "%o lo vio venir."; OB_PIG = "%o enfureció a los jamones."; // for when gzdoom fixes this (come on, graf) OB_WOLFGUARD = "%o fué balead@[ao_esp] por algún cobarde."; +OB_WOLFSS_ORIG = "%o fue tiroteado por rubitos."; OB_WOLFHANS = "%o no pudo soportar semejante grosor."; // eviternity obituaries OB_FCAPTAIN = "%o fue chispad@[ao_esp] por un tío verde cabreado."; @@ -543,6 +552,8 @@ OB_NDEMON = "%o fue estronchad@[ao_esp]."; OB_ANGEL1 = "%o cabreó a ese ángel."; OB_ANGEL2 = "%o cabreó mucho a ese ángel."; OB_ASTRAL = "%o fue escaldad@[ao_esp] por una amigable bola gris."; +// ultimate doom 2 obituaries +OB_ELITEZOMBIE = "%o fue disparad@[ao_esp] rápidamente por un tipo de élite."; // misc D_BLASTSUIT = "El Chaleco Antiexplosivos se ha roto."; D_GHOSTARTI = "El Artefacto Fantasma se ha agotado."; diff --git a/language.version b/language.version index a020c9361..1da3dd4d7 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r29 \cu(Fri 15 Oct 21:28:15 CEST 2021)\c-"; -SWWM_SHORTVER="\cw1.2pre r29 \cu(2021-10-15 21:28:15)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r30 \cu(Sat 16 Oct 09:31:00 CEST 2021)\c-"; +SWWM_SHORTVER="\cw1.2pre r30 \cu(2021-10-16 09:31:00)\c-"; diff --git a/zscript/handler/swwm_handler_replacements.zsc b/zscript/handler/swwm_handler_replacements.zsc index 9b641e95c..2f2b69241 100644 --- a/zscript/handler/swwm_handler_replacements.zsc +++ b/zscript/handler/swwm_handler_replacements.zsc @@ -573,15 +573,7 @@ extend Class SWWMHandler else if ( e.Replacee is 'TeleportFog' ) e.Replacement = 'SWWMTeleportFog'; else if ( (e.Replacee is 'CommanderKeen') && (!e.Replacement || (e.Replacement == 'CommanderKeen')) ) { - let def = GetDefaultByType(e.Replacee); - bool dehackery = false; - for ( State s=def.SpawnState; s; s=s.NextState ) - { - if ( s.bDEHACKED ) dehackery = true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; - } - if ( dehackery ) + if ( SWWMUtility.CheckDehackery(e.Replacee) ) { if ( profiling ) checkreplacement_ms += MSTime()-curms; return; @@ -590,15 +582,7 @@ extend Class SWWMHandler } else if ( (e.Replacee is 'BossBrain') && (!e.Replacement || (e.Replacement == 'BossBrain')) ) { - let def = GetDefaultByType(e.Replacee); - bool dehackery = false; - for ( State s=def.SpawnState; s; s=s.NextState ) - { - if ( s.bDEHACKED ) dehackery = true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; - } - if ( dehackery ) + if ( SWWMUtility.CheckDehackery(e.Replacee) ) { if ( profiling ) checkreplacement_ms += MSTime()-curms; return; diff --git a/zscript/handler/swwm_handler_worldthings.zsc b/zscript/handler/swwm_handler_worldthings.zsc index b1b4ce629..ba7ab0c43 100644 --- a/zscript/handler/swwm_handler_worldthings.zsc +++ b/zscript/handler/swwm_handler_worldthings.zsc @@ -265,6 +265,7 @@ extend Class SWWMHandler SWWMInterest.Spawn(thekey:Key(e.Thing)); } if ( indoomvacation == -1 ) indoomvacation = SWWMUtility.InDoomVacation(); + if ( inultdoom2 == -1 ) inultdoom2 = SWWMUtility.IsUltDoom2(); if ( e.Thing.GetClass() == 'Pig' ) e.Thing.SetTag("$FN_PIG"); // missing in gzdoom // eviternity stuff @@ -367,6 +368,16 @@ extend Class SWWMHandler HeadpatTracker(hp).dvacationarghack = true; } } + else if ( inultdoom2 && (e.Thing.GetClassName() == "WolfensteinSS") ) + { + e.Thing.SetTag("$FN_ELITEZOMBIE"); + //e.Thing.Obituary = "$OB_ELITEZOMBIE"; + e.Thing.SeeSound = "grunt/sight"; + e.Thing.AttackSound = "grunt/attack"; + e.Thing.PainSound = "grunt/pain"; + e.Thing.DeathSound = "grunt/death"; + e.Thing.ActiveSound = "grunt/active"; + } if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing) || SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) ) { diff --git a/zscript/swwm_handler.zsc b/zscript/swwm_handler.zsc index f29f0746d..6cf5aed71 100644 --- a/zscript/swwm_handler.zsc +++ b/zscript/swwm_handler.zsc @@ -20,6 +20,7 @@ Class SWWMHandler : EventHandler int bossmap; int iwantdie; int indoomvacation; + int inultdoom2; // for checkreplacement bool hasdrlamonsters; @@ -44,6 +45,7 @@ Class SWWMHandler : EventHandler iwantdie = -1; bossmap = -1; indoomvacation = -1; + inultdoom2 = -1; // this one can be initialized here easily for ( int i=0; i cls ) + { + let def = GetDefaultByType(cls); + for ( State s=def.SpawnState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + for ( State s=def.SeeState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + for ( State s=def.MissileState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + for ( State s=def.MeleeState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + return false; + } + // because GetTag() returns the localized string, we need to do things the hard way - static clearscope String GetFunTag( Actor a, String defstr = "" ) + static play String GetFunTag( Actor a, String defstr = "" ) { if ( a is 'SWWMMonster' ) return SWWMMonster(a).GetFunTag(defstr); + // look up any fun tag services + let si = ServiceIterator.Find("FunTagService"); + Service sv; + String res; + while ( sv = si.Next() ) + { + res = sv.GetString("GetFunTag",objectArg:a); + if ( res == "" ) continue; + si.Destroy(); + return res; + } + si.Destroy(); int ntags = 1; String basetag = ""; switch ( a.GetClassName() ) @@ -870,16 +913,13 @@ Class SWWMUtility basetag = "BOSSBRAIN"; break; case 'WolfensteinSS': - // ensure it's not being replaced - let def = GetDefaultByType('WolfensteinSS'); - bool dehackery = false; - for ( State s=def.SpawnState; s; s=s.NextState ) + if ( IsUltDoom2() ) { - if ( s.bDEHACKED ) dehackery = true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + basetag = "ELITEZOMBIE"; + break; } - if ( dehackery ) break; + // ensure it's not being replaced + if ( CheckDehackery('WolfensteinSS') ) break; case 'SWWMSS': basetag = "WOLFSS"; break;