Fix broken player damage vfx handling.

This commit is contained in:
Mari the Deer 2022-07-03 23:46:31 +02:00
commit 6837df09b2
3 changed files with 17 additions and 12 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r151 \cu(Sun 3 Jul 23:46:16 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r151 \cu(2022-07-03 23:46:17)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r152 \cu(Sun 3 Jul 23:46:31 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r152 \cu(2022-07-03 23:46:31)\c-";

View file

@ -110,8 +110,8 @@ extend Class SWWMHandler
}
else PPShader.SetEnabled("SlimeWarp",false);
int lastdmg = (demo.Health>0)?demo.lastdamage:Random[Flicker](60,80);
int lastdmgtic = (demo.Health>0)?demo.lastdamagetic:(gametic+Random[Flicker](30,20));
double noiz = min(lastdmg*.09*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.5);
int lastdmgtimer = (demo.Health>0)?demo.lastdamagetimer:(gametic+Random[Flicker](30,20));
double noiz = min(lastdmg*.09*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),.5);
PPShader.SetEnabled("Glitch",noiz>0);
PPShader.SetEnabled("Grain",noiz>0);
if ( noiz > 0 )
@ -119,9 +119,9 @@ extend Class SWWMHandler
PPShader.SetUniform1f("Glitch","Timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("Grain","Timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("Grain","ni",noiz);
noiz = min(lastdmg*.08*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.8);
noiz = min(lastdmg*.08*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),.8);
PPShader.SetUniform1f("Glitch","str1",noiz);
noiz = min(lastdmg*.03*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),3.5);
noiz = min(lastdmg*.03*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),3.5);
PPShader.SetUniform1f("Glitch","str2",noiz);
}
if ( !demo.InStateSequence(demo.CurState,demo.FindState("Dash")) )

View file

@ -13,8 +13,8 @@ Class Demolitionist : PlayerPawn
bool bInDefaultInventory;
bool oldsinglefirst;
int lastdamage;
transient int lastdamagetic;
transient int lastdamage;
transient int lastdamagetic, lastdamagetimer;
bool lastground;
int lastgroundtic, lastairtic;
double lastvelz, prevvelz, landvelz;
@ -1724,8 +1724,14 @@ Class Demolitionist : PlayerPawn
int realdmg = Super.DamageMobj(inflictor,source,damage,mod,flags,angle);
// hotfix damagecount overflow until proper fix is in stable gzdoom
if ( player && (player.damagecount < 0) ) player.damagecount = 100;
lastdamage = max(lastdamage,realdmg);
lastdamagetic = max(lastdamagetic,gametic+clamp(lastdamage/2,10,40));
if ( lastdamagetic != gametic )
{
lastdamage = 0;
lastdamagetimer = 0;
}
lastdamage += realdmg;
lastdamagetic = gametic;
lastdamagetimer = max(lastdamagetimer,lastdamagetic+clamp(lastdamage/2,10,40));
if ( (lastdamage > 0) && (PainChance == 0) && (level.maptime>lastmpain) )
{
lastmpain = level.maptime;
@ -2683,7 +2689,7 @@ Class Demolitionist : PlayerPawn
A_StartSound("demolitionist/jetstop",CHAN_JETPACK);
if ( !myvoice ) myvoice = CVar.GetCVar('swwm_voicetype',player);
int loudlv = swwm_voiceamp;
if ( lastdamage > 90 )
if ( lastdamage > 70 )
{
if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:1200);
A_QuakeEx(3,3,3,9,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D);
@ -2725,7 +2731,6 @@ Class Demolitionist : PlayerPawn
if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/lopain",myvoice.GetString()),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP);
}
}
lastdamage = 0;
}
void A_DemoScream()
{