diff --git a/language.version b/language.version index 854e6dce1..9d6758d80 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r670 \cu(Fri 11 Dec 13:25:44 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r671 \cu(Fri 11 Dec 17:49:22 CET 2020)"; diff --git a/modeldef.demolitionist b/modeldef.demolitionist index 83dfc1585..328725b29 100644 --- a/modeldef.demolitionist +++ b/modeldef.demolitionist @@ -607,138 +607,3 @@ Model "Demolitionist" FrameIndex XZWZ S 1 20 SurfaceSkin 1 1 "DemoFace_Dead.png" } - -Model "SWWMGesture" -{ - Path "models" - Model 0 "GestureArms_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 - - // Wave - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - // Thumbs Up - FrameIndex XZW1 P 0 17 - FrameIndex XZW1 Q 0 18 - FrameIndex XZW1 R 0 19 - FrameIndex XZW1 S 0 20 - FrameIndex XZW1 T 0 21 - FrameIndex XZW1 U 0 22 - FrameIndex XZW1 V 0 23 - FrameIndex XZW1 W 0 24 - FrameIndex XZW1 X 0 25 - FrameIndex XZW1 Y 0 26 - FrameIndex XZW1 Z 0 27 - FrameIndex XZW2 A 0 28 - FrameIndex XZW2 B 0 29 - FrameIndex XZW2 C 0 30 - FrameIndex XZW2 D 0 31 - FrameIndex XZW2 E 0 32 - FrameIndex XZW2 F 0 33 - // Victory - FrameIndex XZW2 G 0 35 - FrameIndex XZW2 H 0 36 - FrameIndex XZW2 I 0 37 - FrameIndex XZW2 J 0 38 - FrameIndex XZW2 K 0 39 - FrameIndex XZW2 L 0 40 - FrameIndex XZW2 M 0 41 - FrameIndex XZW2 N 0 42 - FrameIndex XZW2 O 0 43 - FrameIndex XZW2 P 0 44 - FrameIndex XZW2 Q 0 45 - FrameIndex XZW2 R 0 46 - FrameIndex XZW2 S 0 47 - FrameIndex XZW2 T 0 48 - FrameIndex XZW2 U 0 49 - FrameIndex XZW2 V 0 50 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - // Blow Kiss - FrameIndex XZW2 Z 0 55 - FrameIndex XZW3 A 0 56 - FrameIndex XZW3 B 0 57 - FrameIndex XZW3 C 0 58 - FrameIndex XZW3 D 0 59 - FrameIndex XZW3 E 0 60 // smooch - FrameIndex XZW3 F 0 61 - FrameIndex XZW3 G 0 62 - FrameIndex XZW3 H 0 63 - FrameIndex XZW3 I 0 64 - FrameIndex XZW3 J 0 65 - FrameIndex XZW3 K 0 66 // blow - FrameIndex XZW3 L 0 67 - FrameIndex XZW3 M 0 68 - FrameIndex XZW3 N 0 69 - FrameIndex XZW3 O 0 70 - FrameIndex XZW3 P 0 71 - FrameIndex XZW3 Q 0 72 - FrameIndex XZW3 R 0 73 - // Quick Grenade - SurfaceSkin 0 3 "ExplodiumGun.png" - FrameIndex XZW3 S 0 75 - FrameIndex XZW3 T 0 76 - FrameIndex XZW3 U 0 77 - FrameIndex XZW3 V 0 78 - FrameIndex XZW3 W 0 79 - FrameIndex XZW3 X 0 80 // arm - FrameIndex XZW3 Y 0 81 - FrameIndex XZW3 Z 0 82 - FrameIndex XZW4 A 0 83 - FrameIndex XZW4 B 0 84 - FrameIndex XZW4 C 0 85 - FrameIndex XZW4 D 0 86 // swing - FrameIndex XZW4 E 0 87 - FrameIndex XZW4 F 0 88 - FrameIndex XZW4 G 0 89 - FrameIndex XZW4 H 0 90 - SurfaceSkin 0 3 "" - FrameIndex XZW4 I 0 91 // throw - FrameIndex XZW4 J 0 92 - FrameIndex XZW4 K 0 93 - FrameIndex XZW4 L 0 94 - FrameIndex XZW4 M 0 95 - // Headpat - FrameIndex XZW4 N 0 97 - FrameIndex XZW4 O 0 98 - FrameIndex XZW4 P 0 99 - FrameIndex XZW4 Q 0 100 - FrameIndex XZW4 R 0 101 - FrameIndex XZW4 S 0 102 // patstart - FrameIndex XZW4 T 0 103 - FrameIndex XZW4 U 0 104 - FrameIndex XZW4 V 0 105 - FrameIndex XZW4 W 0 106 - FrameIndex XZW4 X 0 107 // patpat - FrameIndex XZW4 Y 0 108 - FrameIndex XZW4 Z 0 109 - FrameIndex XZW5 A 0 110 - FrameIndex XZW5 B 0 111 - FrameIndex XZW5 C 0 112 - FrameIndex XZW5 D 0 113 // patend - FrameIndex XZW5 E 0 114 - FrameIndex XZW5 F 0 115 - FrameIndex XZW5 G 0 116 - FrameIndex XZW5 H 0 117 - FrameIndex XZW5 I 0 118 - FrameIndex XZW5 J 0 119 - // TODO Collectible Gestures -} diff --git a/modeldef.gesture b/modeldef.gesture new file mode 100644 index 000000000..298295cc7 --- /dev/null +++ b/modeldef.gesture @@ -0,0 +1,147 @@ +Model "SWWMGesture" +{ + Path "models" + Model 0 "GestureArms_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 + + // Initial + FrameIndex XZW1 A 0 0 + // Wave + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + // Thumbs Up + FrameIndex XZW1 Q 0 17 + FrameIndex XZW1 R 0 18 + FrameIndex XZW1 S 0 19 + FrameIndex XZW1 T 0 20 + FrameIndex XZW1 U 0 21 + FrameIndex XZW1 V 0 22 + FrameIndex XZW1 W 0 23 + FrameIndex XZW1 X 0 24 + FrameIndex XZW1 Y 0 25 + FrameIndex XZW1 Z 0 26 + FrameIndex XZW2 A 0 27 + FrameIndex XZW2 B 0 28 + FrameIndex XZW2 C 0 29 + FrameIndex XZW2 D 0 30 + FrameIndex XZW2 E 0 31 + FrameIndex XZW2 F 0 32 + FrameIndex XZW2 G 0 33 + // Victory + FrameIndex XZW2 H 0 35 + FrameIndex XZW2 I 0 36 + FrameIndex XZW2 J 0 37 + FrameIndex XZW2 K 0 38 + FrameIndex XZW2 L 0 39 + FrameIndex XZW2 M 0 40 + FrameIndex XZW2 N 0 41 + FrameIndex XZW2 O 0 42 + FrameIndex XZW2 P 0 43 + FrameIndex XZW2 Q 0 44 + FrameIndex XZW2 R 0 45 + FrameIndex XZW2 S 0 46 + FrameIndex XZW2 T 0 47 + FrameIndex XZW2 U 0 48 + FrameIndex XZW2 V 0 49 + FrameIndex XZW2 W 0 50 + FrameIndex XZW2 X 0 51 + FrameIndex XZW2 Y 0 52 + FrameIndex XZW2 Z 0 53 + // Blow Kiss + FrameIndex XZW3 A 0 55 + FrameIndex XZW3 B 0 56 + FrameIndex XZW3 C 0 57 + FrameIndex XZW3 D 0 58 + FrameIndex XZW3 E 0 59 + FrameIndex XZW3 F 0 60 // smooch + FrameIndex XZW3 G 0 61 + FrameIndex XZW3 H 0 62 + FrameIndex XZW3 I 0 63 + FrameIndex XZW3 J 0 64 + FrameIndex XZW3 K 0 65 + FrameIndex XZW3 L 0 66 // blow + FrameIndex XZW3 M 0 67 + FrameIndex XZW3 N 0 68 + FrameIndex XZW3 O 0 69 + FrameIndex XZW3 P 0 70 + FrameIndex XZW3 Q 0 71 + FrameIndex XZW3 R 0 72 + FrameIndex XZW3 S 0 73 + // Headpat + FrameIndex XZW3 T 0 75 + FrameIndex XZW3 U 0 76 + FrameIndex XZW3 V 0 77 + FrameIndex XZW3 W 0 78 + FrameIndex XZW3 X 0 79 + FrameIndex XZW3 Y 0 80 // patstart + FrameIndex XZW3 Z 0 81 + FrameIndex XZW4 A 0 82 + FrameIndex XZW4 B 0 83 + FrameIndex XZW4 C 0 84 + FrameIndex XZW4 D 0 85 // patpat + FrameIndex XZW4 E 0 86 + FrameIndex XZW4 F 0 87 + FrameIndex XZW4 G 0 88 + FrameIndex XZW4 H 0 89 + FrameIndex XZW4 I 0 90 + FrameIndex XZW4 J 0 91 // patend + FrameIndex XZW4 K 0 92 + FrameIndex XZW4 L 0 93 + FrameIndex XZW4 M 0 94 + FrameIndex XZW4 N 0 95 + FrameIndex XZW4 O 0 96 + FrameIndex XZW4 P 0 97 +} +Model "SWWMGesture" +{ + Path "models" + Model 0 "Grenade1st_d.3d" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "ExplodiumGun.png" + AngleOffset -90 + Scale -0.005 0.0025 0.005 + + // Quick Grenade + FrameIndex XZW4 Q 0 0 + FrameIndex XZW4 R 0 1 + FrameIndex XZW4 S 0 2 + FrameIndex XZW4 T 0 3 + FrameIndex XZW4 U 0 4 + FrameIndex XZW4 V 0 5 // arm + FrameIndex XZW4 W 0 6 + FrameIndex XZW4 X 0 7 + FrameIndex XZW4 Y 0 8 + FrameIndex XZW4 Z 0 9 + FrameIndex XZW5 A 0 10 + FrameIndex XZW5 B 0 11 // swing + FrameIndex XZW5 C 0 12 + FrameIndex XZW5 D 0 13 + FrameIndex XZW5 E 0 14 + FrameIndex XZW5 F 0 15 + SurfaceSkin 0 3 "" + FrameIndex XZW5 G 0 16 // throw + FrameIndex XZW5 H 0 17 + FrameIndex XZW5 I 0 18 + FrameIndex XZW5 J 0 19 + FrameIndex XZW5 K 0 20 +} +// TODO Collectible Gestures diff --git a/models/DemoFace.xcf b/models/DemoFace.xcf index 9730599c2..1da0dced1 100644 Binary files a/models/DemoFace.xcf and b/models/DemoFace.xcf differ diff --git a/models/DemoFace_Head.png b/models/DemoFace_Head.png new file mode 100644 index 000000000..23fca1ba4 Binary files /dev/null and b/models/DemoFace_Head.png differ diff --git a/models/GestureArms.blend b/models/GestureArms.blend index 212220aa3..38aaaa938 100644 Binary files a/models/GestureArms.blend and b/models/GestureArms.blend differ diff --git a/models/GestureArms_a.3d b/models/GestureArms_a.3d index 44974fd4d..49e9d110c 100644 Binary files a/models/GestureArms_a.3d and b/models/GestureArms_a.3d differ diff --git a/models/GestureArms_d.3d b/models/GestureArms_d.3d index b0ecd9ed6..36a38de1b 100644 Binary files a/models/GestureArms_d.3d and b/models/GestureArms_d.3d differ diff --git a/models/Grenade1st.blend b/models/Grenade1st.blend new file mode 100644 index 000000000..f99bd9b01 Binary files /dev/null and b/models/Grenade1st.blend differ diff --git a/models/Grenade1st_a.3d b/models/Grenade1st_a.3d new file mode 100644 index 000000000..3b16c8831 Binary files /dev/null and b/models/Grenade1st_a.3d differ diff --git a/models/Grenade1st_d.3d b/models/Grenade1st_d.3d new file mode 100644 index 000000000..97dd515fb Binary files /dev/null and b/models/Grenade1st_d.3d differ diff --git a/models/modelnotes.txt b/models/modelnotes.txt index 85d7a28da..7f48a8170 100644 --- a/models/modelnotes.txt +++ b/models/modelnotes.txt @@ -24,6 +24,14 @@ Collectible pickup animations: - Kirin Manga - Kirin Plush +Key pickup animations: + - Keycard + - Skull key + - Heretic Yellow Key + - Heretic Green Key + - Heretic Blue Key + - Heretic Red Key + # Post-release stuff Character models: diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index 1fb35b56a..9edc6cc63 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -535,7 +535,7 @@ Class Demolitionist : PlayerPawn } // quick grenade if ( (player.playerstate != PST_DEAD) && (player.cmd.buttons&BT_USER4) ) - SWWMGesture.SetGesture(self,-1); + SWWMGesture.SetGesture(self,GS_Grenade); } override void Tick() { @@ -3067,7 +3067,7 @@ Class HeadpatTracker : Actor if ( user is 'Demolitionist' ) { patter = user; - let g = SWWMGesture.SetGesture(Demolitionist(patter),-2); + let g = SWWMGesture.SetGesture(Demolitionist(patter),GS_Headpat); if ( !g ) return false; // can't headpat at the moment patting = true; g.pats = self; @@ -3088,6 +3088,70 @@ Class HHitList Vector3 dir; } +enum EGestureSlot +{ + // keys + GS_RedKeycard = -250, + GS_BlueKeycard, + GS_YellowKeycard, + GS_RedSkull, + GS_BlueSkull, + GS_YellowSkull, + GS_GreenKeycard, + GS_SilverKeycard, + GS_OrangeKeycard, + GS_YellowKey, + GS_GreenKey, + GS_BlueKey, + GS_RedKey, + // key re-use + GS_RedKeycard2 = -200, + GS_BlueKeycard2, + GS_YellowKeycard2, + GS_RedSkull2, + GS_BlueSkull2, + GS_YellowSkull2, + GS_GreenKeycard2, + GS_SilverKeycard2, + GS_OrangeKeycard2, + GS_YellowKey2, + GS_GreenKey2, + GS_BlueKey2, + GS_RedKey2, + // collectibles + GS_MashiroPlush = -150, + GS_AkariProject, + GS_LoveSignals, + GS_NutatcoBar, + GS_FrispyCorn, + GS_DemoPlush, + GS_SayaBean, + GS_KirinCummies, + GS_MilkBreads, + GS_KirinManga, + GS_KirinPlush, + // collectible re-use + GS_MashiroPlush2 = -100, + GS_AkariProject2, + GS_LoveSignals2, + GS_NutatcoBar2, + GS_FrispyCorn2, + GS_DemoPlush2, + GS_SayaBean2, + GS_KirinCummies2, + GS_MilkBreads2, + GS_KirinManga2, + GS_KirinPlush2, + // special use + GS_Headpat = -50, + GS_Grenade, + // general gestures + GS_Wave = 0, + GS_ThumbsUp, + GS_Victory, + GS_BlowKiss +}; + // First person gestures Class SWWMGesture : SWWMWeapon { @@ -3107,6 +3171,16 @@ Class SWWMGesture : SWWMWeapon { return false; } + override void DoEffect() + { + Super.DoEffect(); + if ( Owner && Owner.player && (Owner.player.ReadyWeapon == self) && (Owner.Health <= 0) ) + { + let psp = Owner.player.FindPSprite(PSP_WEAPON); + if ( psp && (psp.CurState != ResolveState("Deselect")) ) + Owner.player.SetPSprite(PSP_WEAPON,ResolveState("Deselect")); + } + } static SWWMGesture SetGesture( PlayerPawn mo, int which = 0 ) { @@ -3119,8 +3193,8 @@ Class SWWMGesture : SWWMWeapon // already gesturing // just queue another one let g = SWWMGesture(mo.player.ReadyWeapon); - if ( which <= -100 ) g.squeue.Push(which); // collectable gestures have a dedicated array - if ( which <= -1 ) return null; // special gestures can't be queued + if ( which < -50 ) g.squeue.Push(which); // collectable gestures have a dedicated array + if ( which < 0 ) return null; // special gestures can't be queued else { g.nextgesture = which; @@ -3343,149 +3417,153 @@ Class SWWMGesture : SWWMWeapon States { Select: - TNT1 A 1 - { - A_FullRaise(); - if ( Health <= 0 ) A_FinishGesture(); - } + XZW1 A 1 A_FullRaise(); Goto Ready; Ready: - TNT1 A 1 + XZW1 A 1 { switch ( invoker.whichgesture ) { - case -2: + case GS_Headpat: return ResolveState("Headpat"); - case -1: + case GS_Grenade: return ResolveState("QuickGrenade"); - case 1: + case GS_Wave: + return ResolveState("Wave"); + case GS_ThumbsUp: return ResolveState("Approve"); - case 2: + case GS_Victory: return ResolveState("Victory"); - case 3: + case GS_BlowKiss: return ResolveState("BlowKiss"); } - return ResolveState("Wave"); + return ResolveState("NoGesture"); } Wait; Fire: - TNT1 A 1; + XZW1 A 1; Goto Ready; Headpat: - TNT1 A 0 A_JumpIf(CountInv("RagekitPower"),"Ragepat"); - TNT1 A 3 A_CallPlayerGesture("Headpat","Headpat"); - XZW4 NO 3; - XZW4 P 2 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 QR 2; - XZW4 STUV 1; - XZW4 W 2; - XZW4 X 2 A_Headpat(); - XZW4 YZ 2; - XZW5 ABC 1; - XZW4 STUV 1; - XZW4 W 2; - XZW4 X 2 A_Headpat(); - XZW4 YZ 2; - XZW5 ABC 1; - XZW5 DE 2; - XZW5 F 2 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 GHIJ 3; - TNT1 A 4 A_HeadpatEnd(); - TNT1 A -1 A_FinishGesture(); - Ragepat: - TNT1 A 3 A_CallPlayerGesture("Ragepat","Ragepat"); - XZW4 NO 2; - XZW4 P 1 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 QR 1; - XZW4 SU 1; - XZW4 W 1; - XZW4 X 1 A_Headpat(); - XZW4 YZ 1; - XZW5 AC 1; - XZW4 SU 1; - XZW4 W 1; - XZW4 X 1 A_Headpat(); - XZW4 YZ 1; - XZW5 AC 1; - XZW4 SU 1; - XZW4 W 1; - XZW4 X 1 A_Headpat(); - XZW4 YZ 1; - XZW5 AC 1; - XZW4 SU 1; - XZW4 W 1; - XZW4 X 1 A_Headpat(); - XZW4 YZ 1; - XZW5 AC 1; - XZW5 DE 1; - XZW5 F 1 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 GHIJ 2; - TNT1 A 4 A_HeadpatEnd(); - TNT1 A -1 A_FinishGesture(); - QuickGrenade: - TNT1 A 3; - XZW3 S 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW1 A 0 A_JumpIf(CountInv("RagekitPower"),"Ragepat"); + XZW1 A 3 A_CallPlayerGesture("Headpat","Headpat"); XZW3 TU 3; - XZW3 V 3 A_PlayerReload(); - XZW3 W 2 A_StartSound("explodium/magpin",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 XY 2; - XZW3 Z 3; - XZW4 A 2 + XZW3 V 2 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 WX 2; + XZW3 YZ 1; + XZW4 AB 1; + XZW4 C 2; + XZW4 D 2 A_Headpat(); + XZW4 EF 2; + XZW4 GHI 1; + XZW3 YZ 1; + XZW4 AB 1; + XZW4 C 2; + XZW4 D 2 A_Headpat(); + XZW4 EF 2; + XZW4 GHI 1; + XZW4 JK 2; + XZW4 L 2 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 MNOP 3; + XZW1 A 0 A_HeadpatEnd(); + XZW1 A -1 A_FinishGesture(); + Stop; + Ragepat: + XZW1 A 3 A_CallPlayerGesture("Ragepat","Ragepat"); + XZW3 TU 2; + XZW3 V 1 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 WX 1; + XZW3 Y 1; + XZW4 AC 1; + XZW4 D 1 A_Headpat(); + XZW4 EF 1; + XZW4 GI 1; + XZW3 Y 1; + XZW4 AC 1; + XZW4 D 1 A_Headpat(); + XZW4 EF 1; + XZW4 GI 1; + XZW3 Y 1; + XZW4 AC 1; + XZW4 D 1 A_Headpat(); + XZW4 EF 1; + XZW4 GI 1; + XZW3 Y 1; + XZW4 AC 1; + XZW4 D 1 A_Headpat(); + XZW4 EF 1; + XZW4 GIJK 1; + XZW4 L 1 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 MNOP 2; + XZW1 A 0 A_HeadpatEnd(); + XZW1 A -1 A_FinishGesture(); + Stop; + QuickGrenade: + XZW4 Q 3; + XZW4 R 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 ST 3; + XZW4 U 3 A_PlayerReload(); + XZW4 V 2 A_StartSound("explodium/magpin",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 WX 2; + XZW4 Y 3; + XZW4 Z 2 { A_StartSound("explodium/throwmag",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW4 BC 2; - XZW4 DEFGH 2; - XZW4 I 2 A_ThrowMag(); - XZW4 JKLM 3; - TNT1 A 4; - TNT1 A 0 A_JumpIf(player.cmd.buttons&BT_USER4,"QuickGrenade"); - TNT1 A -1 A_FinishGesture(); + XZW5 AB 2; + XZW5 CDEF 2; + XZW5 G 2 A_ThrowMag(); + XZW5 HIJ 3; + XZW5 K 4; + XZW4 Q 0 A_JumpIf(player.cmd.buttons&BT_USER4,"QuickGrenade"); + XZW4 Q -1 A_FinishGesture(); Stop; Wave: - TNT1 A 3 A_CallPlayerGesture("Wave","CrouchWave"); - XZW1 AB 3; + XZW1 A 3 A_CallPlayerGesture("Wave","CrouchWave"); + XZW1 B 3; XZW1 C 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); XZW1 DEFGHIJ 3; XZW1 K 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW1 LMNO 3; - TNT1 A -1 A_FinishGesture(); + XZW1 LMNOP 3; + XZW1 A -1 A_FinishGesture(); Stop; Approve: - TNT1 A 3 A_CallPlayerGesture("Approve","CrouchApprove"); - XZW1 PQ 3; - XZW1 R 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW1 STUVWX 3; - XZW1 Y 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW1 Z 3; - XZW2 ABCDEF 3; - TNT1 A -1 A_FinishGesture(); + XZW1 A 3 A_CallPlayerGesture("Approve","CrouchApprove"); + XZW1 QR 3; + XZW1 S 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW1 TUVWXY 3; + XZW1 Z 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 A 3; + XZW2 BCDEFG 3; + XZW1 A -1 A_FinishGesture(); Stop; Victory: - TNT1 A 3 A_CallPlayerGesture("Victory","CrouchVictory"); - XZW2 GH 3; - XZW2 I 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 JKLMNOPQ 3; - XZW2 R 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 STUVWXY 3; - TNT1 A -1 A_FinishGesture(); + XZW1 A 3 A_CallPlayerGesture("Victory","CrouchVictory"); + XZW2 HI 3; + XZW2 J 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 KLMNOPQR 3; + XZW2 S 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 TUVWXYZ 3; + XZW1 A -1 A_FinishGesture(); Stop; BlowKiss: - TNT1 A 3 A_CallPlayerGesture("BlowKiss","CrouchBlowKiss"); - XZW2 Z 3; + XZW1 A 3 A_CallPlayerGesture("BlowKiss","CrouchBlowKiss"); XZW3 A 3; - XZW3 B 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 CD 3; - XZW3 E 3 A_Smooch(); - XZW3 FGHI 3; - XZW3 J 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 K 3 A_BlowKiss(); - XZW3 LMNOPQR 3; - TNT1 A -1 A_FinishGesture(); + XZW3 B 3; + XZW3 C 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 DE 3; + XZW3 F 3 A_Smooch(); + XZW3 GHIJ 3; + XZW3 K 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 L 3 A_BlowKiss(); + XZW3 MNOPQRS 3; + XZW1 A -1 A_FinishGesture(); Stop; + NoGesture: + XZW1 A 1 A_FinishGesture(); + Goto Deselect; Deselect: - TNT1 A -1 A_FullLower(); + XZW1 A -1 A_FullLower(); Stop; } }