diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-08-15 00:03:38 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-08-15 00:03:38 +0200 |
| commit | fea0cb16f2e73ec21891ac14cdc10d9d8f518cfe (patch) | |
| tree | 7e3a6ee9b3876ca5b3a7115a9d932ce8125c41e1 /src/server/game/DataStores | |
| parent | f8c5a2c723c734513eddc98a5c7f380c2f00e479 (diff) | |
Core/Items: Implemented artifacts
Diffstat (limited to 'src/server/game/DataStores')
| -rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 68 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Stores.h | 23 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 91 | ||||
| -rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 37 | ||||
| -rw-r--r-- | src/server/game/DataStores/GameTables.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/DataStores/GameTables.h | 6 |
6 files changed, 215 insertions, 12 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index c1ebbd4cd4c..a893bcc5ece 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -30,6 +30,14 @@ DB2Storage<AreaGroupMemberEntry> sAreaGroupMemberStore("AreaGroup DB2Storage<AreaTableEntry> sAreaTableStore("AreaTable.db2", AreaTableMeta::Instance(), HOTFIX_SEL_AREA_TABLE); DB2Storage<AreaTriggerEntry> sAreaTriggerStore("AreaTrigger.db2", AreaTriggerMeta::Instance(), HOTFIX_SEL_AREA_TRIGGER); DB2Storage<ArmorLocationEntry> sArmorLocationStore("ArmorLocation.db2", ArmorLocationMeta::Instance(), HOTFIX_SEL_ARMOR_LOCATION); +DB2Storage<ArtifactEntry> sArtifactStore("Artifact.db2", ArtifactMeta::Instance(), HOTFIX_SEL_ARTIFACT); +DB2Storage<ArtifactAppearanceEntry> sArtifactAppearanceStore("ArtifactAppearance.db2", ArtifactAppearanceMeta::Instance(), HOTFIX_SEL_ARTIFACT_APPEARANCE); +DB2Storage<ArtifactAppearanceSetEntry> sArtifactAppearanceSetStore("ArtifactAppearanceSet.db2", ArtifactAppearanceSetMeta::Instance(), HOTFIX_SEL_ARTIFACT_APPEARANCE_SET); +DB2Storage<ArtifactCategoryEntry> sArtifactCategoryStore("ArtifactCategory.db2", ArtifactCategoryMeta::Instance(), HOTFIX_SEL_ARTIFACT_CATEGORY); +DB2Storage<ArtifactPowerEntry> sArtifactPowerStore("ArtifactPower.db2", ArtifactPowerMeta::Instance(), HOTFIX_SEL_ARTIFACT_POWER); +DB2Storage<ArtifactPowerLinkEntry> sArtifactPowerLinkStore("ArtifactPowerLink.db2", ArtifactPowerLinkMeta::Instance(), HOTFIX_SEL_ARTIFACT_POWER_LINK); +DB2Storage<ArtifactPowerRankEntry> sArtifactPowerRankStore("ArtifactPowerRank.db2", ArtifactPowerRankMeta::Instance(), HOTFIX_SEL_ARTIFACT_POWER_RANK); +DB2Storage<ArtifactQuestXPEntry> sArtifactQuestXPStore("ArtifactQuestXP.db2", ArtifactQuestXPMeta::Instance(), HOTFIX_SEL_ARTIFACT_QUEST_XP); DB2Storage<AuctionHouseEntry> sAuctionHouseStore("AuctionHouse.db2", AuctionHouseMeta::Instance(), HOTFIX_SEL_AUCTION_HOUSE); DB2Storage<BankBagSlotPricesEntry> sBankBagSlotPricesStore("BankBagSlotPrices.db2", BankBagSlotPricesMeta::Instance(), HOTFIX_SEL_BANK_BAG_SLOT_PRICES); DB2Storage<BannedAddOnsEntry> sBannedAddOnsStore("BannedAddOns.db2", BannedAddOnsMeta::Instance(), HOTFIX_SEL_BANNED_ADDONS); @@ -100,6 +108,7 @@ DB2Storage<ItemArmorShieldEntry> sItemArmorShieldStore("ItemArmor DB2Storage<ItemArmorTotalEntry> sItemArmorTotalStore("ItemArmorTotal.db2", ItemArmorTotalMeta::Instance(), HOTFIX_SEL_ITEM_ARMOR_TOTAL); DB2Storage<ItemBagFamilyEntry> sItemBagFamilyStore("ItemBagFamily.db2", ItemBagFamilyMeta::Instance(), HOTFIX_SEL_ITEM_BAG_FAMILY); DB2Storage<ItemBonusEntry> sItemBonusStore("ItemBonus.db2", ItemBonusMeta::Instance(), HOTFIX_SEL_ITEM_BONUS); +DB2Storage<ItemBonusListLevelDeltaEntry> sItemBonusListLevelDeltaStore("ItemBonusListLevelDelta.db2", ItemBonusListLevelDeltaMeta::Instance(), HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA); DB2Storage<ItemBonusTreeNodeEntry> sItemBonusTreeNodeStore("ItemBonusTreeNode.db2", ItemBonusTreeNodeMeta::Instance(), HOTFIX_SEL_ITEM_BONUS_TREE_NODE); DB2Storage<ItemChildEquipmentEntry> sItemChildEquipmentStore("ItemChildEquipment.db2", ItemChildEquipmentMeta::Instance(), HOTFIX_SEL_ITEM_CHILD_EQUIPMENT); DB2Storage<ItemClassEntry> sItemClassStore("ItemClass.db2", ItemClassMeta::Instance(), HOTFIX_SEL_ITEM_CLASS); @@ -293,6 +302,13 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sAreaTableStore); LOAD_DB2(sAreaTriggerStore); LOAD_DB2(sArmorLocationStore); + LOAD_DB2(sArtifactStore); + LOAD_DB2(sArtifactAppearanceStore); + LOAD_DB2(sArtifactAppearanceSetStore); + LOAD_DB2(sArtifactCategoryStore); + LOAD_DB2(sArtifactPowerStore); + LOAD_DB2(sArtifactPowerLinkStore); + LOAD_DB2(sArtifactPowerRankStore); LOAD_DB2(sAuctionHouseStore); LOAD_DB2(sBankBagSlotPricesStore); LOAD_DB2(sBannedAddOnsStore); @@ -363,6 +379,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sItemArmorTotalStore); LOAD_DB2(sItemBagFamilyStore); LOAD_DB2(sItemBonusStore); + LOAD_DB2(sItemBonusListLevelDeltaStore); LOAD_DB2(sItemBonusTreeNodeStore); LOAD_DB2(sItemChildEquipmentStore); LOAD_DB2(sItemClassStore); @@ -482,6 +499,18 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) for (AreaGroupMemberEntry const* areaGroupMember : sAreaGroupMemberStore) _areaGroupMembers[areaGroupMember->AreaGroupID].push_back(areaGroupMember->AreaID); + for (ArtifactPowerEntry const* artifactPower : sArtifactPowerStore) + _artifactPowers[artifactPower->ArtifactID].push_back(artifactPower); + + for (ArtifactPowerLinkEntry const* artifactPowerLink : sArtifactPowerLinkStore) + { + _artifactPowerLinks[artifactPowerLink->FromArtifactPowerID].insert(artifactPowerLink->ToArtifactPowerID); + _artifactPowerLinks[artifactPowerLink->ToArtifactPowerID].insert(artifactPowerLink->FromArtifactPowerID); + } + + for (ArtifactPowerRankEntry const* artifactPowerRank : sArtifactPowerRankStore) + _artifactPowerRanks[std::pair<uint32, uint8>{ artifactPowerRank->ArtifactPowerID, artifactPowerRank->Rank }] = artifactPowerRank; + std::unordered_map<uint32, std::set<std::pair<uint8, uint8>>> addedSections; for (CharSectionsEntry const* charSection : sCharSectionsStore) { @@ -601,6 +630,9 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) for (ItemBonusEntry const* bonus : sItemBonusStore) _itemBonusLists[bonus->BonusListID].push_back(bonus); + for (ItemBonusListLevelDeltaEntry const* itemBonusListLevelDelta : sItemBonusListLevelDeltaStore) + _itemLevelDeltaToBonusListContainer[itemBonusListLevelDelta->Delta] = itemBonusListLevelDelta->ID; + for (ItemBonusTreeNodeEntry const* bonusTreeNode : sItemBonusTreeNodeStore) { uint32 bonusTreeId = bonusTreeNode->BonusTreeID; @@ -918,6 +950,33 @@ std::vector<uint32> DB2Manager::GetAreasForGroup(uint32 areaGroupId) const return std::vector<uint32>(); } +std::vector<ArtifactPowerEntry const*> DB2Manager::GetArtifactPowers(uint8 artifactId) const +{ + auto itr = _artifactPowers.find(artifactId); + if (itr != _artifactPowers.end()) + return itr->second; + + return std::vector<ArtifactPowerEntry const*>{}; +} + +std::unordered_set<uint32> const* DB2Manager::GetArtifactPowerLinks(uint32 artifactPowerId) const +{ + auto itr = _artifactPowerLinks.find(artifactPowerId); + if (itr != _artifactPowerLinks.end()) + return &itr->second; + + return nullptr; +} + +ArtifactPowerRankEntry const* DB2Manager::GetArtifactPowerRank(uint32 artifactPowerId, uint8 rank) const +{ + auto itr = _artifactPowerRanks.find({ artifactPowerId, rank }); + if (itr != _artifactPowerRanks.end()) + return itr->second; + + return nullptr; +} + char const* DB2Manager::GetBroadcastTextValue(BroadcastTextEntry const* broadcastText, LocaleConstant locale /*= DEFAULT_LOCALE*/, uint8 gender /*= GENDER_MALE*/, bool forceGender /*= false*/) { if (gender == GENDER_FEMALE && (forceGender || broadcastText->FemaleText->Str[DEFAULT_LOCALE][0] != '\0')) @@ -1195,6 +1254,15 @@ DB2Manager::ItemBonusList const* DB2Manager::GetItemBonusList(uint32 bonusListId return nullptr; } +uint32 DB2Manager::GetItemBonusListForItemLevelDelta(int16 delta) const +{ + auto itr = _itemLevelDeltaToBonusListContainer.find(delta); + if (itr != _itemLevelDeltaToBonusListContainer.end()) + return itr->second; + + return 0; +} + std::set<uint32> DB2Manager::GetItemBonusTree(uint32 itemId, uint32 itemBonusTreeMod) const { std::set<uint32> bonusListIDs; diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index f5aff6432a7..b8e5569ec9b 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -28,6 +28,11 @@ TC_GAME_API extern DB2Storage<AnimKitEntry> sAnimKitStor TC_GAME_API extern DB2Storage<AreaTableEntry> sAreaTableStore; TC_GAME_API extern DB2Storage<AreaTriggerEntry> sAreaTriggerStore; TC_GAME_API extern DB2Storage<ArmorLocationEntry> sArmorLocationStore; +TC_GAME_API extern DB2Storage<ArtifactEntry> sArtifactStore; +TC_GAME_API extern DB2Storage<ArtifactCategoryEntry> sArtifactCategoryStore; +TC_GAME_API extern DB2Storage<ArtifactAppearanceEntry> sArtifactAppearanceStore; +TC_GAME_API extern DB2Storage<ArtifactAppearanceSetEntry> sArtifactAppearanceSetStore; +TC_GAME_API extern DB2Storage<ArtifactPowerEntry> sArtifactPowerStore; TC_GAME_API extern DB2Storage<AuctionHouseEntry> sAuctionHouseStore; TC_GAME_API extern DB2Storage<BankBagSlotPricesEntry> sBankBagSlotPricesStore; TC_GAME_API extern DB2Storage<BannedAddOnsEntry> sBannedAddOnsStore; @@ -208,7 +213,7 @@ struct HotfixNotify typedef std::vector<HotfixNotify> HotfixData; #define DEFINE_DB2_SET_COMPARATOR(structure) \ - struct structure ## Comparator : public std::binary_function<structure const*, structure const*, bool> \ + struct structure ## Comparator \ { \ bool operator()(structure const* left, structure const* right) const { return Compare(left, right); } \ static bool Compare(structure const* left, structure const* right); \ @@ -217,11 +222,14 @@ typedef std::vector<HotfixNotify> HotfixData; class TC_GAME_API DB2Manager { public: - DEFINE_DB2_SET_COMPARATOR(ChrClassesXPowerTypesEntry); - DEFINE_DB2_SET_COMPARATOR(MountTypeXCapabilityEntry); + DEFINE_DB2_SET_COMPARATOR(ChrClassesXPowerTypesEntry) + DEFINE_DB2_SET_COMPARATOR(MountTypeXCapabilityEntry) typedef std::map<uint32 /*hash*/, DB2StorageBase*> StorageMap; typedef std::unordered_map<uint32 /*areaGroupId*/, std::vector<uint32/*areaId*/>> AreaGroupMemberContainer; + typedef std::unordered_map<uint32, std::vector<ArtifactPowerEntry const*>> ArtifactPowersContainer; + typedef std::unordered_map<uint32, std::unordered_set<uint32>> ArtifactPowerLinksContainer; + typedef std::unordered_map<std::pair<uint32, uint8>, ArtifactPowerRankEntry const*> ArtifactPowerRanksContainer; typedef std::unordered_multimap<uint32, CharSectionsEntry const*> CharSectionsContainer; typedef std::unordered_map<uint32, CharStartOutfitEntry const*> CharStartOutfitContainer; typedef ChrSpecializationEntry const* ChrSpecializationByIndexContainer[MAX_CLASSES + 1][MAX_SPECIALIZATIONS]; @@ -231,6 +239,7 @@ public: typedef std::unordered_map<uint32, HeirloomEntry const*> HeirloomItemsContainer; typedef std::vector<ItemBonusEntry const*> ItemBonusList; typedef std::unordered_map<uint32 /*bonusListId*/, ItemBonusList> ItemBonusListContainer; + typedef std::unordered_map<int16, uint32> ItemBonusListLevelDeltaContainer; typedef std::unordered_multimap<uint32 /*itemId*/, uint32 /*bonusTreeId*/> ItemToBonusTreeContainer; typedef std::unordered_map<uint32 /*itemId*/, ItemChildEquipmentEntry const*> ItemChildEquipmentContainer; typedef std::unordered_map<uint32 /*itemId | appearanceMod << 24*/, ItemModifiedAppearanceEntry const*> ItemModifiedAppearanceByItemContainer; @@ -267,6 +276,9 @@ public: time_t GetHotfixDate(uint32 entry, uint32 type) const; std::vector<uint32> GetAreasForGroup(uint32 areaGroupId) const; + std::vector<ArtifactPowerEntry const*> GetArtifactPowers(uint8 artifactId) const; + std::unordered_set<uint32> const* GetArtifactPowerLinks(uint32 artifactPowerId) const; + ArtifactPowerRankEntry const* GetArtifactPowerRank(uint32 artifactPowerId, uint8 rank) const; static char const* GetBroadcastTextValue(BroadcastTextEntry const* broadcastText, LocaleConstant locale = DEFAULT_LOCALE, uint8 gender = GENDER_MALE, bool forceGender = false); CharSectionsEntry const* GetCharSectionEntry(uint8 race, CharSectionType genType, uint8 gender, uint8 type, uint8 color) const; CharStartOutfitEntry const* GetCharStartOutfitEntry(uint8 race, uint8 class_, uint8 gender) const; @@ -280,6 +292,7 @@ public: std::vector<uint32> const* GetFactionTeamList(uint32 faction) const; HeirloomEntry const* GetHeirloomByItemId(uint32 itemId) const; ItemBonusList const* GetItemBonusList(uint32 bonusListId) const; + uint32 GetItemBonusListForItemLevelDelta(int16 delta) const; std::set<uint32> GetItemBonusTree(uint32 itemId, uint32 itemBonusTreeMod) const; ItemChildEquipmentEntry const* GetItemChildEquipment(uint32 itemId) const; bool HasItemCurrencyCost(uint32 itemId) const { return _itemsWithCurrencyCost.count(itemId) > 0; } @@ -324,6 +337,9 @@ private: HotfixData _hotfixData; AreaGroupMemberContainer _areaGroupMembers; + ArtifactPowersContainer _artifactPowers; + ArtifactPowerLinksContainer _artifactPowerLinks; + ArtifactPowerRanksContainer _artifactPowerRanks; CharSectionsContainer _charSections; CharStartOutfitContainer _charStartOutfits; uint32 _powersByClass[MAX_CLASSES][MAX_POWERS]; @@ -333,6 +349,7 @@ private: FactionTeamContainer _factionTeams; HeirloomItemsContainer _heirlooms; ItemBonusListContainer _itemBonusLists; + ItemBonusListLevelDeltaContainer _itemLevelDeltaToBonusListContainer; ItemBonusTreeContainer _itemBonusTrees; ItemChildEquipmentContainer _itemChildEquipment; std::unordered_set<uint32> _itemsWithCurrencyCost; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 32868b632c3..627b2f6b916 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -119,6 +119,91 @@ struct ArmorLocationEntry float Modifier[5]; }; +struct ArtifactEntry +{ + uint32 ID; + LocalizedString* Name; + uint32 BarConnectedColor; + uint32 BarDisconnectedColor; + uint32 TitleColor; + uint16 ClassUiTextureKitID; + uint16 SpecID; + uint8 ArtifactCategoryID; + uint8 Flags; +}; + +struct ArtifactAppearanceEntry +{ + LocalizedString* Name; + uint32 SwatchColor; + float ModelDesaturation; + float ModelAlpha; + uint32 ShapeshiftDisplayID; + uint16 ArtifactAppearanceSetID; + uint16 PlayerConditionID; + uint16 Unknown; + uint8 DisplayIndex; + uint8 AppearanceModID; + uint8 Flags; + uint8 ModifiesShapeshiftFormDisplay; + uint32 ID; + uint32 ItemAppearanceID; + uint32 AltItemAppearanceID; +}; + +struct ArtifactAppearanceSetEntry +{ + LocalizedString* Name; + LocalizedString* Name2; + uint16 UiCameraID; + uint16 AltHandUICameraID; + uint8 ArtifactID; + uint8 DisplayIndex; + uint8 AttachmentPoint; + uint8 Flags; + uint32 ID; +}; + +struct ArtifactCategoryEntry +{ + uint32 ID; + uint16 ArtifactKnowledgeCurrencyID; + uint16 ArtifactKnowledgeMultiplierCurveID; +}; + +struct ArtifactPowerEntry +{ + DBCPosition2D Pos; + uint8 ArtifactID; + uint8 Flags; + uint8 MaxRank; + uint32 ID; + uint32 RelicType; +}; + +struct ArtifactPowerLinkEntry +{ + uint32 ID; + uint16 FromArtifactPowerID; + uint16 ToArtifactPowerID; +}; + +struct ArtifactPowerRankEntry +{ + uint32 ID; + uint32 SpellID; + float Value; + uint16 ArtifactPowerID; + uint16 Unknown; + uint8 Rank; +}; + +struct ArtifactQuestXPEntry +{ + uint32 ID; + uint32 Exp[10]; +}; + struct AuctionHouseEntry { uint32 ID; @@ -1180,6 +1265,12 @@ struct ItemBonusEntry uint8 Index; }; +struct ItemBonusListLevelDeltaEntry +{ + int16 Delta; + uint32 ID; +}; + struct ItemBonusTreeNodeEntry { uint32 ID; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 94e421b4445..0d23ee12084 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -138,6 +138,15 @@ enum AreaFlags AREA_FLAG_UNK9 = 0x40000000 }; +enum ArtifactPowerFlag : uint8 +{ + ARTIFACT_POWER_FLAG_GOLD = 0x01, + ARTIFACT_POWER_FLAG_FIRST = 0x02, + ARTIFACT_POWER_FLAG_FINAL = 0x04, + ARTIFACT_POWER_FLAG_SCALES_WITH_NUM_POWERS = 0x08, + ARTIFACT_POWER_FLAG_DONT_COUNT_FIRST_BONUS_RANK = 0x10, +}; + enum ChrSpecializationFlag { CHR_SPECIALIZATION_FLAG_CASTER = 0x01, @@ -456,6 +465,11 @@ enum CharSectionType SECTION_TYPE_CUSTOM_DISPLAY_3 = 15 }; +enum Curves +{ + CURVE_ID_ARTIFACT_RELIC_ITEM_LEVEL_BONUS = 1718 +}; + enum Difficulty : uint8 { DIFFICULTY_NONE = 0, @@ -566,15 +580,19 @@ enum GlyphSlotType enum ItemEnchantmentType { - ITEM_ENCHANTMENT_TYPE_NONE = 0, - ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL = 1, - ITEM_ENCHANTMENT_TYPE_DAMAGE = 2, - ITEM_ENCHANTMENT_TYPE_EQUIP_SPELL = 3, - ITEM_ENCHANTMENT_TYPE_RESISTANCE = 4, - ITEM_ENCHANTMENT_TYPE_STAT = 5, - ITEM_ENCHANTMENT_TYPE_TOTEM = 6, - ITEM_ENCHANTMENT_TYPE_USE_SPELL = 7, - ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET = 8 + ITEM_ENCHANTMENT_TYPE_NONE = 0, + ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL = 1, + ITEM_ENCHANTMENT_TYPE_DAMAGE = 2, + ITEM_ENCHANTMENT_TYPE_EQUIP_SPELL = 3, + ITEM_ENCHANTMENT_TYPE_RESISTANCE = 4, + ITEM_ENCHANTMENT_TYPE_STAT = 5, + ITEM_ENCHANTMENT_TYPE_TOTEM = 6, + ITEM_ENCHANTMENT_TYPE_USE_SPELL = 7, + ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET = 8, + ITEM_ENCHANTMENT_TYPE_ARTIFACT_POWER_BONUS_RANK_BY_TYPE = 9, + ITEM_ENCHANTMENT_TYPE_ARTIFACT_POWER_BONUS_RANK_BY_ID = 10, + ITEM_ENCHANTMENT_TYPE_BONUS_LIST_ID = 11, + ITEM_ENCHANTMENT_TYPE_BONUS_LIST_CURVE = 12 }; enum ItemExtendedCostFlags @@ -853,6 +871,7 @@ enum CurrencyTypes CURRENCY_TYPE_CONQUEST_META_ARENA = 483, CURRENCY_TYPE_CONQUEST_META_RBG = 484, CURRENCY_TYPE_APEXIS_CRYSTALS = 823, + CURRENCY_TYPE_ARTIFACT_KNOWLEDGE = 1171, }; #endif diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp index 709441745a2..4a38b703b7a 100644 --- a/src/server/game/DataStores/GameTables.cpp +++ b/src/server/game/DataStores/GameTables.cpp @@ -23,6 +23,7 @@ #include <fstream> GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable; +GameTable<GtArtifactLevelXPEntry> sArtifactLevelXPGameTable; GameTable<GtBarberShopCostBaseEntry> sBarberShopCostBaseGameTable; GameTable<GtBaseMPEntry> sBaseMPGameTable; GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable; @@ -107,6 +108,7 @@ void LoadGameTables(std::string const& dataPath) #define LOAD_GT(store, file) gameTableCount += LoadGameTable(bad_gt_files, store, gtPath / file); ++expectedGameTableCount; LOAD_GT(sArmorMitigationByLvlGameTable, "ArmorMitigationByLvl.txt"); + LOAD_GT(sArtifactLevelXPGameTable, "artifactLevelXP.txt"); LOAD_GT(sBarberShopCostBaseGameTable, "BarberShopCostBase.txt"); LOAD_GT(sBaseMPGameTable, "BaseMp.txt"); LOAD_GT(sCombatRatingsGameTable, "CombatRatings.txt"); diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h index c9b9547847c..4b9660621d2 100644 --- a/src/server/game/DataStores/GameTables.h +++ b/src/server/game/DataStores/GameTables.h @@ -26,6 +26,11 @@ struct GtArmorMitigationByLvlEntry float Mitigation = 0.0f; }; +struct GtArtifactLevelXPEntry +{ + float XP = 0.0f; +}; + struct GtBarberShopCostBaseEntry { float Cost = 0.0f; @@ -182,6 +187,7 @@ private: }; TC_GAME_API extern GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable; +TC_GAME_API extern GameTable<GtArtifactLevelXPEntry> sArtifactLevelXPGameTable; TC_GAME_API extern GameTable<GtBarberShopCostBaseEntry> sBarberShopCostBaseGameTable; TC_GAME_API extern GameTable<GtBaseMPEntry> sBaseMPGameTable; TC_GAME_API extern GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable; |
