diff --git a/common/emu_versions.cpp b/common/emu_versions.cpp index e1c867cbb..ba532b8fc 100644 --- a/common/emu_versions.cpp +++ b/common/emu_versions.cpp @@ -63,32 +63,26 @@ const char* EQEmu::versions::ClientVersionName(ClientVersion client_version) uint32 EQEmu::versions::ConvertClientVersionToClientVersionBit(ClientVersion client_version) { switch (client_version) { - case ClientVersion::Unknown: - case ClientVersion::Client62: - return bit_Unknown; case ClientVersion::Titanium: - return bit_Titanium; + return bitTitanium; case ClientVersion::SoF: - return bit_SoF; + return bitSoF; case ClientVersion::SoD: - return bit_SoD; + return bitSoD; case ClientVersion::UF: - return bit_UF; + return bitUF; case ClientVersion::RoF: - return bit_RoF; + return bitRoF; case ClientVersion::RoF2: - return bit_RoF2; + return bitRoF2; default: - return bit_Unknown; + return bitUnknown; } } EQEmu::versions::ClientVersion EQEmu::versions::ConvertClientVersionBitToClientVersion(uint32 client_version_bit) { switch (client_version_bit) { - case (uint32)static_cast(ClientVersion::Unknown) : - case ((uint32)1 << (static_cast(ClientVersion::Client62) - 1)) : - return ClientVersion::Unknown; case ((uint32)1 << (static_cast(ClientVersion::Titanium) - 1)) : return ClientVersion::Titanium; case ((uint32)1 << (static_cast(ClientVersion::SoF) - 1)) : diff --git a/common/emu_versions.h b/common/emu_versions.h index 2ef68b283..20bfd6dbc 100644 --- a/common/emu_versions.h +++ b/common/emu_versions.h @@ -39,26 +39,27 @@ namespace EQEmu RoF2 // Build: 'May 10 2013 23:30:08' }; - enum ClientVersionBit : uint32 { - bit_Unknown = 0, - bit_Client62 = 0x00000001, // unsupported (placeholder for scripts) - bit_Titanium = 0x00000002, - bit_SoF = 0x00000004, - bit_SoD = 0x00000008, - bit_UF = 0x00000010, - bit_RoF = 0x00000020, - bit_RoF2 = 0x00000040, - bit_TitaniumAndEarlier = 0x00000003, - bit_SoFAndEarlier = 0x00000007, - bit_SoDAndEarlier = 0x0000000F, - bit_UFAndEarlier = 0x0000001F, - bit_RoFAndEarlier = 0x0000003F, - bit_SoFAndLater = 0xFFFFFFFC, - bit_SoDAndLater = 0xFFFFFFF8, - bit_UFAndLater = 0xFFFFFFF0, - bit_RoFAndLater = 0xFFFFFFE0, - bit_RoF2AndLater = 0xFFFFFFC0, - bit_AllClients = 0xFFFFFFFF + enum ClientVersionBitmask : uint32 { + bitUnknown = 0x00000000, + bitClient62 = 0x00000001, // unsupported (placeholder for scripts) + bitTitanium = 0x00000002, + bitSoF = 0x00000004, + bitSoD = 0x00000008, + bitUF = 0x00000010, + bitRoF = 0x00000020, + bitRoF2 = 0x00000040, + maskUnknown = 0x00000000, + maskTitaniumAndEarlier = 0x00000003, + maskSoFAndEarlier = 0x00000007, + maskSoDAndEarlier = 0x0000000F, + maskUFAndEarlier = 0x0000001F, + maskRoFAndEarlier = 0x0000003F, + maskSoFAndLater = 0xFFFFFFFC, + maskSoDAndLater = 0xFFFFFFF8, + maskUFAndLater = 0xFFFFFFF0, + maskRoFAndLater = 0xFFFFFFE0, + maskRoF2AndLater = 0xFFFFFFC0, + maskAllClients = 0xFFFFFFFF }; const ClientVersion LastClientVersion = ClientVersion::RoF2; diff --git a/world/client.cpp b/world/client.cpp index b72b81351..fba31d5cd 100644 --- a/world/client.cpp +++ b/world/client.cpp @@ -186,7 +186,7 @@ void Client::SendCharInfo() { cle->SetOnline(CLE_Status_CharSelect); } - if (m_ClientVersionBit & EQEmu::versions::bit_RoFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskRoFAndLater) { SendMaxCharCreate(); SendMembership(); SendMembershipSettings(); @@ -717,7 +717,7 @@ bool Client::HandleCharacterCreatePacket(const EQApplicationPacket *app) { } else { - if (m_ClientVersionBit & EQEmu::versions::bit_TitaniumAndEarlier) + if (m_ClientVersionBit & EQEmu::versions::maskTitaniumAndEarlier) StartInTutorial = true; SendCharInfo(); } @@ -989,7 +989,7 @@ bool Client::HandleDeleteCharacterPacket(const EQApplicationPacket *app) { bool Client::HandleZoneChangePacket(const EQApplicationPacket *app) { // HoT sends this to world while zoning and wants it echoed back. - if (m_ClientVersionBit & EQEmu::versions::bit_RoFAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskRoFAndLater) { QueuePacket(app); } @@ -1465,7 +1465,7 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) Log(Logs::Detail, Logs::World_Server, "Beard: %d Beardcolor: %d", cc->beard, cc->beardcolor); /* Validate the char creation struct */ - if (m_ClientVersionBit & EQEmu::versions::bit_SoFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskSoFAndLater) { if (!CheckCharCreateInfoSoF(cc)) { Log(Logs::Detail, Logs::World_Server,"CheckCharCreateInfo did not validate the request (bad race/class/stats)"); return false; @@ -1536,7 +1536,7 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) pp.pvp = database.GetServerType() == 1 ? 1 : 0; /* If it is an SoF Client and the SoF Start Zone rule is set, send new chars there */ - if (m_ClientVersionBit & EQEmu::versions::bit_SoFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskSoFAndLater) { Log(Logs::Detail, Logs::World_Server,"Found 'SoFStartZoneID' rule setting: %i", RuleI(World, SoFStartZoneID)); if (RuleI(World, SoFStartZoneID) > 0) { pp.zone_id = RuleI(World, SoFStartZoneID); @@ -1552,7 +1552,7 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) } } /* use normal starting zone logic to either get defaults, or if startzone was set, load that from the db table.*/ - bool ValidStartZone = database.GetStartZone(&pp, cc, m_ClientVersionBit & EQEmu::versions::bit_TitaniumAndEarlier); + bool ValidStartZone = database.GetStartZone(&pp, cc, m_ClientVersionBit & EQEmu::versions::maskTitaniumAndEarlier); if (!ValidStartZone){ return false; diff --git a/zone/aa.cpp b/zone/aa.cpp index cb2e6ab7e..dfbf9de12 100644 --- a/zone/aa.cpp +++ b/zone/aa.cpp @@ -488,7 +488,7 @@ void Client::ResetAA() { database.DeleteCharacterLeadershipAAs(CharacterID()); // undefined for these clients - if (ClientVersionBit() & EQEmu::versions::bit_TitaniumAndEarlier) + if (ClientVersionBit() & EQEmu::versions::maskTitaniumAndEarlier) Kick(); } @@ -1455,7 +1455,7 @@ bool Mob::CanUseAlternateAdvancementRank(AA::Rank *rank) { //the one titanium hack i will allow //just to make sure we dont crash the client with newer aas //we'll exclude any expendable ones - if(IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::bit_TitaniumAndEarlier) { + if(IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::maskTitaniumAndEarlier) { if(ability->charges > 0) { return false; } diff --git a/zone/attack.cpp b/zone/attack.cpp index a6a9da784..013f0fa5b 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -1794,7 +1794,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, EQEmu::skills::Sk //this generates a lot of 'updates' to the client that the client does not need BuffFadeNonPersistDeath(); if (RuleB(Character, UnmemSpellsOnDeath)) { - if ((ClientVersionBit() & EQEmu::versions::bit_SoFAndLater) && RuleB(Character, RespawnFromHover)) + if ((ClientVersionBit() & EQEmu::versions::maskSoFAndLater) && RuleB(Character, RespawnFromHover)) UnmemSpellAll(true); else UnmemSpellAll(false); @@ -1857,7 +1857,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, EQEmu::skills::Sk from these and overwrite what we set in pp anyway */ - if (LeftCorpse && (ClientVersionBit() & EQEmu::versions::bit_SoFAndLater) && RuleB(Character, RespawnFromHover)) + if (LeftCorpse && (ClientVersionBit() & EQEmu::versions::maskSoFAndLater) && RuleB(Character, RespawnFromHover)) { ClearDraggedCorpses(); RespawnFromHoverTimer.Start(RuleI(Character, RespawnFromHoverTimer) * 1000); @@ -3791,7 +3791,7 @@ void Mob::HealDamage(uint32 amount, Mob *caster, uint16 spell_id) if (IsBuffSpell(spell_id)) { // hots // message to caster if (caster->IsClient() && caster == this) { - if (caster->CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoFAndLater) + if (caster->CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoFAndLater) FilteredMessage_StringID(caster, MT_NonMelee, FilterHealOverTime, HOT_HEAL_SELF, itoa(acthealed), spells[spell_id].name); else @@ -3799,7 +3799,7 @@ void Mob::HealDamage(uint32 amount, Mob *caster, uint16 spell_id) YOU_HEALED, GetCleanName(), itoa(acthealed)); } else if (caster->IsClient() && caster != this) { - if (caster->CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoFAndLater) + if (caster->CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoFAndLater) caster->FilteredMessage_StringID(caster, MT_NonMelee, FilterHealOverTime, HOT_HEAL_OTHER, GetCleanName(), itoa(acthealed), spells[spell_id].name); @@ -3809,7 +3809,7 @@ void Mob::HealDamage(uint32 amount, Mob *caster, uint16 spell_id) } // message to target if (IsClient() && caster != this) { - if (CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoFAndLater) + if (CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoFAndLater) FilteredMessage_StringID(this, MT_NonMelee, FilterHealOverTime, HOT_HEALED_OTHER, caster->GetCleanName(), itoa(acthealed), spells[spell_id].name); diff --git a/zone/client.cpp b/zone/client.cpp index 12555cc75..3327f2633 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -1899,9 +1899,9 @@ void Client::CheckManaEndUpdate() { mana_update->cur_mana = GetMana(); mana_update->max_mana = GetMaxMana(); mana_update->spawn_id = GetID(); - if ((ClientVersionBit() & EQEmu::versions::ClientVersionBit::bit_SoDAndLater) != 0) + if ((ClientVersionBit() & EQEmu::versions::ClientVersionBitmask::maskSoDAndLater) != 0) QueuePacket(mana_packet); // do we need this with the OP_ManaChange packet above? - entity_list.QueueClientsByXTarget(this, mana_packet, false, EQEmu::versions::ClientVersionBit::bit_SoDAndLater); + entity_list.QueueClientsByXTarget(this, mana_packet, false, EQEmu::versions::ClientVersionBitmask::maskSoDAndLater); safe_delete(mana_packet); last_reported_mana_percent = this->GetManaPercent(); @@ -1924,9 +1924,9 @@ void Client::CheckManaEndUpdate() { endurance_update->cur_end = GetEndurance(); endurance_update->max_end = GetMaxEndurance(); endurance_update->spawn_id = GetID(); - if ((ClientVersionBit() & EQEmu::versions::ClientVersionBit::bit_SoDAndLater) != 0) + if ((ClientVersionBit() & EQEmu::versions::ClientVersionBitmask::maskSoDAndLater) != 0) QueuePacket(endurance_packet); // do we need this with the OP_ManaChange packet above? - entity_list.QueueClientsByXTarget(this, endurance_packet, false, EQEmu::versions::ClientVersionBit::bit_SoDAndLater); + entity_list.QueueClientsByXTarget(this, endurance_packet, false, EQEmu::versions::ClientVersionBitmask::maskSoDAndLater); safe_delete(endurance_packet); last_reported_endurance_percent = this->GetEndurancePercent(); @@ -3054,7 +3054,7 @@ void Client::ServerFilter(SetServerFilter_Struct* filter){ Filter0(FilterMissedMe); Filter1(FilterDamageShields); - if (ClientVersionBit() & EQEmu::versions::bit_SoDAndLater) { + if (ClientVersionBit() & EQEmu::versions::maskSoDAndLater) { if (filter->filters[FilterDOT] == 0) ClientFilters[FilterDOT] = FilterShow; else if (filter->filters[FilterDOT] == 1) @@ -3075,7 +3075,7 @@ void Client::ServerFilter(SetServerFilter_Struct* filter){ Filter1(FilterFocusEffects); Filter1(FilterPetSpells); - if (ClientVersionBit() & EQEmu::versions::bit_SoDAndLater) { + if (ClientVersionBit() & EQEmu::versions::maskSoDAndLater) { if (filter->filters[FilterHealOverTime] == 0) ClientFilters[FilterHealOverTime] = FilterShow; // This is called 'Show Mine Only' in the clients, but functions the same as show @@ -5622,7 +5622,7 @@ void Client::SuspendMinion() memset(&m_suspendedminion, 0, sizeof(struct PetInfo)); // TODO: These pet command states need to be synced ... // Will just fix them for now - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) { SetPetCommandState(PET_BUTTON_SIT, 0); SetPetCommandState(PET_BUTTON_STOP, 0); SetPetCommandState(PET_BUTTON_REGROUP, 0); @@ -7631,7 +7631,7 @@ void Client::SendClearMercInfo() void Client::DuplicateLoreMessage(uint32 ItemID) { - if (!(m_ClientVersionBit & EQEmu::versions::bit_RoFAndLater)) + if (!(m_ClientVersionBit & EQEmu::versions::maskRoFAndLater)) { Message_StringID(0, PICK_LORE); return; diff --git a/zone/client.h b/zone/client.h index 96b386a85..854786efc 100644 --- a/zone/client.h +++ b/zone/client.h @@ -1160,7 +1160,7 @@ public: void HandleLFGuildResponse(ServerPacket *pack); void SendLFGuildStatus(); void SendGuildLFGuildStatus(); - inline bool XTargettingAvailable() const { return ((m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) && RuleB(Character, EnableXTargetting)); } + inline bool XTargettingAvailable() const { return ((m_ClientVersionBit & EQEmu::versions::maskUFAndLater) && RuleB(Character, EnableXTargetting)); } inline uint8 GetMaxXTargets() const { return MaxXTargets; } void SetMaxXTargets(uint8 NewMax); bool IsXTarget(const Mob *m) const; @@ -1184,7 +1184,7 @@ public: bool GroupFollow(Client* inviter); inline bool GetRunMode() const { return runmode; } - inline bool AggroMeterAvailable() const { return ((m_ClientVersionBit & EQEmu::versions::bit_RoF2AndLater)) && RuleB(Character, EnableAggroMeter); } // RoF untested + inline bool AggroMeterAvailable() const { return ((m_ClientVersionBit & EQEmu::versions::maskRoF2AndLater)) && RuleB(Character, EnableAggroMeter); } // RoF untested inline void SetAggroMeterLock(int in) { m_aggrometer.set_lock_id(in); } void ProcessAggroMeter(); // builds packet and sends diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 07c5cbb2f..7dc36771f 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -868,14 +868,14 @@ void Client::CompleteConnect() worldserver.SendPacket(pack); delete pack; - if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::bit_UFAndLater) { + if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::maskUFAndLater) { EQApplicationPacket *outapp = MakeBuffsPacket(false); CastToClient()->FastQueuePacket(&outapp); } // TODO: load these states // We at least will set them to the correct state for now - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater && GetPet()) { + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater && GetPet()) { SetPetCommandState(PET_BUTTON_SIT, 0); SetPetCommandState(PET_BUTTON_STOP, 0); SetPetCommandState(PET_BUTTON_REGROUP, 0); @@ -1663,7 +1663,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) } } - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) { outapp = new EQApplicationPacket(OP_XTargetResponse, 8); outapp->WriteUInt32(GetMaxXTargets()); outapp->WriteUInt32(0); @@ -10168,16 +10168,16 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) if (aabonuses.PetCommands[PetCommand] && mypet->IsNPC()) { if (mypet->IsHeld()) { - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_HOLD_SET_OFF); mypet->SetHeld(false); } else { - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_HOLD_SET_ON); - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) mypet->SayTo_StringID(this, MT_PetResponse, PET_NOW_HOLDING); else mypet->SayTo_StringID(this, MT_PetResponse, PET_ON_HOLD); @@ -10191,10 +10191,10 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) } case PET_HOLD_ON: { if (aabonuses.PetCommands[PetCommand] && mypet->IsNPC() && !mypet->IsHeld()) { - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_HOLD_SET_ON); - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) mypet->SayTo_StringID(this, MT_PetResponse, PET_NOW_HOLDING); else mypet->SayTo_StringID(this, MT_PetResponse, PET_ON_HOLD); @@ -10206,7 +10206,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) } case PET_HOLD_OFF: { if (aabonuses.PetCommands[PetCommand] && mypet->IsNPC() && mypet->IsHeld()) { - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_HOLD_SET_OFF); mypet->SetHeld(false); } @@ -10216,13 +10216,13 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) if (aabonuses.PetCommands[PetCommand] && mypet->IsNPC()) { if (mypet->IsGHeld()) { - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) Message_StringID(MT_PetResponse, PET_OFF_GHOLD); mypet->SetGHeld(false); } else { - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) { Message_StringID(MT_PetResponse, PET_ON_GHOLD); mypet->SayTo_StringID(this, MT_PetResponse, PET_GHOLD_ON_MSG); } else { @@ -10237,7 +10237,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) } case PET_GHOLD_ON: { if (aabonuses.PetCommands[PetCommand] && mypet->IsNPC()) { - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) { + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) { Message_StringID(MT_PetResponse, PET_ON_GHOLD); mypet->SayTo_StringID(this, MT_PetResponse, PET_GHOLD_ON_MSG); } else { @@ -10251,7 +10251,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) } case PET_GHOLD_OFF: { if (aabonuses.PetCommands[PetCommand] && mypet->IsNPC() && mypet->IsGHeld()) { - if (m_ClientVersionBit & EQEmu::versions::bit_UFAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskUFAndLater) Message_StringID(MT_PetResponse, PET_OFF_GHOLD); mypet->SetGHeld(false); } @@ -10263,13 +10263,13 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) break; if (mypet->IsNoCast()) { Message_StringID(MT_PetResponse, PET_CASTING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_SPELLHOLD_SET_OFF); mypet->SetNoCast(false); } else { Message_StringID(MT_PetResponse, PET_NOT_CASTING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_SPELLHOLD_SET_ON); mypet->SetNoCast(true); } @@ -10282,7 +10282,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) break; if (!mypet->IsNoCast()) { Message_StringID(MT_PetResponse, PET_NOT_CASTING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_SPELLHOLD_SET_ON); mypet->SetNoCast(true); } @@ -10295,7 +10295,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) break; if (mypet->IsNoCast()) { Message_StringID(MT_PetResponse, PET_CASTING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_SPELLHOLD_SET_OFF); mypet->SetNoCast(false); } @@ -10308,13 +10308,13 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) break; if (mypet->IsFocused()) { Message_StringID(MT_PetResponse, PET_NOT_FOCUSING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_FOCUS_SET_OFF); mypet->SetFocused(false); } else { Message_StringID(MT_PetResponse, PET_NOW_FOCUSING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_FOCUS_SET_ON); mypet->SetFocused(true); } @@ -10327,7 +10327,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) break; if (!mypet->IsFocused()) { Message_StringID(MT_PetResponse, PET_NOW_FOCUSING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_FOCUS_SET_ON); mypet->SetFocused(true); } @@ -10340,7 +10340,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) break; if (mypet->IsFocused()) { Message_StringID(MT_PetResponse, PET_NOT_FOCUSING); - if (m_ClientVersionBit & EQEmu::versions::bit_SoDAndLater) + if (m_ClientVersionBit & EQEmu::versions::maskSoDAndLater) Message_StringID(MT_PetResponse, PET_FOCUS_SET_OFF); mypet->SetFocused(false); } diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 82f118384..5c750f03a 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -812,7 +812,7 @@ void Client::BulkSendInventoryItems() void Client::BulkSendMerchantInventory(int merchant_id, int npcid) { const EQEmu::ItemData* handyitem = nullptr; uint32 numItemSlots = 80; //The max number of items passed in the transaction. - if (m_ClientVersionBit & EQEmu::versions::bit_RoFAndLater) { // RoF+ can send 200 items + if (m_ClientVersionBit & EQEmu::versions::maskRoFAndLater) { // RoF+ can send 200 items numItemSlots = 200; } const EQEmu::ItemData *item = nullptr; @@ -1132,7 +1132,7 @@ void Client::CancelSneakHide() // The later clients send back a OP_Hide (this has a size but data is 0) // as well as OP_SpawnAppearance with AT_Invis and one with AT_Sneak // So we don't have to handle any of those flags - if (ClientVersionBit() & EQEmu::versions::bit_SoFAndEarlier) + if (ClientVersionBit() & EQEmu::versions::maskSoFAndEarlier) sneaking = false; } } @@ -2129,7 +2129,7 @@ void Client::ClearHover() entity_list.QueueClients(this, outapp, false); safe_delete(outapp); - if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::bit_UFAndLater) + if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::maskUFAndLater) { EQApplicationPacket *outapp = MakeBuffsPacket(false); CastToClient()->FastQueuePacket(&outapp); diff --git a/zone/entity.cpp b/zone/entity.cpp index e288493f8..9b31abc2b 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -1564,7 +1564,7 @@ void EntityList::QueueClientsByTarget(Mob *sender, const EQApplicationPacket *ap } } -void EntityList::QueueClientsByXTarget(Mob *sender, const EQApplicationPacket *app, bool iSendToSender, EQEmu::versions::ClientVersionBit client_version_bits) +void EntityList::QueueClientsByXTarget(Mob *sender, const EQApplicationPacket *app, bool iSendToSender, EQEmu::versions::ClientVersionBitmask client_version_bits) { auto it = client_list.begin(); while (it != client_list.end()) { diff --git a/zone/entity.h b/zone/entity.h index 89f64b798..b815dc396 100644 --- a/zone/entity.h +++ b/zone/entity.h @@ -353,7 +353,7 @@ public: void QueueClientsByTarget(Mob* sender, const EQApplicationPacket* app, bool iSendToSender = true, Mob* SkipThisMob = 0, bool ackreq = true, bool HoTT = true, uint32 ClientVersionBits = 0xFFFFFFFF, bool inspect_buffs = false); - void QueueClientsByXTarget(Mob* sender, const EQApplicationPacket* app, bool iSendToSender = true, EQEmu::versions::ClientVersionBit client_version_bits = EQEmu::versions::ClientVersionBit::bit_AllClients); + void QueueClientsByXTarget(Mob* sender, const EQApplicationPacket* app, bool iSendToSender = true, EQEmu::versions::ClientVersionBitmask client_version_bits = EQEmu::versions::ClientVersionBitmask::maskAllClients); void QueueToGroupsForNPCHealthAA(Mob* sender, const EQApplicationPacket* app); void QueueManaged(Mob* sender, const EQApplicationPacket* app, bool ignore_sender=false, bool ackreq = true); diff --git a/zone/guild_mgr.cpp b/zone/guild_mgr.cpp index 73a60cd66..eafe4b9f5 100644 --- a/zone/guild_mgr.cpp +++ b/zone/guild_mgr.cpp @@ -691,7 +691,7 @@ void GuildBankManager::SendGuildBank(Client *c) auto &guild_bank = *Iterator; // RoF+ uses a bulk list packet -- This is also how the Action 0 of older clients basically works - if (c->ClientVersionBit() & EQEmu::versions::bit_RoFAndLater) { + if (c->ClientVersionBit() & EQEmu::versions::maskRoFAndLater) { auto outapp = new EQApplicationPacket(OP_GuildBankItemList, sizeof(GuildBankItemListEntry_Struct) * 240); for (int i = 0; i < GUILD_BANK_DEPOSIT_AREA_SIZE; ++i) { const EQEmu::ItemData *Item = database.GetItem(guild_bank->Items.DepositArea[i].ItemID); diff --git a/zone/mob.cpp b/zone/mob.cpp index 5fe9391f5..4ef43c4e0 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -1381,7 +1381,7 @@ void Mob::SendHPUpdate(bool skip_self /*= false*/, bool force_update_all /*= fal /** * Update those who have us targeted */ - entity_list.QueueClientsByTarget(this, &hp_packet, false, 0, false, true, EQEmu::versions::bit_AllClients); + entity_list.QueueClientsByTarget(this, &hp_packet, false, 0, false, true, EQEmu::versions::maskAllClients); /** * Update those who have us on x-target diff --git a/zone/npc.cpp b/zone/npc.cpp index 01339fde9..8de819e0c 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -507,7 +507,7 @@ void NPC::SetTarget(Mob* mob) { if (owner) { auto client = owner->CastToClient(); - if (client->ClientVersionBit() & EQEmu::versions::bit_UFAndLater) { + if (client->ClientVersionBit() & EQEmu::versions::maskUFAndLater) { auto app = new EQApplicationPacket(OP_PetHoTT, sizeof(ClientTarget_Struct)); auto ct = (ClientTarget_Struct *)app->pBuffer; ct->new_target = mob ? mob->GetID() : 0; diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 0f239fe6f..82fef55cf 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -149,7 +149,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove if (spells[spell_id].EndurUpkeep > 0) SetEndurUpkeep(true); - if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::bit_UFAndLater) + if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::maskUFAndLater) { EQApplicationPacket *outapp = MakeBuffsPacket(false); CastToClient()->FastQueuePacket(&outapp); @@ -826,7 +826,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove #endif if(IsClient()) { - if (CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoDAndLater) + if (CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoDAndLater) { bodyType bt = BT_Undead; @@ -1244,7 +1244,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove // Will fix buttons for now if (IsClient()) { auto c = CastToClient(); - if (c->ClientVersionBit() & EQEmu::versions::bit_UFAndLater) { + if (c->ClientVersionBit() & EQEmu::versions::maskUFAndLater) { c->SetPetCommandState(PET_BUTTON_SIT, 0); c->SetPetCommandState(PET_BUTTON_STOP, 0); c->SetPetCommandState(PET_BUTTON_REGROUP, 0); @@ -1663,7 +1663,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove #endif // This is handled by the client prior to SoD. // - if (IsClient() && (CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoDAndLater)) + if (IsClient() && (CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoDAndLater)) CastToClient()->LocateCorpse(); break; @@ -3402,7 +3402,7 @@ void Mob::BuffProcess() Log(Logs::Detail, Logs::Spells, "Buff %d in slot %d has %d tics remaining.", buffs[buffs_i].spellid, buffs_i, buffs[buffs_i].ticsremaining); } } - else if (IsClient() && !(CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoFAndLater)) + else if (IsClient() && !(CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoFAndLater)) { buffs[buffs_i].UpdateClient = true; } @@ -3669,7 +3669,7 @@ void Mob::DoBuffTic(const Buffs_Struct &buff, int slot, Mob *caster) case SE_LocateCorpse: { // This is handled by the client prior to SoD. - if (IsClient() && (CastToClient()->ClientVersionBit() & EQEmu::versions::bit_SoDAndLater)) + if (IsClient() && (CastToClient()->ClientVersionBit() & EQEmu::versions::maskSoDAndLater)) CastToClient()->LocateCorpse(); } @@ -4085,7 +4085,7 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses) { EQApplicationPacket *outapp = MakeBuffsPacket(); - entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::bit_SoDAndLater); + entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::maskSoDAndLater); if(IsClient() && GetTarget() == this) { CastToClient()->QueuePacket(outapp); } @@ -4095,11 +4095,11 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses) if (IsNPC()) { EQApplicationPacket *outapp = MakeBuffsPacket(); - entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::bit_SoDAndLater, true); + entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::maskSoDAndLater, true); safe_delete(outapp); } - if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::bit_UFAndLater) + if (IsClient() && CastToClient()->ClientVersionBit() & EQEmu::versions::maskUFAndLater) { EQApplicationPacket *outapp = MakeBuffsPacket(false); CastToClient()->FastQueuePacket(&outapp); diff --git a/zone/spells.cpp b/zone/spells.cpp index 42a64d6f0..2f10af690 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -3317,7 +3317,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid { EQApplicationPacket *outapp = MakeBuffsPacket(); - entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::bit_SoDAndLater); + entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::maskSoDAndLater); if(IsClient() && GetTarget() == this) CastToClient()->QueuePacket(outapp); @@ -3327,7 +3327,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid if (IsNPC()) { EQApplicationPacket *outapp = MakeBuffsPacket(); - entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::bit_SoDAndLater, true); + entity_list.QueueClientsByTarget(this, outapp, false, nullptr, true, false, EQEmu::versions::maskSoDAndLater, true); safe_delete(outapp); } @@ -5531,7 +5531,7 @@ void Mob::SendBuffsToClient(Client *c) if(!c) return; - if (c->ClientVersionBit() & EQEmu::versions::bit_SoDAndLater) + if (c->ClientVersionBit() & EQEmu::versions::maskSoDAndLater) { EQApplicationPacket *outapp = MakeBuffsPacket(); c->FastQueuePacket(&outapp); diff --git a/zone/tasks.cpp b/zone/tasks.cpp index 56297bf3b..7761747f9 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -2700,7 +2700,7 @@ void TaskManager::SendTaskActivityShort(Client *c, int TaskID, int ActivityID, i TaskActivityShort_Struct* tass; - if (c->ClientVersionBit() & EQEmu::versions::bit_RoFAndLater) + if (c->ClientVersionBit() & EQEmu::versions::maskRoFAndLater) { auto outapp = new EQApplicationPacket(OP_TaskActivity, 25); outapp->WriteUInt32(ClientTaskIndex); diff --git a/zone/zoning.cpp b/zone/zoning.cpp index 3d98f9ad6..dbe9346b7 100644 --- a/zone/zoning.cpp +++ b/zone/zoning.cpp @@ -588,7 +588,7 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z // If we are SoF and later and are respawning from hover, we want the real zone ID, else zero to use the old hack. // if(zone->GetZoneID() == zoneID) { - if ((ClientVersionBit() & EQEmu::versions::bit_SoFAndLater) && (!RuleB(Character, RespawnFromHover) || !IsHoveringForRespawn())) + if ((ClientVersionBit() & EQEmu::versions::maskSoFAndLater) && (!RuleB(Character, RespawnFromHover) || !IsHoveringForRespawn())) gmg->bind_zone_id = 0; else gmg->bind_zone_id = zoneID;