public override void Activate(GameObject actor, GameObject target) { base.Activate(actor, target); if (target.GetComponent <BuffReceiver>()) { BuffReceiver receiver = target.GetComponent <BuffReceiver>(); if (receiver.buffs.Any(item => item.buffType == buff.buffType) == true) { //BaseBuff temp = receiver.buffs.First(item => item.buffType == buff.buffType); foreach (var item in receiver.buffs.ToArray()) { if (item.buffType == buff.buffType) { item.Activate(receiver); receiver.RemoveBuff(item); } } //temp.Activate(receiver); } if (receiver.buffs.Any(item => item.ID == buff.ID) == false) { receiver.AddBuff(buff); } } }
public IEnumerator Duration(BuffReceiver receiver) { yield return(new WaitForSeconds(duration)); StopCoroutine(OvertimeEffect(receiver)); Deactivate(receiver); receiver.RemoveBuff(this); }
public override void Activate(BuffReceiver receiver) { PlayerController player = receiver.GetComponent <PlayerController>(); base.Activate(receiver); if (isActivated == true) { StartCoroutine(OvertimeEffect(receiver)); StartCoroutine(Duration(receiver)); Debug.Log("Do" + this.name); } if (isActivated == false) { StopCoroutine(OvertimeEffect(receiver)); StopCoroutine(Duration(receiver)); receiver.RemoveBuff(this); Debug.Log("Undo" + this.name); } }