public static TestProjectileInstance CreateNew(ILevelManager level, IProjectile projectile, TestProjectileType type) { var instance = new TestProjectileInstance(level, projectile, type); instance.flier = BallisticProjectile.CreateNew(instance, level); return(instance); }
public override bool IsInRange(Vector3 source, IRangeTarget target) { return(BallisticProjectile.GetTimesAndVectorsForStaticTarget(target.CurrentPosition, source, Speed, out var loweTime, out var lowVector, out var highTime, out var highVector)); }
protected override void InstantEffect() { if (NPCinfo.target) { GameObject newProjectile = Instantiate(boltPrefab, transform.position, Quaternion.identity, transform); BallisticProjectile ballistic = newProjectile.GetComponent <BallisticProjectile>(); ballistic.targetPos = transform.position + RAG * (NPCinfo.target.transform.position - transform.position).normalized; newProjectile.GetComponent <AOEBase>().OnEnter = PiercingDMGDelegate; piercingMult = 1.0f; } base.InstantEffect(); }
void Fire() { // fire repeatedly. GameObject player = GameObject.FindWithTag("Player"); GameObject cannon = GameObject.FindWithTag("Cannon"); if (player && cannon) { BallisticProjectile cannonball = cannon.GetComponent <BallisticProjectile> (); cannonball.Fire(barrelEnd.position, player.transform.position, 2f); NotificationCentre.PostNotification(this, "OnCannonFire"); } }
bool ShootMovingTarget(IRangeTarget target) { int numSolutions = BallisticProjectile.GetVectorsForMovingTarget(target, Projectile.Position, myType.Speed, out Vector3 lowVector, out Vector3 highVector); if (numSolutions >= 1) { flier.StartFlight(lowVector); return(true); } return(false); }
public override bool ShootProjectile(IRangeTarget target) { if (BallisticProjectile.GetTimesAndVectorsForStaticTarget(target.CurrentPosition, Projectile.Position, myType.Speed, out var lowTime, out var lowVector, out var highTime, out var highVector)) { flier.StartFlight(lowVector); return(true); } return(false); }
public override void LoadState(PluginDataWrapper pluginData) { this.flier = Projectile.GetDefaultComponent <BallisticProjectile>(); var sequential = pluginData.GetReaderForWrappedSequentialData(); sequential.MoveNext(); timeToSplit = sequential.GetCurrent <float>(); sequential.MoveNext(); splits = sequential.GetCurrent <int>(); sequential.MoveNext(); despawning = sequential.GetCurrent <bool>(); sequential.MoveNext(); timeToDespawn = sequential.GetCurrent <float>(); sequential.MoveNext(); }
protected override void InstantEffect() { if (NPCinfo.target) { for (int i = 0; i < cnt; i++) { GameObject newProjectile = Instantiate(moganelPrefab, transform.position, Quaternion.identity, transform); BallisticProjectile homingArrow = newProjectile.GetComponent <BallisticProjectile>(); Vector3 offset = new Vector3(Random.value - 0.5f, Random.value - 0.5f, Random.value - 0.5f); offset.Normalize(); offset *= Random.Range(0.0f, offsetRadius); homingArrow.targetPos = NPCinfo.target.transform.position + offset; homingArrow.grounded += delegate { GameObject AOE = Instantiate(AOEPrefab, homingArrow.transform.position, Quaternion.identity, homingArrow.transform); AOE.GetComponent <AOEBase>().OnEnter = InstantDMGDelegate; }; } } base.InstantEffect(); }
public override void LoadState(PluginDataWrapper pluginData) { this.flier = Projectile.GetDefaultComponent <BallisticProjectile>(); }