-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathData.lua
More file actions
executable file
·138 lines (132 loc) · 9.34 KB
/
Data.lua
File metadata and controls
executable file
·138 lines (132 loc) · 9.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
---@class Data
local Data = ECSLoader:CreateModule("Data")
local dataFunctionRefs
local playerLevel = UnitLevel("player")
local enemyLevel = playerLevel + 3
---@param refName string
---@return number | string
function Data.GetStatInfo(refName)
local dataFunction = dataFunctionRefs[refName];
if dataFunction then
return dataFunction()
else
ECS:Print("Invalid data refName: " .. refName)
return ""
end
end
dataFunctionRefs = {
["MovementSpeed"] = function() return Data:GetMovementSpeed() end,
-- Melee
["MeleeAttackPower"] = function() return Data:GetMeleeAttackPower() end,
["MeleeCritChance"] = function() return Data:MeleeCrit() end,
["Expertise"] = function() return ECS.IsClassic and 0 or Data:GetExpertise() end,
["ExpertiseRating"] = function() return ECS.IsClassic and 0 or Data:GetExpertiseRating() end,
["MeleeArmorPenetration"] = function() return Data:GetArmorPenetration() end,
["MeleeArmorPenetrationRating"] = function() return ECS.IsWotlk and Data:GetArmorPenetrationRating() or 0 end,
["MeleeHitRating"] = function() return ECS.IsClassic and 0 or Data:MeleeHitRating() end,
["MeleeHitBonus"] = function() return Data:MeleeHitBonus() end,
["MeleeHitSameLevel"] = function() return Data:MeleeHitMissChanceSameLevel() end,
["MeleeHitBossLevel"] = function() return Data:MeleeHitMissChanceBossLevel() end,
["GlanceHitChanceSameLevel"] = function() return Data:GlanceHitChanceSameLevel() end,
["GlanceHitChanceBossLevel"] = function() return Data:GlanceHitChanceBossLevel() end,
["GlanceDamageSameLevel"] = function() return Data:GlanceDamageSameLevel() end,
["GlanceDamageBossLevel"] = function() return Data:GlanceDamageBossLevel() end,
["MeleeHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetMeleeHasteRating() end,
["MeleeHasteBonus"] = function() return Data:GetMeleeHasteBonus() end,
["MeleeAttackSpeedMainHand"] = function() return Data:GetMeleeAttackSpeedMainHand() end,
["MeleeAttackSpeedOffHand"] = function() return Data:GetMeleeAttackSpeedOffHand() end,
-- Ranged
["RangeAttackpower"] = function() return Data:GetRangeAttackPower() end,
["RangedCritChance"] = function() return Data:RangedCrit() end,
["RangedHitRating"] = function() return ECS.IsClassic and 0 or Data:RangeHitRating() end,
["RangedHitBonus"] = function() return Data:RangeHitBonus() end,
["RangedHitSameLevel"] = function() return Data:RangeMissChanceSameLevel() end,
["RangedArmorPenetration"] = function() return Data:GetArmorPenetration() end,
["RangedArmorPenetrationRating"] = function() return ECS.IsWotlk and Data:GetArmorPenetrationRating() or 0 end,
["RangedHitBossLevel"] = function() return Data.RangeMissChanceBossLevel() end,
["RangedHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetRangedHasteRating() end,
["RangedHasteBonus"] = function() return Data:GetRangedHasteBonus() end,
["RangedAttackSpeed"] = function() return Data:GetRangedAttackSpeed() end,
-- Defense
["Armor"] = function() return Data:GetArmorValue() end,
["MeleeCritReduction"] = function() return Data:GetMeleeCritReduction() end,
["RangedCritReduction"] = function() return Data:GetRangedCritReduction() end,
["SpellCritReduction"] = function() return Data:GetSpellCritReduction() end,
["Avoidance"] = function() return Data:GetAvoidance(playerLevel) end,
["AvoidanceBoss"] = function() return Data:GetAvoidance(enemyLevel) end,
["DefenseRating"] = function() return ECS.IsClassic and 0 or Data:GetDefenseRating() end,
["DefenseValue"] = function() return Data:GetDefenseValue() end,
["DodgeChance"] = function() return Data:GetDodgeChance() end,
["ParryChance"] = function() return Data:GetParryChance() end,
["BlockChance"] = function() return Data:GetBlockChance() end,
["BlockValue"] = function() return Data:GetBlockValue() end,
["ResilienceValue"] = function() return ECS.IsClassic and 0 or Data:GetResilienceRating() end,
["StunResistance"] = function() return Data:GetMechanicResistance().stun end,
["CharmResistance"] = function() return Data:GetMechanicResistance().charm end,
["DisorientResistance"] = function() return Data:GetMechanicResistance().disorient end,
["RootResistance"] = function() return Data:GetMechanicResistance().root end,
["SnareResistance"] = function() return Data:GetMechanicResistance().snare end,
["InterruptResistance"] = function() return Data:GetMechanicResistance().interrupt end,
["SilenceResistance"] = function() return Data:GetMechanicResistance().silence end,
["FleeingResistance"] = function() return Data:GetMechanicResistance().fleeing end,
["HorrorResistance"] = function() return Data:GetMechanicResistance().horror end,
["DiseaseResistance"] = function() return Data:GetMechanicResistance().disease end,
["CurseResistance"] = function() return Data:GetMechanicResistance().curse end,
["PoisonResistance"] = function() return Data:GetMechanicResistance().poison end,
-- Spell
["SpellHitRating"] = function() return ECS.IsClassic and 0 or Data:SpellHitRating() end,
["SpellHitBonus"] = function() return Data.SpellHitBonus(Data.HOLY_SCHOOL) end,
["SpellHitSameLevel"] = function() return Data:SpellMissChanceSameLevel(Data.HOLY_SCHOOL) end,
["SpellHitBossLevel"] = function() return Data:SpellMissChanceBossLevel(Data.HOLY_SCHOOL) end,
["SpellCritChance"] = function() return Data:GetSpellCrit(Data.HOLY_SCHOOL) end,
["SpellHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetSpellHasteRating() end,
["SpellHasteBonus"] = function() return Data:GetSpellHasteBonus() end,
["SpellPenetration"] = function() return Data:GetSpellPenetration() end,
-- MP5
["MP5Items"] = function() return Data:GetMP5FromItems() end,
["MP5Spirit"] = function() return Data:GetMP5FromSpirit() end,
["MP5Buffs"] = function()
local _, mp5Buffs = Data:GetMP5FromBuffs()
return mp5Buffs
end,
["MP5Casting"] = function() return Data:GetMP5WhileCasting() end,
["MP5NotCasting"] = function() return Data:GetMP5OutsideCasting() end,
-- Spell Power by school
["PhysicalDmg"] = function() return Data:GetSpellDamage(Data.PHYSICAL_SCHOOL) end,
["HolyDmg"] = function() return Data:GetSpellDamage(Data.HOLY_SCHOOL) end,
["FireDmg"] = function() return Data:GetSpellDamage(Data.FIRE_SCHOOL) end,
["NatureDmg"] = function() return Data:GetSpellDamage(Data.NATURE_SCHOOL) end,
["FrostDmg"] = function() return Data:GetSpellDamage(Data.FROST_SCHOOL) end,
["ShadowDmg"] = function() return Data:GetSpellDamage(Data.SHADOW_SCHOOL) end,
["ArcaneDmg"] = function() return Data:GetSpellDamage(Data.ARCANE_SCHOOL) end,
["BonusHealing"] = function() return Data:GetHealingPower() end,
-- Spell Crit by school
["PhysicalCritChance"] = function() return Data:GetSpellCrit(Data.PHYSICAL_SCHOOL) end,
["HolyCritChance"] = function() return Data:GetSpellCrit(Data.HOLY_SCHOOL) end,
["FireCritChance"] = function() return Data:GetSpellCrit(Data.FIRE_SCHOOL) end,
["NatureCritChance"] = function() return Data:GetSpellCrit(Data.NATURE_SCHOOL) end,
["FrostCritChance"] = function() return Data:GetSpellCrit(Data.FROST_SCHOOL) end,
["ShadowCritChance"] = function() return Data:GetSpellCrit(Data.SHADOW_SCHOOL) end,
["ArcaneCritChance"] = function() return Data:GetSpellCrit(Data.ARCANE_SCHOOL) end,
["ArcaneHitBonus"] = function() return Data.SpellHitBonus(Data.ARCANE_SCHOOL) end,
["ArcaneMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.ARCANE_SCHOOL) end,
["ArcaneMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.ARCANE_SCHOOL) end,
["FireHitBonus"] = function() return Data.SpellHitBonus(Data.FIRE_SCHOOL) end,
["FireMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.FIRE_SCHOOL) end,
["FireMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.FIRE_SCHOOL) end,
["FrostHitBonus"] = function() return Data.SpellHitBonus(Data.FROST_SCHOOL) end,
["FrostMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.FROST_SCHOOL) end,
["FrostMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.FROST_SCHOOL) end,
["HolyHitBonus"] = function() return Data.SpellHitBonus(Data.HOLY_SCHOOL) end,
["HolyMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.HOLY_SCHOOL) end,
["HolyMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.HOLY_SCHOOL) end,
["NatureHitBonus"] = function() return Data.SpellHitBonus(Data.NATURE_SCHOOL) end,
["NatureMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.NATURE_SCHOOL) end,
["NatureMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.NATURE_SCHOOL) end,
["PhysicalHitBonus"] = function() return Data.SpellHitBonus(Data.PHYSICAL_SCHOOL) end,
["PhysicalMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.PHYSICAL_SCHOOL) end,
["PhysicalMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.PHYSICAL_SCHOOL) end,
["ShadowHitBonus"] = function() return Data.SpellHitBonus(Data.SHADOW_SCHOOL) end,
["ShadowMissChance"] = function() return Data:SpellMissChanceSameLevel(Data.SHADOW_SCHOOL) end,
["ShadowMissChanceBoss"] = function() return Data:SpellMissChanceBossLevel(Data.SHADOW_SCHOOL) end,
}