Exemple #1
0
bool GOUse_go_zulaman_timed_event_chest(Player* pPlayer, GameObject* pGo)
{
    ScriptedInstance* pInstance = (ScriptedInstance*)pGo->GetInstanceData();
    if(!pInstance)
        return true;

    int i = GetHostageIndex(pGo->GetEntry());
    if(pInstance->GetData(DATA_HOSTAGE_0_STATE + i) & HOSTAGE_CHEST_UNLOCKED)
    {
        pInstance->SetData(DATA_HOSTAGE_0_STATE + i, HOSTAGE_CHEST_LOOTED);
        return false;
    }
    return true;
}
Exemple #2
0
bool GOUse_go_zulaman_cage(Player* pPlayer, GameObject* pGo)
{
    ScriptedInstance* pInstance = (ScriptedInstance*)pGo->GetInstanceData();
    if(!pInstance)
        return true;

    int i = GetHostageIndex(pGo->GetEntry());
    if(pInstance->GetData(DATA_HOSTAGE_0_STATE + i) & HOSTAGE_SAVED)
    {
        pInstance->SetData(DATA_HOSTAGE_0_STATE + i, HOSTAGE_FREED);
        pGo->SetGoState(GO_STATE_ACTIVE);
        return false;
    }
    return true;
}
Exemple #3
0
    void MovementInform(uint32 Type, uint32 Id)
    {
        if (Type != POINT_MOTION_TYPE)
            return;

        if(Id == 1)
        {
            uint8 i = GetHostageIndex(me->GetEntry());
            GameObject *target = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_CHEST_0 + i));
            if(target && RewardReached(target))
            {
                me->SetFacingToObject(target);
                target->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
                pInstance->SetData(DATA_HOSTAGE_0_STATE + i, HOSTAGE_CHEST_UNLOCKED);
            }
        }
    }
Exemple #4
0
 void UpdateAI(const uint32 diff)
 {
     if(!EventStarted && pInstance)
     {
         if(CheckTimer < diff)
         {
             uint8 i = GetHostageIndex(me->GetEntry());
             if(pInstance->GetData(DATA_HOSTAGE_0_STATE + i) & HOSTAGE_FREED)
             {
                 GameObject *target = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_CHEST_0 + i));
                 if(target)
                 {
                     float x, y, z;
                     target->GetNearPoint(x, y, z, 0.0f, dist, angle);
                     me->GetMotionMaster()->MovePoint(1, x, y, me->GetPositionZ());
                 }
                 EventStarted = true;
             }
             CheckTimer = 800;
         } else
             CheckTimer -= diff;
     }
 }
    void OnCreatureCreate(Creature *creature, uint32 creature_entry)
    {
        switch(creature_entry)
        {
        case 24375://harrison jones
            HarrisonGUID = creature->GetGUID();
            break;
        case 23574:
            AkilzonGUID = creature->GetGUID();
            break;
        case 23578://janalai
        case 23863://zuljin
        case 23577://halazzi
        case 23576://nalorakk
            break;

        case 24239://hexlord
            HexLordGUID = creature->GetGUID();
            break;
        case 23790: // hostages
        case 23999:
        case 24001:
        case 24024:
            {
                uint8 i = GetHostageIndex(creature_entry);
                HostagesGUID[i] = creature->GetGUID();
                if(Hostages[i] == HOSTAGE_NOT_SAVED && !QuestMinute && Encounters[0] != NOT_STARTED)
                    KillHostage(i);
                if(Hostages[i] >= HOSTAGE_FREED)
                    creature->Relocate(HostageInfo[i].x, HostageInfo[i].y, HostageInfo[i].z, HostageInfo[i].o);
            }
            break;
        default: break;
        }

        HandleInitCreatureState(creature);
    }
    void OnObjectCreate(GameObject *go)
    {
        switch(go->GetEntry())
        {
        case 187359: StrangeGongGUID = go->GetGUID(); break;
        case 186728:
            MassiveGateGUID = go->GetGUID();
            if (Encounters[0] != NOT_STARTED)
                go->SetGoState(GO_STATE_ACTIVE);  //opened
            else
                go->SetGoState(GO_STATE_READY);
            break;
        case 186303:
            HalazziExitDoorGUID = go->GetGUID();
            if(GetData(DATA_HALAZZIEVENT) == DONE)
                go->SetGoState(GO_STATE_ACTIVE);
            break;
        case 186304:
            HalazziEntranceDoorGUID  = go->GetGUID();
            go->SetGoState(GO_STATE_ACTIVE);
            break;
        case 186305:
            HexLordEntranceGateGUID = go->GetGUID();
            break;
        case 186306:
            HexLordExitGateGUID = go->GetGUID();
            break;
        case 186858:
            AkilzonDoorGUID = go->GetGUID();
            go->SetGoState(GO_STATE_ACTIVE);
            break;
        case 186859:
            ZulJinDoorGUID  = go->GetGUID();
            go->SetGoState(GO_STATE_ACTIVE);
            break;
        case 187021:
        case 186648:
        case 186672:
        case 186667:
        {
            uint8 i = GetHostageIndex(go->GetEntry());
            RewardsGUID[i] = go->GetGUID();

            if(Hostages[i] & HOSTAGE_CHEST_UNLOCKED)
                go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
            else if(Hostages[i] & HOSTAGE_CHEST_LOOTED)
                go->Delete();
            break;
        }
        case 186622: // Harkor's Loot Box
            if(Hostages[1] >= HOSTAGE_CHEST_UNLOCKED)
                go->Delete();
            break;
        case 186671: // Ashli Vase
            if(Hostages[3] >= HOSTAGE_CHEST_UNLOCKED)
                go->Delete();
            break;
        default: break;

        }
        CheckInstanceStatus();
    }