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 ); GameObject* arbiter = _player->GetMapMgr() ? _player->GetMapMgr()->GetGameObject( GET_LOWGUID_PART(_player->GetUInt64Value( PLAYER_DUEL_ARBITER )) ) : NULLGOB; if( arbiter != NULL ) { arbiter->RemoveFromWorld( true ); arbiter->Destruct(); 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 MapCell::LoadObjects(CellSpawns * sp) { if(_loaded == true) return; _loaded = true; Instance * pInstance = _mapmgr->pInstance; if(sp->CreatureSpawns.size())//got creatures { Vehicle* v = NULLVEHICLE; Creature* c = NULLCREATURE; for(CreatureSpawnList::iterator i=sp->CreatureSpawns.begin();i!=sp->CreatureSpawns.end();++i) { if(pInstance) { if(pInstance->m_killedNpcs.find((*i)->id) != pInstance->m_killedNpcs.end()) continue; } if((*i)->vehicle > 0) { v =_mapmgr->CreateVehicle((*i)->entry); if(v == NULLVEHICLE) continue; v->SetMapId(_mapmgr->GetMapId()); v->SetInstanceID(_mapmgr->GetInstanceID()); v->m_loadedFromDB = true; if(v->Load(*i, _mapmgr->iInstanceMode, _mapmgr->GetMapInfo())) { if(!v->CanAddToWorld()) { v->Destruct(); v = NULLVEHICLE; continue; } v->PushToWorld(_mapmgr); } else { v->Destruct(); v = NULLVEHICLE; } } else { c = _mapmgr->CreateCreature((*i)->entry); if(c == NULLCREATURE) continue; c->SetMapId(_mapmgr->GetMapId()); c->SetInstanceID(_mapmgr->GetInstanceID()); c->m_loadedFromDB = true; if(c->Load(*i, _mapmgr->iInstanceMode, _mapmgr->GetMapInfo())) { if(!c->CanAddToWorld()) { c->Destruct(); c = NULLCREATURE; continue; } c->PushToWorld(_mapmgr); } else { c->Destruct(); c = NULLCREATURE; } } } } if(sp->GOSpawns.size())//got GOs { GameObject* go; for(GOSpawnList::iterator i = sp->GOSpawns.begin(); i != sp->GOSpawns.end(); i++) { go = _mapmgr->CreateGameObject((*i)->entry); if(go == NULL) continue; if(go->Load(*i)) { go->PushToWorld(_mapmgr); CALL_GO_SCRIPT_EVENT(go, OnSpawn)(); } else { go->Destruct(); go = NULLOBJ; } } } }