Skip to content

Commit

Permalink
Update new item methods for TC Retail
Browse files Browse the repository at this point in the history
  • Loading branch information
Niam5 committed Feb 10, 2025
1 parent 82330d2 commit 28e6fa5
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion methods/TrinityCore/ItemMethods.h
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,7 @@ namespace LuaItem
E->Push(item->GetTemplate()->StatsCount);
return 1;
}
#endif

/**
* Returns the stat info of the specified stat slot of this [Item]
Expand All @@ -687,12 +688,21 @@ namespace LuaItem
int32 statValue = 0;
int32 statType = 0;

#if ELUNA_EXPANSION < EXP_RETAIL
if (statSlot > 0 && statSlot <= item->GetTemplate()->StatsCount)
{
auto& statEntry = item->GetTemplate()->ItemStat[statSlot - 1];
statValue = statEntry.ItemStatValue;
statType = statEntry.ItemStatType;
}
#else
if (statSlot > 0 && statSlot <= MAX_ITEM_PROTO_STATS)
{
auto owner = item->GetOwner();
statValue = item->GetItemStatValue(statSlot, owner);
statType = item->GetItemStatType(statSlot);
}
#endif

E->Push(statValue);
E->Push(statType);
Expand All @@ -709,19 +719,32 @@ namespace LuaItem
*/
int GetDamageInfo(Eluna* E, Item* item)
{
uint8 damageSlot = E->CHECKVAL<uint8>(2);
uint8 damageSlot = E->CHECKVAL<uint8>(2); //Damage slot does not apply in retail
uint32 damageType = 0;
float damageMin = 0;
float damageMax = 0;

#if ELUNA_EXPANSION < EXP_RETAIL
if (damageSlot > 0 && damageSlot <= MAX_ITEM_PROTO_DAMAGES)
{
auto& damageEntry = item->GetTemplate()->Damage[damageSlot - 1];
damageType = damageEntry.DamageType;
damageMin = damageEntry.DamageMin;
damageMax = damageEntry.DamageMax;
}
#else
auto owner = item->GetOwner();
auto itemTemplate = item->GetTemplate();
damageType = itemTemplate->GetDamageType();
float dps = itemTemplate->GetDPS(item->GetItemLevel(owner));

if (dps > 0.0f)
{
float avgDamage = dps * itemTemplate->GetDelay() * 0.001f;
damageMin = (itemTemplate->GetDmgVariance() * -0.5f + 1.0f) * avgDamage;
damageMax = floor(float(avgDamage * (itemTemplate->GetDmgVariance() * 0.5f + 1.0f) + 0.5f));
}
#endif
E->Push(damageType);
E->Push(damageMin);
E->Push(damageMax);
Expand All @@ -735,7 +758,11 @@ namespace LuaItem
*/
int GetSpeed(Eluna* E, Item* item)
{
#if ELUNA_EXPANSION < EXP_RETAIL
E->Push(item->GetTemplate()->Delay);
#else
E->Push(item->GetTemplate()->GetDelay());
#endif
return 1;
}

Expand All @@ -746,7 +773,12 @@ namespace LuaItem
*/
int GetArmor(Eluna* E, Item* item)
{
#if ELUNA_EXPANSION < EXP_RETAIL
E->Push(item->GetTemplate()->Armor);
#else
auto itemLevel = item->GetItemLevel(item->GetOwner());
E->Push(item->GetTemplate()->GetArmor(itemLevel));
#endif
return 1;
}

Expand All @@ -757,7 +789,11 @@ namespace LuaItem
*/
int GetMaxDurability(Eluna* E, Item* item)
{
#if ELUNA_EXPANSION < EXP_RETAIL
E->Push(item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY));
#else
E->Push(item->m_itemData->MaxDurability);
#endif
return 1;
}

Expand All @@ -768,10 +804,15 @@ namespace LuaItem
*/
int GetDurability(Eluna* E, Item* item)
{
#if ELUNA_EXPANSION < EXP_RETAIL
E->Push(item->GetUInt32Value(ITEM_FIELD_DURABILITY));
#else
E->Push(item->m_itemData->Durability);
#endif
return 1;
}

#if ELUNA_EXPANSION < EXP_RETAIL
/**
* Returns the random property ID of this [Item]
*
Expand Down

0 comments on commit 28e6fa5

Please sign in to comment.