Implement "emergency melee" for cases where the player has no weapons whatsoever.

This commit is contained in:
Mari the Deer 2021-01-25 21:14:52 +01:00
commit 4fc0713ec2
3 changed files with 60 additions and 5 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r232 \cu(Mon 25 Jan 17:32:44 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r232 \cu(2021-01-25 17:32:44)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r232 \cu(Mon 25 Jan 21:14:52 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r232 \cu(2021-01-25 21:14:52)\c-";

View file

@ -144,6 +144,33 @@ Model "SWWMGesture"
FrameIndex XZW5 J 0 19
FrameIndex XZW5 K 0 20
}
Model "SWWMGesture"
{
Path "models"
Model 0 "QuickPunch1st_d.3d"
SurfaceSkin 0 0 "DemoTags.png"
SurfaceSkin 0 1 "DemoArms.png"
SurfaceSkin 0 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 0 0
FrameIndex XZW0 B 0 1
FrameIndex XZW0 C 0 2
FrameIndex XZW0 D 0 3
FrameIndex XZW0 E 0 4
FrameIndex XZW0 F 0 5
FrameIndex XZW0 G 0 6
FrameIndex XZW0 H 0 7
FrameIndex XZW0 I 0 8
FrameIndex XZW0 J 0 9
FrameIndex XZW0 K 0 10
FrameIndex XZW0 L 0 11
FrameIndex XZW0 M 0 12
FrameIndex XZW0 N 0 13
}
// Key Gestures
Model "SWWMRedCardGesture"
{

View file

@ -596,9 +596,15 @@ Class Demolitionist : PlayerPawn
if ( player.onground && (player.jumptics < -18) )
player.jumptics = 0;
}
// quick grenade
if ( (player.playerstate != PST_DEAD) && (player.cmd.buttons&BT_USER4) )
SWWMGesture.SetGesture(self,GS_Grenade);
if ( player.playerstate != PST_DEAD )
{
// quick grenade
if ( player.cmd.buttons&BT_USER4 )
SWWMGesture.SetGesture(self,GS_Grenade);
// emergency melee with no weapon
else if ( !player.ReadyWeapon && (player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1)) )
SWWMGesture.SetGesture(self,GS_EmptyMelee);
}
}
override void Tick()
{
@ -3348,6 +3354,7 @@ enum EGestureSlot
// special use
GS_Headpat = -50,
GS_Grenade,
GS_EmptyMelee,
// no gesture
GS_Null = 0,
// general gestures
@ -3694,6 +3701,8 @@ Class SWWMGesture : SWWMWeapon
return ResolveState("Headpat");
case GS_Grenade:
return ResolveState("QuickGrenade");
case GS_EmptyMelee:
return ResolveState("EmptyMelee");
case GS_Wave:
return ResolveState("Wave");
case GS_ThumbsUp:
@ -3784,6 +3793,25 @@ Class SWWMGesture : SWWMWeapon
XZW4 Q 0 A_JumpIf(player.cmd.buttons&BT_USER4,"QuickGrenade");
XZW4 Q -1 A_FinishGesture();
Stop;
EmptyMelee:
XZW0 ABC 1;
XZW0 D 1
{
A_PlayerMelee(true);
A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP);
A_Parry(9);
}
XZW0 EF 1;
XZW0 G 1 A_Melee();
XZW0 HIJKLMN 2;
XZW0 A -1
{
if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1) )
return ResolveState("EmptyMelee")+3;
A_FinishGesture();
return ResolveState(null);
}
Stop;
Wave:
XZW1 A 3 A_CallPlayerGesture("Wave","CrouchWave");
XZW1 B 3;