From 070a842d760e8d30da6d714e72b36c034a1ed195 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Sat, 21 Jan 2023 01:09:46 +0100 Subject: [PATCH] Additional dialogue for cranking Deep Impact while full. --- language.def_dlg | 6 +++++ language.es_dlg | 6 +++++ language.version | 4 +-- zscript/hud/swwm_dialogue.zsc | 36 +++++++++++++++++++++++++ zscript/hud/swwm_hudextra.zsc | 5 ++-- zscript/swwm_thinkers_player.zsc | 2 +- zscript/weapons/swwm_deepdarkimpact.zsc | 14 ++++++++++ 7 files changed, 68 insertions(+), 5 deletions(-) diff --git a/language.def_dlg b/language.def_dlg index 296649522..dcd344193 100644 --- a/language.def_dlg +++ b/language.def_dlg @@ -317,3 +317,9 @@ SWWM_SAYAROMEROC1 = "That doesn't explain the robot."; SWWM_SAYAROMEROD1 = "I'll summarize by saying it's just a robot, and I don't know why Lord Baphomet brought it here."; // Cytho reply SWWM_SAYAROMEROD2 = "It's simply the last obstacle in the \cdDemolitionist\c-'s path."; SWWM_SAYAROMEROE1 = "Romerobot's about to make you his bitch, huh..."; +// another easter egg +SWWM_SAYACRANKA1 = "\cdDemo\c-... Can't you see it's already full? You're going to break it."; +SWWM_SAYACRANKB1 = "You're doing this stuff on purpose just to get a reaction out of me, aren't you?"; +SWWM_SAYACRANKB2 = "Well, congratulations, I am reacting and I think you should stop."; +SWWM_SAYACRANKC1 = "... Damn it, \cdDemo\c-, that's enough."; +SWWM_SAYACRANKD1 = "*sigh*"; diff --git a/language.es_dlg b/language.es_dlg index 5988529ec..a39d87cc1 100644 --- a/language.es_dlg +++ b/language.es_dlg @@ -308,3 +308,9 @@ SWWM_SAYAROMEROC1 = "Eso no explica el robot."; SWWM_SAYAROMEROD1 = "Resumiré diciendo que es solo un robot, y no sé por que Lord Baphomet lo ha traido aquí."; // Cytho reply SWWM_SAYAROMEROD2 = "Es simplemente el último obstáculo en el camino de la \cdDemolicionista\c-."; SWWM_SAYAROMEROE1 = "Romerobot está a punto de hacerte su perra, hm..."; +// another easter egg +SWWM_SAYACRANKA1 = "\cdDemo\c-... ¿No ves que ya está lleno? Lo vas a romper."; +SWWM_SAYACRANKB1 = "Estás haciendo esto a propósito solo por ver como reacciono, ¿verdad?"; +SWWM_SAYACRANKB2 = "Bueno, enhorabuena, estoy reaccionando y creo que deberías parar."; +SWWM_SAYACRANKC1 = "... Coño, \cdDemo\c-, ya vale."; +SWWM_SAYACRANKD1 = "*suspiro*"; diff --git a/language.version b/language.version index d2fb39ac6..24ab4f4a5 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r737 \cu(Sat 21 Jan 00:16:53 CET 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r737 \cu(2023-01-21 00:16:53)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r738 \cu(Sat 21 Jan 01:11:58 CET 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r738 \cu(2023-01-21 01:11:58)\c-"; diff --git a/zscript/hud/swwm_dialogue.zsc b/zscript/hud/swwm_dialogue.zsc index 7d460b50c..13af4cff8 100644 --- a/zscript/hud/swwm_dialogue.zsc +++ b/zscript/hud/swwm_dialogue.zsc @@ -67,6 +67,10 @@ enum SWWMDialogue SWWMDLG_CC, SWWMDLG_LILITH, SWWMDLG_ROMERO, + SWWMDLG_CRANK1, + SWWMDLG_CRANK2, + SWWMDLG_CRANK3, + SWWMDLG_CRANK4, NUM_SWWMDLG }; @@ -980,6 +984,38 @@ Class SWWMDialogues abstract msg.nextmsg = msg2; msg.nextdirect = true; break; + case SWWMDLG_CRANK1: + msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + msg.seqname = "SAYACRANKA"; + msg.seqcnt = 1; + msg.delay = 30; + StatusBar.AttachMessage(msg,-1232); + break; + case SWWMDLG_CRANK2: + msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + msg.seqname = "SAYACRANKB"; + msg.seqcnt = 2; + msg.delay = 20; + StatusBar.AttachMessage(msg,-1232); + break; + case SWWMDLG_CRANK3: + msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + msg.seqname = "SAYACRANKC"; + msg.seqcnt = 1; + msg.delay = 80; + msg.startdelay = 50; + StatusBar.AttachMessage(msg,-1232); + break; + case SWWMDLG_CRANK4: + msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + msg.seqname = "SAYACRANKD"; + msg.seqcnt = 1; + msg.delay = 40; + msg.startdelay = 40; + msg.enddelay = 80; + msg.chardelay = 5; + StatusBar.AttachMessage(msg,-1232); + break; } } diff --git a/zscript/hud/swwm_hudextra.zsc b/zscript/hud/swwm_hudextra.zsc index 52e3d5ad3..1d4895b21 100644 --- a/zscript/hud/swwm_hudextra.zsc +++ b/zscript/hud/swwm_hudextra.zsc @@ -279,7 +279,7 @@ Class SWWMDirectMessage : HUDMessageBase String seqname, chrname, chrfullname; bool znvspecial; // seqnum 2 string replacement int seqnum, seqcnt, delay, charcnt, blinktics, talktics, talkframe; - int startdelay, enddelay, pausedelay; + int startdelay, enddelay, pausedelay, chardelay; int rss; int fadein, fadeout; double hs; @@ -316,6 +316,7 @@ Class SWWMDirectMessage : HUDMessageBase startdelay = 30; enddelay = 40; pausedelay = 30; + chardelay = 1; rss = 1232; mSmallFont = Font.GetFont('TewiFont'); bDontResetMe = true; @@ -436,7 +437,7 @@ Class SWWMDirectMessage : HUDMessageBase talktics = 5; } // delay relative to stuff - delay = 1; + delay = chardelay; int idx = punctuation.IndexOf(ch); if ( idx >= 0 ) delay += (idx*2)+1; charcnt++; diff --git a/zscript/swwm_thinkers_player.zsc b/zscript/swwm_thinkers_player.zsc index 77e030e81..41ee7a026 100644 --- a/zscript/swwm_thinkers_player.zsc +++ b/zscript/swwm_thinkers_player.zsc @@ -141,7 +141,7 @@ Class SWWMStats : SWWMStaticThinker // stored for hexen int puzzlecnt, realpuzzlecnt; // easter eggs - int silveregg, quadegg; + int silveregg, quadegg, deepegg; bool oldcheat; bool gotyorick; // caching diff --git a/zscript/weapons/swwm_deepdarkimpact.zsc b/zscript/weapons/swwm_deepdarkimpact.zsc index b743a92c8..18dda72e9 100644 --- a/zscript/weapons/swwm_deepdarkimpact.zsc +++ b/zscript/weapons/swwm_deepdarkimpact.zsc @@ -49,6 +49,8 @@ Class DeepImpact : SWWMWeapon double charge; bool charging; + int wastecycle; // for easter egg + transient ui SmoothDynamicValueInterpolator ChargeInter; transient int failtime; @@ -295,12 +297,24 @@ Class DeepImpact : SWWMWeapon invoker.clipcount = min(invoker.default.clipcount,invoker.clipcount+25); A_StartSound("deepimpact/reload",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(1,1,1,7,0,1,"",QF_RELATIVE|QF_SCALEUP,rollIntensity:.05); + invoker.wastecycle = 0; } action void A_NoCrank() { A_StartSound("deepimpact/noreload",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE|QF_SCALEUP,rollIntensity:.05); + invoker.wastecycle++; + let s = Demolitionist(self).mystats; + if ( s.deepegg < 4 ) + { + if ( invoker.wastecycle < (10+s.deepegg*10) ) return; + s.deepegg++; + } + else return; + invoker.wastecycle = 0; + if ( player == players[consoleplayer] ) + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CRANK1+(s.deepegg-1)); } override void MarkPrecacheSounds()