class SchlonzRocketMultiFire extends RocketMultiFire; function PlayFiring() { // auto fire if loaded last rocket /* if( Weapon.Fire[0].bIsFiring ) { if (Load > 1.0) FireAnim = 'AltFire'; else FireAnim = 'Fire'; Super.PlayFiring(); RocketLauncher(Weapon).PlayFiring((Load == 6.0)); } else if( Weapon.Fire[1].bIsFiring ) { FireAnim = 'Fire'; Super.PlayFiring(); RocketLauncher(Weapon).PlayFiring((Load >= 1)); } Weapon.OutOfAmmo(); */ } function DoFireEffect() { local Vector StartProj, StartTrace, X,Y,Z; local Rotator Aim, MyAim; local Vector HitLocation, HitNormal, FireLocation, FireVect; local Actor Other; local int p, SpawnCount; local SchlonzRocket FiredRockets[50]; local float Angle, RocketAngle; /* PlayerSize -> RocketSize Addjustement local float PlayerSize; */ if( Instigator == None ) return; Instigator.MakeNoise(1.0); Weapon.GetViewAxes(X,Y,Z); StartTrace = Instigator.Location + Instigator.EyePosition();// + X*Instigator.CollisionRadius; StartProj = StartTrace + X*ProjSpawnOffset.X + Y*ProjSpawnOffset.Y + Z*ProjSpawnOffset.Z; // check if projectile would spawn through a wall // and adjust start location accordingly Other = Trace(HitLocation, HitNormal, StartProj, StartTrace, false); if (Other != None) { StartProj = HitLocation; } /* PlayerSize -> RocketSize Addjustement // adjust rocket size (huarg huarg) PlayerSize = 1; if( SchlonzXPawnBot( Instigator ) != None ) PlayerSize = SchlonzXPawnBot( Instigator ).PlayerSize; */ Aim = AdjustAim(StartProj, AimError); MyAim = Aim; SpawnCount = Max(1, int(Load)); // SpawnCount *= 5; SpawnCount *= 3; // angle adjustement // Angle = SpawnCount * 5 + 5; Angle = SpawnCount * 3 + 5; // angle between rockets RocketAngle = PI / Angle; // starting angle Angle = -RocketAngle * (SpawnCount / 2); for( p=0; p RocketSize Addjustement if( PlayerSize != 1 && FiredRockets[p] != None ) FiredRockets[p].SetDrawScale( PlayerSize ); */ Angle += RocketAngle; } } function ModeTick(float dt) { // auto fire if loaded last rocket /* if( Weapon.FireMode[0].bIsFiring ) { // Grenades bIsFiring = true; return; } if (HoldTime > 0.0 && Load >= Weapon.Ammo[ThisModeNum].AmmoAmount && !bNowWaiting) { bIsFiring = false; } */ if (Load == 1.0 && HoldTime >= FireRate) { if (Instigator.IsLocallyControlled()) RocketLauncher(Weapon).PlayLoad(false); Load = Load + 1.0; } else if (Load == 2.0 && HoldTime >= FireRate*2.0) { if (Instigator.IsLocallyControlled()) RocketLauncher(Weapon).PlayLoad(false); Load = Load + 1.0; } else if (Load == 3.0 && HoldTime >= FireRate*3.0) { if (Instigator.IsLocallyControlled()) RocketLauncher(Weapon).PlayLoad(false); Load = Load + 1.0; } else if (Load == 4.0 && HoldTime >= FireRate*4.0) { if (Instigator.IsLocallyControlled()) RocketLauncher(Weapon).PlayLoad(false); Load = Load + 1.0; } else if (Load == 5.0 && HoldTime >= FireRate*5.0) { Load = Load + 1.0; } } function Projectile SpawnProjectile(Vector Start, Rotator Dir) { local Projectile p; p = None; if( Weapon != None ) { if( SchlonzRocketLauncher(Weapon) != None ) { p = SchlonzRocketLauncher(Weapon).SpawnProjectile(Start, Dir); p.Damage *= DamageAtten; } } return p; } defaultproperties { FireRate=0.400000 MaxHoldTime=6.000000 ProjectileClass=Class'SchlonzUT.SchlonzRocket' }