diff options
Diffstat (limited to 'ROUNDS/SpawnObjectOnDealDamage.cs')
-rw-r--r-- | ROUNDS/SpawnObjectOnDealDamage.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/ROUNDS/SpawnObjectOnDealDamage.cs b/ROUNDS/SpawnObjectOnDealDamage.cs new file mode 100644 index 0000000..be5b365 --- /dev/null +++ b/ROUNDS/SpawnObjectOnDealDamage.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using UnityEngine.Events; + +public class SpawnObjectOnDealDamage : DealtDamageEffect +{ + public UnityEvent triggerEvent; + + public float damageNeeded = 25f; + + public float cd = 0.2f; + + private float time; + + private float damageDealt; + + private SpawnObjectEffect spawn; + + private DamageEffect dmgEffect; + + public bool allowSelfDmg; + + private void Start() + { + spawn = GetComponent<SpawnObjectEffect>(); + dmgEffect = GetComponent<DamageEffect>(); + } + + public override void DealtDamage(Vector2 damage, bool selfDamage, Player damagedPlayer = null) + { + if (selfDamage && !allowSelfDmg) + { + return; + } + damageDealt += damage.magnitude; + if (damageDealt > damageNeeded && Time.time > time + cd) + { + time = Time.time; + damageDealt = 0f; + if ((bool)spawn) + { + spawn.DoEffect(damage); + } + if ((bool)dmgEffect) + { + dmgEffect.DoDamageEffect(damage, selfDamage, damagedPlayer); + } + triggerEvent.Invoke(); + } + } +} |