Add ability to punch while key animations are playing.

This commit is contained in:
Mari the Deer 2020-12-30 23:52:15 +01:00
commit abfd697daf
7 changed files with 435 additions and 5 deletions

View file

@ -1,2 +1,2 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r716 \cu(Wed 30 Dec 22:30:44 CET 2020)";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r717 \cu(Wed 30 Dec 23:52:15 CET 2020)";

View file

@ -240,6 +240,33 @@ Model "SWWMRedCardGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMRedCardGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMYellowCardGesture"
{
Path "models"
@ -335,6 +362,33 @@ Model "SWWMYellowCardGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMYellowCardGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMBlueCardGesture"
{
Path "models"
@ -430,6 +484,33 @@ Model "SWWMBlueCardGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMBlueCardGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMSilverCardGesture"
{
Path "models"
@ -525,6 +606,33 @@ Model "SWWMSilverCardGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMSilverCardGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMGreenCardGesture"
{
Path "models"
@ -620,6 +728,33 @@ Model "SWWMGreenCardGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMGreenCardGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMOrangeCardGesture"
{
Path "models"
@ -715,6 +850,33 @@ Model "SWWMOrangeCardGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMOrangeCardGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMRedSkullGesture"
{
Path "models"
@ -809,6 +971,33 @@ Model "SWWMRedSkullGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMRedSkullGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMYellowSkullGesture"
{
Path "models"
@ -903,6 +1092,33 @@ Model "SWWMYellowSkullGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMYellowSkullGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMBlueSkullGesture"
{
Path "models"
@ -997,6 +1213,33 @@ Model "SWWMBlueSkullGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMBlueSkullGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMGreenKeyGesture"
{
Path "models"
@ -1091,6 +1334,33 @@ Model "SWWMGreenKeyGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMGreenKeyGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMBlueKeyGesture"
{
Path "models"
@ -1185,6 +1455,33 @@ Model "SWWMBlueKeyGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMBlueKeyGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMYellowKeyGesture"
{
Path "models"
@ -1279,6 +1576,33 @@ Model "SWWMYellowKeyGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMYellowKeyGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
Model "SWWMRedKeyGesture"
{
Path "models"
@ -1373,4 +1697,31 @@ Model "SWWMRedKeyGesture"
FrameIndex XZW3 X 0 78
FrameIndex XZW3 Y 0 79
}
Model "SWWMRedKeyGesture"
{
Path "models"
Model 1 "QuickPunch1st_d.3d"
SurfaceSkin 1 0 "DemoTags.png"
SurfaceSkin 1 1 "DemoArms.png"
SurfaceSkin 1 2 "DemoSoft.png"
AngleOffset -90
Scale -0.005 0.0025 0.005
// Punch
FrameIndex XZW0 A 1 0
FrameIndex XZW0 B 1 1
FrameIndex XZW0 C 1 2
FrameIndex XZW0 D 1 3
FrameIndex XZW0 E 1 4
FrameIndex XZW0 F 1 5
FrameIndex XZW0 G 1 6
FrameIndex XZW0 H 1 7
FrameIndex XZW0 I 1 8
FrameIndex XZW0 J 1 9
FrameIndex XZW0 K 1 10
FrameIndex XZW0 L 1 11
FrameIndex XZW0 M 1 12
FrameIndex XZW0 N 1 13
}
// TODO Collectible Gestures

BIN
models/QuickPunch1st.blend Normal file

Binary file not shown.

BIN
models/QuickPunch1st_a.3d Normal file

Binary file not shown.

BIN
models/QuickPunch1st_d.3d Normal file

Binary file not shown.

View file

@ -131,6 +131,7 @@ Class SWWMItemGesture : SWWMWeapon abstract
action void A_FinishGesture()
{
A_WeaponOffset(0,32); // fix key punch offset
let gest = invoker.gest;
if ( !gest )
{

View file

@ -321,6 +321,58 @@ Class SWWMKeyRed : SWWMKey
// (yeah, I'm lazy, and there's a lot of keys)
Class SWWMKeyGesture : SWWMItemGesture abstract
{
// due to specifics™ we have to handle the punching here
override void DoEffect()
{
Super.DoEffect();
if ( !Owner || !Owner.player || (Owner.player.Health <= 0) || (Owner.player.ReadyWeapon != self) )
return;
PSprite psp = Owner.player.FindPSPrite(PSP_WEAPON+1);
if ( !(Owner.player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1)) && !psp )
{
// not punching, move weapon back
psp = Owner.player.FindPSPrite(PSP_WEAPON);
if ( psp )
{
psp.oldx = psp.x;
psp.x = max(0,psp.x-8);
psp.oldy = psp.y;
psp.y = min(32,psp.y+4);
}
return;
}
if ( psp )
{
// already punching, let's shift the weapon away
psp = Owner.player.FindPSPrite(PSP_WEAPON);
if ( psp )
{
// shift away from center to center
psp.oldx = psp.x;
psp.x = min(70,psp.x+8);
psp.oldy = psp.y;
psp.y = max(16,psp.y-4);
}
return;
}
// start punch
if ( Owner.player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1) )
{
psp = Owner.player.FindPSPrite(PSP_WEAPON);
if ( psp && (psp.CurState == FindState("WaitingForEnd")) )
return;
Owner.player.SetPSprite(PSP_WEAPON+1,FindState("Punch"));
psp = Owner.player.FindPSPrite(PSP_WEAPON+1);
if ( psp )
{
psp.bAddWeapon = false;
psp.bAddBob = false;
psp.x = -50;
psp.y = 32;
}
}
}
States
{
Fire:
@ -330,8 +382,7 @@ Class SWWMKeyGesture : SWWMItemGesture abstract
XZW1 GHIJKLMNO 4;
XZW1 P 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP);
XZW1 QRST 3;
XZW1 A -1 A_FinishGesture();
Stop;
Goto WaitingForEnd;
AltFire:
XZW1 A 3 A_Jump(128,"Fire","AltFire2");
XZW1 U 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP);
@ -343,8 +394,7 @@ Class SWWMKeyGesture : SWWMItemGesture abstract
XZW2 KL 3;
XZW2 M 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP);
XZW2 NOPQR 3;
XZW1 A -1 A_FinishGesture();
Stop;
Goto WaitingForEnd;
AltFire2:
XZW1 A 3;
XZW2 S 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP);
@ -361,8 +411,36 @@ Class SWWMKeyGesture : SWWMItemGesture abstract
XZW3 T 4 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP);
XZW3 UV 4;
XZW3 WXY 3;
Goto WaitingForEnd;
WaitingForEnd:
XZW1 A 1 A_JumpIf(!player.FindPSprite(PSP_WEAPON+1),1);
Wait;
XZW1 A -1 A_FinishGesture();
Stop;
// overlay for melee
Punch:
XZW0 ABC 1;
PunchHold:
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 0
{
if ( player.cmd.buttons&&(BT_ATTACK|BT_ALTATTACK|BT_USER1) )
{
let psp = player.FindPSprite(PSP_WEAPON);
if ( psp && (psp.CurState != ResolveState("WaitingForEnd")) )
return ResolveState("PunchHold");
}
return ResolveState(null);
}
Stop;
}
}
Class SWWMRedCardGesture : SWWMKeyGesture {}