public bool CanAddBuff(Buff buff) { if (buff.InstanceUnique) { foreach (var v in ActiveBuffs) if (v.InstanceGroup == buff.InstanceGroup) return false; } return true; }
public void RemoveBuff(Buff buff) { ActiveBuffs.Remove(buff); if (IsInGame) buff.TryEndPerform(false); }
public bool AddBuff(Buff buff, Unit performer, GameEntity mediator) { if (!CanAddBuff(buff)) return false; buff.Performer = performer; buff.Mediator = mediator; if (IsInGame) { if (CanAddBuff(buff)) { buff.TargetPosition = this.Position; buff.TargetEntity = this; if(buff.TryStartPerform()) ActiveBuffs.Add(buff); } } else ActiveBuffs.Add(buff); return true; }