Fix for Titanium returning wrong value in ConvertClientVersionToExpansion##

This commit is contained in:
Uleat 2019-02-02 21:51:57 -05:00
parent cbe811cf94
commit 36b0a60451
6 changed files with 32 additions and 61 deletions

View File

@ -18,6 +18,7 @@
*/ */
#include "emu_versions.h" #include "emu_versions.h"
#include "emu_constants.h"
bool EQEmu::versions::IsValidClientVersion(ClientVersion client_version) 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) { switch (expansion) {
case Expansion::RoK: case Expansion::RoK:
@ -543,57 +544,15 @@ uint32 EQEmu::expansions::ConvertExpansionToExpansionMask(Expansion expansion)
EQEmu::expansions::Expansion EQEmu::expansions::ConvertClientVersionToExpansion(versions::ClientVersion client_version) EQEmu::expansions::Expansion EQEmu::expansions::ConvertClientVersionToExpansion(versions::ClientVersion client_version)
{ {
switch (client_version) { return EQEmu::constants::StaticLookup(client_version)->Expansion;
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;
}
} }
uint32 EQEmu::expansions::ConvertClientVersionToExpansionBit(versions::ClientVersion client_version) uint32 EQEmu::expansions::ConvertClientVersionToExpansionBit(versions::ClientVersion client_version)
{ {
switch (client_version) { return EQEmu::constants::StaticLookup(client_version)->ExpansionBit;
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;
}
} }
uint32 EQEmu::expansions::ConvertClientVersionToExpansionMask(versions::ClientVersion client_version) uint32 EQEmu::expansions::ConvertClientVersionToExpansionsMask(versions::ClientVersion client_version)
{ {
switch (client_version) { return EQEmu::constants::StaticLookup(client_version)->ExpansionsMask;
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;
}
} }

View File

@ -210,10 +210,10 @@ namespace EQEmu
const char* ExpansionName(uint32 expansion_bit); const char* ExpansionName(uint32 expansion_bit);
uint32 ConvertExpansionToExpansionBit(Expansion expansion); uint32 ConvertExpansionToExpansionBit(Expansion expansion);
Expansion ConvertExpansionBitToExpansion(uint32 expansion_bit); Expansion ConvertExpansionBitToExpansion(uint32 expansion_bit);
uint32 ConvertExpansionToExpansionMask(Expansion expansion); uint32 ConvertExpansionToExpansionsMask(Expansion expansion);
Expansion ConvertClientVersionToExpansion(versions::ClientVersion client_version); Expansion ConvertClientVersionToExpansion(versions::ClientVersion client_version);
uint32 ConvertClientVersionToExpansionBit(versions::ClientVersion client_version); uint32 ConvertClientVersionToExpansionBit(versions::ClientVersion client_version);
uint32 ConvertClientVersionToExpansionMask(versions::ClientVersion client_version); uint32 ConvertClientVersionToExpansionsMask(versions::ClientVersion client_version);
} /*expansions*/ } /*expansions*/

View File

@ -43,17 +43,17 @@ static const EQEmu::constants::LookupEntry constants_static_lookup_entries[EQEmu
{ {
/*[ClientVersion::Unknown] =*/ /*[ClientVersion::Unknown] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
EQEmu::expansions::Expansion::EverQuest, ClientUnknown::constants::EXPANSION,
ClientUnknown::INULL, ClientUnknown::constants::EXPANSION_BIT,
ClientUnknown::INULL, ClientUnknown::constants::EXPANSIONS_MASK,
ClientUnknown::INULL, ClientUnknown::INULL,
ClientUnknown::INULL ClientUnknown::INULL
), ),
/*[ClientVersion::Client62] =*/ /*[ClientVersion::Client62] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
EQEmu::expansions::Expansion::EverQuest, Client62::constants::EXPANSION,
Client62::INULL, Client62::constants::EXPANSION_BIT,
Client62::INULL, Client62::constants::EXPANSIONS_MASK,
Client62::INULL, Client62::INULL,
Client62::INULL Client62::INULL
), ),

View File

@ -243,6 +243,13 @@ namespace ClientUnknown
const int16 IINVALID = -1; const int16 IINVALID = -1;
const int16 INULL = 0; 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*/ } /*ClientUnknown*/
namespace Client62 namespace Client62
@ -250,6 +257,13 @@ namespace Client62
const int16 IINVALID = -1; const int16 IINVALID = -1;
const int16 INULL = 0; 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*/ } /*Client62*/
#endif /*COMMON_EQ_LIMITS_H*/ #endif /*COMMON_EQ_LIMITS_H*/

View File

@ -172,12 +172,11 @@ void Client::SendExpansionInfo() {
auto outapp = new EQApplicationPacket(OP_ExpansionInfo, sizeof(ExpansionInfo_Struct)); auto outapp = new EQApplicationPacket(OP_ExpansionInfo, sizeof(ExpansionInfo_Struct));
ExpansionInfo_Struct *eis = (ExpansionInfo_Struct*)outapp->pBuffer; ExpansionInfo_Struct *eis = (ExpansionInfo_Struct*)outapp->pBuffer;
// need to rework .. not until full scope of change is accounted for, though
if (RuleB(World, UseClientBasedExpansionSettings)) { if (RuleB(World, UseClientBasedExpansionSettings)) {
eis->Expansions = EQEmu::expansions::ConvertClientVersionToExpansionMask(eqs->ClientVersion()); eis->Expansions = EQEmu::expansions::ConvertClientVersionToExpansionsMask(eqs->ClientVersion());
} }
else { else {
eis->Expansions = RuleI(World, ExpansionSettings); eis->Expansions = (RuleI(World, ExpansionSettings) & EQEmu::expansions::ConvertClientVersionToExpansionsMask(eqs->ClientVersion()));
} }
QueuePacket(outapp); QueuePacket(outapp);

View File

@ -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_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; } 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)) { if (RuleB(World, UseClientBasedExpansionSettings)) {
m_pp.expansions = EQEmu::expansions::ConvertClientVersionToExpansionMask(ClientVersion()); m_pp.expansions = EQEmu::expansions::ConvertClientVersionToExpansionsMask(ClientVersion());
} }
else { else {
m_pp.expansions = RuleI(World, ExpansionSettings); m_pp.expansions = (RuleI(World, ExpansionSettings) & EQEmu::expansions::ConvertClientVersionToExpansionsMask(ClientVersion()));
} }
if (!database.LoadAlternateAdvancement(this)) { if (!database.LoadAlternateAdvancement(this)) {