mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-03 23:03:51 +00:00
Added namespace expansions
This commit is contained in:
parent
0d38808030
commit
8eaed2233f
@ -188,6 +188,9 @@ namespace EQEmu
|
||||
namespace constants {
|
||||
const EQEmu::versions::ClientVersion CHARACTER_CREATION_CLIENT = EQEmu::versions::ClientVersion::Titanium;
|
||||
|
||||
using RoF2::constants::EXPANSION_BIT;
|
||||
using RoF2::constants::EXPANSIONS_MASK;
|
||||
|
||||
using RoF2::constants::CHARACTER_CREATION_LIMIT;
|
||||
|
||||
const size_t SAY_LINK_OPENER_SIZE = 1;
|
||||
|
||||
@ -106,27 +106,6 @@ EQEmu::versions::ClientVersion EQEmu::versions::ConvertClientVersionBitToClientV
|
||||
}
|
||||
}
|
||||
|
||||
uint32 EQEmu::versions::ConvertClientVersionToExpansion(ClientVersion client_version)
|
||||
{
|
||||
switch (client_version) {
|
||||
case ClientVersion::Unknown:
|
||||
case ClientVersion::Client62:
|
||||
case ClientVersion::Titanium:
|
||||
return 0x000007FFU;
|
||||
case ClientVersion::SoF:
|
||||
return 0x00007FFFU;
|
||||
case ClientVersion::SoD:
|
||||
return 0x0000FFFFU;
|
||||
case ClientVersion::UF:
|
||||
return 0x0001FFFFU;
|
||||
case ClientVersion::RoF:
|
||||
case ClientVersion::RoF2:
|
||||
return 0x000FFFFFU;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool EQEmu::versions::IsValidMobVersion(MobVersion mob_version)
|
||||
{
|
||||
if (mob_version <= MobVersion::Unknown || mob_version > LastMobVersion)
|
||||
@ -368,3 +347,91 @@ EQEmu::versions::MobVersion EQEmu::versions::ConvertClientVersionToOfflinePCMobV
|
||||
return MobVersion::Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
const char* EQEmu::expansions::ExpansionName(uint32 expansion_bit)
|
||||
{
|
||||
switch (expansion_bit) {
|
||||
case expansions::bitEverQuest:
|
||||
return "EverQuest";
|
||||
case expansions::bitRoK:
|
||||
return "The Ruins of Kunark";
|
||||
case expansions::bitSoV:
|
||||
return "The Scars of Velious";
|
||||
case expansions::bitSoL:
|
||||
return "The Shadows of Luclin";
|
||||
case expansions::bitPoP:
|
||||
return "The Planes of Power";
|
||||
case expansions::bitLoY:
|
||||
return "The Legacy of Ykesha";
|
||||
case expansions::bitLDoN:
|
||||
return "Lost Dungeons of Norrath";
|
||||
case expansions::bitGoD:
|
||||
return "Gates of Discord";
|
||||
case expansions::bitOoW:
|
||||
return "Omens of War";
|
||||
case expansions::bitDoN:
|
||||
return "Dragons of Norrath";
|
||||
case expansions::bitDoD:
|
||||
return "Depths of Darkhollow";
|
||||
case expansions::bitPoR:
|
||||
return "Prophecy of Ro";
|
||||
case expansions::bitTSS:
|
||||
return "The Serpent's Spine";
|
||||
case expansions::bitTBS:
|
||||
return "The Buried Sea";
|
||||
case expansions::bitSoF:
|
||||
return "Secrets of Faydwer";
|
||||
case expansions::bitSoD:
|
||||
return "Seeds of Destruction";
|
||||
case expansions::bitUF:
|
||||
return "Underfoot";
|
||||
case expansions::bitHoT:
|
||||
return "House of Thule";
|
||||
case expansions::bitVoA:
|
||||
return "Veil of Alaris";
|
||||
case expansions::bitRoF:
|
||||
return "Rain of Fear";
|
||||
case expansions::bitCotF:
|
||||
return "Call of the Forsaken";
|
||||
default:
|
||||
return "Invalid 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;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 EQEmu::expansions::ConvertClientVersionToExpansionMask(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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,9 +69,7 @@ namespace EQEmu
|
||||
const char* ClientVersionName(ClientVersion client_version);
|
||||
uint32 ConvertClientVersionToClientVersionBit(ClientVersion client_version);
|
||||
ClientVersion ConvertClientVersionBitToClientVersion(uint32 client_version_bit);
|
||||
uint32 ConvertClientVersionToExpansion(ClientVersion client_version);
|
||||
|
||||
|
||||
|
||||
enum class MobVersion : uint32 {
|
||||
Unknown = 0,
|
||||
Client62,
|
||||
@ -137,6 +135,58 @@ namespace EQEmu
|
||||
|
||||
} /*versions*/
|
||||
|
||||
namespace expansions {
|
||||
enum ExpansionBitmask : uint32 {
|
||||
bitEverQuest = 0x00000000,
|
||||
bitRoK = 0x00000001,
|
||||
bitSoV = 0x00000002,
|
||||
bitSoL = 0x00000004,
|
||||
bitPoP = 0x00000008,
|
||||
bitLoY = 0x00000010,
|
||||
bitLDoN = 0x00000020,
|
||||
bitGoD = 0x00000040,
|
||||
bitOoW = 0x00000080,
|
||||
bitDoN = 0x00000100,
|
||||
bitDoD = 0x00000200,
|
||||
bitPoR = 0x00000400,
|
||||
bitTSS = 0x00000800,
|
||||
bitTBS = 0x00001000,
|
||||
bitSoF = 0x00002000,
|
||||
bitSoD = 0x00004000,
|
||||
bitUF = 0x00008000,
|
||||
bitHoT = 0x00010000,
|
||||
bitVoA = 0x00020000,
|
||||
bitRoF = 0x00040000,
|
||||
bitCotF = 0x00080000,
|
||||
maskEverQuest = 0x00000000,
|
||||
maskRoK = 0x00000001,
|
||||
maskSoV = 0x00000003,
|
||||
maskSoL = 0x00000007,
|
||||
maskPoP = 0x0000000F,
|
||||
maskLoY = 0x0000001F,
|
||||
maskLDoN = 0x0000003F,
|
||||
maskGoD = 0x0000007F,
|
||||
maskOoW = 0x000000FF,
|
||||
maskDoN = 0x000001FF,
|
||||
maskDoD = 0x000003FF,
|
||||
maskPoR = 0x000007FF,
|
||||
maskTSS = 0x00000FFF,
|
||||
maskTBS = 0x00001FFF,
|
||||
maskSoF = 0x00003FFF,
|
||||
maskSoD = 0x00007FFF,
|
||||
maskUF = 0x0000FFFF,
|
||||
maskHoT = 0x0001FFFF,
|
||||
maskVoA = 0x0003FFFF,
|
||||
maskRoF = 0x0007FFFF,
|
||||
maskCotF = 0x000FFFFF
|
||||
};
|
||||
|
||||
const char* ExpansionName(uint32 expansion_bit);
|
||||
uint32 ConvertClientVersionToExpansionBit(versions::ClientVersion client_version);
|
||||
uint32 ConvertClientVersionToExpansionMask(versions::ClientVersion client_version);
|
||||
|
||||
} /*expansions*/
|
||||
|
||||
} /*EQEmu*/
|
||||
|
||||
#endif /*COMMON_EMU_VERSIONS_H*/
|
||||
|
||||
@ -32,6 +32,9 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
ClientUnknown::INULL,
|
||||
ClientUnknown::INULL,
|
||||
ClientUnknown::INULL,
|
||||
ClientUnknown::INULL,
|
||||
ClientUnknown::INULL,
|
||||
ClientUnknown::INULL,
|
||||
ClientUnknown::INULL
|
||||
),
|
||||
/*[ClientVersion::Client62] =*/
|
||||
@ -43,11 +46,17 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
Client62::INULL,
|
||||
Client62::INULL,
|
||||
Client62::INULL,
|
||||
Client62::INULL,
|
||||
Client62::INULL,
|
||||
Client62::INULL,
|
||||
Client62::INULL
|
||||
),
|
||||
/*[ClientVersion::Titanium] =*/
|
||||
EQEmu::constants::LookupEntry(
|
||||
Titanium::constants::EXPANSION_BIT,
|
||||
Titanium::constants::EXPANSIONS_MASK,
|
||||
Titanium::constants::CHARACTER_CREATION_LIMIT,
|
||||
Titanium::constants::SAY_LINK_BODY_SIZE,
|
||||
Titanium::constants::LongBuffs,
|
||||
Titanium::constants::ShortBuffs,
|
||||
Titanium::constants::DiscBuffs,
|
||||
@ -58,7 +67,10 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
),
|
||||
/*[ClientVersion::SoF] =*/
|
||||
EQEmu::constants::LookupEntry(
|
||||
SoF::constants::EXPANSION_BIT,
|
||||
SoF::constants::EXPANSIONS_MASK,
|
||||
SoF::constants::CHARACTER_CREATION_LIMIT,
|
||||
SoF::constants::SAY_LINK_BODY_SIZE,
|
||||
SoF::constants::LongBuffs,
|
||||
SoF::constants::ShortBuffs,
|
||||
SoF::constants::DiscBuffs,
|
||||
@ -69,7 +81,10 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
),
|
||||
/*[ClientVersion::SoD] =*/
|
||||
EQEmu::constants::LookupEntry(
|
||||
SoD::constants::EXPANSION_BIT,
|
||||
SoD::constants::EXPANSIONS_MASK,
|
||||
SoD::constants::CHARACTER_CREATION_LIMIT,
|
||||
SoD::constants::SAY_LINK_BODY_SIZE,
|
||||
SoD::constants::LongBuffs,
|
||||
SoD::constants::ShortBuffs,
|
||||
SoD::constants::DiscBuffs,
|
||||
@ -80,7 +95,10 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
),
|
||||
/*[ClientVersion::UF] =*/
|
||||
EQEmu::constants::LookupEntry(
|
||||
UF::constants::EXPANSION_BIT,
|
||||
UF::constants::EXPANSIONS_MASK,
|
||||
UF::constants::CHARACTER_CREATION_LIMIT,
|
||||
UF::constants::SAY_LINK_BODY_SIZE,
|
||||
UF::constants::LongBuffs,
|
||||
UF::constants::ShortBuffs,
|
||||
UF::constants::DiscBuffs,
|
||||
@ -91,7 +109,10 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
),
|
||||
/*[ClientVersion::RoF] =*/
|
||||
EQEmu::constants::LookupEntry(
|
||||
RoF::constants::EXPANSION_BIT,
|
||||
RoF::constants::EXPANSIONS_MASK,
|
||||
RoF::constants::CHARACTER_CREATION_LIMIT,
|
||||
RoF::constants::SAY_LINK_BODY_SIZE,
|
||||
RoF::constants::LongBuffs,
|
||||
RoF::constants::ShortBuffs,
|
||||
RoF::constants::DiscBuffs,
|
||||
@ -102,7 +123,10 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
|
||||
),
|
||||
/*[ClientVersion::RoF2] =*/
|
||||
EQEmu::constants::LookupEntry(
|
||||
RoF2::constants::EXPANSION_BIT,
|
||||
RoF2::constants::EXPANSIONS_MASK,
|
||||
RoF2::constants::CHARACTER_CREATION_LIMIT,
|
||||
RoF2::constants::SAY_LINK_BODY_SIZE,
|
||||
RoF2::constants::LongBuffs,
|
||||
RoF2::constants::ShortBuffs,
|
||||
RoF2::constants::DiscBuffs,
|
||||
|
||||
@ -35,7 +35,10 @@ namespace EQEmu
|
||||
{
|
||||
namespace constants {
|
||||
struct LookupEntry {
|
||||
uint32 ExpansionBit;
|
||||
uint32 ExpansionsMask;
|
||||
int16 CharacterCreationLimit;
|
||||
size_t SayLinkBodySize;
|
||||
int LongBuffs;
|
||||
int ShortBuffs;
|
||||
int DiscBuffs;
|
||||
@ -45,7 +48,10 @@ namespace EQEmu
|
||||
int MercBuffs;
|
||||
|
||||
LookupEntry(
|
||||
uint32 ExpansionBit,
|
||||
uint32 ExpansionsMask,
|
||||
int16 CharacterCreationLimit,
|
||||
size_t SayLinkBodySize,
|
||||
int LongBuffs,
|
||||
int ShortBuffs,
|
||||
int DiscBuffs,
|
||||
@ -54,7 +60,10 @@ namespace EQEmu
|
||||
int PetBuffs,
|
||||
int MercBuffs
|
||||
) :
|
||||
ExpansionBit(ExpansionBit),
|
||||
ExpansionsMask(ExpansionsMask),
|
||||
CharacterCreationLimit(CharacterCreationLimit),
|
||||
SayLinkBodySize(SayLinkBodySize),
|
||||
LongBuffs(LongBuffs),
|
||||
ShortBuffs(ShortBuffs),
|
||||
DiscBuffs(DiscBuffs),
|
||||
|
||||
@ -259,6 +259,9 @@ namespace RoF2
|
||||
namespace constants {
|
||||
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::RoF2; }
|
||||
|
||||
const uint32 EXPANSION_BIT = EQEmu::expansions::bitRoF;
|
||||
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskRoF;
|
||||
|
||||
const size_t CHARACTER_CREATION_LIMIT = 12;
|
||||
|
||||
const size_t SAY_LINK_BODY_SIZE = 56;
|
||||
|
||||
@ -250,6 +250,9 @@ namespace RoF
|
||||
namespace constants {
|
||||
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::RoF; }
|
||||
|
||||
const uint32 EXPANSION_BIT = EQEmu::expansions::bitRoF;
|
||||
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskRoF;
|
||||
|
||||
const size_t CHARACTER_CREATION_LIMIT = 12;
|
||||
|
||||
const size_t SAY_LINK_BODY_SIZE = 55;
|
||||
|
||||
@ -277,6 +277,9 @@ namespace SoD
|
||||
namespace constants {
|
||||
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::SoD; }
|
||||
|
||||
const uint32 EXPANSION_BIT = EQEmu::expansions::bitSoD;
|
||||
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskSoD;
|
||||
|
||||
const size_t CHARACTER_CREATION_LIMIT = 12;
|
||||
|
||||
const size_t SAY_LINK_BODY_SIZE = 50;
|
||||
|
||||
@ -277,6 +277,9 @@ namespace SoF
|
||||
namespace constants {
|
||||
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::SoF; }
|
||||
|
||||
const uint32 EXPANSION_BIT = EQEmu::expansions::bitSoF;
|
||||
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskSoF;
|
||||
|
||||
const size_t CHARACTER_CREATION_LIMIT = 12;
|
||||
|
||||
const size_t SAY_LINK_BODY_SIZE = 50;
|
||||
|
||||
@ -276,6 +276,9 @@ namespace Titanium
|
||||
namespace constants {
|
||||
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::Titanium; }
|
||||
|
||||
const uint32 EXPANSION_BIT = EQEmu::expansions::bitPoR;
|
||||
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskPoR;
|
||||
|
||||
const size_t CHARACTER_CREATION_LIMIT = 8; // Hard-coded in client - DO NOT ALTER
|
||||
|
||||
const size_t SAY_LINK_BODY_SIZE = 45;
|
||||
|
||||
@ -278,6 +278,9 @@ namespace UF
|
||||
namespace constants {
|
||||
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::UF; }
|
||||
|
||||
const uint32 EXPANSION_BIT = EQEmu::expansions::bitUF;
|
||||
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskUF;
|
||||
|
||||
const size_t CHARACTER_CREATION_LIMIT = 12;
|
||||
|
||||
const size_t SAY_LINK_BODY_SIZE = 50;
|
||||
|
||||
@ -172,7 +172,7 @@ void Client::SendExpansionInfo() {
|
||||
auto outapp = new EQApplicationPacket(OP_ExpansionInfo, sizeof(ExpansionInfo_Struct));
|
||||
ExpansionInfo_Struct *eis = (ExpansionInfo_Struct*)outapp->pBuffer;
|
||||
if(RuleB(World, UseClientBasedExpansionSettings)) {
|
||||
eis->Expansions = EQEmu::versions::ConvertClientVersionToExpansion(eqs->ClientVersion());
|
||||
eis->Expansions = EQEmu::expansions::ConvertClientVersionToExpansionMask(eqs->ClientVersion());
|
||||
} else {
|
||||
eis->Expansions = (RuleI(World, ExpansionSettings));
|
||||
}
|
||||
|
||||
@ -5478,4 +5478,4 @@ int32 Mob::GetHPRegen() const
|
||||
int32 Mob::GetManaRegen() const
|
||||
{
|
||||
return mana_regen;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1398,7 +1398,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app)
|
||||
if (m_pp.ldon_points_available < 0 || m_pp.ldon_points_available > 2000000000) { m_pp.ldon_points_available = 0; }
|
||||
|
||||
if (RuleB(World, UseClientBasedExpansionSettings)) {
|
||||
m_pp.expansions = EQEmu::versions::ConvertClientVersionToExpansion(ClientVersion());
|
||||
m_pp.expansions = EQEmu::expansions::ConvertClientVersionToExpansionMask(ClientVersion());
|
||||
}
|
||||
else {
|
||||
m_pp.expansions = RuleI(World, ExpansionSettings);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user