Multiple firing modes on a weapon
Jump to navigation
Jump to search
Multiple firing modes on a weapon
Right, I saw this requested on the forum, and being the good guy I am (He lied), I thought I'd help. Subclass the stinger and paste this code in. Hopefully, right-click should change between the projectiles and left-click will shoot them. Of course, if you are using a different weapon, you may need to make slight code adjustments for different animations and such.
var int firingmode; // What firing mode we are in var float firespeed; // How fast we shoot function PlayFiring() { local Vector Start; Start = Owner.Location + CalcDrawOffset(); switch (firingmode) { case(1): projectileclass=Class'Dammo2'; // Dispersion ammo level 2 firespeed=0.15; // Pause time between each shot. A larger firespeed means a larger pause. AmmoType.ammoamount-=1; break; case(2): projectileclass=Class'dammo3'; // Dispersion ammo level 3 firespeed=0.2; // Pause time between each shot. A larger firespeed means a larger pause. AmmoType.ammoamount-=1; break; case(3): projectileclass=Class'dammo4'; // Dispersion ammo level 4 firespeed=0.25; // Pause time between each shot. A larger firespeed means a larger pause. AmmoType.ammoamount-=1; break; case(4): projectileclass=Class'dammo5'; // Dispersion ammo level 5 firespeed=0.3; // Pause time between each shot. A larger firespeed means a larger pause. AmmoType.ammoamount-=1; break; default: //breaks to the default firing mode projectileclass=Class'Dispersionammo'; // Dispersion ammo level 1 firespeed=0.1; // Pause time between each shot. A larger firespeed means a larger pause. firingmode=0; //AmmoType.ammoamount-=0; break; } if (Ammotype.Ammoamount<=0)Ammotype.Ammoamount=0; } function PlayAltFiring() // When we right click... { local pawn p; p=PlayerPawn(Owner); firingmode++; // ...advance the firing mode AmmoType.Ammoamount++; switch (firingmode) { case(1): p.clientmessage("Mode Set: Dammo2"); // Tells the player what projectile mode we are in break; case(2): p.clientmessage("Mode Set: Dammo3"); // Tells the player what projectile mode we are in break; case(3): p.clientmessage("Mode Set: Dammo4"); // Tells the player what projectile mode we are in break; case(4): p.clientmessage("Mode Set: Dammo5!"); // Tells the player what projectile mode we are in break; default: p.clientmessage("Mode Set: DispersionAmmo"); // Tells the player what projectile mode we are in firingmode=0; break; } } state AltFiring { function Projectile ProjectileFire(class<projectile> ProjClass, float ProjSpeed, bool bWarn) {// Alt-Fire Does Nothing } Begin: FinishAnim(); PlayAnim('Still'); // Plays a simple still animation Sleep(0.4); Finish(); } state NormalFire { function Tick( float DeltaTime ) { } function EndState() { } Begin: Sleep(firespeed); //The weapon will pause for a set amount of time after each shot. More powerful projectiles tend to have a larger firespeed number, as to avoid an unbalanced weapon. The exact opposite is true for weaker projectiles. the firespeed number is decreased. SetLocation(Owner.Location); Finish(); }