protected virtual void OnFire() { long appliedDamage = Damage; //appliedDamage = 0; LSProjectile projectile = ProjectileManager.Create(ProjCode, Agent, Target, appliedDamage); projectile.TargetPlatform = TargetPlatform; ProjectileManager.Fire(projectile); }
public static LSProjectile NDCreateAndFire(string projCode, Vector3d position, Vector3d direction, bool gravity = false) { curProj = RawCreate(projCode); int id = NDProjectileBucket.Add(curProj); curProj.Prepare(id, position, (a) => false, (a) => false, (a) => {}, false); curProj.InitializeFree(direction, (a) => false, gravity); ProjectileManager.Fire(curProj); return(curProj); }
protected virtual void OnFire() { long appliedDamage = Damage; LSProjectile projectile = ProjectileManager.Create( ProjCode, this.Agent, this.ProjectileOffset, this.TargetAllegiance, (other) => this.Agent.Healther.IsNotNull(), (agent) => agent.Healther.TakeRawDamage(appliedDamage)); projectile.InitializeHoming(this.Target); projectile.TargetPlatform = TargetPlatform; ProjectileManager.Fire(projectile); }
public LSProjectile FireProjectile(Vector3d projOffset, LSAgent target) { LSProjectile currentProjectile = ProjectileManager.Create( ProjCode, this.Agent, projOffset, this.TargetAllegiance, (other) => { Health healther = other.GetAbility <Health>(); return(healther.IsNotNull() && healther.HealthAmount > 0); }, CachedOnHit); switch (currentProjectile.TargetingBehavior) { case TargetingType.Homing: currentProjectile.InitializeHoming(target); break; case TargetingType.Timed: currentProjectile.InitializeTimed(Agent.Body.Forward); break; case TargetingType.Positional: currentProjectile.InitializePositional(target.Body.Position.ToVector3d(target.Body.HeightPos)); break; case TargetingType.Free: //TODO throw new System.Exception("Not implemented yet."); //break; } if (onPrepareProjectile != null) { onPrepareProjectile(currentProjectile); } ProjectileManager.Fire(currentProjectile); return(currentProjectile); }
protected virtual void OnFire() { long appliedDamage = Damage; LSProjectile projectile = ProjectileManager.Create( ProjCode, this.Agent, this.ProjectileOffset, this.TargetAllegiance, (other) => { Health healther = other.GetAbility <Health>(); return(healther.IsNotNull() && healther.HealthAmount > 0); }, CachedOnHit); switch (projectile.TargetingBehavior) { case TargetingType.Homing: projectile.InitializeHoming(this.Target); break; case TargetingType.Timed: projectile.InitializeTimed(); break; case TargetingType.Positional: projectile.InitializePositional(Target.Body.Position.ToVector3d(Target.Body.HeightPos)); break; case TargetingType.Free: //TODO throw new System.Exception("Not implemented yet."); break; } ProjectileManager.Fire(projectile); }
private void Fire() { if (this.ShootType == ShootType.Single) { this.IsFiring = false; } this.FireCount = FirePeriod; FPSTurn turn = Agent.GetAbility <FPSTurn>(); int bodyID = Agent.Body.ID; LSProjectile projectile = ProjectileManager.Create(this.ProjCode, Agent, ProjectileStartPosition, AllegianceType.All, (agent) => true, (agent) => agent.Body.TestFlash()); projectile.InitializeFree(turn.Forward, (body) => body.ID != bodyID); ProjectileManager.Fire(projectile); if (this.PassedFrames > 0) { Vector3d delta = projectile.Velocity; delta.Mul((int)PassedFrames); projectile.RaycastMove(delta); PassedFrames = 0; } }
public void FireProjectile(LSProjectile projectile) { ProjectileManager.Fire(projectile); }