diff --git a/language.version b/language.version index 5c43e87fd..a7aac3750 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r304 \cu(Tue 23 Feb 02:41:02 CET 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r304 \cu(2021-02-23 02:41:02)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r305 \cu(Tue 23 Feb 19:10:08 CET 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r305 \cu(2021-02-23 19:10:08)\c-"; diff --git a/zscript/swwm_handler.zsc b/zscript/swwm_handler.zsc index 7fe77540f..abd18c0e6 100644 --- a/zscript/swwm_handler.zsc +++ b/zscript/swwm_handler.zsc @@ -266,8 +266,9 @@ Class SWWMHandler : EventHandler int lastorder; bool lastloop; // for custom cheats - transient ui int kcode; - transient ui String kstr; + transient ui int kcode, klinger; + transient ui String kstr, klingerstr; + transient ui bool kfail; // heal/armor flashes need to be handled here so they don't stack transient int hflash[MAXPLAYERS], aflash[MAXPLAYERS]; @@ -1481,9 +1482,6 @@ Class SWWMHandler : EventHandler while ( trk ) { SWWMSimpleTracker next = trk.next; - // reduce sight counter - if ( trk.lastupdate < level.maptime ) - trk.sightcount = max(0,trk.sightcount-1); // minimize lifespan of destroyed targets if ( !trk.target ) trk.lastupdate = min(trk.lastupdate,level.maptime); else if ( !trk.expired ) @@ -2513,7 +2511,7 @@ Class SWWMHandler : EventHandler // cheat code handling String cht[] = { - "swwmlodsofemone", "swwmdeeplore", "swwmfroggygang", + "swwmlodsofemone", "swwmdeeplore", "swwmfroggygang", "swwmforgetaboutit", // SWWM Platinum cheats "swwmimstuck", "swwmarmojumbo", "swwmdangimhealthy", "swwmwarriorofzaemonath", "swwmpowerparp", "swwmcannotseemyhands", @@ -2525,7 +2523,7 @@ Class SWWMHandler : EventHandler }; String cmd[] = { - "swwmmoneycheat", "swwmlorecheat", "swwmfroggycheat", + "swwmmoneycheat", "swwmlorecheat", "swwmfroggycheat", "swwmamnesiacheat", // SWWM Platinum cheats "swwmsafecheat", "swwmweaponcheat", "swwmhealcheat", "swwmynykroncheat", "swwmgravcheat", "swwminvischeat", @@ -2545,14 +2543,27 @@ Class SWWMHandler : EventHandler matchany = true; if ( kstr != cht[i] ) continue; SendNetworkEvent(cmd[i],consoleplayer); + kfail = false; + klinger = gametic+60; + klingerstr = kstr; kcode = 0; kstr = ""; return true; } if ( !matchany ) { + bool eatit = false; + if ( kcode >= 4 ) + { + kfail = true; + klinger = gametic+40; + klingerstr = kstr; + S_StartSound("bruh",CHAN_VOICE,CHANF_UI); + eatit = true; + } kcode = 0; kstr = ""; + if ( eatit ) return true; } else { @@ -3369,6 +3380,7 @@ Class SWWMHandler : EventHandler Console.Printf("Sparkster: %d",Random2[Sparkster]()); Console.Printf("Spread: %d",Random2[Spread]()); Console.Printf("Spreadgun: %d",Random2[Spreadgun]()); + Console.Printf("TextShake: %d",Random2[TextShake]()); Console.Printf("TUID: %d",Random2[TUID]()); Console.Printf("Wallbuster: %d",Random2[Wallbuster]()); Console.Printf("WallbusterMenu: %d",Random2[WallbusterMenu]()); @@ -4007,6 +4019,24 @@ Class SWWMHandler : EventHandler f.Spawn("SWWMItemFog",f.pos); f.A_StartSound("bestsound",CHAN_ITEMEXTRA); } + else if ( e.Name ~== "swwmamnesiacheat" ) + { + if ( SWWMUtility.CheatsDisabled(e.Args[0]) ) + return; + if ( consoleplayer == e.Args[0] ) + { + Console.Printf("\cyAmnesiacs administered\c-"); + S_StartSound("misc/buyinv",CHAN_ITEM,CHANF_UI); + S_StartSound("bestsound",CHAN_VOICE,CHANF_UI); + } + let ti = ThinkerIterator.Create("Actor"); + Actor a; + while ( a = Actor(ti.Next()) ) + { + if ( !a.bIsMonster || a.player ) continue; + a.A_ClearTarget(); + } + } } // stuff for hud @@ -4077,6 +4107,30 @@ Class SWWMHandler : EventHandler // various shaders override void RenderOverlay( RenderEvent e ) { + // cheat input + if ( (kcode > 4) || ((klinger > gametic) && (klingerstr != "")) ) + { + double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/266.)),1.); + Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; + String chstr = (kcode>4)?kstr.Mid(4):klingerstr.Mid(4); + double alph = clamp((klinger-(gametic+e.fractic))/20.,0.,1.); + double shine = clamp((klinger-(gametic+e.fractic+40))/20.,0.,1.); + int col = (kcode>4)?0:(kfail)?2:1; + int tlen = chstr.CodePointCount(); + let fnt = newsmallfont; + int width = fnt.StringWidth(chstr)+(tlen-1); + int xx = int((ss.x-width)/2.); + int yy = int((ss.y-newsmallfont.GetHeight())/2.); + for ( int i=0, pos=0; i zoomview ) continue; @@ -1405,7 +1405,7 @@ Class SWWMStatusBar : BaseStatusBar for ( int j=0; j