aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/hotfixes/master/2021_04_09_00_hotfixes.sql24
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp11
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h20
-rw-r--r--src/server/game/DataStores/DB2Metadata.h105
-rw-r--r--src/server/game/DataStores/DB2Structure.h8
-rw-r--r--src/server/game/Entities/Item/Item.cpp8
-rw-r--r--src/server/game/Entities/Item/Item.h2
-rw-r--r--src/server/game/Entities/Item/ItemEnchantmentMgr.cpp8
-rw-r--r--src/server/game/Entities/Item/ItemEnchantmentMgr.h2
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Spells/SpellInfo.cpp2
11 files changed, 161 insertions, 31 deletions
diff --git a/sql/updates/hotfixes/master/2021_04_09_00_hotfixes.sql b/sql/updates/hotfixes/master/2021_04_09_00_hotfixes.sql
new file mode 100644
index 00000000000..d57197330de
--- /dev/null
+++ b/sql/updates/hotfixes/master/2021_04_09_00_hotfixes.sql
@@ -0,0 +1,24 @@
+ALTER TABLE `chr_customization_element` ADD `ChrCustItemGeoModifyID` int(11) NOT NULL DEFAULT '0' AFTER `ChrCustomizationDisplayInfoID`;
+
+ALTER TABLE `item_bonus_tree_node`
+ ADD `ItemBonusListGroupID` int(11) NOT NULL DEFAULT '0' AFTER `ChildItemLevelSelectorID`,
+ ADD `ParentItemBonusTreeNodeID` int(11) NOT NULL DEFAULT '0' AFTER `ItemBonusListGroupID`;
+
+ALTER TABLE `rand_prop_points`
+ ADD `DamageReplaceStatF` float NOT NULL DEFAULT '0' AFTER `ID`,
+ ADD `DamageSecondaryF` float NOT NULL DEFAULT '0' AFTER `DamageReplaceStatF`,
+ ADD `EpicF1` float NOT NULL DEFAULT '0' AFTER `DamageSecondary`,
+ ADD `EpicF2` float NOT NULL DEFAULT '0' AFTER `EpicF1`,
+ ADD `EpicF3` float NOT NULL DEFAULT '0' AFTER `EpicF2`,
+ ADD `EpicF4` float NOT NULL DEFAULT '0' AFTER `EpicF3`,
+ ADD `EpicF5` float NOT NULL DEFAULT '0' AFTER `EpicF4`,
+ ADD `SuperiorF1` float NOT NULL DEFAULT '0' AFTER `Epic5`,
+ ADD `SuperiorF2` float NOT NULL DEFAULT '0' AFTER `SuperiorF1`,
+ ADD `SuperiorF3` float NOT NULL DEFAULT '0' AFTER `SuperiorF2`,
+ ADD `SuperiorF4` float NOT NULL DEFAULT '0' AFTER `SuperiorF3`,
+ ADD `SuperiorF5` float NOT NULL DEFAULT '0' AFTER `SuperiorF4`,
+ ADD `GoodF1` float NOT NULL DEFAULT '0' AFTER `SuperiorF5`,
+ ADD `GoodF2` float NOT NULL DEFAULT '0' AFTER `GoodF1`,
+ ADD `GoodF3` float NOT NULL DEFAULT '0' AFTER `GoodF2`,
+ ADD `GoodF4` float NOT NULL DEFAULT '0' AFTER `GoodF3`,
+ ADD `GoodF5` float NOT NULL DEFAULT '0' AFTER `GoodF4`;
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index 157ca5319b1..d88740249e3 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -336,7 +336,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ChrCustomizationElement.db2
PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT, "SELECT ID, ChrCustomizationChoiceID, RelatedChrCustomizationChoiceID, "
"ChrCustomizationGeosetID, ChrCustomizationSkinnedModelID, ChrCustomizationMaterialID, ChrCustomizationBoneSetID, "
- "ChrCustomizationCondModelID, ChrCustomizationDisplayInfoID FROM chr_customization_element WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "ChrCustomizationCondModelID, ChrCustomizationDisplayInfoID, ChrCustItemGeoModifyID FROM chr_customization_element"
+ " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT, "SELECT MAX(ID) + 1 FROM chr_customization_element", CONNECTION_SYNCH);
// ChrCustomizationOption.db2
@@ -751,7 +752,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ItemBonusTreeNode.db2
PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ItemContext, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, "
- "ParentItemBonusTreeID FROM item_bonus_tree_node WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "ItemBonusListGroupID, ParentItemBonusTreeNodeID, ParentItemBonusTreeID FROM item_bonus_tree_node WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT MAX(ID) + 1 FROM item_bonus_tree_node", CONNECTION_SYNCH);
// ItemChildEquipment.db2
@@ -1129,8 +1130,10 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_XP, "SELECT MAX(ID) + 1 FROM quest_xp", CONNECTION_SYNCH);
// RandPropPoints.db2
- PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, DamageReplaceStat, DamageSecondary, Epic1, Epic2, Epic3, Epic4, Epic5, Superior1, "
- "Superior2, Superior3, Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, DamageReplaceStatF, DamageSecondaryF, DamageReplaceStat, DamageSecondary, EpicF1, "
+ "EpicF2, EpicF3, EpicF4, EpicF5, SuperiorF1, SuperiorF2, SuperiorF3, SuperiorF4, SuperiorF5, GoodF1, GoodF2, GoodF3, GoodF4, GoodF5, Epic1, "
+ "Epic2, Epic3, Epic4, Epic5, Superior1, Superior2, Superior3, Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points"
+ " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT MAX(ID) + 1 FROM rand_prop_points", CONNECTION_SYNCH);
// RewardPack.db2
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index cf7a7bd6d1f..8db5938725f 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -1093,6 +1093,7 @@ struct ChrCustomizationElementLoadInfo
{ true, FT_INT, "ChrCustomizationBoneSetID" },
{ true, FT_INT, "ChrCustomizationCondModelID" },
{ true, FT_INT, "ChrCustomizationDisplayInfoID" },
+ { true, FT_INT, "ChrCustItemGeoModifyID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ChrCustomizationElementMeta::Instance(), HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT);
return &loadInfo;
@@ -2743,6 +2744,8 @@ struct ItemBonusTreeNodeLoadInfo
{ false, FT_SHORT, "ChildItemBonusTreeID" },
{ false, FT_SHORT, "ChildItemBonusListID" },
{ false, FT_SHORT, "ChildItemLevelSelectorID" },
+ { true, FT_INT, "ItemBonusListGroupID" },
+ { true, FT_INT, "ParentItemBonusTreeNodeID" },
{ false, FT_INT, "ParentItemBonusTreeID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemBonusTreeNodeMeta::Instance(), HOTFIX_SEL_ITEM_BONUS_TREE_NODE);
@@ -4360,8 +4363,25 @@ struct RandPropPointsLoadInfo
static DB2FieldMeta const fields[] =
{
{ false, FT_INT, "ID" },
+ { false, FT_FLOAT, "DamageReplaceStatF" },
+ { false, FT_FLOAT, "DamageSecondaryF" },
{ true, FT_INT, "DamageReplaceStat" },
{ true, FT_INT, "DamageSecondary" },
+ { false, FT_FLOAT, "EpicF1" },
+ { false, FT_FLOAT, "EpicF2" },
+ { false, FT_FLOAT, "EpicF3" },
+ { false, FT_FLOAT, "EpicF4" },
+ { false, FT_FLOAT, "EpicF5" },
+ { false, FT_FLOAT, "SuperiorF1" },
+ { false, FT_FLOAT, "SuperiorF2" },
+ { false, FT_FLOAT, "SuperiorF3" },
+ { false, FT_FLOAT, "SuperiorF4" },
+ { false, FT_FLOAT, "SuperiorF5" },
+ { false, FT_FLOAT, "GoodF1" },
+ { false, FT_FLOAT, "GoodF2" },
+ { false, FT_FLOAT, "GoodF3" },
+ { false, FT_FLOAT, "GoodF4" },
+ { false, FT_FLOAT, "GoodF5" },
{ false, FT_INT, "Epic1" },
{ false, FT_INT, "Epic2" },
{ false, FT_INT, "Epic3" },
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index 555784e56d0..5812d998246 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -2344,6 +2344,21 @@ struct ChrCustClientChoiceConversionMeta
}
};
+struct ChrCustItemGeoModifyMeta
+{
+ static DB2Meta const* Instance()
+ {
+ static DB2MetaField const fields[3] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+ static DB2Meta instance(3952714, -1, 3, 3, 0xFA0A7F36, fields, -1);
+ return &instance;
+ }
+};
+
struct ChrCustomizationMeta
{
static DB2Meta const* Instance()
@@ -2474,7 +2489,7 @@ struct ChrCustomizationElementMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[9] =
+ static DB2MetaField const fields[10] =
{
{ FT_INT, 1, false },
{ FT_INT, 1, true },
@@ -2485,8 +2500,9 @@ struct ChrCustomizationElementMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static DB2Meta instance(3512765, 0, 9, 9, 0x29E7E6E9, fields, -1);
+ static DB2Meta instance(3512765, 0, 10, 10, 0x23DA3D78, fields, -1);
return &instance;
}
};
@@ -5751,13 +5767,14 @@ struct GossipXUIDisplayInfoMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[3] =
+ static DB2MetaField const fields[4] =
{
+ { FT_STRING, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
};
- static DB2Meta instance(3622253, 0, 3, 3, 0xC9A649B0, fields, -1);
+ static DB2Meta instance(3622253, 1, 4, 4, 0xDD005226, fields, -1);
return &instance;
}
};
@@ -6405,7 +6422,7 @@ struct ItemBonusListGroupEntryMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[6] =
+ static DB2MetaField const fields[7] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -6413,8 +6430,9 @@ struct ItemBonusListGroupEntryMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static DB2Meta instance(3025306, -1, 6, 6, 0x9FB5C578, fields, 0);
+ static DB2Meta instance(3025306, -1, 7, 7, 0x63D048BD, fields, 0);
return &instance;
}
};
@@ -6479,15 +6497,17 @@ struct ItemBonusTreeNodeMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[5] =
+ static DB2MetaField const fields[7] =
{
{ FT_BYTE, 1, false },
{ FT_SHORT, 1, false },
{ FT_SHORT, 1, false },
{ FT_SHORT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
{ FT_SHORT, 1, false },
};
- static DB2Meta instance(987134, -1, 5, 4, 0x5F0770E4, fields, 4);
+ static DB2Meta instance(987134, -1, 7, 6, 0xC2E0B160, fields, 6);
return &instance;
}
};
@@ -7236,11 +7256,12 @@ struct JournalEncounterMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[11] =
+ static DB2MetaField const fields[12] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
{ FT_FLOAT, 2, true },
+ { FT_INT, 1, false },
{ FT_SHORT, 1, false },
{ FT_SHORT, 1, false },
{ FT_INT, 1, false },
@@ -7250,7 +7271,7 @@ struct JournalEncounterMeta
{ FT_BYTE, 1, false },
{ FT_BYTE, 1, true },
};
- static DB2Meta instance(1240336, -1, 11, 11, 0x7FA77B6F, fields, -1);
+ static DB2Meta instance(1240336, 3, 12, 12, 0x7D6A99D0, fields, -1);
return &instance;
}
};
@@ -8594,6 +8615,23 @@ struct MountXDisplayMeta
}
};
+struct MountXSpellVisualKitPickerMeta
+{
+ static DB2Meta const* Instance()
+ {
+ static DB2MetaField const fields[5] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+ static DB2Meta instance(3989477, -1, 5, 4, 0x61187DC1, fields, 4);
+ return &instance;
+ }
+};
+
struct MovieMeta
{
static DB2Meta const* Instance()
@@ -9974,15 +10012,20 @@ struct RandPropPointsMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[5] =
+ static DB2MetaField const fields[10] =
{
+ { FT_FLOAT, 1, true },
+ { FT_FLOAT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_FLOAT, 5, true },
+ { FT_FLOAT, 5, true },
+ { FT_FLOAT, 5, true },
{ FT_INT, 5, false },
{ FT_INT, 5, false },
{ FT_INT, 5, false },
};
- static DB2Meta instance(1310245, -1, 5, 5, 0xC89BA379, fields, -1);
+ static DB2Meta instance(1310245, -1, 10, 10, 0x0E4AE36D, fields, -1);
return &instance;
}
};
@@ -10660,14 +10703,15 @@ struct SoulbindConduitMeta
{
static DB2Meta const* Instance()
{
- static DB2MetaField const fields[4] =
+ static DB2MetaField const fields[5] =
{
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static DB2Meta instance(3594380, 0, 4, 4, 0x5F7D8851, fields, -1);
+ static DB2Meta instance(3594380, 0, 5, 5, 0x6F7E0B02, fields, -1);
return &instance;
}
};
@@ -12479,6 +12523,37 @@ struct SpellVisualKitModelAttachMeta
}
};
+struct SpellVisualKitPickerMeta
+{
+ static DB2Meta const* Instance()
+ {
+ static DB2MetaField const fields[3] =
+ {
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+ static DB2Meta instance(3989478, 0, 3, 3, 0xC1AB1620, fields, -1);
+ return &instance;
+ }
+};
+
+struct SpellVisualKitPickerEntryMeta
+{
+ static DB2Meta const* Instance()
+ {
+ static DB2MetaField const fields[4] =
+ {
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_FLOAT, 1, true },
+ { FT_INT, 1, true },
+ };
+ static DB2Meta instance(3989479, 0, 4, 3, 0x94FA5841, fields, 3);
+ return &instance;
+ }
+};
+
struct SpellVisualMissileMeta
{
static DB2Meta const* Instance()
@@ -13407,7 +13482,7 @@ struct UiMapMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
};
- static DB2Meta instance(1957206, 1, 13, 13, 0x18361012, fields, 2);
+ static DB2Meta instance(1957206, 1, 13, 13, 0x85884C46, fields, 2);
return &instance;
}
};
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index ea94fb836b3..cd13d22b78f 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -657,6 +657,7 @@ struct ChrCustomizationElementEntry
int32 ChrCustomizationBoneSetID;
int32 ChrCustomizationCondModelID;
int32 ChrCustomizationDisplayInfoID;
+ int32 ChrCustItemGeoModifyID;
};
struct ChrCustomizationOptionEntry
@@ -1797,6 +1798,8 @@ struct ItemBonusTreeNodeEntry
uint16 ChildItemBonusTreeID;
uint16 ChildItemBonusListID;
uint16 ChildItemLevelSelectorID;
+ int32 ItemBonusListGroupID;
+ int32 ParentItemBonusTreeNodeID;
uint32 ParentItemBonusTreeID;
};
@@ -2642,8 +2645,13 @@ struct QuestXPEntry
struct RandPropPointsEntry
{
uint32 ID;
+ float DamageReplaceStatF;
+ float DamageSecondaryF;
int32 DamageReplaceStat;
int32 DamageSecondary;
+ float EpicF[5];
+ float SuperiorF[5];
+ float GoodF[5];
uint32 Epic[5];
uint32 Superior[5];
uint32 Good[5];
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index aa250eb5dd2..89426fd40d2 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -2196,7 +2196,7 @@ uint32 Item::GetItemLevel(ItemTemplate const* itemTemplate, BonusData const& bon
return std::min(std::max(itemLevel, uint32(MIN_ITEM_LEVEL)), uint32(MAX_ITEM_LEVEL));
}
-int32 Item::GetItemStatValue(uint32 index, Player const* owner) const
+float Item::GetItemStatValue(uint32 index, Player const* owner) const
{
ASSERT(index < MAX_ITEM_PROTO_STATS);
switch (GetItemStatType(index))
@@ -2209,16 +2209,16 @@ int32 Item::GetItemStatValue(uint32 index, Player const* owner) const
}
uint32 itemLevel = GetItemLevel(owner);
- if (uint32 randomPropPoints = GetRandomPropertyPoints(itemLevel, GetQuality(), GetTemplate()->GetInventoryType(), GetTemplate()->GetSubClass()))
+ if (float randomPropPoints = GetRandomPropertyPoints(itemLevel, GetQuality(), GetTemplate()->GetInventoryType(), GetTemplate()->GetSubClass()))
{
float statValue = float(_bonusData.StatPercentEditor[index] * randomPropPoints) * 0.0001f;
if (GtItemSocketCostPerLevelEntry const* gtCost = sItemSocketCostPerLevelGameTable.GetRow(itemLevel))
statValue -= float(int32(_bonusData.ItemStatSocketCostMultiplier[index] * gtCost->SocketCost));
- return int32(std::floor(statValue + 0.5f));
+ return statValue;
}
- return 0;
+ return 0.0f;
}
ItemDisenchantLootEntry const* Item::GetDisenchantLoot(Player const* owner) const
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index 4d2e84cabda..e620e6e5491 100644
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -330,7 +330,7 @@ class TC_GAME_API Item : public Object
uint32 minItemLevel, uint32 minItemLevelCutoff, uint32 maxItemLevel, bool pvpBonus, uint32 azeriteLevel);
int32 GetRequiredLevel() const;
int32 GetItemStatType(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_STATS); return _bonusData.ItemStatType[index]; }
- int32 GetItemStatValue(uint32 index, Player const* owner) const;
+ float GetItemStatValue(uint32 index, Player const* owner) const;
SocketColor GetSocketColor(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_SOCKETS); return SocketColor(_bonusData.SocketColor[index]); }
uint32 GetAppearanceModId() const { return m_itemData->ItemAppearanceModID; }
void SetAppearanceModId(uint32 appearanceModId) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::ItemAppearanceModID), appearanceModId); }
diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp
index 1fa253d7a9f..a68f863bacf 100644
--- a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp
+++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp
@@ -107,7 +107,7 @@ ItemRandomBonusListId GenerateItemRandomBonusListId(uint32 item_id)
return *Trinity::Containers::SelectRandomWeightedContainerElement(tab->second.BonusListIDs, tab->second.Chances);
}
-TC_GAME_API uint32 GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subClass)
+TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subClass)
{
uint32 propIndex;
@@ -163,14 +163,14 @@ TC_GAME_API uint32 GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uin
switch (quality)
{
case ITEM_QUALITY_UNCOMMON:
- return randPropPointsEntry->Good[propIndex];
+ return randPropPointsEntry->GoodF[propIndex];
case ITEM_QUALITY_RARE:
case ITEM_QUALITY_HEIRLOOM:
- return randPropPointsEntry->Superior[propIndex];
+ return randPropPointsEntry->SuperiorF[propIndex];
case ITEM_QUALITY_EPIC:
case ITEM_QUALITY_LEGENDARY:
case ITEM_QUALITY_ARTIFACT:
- return randPropPointsEntry->Epic[propIndex];
+ return randPropPointsEntry->EpicF[propIndex];
}
return 0;
diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.h b/src/server/game/Entities/Item/ItemEnchantmentMgr.h
index 0ecb89cd9ac..5c8f524a125 100644
--- a/src/server/game/Entities/Item/ItemEnchantmentMgr.h
+++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.h
@@ -24,6 +24,6 @@ using ItemRandomBonusListId = uint32;
TC_GAME_API void LoadItemRandomBonusListTemplates();
TC_GAME_API ItemRandomBonusListId GenerateItemRandomBonusListId(uint32 item_id);
-TC_GAME_API uint32 GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subclass);
+TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subclass);
#endif
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 463c1b714d6..9083218ed0d 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7538,7 +7538,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply)
if (statType == -1)
continue;
- int32 val = item->GetItemStatValue(i, this);
+ float val = item->GetItemStatValue(i, this);
if (val == 0)
continue;
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 64652d6474b..c06a834a1d7 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -554,7 +554,7 @@ int32 SpellEffectInfo::CalcBaseValue(Unit const* caster, Unit const* target, uin
if (!randPropPoints)
randPropPoints = sRandPropPointsStore.AssertEntry(sRandPropPointsStore.GetNumRows() - 1);
- value = _spellInfo->Scaling.Class == -8 ? randPropPoints->DamageReplaceStat : randPropPoints->DamageSecondary;
+ value = _spellInfo->Scaling.Class == -8 ? randPropPoints->DamageReplaceStatF : randPropPoints->DamageSecondaryF;
}
else
value = GetRandomPropertyPoints(effectiveItemLevel, ITEM_QUALITY_RARE, INVTYPE_CHEST, 0);