void MountedChampionAI::DamageTaken(Unit* /*attacker*/, uint32& damage)
{
    if (!isGrandChampion())
        return;

    if (defeated)
    {
        damage = 0;
        return;
    }

    if (damage >= me->GetHealth())
    {
        damage = 0;
        defeated = true;
        me->GetMotionMaster()->MoveIdle();
        me->Dismount();
        me->RemoveAurasDueToSpell(SPELL_SHIELD);
        me->CastSpell(me, SPELL_KNEE, true);
        me->SetTarget(0);

        if (pInstance)
            pInstance->SetData(ENCOUNTER_DATA_GC_BOSS_DEFEATED, 1);
    }
}
    void DamageTaken(Unit* /*attacker*/, uint32 & damage)
    {
        if (!isGrandChampion())
            return;

        if(_defeated)
        {
            damage = 0;
            return;
        }

        if(damage >= me->GetHealth())
        {
            damage = 0;
            _defeated = true;
            me->GetMotionMaster()->MoveIdle();
            me->Dismount();
            me->RemoveAurasDueToSpell(SPELL_SHIELD);
            me->CastSpell(me, SPELL_KNEE, true);
            me->SetTarget(0);
            me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
        }
    }
void MountedChampionAI::JustDied(Unit* /*killer*/)
{
    if (!isGrandChampion())
        pInstance->SetData(ENCOUNTER_DATA_GC_ADDS_DEFEATED, 1);
}