From dcb0d4e48431f423255aab8fb9ce40d1226f1d58 Mon Sep 17 00:00:00 2001 From: tomrus88 Date: Sun, 28 Mar 2010 14:25:28 +0400 Subject: [PATCH] Group loot should work now. --- src/game/Group.cpp | 32 ++++---- src/game/Group.h | 2 +- src/game/GroupHandler.cpp | 159 +++++++++++++++++++------------------- src/game/Opcodes.h | 2 +- 4 files changed, 98 insertions(+), 97 deletions(-) diff --git a/src/game/Group.cpp b/src/game/Group.cpp index 961b82a6d..9f6859622 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -235,7 +235,7 @@ uint32 Group::RemoveInvite(Player *player) void Group::RemoveAllInvites() { - for(InvitesList::iterator itr=m_invitees.begin(); itr!=m_invitees.end(); ++itr) + for(InvitesList::iterator itr = m_invitees.begin(); itr!=m_invitees.end(); ++itr) (*itr)->SetGroupInvite(NULL); m_invitees.clear(); @@ -265,6 +265,7 @@ bool Group::AddMember(const uint64 &guid, const char* name) { if(!_addMember(guid, name)) return false; + SendUpdate(); Player *player = sObjectMgr.GetPlayer(guid); @@ -445,10 +446,11 @@ void Group::Disband(bool hideDestroy) /*** LOOT SYSTEM ***/ /*********************************************************/ -void Group::SendLootStartRoll(uint32 CountDown, const Roll &r) +void Group::SendLootStartRoll(uint32 CountDown, uint32 mapid, const Roll &r) { WorldPacket data(SMSG_LOOT_START_ROLL, (8+4+4+4+4+4+4+1)); data << r.lootedTargetGUID; // creature guid what we're looting + data << uint32(mapid); // 3.3.3 mapid data << uint32(r.itemSlot); // item slot in loot data << uint32(r.itemid); // the itemEntryId for the item that shall be rolled for data << uint32(r.itemRandomSuffix); // randomSuffix @@ -479,7 +481,7 @@ void Group::SendLootRoll(ObjectGuid const& targetGuid, uint8 rollNumber, uint8 r data << uint32(r.itemRandomPropId); // Item random property ID data << uint8(rollNumber); // 0: "Need for: [item name]" > 127: "you passed on: [item name]" Roll number data << uint8(rollType); // 0: "Need for: [item name]" 0: "You have selected need for [item name] 1: need roll 2: greed roll - data << uint8(0); // 2.4.0 + data << uint8(0); // auto pass on loot for( Roll::PlayerVote::const_iterator itr = r.playerVote.begin(); itr != r.playerVote.end(); ++itr) { @@ -501,7 +503,7 @@ void Group::SendLootRollWon(ObjectGuid const& targetGuid, uint8 rollNumber, uint data << uint32(r.itemRandomSuffix); // randomSuffix data << uint32(r.itemRandomPropId); // Item random property data << targetGuid; // guid of the player who won. - data << uint8(rollNumber); // rollnumber realted to SMSG_LOOT_ROLL + data << uint8(rollNumber); // rollnumber related to SMSG_LOOT_ROLL data << uint8(rollType); // Rolltype related to SMSG_LOOT_ROLL for( Roll::PlayerVote::const_iterator itr = r.playerVote.begin(); itr != r.playerVote.end(); ++itr) @@ -555,7 +557,7 @@ void Group::GroupLoot(ObjectGuid const& playerGUID, Loot *loot, Creature *creatu //roll for over-threshold item if it's one-player loot if (item->Quality >= uint32(m_lootThreshold) && !i->freeforall) { - Roll* r=new Roll(creature->GetGUID(),*i); + Roll* r = new Roll(creature->GetGUID(), *i); //a vector is filled with only near party members for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) @@ -582,7 +584,7 @@ void Group::GroupLoot(ObjectGuid const& playerGUID, Loot *loot, Creature *creatu r->playerVote.begin()->second = NEED; else { - group->SendLootStartRoll(60000, *r); + group->SendLootStartRoll(60000, creature->GetMapId(), *r); loot->items[itemSlot].is_blocked = true; @@ -607,14 +609,14 @@ void Group::NeedBeforeGreed(ObjectGuid const& playerGUID, Loot *loot, Creature * Group *group = player->GetGroup(); uint8 itemSlot = 0; - for(std::vector::iterator i=loot->items.begin(); i != loot->items.end(); ++i, ++itemSlot) + for(std::vector::iterator i = loot->items.begin(); i != loot->items.end(); ++i, ++itemSlot) { item = ObjectMgr::GetItemPrototype(i->itemid); //only roll for one-player items, not for ones everyone can get if (item->Quality >= uint32(m_lootThreshold) && !i->freeforall) { - Roll* r=new Roll(creature->GetGUID(),*i); + Roll* r = new Roll(creature->GetGUID(), *i); for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) { @@ -641,7 +643,7 @@ void Group::NeedBeforeGreed(ObjectGuid const& playerGUID, Loot *loot, Creature * r->playerVote.begin()->second = NEED; else { - group->SendLootStartRoll(60000, *r); + group->SendLootStartRoll(60000, creature->GetMapId(), *r); loot->items[itemSlot].is_blocked = true; } @@ -666,7 +668,7 @@ void Group::MasterLoot(ObjectGuid const& playerGUID, Loot* /*loot*/, Creature *c uint32 real_count = 0; WorldPacket data(SMSG_LOOT_MASTER_LIST, 330); - data << (uint8)GetMembersCount(); + data << uint8(GetMembersCount()); for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) { @@ -676,7 +678,7 @@ void Group::MasterLoot(ObjectGuid const& playerGUID, Loot* /*loot*/, Creature *c if (looter->IsWithinDist(creature, sWorld.getConfig(CONFIG_FLOAT_GROUP_XP_DISTANCE), false)) { - data << looter->GetGUID(); + data << uint64(looter->GetGUID()); ++real_count; } } @@ -757,7 +759,7 @@ bool Group::CountRollVote(ObjectGuid const& playerGUID, Rolls::iterator& rollI, return false; } -//called when roll timer expires +// called when roll timer expires void Group::EndRoll() { while(!RollId.empty()) @@ -1064,8 +1066,8 @@ void Group::OfflineReadyCheck() if (!pl || !pl->GetSession()) { WorldPacket data(MSG_RAID_READY_CHECK_CONFIRM, 9); - data << citr->guid; - data << (uint8)0; + data << uint64(citr->guid); + data << uint8(0); BroadcastReadyCheck(&data); } } @@ -1190,7 +1192,7 @@ bool Group::_removeMember(const uint64 &guid) void Group::_setLeader(const uint64 &guid) { member_citerator slot = _getMemberCSlot(guid); - if(slot==m_memberSlots.end()) + if(slot == m_memberSlots.end()) return; if(!isBGGroup()) diff --git a/src/game/Group.h b/src/game/Group.h index 397363e3a..1246657e3 100644 --- a/src/game/Group.h +++ b/src/game/Group.h @@ -312,7 +312,7 @@ class MANGOS_DLL_SPEC Group /*** LOOT SYSTEM ***/ /*********************************************************/ - void SendLootStartRoll(uint32 CountDown, const Roll &r); + void SendLootStartRoll(uint32 CountDown, uint32 mapid, const Roll &r); void SendLootRoll(ObjectGuid const& targetGuid, uint8 rollNumber, uint8 rollType, const Roll &r); void SendLootRollWon(ObjectGuid const& targetGuid, uint8 rollNumber, uint8 rollType, const Roll &r); void SendLootAllPassed(const Roll &r); diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index fea626155..7369a7577 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -43,9 +43,9 @@ void WorldSession::SendPartyResult(PartyOperation operation, const std::string& member, PartyResult res) { WorldPacket data(SMSG_PARTY_COMMAND_RESULT, (8+member.size()+1)); - data << (uint32)operation; + data << uint32(operation); data << member; - data << (uint32)res; + data << uint32(res); SendPacket( &data ); } @@ -171,7 +171,7 @@ void WorldSession::HandleGroupAcceptOpcode( WorldPacket & recv_data ) return; } - // remove in from ivites in any case + // remove in from invites in any case group->RemoveInvite(GetPlayer()); /** error handling **/ @@ -197,10 +197,9 @@ void WorldSession::HandleGroupAcceptOpcode( WorldPacket & recv_data ) return; } - // everything's fine, do it, PLAYER'S GROUP IS SET IN ADDMEMBER!!! + // everything is fine, do it, PLAYER'S GROUP IS SET IN ADDMEMBER!!! if(!group->AddMember(GetPlayer()->GetGUID(), GetPlayer()->GetName())) return; - } void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ ) @@ -320,7 +319,7 @@ void WorldSession::HandleGroupSetLeaderOpcode( WorldPacket & recv_data ) return; /********************/ - // everything's fine, do it + // everything is fine, do it group->ChangeLeader(guid); } @@ -338,7 +337,7 @@ void WorldSession::HandleGroupDisbandOpcode( WorldPacket & /*recv_data*/ ) /** error handling **/ /********************/ - // everything's fine, do it + // everything is fine, do it SendPartyResult(PARTY_OP_LEAVE, GetPlayer()->GetName(), PARTY_RESULT_OK); GetPlayer()->RemoveFromGroup(); @@ -360,7 +359,7 @@ void WorldSession::HandleLootMethodOpcode( WorldPacket & recv_data ) return; /********************/ - // everything's fine, do it + // everything is fine, do it group->SetLootMethod((LootMethod)lootMethod); group->SetLooterGuid(lootMaster); group->SetLootThreshold((ItemQualities)lootThreshold); @@ -382,7 +381,7 @@ void WorldSession::HandleLootRoll( WorldPacket &recv_data ) if(!group) return; - // everything's fine, do it + // everything is fine, do it group->CountRollVote(GetPlayer()->GetObjectGuid(), lootedTarget, itemSlot, rollType); switch (rollType) @@ -429,7 +428,7 @@ void WorldSession::HandleRandomRollOpcode(WorldPacket& recv_data) return; /********************/ - // everything's fine, do it + // everything is fine, do it roll = urand(minimum, maximum); //sLog.outDebug("ROLL: MIN: %u, MAX: %u, ROLL: %u", minimum, maximum, roll); @@ -457,7 +456,7 @@ void WorldSession::HandleRaidTargetUpdateOpcode( WorldPacket & recv_data ) /** error handling **/ /********************/ - // everything's fine, do it + // everything is fine, do it if(x == 0xFF) // target icon request { group->SendTargetIconList(this); @@ -487,7 +486,7 @@ void WorldSession::HandleGroupRaidConvertOpcode( WorldPacket & /*recv_data*/ ) return; /********************/ - // everything's fine, do it (is it 0 (PARTY_OP_INVITE) correct code) + // everything is fine, do it (is it 0 (PARTY_OP_INVITE) correct code) SendPartyResult(PARTY_OP_INVITE, "", PARTY_RESULT_OK); group->ConvertToRaid(); } @@ -513,7 +512,7 @@ void WorldSession::HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data ) return; /********************/ - // everything's fine, do it + // everything is fine, do it group->ChangeMembersGroup(sObjectMgr.GetPlayer(name.c_str()), groupNr); } @@ -533,7 +532,7 @@ void WorldSession::HandleGroupAssistantLeaderOpcode( WorldPacket & recv_data ) return; /********************/ - // everything's fine, do it + // everything is fine, do it group->SetAssistant(guid, (flag==0?false:true)); } @@ -560,7 +559,7 @@ void WorldSession::HandlePartyAssignmentOpcode( WorldPacket & recv_data ) return; /********************/ - // everything's fine, do it + // everything is fine, do it if(flag1 == 1) group->SetMainAssistant(guid); if(flag2 == 1) @@ -580,7 +579,7 @@ void WorldSession::HandleRaidReadyCheckOpcode( WorldPacket & recv_data ) return; /********************/ - // everything's fine, do it + // everything is fine, do it WorldPacket data(MSG_RAID_READY_CHECK, 8); data << GetPlayer()->GetGUID(); group->BroadcastPacket(&data, false, -1); @@ -596,10 +595,10 @@ void WorldSession::HandleRaidReadyCheckOpcode( WorldPacket & recv_data ) if(!group) return; - // everything's fine, do it + // everything is fine, do it WorldPacket data(MSG_RAID_READY_CHECK_CONFIRM, 9); - data << GetPlayer()->GetGUID(); - data << state; + data << uint64(GetPlayer()->GetGUID()); + data << uint8(state); group->BroadcastReadyCheck(&data); } } @@ -636,45 +635,45 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke data->Initialize(SMSG_PARTY_MEMBER_STATS, 8 + 4 + byteCount); *data << player->GetPackGUID(); - *data << (uint32) mask; + *data << uint32(mask); if (mask & GROUP_UPDATE_FLAG_STATUS) { if (player) { if (player->IsPvP()) - *data << (uint16) (MEMBER_STATUS_ONLINE | MEMBER_STATUS_PVP); + *data << uint16(MEMBER_STATUS_ONLINE | MEMBER_STATUS_PVP); else - *data << (uint16) MEMBER_STATUS_ONLINE; + *data << uint16(MEMBER_STATUS_ONLINE); } else - *data << (uint16) MEMBER_STATUS_OFFLINE; + *data << uint16(MEMBER_STATUS_OFFLINE); } if (mask & GROUP_UPDATE_FLAG_CUR_HP) - *data << (uint32) player->GetHealth(); + *data << uint32(player->GetHealth()); if (mask & GROUP_UPDATE_FLAG_MAX_HP) - *data << (uint32) player->GetMaxHealth(); + *data << uint32(player->GetMaxHealth()); Powers powerType = player->getPowerType(); if (mask & GROUP_UPDATE_FLAG_POWER_TYPE) - *data << (uint8) powerType; + *data << uint8(powerType); if (mask & GROUP_UPDATE_FLAG_CUR_POWER) - *data << (uint16) player->GetPower(powerType); + *data << uint16(player->GetPower(powerType)); if (mask & GROUP_UPDATE_FLAG_MAX_POWER) - *data << (uint16) player->GetMaxPower(powerType); + *data << uint16(player->GetMaxPower(powerType)); if (mask & GROUP_UPDATE_FLAG_LEVEL) - *data << (uint16) player->getLevel(); + *data << uint16(player->getLevel()); if (mask & GROUP_UPDATE_FLAG_ZONE) - *data << (uint16) player->GetZoneId(); + *data << uint16(player->GetZoneId()); if (mask & GROUP_UPDATE_FLAG_POSITION) - *data << (uint16) player->GetPositionX() << (uint16) player->GetPositionY(); + *data << uint16(player->GetPositionX()) << uint16(player->GetPositionY()); if (mask & GROUP_UPDATE_FLAG_AURAS) { @@ -694,9 +693,9 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke if (mask & GROUP_UPDATE_FLAG_PET_GUID) { if(pet) - *data << (uint64) pet->GetGUID(); + *data << uint64(pet->GetGUID()); else - *data << (uint64) 0; + *data << uint64(0); } if (mask & GROUP_UPDATE_FLAG_PET_NAME) @@ -704,55 +703,55 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke if(pet) *data << pet->GetName(); else - *data << (uint8) 0; + *data << uint8(0); } if (mask & GROUP_UPDATE_FLAG_PET_MODEL_ID) { if(pet) - *data << (uint16) pet->GetDisplayId(); + *data << uint16(pet->GetDisplayId()); else - *data << (uint16) 0; + *data << uint16(0); } if (mask & GROUP_UPDATE_FLAG_PET_CUR_HP) { if(pet) - *data << (uint32) pet->GetHealth(); + *data << uint32(pet->GetHealth()); else - *data << (uint32) 0; + *data << uint32(0); } if (mask & GROUP_UPDATE_FLAG_PET_MAX_HP) { if(pet) - *data << (uint32) pet->GetMaxHealth(); + *data << uint32(pet->GetMaxHealth()); else - *data << (uint32) 0; + *data << uint32(0); } if (mask & GROUP_UPDATE_FLAG_PET_POWER_TYPE) { if(pet) - *data << (uint8) pet->getPowerType(); + *data << uint8(pet->getPowerType()); else - *data << (uint8) 0; + *data << uint8(0); } if (mask & GROUP_UPDATE_FLAG_PET_CUR_POWER) { if(pet) - *data << (uint16) pet->GetPower(pet->getPowerType()); + *data << uint16(pet->GetPower(pet->getPowerType())); else - *data << (uint16) 0; + *data << uint16(0); } if (mask & GROUP_UPDATE_FLAG_PET_MAX_POWER) { if(pet) - *data << (uint16) pet->GetMaxPower(pet->getPowerType()); + *data << uint16(pet->GetMaxPower(pet->getPowerType())); else - *data << (uint16) 0; + *data << uint16(0); } if (mask & GROUP_UPDATE_FLAG_PET_AURAS) @@ -771,7 +770,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke } } else - *data << (uint64) 0; + *data << uint64(0); } } @@ -788,8 +787,8 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data ) WorldPacket data(SMSG_PARTY_MEMBER_STATS_FULL, 3+4+2); data << uint8(0); // only for SMSG_PARTY_MEMBER_STATS_FULL, probably arena/bg related data.appendPackGUID(Guid); - data << (uint32) GROUP_UPDATE_FLAG_STATUS; - data << (uint16) MEMBER_STATUS_OFFLINE; + data << uint32(GROUP_UPDATE_FLAG_STATUS); + data << uint16(MEMBER_STATUS_OFFLINE); SendPacket(&data); return; } @@ -805,68 +804,68 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data ) mask1 = 0x7FFFFFFF; // for hunters and other classes with pets Powers powerType = player->getPowerType(); - data << (uint32) mask1; // group update mask - data << (uint16) MEMBER_STATUS_ONLINE; // member's online status - data << (uint32) player->GetHealth(); // GROUP_UPDATE_FLAG_CUR_HP - data << (uint32) player->GetMaxHealth(); // GROUP_UPDATE_FLAG_MAX_HP - data << (uint8) powerType; // GROUP_UPDATE_FLAG_POWER_TYPE - data << (uint16) player->GetPower(powerType); // GROUP_UPDATE_FLAG_CUR_POWER - data << (uint16) player->GetMaxPower(powerType); // GROUP_UPDATE_FLAG_MAX_POWER - data << (uint16) player->getLevel(); // GROUP_UPDATE_FLAG_LEVEL - data << (uint16) player->GetZoneId(); // GROUP_UPDATE_FLAG_ZONE - data << (uint16) player->GetPositionX(); // GROUP_UPDATE_FLAG_POSITION - data << (uint16) player->GetPositionY(); // GROUP_UPDATE_FLAG_POSITION + data << uint32(mask1); // group update mask + data << uint16(MEMBER_STATUS_ONLINE); // member's online status + data << uint32(player->GetHealth()); // GROUP_UPDATE_FLAG_CUR_HP + data << uint32(player->GetMaxHealth()); // GROUP_UPDATE_FLAG_MAX_HP + data << uint8(powerType); // GROUP_UPDATE_FLAG_POWER_TYPE + data << uint16(player->GetPower(powerType)); // GROUP_UPDATE_FLAG_CUR_POWER + data << uint16(player->GetMaxPower(powerType)); // GROUP_UPDATE_FLAG_MAX_POWER + data << uint16(player->getLevel()); // GROUP_UPDATE_FLAG_LEVEL + data << uint16(player->GetZoneId()); // GROUP_UPDATE_FLAG_ZONE + data << uint16(player->GetPositionX()); // GROUP_UPDATE_FLAG_POSITION + data << uint16(player->GetPositionY()); // GROUP_UPDATE_FLAG_POSITION uint64 auramask = 0; size_t maskPos = data.wpos(); - data << (uint64) auramask; // placeholder + data << uint64(auramask); // placeholder for(uint8 i = 0; i < MAX_AURAS; ++i) { if(uint32 aura = player->GetVisibleAura(i)) { auramask |= (uint64(1) << i); - data << (uint32) aura; - data << (uint8) 1; + data << uint32(aura); + data << uint8(1); } } - data.put(maskPos,auramask); // GROUP_UPDATE_FLAG_AURAS + data.put(maskPos, auramask); // GROUP_UPDATE_FLAG_AURAS if(pet) { Powers petpowertype = pet->getPowerType(); - data << (uint64) pet->GetGUID(); // GROUP_UPDATE_FLAG_PET_GUID + data << uint64(pet->GetGUID()); // GROUP_UPDATE_FLAG_PET_GUID data << pet->GetName(); // GROUP_UPDATE_FLAG_PET_NAME - data << (uint16) pet->GetDisplayId(); // GROUP_UPDATE_FLAG_PET_MODEL_ID - data << (uint32) pet->GetHealth(); // GROUP_UPDATE_FLAG_PET_CUR_HP - data << (uint32) pet->GetMaxHealth(); // GROUP_UPDATE_FLAG_PET_MAX_HP - data << (uint8) petpowertype; // GROUP_UPDATE_FLAG_PET_POWER_TYPE - data << (uint16) pet->GetPower(petpowertype); // GROUP_UPDATE_FLAG_PET_CUR_POWER - data << (uint16) pet->GetMaxPower(petpowertype); // GROUP_UPDATE_FLAG_PET_MAX_POWER + data << uint16(pet->GetDisplayId()); // GROUP_UPDATE_FLAG_PET_MODEL_ID + data << uint32(pet->GetHealth()); // GROUP_UPDATE_FLAG_PET_CUR_HP + data << uint32(pet->GetMaxHealth()); // GROUP_UPDATE_FLAG_PET_MAX_HP + data << uint8(petpowertype); // GROUP_UPDATE_FLAG_PET_POWER_TYPE + data << uint16(pet->GetPower(petpowertype)); // GROUP_UPDATE_FLAG_PET_CUR_POWER + data << uint16(pet->GetMaxPower(petpowertype)); // GROUP_UPDATE_FLAG_PET_MAX_POWER uint64 petauramask = 0; size_t petMaskPos = data.wpos(); - data << (uint64) petauramask; // placeholder + data << uint64(petauramask); // placeholder for(uint8 i = 0; i < MAX_AURAS; ++i) { if(uint32 petaura = pet->GetVisibleAura(i)) { petauramask |= (uint64(1) << i); - data << (uint32) petaura; - data << (uint8) 1; + data << uint32(petaura); + data << uint8(1); } } - data.put(petMaskPos,petauramask); // GROUP_UPDATE_FLAG_PET_AURAS + data.put(petMaskPos, petauramask); // GROUP_UPDATE_FLAG_PET_AURAS } else { - data << (uint8) 0; // GROUP_UPDATE_FLAG_PET_NAME - data << (uint64) 0; // GROUP_UPDATE_FLAG_PET_AURAS + data << uint8(0); // GROUP_UPDATE_FLAG_PET_NAME + data << uint64(0); // GROUP_UPDATE_FLAG_PET_AURAS } SendPacket(&data); } -/*!*/void WorldSession::HandleRequestRaidInfoOpcode( WorldPacket & /*recv_data*/ ) +void WorldSession::HandleRequestRaidInfoOpcode( WorldPacket & /*recv_data*/ ) { // every time the player checks the character screen _player->SendRaidInfo(); @@ -882,11 +881,11 @@ void WorldSession::HandleOptOutOfLootOpcode( WorldPacket & recv_data ) // ignore if player not loaded if(!GetPlayer()) // needed because STATUS_AUTHED { - if(unkn!=0) + if(unkn != 0) sLog.outError("CMSG_GROUP_PASS_ON_LOOT value<>0 for not-loaded character!"); return; } - if(unkn!=0) + if(unkn != 0) sLog.outError("CMSG_GROUP_PASS_ON_LOOT: activation not implemented!"); } diff --git a/src/game/Opcodes.h b/src/game/Opcodes.h index 87462fa3d..6dc882262 100644 --- a/src/game/Opcodes.h +++ b/src/game/Opcodes.h @@ -1334,7 +1334,7 @@ enum Opcodes SMSG_UNKNOWN_1297 = 0x511, // CMSG_UNKNOWN_1298 = 0x512, // something with networking UMSG_UNKNOWN_1299 = 0x513, // not found - SMSG_UNKNOWN_1300 = 0x514, // SMSG + SMSG_UNKNOWN_1300 = 0x514, // SMSG, multi combatlog SMSG_UNKNOWN_1301 = 0x515, // event EVENT_LFG_OPEN_FROM_GOSSIP (opens dungeon finder, probably for outdoor bosses) SMSG_UNKNOWN_1302 = 0x516, // something with player movement (move event 58?) CMSG_UNKNOWN_1303 = 0x517, // something with player movement (move event 58?)