Dakka progress continues. More tomorrow.
This commit is contained in:
parent
1ba22e8eb6
commit
4ec3a595c4
8 changed files with 497 additions and 16 deletions
|
|
@ -14,7 +14,7 @@ More weapons, because we need 'em. In addition, all the "easy to implement" mini
|
|||
- [4] Puntzer Gamma *(Ultra Suite 2)*
|
||||
- You Gained Brouzouf *(Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot)*
|
||||
- [5] Sheen HMG *(SWWM Platinum Ep2)*
|
||||
- Dakka *(Fire the Sheen HMG at 700 RPM for one minute straight)*
|
||||
- Dakka *(Fire the Sheen HMG at 700 RPM for 30 seconds straight)*
|
||||
- [6] Quadravol *(UnSX)*
|
||||
- Gravely Roast *(Perform 50 bayonet combos with the Quadravol)*
|
||||
- [7] Sparkster x3 *(UnSX 2)*
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ crush,0,no,any
|
|||
cybully,0,no,doom
|
||||
cum,500,yes,any
|
||||
dab,200,yes,any
|
||||
dakka,60,no,any
|
||||
dakka,30,yes,any
|
||||
#dbsucc,0,no,any
|
||||
deadeye,7,yes,any
|
||||
deva,10,yes,any
|
||||
|
|
|
|||
|
|
@ -1170,7 +1170,7 @@ SWWM_ACHIEVEMENT_CUM_TXT = "Melt a grand total of %d enemies with the Rafan-Kos"
|
|||
SWWM_ACHIEVEMENT_DAB_TAG = "HAHA DAB";
|
||||
SWWM_ACHIEVEMENT_DAB_TXT = "Gib %d enemies with the Itamex Hammer";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TAG = "Dakka";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Keep firing the Sheen HMG at 700RPM for one minute straight";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Fire the Sheen HMG at 700RPM for %d seconds straight";
|
||||
SWWM_ACHIEVEMENT_DEADEYE_TAG = "Deadeye";
|
||||
SWWM_ACHIEVEMENT_DEADEYE_TXT = "Land %d consecutive Explodium Gun shots without missing";
|
||||
SWWM_ACHIEVEMENT_DEVA_TAG = "Deva Station";
|
||||
|
|
|
|||
|
|
@ -1022,7 +1022,7 @@ SWWM_ACHIEVEMENT_CYBULLY_TXT = "Mata a un Ciberdemonio con su propio cohete";
|
|||
SWWM_ACHIEVEMENT_CUM_TAG = "Soltando Todo el Chorro";
|
||||
SWWM_ACHIEVEMENT_CUM_TXT = "Melt a grand total of %d enemies with the Rafan-Kos";
|
||||
SWWM_ACHIEVEMENT_DAB_TXT = "Revienta %d enemigos con el Mazo Itamex";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Mantén el disparo de la Ametralladora Sheen a 700RPM durante un minuto entero";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Dispara la Ametralladora Sheen a 700RPM durante %d segundos consecutivos";
|
||||
SWWM_ACHIEVEMENT_DEADEYE_TAG = "En el Blanco";
|
||||
SWWM_ACHIEVEMENT_DEADEYE_TXT = "Realiza %d disparos consecutivos con la Pistola de Explodium sin fallar";
|
||||
SWWM_ACHIEVEMENT_DEVA_TXT = "Usa %d Marcas de Devastación";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r194 \cu(Thu 21 Jul 22:01:41 CEST 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r194 \cu(2022-07-21 22:01:41)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r195 \cu(Fri 22 Jul 01:34:12 CEST 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r195 \cu(2022-07-22 01:34:12)\c-";
|
||||
|
|
|
|||
|
|
@ -54,22 +54,139 @@ Model "HeavyMahSheenGun"
|
|||
FrameIndex XZW2 W 1 22
|
||||
FrameIndex XZW2 X 1 23
|
||||
// StartFire
|
||||
FrameIndex XZW2 Z 1 25 // Tween from Still
|
||||
// SlowFireOne
|
||||
FrameIndex XZW3 A 1 26
|
||||
FrameIndex XZW3 B 1 27
|
||||
FrameIndex XZW3 C 1 28
|
||||
FrameIndex XZW3 D 1 29
|
||||
FrameIndex XZW3 E 1 30
|
||||
FrameIndex XZW3 F 1 31
|
||||
FrameIndex XZW3 G 1 32 // Snap to StartFire
|
||||
// SlowFireTwo
|
||||
FrameIndex XZW3 H 1 34
|
||||
FrameIndex XZW3 I 1 35
|
||||
FrameIndex XZW3 J 1 36
|
||||
FrameIndex XZW3 K 1 37
|
||||
FrameIndex XZW3 L 1 38
|
||||
FrameIndex XZW3 M 1 39
|
||||
FrameIndex XZW3 N 1 40 // Snap to StartFire
|
||||
// SlowFireThree
|
||||
FrameIndex XZW3 O 1 42
|
||||
FrameIndex XZW3 P 1 43
|
||||
FrameIndex XZW3 Q 1 44
|
||||
FrameIndex XZW3 R 1 45
|
||||
FrameIndex XZW3 S 1 46
|
||||
FrameIndex XZW3 T 1 47
|
||||
FrameIndex XZW3 U 1 48 // Snap to StartFire
|
||||
// FastFireOne
|
||||
FrameIndex XZW3 V 1 50
|
||||
FrameIndex XZW3 W 1 51
|
||||
FrameIndex XZW3 X 1 52 // Snap to StartFire
|
||||
// FastFireTwo
|
||||
FrameIndex XZW3 Y 1 54
|
||||
FrameIndex XZW3 Z 1 55
|
||||
FrameIndex XZW4 A 1 56 // Snap to StartFire
|
||||
// FastFireThree
|
||||
FrameIndex XZW4 B 1 58
|
||||
FrameIndex XZW4 C 1 59
|
||||
FrameIndex XZW4 D 1 60
|
||||
// VERYFASTFIRE
|
||||
FrameIndex XZW4 E 1 62 // 45
|
||||
FrameIndex XZW4 F 1 63 // 90
|
||||
FrameIndex XZW4 G 1 64 // 135
|
||||
FrameIndex XZW4 H 1 65 // 180
|
||||
FrameIndex XZW4 I 1 66 // 225
|
||||
FrameIndex XZW4 J 1 67 // 270
|
||||
FrameIndex XZW4 K 1 68 // 315
|
||||
FrameIndex XZW4 L 1 69 // 360 Snap back to previous frame
|
||||
// EndFireFAST7
|
||||
FrameIndex XZW4 M 1 70 // 315+
|
||||
FrameIndex XZW4 N 1 71
|
||||
FrameIndex XZW4 O 1 72 // Tween to Still
|
||||
// EndFireFAST6
|
||||
FrameIndex XZW4 P 1 74 // 270
|
||||
FrameIndex XZW4 Q 1 75
|
||||
FrameIndex XZW4 R 1 76 // Tween to Still
|
||||
// EndFireFAST5
|
||||
FrameIndex XZW4 S 1 78 // 225
|
||||
FrameIndex XZW4 T 1 79
|
||||
FrameIndex XZW4 U 1 80 // Tween to Still
|
||||
// EndFireFAST4
|
||||
FrameIndex XZW4 V 1 82 // 180
|
||||
FrameIndex XZW4 W 1 83
|
||||
FrameIndex XZW4 X 1 84 // Tween to Still
|
||||
// EndFireFAST3
|
||||
FrameIndex XZW4 Y 1 86 // 135
|
||||
FrameIndex XZW4 Z 1 87
|
||||
FrameIndex XZW5 A 1 88 // Tween to Still
|
||||
// EndFireFAST2
|
||||
FrameIndex XZW5 B 1 90 // 90
|
||||
FrameIndex XZW5 C 1 91
|
||||
FrameIndex XZW5 D 1 92 // Tween to Still
|
||||
// EndFireFAST1
|
||||
FrameIndex XZW5 E 1 94 // 45
|
||||
FrameIndex XZW5 F 1 95
|
||||
FrameIndex XZW5 G 1 96 // Tween to Still
|
||||
// SpeedUp
|
||||
FrameIndex XZW5 H 1 98 // CrankIn
|
||||
FrameIndex XZW5 I 1 99
|
||||
FrameIndex XZW5 J 1 100
|
||||
FrameIndex XZW5 K 1 101 // SpeedUp
|
||||
FrameIndex XZW5 L 1 102 // CrankOut
|
||||
FrameIndex XZW5 M 1 103 // Tween to Still
|
||||
// SlowDown
|
||||
FrameIndex XZW5 N 1 105 // CrankIn
|
||||
FrameIndex XZW5 O 1 106
|
||||
FrameIndex XZW5 P 1 107
|
||||
FrameIndex XZW5 Q 1 108 // SlowDown
|
||||
FrameIndex XZW5 R 1 109 // CrankOut
|
||||
FrameIndex XZW5 S 1 110 // Tween to Still
|
||||
// Idle
|
||||
FrameIndex XZW5 T 1 112 // StartSnd
|
||||
FrameIndex XZW5 U 1 113
|
||||
FrameIndex XZW5 V 1 114
|
||||
FrameIndex XZW5 W 1 115
|
||||
FrameIndex XZW5 X 1 116
|
||||
FrameIndex XZW5 Y 1 117
|
||||
FrameIndex XZW5 Z 1 118
|
||||
FrameIndex XZW6 A 1 119
|
||||
FrameIndex XZW6 B 1 120 // EndSnd
|
||||
FrameIndex XZW6 C 1 121
|
||||
FrameIndex XZW6 D 1 122
|
||||
FrameIndex XZW6 E 1 123
|
||||
FrameIndex XZW6 F 1 124
|
||||
FrameIndex XZW6 G 1 125
|
||||
FrameIndex XZW6 H 1 126
|
||||
FrameIndex XZW6 I 1 127
|
||||
FrameIndex XZW6 J 1 128
|
||||
FrameIndex XZW6 K 1 129
|
||||
FrameIndex XZW6 L 1 130
|
||||
// Melee
|
||||
FrameIndex XZW6 M 1 132 // StartSnd
|
||||
FrameIndex XZW6 N 1 133
|
||||
FrameIndex XZW6 O 1 134
|
||||
FrameIndex XZW6 P 1 135
|
||||
FrameIndex XZW6 Q 1 136
|
||||
FrameIndex XZW6 R 1 137
|
||||
FrameIndex XZW6 S 1 138 // Swing
|
||||
FrameIndex XZW6 T 1 139
|
||||
FrameIndex XZW6 U 1 140 // Parry (6)
|
||||
FrameIndex XZW6 V 1 141
|
||||
FrameIndex XZW6 W 1 142 // Melee
|
||||
FrameIndex XZW6 X 1 143
|
||||
FrameIndex XZW6 Y 1 144
|
||||
FrameIndex XZW6 Z 1 145
|
||||
FrameIndex XZW7 A 1 146
|
||||
FrameIndex XZW7 B 1 147
|
||||
FrameIndex XZW7 C 1 148 // EndSnd
|
||||
FrameIndex XZW7 D 1 149
|
||||
FrameIndex XZW7 E 1 150
|
||||
FrameIndex XZW7 F 1 151
|
||||
FrameIndex XZW7 G 1 152
|
||||
FrameIndex XZW7 H 1 153
|
||||
FrameIndex XZW7 I 1 154
|
||||
FrameIndex XZW7 J 1 155
|
||||
FrameIndex XZW7 K 1 156
|
||||
FrameIndex XZW7 L 1 157
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,15 +20,38 @@ extend Class HeavyMahSheenGun
|
|||
else if ( firespeed == 1 ) for ( int i=0; i<3; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
else if ( firespeed == 2 ) for ( int i=0; i<5; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
// TODO heat bar
|
||||
if ( fired )
|
||||
Screen.DrawText(NewConsoleFont,Font.CR_RED,64,64,String.Format("heat: %g\nshake: %g\nspread: %g\ntimer: %d",barrelheat,vibrate,aimerror,firetimer?((gametic-firetimer)/GameTicRate):0));
|
||||
bool isfired = !!fired;
|
||||
double firefact = 0.;
|
||||
if ( firespeed == 0 )
|
||||
{
|
||||
Screen.DrawTexture(BulletTex[1],false,bx-15,(by-10)-4*TicFrac,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
if ( Ammo1.Amount <= 0 ) return;
|
||||
Screen.DrawTexture(BulletTex[0],false,bx-15,(by-14)-4*TicFrac,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
isfired = isfired&&((fired+7)>=gametic);
|
||||
firefact = clamp((gametic+TicFrac)-fired,0.,7.)/7.;
|
||||
}
|
||||
else for ( int i=0; i<2; i++ )
|
||||
else if ( firespeed == 1 )
|
||||
{
|
||||
if ( Ammo1.Amount <= i ) break;
|
||||
isfired = isfired&&((fired+3)>=gametic);
|
||||
firefact = clamp((gametic+TicFrac)-fired,0.,3.)/3.;
|
||||
}
|
||||
else if ( firespeed == 2 )
|
||||
{
|
||||
isfired = isfired&&((fired+1)>=gametic);
|
||||
firefact = TicFrac;
|
||||
}
|
||||
bool infammo = (sv_infiniteammo||Owner.FindInventory('PowerInfiniteAmmo',true));
|
||||
if ( isfired )
|
||||
{
|
||||
Screen.DrawTexture(BulletTex[1],false,bx-15,(by-10)-4*firefact,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-firefact);
|
||||
for ( int i=0; i<2; i++ )
|
||||
{
|
||||
if ( !infammo && (Ammo1.Amount <= i) ) break;
|
||||
Screen.DrawTexture(BulletTex[0],false,bx-15,(by-6)-4*firefact+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipBottom,int((by-2)*hs),DTA_Alpha,(i==0)?1.:firefact);
|
||||
}
|
||||
return;
|
||||
}
|
||||
for ( int i=0; i<2; i++ )
|
||||
{
|
||||
if ( !infammo && (Ammo1.Amount <= i) ) break;
|
||||
Screen.DrawTexture(BulletTex[0],false,bx-15,(by-10)+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,90 @@
|
|||
|
||||
Class HeavyMahSheenGun : SWWMWeapon
|
||||
{
|
||||
bool fired;
|
||||
int fired;
|
||||
int firespeed;
|
||||
double barrelheat;
|
||||
bool incooldown;
|
||||
double barrelheat, aimerror, vibrate;
|
||||
bool incooldown, stopfire, firstshot;
|
||||
int firetimer;
|
||||
|
||||
action void A_SheenFire()
|
||||
{
|
||||
invoker.stopfire = ((invoker.Ammo1.Amount<=1)||!(player.cmd.buttons&BT_ATTACK)||(player.Health<=0));
|
||||
invoker.barrelheat = invoker.barrelheat*(1.025-invoker.firespeed*.008)+3.-(invoker.firespeed**.8)*1.35;
|
||||
invoker.aimerror = min(1.,invoker.aimerror*1.01+.01+invoker.firespeed*.01);
|
||||
if ( invoker.firespeed == 1 )
|
||||
{
|
||||
A_StartSound("sheen/700rpm",CHAN_WEAPONEXTRA,CHANF_LOOPING,attenuation:.5);
|
||||
invoker.vibrate = .25;
|
||||
A_Overlay(-9999,"EjectRound3");
|
||||
SWWMUtility.AchievementProgress("dakka",(gametic-invoker.firetimer)/GameTicRate,player);
|
||||
}
|
||||
else if ( invoker.firespeed == 2 )
|
||||
{
|
||||
A_StartSound("sheen/2100rpm",CHAN_WEAPONEXTRA,CHANF_LOOPING,attenuation:.4);
|
||||
invoker.vibrate = min(1.,invoker.vibrate*1.05+.05);
|
||||
A_Overlay(-9999,"EjectRound1");
|
||||
}
|
||||
else if ( invoker.firespeed == 0 )
|
||||
{
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6);
|
||||
A_Overlay(-9999,"EjectRound7");
|
||||
}
|
||||
if ( invoker.barrelheat > 100. ) invoker.stopfire = invoker.incooldown = true;
|
||||
invoker.firstshot = true;
|
||||
if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) )
|
||||
invoker.Ammo1.Amount--;
|
||||
invoker.fired = gametic;
|
||||
// TODO the actual firing itself
|
||||
}
|
||||
action void A_CheckContinueFire()
|
||||
{
|
||||
if ( invoker.incooldown || (invoker.Ammo1.Amount <= 0) || (player.Health <= 0) ) return;
|
||||
invoker.stopfire = !(player.cmd.buttons&BT_ATTACK);
|
||||
}
|
||||
override void OwnerDied()
|
||||
{
|
||||
if ( Owner.IsActorPlayingSound(CHAN_WEAPONEXTRA) )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
}
|
||||
Super.OwnerDied();
|
||||
aimerror = 0.;
|
||||
vibrate = 0.;
|
||||
}
|
||||
override void Travelled()
|
||||
{
|
||||
Super.Travelled();
|
||||
aimerror = 0.;
|
||||
vibrate = 0.;
|
||||
}
|
||||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
barrelheat = max(0.,barrelheat*.99-.15);
|
||||
if ( barrelheat <= 0. ) incooldown = false;
|
||||
if ( !Owner || !Owner.player || (Owner.player.ReadyWeapon != self) )
|
||||
{
|
||||
aimerror = 0.;
|
||||
vibrate = 0.;
|
||||
return;
|
||||
}
|
||||
let pspm = Owner.player.FindPSprite(PSP_WEAPON);
|
||||
if ( pspm )
|
||||
{
|
||||
pspm.x = FRandom[Shivers](-1.,1.)*vibrate*4.;
|
||||
pspm.y = 32+FRandom[Shivers](-1.,1.)*vibrate*4.;
|
||||
}
|
||||
aimerror *= .95;
|
||||
}
|
||||
override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount )
|
||||
{
|
||||
if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true;
|
||||
if ( (fireMode == PrimaryFire) || (fireMode == AltFire) )
|
||||
return (Ammo1.Amount > 0);
|
||||
return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount);
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
|
|
@ -54,10 +134,271 @@ Class HeavyMahSheenGun : SWWMWeapon
|
|||
XZW2 WX 3;
|
||||
Goto Ready;
|
||||
Ready:
|
||||
XZW2 A 1 A_WeaponReady();
|
||||
XZW2 A 1
|
||||
{
|
||||
invoker.firetimer = gametic;
|
||||
invoker.aimerror = 0.;
|
||||
invoker.vibrate = 0.;
|
||||
int flg = WRF_ALLOWRELOAD|WRF_ALLOWUSER1;
|
||||
if ( invoker.firespeed > 0 ) flg |= WRF_ALLOWZOOM;
|
||||
if ( invoker.firespeed >= 2 ) flg |= WRF_NOSECONDARY;
|
||||
if ( (invoker.Ammo1.Amount <= 0) || invoker.incooldown ) flg |= WRF_NOPRIMARY;
|
||||
A_WeaponReady(flg);
|
||||
if ( player.cmd.buttons&BT_ATTACK )
|
||||
invoker.CheckAmmo(EitherFire,true);
|
||||
}
|
||||
Wait;
|
||||
Fire:
|
||||
XZW2 A 1;
|
||||
XZW2 Z 1
|
||||
{
|
||||
invoker.firstshot = false;
|
||||
if ( (invoker.firespeed == 0) || (invoker.Ammo1.Amount <= 1) && !(player.cmd.buttons&BT_ATTACK) )
|
||||
return A_Jump(256,"SlowFire1","SlowFire2","SlowFire3");
|
||||
if ( invoker.firespeed == 1 )
|
||||
return A_Jump(256,"FastFire1","FastFire2","FastFire3");
|
||||
if ( invoker.firespeed == 2 )
|
||||
return ResolveState("VeryFastFire");
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto Ready;
|
||||
SlowFire1:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW3 ABCDEF 1;
|
||||
XZW3 G 0;
|
||||
XZW2 Z 0
|
||||
{
|
||||
if ( !invoker.incooldown && (invoker.Ammo1.Amount > 0) && (player.cmd.buttons&BT_ATTACK) )
|
||||
return A_Jump(256,"SlowFire2","SlowFire3");
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto StopFire;
|
||||
SlowFire2:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW3 HIJKLM 1;
|
||||
XZW3 N 0;
|
||||
XZW2 Z 0
|
||||
{
|
||||
if ( !invoker.incooldown &&(invoker.Ammo1.Amount > 0) && (player.cmd.buttons&BT_ATTACK) )
|
||||
return A_Jump(256,"SlowFire1","SlowFire3");
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto StopFire;
|
||||
SlowFire3:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW3 OPQRST 1;
|
||||
XZW3 U 0
|
||||
{
|
||||
if ( !invoker.incooldown &&(invoker.Ammo1.Amount > 0) && (player.cmd.buttons&BT_ATTACK) )
|
||||
return A_Jump(256,"SlowFire1","SlowFire2");
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto StopFire;
|
||||
FastFire1:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW3 VW 1 A_CheckContinueFire();
|
||||
XZW3 X 0
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( !invoker.stopfire ) return A_Jump(256,"FastFire2","FastFire3");
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto StopFire;
|
||||
FastFire2:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW3 YZ 1 A_CheckContinueFire();
|
||||
XZW4 A 0
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( !invoker.stopfire ) return A_Jump(256,"FastFire1","FastFire3");
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto StopFire;
|
||||
FastFire3:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW4 BC 1 A_CheckContinueFire();
|
||||
XZW4 D 0
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( !invoker.stopfire ) return A_Jump(256,"FastFire1","FastFire2");
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState(null);
|
||||
}
|
||||
Goto StopFire;
|
||||
VeryFastFire:
|
||||
XZW2 Z 1 A_SheenFire();
|
||||
XZW4 E 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast1");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW4 F 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast2");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW4 G 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast3");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW4 H 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast4");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW4 I 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast5");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW4 J 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast6");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
VeryFastFireHold:
|
||||
XZW4 K 1
|
||||
{
|
||||
A_CheckContinueFire();
|
||||
if ( invoker.stopfire )
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONEXTRA);
|
||||
A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2);
|
||||
return ResolveState("EndFireFast7");
|
||||
}
|
||||
A_SheenFire();
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW4 L 0;
|
||||
Goto VeryFastFireHold;
|
||||
EndFireFast7:
|
||||
XZW4 MNO 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
EndFireFast6:
|
||||
XZW4 PQR 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
EndFireFast5:
|
||||
XZW4 STU 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
EndFireFast4:
|
||||
XZW4 VWX 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
EndFireFast3:
|
||||
XZW4 YZ 1 { invoker.vibrate *= .25; }
|
||||
XZW5 A 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
EndFireFast2:
|
||||
XZW5 BCD 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
EndFireFast1:
|
||||
XZW5 EFG 1 { invoker.vibrate *= .25; }
|
||||
Goto Ready;
|
||||
StopFire:
|
||||
XZW2 Z 1 A_StopSound(CHAN_WEAPONEXTRA); // just in case
|
||||
Goto Ready;
|
||||
EjectRound7:
|
||||
TNT1 A 7;
|
||||
Goto EjectRound;
|
||||
EjectRound3:
|
||||
TNT1 A 3;
|
||||
Goto EjectRound;
|
||||
EjectRound1:
|
||||
TNT1 A 7;
|
||||
Goto EjectRound;
|
||||
EjectRound:
|
||||
TNT1 A 1; // TODO
|
||||
Stop;
|
||||
AltFire:
|
||||
XZW2 A 3 A_StartSound("sheen/crankin",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW5 IJ 2;
|
||||
XZW5 K 3 { invoker.firespeed = min(2,invoker.firespeed+1); }
|
||||
XZW5 L 4 A_StartSound("sheen/crankout",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW5 M 5;
|
||||
Goto Ready;
|
||||
Zoom:
|
||||
XZW2 A 3 A_StartSound("sheen/crankin",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW5 NO 2;
|
||||
XZW5 P 3 { invoker.firespeed = max(0,invoker.firespeed-1); }
|
||||
XZW5 Q 4 A_StartSound("sheen/crankout",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW5 R 5;
|
||||
Goto Ready;
|
||||
Reload:
|
||||
XZW2 A 3
|
||||
{
|
||||
A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_PlayerCheckGun();
|
||||
}
|
||||
XZW5 TUVW 3;
|
||||
XZW5 XYZ 4;
|
||||
XZW6 A 4;
|
||||
XZW6 B 3 A_StartSound("sheen/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW6 CDE 3;
|
||||
XZW6 FGHIJKL 2;
|
||||
Goto Ready;
|
||||
User1:
|
||||
XZW2 A 3 A_StartSound("sheen/meleestart",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW6 MNOPQR 3;
|
||||
XZW6 S 3 A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW6 T 3;
|
||||
XZW6 U 2
|
||||
{
|
||||
A_Parry(9);
|
||||
A_PlayerMelee();
|
||||
}
|
||||
XZW6 V 2;
|
||||
XZW6 W 2 A_Melee(70,"demolitionist/whitl",1.25,1.3,1.2);
|
||||
XZW6 XYZ 3;
|
||||
XZW7 AB 4;
|
||||
XZW7 C 4 A_StartSound("sheen/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW7 DEFGHIJKL 2;
|
||||
Goto Ready;
|
||||
Deselect:
|
||||
XZW2 A 2 A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue