public LSProjectile PrepareProjectile(string projectileCode, Vector3d projOffset, Vector3d targetPos) { LSProjectile currentProjectile = ProjectileManager.Create( projectileCode, this.Agent, projOffset, this.TargetAllegiance, (other) => { Health healther = other.GetAbility <Health>(); return(healther.IsNotNull() && healther.HealthAmount > 0); }, CachedOnHit); switch (currentProjectile.TargetingBehavior) { case TargetingType.Timed: currentProjectile.InitializeTimed(Agent.Body.Forward); break; case TargetingType.Positional: currentProjectile.InitializePositional(targetPos); break; case TargetingType.Free: //TODO throw new System.Exception("Not implemented yet."); //break; } return(currentProjectile); }
protected virtual void OnFire() { long appliedDamage = Damage; Health healther = Agent.GetAbility <Health>(); LSProjectile projectile = ProjectileManager.Create( ProjCode, this.Agent, this.ProjectileOffset, this.TargetAllegiance, (other) => healther.IsNotNull() && healther.HealthAmount > 0, (agent) => healther.TakeRawDamage(appliedDamage)); projectile.InitializeHoming(this.Target); projectile.TargetPlatform = TargetPlatform; ProjectileManager.Fire(projectile); }
public void Engage(LSAgent other) { if (other != Agent) { cachedTargetHealth = other.Healther; if (cachedTargetHealth.IsNotNull()) { Target = other; HasTarget = true; targetVersion = Target.SpawnVersion; IsCasting = true; fastRangeToTarget = Range + (Target.Body.IsNotNull() ? Target.Body.Radius : 0); fastRangeToTarget *= fastRangeToTarget; } } }
public void Engage(LSAgent other) { if (other != Agent && other != null) { cachedTargetHealth = other.GetAbility <Health>(); if (cachedTargetHealth.IsNotNull()) { OnEngage(other); Target = other; HasTarget = true; targetVersion = Target.SpawnVersion; IsCasting = true; fastRangeToTarget = Range + (Target.Body.IsNotNull() ? Target.Body.Radius : 0) + Agent.Body.Radius; fastRangeToTarget *= fastRangeToTarget; } } }
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); }
public void Engage(LSAgent other) { if (other != Agent) { cachedTargetHealth = other.Healther; if (cachedTargetHealth .IsNotNull()) { Target = other; HasTarget = true; targetVersion = Target.SpawnVersion; IsCasting = true; fastRangeToTarget = Range + (Target.Body .IsNotNull() ? Target.Body.Radius : 0); fastRangeToTarget *= fastRangeToTarget; } } }