Quantcast

Fix for ticket 179.

Johnny C. Lam [10-11-12 - 01:22]
Fix for ticket 179.

Add new condition "HasWeapon" to test for presence of a weapon in the
named slot (mainhand or offhand).

Also fix some yesno parameter descriptions.

git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@585 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Filename
OvaleCondition.lua
diff --git a/OvaleCondition.lua b/OvaleCondition.lua
index 0944a66..eb9d932 100644
--- a/OvaleCondition.lua
+++ b/OvaleCondition.lua
@@ -1149,7 +1149,7 @@ OvaleCondition.conditions=
 -- @name Glyph
 -- @paramsig boolean
 -- @param id The glyph spell ID.
--- @param yesno Optional. If yes, then return true if the target exists. If no, then return true if it doesn't exist.
+-- @param yesno Optional. If yes, then return true if the glyph is active. If no, then return true if it isn't active.
 --     Default is yes.
 --     Valid values: yes, no.
 -- @return A boolean value.
@@ -1186,7 +1186,7 @@ OvaleCondition.conditions=
 --- Test if the player has a shield equipped.
 -- @name HasShield
 -- @paramsig boolean
--- @param yesno Optional. If yes, then return true if the target exists. If no, then return true if it doesn't exist.
+-- @param yesno Optional. If yes, then return true if a shield is equipped. If no, then return true if it isn't equipped.
 --     Default is yes.
 --     Valid values: yes, no.
 -- @return A boolean value.
@@ -1203,6 +1203,33 @@ OvaleCondition.conditions=
 		return testbool(itemLoc=="INVTYPE_SHIELD", condition[1])
 	end,

+--- Test if the player has a weapon equipped.
+-- @name HasWeapon
+-- @paramsig boolean
+-- @param hand Sets which hand weapon.
+--     Valid values: mainhand, offhand.
+-- @param yesno Optional. If yes, then return true if the weapon is equipped. If no, then return true if it isn't equipped.
+--     Default is yes.
+--     Valid values: yes, no.
+-- @return A boolean value.
+-- @usage
+-- if HasWeapon(offhand) and BuffStacks(killing_machine) Spell(frost_strike)
+
+	hasweapon = function(condition)
+		if condition[1] == "offhand" then
+			return testbool(OffhandHasWeapon(), condition[2])
+		elseif condition[1] == "mainhand" then
+			local itemId = GetInventoryItemID("player", GetInventorySlotInfo("MainHandSlot"))
+			if not itemId then
+				return testbool(false, condition[2])
+			end
+			local invType = select(9, GetItemInfo(itemId))
+			return testbool(invType == "INVTYPE_WEAPON" or invType == "INVTYPE_2HWEAPON" or invType == "INVTYPE_WEAPONMAINHAND", condition[2])
+		else
+			return testbool(false, condition[2])
+		end
+	end,
+
 --- Get the current amount of holy power for a paladin.
 -- @name HolyPower
 -- @paramsig number or boolean
@@ -1221,7 +1248,7 @@ OvaleCondition.conditions=
 --- Test if the player is in combat.
 -- @name InCombat
 -- @paramsig boolean
--- @param yesno Optional. If yes, then return true if the target exists. If no, then return true if it doesn't exist.
+-- @param yesno Optional. If yes, then return true if the player is in combat. If no, then return true if the player isn't in combat.
 --     Default is yes.
 --     Valid values: yes, no.
 -- @return A boolean value.
@@ -1236,7 +1263,7 @@ OvaleCondition.conditions=
 -- @name InFlightToTarget
 -- @paramsig boolean
 -- @param id The spell ID.
--- @param yesno Optional. If yes, then return true if the target exists. If no, then return true if it doesn't exist.
+-- @param yesno Optional. If yes, then return true if the spell is in flight. If no, then return true if it isn't in flight.
 --     Default is yes.
 --     Valid values: yes, no.
 -- @return A boolean value.
@@ -1252,7 +1279,7 @@ OvaleCondition.conditions=
 -- @name InRange
 -- @paramsig boolean
 -- @param id The spell ID.
--- @param yesno Optional. If yes, then return true if the target exists. If no, then return true if it doesn't exist.
+-- @param yesno Optional. If yes, then return true if the target is in range. If no, then return true if it isn't in range.
 --     Default is yes.
 --     Valid values: yes, no.
 -- @return A boolean value.