Added bi-state dynamic lookup return

This commit is contained in:
Uleat 2019-01-20 23:40:40 -05:00
parent 93cc07e097
commit 7b2c87c7ed
3 changed files with 139 additions and 106 deletions

View File

@ -37,8 +37,8 @@ void EQEmu::InitializeDynamicLookups() {
global_dictionary_init = true; global_dictionary_init = true;
} }
static std::unique_ptr<EQEmu::constants::LookupEntry> constants_dynamic_nongm_lookup_entries[EQEmu::versions::ClientVersionCount];
static std::unique_ptr<EQEmu::constants::LookupEntry> constants_dynamic_gm_lookup_entries[EQEmu::versions::ClientVersionCount]; static std::unique_ptr<EQEmu::constants::LookupEntry> constants_dynamic_gm_lookup_entries[EQEmu::versions::ClientVersionCount];
static std::unique_ptr<EQEmu::constants::LookupEntry> constants_dynamic_lookup_entries[EQEmu::versions::ClientVersionCount];
static const EQEmu::constants::LookupEntry constants_static_lookup_entries[EQEmu::versions::ClientVersionCount] = static const EQEmu::constants::LookupEntry constants_static_lookup_entries[EQEmu::versions::ClientVersionCount] =
{ {
/*[ClientVersion::Unknown] =*/ /*[ClientVersion::Unknown] =*/
@ -119,6 +119,23 @@ void EQEmu::constants::InitializeDynamicLookups() {
// use static references for now // use static references for now
} }
const EQEmu::constants::LookupEntry* EQEmu::constants::DynamicLookup(versions::ClientVersion client_version, bool gm_flag)
{
if (gm_flag)
return DynamicGMLookup(client_version);
else
return DynamicNonGMLookup(client_version);
}
const EQEmu::constants::LookupEntry* EQEmu::constants::DynamicNonGMLookup(versions::ClientVersion client_version)
{
client_version = versions::ValidateClientVersion(client_version);
if (constants_dynamic_nongm_lookup_entries[static_cast<int>(client_version)])
return constants_dynamic_nongm_lookup_entries[static_cast<int>(client_version)].get();
return &constants_static_lookup_entries[static_cast<int>(client_version)];
}
const EQEmu::constants::LookupEntry* EQEmu::constants::DynamicGMLookup(versions::ClientVersion client_version) const EQEmu::constants::LookupEntry* EQEmu::constants::DynamicGMLookup(versions::ClientVersion client_version)
{ {
client_version = versions::ValidateClientVersion(client_version); client_version = versions::ValidateClientVersion(client_version);
@ -128,22 +145,13 @@ const EQEmu::constants::LookupEntry* EQEmu::constants::DynamicGMLookup(versions:
return &constants_static_lookup_entries[static_cast<int>(client_version)]; return &constants_static_lookup_entries[static_cast<int>(client_version)];
} }
const EQEmu::constants::LookupEntry* EQEmu::constants::DynamicLookup(versions::ClientVersion client_version)
{
client_version = versions::ValidateClientVersion(client_version);
if (constants_dynamic_lookup_entries[static_cast<int>(client_version)])
return constants_dynamic_lookup_entries[static_cast<int>(client_version)].get();
return &constants_static_lookup_entries[static_cast<int>(client_version)];
}
const EQEmu::constants::LookupEntry* EQEmu::constants::StaticLookup(versions::ClientVersion client_version) const EQEmu::constants::LookupEntry* EQEmu::constants::StaticLookup(versions::ClientVersion client_version)
{ {
return &constants_static_lookup_entries[static_cast<int>(versions::ValidateClientVersion(client_version))]; return &constants_static_lookup_entries[static_cast<int>(versions::ValidateClientVersion(client_version))];
} }
static std::unique_ptr<EQEmu::inventory::LookupEntry> inventory_dynamic_nongm_lookup_entries[EQEmu::versions::MobVersionCount];
static std::unique_ptr<EQEmu::inventory::LookupEntry> inventory_dynamic_gm_lookup_entries[EQEmu::versions::MobVersionCount]; static std::unique_ptr<EQEmu::inventory::LookupEntry> inventory_dynamic_gm_lookup_entries[EQEmu::versions::MobVersionCount];
static std::unique_ptr<EQEmu::inventory::LookupEntry> inventory_dynamic_lookup_entries[EQEmu::versions::MobVersionCount];
static const EQEmu::inventory::LookupEntry inventory_static_lookup_entries[EQEmu::versions::MobVersionCount] = static const EQEmu::inventory::LookupEntry inventory_static_lookup_entries[EQEmu::versions::MobVersionCount] =
{ {
/*[MobVersion::Unknown] =*/ /*[MobVersion::Unknown] =*/
@ -775,6 +783,63 @@ void EQEmu::inventory::InitializeDynamicLookups() {
if ((dynamic_check_mask & RuleI(World, ExpansionSettings)) == dynamic_check_mask) if ((dynamic_check_mask & RuleI(World, ExpansionSettings)) == dynamic_check_mask)
return; return;
// Dynamic Lookups (promotive methodology) (all mob versions allowed)
for (uint32 iter = static_cast<uint32>(EQEmu::versions::MobVersion::Unknown); iter <= static_cast<uint32>(EQEmu::versions::LastPCMobVersion); ++iter) {
// no need to dynamic this condition since it is the lowest compatibility standard
if ((dynamic_check_mask & ~constants_static_lookup_entries[iter].ExpansionsMask) == dynamic_check_mask)
continue;
// only client versions whose supported expansions are affected need to be considered
if ((constants_static_lookup_entries[iter].ExpansionsMask & RuleI(World, ExpansionSettings)) == constants_static_lookup_entries[iter].ExpansionsMask)
continue;
// direct manipulation of lookup indices is safe so long as (int)ClientVersion::<mob> == (int)MobVersion::<mob>
inventory_dynamic_nongm_lookup_entries[iter] = std::unique_ptr<LookupEntry>(new LookupEntry(inventory_static_lookup_entries[iter]));
// clamp affected fields to the lowest standard
inventory_dynamic_nongm_lookup_entries[iter]->InventoryTypeSize.Bank = Titanium::invtype::BANK_SIZE; // bank size
inventory_dynamic_nongm_lookup_entries[iter]->EquipmentBitmask = Titanium::invslot::EQUIPMENT_BITMASK; // power source
inventory_dynamic_nongm_lookup_entries[iter]->GeneralBitmask = Titanium::invslot::GENERAL_BITMASK; // general size
inventory_dynamic_nongm_lookup_entries[iter]->PossessionsBitmask = 0; // we'll fix later
inventory_dynamic_nongm_lookup_entries[iter]->CorpseBitmask = 0; // we'll fix later
if (RuleI(World, ExpansionSettings) & EQEmu::expansions::bitPoR) {
// update bank size
if (constants_static_lookup_entries[iter].ExpansionsMask & EQEmu::expansions::bitPoR)
inventory_dynamic_nongm_lookup_entries[iter]->InventoryTypeSize.Bank = SoF::invtype::BANK_SIZE;
}
if (RuleI(World, ExpansionSettings) & EQEmu::expansions::bitTBS) {
// update power source
if (constants_static_lookup_entries[iter].ExpansionsMask & EQEmu::expansions::bitTBS)
inventory_dynamic_nongm_lookup_entries[iter]->EquipmentBitmask = SoF::invslot::EQUIPMENT_BITMASK;
}
if (RuleI(World, ExpansionSettings) & EQEmu::expansions::bitHoT) {
// update general size
if (constants_static_lookup_entries[iter].ExpansionsMask & EQEmu::expansions::bitHoT)
inventory_dynamic_nongm_lookup_entries[iter]->GeneralBitmask = RoF::invslot::GENERAL_BITMASK;
}
// fixup possessions bitmask
inventory_dynamic_nongm_lookup_entries[iter]->PossessionsBitmask =
(
inventory_dynamic_nongm_lookup_entries[iter]->EquipmentBitmask |
inventory_dynamic_nongm_lookup_entries[iter]->GeneralBitmask |
inventory_dynamic_nongm_lookup_entries[iter]->CursorBitmask
);
// fixup corpse bitmask
inventory_dynamic_nongm_lookup_entries[iter]->CorpseBitmask =
(
inventory_dynamic_nongm_lookup_entries[iter]->GeneralBitmask |
inventory_dynamic_nongm_lookup_entries[iter]->CursorBitmask |
(inventory_dynamic_nongm_lookup_entries[iter]->EquipmentBitmask << 34)
);
// expansion-related fields are now updated and all other fields reflect the static entry values
}
// Dynamic GM Lookups (demotive methodology) (client-linked mob versions only) // Dynamic GM Lookups (demotive methodology) (client-linked mob versions only)
for (uint32 iter = static_cast<uint32>(EQEmu::versions::MobVersion::Unknown); iter <= static_cast<uint32>(EQEmu::versions::LastPCMobVersion); ++iter) { for (uint32 iter = static_cast<uint32>(EQEmu::versions::MobVersion::Unknown); iter <= static_cast<uint32>(EQEmu::versions::LastPCMobVersion); ++iter) {
// no need to dynamic this condition since it is the lowest compatibility standard // no need to dynamic this condition since it is the lowest compatibility standard
@ -846,7 +911,7 @@ void EQEmu::inventory::InitializeDynamicLookups() {
inventory_dynamic_gm_lookup_entries[iter]->EquipmentBitmask | inventory_dynamic_gm_lookup_entries[iter]->EquipmentBitmask |
inventory_dynamic_gm_lookup_entries[iter]->GeneralBitmask | inventory_dynamic_gm_lookup_entries[iter]->GeneralBitmask |
inventory_dynamic_gm_lookup_entries[iter]->CursorBitmask inventory_dynamic_gm_lookup_entries[iter]->CursorBitmask
); );
// fixup corpse bitmask // fixup corpse bitmask
inventory_dynamic_gm_lookup_entries[iter]->CorpseBitmask = inventory_dynamic_gm_lookup_entries[iter]->CorpseBitmask =
@ -854,63 +919,6 @@ void EQEmu::inventory::InitializeDynamicLookups() {
inventory_dynamic_gm_lookup_entries[iter]->GeneralBitmask | inventory_dynamic_gm_lookup_entries[iter]->GeneralBitmask |
inventory_dynamic_gm_lookup_entries[iter]->CursorBitmask | inventory_dynamic_gm_lookup_entries[iter]->CursorBitmask |
(inventory_dynamic_gm_lookup_entries[iter]->EquipmentBitmask << 34) (inventory_dynamic_gm_lookup_entries[iter]->EquipmentBitmask << 34)
);
// expansion-related fields are now updated and all other fields reflect the static entry values
}
// Dynamic Lookups (promotive methodology) (all mob versions allowed)
for (uint32 iter = static_cast<uint32>(EQEmu::versions::MobVersion::Unknown); iter <= static_cast<uint32>(EQEmu::versions::LastPCMobVersion); ++iter) {
// no need to dynamic this condition since it is the lowest compatibility standard
if ((dynamic_check_mask & ~constants_static_lookup_entries[iter].ExpansionsMask) == dynamic_check_mask)
continue;
// only client versions whose supported expansions are affected need to be considered
if ((constants_static_lookup_entries[iter].ExpansionsMask & RuleI(World, ExpansionSettings)) == constants_static_lookup_entries[iter].ExpansionsMask)
continue;
// direct manipulation of lookup indices is safe so long as (int)ClientVersion::<mob> == (int)MobVersion::<mob>
inventory_dynamic_lookup_entries[iter] = std::unique_ptr<LookupEntry>(new LookupEntry(inventory_static_lookup_entries[iter]));
// clamp affected fields to the lowest standard
inventory_dynamic_lookup_entries[iter]->InventoryTypeSize.Bank = Titanium::invtype::BANK_SIZE; // bank size
inventory_dynamic_lookup_entries[iter]->EquipmentBitmask = Titanium::invslot::EQUIPMENT_BITMASK; // power source
inventory_dynamic_lookup_entries[iter]->GeneralBitmask = Titanium::invslot::GENERAL_BITMASK; // general size
inventory_dynamic_lookup_entries[iter]->PossessionsBitmask = 0; // we'll fix later
inventory_dynamic_lookup_entries[iter]->CorpseBitmask = 0; // we'll fix later
if (RuleI(World, ExpansionSettings) & EQEmu::expansions::bitPoR) {
// update bank size
if (constants_static_lookup_entries[iter].ExpansionsMask & EQEmu::expansions::bitPoR)
inventory_dynamic_lookup_entries[iter]->InventoryTypeSize.Bank = SoF::invtype::BANK_SIZE;
}
if (RuleI(World, ExpansionSettings) & EQEmu::expansions::bitTBS) {
// update power source
if (constants_static_lookup_entries[iter].ExpansionsMask & EQEmu::expansions::bitTBS)
inventory_dynamic_lookup_entries[iter]->EquipmentBitmask = SoF::invslot::EQUIPMENT_BITMASK;
}
if (RuleI(World, ExpansionSettings) & EQEmu::expansions::bitHoT) {
// update general size
if (constants_static_lookup_entries[iter].ExpansionsMask & EQEmu::expansions::bitHoT)
inventory_dynamic_lookup_entries[iter]->GeneralBitmask = RoF::invslot::GENERAL_BITMASK;
}
// fixup possessions bitmask
inventory_dynamic_lookup_entries[iter]->PossessionsBitmask =
(
inventory_dynamic_lookup_entries[iter]->EquipmentBitmask |
inventory_dynamic_lookup_entries[iter]->GeneralBitmask |
inventory_dynamic_lookup_entries[iter]->CursorBitmask
);
// fixup corpse bitmask
inventory_dynamic_lookup_entries[iter]->CorpseBitmask =
(
inventory_dynamic_lookup_entries[iter]->GeneralBitmask |
inventory_dynamic_lookup_entries[iter]->CursorBitmask |
(inventory_dynamic_lookup_entries[iter]->EquipmentBitmask << 34)
); );
// expansion-related fields are now updated and all other fields reflect the static entry values // expansion-related fields are now updated and all other fields reflect the static entry values
@ -919,6 +927,23 @@ void EQEmu::inventory::InitializeDynamicLookups() {
// only client versions that require a change from their static definitions have been given a dynamic (gm) lookup entry // only client versions that require a change from their static definitions have been given a dynamic (gm) lookup entry
} }
const EQEmu::inventory::LookupEntry* EQEmu::inventory::DynamicLookup(versions::MobVersion mob_version, bool gm_flag)
{
if (gm_flag)
return DynamicGMLookup(mob_version);
else
return DynamicNonGMLookup(mob_version);
}
const EQEmu::inventory::LookupEntry* EQEmu::inventory::DynamicNonGMLookup(versions::MobVersion mob_version)
{
mob_version = versions::ValidateMobVersion(mob_version);
if (inventory_dynamic_nongm_lookup_entries[static_cast<int>(mob_version)])
return inventory_dynamic_nongm_lookup_entries[static_cast<int>(mob_version)].get();
return &inventory_static_lookup_entries[static_cast<int>(mob_version)];
}
const EQEmu::inventory::LookupEntry* EQEmu::inventory::DynamicGMLookup(versions::MobVersion mob_version) const EQEmu::inventory::LookupEntry* EQEmu::inventory::DynamicGMLookup(versions::MobVersion mob_version)
{ {
mob_version = versions::ValidateMobVersion(mob_version); mob_version = versions::ValidateMobVersion(mob_version);
@ -928,22 +953,13 @@ const EQEmu::inventory::LookupEntry* EQEmu::inventory::DynamicGMLookup(versions:
return &inventory_static_lookup_entries[static_cast<int>(mob_version)]; return &inventory_static_lookup_entries[static_cast<int>(mob_version)];
} }
const EQEmu::inventory::LookupEntry* EQEmu::inventory::DynamicLookup(versions::MobVersion mob_version)
{
mob_version = versions::ValidateMobVersion(mob_version);
if (inventory_dynamic_lookup_entries[static_cast<int>(mob_version)])
return inventory_dynamic_lookup_entries[static_cast<int>(mob_version)].get();
return &inventory_static_lookup_entries[static_cast<int>(mob_version)];
}
const EQEmu::inventory::LookupEntry* EQEmu::inventory::StaticLookup(versions::MobVersion mob_version) const EQEmu::inventory::LookupEntry* EQEmu::inventory::StaticLookup(versions::MobVersion mob_version)
{ {
return &inventory_static_lookup_entries[static_cast<int>(versions::ValidateMobVersion(mob_version))]; return &inventory_static_lookup_entries[static_cast<int>(versions::ValidateMobVersion(mob_version))];
} }
static std::unique_ptr<EQEmu::behavior::LookupEntry> behavior_dynamic_nongm_lookup_entries[EQEmu::versions::MobVersionCount];
static std::unique_ptr<EQEmu::behavior::LookupEntry> behavior_dynamic_gm_lookup_entries[EQEmu::versions::MobVersionCount]; static std::unique_ptr<EQEmu::behavior::LookupEntry> behavior_dynamic_gm_lookup_entries[EQEmu::versions::MobVersionCount];
static std::unique_ptr<EQEmu::behavior::LookupEntry> behavior_dynamic_lookup_entries[EQEmu::versions::MobVersionCount];
static const EQEmu::behavior::LookupEntry behavior_static_lookup_entries[EQEmu::versions::MobVersionCount] = static const EQEmu::behavior::LookupEntry behavior_static_lookup_entries[EQEmu::versions::MobVersionCount] =
{ {
/*[MobVersion::Unknown] =*/ /*[MobVersion::Unknown] =*/
@ -1048,6 +1064,23 @@ void EQEmu::behavior::InitializeDynamicLookups() {
// use static references for now // use static references for now
} }
const EQEmu::behavior::LookupEntry* EQEmu::behavior::DynamicLookup(versions::MobVersion mob_version, bool gm_flag)
{
if (gm_flag)
return DynamicGMLookup(mob_version);
else
return DynamicNonGMLookup(mob_version);
}
const EQEmu::behavior::LookupEntry* EQEmu::behavior::DynamicNonGMLookup(versions::MobVersion mob_version)
{
mob_version = versions::ValidateMobVersion(mob_version);
if (behavior_dynamic_nongm_lookup_entries[static_cast<int>(mob_version)])
return behavior_dynamic_nongm_lookup_entries[static_cast<int>(mob_version)].get();
return &behavior_static_lookup_entries[static_cast<int>(mob_version)];
}
const EQEmu::behavior::LookupEntry* EQEmu::behavior::DynamicGMLookup(versions::MobVersion mob_version) const EQEmu::behavior::LookupEntry* EQEmu::behavior::DynamicGMLookup(versions::MobVersion mob_version)
{ {
mob_version = versions::ValidateMobVersion(mob_version); mob_version = versions::ValidateMobVersion(mob_version);
@ -1057,22 +1090,13 @@ const EQEmu::behavior::LookupEntry* EQEmu::behavior::DynamicGMLookup(versions::M
return &behavior_static_lookup_entries[static_cast<int>(mob_version)]; return &behavior_static_lookup_entries[static_cast<int>(mob_version)];
} }
const EQEmu::behavior::LookupEntry* EQEmu::behavior::DynamicLookup(versions::MobVersion mob_version)
{
mob_version = versions::ValidateMobVersion(mob_version);
if (behavior_dynamic_lookup_entries[static_cast<int>(mob_version)])
return behavior_dynamic_lookup_entries[static_cast<int>(mob_version)].get();
return &behavior_static_lookup_entries[static_cast<int>(mob_version)];
}
const EQEmu::behavior::LookupEntry* EQEmu::behavior::StaticLookup(versions::MobVersion mob_version) const EQEmu::behavior::LookupEntry* EQEmu::behavior::StaticLookup(versions::MobVersion mob_version)
{ {
return &behavior_static_lookup_entries[static_cast<int>(versions::ValidateMobVersion(mob_version))]; return &behavior_static_lookup_entries[static_cast<int>(versions::ValidateMobVersion(mob_version))];
} }
static std::unique_ptr<EQEmu::spells::LookupEntry> spells_dynamic_nongm_lookup_entries[EQEmu::versions::ClientVersionCount];
static std::unique_ptr<EQEmu::spells::LookupEntry> spells_dynamic_gm_lookup_entries[EQEmu::versions::ClientVersionCount]; static std::unique_ptr<EQEmu::spells::LookupEntry> spells_dynamic_gm_lookup_entries[EQEmu::versions::ClientVersionCount];
static std::unique_ptr<EQEmu::spells::LookupEntry> spells_dynamic_lookup_entries[EQEmu::versions::ClientVersionCount];
static const EQEmu::spells::LookupEntry spells_static_lookup_entries[EQEmu::versions::ClientVersionCount] = static const EQEmu::spells::LookupEntry spells_static_lookup_entries[EQEmu::versions::ClientVersionCount] =
{ {
/*[ClientVersion::Unknown] =*/ /*[ClientVersion::Unknown] =*/
@ -1193,6 +1217,23 @@ void EQEmu::spells::InitializeDynamicLookups() {
// use static references for now // use static references for now
} }
const EQEmu::spells::LookupEntry* EQEmu::spells::DynamicLookup(versions::ClientVersion client_version, bool gm_flag)
{
if (gm_flag)
return DynamicGMLookup(client_version);
else
return DynamicNonGMLookup(client_version);
}
const EQEmu::spells::LookupEntry* EQEmu::spells::DynamicNonGMLookup(versions::ClientVersion client_version)
{
client_version = versions::ValidateClientVersion(client_version);
if (spells_dynamic_nongm_lookup_entries[static_cast<int>(client_version)])
return spells_dynamic_nongm_lookup_entries[static_cast<int>(client_version)].get();
return &spells_static_lookup_entries[static_cast<int>(client_version)];
}
const EQEmu::spells::LookupEntry* EQEmu::spells::DynamicGMLookup(versions::ClientVersion client_version) const EQEmu::spells::LookupEntry* EQEmu::spells::DynamicGMLookup(versions::ClientVersion client_version)
{ {
client_version = versions::ValidateClientVersion(client_version); client_version = versions::ValidateClientVersion(client_version);
@ -1202,15 +1243,6 @@ const EQEmu::spells::LookupEntry* EQEmu::spells::DynamicGMLookup(versions::Clien
return &spells_static_lookup_entries[static_cast<int>(client_version)]; return &spells_static_lookup_entries[static_cast<int>(client_version)];
} }
const EQEmu::spells::LookupEntry* EQEmu::spells::DynamicLookup(versions::ClientVersion client_version)
{
client_version = versions::ValidateClientVersion(client_version);
if (spells_dynamic_lookup_entries[static_cast<int>(client_version)])
return spells_dynamic_lookup_entries[static_cast<int>(client_version)].get();
return &spells_static_lookup_entries[static_cast<int>(client_version)];
}
const EQEmu::spells::LookupEntry* EQEmu::spells::StaticLookup(versions::ClientVersion client_version) const EQEmu::spells::LookupEntry* EQEmu::spells::StaticLookup(versions::ClientVersion client_version)
{ {
return &spells_static_lookup_entries[static_cast<int>(versions::ValidateClientVersion(client_version))]; return &spells_static_lookup_entries[static_cast<int>(versions::ValidateClientVersion(client_version))];

View File

@ -61,8 +61,9 @@ namespace EQEmu
void InitializeDynamicLookups(); void InitializeDynamicLookups();
const LookupEntry* DynamicLookup(versions::ClientVersion client_version, bool gm_flag);
const LookupEntry* DynamicNonGMLookup(versions::ClientVersion client_version);
const LookupEntry* DynamicGMLookup(versions::ClientVersion client_version); const LookupEntry* DynamicGMLookup(versions::ClientVersion client_version);
const LookupEntry* DynamicLookup(versions::ClientVersion client_version);
const LookupEntry* StaticLookup(versions::ClientVersion client_version); const LookupEntry* StaticLookup(versions::ClientVersion client_version);
} /*constants*/ } /*constants*/
@ -158,8 +159,9 @@ namespace EQEmu
void InitializeDynamicLookups(); void InitializeDynamicLookups();
const LookupEntry* DynamicLookup(versions::MobVersion mob_version, bool gm_flag);
const LookupEntry* DynamicNonGMLookup(versions::MobVersion mob_version);
const LookupEntry* DynamicGMLookup(versions::MobVersion mob_version); const LookupEntry* DynamicGMLookup(versions::MobVersion mob_version);
const LookupEntry* DynamicLookup(versions::MobVersion mob_version);
const LookupEntry* StaticLookup(versions::MobVersion mob_version); const LookupEntry* StaticLookup(versions::MobVersion mob_version);
} /*inventory*/ } /*inventory*/
@ -178,8 +180,9 @@ namespace EQEmu
void InitializeDynamicLookups(); void InitializeDynamicLookups();
const LookupEntry* DynamicLookup(versions::MobVersion mob_version, bool gm_flag);
const LookupEntry* DynamicNonGMLookup(versions::MobVersion mob_version);
const LookupEntry* DynamicGMLookup(versions::MobVersion mob_version); const LookupEntry* DynamicGMLookup(versions::MobVersion mob_version);
const LookupEntry* DynamicLookup(versions::MobVersion mob_version);
const LookupEntry* StaticLookup(versions::MobVersion mob_version); const LookupEntry* StaticLookup(versions::MobVersion mob_version);
} /*behavior*/ } /*behavior*/
@ -226,8 +229,9 @@ namespace EQEmu
void InitializeDynamicLookups(); void InitializeDynamicLookups();
const LookupEntry* DynamicLookup(versions::ClientVersion client_version, bool gm_flag);
const LookupEntry* DynamicNonGMLookup(versions::ClientVersion client_version);
const LookupEntry* DynamicGMLookup(versions::ClientVersion client_version); const LookupEntry* DynamicGMLookup(versions::ClientVersion client_version);
const LookupEntry* DynamicLookup(versions::ClientVersion client_version);
const LookupEntry* StaticLookup(versions::ClientVersion client_version); const LookupEntry* StaticLookup(versions::ClientVersion client_version);
} /*spells*/ } /*spells*/

View File

@ -127,10 +127,7 @@ void EQEmu::InventoryProfile::SetInventoryVersion(versions::MobVersion inventory
void EQEmu::InventoryProfile::SetGMInventory(bool gmi_flag) { void EQEmu::InventoryProfile::SetGMInventory(bool gmi_flag) {
m_gm_inventory = gmi_flag; m_gm_inventory = gmi_flag;
if (m_gm_inventory) m_lookup = inventory::DynamicLookup(m_mob_version, gmi_flag);
m_lookup = inventory::DynamicGMLookup(m_mob_version);
else
m_lookup = inventory::DynamicLookup(m_mob_version);
} }
void EQEmu::InventoryProfile::CleanDirty() { void EQEmu::InventoryProfile::CleanDirty() {