bool CanCastPoM()
    {
        std::list<Creature*> FriendList = FindAllFriendlyInGrid(40);
        if(FriendList.empty())
            return false;

        for(std::list<Creature*>::iterator i = FriendList.begin(); i !=  FriendList.end(); ++i)
        {
            if((*i)->HasAura(44586, 0))
                return false;
        }
        return true;
    }
    void UpdateAIOOC(const uint32 diff)
    {
        // need some tweaking
        if(!Talking)
        {
            if(Talk_Timer < diff)
            {
                if(Check_Timer < diff)
                {
                    std::list<Creature*> friends = FindAllFriendlyInGrid(3);
                    if(!friends.empty())
                    {

                        Creature *c = friends.front();
                        c->GetMotionMaster()->MoveIdle();
                        c->SetInFront(me);
                        me->GetMotionMaster()->MoveIdle();
                        me->SetInFront(c);
                        me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ROAR);

                        Check_Timer = 1500;
                        Talk_Timer = urand(4000, 6000);
                        Talking = true;
                        Talk_Creature = c->GetGUID();

                        //c->Say("Check1", 0, 0);
                        //me->Say("Check0", 0, 0);
                    }
                }
                else
                    Check_Timer -= diff;
            }
            else
                Talk_Timer -= diff;
        }
        else // Talking
        {
            if(Check_Timer)
            {
                if(Check_Timer <= diff)
                {
                    //me->Say("Check2", 0, 0);
                    if(Creature *c = me->GetCreature(Talk_Creature))
                    {
                        c->SetInFront(me);
                        me->SetInFront(c);
                        c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
                        me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
                    }
                    Check_Timer = 0;
                }
                else
                    Check_Timer -= diff;
            }

            if(Talk_Timer < diff)
            {
                //me->Say("Check3", 0, 0);
                Talking = false;
                Talk_Timer = urand(4000, 8000);
                me->GetMotionMaster()->MovementExpired();
                me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);

                if(Creature *c = me->GetCreature(Talk_Creature))
                {
                    c->GetMotionMaster()->MovementExpired();
                    c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
                }
            }
            else
                Talk_Timer -= diff;
        }
    }