using System.Collections; using System.Collections.Generic; using UnityEngine; public class NetworkMultipleProjectileChainReaction : NetworkAbilityChainReaction { public List projectiles = new List(); public bool delayedRelease = false; public float delay = 0f; public bool oneByOne = false; public float releaseInterval = 0f; ProjectileAbility projectileAbility; public override void ExecuteAbilityChainReaction(Taggable owner, List targets) { StartCoroutine(ReleaseProjectiles(owner, delayedRelease, delay, oneByOne, releaseInterval)); /* projectileAbility = (ProjectileAbility)ability; foreach (NetworkedProjectile projectile in projectiles) { projectile.speed = projectileAbility.projectileSpeed; projectile.ownerTag = owner; projectile.ability = projectileAbility; projectile.lifeSpan = projectileAbility.lifeSpan; projectile.canPierce = projectileAbility.canPierce; projectile.canHitSelf = projectileAbility.canHitSelf; projectile.gameObject.SetActive(true); projectile.Init(); }*/ } IEnumerator ReleaseProjectiles(Taggable owner,bool delayedRelease = false, float delay = 0f, bool oneByOne = true, float releaseInterval = 0f) { if (delayedRelease) yield return new WaitForSeconds(delay); projectileAbility = (ProjectileAbility)ability; foreach (NetworkedProjectile projectile in projectiles) { projectile.speed = projectileAbility.projectileSpeed; projectile.ownerTag = owner; projectile.ability = projectileAbility; projectile.lifeSpan = projectileAbility.lifeSpan; projectile.canPierce = projectileAbility.canPierce; projectile.canHitSelf = projectileAbility.canHitSelf; projectile.speedOverLifetime = projectileAbility.speedOverLifetime; projectile.useSpeedCurve = projectileAbility.useSpeedCurve; projectile.enableCurving = projectileAbility.enableCurving; projectile.curveAxis = projectileAbility.curveAxis; projectile.curveStrength = projectileAbility.curveStrength; projectile.curveAmplitude = projectileAbility.curveAmplitude; projectile.enableRicochet = projectileAbility.enableRicochet; projectile.maxRicochets = projectileAbility.maxRicochets; projectile.ricochetSpread = projectileAbility.ricochetSpread; projectile.gameObject.SetActive(true); projectile.Init(); if (oneByOne) yield return new WaitForSeconds(releaseInterval); } } }