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); }
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(); } }
public override void ConcludeState(EntityStats receiver) { EntityRuntimeSet.CopySetArray(receiver.originalEnemySets, ref receiver.enemyEntitySets); EntityRuntimeSet.CopySetArray(receiver.originalMySets, ref receiver.myEntitySets); }