@@ -673,6 +673,7 @@ namespace LuaItem
673
673
E->Push (item->GetTemplate ()->StatsCount );
674
674
return 1 ;
675
675
}
676
+ #endif
676
677
677
678
/* *
678
679
* Returns the stat info of the specified stat slot of this [Item]
@@ -687,12 +688,21 @@ namespace LuaItem
687
688
int32 statValue = 0 ;
688
689
int32 statType = 0 ;
689
690
691
+ #if ELUNA_EXPANSION < EXP_RETAIL
690
692
if (statSlot > 0 && statSlot <= item->GetTemplate ()->StatsCount )
691
693
{
692
694
auto & statEntry = item->GetTemplate ()->ItemStat [statSlot - 1 ];
693
695
statValue = statEntry.ItemStatValue ;
694
696
statType = statEntry.ItemStatType ;
695
697
}
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
696
706
697
707
E->Push (statValue);
698
708
E->Push (statType);
@@ -709,19 +719,32 @@ namespace LuaItem
709
719
*/
710
720
int GetDamageInfo (Eluna* E, Item* item)
711
721
{
712
- uint8 damageSlot = E->CHECKVAL <uint8>(2 );
722
+ uint8 damageSlot = E->CHECKVAL <uint8>(2 ); // Damage slot does not apply in retail
713
723
uint32 damageType = 0 ;
714
724
float damageMin = 0 ;
715
725
float damageMax = 0 ;
716
726
727
+ #if ELUNA_EXPANSION < EXP_RETAIL
717
728
if (damageSlot > 0 && damageSlot <= MAX_ITEM_PROTO_DAMAGES)
718
729
{
719
730
auto & damageEntry = item->GetTemplate ()->Damage [damageSlot - 1 ];
720
731
damageType = damageEntry.DamageType ;
721
732
damageMin = damageEntry.DamageMin ;
722
733
damageMax = damageEntry.DamageMax ;
723
734
}
735
+ #else
736
+ auto owner = item->GetOwner ();
737
+ auto itemTemplate = item->GetTemplate ();
738
+ damageType = itemTemplate->GetDamageType ();
739
+ float dps = itemTemplate->GetDPS (item->GetItemLevel (owner));
724
740
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
725
748
E->Push (damageType);
726
749
E->Push (damageMin);
727
750
E->Push (damageMax);
@@ -735,7 +758,11 @@ namespace LuaItem
735
758
*/
736
759
int GetSpeed (Eluna* E, Item* item)
737
760
{
761
+ #if ELUNA_EXPANSION < EXP_RETAIL
738
762
E->Push (item->GetTemplate ()->Delay );
763
+ #else
764
+ E->Push (item->GetTemplate ()->GetDelay ());
765
+ #endif
739
766
return 1 ;
740
767
}
741
768
@@ -746,7 +773,12 @@ namespace LuaItem
746
773
*/
747
774
int GetArmor (Eluna* E, Item* item)
748
775
{
776
+ #if ELUNA_EXPANSION < EXP_RETAIL
749
777
E->Push (item->GetTemplate ()->Armor );
778
+ #else
779
+ auto itemLevel = item->GetItemLevel (item->GetOwner ());
780
+ E->Push (item->GetTemplate ()->GetArmor (itemLevel));
781
+ #endif
750
782
return 1 ;
751
783
}
752
784
@@ -757,7 +789,11 @@ namespace LuaItem
757
789
*/
758
790
int GetMaxDurability (Eluna* E, Item* item)
759
791
{
792
+ #if ELUNA_EXPANSION < EXP_RETAIL
760
793
E->Push (item->GetUInt32Value (ITEM_FIELD_MAXDURABILITY));
794
+ #else
795
+ E->Push (item->m_itemData ->MaxDurability );
796
+ #endif
761
797
return 1 ;
762
798
}
763
799
@@ -768,10 +804,15 @@ namespace LuaItem
768
804
*/
769
805
int GetDurability (Eluna* E, Item* item)
770
806
{
807
+ #if ELUNA_EXPANSION < EXP_RETAIL
771
808
E->Push (item->GetUInt32Value (ITEM_FIELD_DURABILITY));
809
+ #else
810
+ E->Push (item->m_itemData ->Durability );
811
+ #endif
772
812
return 1 ;
773
813
}
774
814
815
+ #if ELUNA_EXPANSION < EXP_RETAIL
775
816
/* *
776
817
* Returns the random property ID of this [Item]
777
818
*
0 commit comments