Core/DataStores: load ScalingStatDistribution.db2 and ScalingStatValues.db2

This commit is contained in:
Ovahlord
2025-04-11 20:38:54 +02:00
parent 48c8c93ec4
commit e3773a1fb6
5 changed files with 306 additions and 1 deletions

View File

@@ -0,0 +1,128 @@
--
-- Table structure for table `scaling_stat_distribution`
--
DROP TABLE IF EXISTS `scaling_stat_distribution`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `scaling_stat_distribution` (
`ID` int unsigned NOT NULL DEFAULT '0',
`StatID1` int NOT NULL DEFAULT '0',
`StatID2` int NOT NULL DEFAULT '0',
`StatID3` int NOT NULL DEFAULT '0',
`StatID4` int NOT NULL DEFAULT '0',
`StatID5` int NOT NULL DEFAULT '0',
`StatID6` int NOT NULL DEFAULT '0',
`StatID7` int NOT NULL DEFAULT '0',
`StatID8` int NOT NULL DEFAULT '0',
`StatID9` int NOT NULL DEFAULT '0',
`StatID10` int NOT NULL DEFAULT '0',
`Bonus1` int NOT NULL DEFAULT '0',
`Bonus2` int NOT NULL DEFAULT '0',
`Bonus3` int NOT NULL DEFAULT '0',
`Bonus4` int NOT NULL DEFAULT '0',
`Bonus5` int NOT NULL DEFAULT '0',
`Bonus6` int NOT NULL DEFAULT '0',
`Bonus7` int NOT NULL DEFAULT '0',
`Bonus8` int NOT NULL DEFAULT '0',
`Bonus9` int NOT NULL DEFAULT '0',
`Bonus10` int NOT NULL DEFAULT '0',
`Maxlevel` int NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `scaling_stat_distribution`
--
LOCK TABLES `scaling_stat_distribution` WRITE;
/*!40000 ALTER TABLE `scaling_stat_distribution` DISABLE KEYS */;
/*!40000 ALTER TABLE `scaling_stat_distribution` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `scaling_stat_values`
--
DROP TABLE IF EXISTS `scaling_stat_values`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `scaling_stat_values` (
`ID` int unsigned NOT NULL DEFAULT '0',
`Charlevel` int NOT NULL DEFAULT '0',
`WeaponDPS1H` int NOT NULL DEFAULT '0',
`WeaponDPS2H` int NOT NULL DEFAULT '0',
`SpellcasterDPS1H` int NOT NULL DEFAULT '0',
`SpellcasterDPS2H` int NOT NULL DEFAULT '0',
`RangedDPS` int NOT NULL DEFAULT '0',
`WandDPS` int NOT NULL DEFAULT '0',
`SpellPower` int NOT NULL DEFAULT '0',
`BudgetPrimary` int NOT NULL DEFAULT '0',
`BudgetSecondary` int NOT NULL DEFAULT '0',
`BudgetTertiary` int NOT NULL DEFAULT '0',
`BudgetSub` int NOT NULL DEFAULT '0',
`BudgetTrivial` int NOT NULL DEFAULT '0',
`ClothCloakArmor` int NOT NULL DEFAULT '0',
`Unk440_0` int NOT NULL DEFAULT '0',
`Unk440_1` int NOT NULL DEFAULT '0',
`Unk440_2` int NOT NULL DEFAULT '0',
`Unk440_3` int NOT NULL DEFAULT '0',
`Unk440_4` int NOT NULL DEFAULT '0',
`Unk440_5` int NOT NULL DEFAULT '0',
`Unk440_6` int NOT NULL DEFAULT '0',
`Unk440_7` int NOT NULL DEFAULT '0',
`Unk440_8` int NOT NULL DEFAULT '0',
`Unk440_9` int NOT NULL DEFAULT '0',
`Unk440_10` int NOT NULL DEFAULT '0',
`Unk440_11` int NOT NULL DEFAULT '0',
`Unk440_12` int NOT NULL DEFAULT '0',
`Unk440_13` int NOT NULL DEFAULT '0',
`Unk440_14` int NOT NULL DEFAULT '0',
`Unk440_15` int NOT NULL DEFAULT '0',
`ShoulderArmor1` int NOT NULL DEFAULT '0',
`ShoulderArmor2` int NOT NULL DEFAULT '0',
`ShoulderArmor3` int NOT NULL DEFAULT '0',
`ShoulderArmor4` int NOT NULL DEFAULT '0',
`ChestArmor1` int NOT NULL DEFAULT '0',
`ChestArmor2` int NOT NULL DEFAULT '0',
`ChestArmor3` int NOT NULL DEFAULT '0',
`ChestArmor4` int NOT NULL DEFAULT '0',
`HeadArmor1` int NOT NULL DEFAULT '0',
`HeadArmor2` int NOT NULL DEFAULT '0',
`HeadArmor3` int NOT NULL DEFAULT '0',
`HeadArmor4` int NOT NULL DEFAULT '0',
`LegsArmor1` int NOT NULL DEFAULT '0',
`LegsArmor2` int NOT NULL DEFAULT '0',
`LegsArmor3` int NOT NULL DEFAULT '0',
`LegsArmor4` int NOT NULL DEFAULT '0',
`FeetArmor1` int NOT NULL DEFAULT '0',
`FeetArmor2` int NOT NULL DEFAULT '0',
`FeetArmor3` int NOT NULL DEFAULT '0',
`FeetArmor4` int NOT NULL DEFAULT '0',
`WaistArmor1` int NOT NULL DEFAULT '0',
`WaistArmor2` int NOT NULL DEFAULT '0',
`WaistArmor3` int NOT NULL DEFAULT '0',
`WaistArmor4` int NOT NULL DEFAULT '0',
`HandsArmor1` int NOT NULL DEFAULT '0',
`HandsArmor2` int NOT NULL DEFAULT '0',
`HandsArmor3` int NOT NULL DEFAULT '0',
`HandsArmor4` int NOT NULL DEFAULT '0',
`WristsArmor1` int NOT NULL DEFAULT '0',
`WristsArmor2` int NOT NULL DEFAULT '0',
`WristsArmor3` int NOT NULL DEFAULT '0',
`WristsArmor4` int NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `scaling_stat_values`
--
LOCK TABLES `scaling_stat_values` WRITE;
/*!40000 ALTER TABLE `scaling_stat_values` DISABLE KEYS */;
/*!40000 ALTER TABLE `scaling_stat_values` ENABLE KEYS */;
UNLOCK TABLES;

View File

@@ -1099,6 +1099,22 @@ void HotfixDatabaseConnection::DoPrepareStatements()
" WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT MAX(ID) + 1 FROM reward_pack_x_item", CONNECTION_SYNCH);
// ScalingStatDistribution.db2
PrepareStatement(HOTFIX_SEL_SCALING_STAT_DISTRIBUTION, "SELECT ID, StatID1, StatID2, StatID3, StatID4, StatID5, StatID6, StatID7, StatID8, "
"StatID9, StatID10, Bonus1, Bonus2, Bonus3, Bonus4, Bonus5, Bonus6, Bonus7, Bonus8, Bonus9, Bonus10, Maxlevel FROM scaling_stat_distribution"
" WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCALING_STAT_DISTRIBUTION, "SELECT MAX(ID) + 1 FROM scaling_stat_distribution", CONNECTION_SYNCH);
// ScalingStatValues.db2
PrepareStatement(HOTFIX_SEL_SCALING_STAT_VALUES, "SELECT ID, Charlevel, WeaponDPS1H, WeaponDPS2H, SpellcasterDPS1H, SpellcasterDPS2H, RangedDPS, "
"WandDPS, SpellPower, BudgetPrimary, BudgetSecondary, BudgetTertiary, BudgetSub, BudgetTrivial, ClothCloakArmor, Unk440_0, Unk440_1, "
"Unk440_2, Unk440_3, Unk440_4, Unk440_5, Unk440_6, Unk440_7, Unk440_8, Unk440_9, Unk440_10, Unk440_11, Unk440_12, Unk440_13, Unk440_14, "
"Unk440_15, ShoulderArmor1, ShoulderArmor2, ShoulderArmor3, ShoulderArmor4, ChestArmor1, ChestArmor2, ChestArmor3, ChestArmor4, HeadArmor1, "
"HeadArmor2, HeadArmor3, HeadArmor4, LegsArmor1, LegsArmor2, LegsArmor3, LegsArmor4, FeetArmor1, FeetArmor2, FeetArmor3, FeetArmor4, "
"WaistArmor1, WaistArmor2, WaistArmor3, WaistArmor4, HandsArmor1, HandsArmor2, HandsArmor3, HandsArmor4, WristsArmor1, WristsArmor2, "
"WristsArmor3, WristsArmor4 FROM scaling_stat_values WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCALING_STAT_VALUES, "SELECT MAX(ID) + 1 FROM scaling_stat_values", CONNECTION_SYNCH);
// Scenario.db2
PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Type, Flags, UiTextureKitID FROM scenario WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENARIO, "SELECT MAX(ID) + 1 FROM scenario", CONNECTION_SYNCH);

View File

@@ -632,6 +632,12 @@ enum HotfixDatabaseStatements : uint32
HOTFIX_SEL_REWARD_PACK_X_ITEM,
HOTFIX_SEL_REWARD_PACK_X_ITEM_MAX_ID,
HOTFIX_SEL_SCALING_STAT_DISTRIBUTION,
HOTFIX_SEL_SCALING_STAT_DISTRIBUTION_MAX_ID,
HOTFIX_SEL_SCALING_STAT_VALUES,
HOTFIX_SEL_SCALING_STAT_VALUES_MAX_ID,
HOTFIX_SEL_SCENARIO,
HOTFIX_SEL_SCENARIO_MAX_ID,
HOTFIX_SEL_SCENARIO_LOCALE,

View File

@@ -23,7 +23,6 @@
#include "DB2DatabaseLoader.h"
#include "DB2Metadata.h"
#include "HotfixDatabase.h"
struct AchievementLoadInfo
{
@@ -3712,6 +3711,109 @@ struct RewardPackXItemLoadInfo
static constexpr DB2LoadInfo Instance{ Fields, 4, &RewardPackXItemMeta::Instance, HOTFIX_SEL_REWARD_PACK_X_ITEM };
};
struct ScalingStatDistributionLoadInfo
{
static constexpr DB2FieldMeta Fields[22] =
{
{ false, FT_INT, "ID" },
{ true, FT_INT, "StatID1" },
{ true, FT_INT, "StatID2" },
{ true, FT_INT, "StatID3" },
{ true, FT_INT, "StatID4" },
{ true, FT_INT, "StatID5" },
{ true, FT_INT, "StatID6" },
{ true, FT_INT, "StatID7" },
{ true, FT_INT, "StatID8" },
{ true, FT_INT, "StatID9" },
{ true, FT_INT, "StatID10" },
{ true, FT_INT, "Bonus1" },
{ true, FT_INT, "Bonus2" },
{ true, FT_INT, "Bonus3" },
{ true, FT_INT, "Bonus4" },
{ true, FT_INT, "Bonus5" },
{ true, FT_INT, "Bonus6" },
{ true, FT_INT, "Bonus7" },
{ true, FT_INT, "Bonus8" },
{ true, FT_INT, "Bonus9" },
{ true, FT_INT, "Bonus10" },
{ true, FT_INT, "Maxlevel" },
};
static constexpr DB2LoadInfo Instance{ Fields, 22, &ScalingStatDistributionMeta::Instance, HOTFIX_SEL_SCALING_STAT_DISTRIBUTION };
};
struct ScalingStatValuesLoadInfo
{
static constexpr DB2FieldMeta Fields[63] =
{
{ false, FT_INT, "ID" },
{ true, FT_INT, "Charlevel" },
{ true, FT_INT, "WeaponDPS1H" },
{ true, FT_INT, "WeaponDPS2H" },
{ true, FT_INT, "SpellcasterDPS1H" },
{ true, FT_INT, "SpellcasterDPS2H" },
{ true, FT_INT, "RangedDPS" },
{ true, FT_INT, "WandDPS" },
{ true, FT_INT, "SpellPower" },
{ true, FT_INT, "BudgetPrimary" },
{ true, FT_INT, "BudgetSecondary" },
{ true, FT_INT, "BudgetTertiary" },
{ true, FT_INT, "BudgetSub" },
{ true, FT_INT, "BudgetTrivial" },
{ true, FT_INT, "ClothCloakArmor" },
{ true, FT_INT, "Unk440_0" },
{ true, FT_INT, "Unk440_1" },
{ true, FT_INT, "Unk440_2" },
{ true, FT_INT, "Unk440_3" },
{ true, FT_INT, "Unk440_4" },
{ true, FT_INT, "Unk440_5" },
{ true, FT_INT, "Unk440_6" },
{ true, FT_INT, "Unk440_7" },
{ true, FT_INT, "Unk440_8" },
{ true, FT_INT, "Unk440_9" },
{ true, FT_INT, "Unk440_10" },
{ true, FT_INT, "Unk440_11" },
{ true, FT_INT, "Unk440_12" },
{ true, FT_INT, "Unk440_13" },
{ true, FT_INT, "Unk440_14" },
{ true, FT_INT, "Unk440_15" },
{ true, FT_INT, "ShoulderArmor1" },
{ true, FT_INT, "ShoulderArmor2" },
{ true, FT_INT, "ShoulderArmor3" },
{ true, FT_INT, "ShoulderArmor4" },
{ true, FT_INT, "ChestArmor1" },
{ true, FT_INT, "ChestArmor2" },
{ true, FT_INT, "ChestArmor3" },
{ true, FT_INT, "ChestArmor4" },
{ true, FT_INT, "HeadArmor1" },
{ true, FT_INT, "HeadArmor2" },
{ true, FT_INT, "HeadArmor3" },
{ true, FT_INT, "HeadArmor4" },
{ true, FT_INT, "LegsArmor1" },
{ true, FT_INT, "LegsArmor2" },
{ true, FT_INT, "LegsArmor3" },
{ true, FT_INT, "LegsArmor4" },
{ true, FT_INT, "FeetArmor1" },
{ true, FT_INT, "FeetArmor2" },
{ true, FT_INT, "FeetArmor3" },
{ true, FT_INT, "FeetArmor4" },
{ true, FT_INT, "WaistArmor1" },
{ true, FT_INT, "WaistArmor2" },
{ true, FT_INT, "WaistArmor3" },
{ true, FT_INT, "WaistArmor4" },
{ true, FT_INT, "HandsArmor1" },
{ true, FT_INT, "HandsArmor2" },
{ true, FT_INT, "HandsArmor3" },
{ true, FT_INT, "HandsArmor4" },
{ true, FT_INT, "WristsArmor1" },
{ true, FT_INT, "WristsArmor2" },
{ true, FT_INT, "WristsArmor3" },
{ true, FT_INT, "WristsArmor4" },
};
static constexpr DB2LoadInfo Instance{ Fields, 63, &ScalingStatValuesMeta::Instance, HOTFIX_SEL_SCALING_STAT_VALUES };
};
struct ScenarioLoadInfo
{
static constexpr DB2FieldMeta Fields[6] =

View File

@@ -2884,6 +2884,59 @@ struct RewardPackXItemEntry
uint32 RewardPackID;
};
// structure for ScalingStatDistribution.db2
struct ScalingStatDistributionEntry
{
uint32 ID;
std::array<int32, 10> StatID;
std::array<int32, 10> Bonus;
int32 Maxlevel;
};
// structure for ScalingStatValues.db2
struct ScalingStatValuesEntry
{
uint32 ID;
int32 Charlevel;
int32 WeaponDPS1H;
int32 WeaponDPS2H;
int32 SpellcasterDPS1H;
int32 SpellcasterDPS2H;
int32 RangedDPS;
int32 WandDPS;
int32 SpellPower;
int32 BudgetPrimary;
int32 BudgetSecondary;
int32 BudgetTertiary;
int32 BudgetSub;
int32 BudgetTrivial;
int32 ClothCloakArmor;
int32 Unk440_0;
int32 Unk440_1;
int32 Unk440_2;
int32 Unk440_3;
int32 Unk440_4;
int32 Unk440_5;
int32 Unk440_6;
int32 Unk440_7;
int32 Unk440_8;
int32 Unk440_9;
int32 Unk440_10;
int32 Unk440_11;
int32 Unk440_12;
int32 Unk440_13;
int32 Unk440_14;
int32 Unk440_15;
std::array<int32, 4> ShoulderArmor;
std::array<int32, 4> ChestArmor;
std::array<int32, 4> HeadArmor;
std::array<int32, 4> LegsArmor;
std::array<int32, 4> FeetArmor;
std::array<int32, 4> WaistArmor;
std::array<int32, 4> HandsArmor;
std::array<int32, 4> WristsArmor;
};
// structure for Scenario.db2
struct ScenarioEntry
{