From 96aac72281dc1c7766cec481339d78501cdb98e7 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Fri, 2 Aug 2019 09:58:55 +0200 Subject: [PATCH] Use strict FindState to avoid false positives for XDeath checks. This fixes the boss brain not ending the level when gibbing is enabled. Added some extra forward compatibility flags for player gibbers (armless/torsoless deaths and whatnot, this will be needed for Doomreal). Removed a random leftover file. --- sounds/suitsnd.ogg | Bin 6851 -> 0 bytes zscript/utcommon.zsc | 31 ++++++++++++++++++++----------- zscript/utgore.zsc | 6 +++++- 3 files changed, 25 insertions(+), 12 deletions(-) delete mode 100644 sounds/suitsnd.ogg diff --git a/sounds/suitsnd.ogg b/sounds/suitsnd.ogg deleted file mode 100644 index f8e43b11887ea5f81bba80f45faf2ea3424ef968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6851 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 fpZqBMU$|3Kd`G 0) && !tempslide ) @@ -1135,7 +1144,7 @@ Class UTPlayerTFemale : UTPlayer void A_LegPop() { - legless = true; + leglessR = true; let a = Actor.Spawn("UTFemaleLegGibber",pos); a.vel = vel; a.Scale = Scale; @@ -2001,8 +2010,8 @@ Class ShredCorpseHitbox : Actor if ( accdamage < gibhealth ) { // force gib (cheap ATM) - State gib = target.FindState("XDeath"); - if ( !gib ) gib = target.FindState("Death.Extreme"); + State gib = target.FindState("XDeath",true); + if ( !gib ) gib = target.FindState("Death.Extreme",true); if ( gib ) target.SetState(gib); Destroy(); } @@ -2576,16 +2585,16 @@ Class UTMainHandler : EventHandler switch ( e.Args[0] ) { case 2: - mo.SetStateLabel("Taunt2"); + if ( mo.FindState("Taunt2") ) mo.SetStateLabel("Taunt2"); break; case 3: - mo.SetStateLabel("Taunt3"); + if ( mo.FindState("Taunt3") ) mo.SetStateLabel("Taunt3"); break; case 4: - mo.SetStateLabel("Taunt4"); + if ( mo.FindState("Taunt4") ) mo.SetStateLabel("Taunt4"); break; default: - mo.SetStateLabel("Taunt1"); + if ( mo.FindState("Taunt1") ) mo.SetStateLabel("Taunt1"); break; } } @@ -2634,7 +2643,7 @@ Class UTMainHandler : EventHandler { if ( e.Thing.bDONTGIB ) return; // gibbers - if ( flak_gibs && !e.Thing.bNOBLOOD && (e.Thing.FindState("XDeath") || e.Thing.FindState("Death.Extreme")) && ((e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.Thing.Health < e.Thing.GetGibHealth())) && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH) ) + if ( flak_gibs && !e.Thing.bNOBLOOD && (e.Thing.FindState("XDeath",true) || e.Thing.FindState("Death.Extreme",true)) && ((e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.Thing.Health < e.Thing.GetGibHealth())) && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH) ) { // players use their own gibber if ( e.Thing is 'UTPlayer' ) return; diff --git a/zscript/utgore.zsc b/zscript/utgore.zsc index 4358f37..94d7320 100644 --- a/zscript/utgore.zsc +++ b/zscript/utgore.zsc @@ -385,7 +385,11 @@ Class UTPlayerGibber : UTGibber for ( int i=0; i<11; i++ ) { if ( (i == 5) && UTPlayer(Gibbed).headless ) continue; - if ( ((i == 2) || (i == 6)) && UTPlayer(Gibbed).legless ) continue; + if ( (i == 0) && UTPlayer(Gibbed).armlessR ) continue; + if ( (i == 1) && UTPlayer(Gibbed).armlessL ) continue; + if ( ((i == 2) || (i == 6)) && UTPlayer(Gibbed).leglessR ) continue; + if ( ((i == 3) || (i == 7)) && UTPlayer(Gibbed).leglessL ) continue; + if ( ((i == 4) || (i > 7)) && UTPlayer(Gibbed).torsoless ) continue; Actor a; if ( i < 6 ) {