Voodoo dolls shouldn't run most of the player Tick override.

Demolitionist blender models are updated to have proper brightmaps (don't mind this one).
This commit is contained in:
Mari the Deer 2021-01-12 09:57:12 +01:00
commit 5668505a3c
4 changed files with 14 additions and 11 deletions

View file

@ -1,2 +1,2 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r742 \cu(Sat 9 Jan 22:40:42 CET 2021)";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r744 \cu(Tue 12 Jan 09:57:56 CET 2021)";

Binary file not shown.

Binary file not shown.

View file

@ -586,6 +586,7 @@ Class Demolitionist : PlayerPawn
oldlagpitch = lagpitch;
lagangle = lagangle*.8+angle*.2;
lagpitch = lagpitch*.8+pitch*.2;
if ( !player || (player.mo != self) ) return;
if ( (player.playerstate != PST_DEAD) && (player.jumptics != 0) )
{
// faster falloff
@ -605,14 +606,20 @@ Class Demolitionist : PlayerPawn
PoisonDurationReceived = 0;
PoisonPeriodReceived = 0;
PoisonDamageReceived = 0;
if ( !player ) return;
if ( !selflight )
{
selflight = Spawn("DemolitionistSelfLight",pos);
selflight.target = self;
selflight.Tick();
}
if ( !player || (player.mo != self) ) return;
// double-check that we have these
if ( !FindInventory("AlmasteelPlating") )
{
let ap = Inventory(Spawn("AlmasteelPlating"));
ap.AttachToOwner(self);
// AddInventory attaches to the front, but we need to be all the way back in the chain (but before the collar)
if ( ap.inv )
if ( (inv == ap) && ap.inv )
{
inv = ap.inv;
for ( Inventory i=inv; i; i=i.inv )
@ -635,7 +642,7 @@ Class Demolitionist : PlayerPawn
let sc = Inventory(Spawn("SayaCollar"));
sc.AttachToOwner(self);
// AddInventory attaches to the front, but we need to be all the way back in the chain
if ( sc.inv )
if ( (inv == sc) && sc.inv )
{
inv = sc.inv;
for ( Inventory i=inv; i; i=i.inv )
@ -647,12 +654,6 @@ Class Demolitionist : PlayerPawn
}
}
}
if ( !selflight )
{
selflight = Spawn("DemolitionistSelfLight",pos);
selflight.target = self;
selflight.Tick();
}
// strife thing
if ( mystats.oldlogtext == "" )
mystats.oldlogtext = player.logtext;
@ -1158,7 +1159,7 @@ Class Demolitionist : PlayerPawn
int oldpchance = PainChance;
if ( damage < 5 ) PainChance = 0;
lastdamage = Super.DamageMobj(inflictor,source,damage,mod,flags,angle);
// hotfix damagecount overflow until it's handled engine-side (yes this shit happens)
// hotfix damagecount overflow until proper fix is in stable gzdoom
if ( player && (player.damagecount < 0) ) player.damagecount = 100;
lastdamagetic = max(lastdamagetic,gametic+clamp(lastdamage/2,10,40));
if ( (lastdamage > 0) && (PainChance == 0) && (level.maptime>lastmpain) )
@ -2882,6 +2883,8 @@ Class DemolitionistSelfLight : Actor
return false;
if ( target.InStateSequence(target.CurState,target.FindState("CrouchDeath")) && ((target.frame == 7) || (target.frame == 10) || (target.frame == 11)) )
return false;
if ( target.InStateSequence(target.CurState,target.FindState("VoodooDeath")) && ((target.frame == 9) || (target.frame == 11) || (target.frame == 12) || (target.frame == 14) || (target.frame == 16) || (target.frame == 18)) )
return false;
return true;
}
override void Tick()