예제 #1
0
 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);
         }
     }
 }
예제 #2
0
    public IEnumerator Duration(BuffReceiver receiver)
    {
        yield return(new WaitForSeconds(duration));

        StopCoroutine(OvertimeEffect(receiver));
        Deactivate(receiver);
        receiver.RemoveBuff(this);
    }
예제 #3
0
    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);
        }
    }