From 180988f6ce3c6b3bbce7767847c707cee4f3593e Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Tue, 5 Oct 2021 19:33:57 +0200 Subject: [PATCH] Backport some changes from devel: - Additional dialogue lines for MAP11 and MAP20. - Officially support Ultimate Doom 2. - Localizable dialogue speaker names. --- language.def_base | 29 +++++- language.es_base | 20 +++- language.version | 4 +- ultdoom2.lst | 23 +++++ zmapinfo.txt | 1 + zscript/compat/swwm_compat.zsc | 13 +++ zscript/handler/swwm_handler_cheats.zsc | 2 +- zscript/handler/swwm_handler_uitick.zsc | 103 +++++++++++-------- zscript/handler/swwm_handler_vanillaboss.zsc | 3 +- zscript/hud/swwm_hud.zsc | 98 ++++++++++-------- zscript/hud/swwm_hudextra.zsc | 24 +++++ zscript/swwm_Polyobjects/PolyobjectHandle.zs | 2 +- zscript/utility/swwm_utility.zsc | 7 ++ 13 files changed, 237 insertions(+), 92 deletions(-) create mode 100644 ultdoom2.lst diff --git a/language.def_base b/language.def_base index 290100c51..4b042425e 100644 --- a/language.def_base +++ b/language.def_base @@ -843,6 +843,16 @@ TT_RAFANKOS = "\cfReload:\c- Reload weapon."; // "Direct messages" SWWM_INCOMINGMSG = "Incoming direct message from %s..."; +SWWM_SAYANAME = "\cgSaya Miyamoto\c-"; +SWWM_SAYASNAME = "\cgSaya\c-"; +SWWM_CYTHONAME = "\cvArchduke Cytho Valathor\c-"; +SWWM_CYTHOSNAME = "\cvCytho\c-"; +SWWM_IBUKINAME = "\crIbuki Miyamoto\c-"; +SWWM_IBUKISNAME = "\crIbuki\c-"; +SWWM_KIRINNAME = "\cxKirin Xanai\c-"; +SWWM_KIRINSNAME = "\cxKirin\c-"; +SWWM_ZNVNAME = "\chZanaveth Nekuraku III\c-"; +SWWM_ZNVSNAME = "\chZanaveth\c-"; // E1M8 SWWM_SAYAPHOBOS1 = "I kinda forgot to mention this in the briefing but... There's a bit of an issue here, \cdDemo-chan\c-."; SWWM_SAYAPHOBOS2 = "The gate to Deimos is guarded by two nasty pieces of work, and you're gonna have to get rid of them."; @@ -864,7 +874,6 @@ SWWM_SAYATHY2 = "But, of course, you gotta kick some ass to get there. I mean, n SWWM_SAYATHY3 = "I'll be ready to debrief you later on your ACTUAL mission."; SWWM_SAYATHY4 = "Yeah, still have no clue why this massive detour happened. But I'll get to the bottom of it, trust me."; // E5M8 -SWWM_CYTHONAME = "\cvArchduke Cytho Valathor\c-"; SWWM_CYTHOSIGIL1 = "\cdDemo\c-, this is \cvCytho\c-. I've got an important message to relay from the royal family."; SWWM_CYTHOSIGIL2 = "Prince Baphomet is satisfied with your efforts, and has opened a gate for you to return to Earth."; SWWM_CYTHOSIGIL3 = "Unfortunately, the gate is guarded by high level military demons, two of them, in fact."; @@ -875,6 +884,24 @@ SWWM_SAYADIMPLE2 = "This is the first line of defense that's been set up around SWWM_SAYADIMPLE3 = "Hopefully, you've got plenty of goodies on ya to smash through... You do, right?"; SWWM_SAYADIMPLE4 = "Well, we've already seen what you've been able to do so far, so I'm sure you'll be fine."; SWWM_SAYADIMPLE5 = "Good luck!"; +// MAP11 +SWWM_SAYACIRCLE1 = "You're almost there, \cdDemo\c-. The main switch for the demonic barrier is nearby."; +SWWM_SAYACIRCLE2 = "Since it's still intact, that means you're already ahead of the other guy, which is good."; +SWWM_SAYACIRCLE3 = "Special forces are on stand-by to evacuate everyone once you hit that shit and secure the area."; +SWWM_SAYACIRCLE4 = "With that, the last bastion of the local population will be gone, leaving just demons behind."; +SWWM_SAYACIRCLE5 = "That'll give us time to think of our next step, I suppose."; +// MAP20 +SWWM_SAYAGOTCHA1 = "This is the place, yup. Big fortress surrounded by a lake of toxic blood. Very demonic."; +SWWM_SAYAGOTCHA2 = "These schmucks have the whole place well guarded, so you're gonna find a lot of resistance."; +SWWM_SAYAGOTCHA3 = "Blast through, kill shit, and you'll be there in no time."; +SWWM_SAYAGOTCHA4 = "Once you reach the portal, I'll hit up \cvCytho-sama\c- for instructions on how to close it."; +SWWM_SAYAGOTCHA5 = "That's all, I guess. Good luck, my \cdDemolitionist\c-."; +// MAP20 special (Ultimate Doom 2) +SWWM_SAYAGOTCHAEND1 = "Wait, what the fuck is this? The readings show there's two portals?"; +SWWM_SAYAGOTCHAEND2 = "No, no, that's not right..."; +SWWM_SAYAGOTCHAEND3 = "Uh, ok, \cfDemo-chan\c-, see if you can find a way to close them up, okay?"; +SWWM_SAYAGOTCHAEND4 = "Meanwhile, I'm gonna go call \cvCytho-sama\c-. Something's iffy about this..."; +SWWM_SAYAGOTCHAEND5 = "Just... Try not to get in trouble while I'm away."; // MAP30 SWWM_SAYAIOS1 = "\cdDemo-chan\c-... This is it, you're about to face the Psychic Commander, the leader of Hell's army."; SWWM_SAYAIOS2 = "I don't know if... ... W-well, I shouldn't be worrying about that at this point."; diff --git a/language.es_base b/language.es_base index 259a4ab88..5986b6317 100644 --- a/language.es_base +++ b/language.es_base @@ -730,6 +730,7 @@ TT_RAFANKOS = "\cfRecarga:\c- Recargar arma."; // "Direct messages" SWWM_INCOMINGMSG = "Mensaje directo entrante de %s..."; +SWWM_CYTHONAME = "\cvArchiduque Cytho Valathor\c-"; // E1M8 SWWM_SAYAPHOBOS1 = "Creo que olvidé decirlo en la misión pero... Hay un problemilla, \cdDemo-chan\c-."; SWWM_SAYAPHOBOS2 = "El portal a Deimos está guardado por dos malos malosos, y vas a tener que cargártelos."; @@ -751,7 +752,6 @@ SWWM_SAYATHY2 = "Pero, por supuesto, tienes que patear más traseros para llegar SWWM_SAYATHY3 = "Estaré lista para informarte luego de tu misión DE VERDAD."; SWWM_SAYATHY4 = "Ya, aun no tengo ni idea de como salió el lío este. Pero ya llegaré al fondo de todo esto, ya verás."; // E5M8 -SWWM_CYTHONAME = "\cvArchiduque Cytho Valathor\c-"; SWWM_CYTHOSIGIL1 = "\cdDemo\c-, soy \cvCytho\c-. Tengo un mensaje importante de parte de la familia real."; SWWM_CYTHOSIGIL2 = "El príncipe Baphomet está satisfecho con tus esfuerzos, y ha abierto un portal para que regreses a la Tierra."; SWWM_CYTHOSIGIL3 = "Desafortunadamente, dicho portal está guardado por demonios militares de alto rango, dos, de hecho."; @@ -762,6 +762,24 @@ SWWM_SAYADIMPLE2 = "Esta es la primera línea de defensa que se ha montado alred SWWM_SAYADIMPLE3 = "Con suerte, tienes bastante equipamiento para arrasarlo todo... Lo tienes, ¿verdad?"; SWWM_SAYADIMPLE4 = "Bueno, ya hemos visto lo que puedes hacer, así que estoy segura de que irá todo bien."; SWWM_SAYADIMPLE5 = "¡Buena suerte!"; +// MAP11 +SWWM_SAYACIRCLE1 = "Ya casi estás, \cdDemo\c-. El interruptor principal de la barrera demoníaca está cerca."; +SWWM_SAYACIRCLE2 = "Que esté todo intacto significa que ya le llevas ventaja al tío ese, lo cual es bueno."; +SWWM_SAYACIRCLE3 = "Las fuerzas especiales esperan para evacuar a todos en cuanto le des al trasto y despejes la zona."; +SWWM_SAYACIRCLE4 = "Con eso, el último bastión de la población local se marchará, dejando solo demonios detrás."; +SWWM_SAYACIRCLE5 = "Eso nos dará tiempo para pensar en el siguiente paso, supongo."; +// MAP20 +SWWM_SAYAGOTCHA1 = "Este es el sitio, sí. Gran fortaleza rodeada de un lago de sangre tóxica. Muy demoníaco."; +SWWM_SAYAGOTCHA2 = "Los tipejos estos tienen el sitio bien guardado, así que vas a encontrar mucha resistencia."; +SWWM_SAYAGOTCHA3 = "Tu revéntalo, mata a todos, y ya llegarás pronto al final."; +SWWM_SAYAGOTCHA4 = "En cuanto llegues al portal, le daré un toque a \cvCytho-sama\c- para que nos diga como cerrarlo."; +SWWM_SAYAGOTCHA5 = "Eso es todo, supongo. Buena suerte, mi \cdDemolicionista\c-."; +// MAP20 special (Ultimate Doom 2) +SWWM_SAYAGOTCHAEND1 = "Espera, ¿Que coño es esto? ¿La lectura cuenta dos portales?"; +SWWM_SAYAGOTCHAEND2 = "No, no, eso no puede estar bien..."; +SWWM_SAYAGOTCHAEND3 = "Uh, vale, \cfDemo-chan\c-, mira a ver como puedes cerrarlos, ¿vale?"; +SWWM_SAYAGOTCHAEND4 = "Mientras, voy a llamar a \cvCytho-sama\c-. Algo me da mala espina de esto..."; +SWWM_SAYAGOTCHAEND5 = "Solo... Intenta no meterte en problemas mientras estoy fuera."; // MAP30 SWWM_SAYAIOS1 = "\cdDemo-chan\c-... Ya está, vas a enfrentarte al Comandante Psíquico, el líder del ejército Infernal."; SWWM_SAYAIOS2 = "No sé si... ... B-bueno, no debería preocuparme llegado este punto."; diff --git a/language.version b/language.version index dbf9d7295..90d388cb1 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1.14 \cu(Sun 3 Oct 23:42:52 CEST 2021)\c-"; -SWWM_SHORTVER="\cw1.1.14 \cu(2021-10-03 23:42:52)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1.15 \cu(Tue 5 Oct 19:39:50 CEST 2021)\c-"; +SWWM_SHORTVER="\cw1.1.15 \cu(2021-10-05 19:39:50)\c-"; diff --git a/ultdoom2.lst b/ultdoom2.lst new file mode 100644 index 000000000..a1631566c --- /dev/null +++ b/ultdoom2.lst @@ -0,0 +1,23 @@ +03E9F65F0FE317DBCA878959D62A6402 +10818C3F45804DC1D9ECF26A4657700C +189FB708C864BBA2F7D4E073E3453AA1 +3C8EA698BC859BE08519FBA2800CC058 +43FCFD2EDD7A7AB95CD6744E058BBAD5 +6F9186DA6628DEB2763BDBCFEF66E353 +742B0E5A2F62BD2F218C0615A8B2AD12 +7831EEE8C427D64C61F5065B3AD32C6B +8AD62BE65CA0A745B96D015D2AE6B9D5 +8B4578CBCDD2854FBAE229E68BD7FFEB +8E4798C0CC58E27F62EBE83B4BA19D8A +91D01960472EABBBC409CABD60F3F4CB +9DAA2E6DDD827C955CEEA208707EE2AB +A6BBBB4DEA926564A8F46F860BADDBFC +BD2445D904F8F505C7CBAF22A1FBE4A9 +CC53CFFCB30E873669AA2F09DA0D3566 +D0747F7806956A92EAB97093BFA08579 +D9C090F153DBCC5A8B26FF27E2511818 +DD00C0F495A8491DBEE69526B5E67D82 +DF6A001A6C42DB5CCA599EE5883B294A +E3E8400C23CE7F83FE29AFD197BA3682 +E971D39AA390BE48D36F83E44584B853 +FF8620A6B4EB60CCE737EBC1E6CC7A9F diff --git a/zmapinfo.txt b/zmapinfo.txt index 7c0e2e6fe..8411bd155 100644 --- a/zmapinfo.txt +++ b/zmapinfo.txt @@ -199,6 +199,7 @@ DoomEdNums // ... and the chancebox 4206920 = Chancebox // these are also pp stuff + 4206930 = SWWMDialogueTrigger 4206990 = SWWMGuard 4206991 = SWWMHans 4206992 = SWWMSS diff --git a/zscript/compat/swwm_compat.zsc b/zscript/compat/swwm_compat.zsc index 647b7f746..9c964aa8a 100644 --- a/zscript/compat/swwm_compat.zsc +++ b/zscript/compat/swwm_compat.zsc @@ -146,6 +146,19 @@ Class SWWMLevelCompatibility : LevelPostProcessor } } break; + // Ultimate Doom 2 MAP20 (dv2.9) + case 'CC53CFFCB30E873669AA2F09DA0D3566': + // add a "sector enter" action for reaching the exit room + // and make it trigger a dialogue + uint nt = AddThing(9998,(-9360,12768,12)); + SetThingFlags(nt,MODES_ALL|MTF_STANDSTILL); // trigger once + SetThingSpecial(nt,Thing_Activate); + int tiddy = level.FindUniqueTid(9999); + SetThingArgument(nt,0,tiddy); + nt = AddThing(4206930,(0,0,0)); + SetThingID(nt,tiddy); + SetThingArgument(nt,0,0); + break; // EQUINOX: various boss brain setups that could be cheesed with the Ynykron or silver bullet // Equinox MAP04 case 'E66BCCFAD7AC40EFB21E2A19131E1522': diff --git a/zscript/handler/swwm_handler_cheats.zsc b/zscript/handler/swwm_handler_cheats.zsc index 558128693..80b5256b0 100644 --- a/zscript/handler/swwm_handler_cheats.zsc +++ b/zscript/handler/swwm_handler_cheats.zsc @@ -439,7 +439,7 @@ extend Class SWWMHandler if ( kstr != cht[i] ) continue; if ( (i > 5) && !swwm_nomapmsg && !swwm_oldcheat ) { - let m = new("SWWMDirectMessage").Init("\chZanaveth\c-","\chZanaveth Nekuraku III\c-","Znv"); + let m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_ZNVSNAME"),StringTable.Localize("$SWWM_ZNVNAME"),"Znv"); m.seqname = "ZNVTXT"; m.seqcnt = 5; m.znvspecial = true; diff --git a/zscript/handler/swwm_handler_uitick.zsc b/zscript/handler/swwm_handler_uitick.zsc index c6626af5b..5d8621d8a 100644 --- a/zscript/handler/swwm_handler_uitick.zsc +++ b/zscript/handler/swwm_handler_uitick.zsc @@ -13,7 +13,7 @@ extend Class SWWMHandler if ( !swwm_nomapmsg ) { // angry about phase two - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAEVIB"; msg.seqcnt = 2; msg.delay = 20; @@ -30,7 +30,7 @@ extend Class SWWMHandler int whichboss = WhichVanillaBossMap(); if ( bossmap == MAP_DE1M8 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAPHOBOS"; msg.seqcnt = 4; msg.delay = 40; @@ -38,7 +38,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_DE2M8 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYADEIMOS"; msg.seqcnt = 4; msg.delay = 40; @@ -46,7 +46,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_DE3M8 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYADIS"; msg.seqcnt = 4; msg.delay = 40; @@ -54,7 +54,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_DE4M8 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYATHY"; msg.seqcnt = 4; msg.delay = 40; @@ -62,7 +62,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_DMAP07 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYADIMPLE"; msg.seqcnt = 5; msg.delay = 40; @@ -80,7 +80,7 @@ extend Class SWWMHandler } if ( rampancy ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYARAMPANCY"; msg.seqcnt = 4; msg.delay = 250; @@ -88,7 +88,7 @@ extend Class SWWMHandler } else { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAIOS"; msg.seqcnt = 5; msg.delay = 40; @@ -97,7 +97,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_DLVL08 ) { - let msg = new("SWWMDirectMessage").Init("\cvCytho\c-",StringTable.Localize("$SWWM_CYTHONAME"),"Cytho"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho"); msg.seqname = "CYTHONERVE"; msg.seqcnt = 5; msg.delay = 40; @@ -105,7 +105,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_EVMAP30 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAEVIA"; msg.seqcnt = 4; msg.delay = 40; @@ -115,7 +115,7 @@ extend Class SWWMHandler { if ( level.mapname ~== "E1M8" ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAMAW"; msg.seqcnt = 5; msg.delay = 40; @@ -123,7 +123,7 @@ extend Class SWWMHandler } else { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAHEADS"; msg.seqcnt = 6; msg.delay = 40; @@ -134,7 +134,7 @@ extend Class SWWMHandler { if ( level.mapname ~== "E2M8" ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAMASTERS"; msg.seqcnt = 5; msg.delay = 40; @@ -142,7 +142,7 @@ extend Class SWWMHandler } else { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYABULLS"; msg.seqcnt = 5; msg.delay = 40; @@ -151,7 +151,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HE3M8 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYADSPARIL"; msg.seqcnt = 5; msg.delay = 40; @@ -159,19 +159,19 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HMAP38 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYACLERICA"; msg.seqcnt = 2; msg.delay = 40; StatusBar.AttachMessage(msg,-1232); - let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); msg2.seqname = "SAYACLERICB"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg2.seqname = "SAYACLERICC"; msg2.seqcnt = 2; msg2.delay = 20; @@ -180,7 +180,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HMAP36 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAFIGHTER"; msg.seqcnt = 2; msg.delay = 40; @@ -188,7 +188,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HMAP37 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAMAGE"; msg.seqcnt = 4; msg.delay = 40; @@ -196,7 +196,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HMAP12 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAHYPO"; msg.seqcnt = 4; msg.delay = 40; @@ -204,33 +204,33 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HMAP40 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYAKORAXA"; msg.seqcnt = 1; msg.delay = 40; StatusBar.AttachMessage(msg,-1232); - let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); msg2.seqname = "SAYAKORAXB"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); msg2.seqname = "SAYAKORAXC"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg2.seqname = "SAYAKORAXD"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); msg2.seqname = "SAYAKORAXE"; msg2.seqcnt = 1; msg2.delay = 20; @@ -239,26 +239,26 @@ extend Class SWWMHandler } else if ( (bossmap == MAP_HMAP23_HMAP27_HMAP48_HMAP55) && (level.mapname ~== "MAP48") ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYACONSTABLEA"; msg.seqcnt = 2; msg.delay = 40; StatusBar.AttachMessage(msg,-1232); - let msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); msg2.seqname = "SAYACONSTABLEB"; msg2.seqcnt = 1; msg2.delay = 30; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg2.seqname = "SAYACONSTABLEC"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); msg2.seqname = "SAYACONSTABLED"; msg2.seqcnt = 1; msg2.delay = 20; @@ -267,7 +267,7 @@ extend Class SWWMHandler } else if ( bossmap == MAP_HMAP60 ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYADEATHKINGS"; msg.seqcnt = 1; msg.delay = 40; @@ -281,22 +281,43 @@ extend Class SWWMHandler || (csum ~== "09B30C9DA9D73D3D5A709502FBB947AA") || (csum ~== "6EAD80DA1F30B4B3546FA294EEF9F87C") ) { - let msg = new("SWWMDirectMessage").Init("\cvCytho\c-",StringTable.Localize("$SWWM_CYTHONAME"),"Cytho"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho"); msg.seqname = "CYTHOSIGIL"; msg.seqcnt = 4; msg.delay = 40; StatusBar.AttachMessage(msg,-1232); } + // Doom 2 MAP11 + else if ( (csum ~== "73D9E03CEE7BF1A97EFD2EAD86688EF8") + || (csum ~== "F4F2A769609988837458772AAE99008C") + || (csum ~== "DF6A001A6C42DB5CCA599EE5883B294A") ) + { + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + msg.seqname = "SAYACIRCLE"; + msg.seqcnt = 5; + msg.delay = 40; + StatusBar.AttachMessage(msg,-1232); + } + // Doom 2 MAP20 + else if ( (csum ~== "8898F5EC9CBDCD98019A1BC1BF892A8A") + || (csum ~== "CC53CFFCB30E873669AA2F09DA0D3566") ) + { + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + msg.seqname = "SAYAGOTCHA"; + msg.seqcnt = 5; + msg.delay = 40; + StatusBar.AttachMessage(msg,-1232); + } // Deathkings // Blight else if ( csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5" ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYABLIGHTA"; msg.seqcnt = 1; msg.delay = 40; StatusBar.AttachMessage(msg,-1232); - let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); msg2.seqname = "SAYABLIGHTB"; msg2.seqcnt = 1; msg2.delay = 5; @@ -304,7 +325,7 @@ extend Class SWWMHandler msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg2.seqname = "SAYABLIGHTC"; msg2.seqcnt = 2; msg2.delay = 20; @@ -314,19 +335,19 @@ extend Class SWWMHandler // Nave else if ( csum ~== "E2B5D1400279335811C1C1C0B437D9C8" ) { - let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg.seqname = "SAYANAVEA"; msg.seqcnt = 2; msg.delay = 40; StatusBar.AttachMessage(msg,-1232); - let msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); msg2.seqname = "SAYANAVEB"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); msg2.seqname = "SAYANAVEC"; msg2.seqcnt = 1; msg2.delay = 5; @@ -334,21 +355,21 @@ extend Class SWWMHandler msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg2.seqname = "SAYANAVED"; msg2.seqcnt = 1; msg2.delay = 20; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); msg2.seqname = "SAYANAVEE"; msg2.seqcnt = 1; msg2.delay = 30; msg.nextmsg = msg2; msg.nextdirect = true; msg = msg2; - msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); msg2.seqname = "SAYANAVEF"; msg2.seqcnt = 1; msg2.delay = 40; diff --git a/zscript/handler/swwm_handler_vanillaboss.zsc b/zscript/handler/swwm_handler_vanillaboss.zsc index 05c0d06e5..0ae29c5eb 100644 --- a/zscript/handler/swwm_handler_vanillaboss.zsc +++ b/zscript/handler/swwm_handler_vanillaboss.zsc @@ -65,7 +65,8 @@ extend Class SWWMHandler return MAP_HE2M8_HE5M8; if ( mapsum ~== "4719C2C71EF28F52310B889DD5A9778B" ) return MAP_HE3M8; - if ( mapsum ~== "291F24417FB3DD411339AE82EF9B3597" ) + if ( (mapsum ~== "291F24417FB3DD411339AE82EF9B3597") + || (mapsum ~== "FF8620A6B4EB60CCE737EBC1E6CC7A9F") ) // second sum is for Ultimate Doom 2 return MAP_DMAP07; if ( mapsum ~== "5EECD88F4491F516D590CE4BBF45F532" ) return MAP_DMAP30; diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index 92a95217d..67b8b584e 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -146,6 +146,16 @@ Class SWWMStatusBar : BaseStatusBar return true; } SWWMDirectMessage m, m2; + // more hack + if ( msg ~== "swwmultdoom2map20dlg" ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m.seqname = "SAYAGOTCHAEND"; + m.seqcnt = 5; + m.delay = 40; + AttachMessage(m,-1232); + return true; + } // check for Korax lines, add them to chat (and reply to some of them) bool koraxline = false; if ( msg == StringTable.Localize("$TXT_ACS_MAP02_9_GREET") ) @@ -154,40 +164,40 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",0,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m.seqname = "SAYAGREETA"; m.seqcnt = 3; m.delay = 120; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "SAYAGREETB"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "SAYAGREETC"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "SAYAGREETD"; m2.seqcnt = 1; m2.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "SAYAGREETE"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "SAYAGREETF"; m2.seqcnt = 1; m2.delay = 30; @@ -198,26 +208,26 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",1,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m.seqname = "SAYABLOODA"; m.seqcnt = 2; m.delay = 120; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "SAYABLOODB"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "SAYABLOODC"; m2.seqcnt = 1; m2.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "SAYABLOODD"; m2.seqcnt = 1; m2.delay = 20; @@ -230,19 +240,19 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",2,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m.seqname = "SAYAGAMEA"; m.seqcnt = 2; m.delay = 120; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "SAYAGAMEB"; m2.seqcnt = 1; m2.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "SAYAGAMEC"; m2.seqcnt = 1; m2.delay = 20; @@ -255,12 +265,12 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",3,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINWORSHIPA"; m.seqcnt = 1; m.delay = 120; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINWORSHIPB"; m2.seqcnt = 1; m2.delay = 40; @@ -268,7 +278,7 @@ Class SWWMStatusBar : BaseStatusBar m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "KIRINWORSHIPC"; m2.seqcnt = 1; m2.delay = 10; @@ -276,7 +286,7 @@ Class SWWMStatusBar : BaseStatusBar m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINWORSHIPD"; m2.seqcnt = 2; m2.delay = 10; @@ -289,41 +299,41 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",4,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m.seqname = "SAYAMASTERSA"; m.seqcnt = 2; m.delay = 120; m.enddelay = 60; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "SAYAMASTERSB"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "SAYAMASTERSC"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "SAYAMASTERSD"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "SAYAMASTERSE"; m2.seqcnt = 1; m2.delay = 40; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "SAYAMASTERSF"; m2.seqcnt = 1; m2.delay = 20; @@ -410,61 +420,61 @@ Class SWWMStatusBar : BaseStatusBar switch ( puzzlecnt ) { case 1: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEA"; m.seqcnt = 2; m.delay = 90; AttachMessage(m,-1232); break; case 2: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEB"; m.seqcnt = 1; m.delay = 80; AttachMessage(m,-1232); break; case 3: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEC"; m.seqcnt = 2; m.delay = 70; AttachMessage(m,-1232); break; case 5: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLED"; m.seqcnt = 2; m.delay = 70; AttachMessage(m,-1232); break; case 8: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEE"; m.seqcnt = 2; m.delay = 60; AttachMessage(m,-1232); break; case 11: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEF"; m.seqcnt = 3; m.delay = 60; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINPUZZLEG"; m2.seqcnt = 1; m.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "KIRINPUZZLEH"; m2.seqcnt = 1; m.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINPUZZLEI"; m2.seqcnt = 2; m.delay = 20; @@ -472,54 +482,54 @@ Class SWWMStatusBar : BaseStatusBar m.nextdirect = true; break; case 20: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEJ"; m.seqcnt = 2; m.delay = 80; AttachMessage(m,-1232); break; case 30: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLEK"; m.seqcnt = 1; m.delay = 60; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "KIRINPUZZLEL"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "KIRINPUZZLEM"; m2.seqcnt = 1; m2.delay = 10; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINPUZZLEN"; m2.seqcnt = 1; m2.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "KIRINPUZZLEO"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINPUZZLEP"; m2.seqcnt = 1; m2.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); m2.seqname = "KIRINPUZZLEQ"; m2.seqcnt = 1; m2.delay = 20; @@ -527,26 +537,26 @@ Class SWWMStatusBar : BaseStatusBar m.nextdirect = true; break; case 31: - m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m.seqname = "KIRINPUZZLER"; m.seqcnt = 3; m.delay = 60; AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINPUZZLES"; m2.seqcnt = 1; m2.delay = 20; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); m2.seqname = "KIRINPUZZLET"; m2.seqcnt = 1; m2.delay = 30; m.nextmsg = m2; m.nextdirect = true; m = m2; - m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya"); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); m2.seqname = "KIRINPUZZLEU"; m2.seqcnt = 1; m2.delay = 20; diff --git a/zscript/hud/swwm_hudextra.zsc b/zscript/hud/swwm_hudextra.zsc index e91ac9701..f086d33e2 100644 --- a/zscript/hud/swwm_hudextra.zsc +++ b/zscript/hud/swwm_hudextra.zsc @@ -577,3 +577,27 @@ Class SWWMDirectMessage : HUDMessageBase DrawText(); } } + +// used to manually trigger dialogues through a hacky method in the hud +// because zscript is fucking stupid with its handling of names, we can't +// pass the dialogue name to arguments, so it'll have to be hardcoded +Class SWWMDialogueTrigger : Actor +{ + default + { + +NOBLOCKMAP; + +NOGRAVITY; + +NOINTERACTION; + +DONTSPLASH; + } + override void Activate( Actor activator ) + { + static const String dlglist[] = + { + "swwmultdoom2map20dlg" + }; + Console.MidPrint(null,dlglist[args[0]]); + Destroy(); + } + override void Tick() {} +} diff --git a/zscript/swwm_Polyobjects/PolyobjectHandle.zs b/zscript/swwm_Polyobjects/PolyobjectHandle.zs index 23383f231..f67d92f45 100644 --- a/zscript/swwm_Polyobjects/PolyobjectHandle.zs +++ b/zscript/swwm_Polyobjects/PolyobjectHandle.zs @@ -325,7 +325,7 @@ class swwm_PolyobjectHandle: Thinker Level.ExecuteSpecial(Polyobj_Stop, activator, StartLine, Line.Front, PolyobjectNum); // Move the polyobject Level.ExecuteSpecial(Polyobj_OR_MoveTo, activator, StartLine, Line.Front, PolyobjectNum, - Speed, dest.x, dest.y); + Speed, int(dest.x), int(dest.y)); // Polyobj_OR_MoveTo ignores the sound sequence set by the polyobject. // Play the sound sequence manually inside the sector containing the polyobject. diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index 59d92e557..900786406 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -1605,10 +1605,17 @@ Class SWWMUtility if ( gameinfo.gametype&GAME_DOOM ) { if ( IsEviternity() ) return true; + if ( IsUltDoom2() ) return true; } return false; } + // detect ultimate doom 2 + static bool IsUltDoom2() + { + return CheckMD5List("ultdoom2.lst"); + } + // detect eviternity (naive method) static bool IsEviternity() {