//============================================================================= // WarlordMultiProjectiles: Warlord shoots more than one projectile. // Revision: 1 // Release: 27 Jun 2015 // Author: SeriousBarbie at googlemail makeadot com //============================================================================= class WarlordMultiProjectiles_Rev1 expands WarLord; var() byte AdditionalProjectilesCount; // how many additional Projectiles should be spawned? var() int Spread; // scattering of projectiles function PlayRangedAttack() { local vector X,Y,Z, projStart; local rotator projRotation; if (Physics == PHYS_Flying) PlayAnim('FlyFire'); else PlayAnim('Fire'); GetAxes(Rotation,X,Y,Z); projStart = Location - 0.5 * CollisionRadius * Y; projRotation = AdjustAim(ProjectileSpeed, projStart, 0, bLeadTarget, bWarnTarget); //spawn(RangedProjectile, self, '', projStart, projRotation); SpawnRangedProjectile(projStart, projRotation); } function SpawnRangedProjectile(vector projStart, rotator projRotation) { local int i; projRotation.Yaw = projRotation.Yaw - Spread * AdditionalProjectilesCount / 2; for (i=0; i <= AdditionalProjectilesCount; i++) { spawn(RangedProjectile, self, '', projStart, projRotation); projRotation.Yaw += Spread; } } function PlayMovingAttack() { local vector X,Y,Z, projStart; local rotator projRotation; if (Physics == PHYS_Flying) PlayAnim('FlyFire'); else { DesiredSpeed = 0.4; PlayAnim('WalkFire'); } GetAxes(Rotation,X,Y,Z); projStart = Location - 0.5 * CollisionHeight * Y; projRotation = AdjustAim(ProjectileSpeed, projStart, 600, bLeadTarget, bWarnTarget); if ( FRand() < 0.5 ) { if (FRand() < 0.5) projRotation.Yaw += 3072; else projRotation.Yaw -= 3072; } // spawn(RangedProjectile, self, '', projStart, projRotation); SpawnRangedProjectile(projStart, projRotation); } defaultproperties { AdditionalProjectilesCount=4 Spread=500 MenuName="Warlord" }