bool Carcass(uint32 i, SpellPointer pSpell) // Becoming a Shadoweave Tailor { if(!pSpell->u_caster->IsPlayer()) return true; PlayerPointer pPlayer = TO_PLAYER(pSpell->u_caster); QuestLogEntry *pQuest = pPlayer->GetQuestLogForEntry( 10804 ); CreaturePointer NetherDrake = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 21648); GameObjectPointer FlayerCarcass = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 185155); if ( FlayerCarcass == NULLGOB ) { FlayerCarcass = sEAS.SpawnGameobject(pPlayer, 185155, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, 1, 0, 0, 0, 0); FlayerCarcass->Despawn(60000); } if ( NetherDrake == NULL ) return true; if ( NetherDrake->HasActiveAura(38502) ) return true; if( pQuest!=NULL && pQuest->GetMobCount( 0 ) < pQuest->GetQuest()->required_mobcount[0] ) { NetherDrake->CastSpell(NetherDrake, dbcSpell.LookupEntry( 38502 ), true); NetherDrake->GetAIInterface()->m_moveFly = true; NetherDrake->GetAIInterface()->MoveTo(pPlayer->GetPositionX(), pPlayer->GetPositionY()+2, pPlayer->GetPositionZ(), 0); pQuest->SetMobCount( 0, pQuest->GetMobCount( 0 )+1); pQuest->SendUpdateAddKill( 0 ); pQuest->UpdatePlayerFields(); } return true; }
void OnDied(UnitPointer pKiller) { GameObjectPointer pContainmentSphere = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( 284.700287f, -25.500309f, -16.606443f, TELESTRA_CS ); if( pContainmentSphere != NULL ) pContainmentSphere->SetState(1); ParentClass::OnDied(pKiller); };
void OnDied(UnitPointer pKiller) { GameObjectPointer pContainmentSphere = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( 321.012451f, 12.578364f, -16.591925f, ANOMALUS_CS ); if( pContainmentSphere != NULL ) pContainmentSphere->SetState(1); ParentClass::OnDied(pKiller); };
void OnDied(UnitPointer pKiller) { GameObjectPointer pDoor = GetUnit()->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(-129.034f, 2166.16f, 129.187f, 18972); if(pDoor) pDoor->SetState(0); ParentClass::OnDied(pKiller); }
void OnDied(UnitPointer pKiller) { GameObjectPointer pDoor = GetUnit()->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(-118.11f, 2161.86f, 155.678f, 18971); if(pDoor) pDoor->SetState(0); ParentClass::OnDied(pKiller); }
void OnDied(UnitPointer pKiller) { GameObjectPointer pContainmentSphere = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( 282.852997f, 12.378636f, -16.594494f, ORMOK_CS ); if( pContainmentSphere != NULL ) pContainmentSphere->SetState(1); ParentClass::OnDied(pKiller); };
bool ToLegionHold(uint32 i, AuraPointer pAura, bool apply) { if ( pAura == NULL || pAura->GetUnitCaster() == NULL || !pAura->GetUnitCaster()->IsPlayer() ) return true; PlayerPointer pPlayer = TO_PLAYER( pAura->GetUnitCaster() ); CreaturePointer pJovaanCheck = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(-3310.743896f, 2951.929199f, 171.132538f, 21633); if ( pJovaanCheck != NULL ) return true; QuestLogEntry *pQuest = pPlayer->GetQuestLogForEntry( 10563 ); if ( pQuest == NULL ) { pQuest = pPlayer->GetQuestLogForEntry( 10596 ); if ( pQuest == NULL ) return true; } if ( apply ) { pPlayer->SetUInt32Value( UNIT_FIELD_DISPLAYID, 20366 ); pPlayer->Root(); CreaturePointer pJovaan = sEAS.SpawnCreature( pPlayer, 21633, -3310.743896f, 2951.929199f, 171.132538f, 5.054039f, 0 ); // Spawn Jovaan if ( pJovaan != NULL ) { pJovaan->SetUInt64Value( UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2 ); if ( pJovaan->GetAIInterface() != NULL ) { pJovaan->GetAIInterface()->SetAllowedToEnterCombat( false ); } } GameObjectPointer pGameObject = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 184834); if ( pGameObject != NULL ) { pGameObject->Despawn(60000); pPlayer->UpdateNearbyGameObjects(); } } else { if ( pQuest->GetMobCount( 2 ) < pQuest->GetQuest()->required_mobcount[2] ) { pQuest->SetMobCount( 2, pQuest->GetMobCount( 2 ) + 1 ); pQuest->SendUpdateAddKill( 2 ); pQuest->UpdatePlayerFields(); } pPlayer->SetUInt32Value( UNIT_FIELD_DISPLAYID, pPlayer->GetUInt32Value( UNIT_FIELD_NATIVEDISPLAYID ) ); pPlayer->UnRoot(); } return true; }
void SpawnObjects(shared_ptr<MapMgr> pmgr) { if(!pmgr || pmgr->GetMapId() != 530) return; const static sgodata godata[] = { { 182173, -290.016f, 3702.42f, 56.6729f, 0.0349066f, 0, 0, 0.0174524f, 0.999848f, 1, 32, 0, 1 }, // stadium { 182174, -184.889f, 3476.93f, 38.205f, -0.0174535f, 0, 0, 0.00872664f, -0.999962f, 1, 32, 0, 1 }, // overlook { 182175, -471.462f, 3451.09f, 34.6432f, 0.174533f, 0, 0, 0.0871557f, 0.996195f, 1, 32, 0, 1 }, // brokenhill { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; const static sgodata godata_banner[] = { { 183515, -289.61f, 3696.83f, 75.9447f, 3.12414f, 0, 0, 0.999962f, 0.00872656f, 1, 32, 1375, 1 }, // stadium { 182525, -187.887f, 3459.38f, 60.0403f, -3.12414f, 0, 0, 0.999962f, -0.00872653f, 1, 32, 1375, 1 }, // overlook { 183514, -467.078f, 3528.17f, 64.7121f, 3.14159f, 0, 0, 1, -4.37114E-8f, 1, 32, 1375, 1 }, // brokenhill { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; uint32 i; const sgodata* p, *p2; for(i = 0; i < 3; ++i) { p = &godata[i]; p2 = &godata_banner[i]; GameObjectPointer pGo = pmgr->GetInterface()->SpawnGameObject(p->entry, p->posx, p->posy, p->posz, p->facing, false, 0, 0); if(pGo == NULL) continue; GameObjectPointer pGo2 = pmgr->GetInterface()->SpawnGameObject(p2->entry, p2->posx, p2->posy, p2->posz, p2->facing, false, 0, 0); if(pGo2 == NULL) continue; pGo->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, p->state); pGo2->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, p2->state); pGo->SetUInt32Value(GAMEOBJECT_FLAGS, p->flags); pGo2->SetUInt32Value(GAMEOBJECT_FLAGS, p2->flags); pGo->SetUInt32Value(GAMEOBJECT_FACTION, p->faction); pGo2->SetUInt32Value(GAMEOBJECT_FACTION, p2->faction); for(uint32 j = 0; j < 4; ++j) { pGo->SetFloatValue(GAMEOBJECT_ROTATION + j, p->orientation[j]); pGo2->SetFloatValue(GAMEOBJECT_ROTATION + j, p2->orientation[j]); } // now make his script pGo->SetScript(new HellfirePeninsulaBannerAI(pGo)); ((HellfirePeninsulaBannerAI*)pGo->GetScript())->pBanner = pGo2; pGo->PushToWorld(pmgr); pGo2->PushToWorld(pmgr); pGo->GetScript()->OnSpawn(); printf("Spawned gameobject entry %u for world pvp on hellfire.\n", p->entry); } }
void OnDied(UnitPointer mKiller) { GameObjectPointer pDoor = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(1173.01f, 1389.91f, 31.9723f, 104600); if(pDoor == 0) return; // Open the door pDoor->SetState(0); RemoveAIUpdateEvent(); }
GameObjectPointer MapScriptInterface::SpawnGameObject(uint32 Entry, float cX, float cY, float cZ, float cO, bool AddToWorld, uint32 Misc1, uint32 Misc2) { GameObjectPointer pGameObject = mapMgr->CreateGameObject(Entry); if(pGameObject == NULL || !pGameObject->CreateFromProto(Entry, mapMgr->GetMapId(), cX, cY, cZ, cO, 0.0f, 0.0f, 0.0f, 0.0f)) return NULLGOB; pGameObject->SetInstanceID(mapMgr->GetInstanceID()); pGameObject->SetPhase(1); if(AddToWorld) pGameObject->PushToWorld(mapMgr); return pGameObject; }
HellfirePeninsulaBannerAI(GameObjectPointer go) : GameObjectAIScript(go) { m_bannerStatus = BANNER_STATUS_NEUTRAL; Status = 50; switch(go->GetEntry()) { case TOWER_WEST: ControlPointName = "The Stadium"; towerid = TOWER_STADIUM; break; case TOWER_NORTH: ControlPointName = "The Overlook"; towerid = TOWER_OVERLOOK; break; case TOWER_SOUTH: ControlPointName = "Broken Hill"; towerid = TOWER_BROKENHILL; break; default: ControlPointName = "Unknown"; break; } }
void GossipHello( ObjectPointer pObject, PlayerPointer pPlayer, bool AutoSend ) { if ( pObject == NULL || pObject->GetTypeId() != TYPEID_ITEM || pPlayer == NULL ) return; QuestLogEntry* QuestEntry = pPlayer->GetQuestLogForEntry( 9452 ); if ( QuestEntry == NULL ) return; #ifndef BLIZZLIKE //if ( QuestEntry->GetMobCount( 0 ) >= QuestEntry->GetQuest()->required_mobcount[ 0 ] ) // return; #endif if ( pPlayer->GetMapMgr() == NULLMAPMGR ) return; // Meh, double object looking - we should find a way to remove this GameObjectPointer School = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 181616 ); if ( School == NULLGOB || pPlayer->CalcDistance( School ) > 5.0f ) return; #ifdef BLIZZLIKE sEventMgr.AddEvent( School, &GameObject::Despawn, static_cast< uint32 >( 20000 ), EVENT_GAMEOBJECT_ITEM_SPAWN, 1000, 1, 0 ); #else School->Despawn( 20000 ); #endif pPlayer->CastSpell( pPlayer, dbcSpell.LookupEntry( TO_ITEM( pObject )->GetProto()->Spells[ 0 ].Id ), false ); uint32 Chance = RandomUInt( 10 ); if ( Chance <= 3 ) { CreaturePointer NewCreature = sEAS.SpawnCreature( pPlayer, 17102, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), pPlayer->GetOrientation(), 180000 ); if ( NewCreature != NULLCREATURE ) { NewCreature->GetAIInterface()->StopMovement( 500 ); NewCreature->setAttackTimer( 1000, false ); NewCreature->m_noRespawn = true; }; return; }; sEAS.AddItem( 23614, pPlayer ); QuestEntry->SendUpdateAddKill( 1 ); QuestEntry->UpdatePlayerFields(); pPlayer->Gossip_Complete(); };
void OnActivate(PlayerPointer pPlayer) { if(!pPlayer) return; if(!pPlayer->GetQuestLogForEntry(10526)) return; // Wth is that ? To remove ? GameObjectPointer gobj = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 184729); if(!gobj) return; gobj->Despawn(6*60*1000); CreaturePointer spike = sEAS.SpawnCreature(pPlayer, 21319, 1315.54, 6688.33, -18, 0.001, 0); spike->Despawn(5*60*1000, 0); }
void DropFlag(PlayerPointer pPlayer, uint32 spellID) { if(!pPlayer || spellID != SILITHYST_SPELL) return; uint32 triggerID = pPlayer->GetTeam() == ALLIANCE ? ALLIANCE_RETURN : HORDE_RETURN; // we have to use AreaTrigger.dbc here AreaTrigger* pAreaTrigger = AreaTriggerStorage.LookupEntry(triggerID); if(pAreaTrigger) if(pPlayer->CalcDistance(pAreaTrigger->x, pAreaTrigger->y, pAreaTrigger->z) > 10.0f) { GameObjectPointer pGo = pPlayer->GetMapMgr()->GetInterface()->SpawnGameObject(SILITHYST_MOUND, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, true, 0, 0); if(pGo == NULL) { pGo->Destructor(); pGo = NULLGOB; } }; }
bool ChatHandler::HandleGOScale(const char* args, WorldSession* m_session) { GameObjectPointer go = m_session->GetPlayer()->m_GM_SelectedGO; if( !go ) { RedSystemMessage(m_session, "No selected GameObject..."); return true; } if(!args) { RedSystemMessage(m_session, "Invalid syntax. Should be .gobject scale 1.0"); return false; } float scale = (float)atof(args); if(!scale) scale = 1; go->SetFloatValue(OBJECT_FIELD_SCALE_X, scale); BlueSystemMessage(m_session, "Set scale to %.3f", scale); return true; }
void WorldSession::HandleDuelCancelled(WorldPacket & recv_data) { if( _player->DuelingWith == NULL ) return; if( _player->m_duelState == DUEL_STATE_STARTED ) { _player->DuelingWith->EndDuel( DUEL_WINNER_KNOCKOUT ); return; } WorldPacket data( SMSG_DUEL_COMPLETE, 1 ); data << uint8( 1 ); SendPacket( &data ); _player->DuelingWith->m_session->SendPacket( &data ); GameObjectPointer arbiter = _player->GetMapMgr() ? _player->GetMapMgr()->GetGameObject( GET_LOWGUID_PART(_player->GetUInt64Value( PLAYER_DUEL_ARBITER )) ) : NULLGOB; if( arbiter != NULL ) { arbiter->RemoveFromWorld( true ); arbiter->Destructor(); arbiter = NULLGOB; } _player->DuelingWith->SetUInt64Value( PLAYER_DUEL_ARBITER, 0 ); _player->SetUInt64Value( PLAYER_DUEL_ARBITER, 0 ); _player->DuelingWith->SetUInt32Value( PLAYER_DUEL_TEAM, 0 ); _player->SetUInt32Value( PLAYER_DUEL_TEAM, 0); _player->DuelingWith->m_duelState = DUEL_STATE_FINISHED; _player->m_duelState = DUEL_STATE_FINISHED; _player->DuelingWith->m_duelCountdownTimer = 0; _player->m_duelCountdownTimer = 0; _player->DuelingWith->DuelingWith = NULLPLR; _player->DuelingWith = NULLPLR; }
void OnActivate(PlayerPointer pPlayer) { CreaturePointer Ulag = NULLCREATURE; GameObjectPointer pDoor = NULLGOB; Ulag = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(2390.101807f, 336.676788f, 40.015614f, 6390); pDoor = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(2388.480029f, 338.3901f, 40.092899f, 176594); QuestLogEntry * en = pPlayer->GetQuestLogForEntry(1819); if(!en || pDoor==NULL || Ulag) return; CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(6390, 2390.101807f, 336.676788f, 40.015614f, 2.259590f, true, false, 0, 0); if ( NewCreature != NULL ) { NewCreature->Despawn(180000, 0); NewCreature->GetAIInterface()->SetNextTarget(pPlayer); NewCreature->GetAIInterface()->AttackReaction(pPlayer, 1); pDoor->SetUInt32Value(GAMEOBJECT_FLAGS, 33); pDoor->SetByte(GAMEOBJECT_BYTES_1, 0, 0); }; }
bool ChatHandler::HandleGOEnable(const char *args, WorldSession *m_session) { GameObjectPointer GObj = NULLGOB; GObj = m_session->GetPlayer()->m_GM_SelectedGO; if( !GObj ) { RedSystemMessage(m_session, "No selected GameObject..."); return true; } if(GObj->GetUInt32Value(GAMEOBJECT_DYNAMIC) == 1) { // Deactivate GObj->SetUInt32Value(GAMEOBJECT_DYNAMIC, 0); } else { // /Activate GObj->SetUInt32Value(GAMEOBJECT_DYNAMIC, 1); } BlueSystemMessage(m_session, "Gameobject activate/deactivated."); return true; }
void TFSpawnObjects(shared_ptr<MapMgr> pmgr) { if(!pmgr || pmgr->GetMapId() != 530) return; const static sgodata godata[] = { { 183104, -3081.65f, 5335.03f, 17.1853f, -2.14675f, 0, 0, 0.878817f, -0.477159f, 1, 32, 0, 1 }, { 183411, -2939.9f, 4788.73f, 18.987f, 2.77507f, 0, 0, 0.983255f, 0.182236f, 1, 32, 0, 1 }, { 183412, -3174.94f, 4440.97f, 16.2281f, 1.86750f, 0, 0, 0.803857f, 0.594823f, 1, 32, 0, 1 }, { 183413, -3603.31f, 4529.15f, 20.9077f, 0.994838f, 0, 0, 0.477159f, 0.878817f, 1, 32, 0, 1 }, { 183414, -3812.37f, 4899.3f, 17.7249f, 0.087266f, 0, 0, 0.043619f, 0.999048f, 1, 32, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; uint32 i; const sgodata* p; for(i = 0; i < 5; ++i) { p = &godata[i]; GameObjectPointer pGo = NULLGOB; pGo = pmgr->GetInterface()->SpawnGameObject(p->entry, p->posx, p->posy, p->posz, p->facing, false, 0, 0); if(!pGo) continue; pGo->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, p->state); pGo->SetUInt32Value(GAMEOBJECT_FLAGS, p->flags); pGo->SetUInt32Value(GAMEOBJECT_FACTION, p->faction); for(uint32 j = 0; j < 4; ++j) { pGo->SetFloatValue(GAMEOBJECT_ROTATION + j, p->orientation[j]); } // now make his script pGo->SetScript(new TerokkarForestBannerAI(pGo)); pGo->PushToWorld(pmgr); pGo->GetScript()->OnSpawn(); } }
bool ChatHandler::HandleGOActivate(const char* args, WorldSession *m_session) { GameObjectPointer GObj = NULLGOB; GObj = m_session->GetPlayer()->m_GM_SelectedGO; if( !GObj ) { RedSystemMessage(m_session, "No selected GameObject..."); return true; } if(GObj->GetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE) == 1) { // Close/Deactivate GObj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 0); GObj->SetUInt32Value(GAMEOBJECT_FLAGS, (GObj->GetUInt32Value(GAMEOBJECT_FLAGS)-1)); } else { // Open/Activate GObj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); GObj->SetUInt32Value(GAMEOBJECT_FLAGS, (GObj->GetUInt32Value(GAMEOBJECT_FLAGS)+1)); } BlueSystemMessage(m_session, "Gameobject opened/closed."); return true; }
ZangarmarshBannerAI(GameObjectPointer go) : GameObjectAIScript(go) { m_bannerStatus = BANNER_STATUS_NEUTRAL; Status = 50; switch(go->GetEntry()) { case G_TOWER_EAST: ControlPointName = "East Beacon"; towerid = TOWER_EAST; break; case G_TOWER_WEST: ControlPointName = "West Beacon"; towerid = TOWER_WEST; break; default: ControlPointName = "Unknown"; break; } }
explicit TerokkarForestBannerAI(GameObjectPointer go) : GameObjectAIScript(go) { map<uint32, uint32> StoredPlayers; uint32 Status; const char* ControlPointName; uint32 towerid; uint32 m_bannerStatus; m_bannerStatus = BANNER_STATUS_NEUTRAL; Status = 50; switch(go->GetEntry()) { case G_TOWER_1: ControlPointName = "Tower 1"; towerid = TOWER_1; break; case G_TOWER_2: ControlPointName = "Tower 2"; towerid = TOWER_2; break; case G_TOWER_3: ControlPointName = "Tower 3"; towerid = TOWER_3; break; case G_TOWER_4: ControlPointName = "Tower 4"; towerid = TOWER_4; break; case G_TOWER_5: ControlPointName = "Tower 5"; towerid = TOWER_5; break; default: ControlPointName = "Unknown"; break; } }
bool ChatHandler::HandleGODelete(const char *args, WorldSession *m_session) { GameObjectPointer GObj = m_session->GetPlayer()->m_GM_SelectedGO; if( !GObj ) { RedSystemMessage(m_session, "No selected GameObject..."); return true; } if(GObj->m_spawn != 0 && GObj->m_spawn->entry == GObj->GetEntry()) { uint32 cellx=float2int32(((_maxX-GObj->m_spawn->x)/_cellSize)); uint32 celly=float2int32(((_maxY-GObj->m_spawn->y)/_cellSize)); GObj->DeleteFromDB(); if(cellx < _sizeX && celly < _sizeY) { CellSpawns * c = GObj->GetMapMgr()->GetBaseMap()->GetSpawnsListAndCreate(cellx, celly); for(GOSpawnList::iterator itr = c->GOSpawns.begin(); itr != c->GOSpawns.end(); ++itr) { if((*itr) == GObj->m_spawn) { c->GOSpawns.erase(itr); break; } } delete GObj->m_spawn; GObj->m_spawn = NULL; } } GObj->Despawn(0); GObj->Destructor(); GObj = NULLGOB; m_session->GetPlayer()->m_GM_SelectedGO = NULLGOB; return true; }
void MapScriptInterface::DeleteGameObject(GameObjectPointer ptr) { ptr->Destructor(); ptr = NULLGOB; }
bool ChatHandler::HandleGOSelect(const char *args, WorldSession *m_session) { GameObjectPointer GObj = NULLGOB; unordered_set<ObjectPointer >::iterator Itr = m_session->GetPlayer()->GetInRangeSetBegin(); unordered_set<ObjectPointer >::iterator Itr2 = m_session->GetPlayer()->GetInRangeSetEnd(); float cDist = 9999.0f; float nDist = 0.0f; bool bUseNext = false; if(args) { if(args[0] == '1') { if(m_session->GetPlayer()->m_GM_SelectedGO == NULL) bUseNext = true; for(;;Itr++) { if(Itr == Itr2 && GObj == NULL && bUseNext) Itr = m_session->GetPlayer()->GetInRangeSetBegin(); else if(Itr == Itr2) break; if((*Itr)->GetTypeId() == TYPEID_GAMEOBJECT) { // Find the current go, move to the next one if(bUseNext) { // Select the first. GObj = TO_GAMEOBJECT(*Itr); break; } else { if(((*Itr) == m_session->GetPlayer()->m_GM_SelectedGO)) { // Found him. Move to the next one, or beginning if we're at the end bUseNext = true; } } } } } } if(!GObj) { for( ; Itr != Itr2; Itr++ ) { if( (*Itr)->GetTypeId() == TYPEID_GAMEOBJECT ) { if( (nDist = m_session->GetPlayer()->CalcDistance( *Itr )) < cDist ) { cDist = nDist; nDist = 0.0f; GObj = TO_GAMEOBJECT(*Itr); } } } } if( GObj == NULL ) { RedSystemMessage(m_session, "No inrange GameObject found."); return true; } m_session->GetPlayer()->m_GM_SelectedGO = GObj; GreenSystemMessage(m_session, "Selected GameObject [ %s ] which is %.3f meters away from you.", GameObjectNameStorage.LookupEntry(GObj->GetEntry())->Name, m_session->GetPlayer()->CalcDistance(GObj)); return true; }
bool ChatHandler::HandleGOSpawn(const char *args, WorldSession *m_session) { std::stringstream sstext; char* pEntryID = strtok((char*)args, " "); if (!pEntryID) return false; uint32 EntryID = atoi(pEntryID); bool Save = false; char* pSave = strtok(NULL, " "); if (pSave) Save = (atoi(pSave)>0?true:false); OUT_DEBUG("Spawning GameObject By Entry '%u'", EntryID); sstext << "Spawning GameObject By Entry '" << EntryID << "'" << '\0'; SystemMessage(m_session, sstext.str().c_str()); GameObjectPointer go = m_session->GetPlayer()->GetMapMgr()->CreateGameObject(EntryID); if(go == NULL) { sstext << "GameObject Info '" << EntryID << "' Not Found" << '\0'; SystemMessage(m_session, sstext.str().c_str()); return true; } PlayerPointer chr = m_session->GetPlayer(); uint32 mapid = chr->GetMapId(); float x = chr->GetPositionX(); float y = chr->GetPositionY(); float z = chr->GetPositionZ(); float o = chr->GetOrientation(); go->SetInstanceID(chr->GetInstanceID()); go->CreateFromProto(EntryID,mapid,x,y,z,o,0.0f,0.0f,0.0f,0.0f); go->SetRotation(o); go->PushToWorld(m_session->GetPlayer()->GetMapMgr()); // Create sapwn instance GOSpawn * gs = new GOSpawn; gs->entry = go->GetEntry(); gs->facing = go->GetOrientation(); gs->faction = go->GetUInt32Value(GAMEOBJECT_FACTION); gs->flags = go->GetUInt32Value(GAMEOBJECT_FLAGS); gs->id = objmgr.GenerateGameObjectSpawnID(); gs->orientation1 = go->GetFloatValue(GAMEOBJECT_ROTATION); gs->orientation2 = go->GetFloatValue(GAMEOBJECT_ROTATION_01); gs->orientation3 = go->GetFloatValue(GAMEOBJECT_ROTATION_02); gs->orientation4 = go->GetFloatValue(GAMEOBJECT_ROTATION_03); gs->scale = go->GetFloatValue(OBJECT_FIELD_SCALE_X); gs->x = go->GetPositionX(); gs->y = go->GetPositionY(); gs->z = go->GetPositionZ(); gs->state = go->GetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE); //gs->stateNpcLink = 0; uint32 cx = m_session->GetPlayer()->GetMapMgr()->GetPosX(m_session->GetPlayer()->GetPositionX()); uint32 cy = m_session->GetPlayer()->GetMapMgr()->GetPosY(m_session->GetPlayer()->GetPositionY()); m_session->GetPlayer()->GetMapMgr()->GetBaseMap()->GetSpawnsListAndCreate(cx,cy)->GOSpawns.push_back(gs); go->m_spawn = gs; //go->AddToWorld(); if(Save == true) { // If we're saving, create template and add index go->SaveToDB(); } return true; }
bool ChatHandler::HandleGOInfo(const char *args, WorldSession *m_session) { std::stringstream sstext; GameObjectInfo *GOInfo = NULL; GameObjectPointer GObj = NULLGOB; GObj = m_session->GetPlayer()->m_GM_SelectedGO; if( !GObj ) { RedSystemMessage(m_session, "No selected GameObject..."); return true; } sstext << MSG_COLOR_SUBWHITE << "Informations:\n" << MSG_COLOR_GREEN << "Entry: " << MSG_COLOR_LIGHTBLUE << GObj->GetEntry() << "\n" << MSG_COLOR_GREEN << "Model: " << MSG_COLOR_LIGHTBLUE << GObj->GetUInt32Value(GAMEOBJECT_DISPLAYID)<< "\n" << MSG_COLOR_GREEN << "State: " << MSG_COLOR_LIGHTBLUE << (uint32)GObj->GetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE)<< "\n" << MSG_COLOR_GREEN << "flags: " << MSG_COLOR_LIGHTBLUE << GObj->GetUInt32Value(GAMEOBJECT_FLAGS)<< "\n" << MSG_COLOR_GREEN << "dynflags:" << MSG_COLOR_LIGHTBLUE << GObj->GetUInt32Value(GAMEOBJECT_DYNAMIC) << "\n" << MSG_COLOR_GREEN << "faction: " << MSG_COLOR_LIGHTBLUE << GObj->GetUInt32Value(GAMEOBJECT_FACTION)<< "\n" << MSG_COLOR_GREEN << "Type: " << MSG_COLOR_LIGHTBLUE << (uint32)GObj->GetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_TYPE_ID) << " -- "; switch( GObj->GetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_TYPE_ID) ) { case GAMEOBJECT_TYPE_DOOR: sstext << "Door"; break; case GAMEOBJECT_TYPE_BUTTON: sstext << "Button"; break; case GAMEOBJECT_TYPE_QUESTGIVER: sstext << "Quest Giver"; break; case GAMEOBJECT_TYPE_CHEST: sstext << "Chest"; break; case GAMEOBJECT_TYPE_BINDER: sstext << "Binder"; break; case GAMEOBJECT_TYPE_GENERIC: sstext << "Generic"; break; case GAMEOBJECT_TYPE_TRAP: sstext << "Trap"; break; case GAMEOBJECT_TYPE_CHAIR: sstext << "Chair"; break; case GAMEOBJECT_TYPE_SPELL_FOCUS: sstext << "Spell Focus"; break; case GAMEOBJECT_TYPE_TEXT: sstext << "Text"; break; case GAMEOBJECT_TYPE_GOOBER: sstext << "Goober"; break; case GAMEOBJECT_TYPE_TRANSPORT: sstext << "Transport"; break; case GAMEOBJECT_TYPE_AREADAMAGE: sstext << "Area Damage"; break; case GAMEOBJECT_TYPE_CAMERA: sstext << "Camera"; break; case GAMEOBJECT_TYPE_MAP_OBJECT: sstext << "Map Object"; break; case GAMEOBJECT_TYPE_MO_TRANSPORT: sstext << "Mo Transport"; break; case GAMEOBJECT_TYPE_DUEL_ARBITER: sstext << "Duel Arbiter"; break; case GAMEOBJECT_TYPE_FISHINGNODE: sstext << "Fishing Node"; break; case GAMEOBJECT_TYPE_RITUAL: sstext << "Ritual"; break; case GAMEOBJECT_TYPE_MAILBOX: sstext << "Mailbox"; break; case GAMEOBJECT_TYPE_AUCTIONHOUSE: sstext << "Auction House"; break; case GAMEOBJECT_TYPE_GUARDPOST: sstext << "Guard Post"; break; case GAMEOBJECT_TYPE_SPELLCASTER: sstext << "Spell Caster"; break; case GAMEOBJECT_TYPE_MEETINGSTONE: sstext << "Meeting Stone"; break; case GAMEOBJECT_TYPE_FLAGSTAND: sstext << "Flag Stand"; break; case GAMEOBJECT_TYPE_FISHINGHOLE: sstext << "Fishing Hole"; break; case GAMEOBJECT_TYPE_FLAGDROP: sstext << "Flag Drop"; break; default: sstext << "Unknown."; break; } sstext << "\n" << MSG_COLOR_GREEN << "Distance: " << MSG_COLOR_LIGHTBLUE << GObj->CalcDistance(m_session->GetPlayer()); GOInfo = GameObjectNameStorage.LookupEntry(GObj->GetEntry()); if( !GOInfo ) { RedSystemMessage(m_session, "This GameObject doesn't have template, you won't be able to get some informations nor to spawn a GO with this entry."); sstext << "|r"; SystemMessage(m_session, sstext.str().c_str()); return true; } sstext << "\n" << MSG_COLOR_GREEN << "Name: " << MSG_COLOR_LIGHTBLUE << GOInfo->Name << "\n" << MSG_COLOR_GREEN << "Size: " << MSG_COLOR_LIGHTBLUE << GObj->GetFloatValue(OBJECT_FIELD_SCALE_X) << "\n" << "|r"; SystemMessage(m_session, sstext.str().c_str()); return true; }
void Arena::OnCreate() { GameObjectPointer obj; WorldStateManager &sm = m_mapMgr->GetStateManager(); switch(m_mapMgr->GetMapId()) { /* loraedeon */ case 572: { obj = SpawnGameObject(185917, 1278.647705f, 1730.556641f, 31.605574f, 1.68f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); obj = SpawnGameObject(185918, 1293.560791f, 1601.937988f, 31.605574f, 4.86f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); m_pcWorldStates[GREEN_TEAM] = WORLDSTATE_ARENA_LORDAERON_GREEN_PLAYER_COUNT; m_pcWorldStates[GOLD_TEAM] = WORLDSTATE_ARENA_LORDAERON_GOLD_PLAYER_COUNT; sm.CreateWorldState(WORLDSTATE_ARENA_LORDAERON_SCORE_SHOW, 1); }break; /* blades edge arena */ case 562: { obj = SpawnGameObject(183972, 6177.707520f, 227.348145f, 3.604374f, -2.260201f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(183973, 6189.546387f, 241.709854f, 3.101481f, 0.881392f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); obj = SpawnGameObject(183970, 6299.115723f, 296.549438f, 3.308032f, 0.881392f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(183971, 6287.276855f, 282.187714f, 3.810925f, -2.260201f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); m_pcWorldStates[GREEN_TEAM] = WORLDSTATE_ARENA_BLADESEDGE_GREEN_PLAYER_COUNT; m_pcWorldStates[GOLD_TEAM] = WORLDSTATE_ARENA_BLADESEDGE_GOLD_PLAYER_COUNT; sm.CreateWorldState(WORLDSTATE_ARENA_BLADESEDGE_SCORE_SHOW, 1); }break; /* nagrand arena */ case 559: { obj = SpawnGameObject(183979, 4090.064453f, 2858.437744f, 10.236313f, 0.492805f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(183980, 4081.178955f, 2874.970459f, 12.391714f, 0.492805f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); obj = SpawnGameObject(183977, 4023.709473f, 2981.776611f, 10.701169f, -2.648788f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(183978, 4031.854248f, 2966.833496f, 12.646200f, -2.648788f, 32, 1375, 1.0f); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); m_pcWorldStates[GREEN_TEAM] = WORLDSTATE_ARENA_NAGRAND_GREEN_PLAYER_COUNT; m_pcWorldStates[GOLD_TEAM] = WORLDSTATE_ARENA_NAGRAND_GOLD_PLAYER_COUNT; sm.CreateWorldState(WORLDSTATE_ARENA_NAGRAND_SCORE_SHOW, 1); }break; /* Dalaran Sewers */ case 617: { obj = SpawnGameObject(192643, 1256.33996582031f, 770.06201171875f, 20.5f, 0.0f, 32, 1375, 2.0f); if(obj) { obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); } obj = SpawnGameObject(192642, 1327.2099609375f, 813.239990234375f, 20.5f, 0.0f, 32, 1375, 2.0f); if(obj) { obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); } // not rly blizzlike, should be spawn later, not on create, but who cares, will fix it later obj = SpawnGameObject(191877, 1291.974487f, 791.844666f, 9.339742f, 3.116816f, 32, 1375, 1.0f); if(obj) obj->PushToWorld(m_mapMgr); m_pcWorldStates[GREEN_TEAM] = WORLDSTATE_ARENA_WOTLK_GREEN_PLAYER_COUNT; m_pcWorldStates[GOLD_TEAM] = WORLDSTATE_ARENA_WOTLK_GOLD_PLAYER_COUNT; sm.CreateWorldState(WORLDSTATE_ARENA_WOTLK_SCORE_SHOW, 1); }break; /* The Ring of Valor */ case 618: { /*TODO: * - fix these elevators, i ran out of ideas, lost few hours... * - spawn rest of those stupid gameobj, im too lazy to get their coords * - that moving things shouldn't move all the time... */ //elevators obj = SpawnGameObject(194030, 763.93f, -295.0f, 26.0f/*0.0f*/, 0.0f, 40, 1375, 1.0f); if(obj) { obj->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_TYPE_ID, 5); obj->PushToWorld(m_mapMgr); } obj = SpawnGameObject(194031, 763.93f, -274.0f, 26.0f/*0.0f*/, 0.0f, 40, 1375, 1.0f); if(obj) { obj->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_TYPE_ID, 5); obj->PushToWorld(m_mapMgr); } //moving 'things' obj = SpawnGameObject(193458, 763.630f, -261.783f, 26.0f, 0.0f, 40, 1375, 1.0f); if(obj) obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(193459, 763.761f, -306.230f, 26.0f, 0.0f, 40, 1375, 1.0f); if(obj) obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(193460, 802.313f, -284.349f, 24.6f, 0.0f, 40, 1375, 1.0f); if(obj) obj->PushToWorld(m_mapMgr); obj = SpawnGameObject(193461, 723.522f, -284.428f, 24.6f, 0.0f, 40, 1375, 1.0f); if(obj) obj->PushToWorld(m_mapMgr); //gates obj = SpawnGameObject(192392, 763.93f, -295.0f, 27.0f, 0.0f, 32, 1375, 1.0f); if(obj) { obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); } obj = SpawnGameObject(192391, 763.93f, -274.0f, 27.0f, 0.0f, 32, 1375, 1.0f); if(obj) { obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_STATE, 1); obj->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); m_gates.insert(obj); } m_pcWorldStates[GREEN_TEAM] = WORLDSTATE_ARENA_WOTLK_GREEN_PLAYER_COUNT; m_pcWorldStates[GOLD_TEAM] = WORLDSTATE_ARENA_WOTLK_GOLD_PLAYER_COUNT; sm.CreateWorldState(WORLDSTATE_ARENA_WOTLK_SCORE_SHOW, 1); }break; } /* push gates into world */ for(set< GameObjectPointer >::iterator itr = m_gates.begin(); itr != m_gates.end(); ++itr) (*itr)->PushToWorld(m_mapMgr); // known world states sm.CreateWorldState(m_pcWorldStates[GREEN_TEAM], 0); sm.CreateWorldState(m_pcWorldStates[GOLD_TEAM], 0); // unknown world states sm.CreateWorldState(0x08D4 ,0x0000); sm.CreateWorldState(0x08D8 ,0x0000); sm.CreateWorldState(0x08D7 ,0x0000); sm.CreateWorldState(0x08D6 ,0x0000); sm.CreateWorldState(0x08D5 ,0x0000); sm.CreateWorldState(0x08D3 ,0x0000); sm.CreateWorldState(0x0C0D ,0x017B); }
void ArathiBasin::OnCreate() { // Alliance Gate GameObjectPointer gate = SpawnGameObject(180255, 1284.597290f, 1281.166626f, -15.977916f, 0.76f, 32, 114, 1.5799990f); gate->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); gate->PushToWorld(m_mapMgr); m_gates.push_back(gate); // horde gate gate = SpawnGameObject(180256, 708.0902710f, 708.4479370f, -17.3898964f, 3.92f, 32, 114, 1.5699990f); gate->SetByte(GAMEOBJECT_BYTES_1,GAMEOBJECT_BYTES_ANIMPROGRESS, 100); gate->PushToWorld(m_mapMgr); m_gates.push_back(gate); // spawn (default) control points SpawnControlPoint(AB_CONTROL_POINT_STABLE, AB_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(AB_CONTROL_POINT_BLACKSMITH, AB_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(AB_CONTROL_POINT_LUMBERMILL, AB_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(AB_CONTROL_POINT_MINE, AB_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(AB_CONTROL_POINT_FARM, AB_SPAWN_TYPE_NEUTRAL); // spawn buffs SpawnBuff(AB_BUFF_STABLES); SpawnBuff(AB_BUFF_BLACKSMITH); SpawnBuff(AB_BUFF_LUMBERMILL); SpawnBuff(AB_BUFF_MINE); SpawnBuff(AB_BUFF_FARM); // spawn the h/a base spirit guides AddSpiritGuide(SpawnSpiritGuide(NoBaseGYLocations[0][0],NoBaseGYLocations[0][1],NoBaseGYLocations[0][2], 0.0f, 0)); AddSpiritGuide(SpawnSpiritGuide(NoBaseGYLocations[1][0],NoBaseGYLocations[1][1],NoBaseGYLocations[1][2], 0.0f, 1)); // w00t WorldStateManager &sm = m_mapMgr->GetStateManager(); // urrrgh worldstates sm.CreateWorldState(0x8D8, 0x00); sm.CreateWorldState(0x8D7, 0x00); sm.CreateWorldState(0x8D6, 0x00); sm.CreateWorldState(0x8D5, 0x00); sm.CreateWorldState(0x8D4, 0x00); sm.CreateWorldState(0x8D3, 0x00); // AB world state's // unknowns, need more research sm.CreateWorldState(0x7A3, 1800); // unknown sm.CreateWorldState(0x745, 0x02); // unknown // Icon stuff for on the map sm.CreateWorldState(WORLDSTATE_AB_SHOW_BACKSMITH_ICON, 0x01); sm.CreateWorldState(WORLDSTATE_AB_SHOW_FARM_ICON, 0x01); sm.CreateWorldState(WORLDSTATE_AB_SHOW_LUMBERMILL_ICON, 0x01); sm.CreateWorldState(WORLDSTATE_AB_SHOW_GOLDMINE_ICON, 0x01); sm.CreateWorldState(WORLDSTATE_AB_SHOW_STABLE_ICON, 0x01); // LumberMill sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_LUMBERMILL_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_LUMBERMILL_ALLIANCE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_LUMBERMILL_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_LUMBERMILL_ALLIANCE, 0x00); // GoldMine sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_GOLDMINE_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_GOLDMINE_ALLIANCE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_GOLDMINE_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_GOLDMINE_ALLIANCE, 0x00); // BlackSmith sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_BLACKSMITH_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_BLACKSMITH_ALLIANCE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_BLACKSMITH_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_BLACKSMITH_ALLIANCE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_MAX_SCORE, RESOURCES_WINVAL); sm.CreateWorldState(WORLDSTATE_AB_ALLIANCE_CAPTUREBASE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_HORDE_CAPTUREBASE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_HORDE_RESOURCES, 0x00); sm.CreateWorldState(WORLDSTATE_AB_ALLIANCE_RESOURCES, 0x00); // Farm sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_FARM_ALLIANCE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_FARM_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_FARM_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_FARM_ALLIANCE, 0x00); // Stables sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_STABLES_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURING_STABLES_ALLIANCE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_STABLES_HORDE, 0x00); sm.CreateWorldState(WORLDSTATE_AB_CAPTURED_STABLES_ALLIANCE, 0x00); }