Skip to content

Commit 28e6fa5

Browse files
committed
Update new item methods for TC Retail
1 parent 82330d2 commit 28e6fa5

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

methods/TrinityCore/ItemMethods.h

+42-1
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ namespace LuaItem
673673
E->Push(item->GetTemplate()->StatsCount);
674674
return 1;
675675
}
676+
#endif
676677

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

691+
#if ELUNA_EXPANSION < EXP_RETAIL
690692
if (statSlot > 0 && statSlot <= item->GetTemplate()->StatsCount)
691693
{
692694
auto& statEntry = item->GetTemplate()->ItemStat[statSlot - 1];
693695
statValue = statEntry.ItemStatValue;
694696
statType = statEntry.ItemStatType;
695697
}
698+
#else
699+
if (statSlot > 0 && statSlot <= MAX_ITEM_PROTO_STATS)
700+
{
701+
auto owner = item->GetOwner();
702+
statValue = item->GetItemStatValue(statSlot, owner);
703+
statType = item->GetItemStatType(statSlot);
704+
}
705+
#endif
696706

697707
E->Push(statValue);
698708
E->Push(statType);
@@ -709,19 +719,32 @@ namespace LuaItem
709719
*/
710720
int GetDamageInfo(Eluna* E, Item* item)
711721
{
712-
uint8 damageSlot = E->CHECKVAL<uint8>(2);
722+
uint8 damageSlot = E->CHECKVAL<uint8>(2); //Damage slot does not apply in retail
713723
uint32 damageType = 0;
714724
float damageMin = 0;
715725
float damageMax = 0;
716726

727+
#if ELUNA_EXPANSION < EXP_RETAIL
717728
if (damageSlot > 0 && damageSlot <= MAX_ITEM_PROTO_DAMAGES)
718729
{
719730
auto& damageEntry = item->GetTemplate()->Damage[damageSlot - 1];
720731
damageType = damageEntry.DamageType;
721732
damageMin = damageEntry.DamageMin;
722733
damageMax = damageEntry.DamageMax;
723734
}
735+
#else
736+
auto owner = item->GetOwner();
737+
auto itemTemplate = item->GetTemplate();
738+
damageType = itemTemplate->GetDamageType();
739+
float dps = itemTemplate->GetDPS(item->GetItemLevel(owner));
724740

741+
if (dps > 0.0f)
742+
{
743+
float avgDamage = dps * itemTemplate->GetDelay() * 0.001f;
744+
damageMin = (itemTemplate->GetDmgVariance() * -0.5f + 1.0f) * avgDamage;
745+
damageMax = floor(float(avgDamage * (itemTemplate->GetDmgVariance() * 0.5f + 1.0f) + 0.5f));
746+
}
747+
#endif
725748
E->Push(damageType);
726749
E->Push(damageMin);
727750
E->Push(damageMax);
@@ -735,7 +758,11 @@ namespace LuaItem
735758
*/
736759
int GetSpeed(Eluna* E, Item* item)
737760
{
761+
#if ELUNA_EXPANSION < EXP_RETAIL
738762
E->Push(item->GetTemplate()->Delay);
763+
#else
764+
E->Push(item->GetTemplate()->GetDelay());
765+
#endif
739766
return 1;
740767
}
741768

@@ -746,7 +773,12 @@ namespace LuaItem
746773
*/
747774
int GetArmor(Eluna* E, Item* item)
748775
{
776+
#if ELUNA_EXPANSION < EXP_RETAIL
749777
E->Push(item->GetTemplate()->Armor);
778+
#else
779+
auto itemLevel = item->GetItemLevel(item->GetOwner());
780+
E->Push(item->GetTemplate()->GetArmor(itemLevel));
781+
#endif
750782
return 1;
751783
}
752784

@@ -757,7 +789,11 @@ namespace LuaItem
757789
*/
758790
int GetMaxDurability(Eluna* E, Item* item)
759791
{
792+
#if ELUNA_EXPANSION < EXP_RETAIL
760793
E->Push(item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY));
794+
#else
795+
E->Push(item->m_itemData->MaxDurability);
796+
#endif
761797
return 1;
762798
}
763799

@@ -768,10 +804,15 @@ namespace LuaItem
768804
*/
769805
int GetDurability(Eluna* E, Item* item)
770806
{
807+
#if ELUNA_EXPANSION < EXP_RETAIL
771808
E->Push(item->GetUInt32Value(ITEM_FIELD_DURABILITY));
809+
#else
810+
E->Push(item->m_itemData->Durability);
811+
#endif
772812
return 1;
773813
}
774814

815+
#if ELUNA_EXPANSION < EXP_RETAIL
775816
/**
776817
* Returns the random property ID of this [Item]
777818
*

0 commit comments

Comments
 (0)