mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-23 13:46:24 +00:00
feat(Core/Entities): Enabled loading basic stats for players, pets an… (#12394)
* feat(Core/Entities): Enabled loading basic stats for players, pets and items from database as 32 bit integers. Closes #12386
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
--
|
||||
ALTER TABLE `pet_levelstats` CHANGE `hp` `hp` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `mana` `mana` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `str` `str` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `agi` `agi` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `sta` `sta` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `inte` `inte` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `spi` `spi` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `min_dmg` `min_dmg` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `max_dmg` `max_dmg` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE `player_classlevelstats` CHANGE `basehp` `basehp` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basemana` `basemana` INT UNSIGNED DEFAULT 1 NOT NULL;
|
||||
|
||||
ALTER TABLE `player_levelstats` CHANGE `str` `str` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `agi` `agi` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `sta` `sta` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `inte` `inte` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `spi` `spi` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE `creature_classlevelstats` CHANGE `basehp0` `basehp0` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basehp1` `basehp1` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basehp2` `basehp2` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basemana` `basemana` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `basearmor` `basearmor` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `attackpower` `attackpower` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `rangedattackpower` `rangedattackpower` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE `item_template` CHANGE `stat_value1` `stat_value1` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value2` `stat_value2` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value3` `stat_value3` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value4` `stat_value4` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value5` `stat_value5` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value6` `stat_value6` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value7` `stat_value7` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value8` `stat_value8` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value9` `stat_value9` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value10` `stat_value10` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `armor` `armor` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `holy_res` `holy_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `fire_res` `fire_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `nature_res` `nature_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `frost_res` `frost_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `shadow_res` `shadow_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `arcane_res` `arcane_res` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
@@ -289,8 +289,8 @@ typedef std::list<PlayerCreateInfoItem> PlayerCreateInfoItems;
|
||||
struct PlayerClassLevelInfo
|
||||
{
|
||||
PlayerClassLevelInfo() = default;
|
||||
uint16 basehealth{0};
|
||||
uint16 basemana{0};
|
||||
uint32 basehealth{0};
|
||||
uint32 basemana{0};
|
||||
};
|
||||
|
||||
struct PlayerClassInfo
|
||||
@@ -302,9 +302,12 @@ struct PlayerClassInfo
|
||||
|
||||
struct PlayerLevelInfo
|
||||
{
|
||||
PlayerLevelInfo() { for (unsigned char & stat : stats) stat = 0; }
|
||||
PlayerLevelInfo()
|
||||
{
|
||||
stats.fill(0);
|
||||
}
|
||||
|
||||
uint8 stats[MAX_STATS];
|
||||
std::array<uint32, MAX_STATS> stats = { };
|
||||
};
|
||||
|
||||
typedef std::list<uint32> PlayerCreateInfoSpells;
|
||||
@@ -2729,7 +2732,7 @@ public:
|
||||
ActionButtonList m_actionButtons;
|
||||
|
||||
float m_auraBaseMod[BASEMOD_END][MOD_END];
|
||||
int16 m_baseRatingValue[MAX_COMBAT_RATING];
|
||||
int32 m_baseRatingValue[MAX_COMBAT_RATING];
|
||||
uint32 m_baseSpellPower;
|
||||
uint32 m_baseFeralAP;
|
||||
uint32 m_baseManaRegen;
|
||||
|
||||
@@ -2678,7 +2678,7 @@ void ObjectMgr::LoadItemTemplates()
|
||||
for (uint8 i = 0; i < itemTemplate.StatsCount; ++i)
|
||||
{
|
||||
itemTemplate.ItemStat[i].ItemStatType = uint32(fields[28 + i * 2].Get<uint8>());
|
||||
itemTemplate.ItemStat[i].ItemStatValue = int32(fields[29 + i * 2].Get<int16>());
|
||||
itemTemplate.ItemStat[i].ItemStatValue = fields[29 + i * 2].Get<int32>();
|
||||
}
|
||||
|
||||
itemTemplate.ScalingStatDistribution = uint32(fields[48].Get<uint16>());
|
||||
@@ -2691,13 +2691,13 @@ void ObjectMgr::LoadItemTemplates()
|
||||
itemTemplate.Damage[i].DamageType = uint32(fields[52 + i * 3].Get<uint8>());
|
||||
}
|
||||
|
||||
itemTemplate.Armor = uint32(fields[56].Get<uint16>());
|
||||
itemTemplate.HolyRes = uint32(fields[57].Get<uint8>());
|
||||
itemTemplate.FireRes = uint32(fields[58].Get<uint8>());
|
||||
itemTemplate.NatureRes = uint32(fields[59].Get<uint8>());
|
||||
itemTemplate.FrostRes = uint32(fields[60].Get<uint8>());
|
||||
itemTemplate.ShadowRes = uint32(fields[61].Get<uint8>());
|
||||
itemTemplate.ArcaneRes = uint32(fields[62].Get<uint8>());
|
||||
itemTemplate.Armor = fields[56].Get<uint32>();
|
||||
itemTemplate.HolyRes = fields[57].Get<uint32>();
|
||||
itemTemplate.FireRes = fields[58].Get<uint32>();
|
||||
itemTemplate.NatureRes = fields[59].Get<uint32>();
|
||||
itemTemplate.FrostRes = fields[60].Get<uint32>();
|
||||
itemTemplate.ShadowRes = fields[61].Get<uint32>();
|
||||
itemTemplate.ArcaneRes = fields[62].Get<uint32>();
|
||||
itemTemplate.Delay = uint32(fields[63].Get<uint16>());
|
||||
itemTemplate.AmmoType = uint32(fields[64].Get<uint8>());
|
||||
itemTemplate.RangedModRange = fields[65].Get<float>();
|
||||
@@ -3448,14 +3448,14 @@ void ObjectMgr::LoadPetLevelInfo()
|
||||
// data for level 1 stored in [0] array element, ...
|
||||
PetLevelInfo* pLevelInfo = &pInfoMapEntry[current_level - 1];
|
||||
|
||||
pLevelInfo->health = fields[2].Get<uint16>();
|
||||
pLevelInfo->mana = fields[3].Get<uint16>();
|
||||
pLevelInfo->health = fields[2].Get<uint32>();
|
||||
pLevelInfo->mana = fields[3].Get<uint32>();
|
||||
pLevelInfo->armor = fields[9].Get<uint32>();
|
||||
pLevelInfo->min_dmg = fields[10].Get<uint16>();
|
||||
pLevelInfo->max_dmg = fields[11].Get<uint16>();
|
||||
for (int i = 0; i < MAX_STATS; i++)
|
||||
pLevelInfo->min_dmg = fields[10].Get<uint32>();
|
||||
pLevelInfo->max_dmg = fields[11].Get<uint32>();
|
||||
for (uint8 i = 0; i < MAX_STATS; i++)
|
||||
{
|
||||
pLevelInfo->stats[i] = fields[i + 4].Get<uint16>();
|
||||
pLevelInfo->stats[i] = fields[i + 4].Get<uint32>();
|
||||
}
|
||||
|
||||
++count;
|
||||
@@ -3973,8 +3973,8 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
|
||||
PlayerClassLevelInfo& levelInfo = info->levelInfo[current_level - 1];
|
||||
|
||||
levelInfo.basehealth = fields[2].Get<uint16>();
|
||||
levelInfo.basemana = fields[3].Get<uint16>();
|
||||
levelInfo.basehealth = fields[2].Get<uint32>();
|
||||
levelInfo.basemana = fields[3].Get<uint32>();
|
||||
|
||||
++count;
|
||||
} while (result->NextRow());
|
||||
@@ -4064,8 +4064,8 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
info->levelInfo = new PlayerLevelInfo[sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)];
|
||||
|
||||
PlayerLevelInfo& levelInfo = info->levelInfo[current_level - 1];
|
||||
for (int i = 0; i < MAX_STATS; i++)
|
||||
levelInfo.stats[i] = fields[i + 3].Get<uint8>();
|
||||
for (uint8 i = 0; i < MAX_STATS; i++)
|
||||
levelInfo.stats[i] = fields[i + 3].Get<uint32>();
|
||||
}
|
||||
|
||||
++count;
|
||||
@@ -9359,7 +9359,7 @@ void ObjectMgr::LoadCreatureClassLevelStats()
|
||||
|
||||
for (uint8 i = 0; i < MAX_EXPANSIONS; ++i)
|
||||
{
|
||||
stats.BaseHealth[i] = fields[2 + i].Get<uint16>();
|
||||
stats.BaseHealth[i] = fields[2 + i].Get<uint32>();
|
||||
|
||||
if (stats.BaseHealth[i] == 0)
|
||||
{
|
||||
@@ -9389,11 +9389,11 @@ void ObjectMgr::LoadCreatureClassLevelStats()
|
||||
}
|
||||
}
|
||||
|
||||
stats.BaseMana = fields[5].Get<uint16>();
|
||||
stats.BaseArmor = fields[6].Get<uint16>();
|
||||
stats.BaseMana = fields[5].Get<uint32>();
|
||||
stats.BaseArmor = fields[6].Get<uint32>();
|
||||
|
||||
stats.AttackPower = fields[7].Get<uint16>();
|
||||
stats.RangedAttackPower = fields[8].Get<uint16>();
|
||||
stats.AttackPower = fields[7].Get<uint32>();
|
||||
stats.RangedAttackPower = fields[8].Get<uint32>();
|
||||
|
||||
_creatureBaseStatsStore[MAKE_PAIR16(Level, Class)] = stats;
|
||||
|
||||
|
||||
@@ -520,14 +520,17 @@ typedef std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator
|
||||
|
||||
struct PetLevelInfo
|
||||
{
|
||||
PetLevelInfo() { for (unsigned short & stat : stats) stat = 0; }
|
||||
PetLevelInfo()
|
||||
{
|
||||
stats.fill(0);
|
||||
}
|
||||
|
||||
uint16 stats[MAX_STATS];
|
||||
uint16 health{0};
|
||||
uint16 mana{0};
|
||||
std::array<uint32, MAX_STATS> stats = { };
|
||||
uint32 health{0};
|
||||
uint32 mana{0};
|
||||
uint32 armor{0};
|
||||
uint16 min_dmg{0};
|
||||
uint16 max_dmg{0};
|
||||
uint32 min_dmg{0};
|
||||
uint32 max_dmg{0};
|
||||
};
|
||||
|
||||
struct MailLevelReward
|
||||
|
||||
Reference in New Issue
Block a user