From 36b0a60451e07604f5c6dd7a44903780464d79de Mon Sep 17 00:00:00 2001 From: Uleat Date: Sat, 2 Feb 2019 21:51:57 -0500 Subject: [PATCH] Fix for Titanium returning wrong value in ConvertClientVersionToExpansion## --- common/emu_versions.cpp | 53 +++++------------------------------------ common/emu_versions.h | 4 ++-- common/eq_limits.cpp | 12 +++++----- common/eq_limits.h | 14 +++++++++++ world/client.cpp | 5 ++-- zone/client_packet.cpp | 5 ++-- 6 files changed, 32 insertions(+), 61 deletions(-) diff --git a/common/emu_versions.cpp b/common/emu_versions.cpp index d74835671..e5b3c5e70 100644 --- a/common/emu_versions.cpp +++ b/common/emu_versions.cpp @@ -18,6 +18,7 @@ */ #include "emu_versions.h" +#include "emu_constants.h" bool EQEmu::versions::IsValidClientVersion(ClientVersion client_version) @@ -493,7 +494,7 @@ EQEmu::expansions::Expansion EQEmu::expansions::ConvertExpansionBitToExpansion(u } } -uint32 EQEmu::expansions::ConvertExpansionToExpansionMask(Expansion expansion) +uint32 EQEmu::expansions::ConvertExpansionToExpansionsMask(Expansion expansion) { switch (expansion) { case Expansion::RoK: @@ -543,57 +544,15 @@ uint32 EQEmu::expansions::ConvertExpansionToExpansionMask(Expansion expansion) EQEmu::expansions::Expansion EQEmu::expansions::ConvertClientVersionToExpansion(versions::ClientVersion client_version) { - switch (client_version) { - case versions::ClientVersion::Titanium: - return expansions::Expansion::PoR; - case versions::ClientVersion::SoF: - return expansions::Expansion::SoF; - case versions::ClientVersion::SoD: - return expansions::Expansion::SoD; - case versions::ClientVersion::UF: - return expansions::Expansion::UF; - case versions::ClientVersion::RoF: - case versions::ClientVersion::RoF2: - return expansions::Expansion::RoF; - default: - return expansions::Expansion::EverQuest; - } + return EQEmu::constants::StaticLookup(client_version)->Expansion; } uint32 EQEmu::expansions::ConvertClientVersionToExpansionBit(versions::ClientVersion client_version) { - switch (client_version) { - case versions::ClientVersion::Titanium: - return expansions::bitPoR; - case versions::ClientVersion::SoF: - return expansions::bitSoF; - case versions::ClientVersion::SoD: - return expansions::bitSoD; - case versions::ClientVersion::UF: - return expansions::bitUF; - case versions::ClientVersion::RoF: - case versions::ClientVersion::RoF2: - return expansions::bitRoF; - default: - return expansions::bitEverQuest; - } + return EQEmu::constants::StaticLookup(client_version)->ExpansionBit; } -uint32 EQEmu::expansions::ConvertClientVersionToExpansionMask(versions::ClientVersion client_version) +uint32 EQEmu::expansions::ConvertClientVersionToExpansionsMask(versions::ClientVersion client_version) { - switch (client_version) { - case versions::ClientVersion::Titanium: - return expansions::maskPoR; - case versions::ClientVersion::SoF: - return expansions::maskSoF; - case versions::ClientVersion::SoD: - return expansions::maskSoD; - case versions::ClientVersion::UF: - return expansions::maskUF; - case versions::ClientVersion::RoF: - case versions::ClientVersion::RoF2: - return expansions::maskRoF; - default: - return expansions::maskEverQuest; - } + return EQEmu::constants::StaticLookup(client_version)->ExpansionsMask; } diff --git a/common/emu_versions.h b/common/emu_versions.h index 17ea82b9f..b55c32267 100644 --- a/common/emu_versions.h +++ b/common/emu_versions.h @@ -210,10 +210,10 @@ namespace EQEmu const char* ExpansionName(uint32 expansion_bit); uint32 ConvertExpansionToExpansionBit(Expansion expansion); Expansion ConvertExpansionBitToExpansion(uint32 expansion_bit); - uint32 ConvertExpansionToExpansionMask(Expansion expansion); + uint32 ConvertExpansionToExpansionsMask(Expansion expansion); Expansion ConvertClientVersionToExpansion(versions::ClientVersion client_version); uint32 ConvertClientVersionToExpansionBit(versions::ClientVersion client_version); - uint32 ConvertClientVersionToExpansionMask(versions::ClientVersion client_version); + uint32 ConvertClientVersionToExpansionsMask(versions::ClientVersion client_version); } /*expansions*/ diff --git a/common/eq_limits.cpp b/common/eq_limits.cpp index 2f8674de8..9f52de30d 100644 --- a/common/eq_limits.cpp +++ b/common/eq_limits.cpp @@ -43,17 +43,17 @@ static const EQEmu::constants::LookupEntry constants_static_lookup_entries[EQEmu { /*[ClientVersion::Unknown] =*/ EQEmu::constants::LookupEntry( - EQEmu::expansions::Expansion::EverQuest, - ClientUnknown::INULL, - ClientUnknown::INULL, + ClientUnknown::constants::EXPANSION, + ClientUnknown::constants::EXPANSION_BIT, + ClientUnknown::constants::EXPANSIONS_MASK, ClientUnknown::INULL, ClientUnknown::INULL ), /*[ClientVersion::Client62] =*/ EQEmu::constants::LookupEntry( - EQEmu::expansions::Expansion::EverQuest, - Client62::INULL, - Client62::INULL, + Client62::constants::EXPANSION, + Client62::constants::EXPANSION_BIT, + Client62::constants::EXPANSIONS_MASK, Client62::INULL, Client62::INULL ), diff --git a/common/eq_limits.h b/common/eq_limits.h index 1f83c4606..5d62ced66 100644 --- a/common/eq_limits.h +++ b/common/eq_limits.h @@ -243,6 +243,13 @@ namespace ClientUnknown const int16 IINVALID = -1; const int16 INULL = 0; + namespace constants { + const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::EverQuest; + const uint32 EXPANSION_BIT = EQEmu::expansions::bitEverQuest; + const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskEverQuest; + + } // namespace constants + } /*ClientUnknown*/ namespace Client62 @@ -250,6 +257,13 @@ namespace Client62 const int16 IINVALID = -1; const int16 INULL = 0; + namespace constants { + const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::EverQuest; + const uint32 EXPANSION_BIT = EQEmu::expansions::bitEverQuest; + const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskEverQuest; + + } // namespace constants + } /*Client62*/ #endif /*COMMON_EQ_LIMITS_H*/ diff --git a/world/client.cpp b/world/client.cpp index 06bceb52d..bc044dae5 100644 --- a/world/client.cpp +++ b/world/client.cpp @@ -172,12 +172,11 @@ void Client::SendExpansionInfo() { auto outapp = new EQApplicationPacket(OP_ExpansionInfo, sizeof(ExpansionInfo_Struct)); ExpansionInfo_Struct *eis = (ExpansionInfo_Struct*)outapp->pBuffer; - // need to rework .. not until full scope of change is accounted for, though if (RuleB(World, UseClientBasedExpansionSettings)) { - eis->Expansions = EQEmu::expansions::ConvertClientVersionToExpansionMask(eqs->ClientVersion()); + eis->Expansions = EQEmu::expansions::ConvertClientVersionToExpansionsMask(eqs->ClientVersion()); } else { - eis->Expansions = RuleI(World, ExpansionSettings); + eis->Expansions = (RuleI(World, ExpansionSettings) & EQEmu::expansions::ConvertClientVersionToExpansionsMask(eqs->ClientVersion())); } QueuePacket(outapp); diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 41b38b0c9..2fb7448f6 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -1414,12 +1414,11 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) if (m_pp.ldon_points_tak < 0 || m_pp.ldon_points_tak > 2000000000) { m_pp.ldon_points_tak = 0; } if (m_pp.ldon_points_available < 0 || m_pp.ldon_points_available > 2000000000) { m_pp.ldon_points_available = 0; } - // need to rework .. not until full scope of change is accounted for, though if (RuleB(World, UseClientBasedExpansionSettings)) { - m_pp.expansions = EQEmu::expansions::ConvertClientVersionToExpansionMask(ClientVersion()); + m_pp.expansions = EQEmu::expansions::ConvertClientVersionToExpansionsMask(ClientVersion()); } else { - m_pp.expansions = RuleI(World, ExpansionSettings); + m_pp.expansions = (RuleI(World, ExpansionSettings) & EQEmu::expansions::ConvertClientVersionToExpansionsMask(ClientVersion())); } if (!database.LoadAlternateAdvancement(this)) {