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; }
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; }
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); } } }
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(); }