public void RemoveStatusEffect(StatusEffect effect) { if (IsDead) { return; } foreach (var behaviour in effect.data.behaviour) { if (effect.tickTime == StatusEffect.TickTime.TurnStart) { OnStartTurn -= behaviour.TickPerTurn; } else { OnEndTurn -= behaviour.TickPerTurn; } OnAttackedBehaviour -= behaviour.OnAttacked; behaviour.OnUnafflicted(this); } DamageNumberCanvas canv = GameObject.Instantiate(FindObjectOfType <CombatManager>().damageNumberCanvasPrefab).GetComponent <DamageNumberCanvas>(); canv.Display("Expired: " + effect.data.name, Color.red); canv.transform.position = transform.position; StatusEffects.Remove(effect); RefreshUI(); }
public void AfflictWithStatusEffect(StatusEffectScriptableObject effectSO, int duration) { if (IsDead) { return; } if (IsImmuneToDebuffs()) { if (effectSO.type == StatusEffectScriptableObject.Type.Disable || effectSO.type == StatusEffectScriptableObject.Type.Poison) { Animator.SetTrigger("Block"); DamageNumberCanvas canva = GameObject.Instantiate(FindObjectOfType <CombatManager>().damageNumberCanvasPrefab).GetComponent <DamageNumberCanvas>(); canva.Display("Immune", Color.magenta); canva.transform.position = transform.position; return; } } StatusEffect.TickTime tickTime = StatusEffect.TickTime.TurnStart; if (FindObjectOfType <CombatManager>().turn == CombatManager.TurnSelection.Enemies) { if (this is PlayerCombatObject) { tickTime = StatusEffect.TickTime.TurnEnd; } } StatusEffect effect = new StatusEffect(effectSO, tickTime, duration); StatusEffects.Add(effect); DamageNumberCanvas canv = GameObject.Instantiate(FindObjectOfType <CombatManager>().damageNumberCanvasPrefab).GetComponent <DamageNumberCanvas>(); canv.Display("Applying: " + effect.data.name, Color.green); canv.transform.position = transform.position; foreach (var behaviour in effect.data.behaviour) { if (effect.tickTime == StatusEffect.TickTime.TurnStart) { OnStartTurn += behaviour.TickPerTurn; } else { OnEndTurn += behaviour.TickPerTurn; } OnAttackedBehaviour += behaviour.OnAttacked; behaviour.OnAfflicted(this); } RefreshUI(); }