Unconditional blood replacement, new blood decals, corpse blood pools.

TODO: bloodied footsteps, can still re-use code from Soundless Mound there.
This commit is contained in:
Mari the Deer 2025-03-07 17:27:59 +01:00
commit f89393ca81
62 changed files with 540 additions and 22 deletions

View file

@ -53,6 +53,9 @@ Class SWWMHandler : EventHandler
transient ui Vector2 oldplayerpos;
transient ui bool do_trace_steps;
// for bloody footsteps
mkBloodPool bloodpools;
enum EProfileTimer
{
PT_WORLDTICK,

View file

@ -32,6 +32,7 @@ extend Class SWWMHandler
if ( !b ) return;
mkGibber(a).gibbed = e.Thing;
mkGibber(a).delay = 40;
mkGibber(a).mksplat = true;
a.special1 = 1;
a.A_SetSize(e.Thing.default.radius,e.Thing.default.height);
return;
@ -42,6 +43,7 @@ extend Class SWWMHandler
if ( !b ) return;
mkGibber(a).gibbed = e.Thing;
mkGibber(a).delay = 60;
mkGibber(a).mksplat = true;
a.special1 = 1;
a.A_SetSize(e.Thing.default.radius,e.Thing.default.height);
}

View file

@ -196,8 +196,5 @@ extend Class SWWMHandler
oldmaxdebris = swwm_maxdebris;
oldmaxblood = swwm_maxblood;
oldmaxgibs = swwm_maxgibs;
if ( swwm_blood ) return;
while ( blods ) DeQueueBlod(blods);
while ( meats ) DeQueueMeat(meats);
}
}

View file

@ -675,8 +675,7 @@ extend Class SWWMHandler
return;
}
}
// only replace vanilla blood if no other gore mod is doing it (unless swwm_blood is set to 2)
if ( (((e.Replacee == "Blood") && (!e.Replacement || (e.Replacement == "Blood") || (swwm_blood >= 2))) || (bludtypes.Find(e.Replacee.GetClassName()) < bludtypes.Size())) && swwm_blood ) e.Replacement = "mkBlood";
if ( (e.Replacee is 'Blood') || (bludtypes.Find(e.Replacee.GetClassName()) < bludtypes.Size()) ) e.Replacement = 'mkBlood';
else if ( e.Replacee is 'ItemFog' ) e.Replacement = 'SWWMItemFog';
else if ( e.Replacee is 'TeleportFog' ) e.Replacement = 'SWWMTeleportFog';
else if ( (e.Replacee is 'CommanderKeen') && (!e.Replacement || (e.Replacement == 'CommanderKeen')) )