68 lines
2.7 KiB
C#
68 lines
2.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class NetworkMultipleProjectileChainReaction : NetworkAbilityChainReaction
|
|
{
|
|
public List<NetworkedProjectile> projectiles = new List<NetworkedProjectile>();
|
|
|
|
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<Taggable> 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);
|
|
}
|
|
}
|
|
}
|