public override void OnAttacked(Unit attacker)
        {
            if (_petOwner.AIMode != (byte)PetCommand.Passive && !_petOwner.IsHeeling && !IgnoreDamageEvents && CurrentTarget == null)
            {
                switch (AIInterface.State)
                {
                case AiState.STANDING:
                    AIInterface.ProcessCombatStart(attacker);
                    break;

                case AiState.MOVING:
                    AIInterface.ProcessCombatStart(attacker);
                    break;
                }
            }

            RefreshCombatTimer();

            _petOwner.Owner.CbtInterface.RefreshCombatTimer();
        }
        public override void OnTakeDamage(Unit fighter, uint damage, float hatredMod, uint mitigation = 0)
        {
            if (_petOwner.AIMode != (byte)PetCommand.Passive && !_petOwner.IsHeeling && !IgnoreDamageEvents && CurrentTarget == null)
            {
                switch (AIInterface.State)
                {
                case AiState.STANDING:
                    AIInterface.ProcessCombatStart(fighter);
                    break;

                case AiState.MOVING:
                    AIInterface.ProcessCombatStart(fighter);
                    break;
                }

                _Owner.EvtInterface.Notify(EventName.OnReceiveDamage, fighter, null);
            }

            RefreshCombatTimer();

            _petOwner.Owner.CbtInterface.RefreshCombatTimer();
        }
        public override void OnDealDamage(Unit victim, uint damageCount)
        {
            if (_petOwner.AIMode != (byte)PetCommand.Passive && !_petOwner.IsHeeling && !IgnoreDamageEvents && CurrentTarget == null)
            {
                switch (AIInterface.State)
                {
                case AiState.STANDING:
                    AIInterface.ProcessCombatStart(victim);
                    break;

                case AiState.MOVING:
                    AIInterface.ProcessCombatStart(victim);
                    break;
                }

                _Owner.EvtInterface.Notify(EventName.OnDealDamage, victim, damageCount);
            }

            RefreshCombatTimer();

            _petOwner.Owner.CbtInterface.RefreshCombatTimer();
        }
 public override bool Load()
 {
     AIInterface   = UnitOwner.AiInterface;
     CurrentTarget = null;
     return(base.Load());
 }