mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Identify equipped weapon type by item subclass, not localized name
HasWeaponEquipped matched the localized GetItemInfo subtype string, which required a hand-maintained translation of all 13 weapon/shield subtypes per locale plus brittle "^Fist"/last-word string parsing. Use the locale-independent class/subclass IDs from C_Item.GetItemInfoInstant instead: - Init.lua: WeaponTypeNames entries now carry numeric class + subClass set (Axes/Swords/Maces span their 1H+2H subclasses; Shields are armor class 4). - Conditionals.lua: HasWeaponEquipped resolves the slot's itemID via ClassicAPI GetInventoryItemID, then compares classID/subClassID -- no link parsing, no string munging. - Localization.lua: drop the now-unused weapon-subtype strings from every locale block (112 lines).
This commit is contained in:
+9
-22
@@ -2094,34 +2094,21 @@ end
|
||||
-- weaponType: The name of the weapon's type (e.g. Axe, Shield, etc.)
|
||||
-- returns: True when equipped, otherwhise false
|
||||
function CleveRoids.HasWeaponEquipped(weaponType)
|
||||
if not CleveRoids.WeaponTypeNames[weaponType] then
|
||||
local def = CleveRoids.WeaponTypeNames[weaponType]
|
||||
if not def then
|
||||
return false
|
||||
end
|
||||
|
||||
local slotName = CleveRoids.WeaponTypeNames[weaponType].slot
|
||||
local localizedName = CleveRoids.WeaponTypeNames[weaponType].name
|
||||
local slotId = GetInventorySlotInfo(slotName)
|
||||
local slotLink = GetInventoryItemLink("player",slotId)
|
||||
|
||||
if not slotLink then
|
||||
local slotId = GetInventorySlotInfo(def.slot)
|
||||
local itemId = CleveRoids.ClassicAPI.GetInventoryItemID("player", slotId)
|
||||
if not itemId then
|
||||
return false
|
||||
end
|
||||
|
||||
local _,_,itemId = string.find(slotLink,"item:(%d+)")
|
||||
if not itemId then -- Also good to check if itemId was found
|
||||
return false
|
||||
end
|
||||
local _name,_link,_,_lvl,_type,subtype = GetItemInfo(itemId)
|
||||
-- just had to be special huh?
|
||||
local fist = string.find(subtype,"^Fist")
|
||||
-- drops things like the One-Handed prefix
|
||||
local _,_,subtype = string.find(subtype,"%s?(%S+)$")
|
||||
|
||||
if subtype == localizedName or (fist and (CleveRoids.WeaponTypeNames[weaponType].name == CleveRoids.Localized.FistWeapon)) then
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
-- Compare locale-independent item class/subclass instead of matching the
|
||||
-- localized subtype string (GetItemInfoInstant: ..., classID, subClassID).
|
||||
local _, _, _, _, _, classID, subClassID = C_Item.GetItemInfoInstant(itemId)
|
||||
return classID == def.class and def.subClass[subClassID] == true
|
||||
end
|
||||
|
||||
-- Checks whether or not the given UnitId is in your party or your raid
|
||||
|
||||
@@ -242,28 +242,32 @@ CleveRoids.auraTextures = {
|
||||
|
||||
|
||||
-- I need to make a 2h modifier
|
||||
-- Maps easy to use weapon type names (e.g. Axes, Shields) to their inventory slot name and their localized tooltip name
|
||||
-- Maps easy-to-use weapon type names (e.g. Axes, Shields) to their inventory
|
||||
-- slot plus the locale-independent item class/subclass IDs that identify them
|
||||
-- (read via C_Item.GetItemInfoInstant). class 2 = Weapon, 4 = Armor (shields).
|
||||
-- subClass is a set because the logical "Axes"/"Swords"/"Maces" types span both
|
||||
-- the one-handed and two-handed weapon subclasses.
|
||||
CleveRoids.WeaponTypeNames = {
|
||||
Daggers = { slot = "MainHandSlot", name = CleveRoids.Localized.Dagger },
|
||||
Fists = { slot = "MainHandSlot", name = CleveRoids.Localized.FistWeapon },
|
||||
Axes = { slot = "MainHandSlot", name = CleveRoids.Localized.Axe },
|
||||
Swords = { slot = "MainHandSlot", name = CleveRoids.Localized.Sword },
|
||||
Staves = { slot = "MainHandSlot", name = CleveRoids.Localized.Staff },
|
||||
Maces = { slot = "MainHandSlot", name = CleveRoids.Localized.Mace },
|
||||
Polearms = { slot = "MainHandSlot", name = CleveRoids.Localized.Polearm },
|
||||
Daggers = { slot = "MainHandSlot", class = 2, subClass = { [15] = true } },
|
||||
Fists = { slot = "MainHandSlot", class = 2, subClass = { [13] = true } },
|
||||
Axes = { slot = "MainHandSlot", class = 2, subClass = { [0] = true, [1] = true } },
|
||||
Swords = { slot = "MainHandSlot", class = 2, subClass = { [7] = true, [8] = true } },
|
||||
Staves = { slot = "MainHandSlot", class = 2, subClass = { [10] = true } },
|
||||
Maces = { slot = "MainHandSlot", class = 2, subClass = { [4] = true, [5] = true } },
|
||||
Polearms = { slot = "MainHandSlot", class = 2, subClass = { [6] = true } },
|
||||
-- OH
|
||||
Daggers2 = { slot = "SecondaryHandSlot", name = CleveRoids.Localized.Dagger },
|
||||
Fists2 = { slot = "SecondaryHandSlot", name = CleveRoids.Localized.FistWeapon },
|
||||
Axes2 = { slot = "SecondaryHandSlot", name = CleveRoids.Localized.Axe },
|
||||
Swords2 = { slot = "SecondaryHandSlot", name = CleveRoids.Localized.Sword },
|
||||
Maces2 = { slot = "SecondaryHandSlot", name = CleveRoids.Localized.Mace },
|
||||
Shields = { slot = "SecondaryHandSlot", name = CleveRoids.Localized.Shield },
|
||||
Daggers2 = { slot = "SecondaryHandSlot", class = 2, subClass = { [15] = true } },
|
||||
Fists2 = { slot = "SecondaryHandSlot", class = 2, subClass = { [13] = true } },
|
||||
Axes2 = { slot = "SecondaryHandSlot", class = 2, subClass = { [0] = true, [1] = true } },
|
||||
Swords2 = { slot = "SecondaryHandSlot", class = 2, subClass = { [7] = true, [8] = true } },
|
||||
Maces2 = { slot = "SecondaryHandSlot", class = 2, subClass = { [4] = true, [5] = true } },
|
||||
Shields = { slot = "SecondaryHandSlot", class = 4, subClass = { [6] = true } },
|
||||
-- ranged
|
||||
Guns = { slot = "RangedSlot", name = CleveRoids.Localized.Gun },
|
||||
Crossbows = { slot = "RangedSlot", name = CleveRoids.Localized.Crossbow },
|
||||
Bows = { slot = "RangedSlot", name = CleveRoids.Localized.Bow },
|
||||
Thrown = { slot = "RangedSlot", name = CleveRoids.Localized.Thrown },
|
||||
Wands = { slot = "RangedSlot", name = CleveRoids.Localized.Wand },
|
||||
Guns = { slot = "RangedSlot", class = 2, subClass = { [3] = true } },
|
||||
Crossbows = { slot = "RangedSlot", class = 2, subClass = { [18] = true } },
|
||||
Bows = { slot = "RangedSlot", class = 2, subClass = { [2] = true } },
|
||||
Thrown = { slot = "RangedSlot", class = 2, subClass = { [16] = true } },
|
||||
Wands = { slot = "RangedSlot", class = 2, subClass = { [19] = true } },
|
||||
}
|
||||
|
||||
-- Detect available features
|
||||
|
||||
@@ -8,20 +8,6 @@ CleveRoids.Locale = GetLocale()
|
||||
CleveRoids.Localized = {}
|
||||
|
||||
if CleveRoids.Locale == "enUS" or CleveRoids.Locale == "enGB" then
|
||||
CleveRoids.Localized.Shield = "Shields"
|
||||
CleveRoids.Localized.Bow = "Bows"
|
||||
CleveRoids.Localized.Crossbow = "Crossbows"
|
||||
CleveRoids.Localized.Gun = "Guns"
|
||||
CleveRoids.Localized.Thrown = "Thrown"
|
||||
CleveRoids.Localized.Wand = "Wands"
|
||||
CleveRoids.Localized.Sword = "Swords"
|
||||
CleveRoids.Localized.Staff = "Staves"
|
||||
CleveRoids.Localized.Polearm = "Polearms"
|
||||
CleveRoids.Localized.Mace = "Maces"
|
||||
CleveRoids.Localized.FistWeapon = "Fist Weapons"
|
||||
CleveRoids.Localized.Dagger = "Daggers"
|
||||
CleveRoids.Localized.Axe = "Axes"
|
||||
|
||||
CleveRoids.Localized.Attack = "Attack"
|
||||
CleveRoids.Localized.AutoShot = "Auto Shot"
|
||||
CleveRoids.Localized.Shoot = "Shoot"
|
||||
@@ -49,20 +35,6 @@ if CleveRoids.Locale == "enUS" or CleveRoids.Locale == "enGB" then
|
||||
["Shadowmeld"] = "Shadowmeld",
|
||||
}
|
||||
elseif CleveRoids.Locale == "deDE" then
|
||||
CleveRoids.Localized.Shield = "Schilde"
|
||||
CleveRoids.Localized.Bow = "Bögen"
|
||||
CleveRoids.Localized.Crossbow = "Armbrüste"
|
||||
CleveRoids.Localized.Gun = "Waffen"
|
||||
CleveRoids.Localized.Thrown = "Geworfen"
|
||||
CleveRoids.Localized.Wand = "Zauberstäbe"
|
||||
CleveRoids.Localized.Sword = "Schwerter"
|
||||
CleveRoids.Localized.Staff = "Dauben"
|
||||
CleveRoids.Localized.Polearm = "Stangenwaffen"
|
||||
CleveRoids.Localized.Mace = "Streitkolben"
|
||||
CleveRoids.Localized.FistWeapon = "Faustwaffen"
|
||||
CleveRoids.Localized.Dagger = "Dolche"
|
||||
|
||||
CleveRoids.Localized.Axe = "Äxte"
|
||||
CleveRoids.Localized.Attack = "Angriff"
|
||||
CleveRoids.Localized.AutoShot = "Automatischer Schuss"
|
||||
CleveRoids.Localized.Shoot = "Schießen"
|
||||
@@ -89,20 +61,6 @@ elseif CleveRoids.Locale == "deDE" then
|
||||
["Shadowmeld"] = "Schattenmimik",
|
||||
}
|
||||
elseif CleveRoids.Locale == "frFR" then
|
||||
CleveRoids.Localized.Shield = "Boucliers"
|
||||
CleveRoids.Localized.Bow = "Arcs"
|
||||
CleveRoids.Localized.Crossbow = "Arbalètes"
|
||||
CleveRoids.Localized.Gun = "Armes à feu"
|
||||
CleveRoids.Localized.Thrown = "Thrown"
|
||||
CleveRoids.Localized.Wand = "Wands"
|
||||
CleveRoids.Localized.Sword = "Swords"
|
||||
CleveRoids.Localized.Staff = "Staves"
|
||||
CleveRoids.Localized.Polearm = "Polearms"
|
||||
CleveRoids.Localized.Mace = "Maces"
|
||||
CleveRoids.Localized.FistWeapon = "Fist Weapons"
|
||||
CleveRoids.Localized.Dagger = "Daggers"
|
||||
CleveRoids.Localized.Axe = "Axes"
|
||||
|
||||
CleveRoids.Localized.Attack = "Attack"
|
||||
CleveRoids.Localized.AutoShot = "Auto Shot"
|
||||
CleveRoids.Localized.Shoot = "Shoot"
|
||||
@@ -128,20 +86,6 @@ elseif CleveRoids.Locale == "frFR" then
|
||||
["Shadowmeld"] = "Camouflage dans l'ombre",
|
||||
}
|
||||
elseif CleveRoids.Locale == "koKR" then
|
||||
CleveRoids.Localized.Shield = "Shields"
|
||||
CleveRoids.Localized.Bow = "Bows"
|
||||
CleveRoids.Localized.Crossbow = "Crossbows"
|
||||
CleveRoids.Localized.Gun = "Guns"
|
||||
CleveRoids.Localized.Thrown = "Thrown"
|
||||
CleveRoids.Localized.Wand = "Wands"
|
||||
CleveRoids.Localized.Sword = "Swords"
|
||||
CleveRoids.Localized.Staff = "Staves"
|
||||
CleveRoids.Localized.Polearm = "Polearms"
|
||||
CleveRoids.Localized.Mace = "Maces"
|
||||
CleveRoids.Localized.FistWeapon = "Fist Weapons"
|
||||
CleveRoids.Localized.Dagger = "Daggers"
|
||||
CleveRoids.Localized.Axe = "Axes"
|
||||
|
||||
CleveRoids.Localized.Attack = "Attack"
|
||||
CleveRoids.Localized.AutoShot = "Auto Shot"
|
||||
CleveRoids.Localized.Shoot = "Shoot"
|
||||
@@ -167,20 +111,6 @@ elseif CleveRoids.Locale == "koKR" then
|
||||
["Shadowmeld"] = "그림자 숨기",
|
||||
}
|
||||
elseif CleveRoids.Locale == "zhCN" then
|
||||
CleveRoids.Localized.Shield = "盾牌"
|
||||
CleveRoids.Localized.Bow = "弓"
|
||||
CleveRoids.Localized.Crossbow = "弩"
|
||||
CleveRoids.Localized.Gun = "枪械"
|
||||
CleveRoids.Localized.Thrown = "投掷武器"
|
||||
CleveRoids.Localized.Wand = "魔杖"
|
||||
CleveRoids.Localized.Sword = "剑"
|
||||
CleveRoids.Localized.Staff = "法杖"
|
||||
CleveRoids.Localized.Polearm = "长柄武器"
|
||||
CleveRoids.Localized.Mace = "锤"
|
||||
CleveRoids.Localized.FistWeapon = "拳套"
|
||||
CleveRoids.Localized.Dagger = "匕首"
|
||||
CleveRoids.Localized.Axe = "斧"
|
||||
|
||||
CleveRoids.Localized.Attack = "攻击"
|
||||
CleveRoids.Localized.AutoShot = "自动射击"
|
||||
CleveRoids.Localized.Shoot = "射击"
|
||||
@@ -206,20 +136,6 @@ elseif CleveRoids.Locale == "zhCN" then
|
||||
["Shadowmeld"] = "影遁",
|
||||
}
|
||||
elseif CleveRoids.Locale == "zhTW" then
|
||||
CleveRoids.Localized.Shield = "盾牌"
|
||||
CleveRoids.Localized.Bow = "長弓"
|
||||
CleveRoids.Localized.Crossbow = "弩"
|
||||
CleveRoids.Localized.Gun = "槍械"
|
||||
CleveRoids.Localized.Thrown = "投擲武器"
|
||||
CleveRoids.Localized.Wand = "魔杖"
|
||||
CleveRoids.Localized.Sword = "劍"
|
||||
CleveRoids.Localized.Staff = "法杖"
|
||||
CleveRoids.Localized.Polearm = "長柄武器"
|
||||
CleveRoids.Localized.Mace = "錘"
|
||||
CleveRoids.Localized.FistWeapon = "拳套"
|
||||
CleveRoids.Localized.Dagger = "匕首"
|
||||
CleveRoids.Localized.Axe = "斧"
|
||||
|
||||
CleveRoids.Localized.Attack = "攻擊"
|
||||
CleveRoids.Localized.AutoShot = "自動射擊"
|
||||
CleveRoids.Localized.Shoot = "射擊"
|
||||
@@ -245,20 +161,6 @@ elseif CleveRoids.Locale == "zhTW" then
|
||||
["Shadowmeld"] = "影遁",
|
||||
}
|
||||
elseif CleveRoids.Locale == "ruRU" then
|
||||
CleveRoids.Localized.Shield = "Shields"
|
||||
CleveRoids.Localized.Bow = "Bows"
|
||||
CleveRoids.Localized.Crossbow = "Crossbows"
|
||||
CleveRoids.Localized.Gun = "Guns"
|
||||
CleveRoids.Localized.Thrown = "Thrown"
|
||||
CleveRoids.Localized.Wand = "Wands"
|
||||
CleveRoids.Localized.Sword = "Swords"
|
||||
CleveRoids.Localized.Staff = "Staves"
|
||||
CleveRoids.Localized.Polearm = "Polearms"
|
||||
CleveRoids.Localized.Mace = "Maces"
|
||||
CleveRoids.Localized.FistWeapon = "Fist Weapons"
|
||||
CleveRoids.Localized.Dagger = "Daggers"
|
||||
CleveRoids.Localized.Axe = "Axes"
|
||||
|
||||
CleveRoids.Localized.Attack = "Attack"
|
||||
CleveRoids.Localized.AutoShot = "Auto Shot"
|
||||
CleveRoids.Localized.Shoot = "Shoot"
|
||||
@@ -284,20 +186,6 @@ elseif CleveRoids.Locale == "ruRU" then
|
||||
["Shadowmeld"] = "Слияние с тенью",
|
||||
}
|
||||
elseif CleveRoids.Locale == "esES" then
|
||||
CleveRoids.Localized.Shield = "Shields"
|
||||
CleveRoids.Localized.Bow = "Bows"
|
||||
CleveRoids.Localized.Crossbow = "Crossbows"
|
||||
CleveRoids.Localized.Gun = "Guns"
|
||||
CleveRoids.Localized.Thrown = "Thrown"
|
||||
CleveRoids.Localized.Wand = "Wands"
|
||||
CleveRoids.Localized.Sword = "Swords"
|
||||
CleveRoids.Localized.Staff = "Staves"
|
||||
CleveRoids.Localized.Polearm = "Polearms"
|
||||
CleveRoids.Localized.Mace = "Maces"
|
||||
CleveRoids.Localized.FistWeapon = "Fist Weapons"
|
||||
CleveRoids.Localized.Dagger = "Daggers"
|
||||
CleveRoids.Localized.Axe = "Axes"
|
||||
|
||||
CleveRoids.Localized.Attack = "Attack"
|
||||
CleveRoids.Localized.AutoShot = "Auto Shot"
|
||||
CleveRoids.Localized.Shoot = "Shoot"
|
||||
|
||||
Reference in New Issue
Block a user