示例#1
0
 protected virtual void OnEnable()
 {
     if (myEntitySets != null)
     {
         for (int i = 0; i < myEntitySets.Count; i++)
         {
             myEntitySets[i].Add(this);
         }
     }
     //backup original sets to recover after changes
     originalMySets    = EntityRuntimeSet.CopySetArray(myEntitySets);
     originalEnemySets = EntityRuntimeSet.CopySetArray(enemyEntitySets);
 }
示例#2
0
    public bool canOtherEnemiesAttackMinion = true;  //se por algum motivo os demais inimigos tenham que ignorar o afetado

    public override void InitState(EntityStats receiver, EntityStats applier = null)
    {
        if (applier == null)
        {
            return;                 //no minion master
        }
        StateStack ss = receiver.GetStack(this);

        if (ss == null)
        {
            ss = new StateStack(this, duration, 1, 1, applier);
            receiver.states.Add(ss);

            //decide enemies
            if (canAttackMaster)
            {
                EntityRuntimeSet.CopySetArray(applier.enemyEntitySets, ref receiver.enemyEntitySets, false);
            }
            else
            {
                EntityRuntimeSet.CopySetArray(applier.enemyEntitySets, ref receiver.enemyEntitySets);
            }
            //deciding possible damage
            if (canOtherEnemiesAttackMinion)
            {
                EntityRuntimeSet.CopySetArray(applier.myEntitySets, ref receiver.myEntitySets, false);
            }
            if (!masterCanDamageMinion)
            {
                EntityRuntimeSet.RemoveSetOverlap(applier.enemyEntitySets, ref receiver.myEntitySets);
            }
        }
        else
        {
            ss.ResetTimer();
        }
    }
示例#3
0
 public override void ConcludeState(EntityStats receiver)
 {
     EntityRuntimeSet.CopySetArray(receiver.originalEnemySets, ref receiver.enemyEntitySets);
     EntityRuntimeSet.CopySetArray(receiver.originalMySets, ref receiver.myEntitySets);
 }