Index: src/game/AuctionHouse.cpp =================================================================== --- src/game/AuctionHouse.cpp (revision 3621) +++ src/game/AuctionHouse.cpp (working copy) @@ -26,10 +26,10 @@ #include "UpdateMask.h" #include "AuctionHouseObject.h" -//pls DO NOT use iterator++, because it is slower than ++iterator!!! +//please DO NOT use iterator++, because it is slower than ++iterator!!! //post-incrementation is always slowlier than pre-incrementation ! -//void called when player click on auctionhouse npc +//void called when player click on auctioneer npc void WorldSession::HandleAuctionHelloOpcode( WorldPacket & recv_data ) { CHECK_PACKET_SIZE(recv_data,8); Index: src/game/BattleGround.cpp =================================================================== --- src/game/BattleGround.cpp (revision 3621) +++ src/game/BattleGround.cpp (working copy) @@ -1137,7 +1137,7 @@ break; } MapManager::Instance().GetMap(RegenBonus1->GetMapId(), RegenBonus1)->Remove(RegenBonus1, false); - RegenBonus1Spawn[0] = 3*60*1000; // 3 minutes + RegenBonus1Spawn[0] = 3*60*1000; // 3 minutes RegenBonus1Spawn[1] = 0; SpellId = 23493; break; @@ -1148,7 +1148,7 @@ break; } MapManager::Instance().GetMap(RegenBonus2->GetMapId(), RegenBonus2)->Remove(RegenBonus2, false); - RegenBonus2Spawn[0] = 3*60*1000; // 3 minutes + RegenBonus2Spawn[0] = 3*60*1000; // 3 minutes RegenBonus2Spawn[1] = 0; SpellId = 23493; break; Index: src/game/Chat.cpp =================================================================== --- src/game/Chat.cpp (revision 3621) +++ src/game/Chat.cpp (working copy) @@ -32,6 +32,8 @@ LanguageDesc lang_description[LANGUAGES_COUNT] = { + { LANG_UNIVERSAL2, 0, 0 }, + { LANG_GLOBAL, 0, 0 }, { LANG_UNIVERSAL, 0, 0 }, { LANG_ORCISH, 669, SKILL_LANG_ORCISH }, { LANG_DARNASSIAN, 671, SKILL_LANG_DARNASSIAN }, Index: src/game/ChatHandler.cpp =================================================================== --- src/game/ChatHandler.cpp (revision 3621) +++ src/game/ChatHandler.cpp (working copy) @@ -256,8 +256,6 @@ } } break; - - default: sLog.outError("CHAT: unknown msg type %u, lang: %u", type, lang); } Index: src/game/debugcmds.cpp =================================================================== --- src/game/debugcmds.cpp (revision 3621) +++ src/game/debugcmds.cpp (working copy) @@ -50,6 +50,7 @@ { if(!args) return false; + char* px = strtok((char*)args, " "); if(!px) return false; @@ -60,17 +61,14 @@ data << (uint32)133; data << uint8(2); data << failnum; - m_session->SendPacket(&data); - //char buf[256]; - //FillSystemMessageData(&data, m_session, buf); return true; } bool ChatHandler::HandleSetPoiCommand(const char* args) { - Player * pPlayer = m_session->GetPlayer(); + Player *pPlayer = m_session->GetPlayer(); Unit* target = getSelectedUnit(); if(!target) { @@ -100,40 +98,24 @@ bool ChatHandler::HandleSendItemErrorMsg(const char* args) { uint8 error_msg = atol((char*)args); - if ( error_msg > 0 ) - { - // guess size - WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, (30)); - data << error_msg; - data << uint64(0); - data << uint64(0); - data << uint8(0); - m_session->SendPacket( &data ); - return true; - } - return false; + if(error_msg >= 0) + m_session->GetPlayer()->SendEquipError(error_msg, 0, 0); + return true; } bool ChatHandler::HandleSendQuestPartyMsgCommand(const char* args) { uint32 msg = atol((char*)args); - if ( msg >= 0 ) - { - WorldPacket data( MSG_QUEST_PUSH_RESULT, (8+4+1) ); - data << m_session->GetPlayer()->GetGUID(); - data << uint32(msg); - data << uint8(0); - m_session->SendPacket(&data); - } + if (msg >= 0) + m_session->GetPlayer()->SendPushToPartyResponse(m_session->GetPlayer(), msg); return true; } bool ChatHandler::HandleSendQuestInvalidMsgCommand(const char* args) { - Player * pPlayer = m_session->GetPlayer(); uint32 msg = atol((char*)args); - if ( msg >= 0 ) - pPlayer->SendCanTakeQuestResponse( msg ); + if (msg >= 0) + m_session->GetPlayer()->SendCanTakeQuestResponse(msg); return true; } @@ -183,7 +165,6 @@ if (item && item->GetState() == state) PSendSysMessage("bag: 255 slot: %d guid: %d owner: %d", item->GetSlot(), item->GetGUIDLow(), GUID_LOPART(item->GetOwnerGUID())); } - } } } Index: src/game/Guild.cpp =================================================================== --- src/game/Guild.cpp (revision 3621) +++ src/game/Guild.cpp (working copy) @@ -41,7 +41,6 @@ CreatedYear = 0; CreatedMonth = 0; CreatedDay = 0; - } Guild::~Guild() Index: src/game/GuildHandler.cpp =================================================================== --- src/game/GuildHandler.cpp (revision 3621) +++ src/game/GuildHandler.cpp (working copy) @@ -788,7 +788,6 @@ GetPlayer()->SetGuildIdInvited(0); GetPlayer()->SetInGuild(0); - } void WorldSession::HandleGuildInfoOpcode(WorldPacket& recvPacket) @@ -824,7 +823,6 @@ if(!guild) return; guild->Roster(this); - } void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) @@ -1404,7 +1402,6 @@ } guild->SetGINFO(GINFO); - } void WorldSession::HandleGuildSaveEmblemOpcode(WorldPacket& recvPacket) Index: src/game/Level0.cpp =================================================================== --- src/game/Level0.cpp (revision 3621) +++ src/game/Level0.cpp (working copy) @@ -202,7 +202,6 @@ } SendSysMessage(itr->second->GetName()); - } } @@ -301,9 +300,8 @@ bool ChatHandler::HandlePasswordCommand(const char* args) { if(!*args) - { return false; - } + char *old_pass = strtok ((char*)args, " "); char *new_pass = strtok (NULL, " "); char *new_pass_c = strtok (NULL, " "); Index: src/game/Level1.cpp =================================================================== --- src/game/Level1.cpp (revision 3621) +++ src/game/Level1.cpp (working copy) @@ -32,7 +32,6 @@ #include "RedZoneDistrict.h" #include "Transports.h" - bool ChatHandler::HandleSayCommand(const char* args) { uint64 guid = m_session->GetPlayer()->GetSelection(); @@ -616,7 +615,6 @@ bool ChatHandler::HandleModifyFactionCommand(const char* args) { - uint32 factionid; uint32 flag; uint32 npcflag; @@ -638,7 +636,7 @@ factionid = chr->getFaction(); flag = chr->GetUInt32Value(UNIT_FIELD_FLAGS); npcflag = chr->GetUInt32Value(UNIT_NPC_FLAGS); - dyflag = chr->GetUInt32Value(UNIT_DYNAMIC_FLAGS); + dyflag = chr->GetUInt32Value(UNIT_DYNAMIC_FLAGS); PSendSysMessage(LANG_CURRENT_FACTION,chr->GetGUIDLow(),factionid,flag,npcflag,dyflag); } return true; @@ -652,7 +650,7 @@ factionid = atoi(pfactionid); - char* pflag = strtok(NULL, " "); + char *pflag = strtok(NULL, " "); if (!pflag) flag = chr->GetUInt32Value(UNIT_FIELD_FLAGS); else @@ -693,7 +691,6 @@ bool ChatHandler::HandleModifySpellCommand(const char* args) { - WorldPacket data; char* pspellflatid = strtok((char*)args, " "); @@ -747,6 +744,9 @@ bool ChatHandler::HandleModifyTalentCommand (const char* args) { + if (!*args) + return false; + int tp = atoi((char*)args); if (tp>0) { @@ -1330,7 +1330,6 @@ sLog.outDetail(LANG_CURRENT_MONEY, moneyuser, addmoney, newmoney); if(newmoney <= 0 ) { - PSendSysMessage(LANG_YOU_TAKE_ALL_MONEY, chr->GetName()); char buf[256]; @@ -1342,7 +1341,6 @@ } else { - PSendSysMessage(LANG_YOU_TAKE_MONEY, abs(addmoney), chr->GetName()); char buf[256]; @@ -1355,7 +1353,6 @@ } else { - PSendSysMessage(LANG_YOU_GIVE_MONEY, addmoney, chr->GetName()); char buf[256]; Index: src/game/Level2.cpp =================================================================== --- src/game/Level2.cpp (revision 3621) +++ src/game/Level2.cpp (working copy) @@ -39,7 +39,6 @@ bool ChatHandler::HandleTargetObjectCommand(const char* args) { - Player* pl = m_session->GetPlayer(); QueryResult *result; @@ -962,7 +961,6 @@ //pCreature->SaveToDB(); -- obsolete sDatabase.PExecuteLog("UPDATE `creature_template` SET `faction` = '%u' WHERE `entry` = '%u'", factionId, pCreature->GetEntry()); - return true; } @@ -1787,7 +1785,6 @@ // Free memory delete result2; } - } sLog.outDebug("DEBUG: HandleWpModifyCommand - Parameters parsed - now execute the command"); Index: src/game/Level3.cpp =================================================================== --- src/game/Level3.cpp (revision 3621) +++ src/game/Level3.cpp (working copy) @@ -2231,7 +2231,6 @@ bool ChatHandler::HandleLinkGraveCommand(const char* args) { - if(!*args) return false; @@ -2350,7 +2349,6 @@ bool ChatHandler::HandleSpawnTransportCommand(const char* args) { - return true; } @@ -2637,8 +2635,6 @@ bool ChatHandler::HandleHideAreaCommand(const char* args) { - WorldPacket data; - if (!*args) return false; @@ -3107,10 +3103,9 @@ // set UNIT_FIELD_BYTES_1 to init state but preserve m_form value player->SetUInt32Value(UNIT_FIELD_BYTES_1, player->m_form<<16 | unitfield ); - player->SetUInt32Value(UNIT_FIELD_BYTES_2, 0x2800 );// 0x2800, 0x2801 2.0.8... + player->SetUInt32Value(UNIT_FIELD_BYTES_2, 0x2800 ); // 0x2800, 0x2801 2.0.8... player->SetUInt32Value(UNIT_FIELD_FLAGS , UNIT_FLAG_NONE | UNIT_FLAG_UNKNOWN1 ); - //player->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_SPECIALINFO); // wrong... //-1 is default value player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); Index: src/game/Opcodes.h =================================================================== --- src/game/Opcodes.h (revision 3621) +++ src/game/Opcodes.h (working copy) @@ -884,8 +884,8 @@ CMSG_MOVE_FLY_MODE_CHANGE_ACK = 837, // movement related, fly on/off ack CMSG_MOVE_FLY_STATE_CHANGE = 838, // movement related, fly start/stop(land) ack, may be MSG CMSG_SOCKET_ITEM = 839, // click on "Socket Gems" button in Jewelcrafting UI, contains uint64 item guid + 3 x uint64 gems guid's - // 840 - SMSG_ARENA_TEAM_COMMAND_RESULT = 841, // uint32(5)+uint16(0)+uint32(9) You not in arena team that size + // 840, CMSG? + SMSG_ARENA_TEAM_COMMAND_RESULT = 841, // uint32 command, name1, name2, uint32 errorcode // 842 CMSG_ARENA_TEAM_QUERY = 843, SMSG_ARENA_TEAM_QUERY_RESPONSE = 844, @@ -910,7 +910,7 @@ CMSG_LFM_UNSET_AUTOADD = 863, CMSG_LFG_INVITE_ACCEPT = 864, CMSG_LFG_INVITE_CANCEL = 865, - // 866 + // 866, CMSG? CMSG_LOOKING_FOR_GROUP_CLEAR = 867, CMSG_SET_LOOKING_FOR_NONE = 868, CMSG_SET_LOOKING_FOR_MORE = 869, Index: src/game/Player.cpp =================================================================== --- src/game/Player.cpp (revision 3621) +++ src/game/Player.cpp (working copy) @@ -340,7 +340,6 @@ SetUInt32Value(UNIT_FIELD_BYTES_2, ( 0x28 << 8 ) ); // players - 0x2800, 0x2801, units - 0x1001 SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_UNKNOWN1 ); - //SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_SPECIALINFO); // wrong... //-1 is default value SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); @@ -1228,7 +1227,7 @@ return; // don't let enter battlegrounds without assigned battleground id (for example through areatrigger)... - if(!InBattleGround() && mEntry->map_type == MAP_BATTLEGROUND) + if(!InBattleGround() && mEntry->map_type == MAP_BATTLEGROUND && !GetSession()->GetSecurity()) return; QueryResult *result = loginDatabase.PQuery("SELECT `tbc` FROM `account` WHERE `id`='%u'", GetSession()->GetAccountId()); @@ -2060,11 +2059,12 @@ data << uint16(itr->first); time_t cooldown = 0; - if(itr->second.end > time(NULL)) - cooldown = (itr->second.end-time(NULL))*1000; + time_t curTime = time(NULL); + if(itr->second.end > curTime) + cooldown = (itr->second.end-curTime)*1000; - data << uint16(itr->second.itemid); - data << uint16(sEntry->Category); + data << uint16(itr->second.itemid); // cast item id + data << uint16(sEntry->Category); // spell category if(sEntry->Category) // may be wrong, but anyway better than nothing... { data << uint32(0); Index: src/game/QuestHandler.cpp =================================================================== --- src/game/QuestHandler.cpp (revision 3621) +++ src/game/QuestHandler.cpp (working copy) @@ -411,11 +411,7 @@ Player *pPlayer = ObjectAccessor::Instance().FindPlayer(guid); if( pPlayer ) { - WorldPacket data( MSG_QUEST_PUSH_RESULT, (8+4+1) ); - data << guid; - data << uint32( QUEST_PARTY_MSG_SHARING_QUEST ); - data << uint8(0); - _player->GetSession()->SendPacket(&data); + _player->SendPushToPartyResponse(pPlayer, QUEST_PARTY_MSG_SHARING_QUEST); if( _player->GetDistanceSq( pPlayer ) > 100 ) { Index: src/game/SharedDefines.h =================================================================== --- src/game/SharedDefines.h (revision 3621) +++ src/game/SharedDefines.h (working copy) @@ -179,6 +179,7 @@ enum Language { + LANG_UNIVERSAL2 = -1, // used by addons?, may be LANG_ADDON? LANG_GLOBAL = 0, LANG_UNIVERSAL = 0, LANG_ORCISH = 1, @@ -390,12 +391,13 @@ GAMEOBJECT_TYPE_FLAGSTAND = 24, GAMEOBJECT_TYPE_FISHINGHOLE = 25, GAMEOBJECT_TYPE_FLAGDROP = 26, - // Custom gametypes, can create problems at sending to client, - GAMEOBJECT_TYPE_CUSTOM_TELEPORTER = 27, + GAMEOBJECT_TYPE_MINI_GAME = 27, GAMEOBJECT_TYPE_LOTTERY_KIOSK = 28, GAMEOBJECT_TYPE_CAPTURE_POINT = 29, GAMEOBJECT_TYPE_AURA_GENERATOR = 30, - GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31 + GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31, + // Custom gametypes, can create problems at sending to client, + GAMEOBJECT_TYPE_CUSTOM_TELEPORTER = 32, }; enum TextEmote Index: src/game/Spell.cpp =================================================================== --- src/game/Spell.cpp (revision 3621) +++ src/game/Spell.cpp (working copy) @@ -2577,10 +2577,12 @@ // prevent disenchanting in trade slot if( m_targets.m_itemTarget->GetOwnerGUID() != m_caster->GetGUID() ) - return (uint8)SPELL_FAILED_CANT_BE_DISENCHANTED; + return SPELL_FAILED_CANT_BE_DISENCHANTED; uint32 item_quality = m_targets.m_itemTarget->GetProto()->Quality; // 2.0.x addon: Check player enchanting level agains the item desenchanting requirements uint32 item_disenchantskilllevel = m_targets.m_itemTarget->GetProto()->RequiredDisenchantSkill; + if (item_disenchantskilllevel == uint32(-1)) + return SPELL_FAILED_CANT_BE_DISENCHANTED; if (item_disenchantskilllevel > p_caster->GetSkillValue(SKILL_ENCHANTING)) return SPELL_FAILED_LOW_CASTLEVEL; if(item_quality > 4 || item_quality < 2) Index: src/game/SpellEffects.cpp =================================================================== --- src/game/SpellEffects.cpp (revision 3621) +++ src/game/SpellEffects.cpp (working copy) @@ -54,7 +54,7 @@ &Spell::EffectInstaKill, // 1 SPELL_EFFECT_INSTAKILL &Spell::EffectSchoolDMG, // 2 SPELL_EFFECT_SCHOOL_DAMAGE &Spell::EffectDummy, // 3 SPELL_EFFECT_DUMMY - &Spell::EffectNULL, // 4 SPELL_EFFECT_PORTAL_TELEPORT unused + &Spell::EffectNULL, // 4 SPELL_EFFECT_PORTAL_TELEPORT unused &Spell::EffectTeleportUnits, // 5 SPELL_EFFECT_TELEPORT_UNITS &Spell::EffectApplyAura, // 6 SPELL_EFFECT_APPLY_AURA &Spell::EffectSchoolDMG, // 7 SPELL_EFFECT_ENVIRONMENTAL_DAMAGE @@ -595,42 +595,39 @@ if(m_caster->GetTypeId() == TYPEID_PLAYER && ((Player*)m_caster)->InBattleGround()) { BattleGround* bg = sBattleGroundMgr.GetBattleGround(((Player*)m_caster)->GetBattleGroundId()); - if(bg) + if(bg && bg->GetStatus() == STATUS_INPROGRESS) { - if(bg->GetStatus() == STATUS_INPROGRESS) + switch(m_spellInfo->Id) { - switch(m_spellInfo->Id) - { - case 23383: // Alliance Flag Click - sLog.outDebug("Alliance Flag Click"); - if(((Player*)m_caster)->GetTeam() == ALLIANCE) + case 23383: // Alliance Flag Click + sLog.outDebug("Alliance Flag Click"); + if(((Player*)m_caster)->GetTeam() == ALLIANCE) // Alliance Flag Returns (Event) - m_caster->CastSpell(m_caster, 23385, true, 0); - if(((Player*)m_caster)->GetTeam() == HORDE) + m_caster->CastSpell(m_caster, 23385, true, 0); + if(((Player*)m_caster)->GetTeam() == HORDE) // Silverwing Flag - m_caster->CastSpell(m_caster, 23335, true, 0); - break; - case 23384: // Horde Flag Click - sLog.outDebug("Horde Flag Click"); - if(((Player*)m_caster)->GetTeam() == HORDE) + m_caster->CastSpell(m_caster, 23335, true, 0); + break; + case 23384: // Horde Flag Click + sLog.outDebug("Horde Flag Click"); + if(((Player*)m_caster)->GetTeam() == HORDE) // Horde Flag Returns (Event) - m_caster->CastSpell(m_caster, 23386, true, 0); - if(((Player*)m_caster)->GetTeam() == ALLIANCE) + m_caster->CastSpell(m_caster, 23386, true, 0); + if(((Player*)m_caster)->GetTeam() == ALLIANCE) // Warsong Flag - m_caster->CastSpell(m_caster, 23333, true, 0); - break; - case 23389: // Alliance Flag Capture - sLog.outDebug("Alliance Flag Capture"); - bg->EventPlayerCapturedFlag((Player*)m_caster); - break; - case 23390: // Horde Flag Capture - sLog.outDebug("Horde Flag Capture"); - bg->EventPlayerCapturedFlag((Player*)m_caster); - break; - default: - sLog.outDebug("Unknown spellid %u at BG dummy", m_spellInfo->Id); - break; - } + m_caster->CastSpell(m_caster, 23333, true, 0); + break; + case 23389: // Alliance Flag Capture + sLog.outDebug("Alliance Flag Capture"); + bg->EventPlayerCapturedFlag((Player*)m_caster); + break; + case 23390: // Horde Flag Capture + sLog.outDebug("Horde Flag Capture"); + bg->EventPlayerCapturedFlag((Player*)m_caster); + break; + default: + sLog.outDebug("Unknown spellid %u at BG dummy", m_spellInfo->Id); + break; } } } @@ -835,40 +832,37 @@ if (m_caster->GetTypeId() == TYPEID_PLAYER && ((Player*)m_caster)->InBattleGround()) { BattleGround* bg = sBattleGroundMgr.GetBattleGround(((Player *)m_caster)->GetBattleGroundId()); - if(bg) + if(bg && bg->GetStatus() == STATUS_INPROGRESS) { - if(bg->GetStatus() == STATUS_INPROGRESS) + switch(m_spellInfo->Id) { - switch(m_spellInfo->Id) - { - case 23333: // Pickup Horde Flag - bg->EventPlayerPickedUpFlag(((Player*)m_caster)); - sLog.outDebug("Send Event Horde Flag Picked Up"); - break; - case 23334: // Drop Horde Flag - bg->EventPlayerDroppedFlag(((Player*)m_caster)); - sLog.outDebug("Drop Horde Flag"); - break; - case 23335: // Pickup Alliance Flag - bg->EventPlayerPickedUpFlag(((Player*)m_caster)); - sLog.outDebug("Send Event Alliance Flag Picked Up"); - break; - case 23336: // Drop Alliance Flag - bg->EventPlayerDroppedFlag(((Player*)m_caster)); - sLog.outDebug("Drop Alliance Flag"); - break; - case 23385: // Alliance Flag Returns - bg->EventPlayerReturnedFlag(((Player*)m_caster)); - sLog.outDebug("Alliance Flag Returned"); - break; - case 23386: // Horde Flag Returns - bg->EventPlayerReturnedFlag(((Player*)m_caster)); - sLog.outDebug("Horde Flag Returned"); - break; - default: - sLog.outDebug("Unknown spellid %u in BG event", m_spellInfo->Id); - break; - } + case 23333: // Pickup Horde Flag + bg->EventPlayerPickedUpFlag(((Player*)m_caster)); + sLog.outDebug("Send Event Horde Flag Picked Up"); + break; + case 23334: // Drop Horde Flag + bg->EventPlayerDroppedFlag(((Player*)m_caster)); + sLog.outDebug("Drop Horde Flag"); + break; + case 23335: // Pickup Alliance Flag + bg->EventPlayerPickedUpFlag(((Player*)m_caster)); + sLog.outDebug("Send Event Alliance Flag Picked Up"); + break; + case 23336: // Drop Alliance Flag + bg->EventPlayerDroppedFlag(((Player*)m_caster)); + sLog.outDebug("Drop Alliance Flag"); + break; + case 23385: // Alliance Flag Returns + bg->EventPlayerReturnedFlag(((Player*)m_caster)); + sLog.outDebug("Alliance Flag Returned"); + break; + case 23386: // Horde Flag Returns + bg->EventPlayerReturnedFlag(((Player*)m_caster)); + sLog.outDebug("Horde Flag Returned"); + break; + default: + sLog.outDebug("Unknown spellid %u in BG event", m_spellInfo->Id); + break; } } } @@ -1085,7 +1079,6 @@ void Spell::EffectOpenLock(uint32 i) { - if(!m_caster || m_caster->GetTypeId() != TYPEID_PLAYER) { sLog.outDebug( "WORLD: Open Lock - No Player Caster!"); @@ -1162,8 +1155,7 @@ reqSkillValue = lockInfo->requiredlockskill; } - else - if(SkillId == SKILL_LOCKPICKING) // apply picklock skill to wrong target + else if(SkillId == SKILL_LOCKPICKING) // apply picklock skill to wrong target { SendCastResult(SPELL_FAILED_BAD_TARGETS); return; @@ -1476,18 +1468,16 @@ Pet* old_wild = NULL; - { - CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY())); - Cell cell = RedZone::GetZone(p); - cell.data.Part.reserved = ALL_DISTRICT; - cell.SetNoCreate(); + CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY())); + Cell cell = RedZone::GetZone(p); + cell.data.Part.reserved = ALL_DISTRICT; + cell.SetNoCreate(); - PetWithIdCheck u_check(m_caster, pet_entry); - MaNGOS::UnitSearcher checker((Unit*&)old_wild, u_check); - TypeContainerVisitor, WorldTypeMapContainer > object_checker(checker); - CellLock cell_lock(cell, p); - cell_lock->Visit(cell_lock, object_checker, *MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)); - } + PetWithIdCheck u_check(m_caster, pet_entry); + MaNGOS::UnitSearcher checker((Unit*&)old_wild, u_check); + TypeContainerVisitor, WorldTypeMapContainer > object_checker(checker); + CellLock cell_lock(cell, p); + cell_lock->Visit(cell_lock, object_checker, *MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)); if (old_wild) // find old critter, unsummon { @@ -1496,7 +1486,6 @@ } else // in another case summon new { - uint32 level = m_caster->getLevel(); // level of pet summoned using engineering item based at engineering skill level @@ -1820,7 +1809,6 @@ // if pet requested type already exist if( OldSummon ) { - if(petentry == 0 || OldSummon->GetCreatureInfo()->Entry == petentry) { // pet in corpse state can't be summoned @@ -2111,7 +2099,7 @@ } else if(uint32 ammo = ((Player*)m_caster)->GetUInt32Value(PLAYER_AMMO_ID)) - ((Player*)m_caster)->DestroyItemCount( ammo , 1, true); + ((Player*)m_caster)->DestroyItemCount(ammo, 1, true); // wand not have ammo } } @@ -2833,18 +2821,16 @@ Unit* old_critter = NULL; - { - CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY())); - Cell cell = RedZone::GetZone(p); - cell.data.Part.reserved = ALL_DISTRICT; - cell.SetNoCreate(); + CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY())); + Cell cell = RedZone::GetZone(p); + cell.data.Part.reserved = ALL_DISTRICT; + cell.SetNoCreate(); - PetWithIdCheck u_check(m_caster, pet_entry); - MaNGOS::UnitSearcher checker(old_critter, u_check); - TypeContainerVisitor, WorldTypeMapContainer > object_checker(checker); - CellLock cell_lock(cell, p); - cell_lock->Visit(cell_lock, object_checker, *MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)); - } + PetWithIdCheck u_check(m_caster, pet_entry); + MaNGOS::UnitSearcher checker(old_critter, u_check); + TypeContainerVisitor, WorldTypeMapContainer > object_checker(checker); + CellLock cell_lock(cell, p); + cell_lock->Visit(cell_lock, object_checker, *MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)); if (old_critter) // find old critter, unsummon { Index: src/game/SpellHandler.cpp =================================================================== --- src/game/SpellHandler.cpp (revision 3621) +++ src/game/SpellHandler.cpp (working copy) @@ -412,30 +412,39 @@ // go to end function to spell casting break; } - case GAMEOBJECT_TYPE_FLAGSTAND: //24 - //BG flag click - info = obj->GetGOInfo(); - if(info) - spellId = info->sound1; + case GAMEOBJECT_TYPE_FLAGSTAND: // 24 + if(_player->InBattleGround() && // in battleground + !_player->IsMounted() && // not mounted + !_player->HasStealthAura() && // not stealthed + !_player->HasInvisibilityAura()) // not invisible + { + //BG flag click + info = obj->GetGOInfo(); + if(info) + spellId = info->sound1; + } break; - case GAMEOBJECT_TYPE_FLAGDROP: //26 - //BG flag dropped - if(_player->InBattleGround()) + case GAMEOBJECT_TYPE_FLAGDROP: // 26 + if(_player->InBattleGround() && // in battleground + !_player->IsMounted() && // not mounted + !_player->HasStealthAura() && // not stealthed + !_player->HasInvisibilityAura()) // not invisible { + //BG flag dropped info = obj->GetGOInfo(); - if(info->id == 179785) // Silverwing Flag + if(info->id == 179785) // Silverwing Flag { if(_player->GetTeam() == ALLIANCE) - spellId = 23385; // Alliance Flag Returns + spellId = 23385; // Alliance Flag Returns if(_player->GetTeam() == HORDE) - spellId = 23335; // Silverwing Flag + spellId = 23335; // Silverwing Flag } - if(info->id == 179786) // Warsong Flag + if(info->id == 179786) // Warsong Flag { if(_player->GetTeam() == HORDE) - spellId = 23386; // Horde Flag Returns + spellId = 23386; // Horde Flag Returns if(_player->GetTeam() == ALLIANCE) - spellId = 23333; // Warsong Flag + spellId = 23333; // Warsong Flag } obj->Delete(); } Index: src/game/UpdateFields.h =================================================================== --- src/game/UpdateFields.h (revision 3621) +++ src/game/UpdateFields.h (working copy) @@ -297,6 +297,9 @@ PLAYER_FIELD_OFFHAND_WEAPON_SKILL_RATING = 0x49B + UNIT_END, // custom PLAYER_FIELD_RANGED_WEAPON_SKILL_RATING = 0x49C + UNIT_END, // custom PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = 0x49D + UNIT_END, // Size:9 + PLAYER_FIELD_ARENA_TEAM_ID_2v2 = 0x49D + UNIT_END, // custom + PLAYER_FIELD_ARENA_TEAM_ID_3v3 = 0x4A0 + UNIT_END, // custom + PLAYER_FIELD_ARENA_TEAM_ID_5v5 = 0x4A3 + UNIT_END, // custom PLAYER_FIELD_HONOR_CURRENCY = 0x4A6 + UNIT_END, // Size:1 PLAYER_FIELD_ARENA_CURRENCY = 0x4A7 + UNIT_END, // Size:1 PLAYER_FIELD_MOD_MANA_REGEN = 0x4A8 + UNIT_END, // Size:1 Index: src/game/Weather.cpp =================================================================== --- src/game/Weather.cpp (revision 3621) +++ src/game/Weather.cpp (working copy) @@ -203,7 +203,7 @@ uint32 sound = GetSound(); WorldPacket data( SMSG_WEATHER, (4+4+4) ); - data << (uint32)m_type << (float)m_grade << (uint32)sound; + data << (uint32)m_type << (float)m_grade << (uint32)sound << uint8(0); player->GetSession()->SendPacket( &data ); } @@ -222,7 +222,7 @@ m_grade = 0.0001; WorldPacket data( SMSG_WEATHER, (4+4+4) ); - data << (uint32)m_type << (float)m_grade << (uint32)sound; + data << (uint32)m_type << (float)m_grade << (uint32)sound << uint8(0); player->SendMessageToSet( &data, true ); ///- Log the event Index: src/game/WorldSession.cpp =================================================================== --- src/game/WorldSession.cpp (revision 3621) +++ src/game/WorldSession.cpp (working copy) @@ -255,7 +255,7 @@ objmgr.opcodeTable[ CMSG_ACCEPT_TRADE ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleAcceptTradeOpcode ); objmgr.opcodeTable[ CMSG_BEGIN_TRADE ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleBeginTradeOpcode ); objmgr.opcodeTable[ CMSG_BUSY_TRADE ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleBusyTradeOpcode ); - // sended after loguot complete + // sended after logout complete objmgr.opcodeTable[ CMSG_CANCEL_TRADE ] = OpcodeHandler( STATUS_AUTHED, &WorldSession::HandleCancelTradeOpcode ); objmgr.opcodeTable[ CMSG_CLEAR_TRADE_ITEM ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleClearTradeItemOpcode ); objmgr.opcodeTable[ CMSG_IGNORE_TRADE ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleIgnoreTradeOpcode ); @@ -435,10 +435,7 @@ objmgr.opcodeTable[ CMSG_MOVE_FLY_STATE_CHANGE ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleMoveFlyStateChangeOpcode ); objmgr.opcodeTable[ CMSG_DISMOUNT ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleDismountOpcode ); objmgr.opcodeTable[ CMSG_SELF_RES ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleSelfResOpcode ); - - // Socket gem objmgr.opcodeTable[ CMSG_SOCKET_ITEM ] = OpcodeHandler( STATUS_LOGGEDIN, &WorldSession::HandleSocketOpcode ); - } void WorldSession::SizeError(WorldPacket const& packet, uint32 size) const @@ -1149,6 +1146,7 @@ sLog.outDebug("CMSG_REALM_STATE_REQUEST"); uint32 unk; + std::string unk_str = "01/01/01"; recv_data >> unk; WorldPacket data(SMSG_REALM_STATE_RESPONSE, 17); @@ -1157,9 +1155,7 @@ // 0x0 realm normal // 0x1 realm split // 0x2 realm split pending - data << uint16(0x3130) << uint8(0x2F); - data << uint16(0x3130) << uint8(0x2F); - data << uint16(0x3130) << uint8(0x00); + data << unk_str; SendPacket(&data); sLog.outDebug("response sent %u", unk); } Index: src/game/WorldSession.h =================================================================== --- src/game/WorldSession.h (revision 3621) +++ src/game/WorldSession.h (working copy) @@ -122,7 +122,7 @@ void SendAuctionOutbiddedMail( AuctionEntry * auction, uint32 newPrice ); void SendAuctionCancelledToBidderMail( AuctionEntry* auction ); - //Item Enchantement + //Item Enchantment void SendEnchantmentLog(uint64 Target, uint64 Caster,uint32 ItemID,uint32 SpellID); void SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,uint32 slot,uint32 Duration); @@ -166,7 +166,7 @@ // repair void HandleRepairItemOpcode(WorldPacket& recvPacket); - //Knockback + // Knockback void HandleMoveKnockBackAck(WorldPacket& recvPacket); void HandleMoveTeleportAck(WorldPacket& recvPacket);