The basis
If a default script is available for your class, you should have one or two icons on your screen. You can move these icons by dragging them.
If you click on the icon, you hide or show some check boxes and/or list boxes. These allow to do simple customization (e.g. a warlock can choose which curse to cast).
You can not cast the spell by clicking on the icon, but the keyboard key to press is displayed in the icon bottom left corner (if your class uses several stances, and if the spell is in several spell bars at different places, it may be wrong).
The option interface
To customize the addon, please launch the Blizzard option dialog (accessible through ESCAPE and Interface). In the Add-ons tab, you should find Ovale.
The first sheet displays the script that creates the icons.
The second sheet "Apparence" allows you to resize the icons.
The third sheet "Profile" allows you to save or load the current profile or reset to the default profile.
The script
The script is a small program in a custom language that creates the icons and other things. The preferred way to edit it is to copy it in your favorite text editor (like Notepad), modify it, and copy it back to World of Warcraft. Click the Accept button to save the changes, and the Compile button to try your script.
The basic commands
Macro definition
Define
Define a new constant. Every occurrence of NEWDEFINITION will be replaced by value.
Define(NEWDEFINITION value)
- NEWDEFINITION
- The name of the definition
- value
- A value.
Functions that returns text strings
These functions returns strings that can be used as parameter to option functions.
SpellName
Returns the spell name using its identifier (a number). E.g. use it for the name of a check box or a list item
SpellName(spellId)
- spellId
- A spell identifier
L
Returns a generic text in the user langauge.
The text identifier may be AOE, Melee, or Blood.
L(text)
- text
- The text identifier.
Spell configuration
CanStopChannelling
By default, while the player is channeling a spell, the add-on prevents any other action to show. If you call this function, the add-on does not have this behavior for the given spell. Deprecated. Use SpellInfo() with the canStopChannelling=1 parameter.
CanStopChannelling(spellId)
- 1
- The channeling spell that can be interrupted
ScoreSpells
A list of SpellId that count against the scoring system. Every spell that is not in the list stops the scoring until a spell that is in the list is casted.
SpellInfo
Gives informations about a spell. It is not necessary for spells that does not have a cooldown.
SpellInfo(spellid cd=99 duration=99 canStopChannelling=3 toggle=1)
- 1
- The SpellId
- cd
- The cooldown, in seconds
- duration
- Duration of the aura applied by this spell, in seconds (used only by OtherDebuffsExpires() at this time)
- canStopChannelling
- The channelling can be interrupted. The parameter is the number of ticks (e.g. canStopChannelling=3 for Mind Flay)
- toggle
- The spell is a toggle spell, like Heroic Strike (next-attack ability), or Divine Favor (next-spell ability)
SpellAddBuff
Tell Ovale that a spell applies one buff or more on the player.
SpellAddBuff(spellid buff1id=99 buff2id=99...)
- 1
- The SpellId of the spell that applies the buffs
- buff1id, buff2id...
- The name of the parameter is the SpellId of the buff spell, and the value is its duration in seconds
SpellAddDebuff
Same as SpellAddBuff() but the spells are debuffs.
SpellAddTargetDebuff
Same as SpellAddDebuff() but the spells are applied to the target and not the player.
Option interface
AddCheckBox
Add a check box. AddCheckBox(checkboxId "Text")
- checkboxId
- An identifier that is used by CheckBoxOn or CheckBoxOff
- "Text"
- "Text" can be literal text enclosed in quotes or the SpellName or L function.
AddListItem
Add a new item to a list. If the list does not exist, it is created.
AddListItem(listId itemId "Text")
- listId
- A list identifier. Use the same for each item in the list.
- itemId
- An item identifier
- "Text"
- A text
AddIcon
Add a new icon. A script should be enclosed in the braces to describe the icon.
You can set parameters in the form AddIcon key1=value1 key2=value2 {}. Valid parameters are :
- size=small
- show as a small icon
- nocd=1
- hide the icon when the action is on cooldown
The AddIcon syntax
Nodes
The nodes are the basis of the script. A node may be:
- a group, which is several nodes enclosed in braces
- a keyword and its parameters (which are nodes)
- a function
A node has:
- a remaining time, which can be "infinite"
- an action
- a priority
The group
The script is a group itself.
The resulting node of a group is the node with the least remaining time. If two nodes have the same remaining time, the first defined node has priority. If a node has a lower priority than another node that would be clipped by the global cooldown, the higher priority node is chosen.
The keywords
- if ''condition'' ''node''
- The ''if'' node is the action from the ''node'', but the remaining time is at least the one from ''node'' (e.g.
if TargetDebuffExpires(125) Spell(125))
- unless ''condition'' ''node''
- It is the same as ''node'' unless ''condition'' has a remaining time shorter or equal to that of ''node'', in which case the remaining time is infinite
- ''node1'' or ''node2''
- The remaining time is the lowest between ''node1'' and ''node2''
- ''node1'' and ''node2''
- The remaining time is the highest between ''node1'' and ''node2''
- ''n''s before ''node''
- The remaining time is the remaining time of ''node'' plus ''n'' seconds
- "n"s between "node1" and "node2"
- The difference between the remaining time of "node1" and the remaining time of "node2" must be at most "n" seconds. If it is the case, the node remaining time is 0, otherwise it is infinite.
Functions with an action
The functions use the syntax FunctionName(parameter1=value1 parameter2=value2...). If the name of a parameter is committed, the default is 1, 2, etc.
Spell
- 1
- The spell identifier
- target
- The target of the spell. Default is target. May be focus for example.
- usable
- Set this parameter to 1 if the spell should be hidden if it is not usable (special conditions not meet, not enough mana, etc.). E.g. use it for abilities that work only on some targets (undead, demons...), abilities that work only bellow a certain life percentage...
- priority
- Set the priority. Default is 3.
Macro
Same as Spell, but run a macro whose name is in parameter.
Item
Same as Spell, but use an item.
The parameter may be either an item identifier (the number that is used database web sites) or an inventory slot. See WoWWiki for a list of inventory slots.
Texture
A placeholder texture. May be used to denote anything that is not a spell like target swapping, movement, etc. See WoWWiki for a list.
Example: Texture(INV_Misc_Coin_01) will display coins. Time to earn some money, dying to boss enrage is not free!
Functions without actions
These functions do not return a priority or an action, only a remaining time. It means that they should only be used as the first node of ''if'' or ''unless'', or as any node of ''or'' or ''and''.
AfterWhiteHit
Test if a white hit just occured '''BROKEN'''
- 1
- maximum time after a white hit
ArmorSetParts
Test how many armor set parts are equiped by the player '''BROKEN'''
- 1
- set number
- 2
- "more" or "less"
- 3
- limit
BuffExpires
Test if a buff will expire on the player after a given time
- 1
- buff spell id
- 2
- expiration time
- haste
- the haste to apply to expiration time. spell is the only acceptable value
- mine
- 1 if the buff must have been applied by the player
BuffGain
Test if some time elapsed since the last time the player gained this buff.
- 1
- the spell id
- 2:
- the minimum time elapsed
BuffPresent
Test if a buff is active
- 1
- the buff spell id
- stacks
- minimum number of stacks
Casting
Test if the player casts a spell
- 1
- the spell that should be casted
CheckBoxOff
Test if a list of checkboxes is off
- 1,...
- the checkboxes names
CheckBoxOn
Test if a list of checkboxes is on
- 1,...
- the checkboxes names
ComboPoints
Test how many combo points a feral druid or a rogue has
- 1
- "less" or "more"
- 2
- the limit
DebuffExpires
Test if a debuff on the player is about to expires. See BuffExpires.
DebuffPresent
Test if a debuff is on the player. See BuffPresent.
Glyph
Test if a glyph is on the player.
- 1
- The glyph SpellId (not the object ItemId). e.g. 59333 for the Glyph of Blood Strike.
HasFullControl
Test if the player has full control of his character.
HasShield
Test if the player has a shield
ItemCount
Compare with a number of items.
GetItemCount(12345 more 2)
- 1
- The ItemId of the item
- 2
- more or less
- 3
- The number to compare
IsFeared
Test if the player is feared by another player
IsIncapacited
Test if the player has been incapacited by another player (Sap, Gouge, Repentance)
IsRooted
Test if the player is rooted by another player
IsStunned
Test if the player has been stunned by another player (Bash, Blackout, Cheap Shot, Concussion Blow, Hammer of Justice, Kidney Shot, Revenge Stun, Shockwave)
Level
Compare with the player level
- 1
- "less" or "more"
- 2
- the limit
LifePercent
Test if the player life is bellow/above a given value in percent
- 1
- "less" or "more"
- 2
- the limit, in percent
List
Test if a list item is selected
- 1
- the list name
- 2
- the item name
Mana
Test if the player mana is above/bellow a given value
- 1
- "less" or "more"
- 2
- the mana/energy/rage... limit
Mana
Test if the player mana is above/bellow a given value
- 1
- "less" or "more"
- 2
- the mana/energy/rage... limit
ManaPercent
Test if the player mana is above/bellow a given value in percent
ManaPercent(more 24)
- 1
- "less" or "more"
- 2
- the mana/energy/rage... limit
OtherDebuffExpires
Test if a debuff that has been placed on any other target that the current target is about to expires
OtherDebuffExpires(12345 2 15)
- 1
- The SpellId of the debuff
- 2
- The time before the expiration in seconds, or 0 if the debuff must have expired (0 is the default)
- 3
- The maximum number of seconds after the expiration before the target is to be ignored (10 is the default)
PetPresent
Test if any player pet is present (or not)
- 1
- "yes" or "no"
Runes
Test how many runes are up (death rune count as any other rune).
Runes(frost 2 nodeath=1)
- 1
- the type of rune (may be blood, unholy, frost, or death)
- 2
- the minimum number of runes that are up
- nodeath
- Death runes are ignored in the count
Stance
Test if the player is in a given stance (or form)
- 1
- the stance (a number, 1 being the first stance, 0 the normal stance if any)
TalentPoints
Test how many talent points has been spent in a talent
- 1
- the talent identifier (use /script print(Ovale.talentNameToId["Talent name"]) to retreive)
- 2
- "more" or "less"
- 3
- the limit
TargetBuffPresent
Same as BuffPresent but for the target. Has the following additionnal parameter:
- target
- the target of the buff, the current target being the default
TargetClass
Test the class of the target
- 1
- the class (may be rogue, warrior, mage, etc.)
- 2
- yes or no
TargetClassification
Test the target classification
- 1
- normal, elite, or worldboss
TargetCreatureType
Test the target creature type
- 1
- the creature type (may be Beast, Critter, Demon, Dragonkin, Elemental, Giant, Humanoid, Mechanical, or Undead).
TargetDebuffExpires
Same as DebuffExpires but for another character than the player. There is an additionnal optionnal parameter:
- target
- the target of the buff, the current target being the default
TargetDebuffPresent
See TargetBuffPresent, but for debuffs.
TargetInRange
Test if the target is in range
- 1
- the spell
- 2
- yes or no
TargetIsCasting
Test if the target is casting any spell
- 1
- yes or no
TargetLife
Compare with the life of the target.
- 1
- "less" or "more"
- 2
- the limit
TargetLifePercent
Test if the target life is bellow/above a given value in percent
- 1
- "less" or "more"
- 2
- the limit, in percents
TargetMana
Compare with the mana of the target.
- 1
- "less" or "more"
- 2
- the limit
TargetRelativeLevel
Test the target level difference with the player
- 1
- "less" or "more"
- 2
- [target level]-[player level] limit
TargetTargetIsPlayer
Test if the target's target is the player (or is not)
- 1
- "yes" (it should be the player) or "no"
TotemExpires
Test if a totem expires
- 1
- the totem type (earth, water, air, fire)
- 2
- the time before expiration
WeaponEnchantExpires
Test if a temporary weapon enchant expires (for Shaman and Rogues)
- 1
- either mainhand of offhand
- 2
- the time before expiration in seconds
Facts
- Date created
- 25 Jan 2009
- Last updated
- 11 Oct 2009