mirror of
https://github.com/Steffo99/octogem.git
synced 2024-10-16 20:17:26 +00:00
45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
|
using UnityEngine;
|
|||
|
|
|||
|
public abstract class GenericEffect : MonoBehaviour
|
|||
|
{
|
|||
|
//Duration doesn't decrease automatically
|
|||
|
private int duration;
|
|||
|
|
|||
|
public void SetDuration(int value, Unit self = null)
|
|||
|
{
|
|||
|
bool firstApplication = (self == null);
|
|||
|
duration = value;
|
|||
|
if(firstApplication && self != null)
|
|||
|
{
|
|||
|
OnApply(self);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ChangeDuration(int value, Unit self = null)
|
|||
|
{
|
|||
|
duration += value;
|
|||
|
if(value < 0 && duration <= 0)
|
|||
|
{
|
|||
|
OnExpire(self);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public virtual void OnApply(Unit self) { }
|
|||
|
public virtual void OnExpire(Unit self) { Destroy(this); } //The effect should remove itself when the duration ends
|
|||
|
public virtual void OnTurnStart(Unit self) { }
|
|||
|
public virtual void OnTurnEnd(Unit self) { }
|
|||
|
public virtual void BeforeAttack(Unit self) { }
|
|||
|
public virtual void AfterAttack(Unit self) { }
|
|||
|
public virtual bool BeforeDeath(Unit self) { return true; } //Returns false if the effect prevented the death of the unit
|
|||
|
public virtual void BeforeStep(Unit self) { }
|
|||
|
public virtual void AfterStep(Unit self) { }
|
|||
|
public virtual void BeforeMove(Unit self) { }
|
|||
|
public virtual void AfterMove(Unit self) { }
|
|||
|
public virtual void BeforeDamage(Unit self, int damageAmount) { }
|
|||
|
public virtual void AfterDamage(Unit self, int damageAmount) { }
|
|||
|
public virtual void BeforeHeal(Unit self, int healAmount) { }
|
|||
|
public virtual void AfterHeal(Unit self, int healAmount) { }
|
|||
|
public virtual void BeforeNewEffect(Unit self, GenericEffect effect) { }
|
|||
|
public virtual void AfterNewEffect(Unit self, GenericEffect effect) { }
|
|||
|
}
|