"Fix" for library "vanishing" on reload after death.

This is a very gross hack, please don't look at it.
This commit is contained in:
Mari the Deer 2020-06-19 13:29:36 +02:00
commit 15cb678975
4 changed files with 41 additions and 2 deletions

View file

@ -1,2 +1,2 @@
[default]
SWWM_MODVER="\cxSWWM GZ\c- r358 (Thu 18 Jun 21:16:25 CEST 2020)";
SWWM_MODVER="\cxSWWM GZ\c- r359 (Fri 19 Jun 13:29:36 CEST 2020)";

View file

@ -1,6 +1,6 @@
GameInfo
{
AddEventHandlers = "SWWMCrashHandler", "SWWMBrutalHandler", "SWWMHDoomHandler", "SWWMVanillaBossHandler", "SWWMHandler", "SWWMGoreHandler", "CBTHandler", "SWWMPreloader"
AddEventHandlers = "SWWMCrashHandler", "SWWMBrutalHandler", "SWWMHDoomHandler", "SWWMVanillaBossHandler", "SWWMHandler", "SWWMGoreHandler", "CBTHandler", "SWWMPreloader", "SWWMExcuseMeWhatTheFuckHandler"
PlayerClasses = "Demolitionist"
StatusBarClass = "SWWMStatusBar"
BackpackType = "HammerspaceEmbiggener"

View file

@ -445,6 +445,41 @@ Class SWWMLore
bool read;
}
// so apparently on restart after dying, static thinkers don't get reloaded until AFTER the player has spawned
// and the player calls GiveDefaultInventory even though it's all later discarded and they're given the saved inventory
// all I can ask is: WHY
Class SWWMExcuseMeWhatTheFuckHandler : StaticEventHandler
{
bool reborn_hackfix;
int clear_hackfix;
override void WorldTick()
{
if ( gamestate != GS_LEVEL ) return;
if ( clear_hackfix > 0 )
{
clear_hackfix--;
if ( clear_hackfix <= 0 )
reborn_hackfix = false;
}
}
static bool WhyTheFuckIsThisAThing()
{
let hnd = SWWMExcuseMeWhatTheFuckHandler(StaticEventHandler.Find("SWWMExcuseMeWhatTheFuckHandler"));
if ( !hnd ) return false;
return hnd.reborn_hackfix;
}
static void ThisIsSomeSeriousBullshit()
{
let hnd = SWWMExcuseMeWhatTheFuckHandler(StaticEventHandler.Find("SWWMExcuseMeWhatTheFuckHandler"));
if ( !hnd ) return;
hnd.reborn_hackfix = true;
hnd.clear_hackfix = 2;
}
}
Class SWWMLoreLibrary : Thinker
{
PlayerInfo myplayer;
@ -584,6 +619,8 @@ Class SWWMLoreLibrary : Thinker
static void Add( PlayerInfo p, String ref )
{
// ignore this call on player rebirth, otherwise a new thinker will be created when the player calls GiveDefaultInventory
if ( SWWMExcuseMeWhatTheFuckHandler.WhyTheFuckIsThisAThing() ) return;
SWWMLoreLibrary ll = Find(p);
if ( !ll )
{

View file

@ -1021,6 +1021,8 @@ Class Demolitionist : PlayerPawn
}
else if ( (player.cmd.buttons&BT_USE) && (deadtimer > 120) )
{
// gross hackfix for library "vanishing"
SWWMExcuseMeWhatTheFuckHandler.ThisIsSomeSeriousBullshit();
// reload save
player.cls = null;
player.playerstate = PST_ENTER;