Combat Hammer plunging attack (release alt fire while falling).
This commit is contained in:
parent
8804366137
commit
e50d186a09
|
@ -44,6 +44,7 @@ HardwareShader PostProcess beforebloom
|
|||
Shader "shaders/pp/WindBlur.fp" 330
|
||||
Uniform float Speed
|
||||
Uniform float Fade
|
||||
Uniform vec2 WindDir
|
||||
}
|
||||
HardwareShader PostProcess beforebloom
|
||||
{
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1111 \cu(Wed 13 Mar 20:54:20 CET 2024)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r1111 \cu(2024-03-13 20:54:20)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1112 \cu(Sun 17 Mar 20:58:31 CET 2024)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r1112 \cu(2024-03-17 20:58:31)\c-";
|
||||
|
|
|
@ -12,7 +12,7 @@ void main()
|
|||
res += w*texture(InputTexture,s);
|
||||
sum += w;
|
||||
w *= .95;
|
||||
s.x -= d;
|
||||
s -= d*WindDir;
|
||||
}
|
||||
res /= sum;
|
||||
FragColor = mix(texture(InputTexture,TexCoord),vec4(res.rgb,1.),Fade*.75);
|
||||
|
|
|
@ -6,6 +6,7 @@ Class ItamexHammer : SWWMWeapon
|
|||
double charge;
|
||||
int hitcnt, spintime;
|
||||
transient ui SmoothDynamicValueInterpolator ChargeInter;
|
||||
bool bSpinning, bFalling;
|
||||
|
||||
override void HudTick()
|
||||
{
|
||||
|
@ -43,6 +44,22 @@ Class ItamexHammer : SWWMWeapon
|
|||
A_BumpFOV(.95);
|
||||
A_QuakeEx(.5,.5,.5,15,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1);
|
||||
}
|
||||
action void A_HammerAltFallHit()
|
||||
{
|
||||
Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch);
|
||||
if ( vel.z > -25 ) vel.z = max(-25.,vel.z-4.);
|
||||
if ( invoker.hitcnt > 0 ) invoker.hitcnt--;
|
||||
else if ( A_Melee(int(100+invoker.charge*2.),"itamex/hit",2.,1.1,1.2,MELEE_Rip|MELEE_FleshSound|MELEE_HammerHit|MELEE_Vertical|MELEE_ExtraWide|MELEE_ForceBust) )
|
||||
{
|
||||
A_BumpFOV(.9);
|
||||
A_QuakeEx(5.,5.,5.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.35);
|
||||
A_AlertMonsters(swwm_uncapalert?0:800);
|
||||
A_WeaponOffset(0,-64,WOF_ADD|WOF_INTERPOLATE);
|
||||
SWWMUtility.DoKnockback(self,-(x.x,x.y,x.z*.1),1500.*invoker.charge);
|
||||
invoker.hitcnt = 3;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
override void DoEffect()
|
||||
{
|
||||
|
@ -50,9 +67,9 @@ Class ItamexHammer : SWWMWeapon
|
|||
if ( !Owner && !Owner.player && (Owner.player.ReadyWeapon != self) ) return;
|
||||
let psp = Owner.player.FindPSprite(PSP_WEAPON);
|
||||
if ( !psp ) return;
|
||||
if ( Owner.IsActorPlayingSound(CHAN_WEAPONEXTRA,"itamex/spin") )
|
||||
psp.x += charge*.05;
|
||||
if ( bSpinning ) psp.x += charge*.05;
|
||||
psp.x *= .8;
|
||||
psp.y = (psp.y-32.)*.8+32.;
|
||||
}
|
||||
|
||||
action void A_ChargeUp()
|
||||
|
@ -60,6 +77,7 @@ Class ItamexHammer : SWWMWeapon
|
|||
A_SetAngle(angle+invoker.charge*.2,SPF_INTERPOLATE);
|
||||
A_SetPitch(pitch*.9,SPF_INTERPOLATE);
|
||||
invoker.charge = min(100.,invoker.charge+20.);
|
||||
invoker.bSpinning = true;
|
||||
if ( !IsActorPlayingSound(CHAN_WEAPONEXTRA,"itamex/spin") )
|
||||
A_StartSound("itamex/spin",CHAN_WEAPONEXTRA,CHANF_LOOP,.2);
|
||||
A_SoundVolume(CHAN_WEAPONEXTRA,(invoker.charge/100.)**.5);
|
||||
|
@ -105,6 +123,7 @@ Class ItamexHammer : SWWMWeapon
|
|||
if ( invoker.charge <= 30. )
|
||||
{
|
||||
A_StartSound("itamex/swing",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.bSpinning = false;
|
||||
return ResolveState("ZoomEnd");
|
||||
}
|
||||
return ResolveState(null);
|
||||
|
@ -156,6 +175,10 @@ Class ItamexHammer : SWWMWeapon
|
|||
|
||||
action void A_AltHit()
|
||||
{
|
||||
// stop extended fall
|
||||
invoker.bFalling = false;
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_WeaponOffset(0,32,WOF_INTERPOLATE);
|
||||
if ( (pos.z <= floorz+16) && (pitch > -15) )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA2);
|
||||
|
@ -234,9 +257,16 @@ Class ItamexHammer : SWWMWeapon
|
|||
XZW2 PQRST 3;
|
||||
Goto Ready;
|
||||
Ready:
|
||||
XZW2 A 0
|
||||
{
|
||||
}
|
||||
XZW2 A 1
|
||||
{
|
||||
A_WeaponOffset(0,32,WOF_INTERPOLATE); // ensure we're back to normal offsets just in case
|
||||
// ensure we're back to normal just in case
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
invoker.bSpinning = false;
|
||||
invoker.bFalling = false;
|
||||
A_WeaponOffset(0,32,WOF_INTERPOLATE);
|
||||
A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1);
|
||||
}
|
||||
Wait;
|
||||
|
@ -283,9 +313,18 @@ Class ItamexHammer : SWWMWeapon
|
|||
XZW5 A 1 A_BumpView(3.);
|
||||
XZW5 B 1
|
||||
{
|
||||
if ( !player.onground && (pos.z > floorz+32) && (vel.z < 0) )
|
||||
{
|
||||
invoker.hitcnt = 0;
|
||||
invoker.bFalling = true;
|
||||
A_StartSound("itamex/spin",CHAN_WEAPONEXTRA,CHANF_LOOP);
|
||||
return ResolveState("AltFall");
|
||||
}
|
||||
A_BumpView(3.);
|
||||
A_HammerAltHit();
|
||||
return ResolveState(null);
|
||||
}
|
||||
AltReleaseStop:
|
||||
XZW5 CD 1 A_BumpView(4.);
|
||||
XZW5 E 1 A_AltHit();
|
||||
XZW5 FGHIJKLMN 2;
|
||||
|
@ -293,6 +332,16 @@ Class ItamexHammer : SWWMWeapon
|
|||
XZW5 PQRS 2;
|
||||
XZW5 TUVW 3;
|
||||
Goto Ready;
|
||||
AltFall:
|
||||
XZW5 B 1
|
||||
{
|
||||
A_BumpView(3.);
|
||||
A_HammerAltFallHit();
|
||||
return A_JumpIf(player.onground,1);
|
||||
}
|
||||
Wait;
|
||||
XZW5 B 1;
|
||||
Goto AltReleaseStop;
|
||||
Zoom:
|
||||
XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW5 XYZ 2 A_BumpAngle(-2,tics:2);
|
||||
|
|
|
@ -134,11 +134,24 @@ extend Class SWWMHandler
|
|||
noiz = min(lastdmg*.03*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),3.5);
|
||||
PPShader.SetUniform1f("Glitch","str2",noiz);
|
||||
}
|
||||
if ( (demo.player.ReadyWeapon is 'ItamexHammer') && demo.IsActorPlayingSound(CHAN_WEAPONEXTRA,"itamex/spin") )
|
||||
if ( demo.player.ReadyWeapon is 'ItamexHammer' )
|
||||
{
|
||||
PPShader.SetEnabled("WindBlur",true);
|
||||
PPShader.SetUniform1f("WindBlur","Speed",ItamexHammer(demo.player.ReadyWeapon).charge/100.);
|
||||
PPShader.SetUniform1f("WindBlur","Fade",(ItamexHammer(demo.player.ReadyWeapon).charge/100.)**.5);
|
||||
let ham = ItamexHammer(demo.player.ReadyWeapon);
|
||||
PPShader.SetEnabled("WindBlur",ham.bFalling||ham.bSpinning);
|
||||
if ( ham.bFalling )
|
||||
{
|
||||
double hamfact = clamp(-demo.vel.z/25.,0.,1.);
|
||||
PPShader.SetUniform1f("WindBlur","Speed",hamfact);
|
||||
PPShader.SetUniform1f("WindBlur","Fade",hamfact**.5);
|
||||
PPShader.SetUniform2f("WindBlur","WindDir",(0.,1.));
|
||||
}
|
||||
else if ( ham.bSpinning )
|
||||
{
|
||||
double hamfact = clamp(ham.charge/100.,0.,1.);
|
||||
PPShader.SetUniform1f("WindBlur","Speed",hamfact);
|
||||
PPShader.SetUniform1f("WindBlur","Fade",hamfact**.5);
|
||||
PPShader.SetUniform2f("WindBlur","WindDir",(1.,0.));
|
||||
}
|
||||
}
|
||||
else PPShader.SetEnabled("WindBlur",false);
|
||||
if ( !demo.InStateSequence(demo.CurState,demo.FindState("Dash")) )
|
||||
|
|
Loading…
Reference in New Issue