Creating a new combat profile is actually very easy if you know the most important conditions. In this guide I'll explain every possibility of modifying your combat profile.
1. GeneralCollapse Expand commands
2.a SelfCollapse Expand commands
2.b TargetCollapse Expand commands
2.c PetsCollapse Expand commands
2.d OtherCollapse Expand commands
There are a few things all combat profiles need or have in common.
Global cooldown: All combat profiles need to have a global cooldown set. This is done with the gcd: command. The usual value for all classes except rogues and druids in cat form is 1500. If it is one of those cases it should be set to 1000. If you have no purpose (maybe it helps to raise it if you're lagging) you shouldn't choose a different value.
Priority: The priority of actions is set after the order they are written in the profiles. Actions that are on top will be checked first, so you should write things like eating out of combat on top so they get checked first.
There are two ways to start a new action:
This tells the bot to push the given keys, whereas the 1 tells the program that the action you want to perform is on the 1. action bar and on key 5. Every key can be assigned as long at it does not have to be used in combination with ALT or SHIFT or any other combination. It also shouldn't be on your numpad, except for the numbers of course. This should be used if you want to use macros or trinkets in your profile.
This tells the bot to cast a spell with one of the given IDs. The bot will automatically search for the spell on your action bars whereas only one of the IDs has to be given. In this example the ids are those from Frost Armor and it's different ranks.
In addition to that there is a way to use consumable items,
The bot will search for the specified usable on your action bars and use it if the conditions are met. In this example it will look for drinks to restore mana, all possible usables are: "food", "drink", "bandage", "mana potion", "health potion", "mana gem", "spirit scroll", "stamina scroll", "protection scroll", "intellect scroll", "strength scroll" and "agility scroll". Potion cooldowns as well as scroll buff checks are handled by the bot itself, other conditions will have to be added in the profile.
Since version 1.8.5 the bot supports item IDs in an use: statement. This works exactly like castspell: does, you can either add a single ID or multiple IDs (of which only one will be chosen) like this:
The options for checking your environment are very limited. You will mostly rely on conditions that you can get from numeric values such as your or your targets health, distances, cooldowns and buffs.
The selfhp condition checks your health in per cent. In the first condition the action would only be executed if you have more than 50% of your own health. The second one would only be executed if you have less than 25% health.
The mana condition checks your mana in per cent. In the first condition the action would only be executed if you have more than 70% of your health. The second condition would be fulfilled if you have less than 35% mana.
The basemana condition works the same way as the mana condition, though instead of comparing your current mana to your total mana it compares to your base mana.
The energy condition checks your energy in per cent. The first condition would be true if you have more than 55% of your energy, the second one if you have less than 20%.
The rage condition checks your rage in per cent. The first condition would be true if you have more than 15% of your rage, the second one if you have less than 30%.
The level condition makes casting of a spell dependant on your own level. The first condition will allow the spell to be cast only if you are level 26 and higher, the second one only if you are level 35 and below.
The selfbuff condition checks whether have a (de)buff on you. The first condition is true if you have it on you, the second one if you don't. This condition can be set multiple times per action. The id of the spells can be checked online. (In the examples, first one is mages frost armor and second one is warriors combat stance.)
In the paid version this condition can be used similarily like the "castspell:" command, specifying multiple IDs, i.e.
This will check whether you are not buffed with any rank of Ice Barrier.
These conditions check whether your weapons have a buff (i.e. shaman weapon enchantments, rogue poisons). The first condition will be met if your main hand weapon is not buffed, the second one if your off hand weapon is buffed.
The combopoints condition checks the count of your combo points. The first condition will be met if you have more than 4 combo points on your target. The second one if your target has less than 3 combo points.
The wandcasting conditions check whether you are casting wand or not. This also applies to the hunter's autoshoot. This can be used to not interrupt wand casting when you are low on mana or to quit casting wand if you have enough mana again. The spell ID for wands is 5019.
The autoattacking conditions check whether you are auto attacking your target so you don't have to hassle around with a macro to fix this. The spell ID for auto attack is 6603.
The targethp command checks the health of your current target. The first condition is true if your target has more than 70% of his health. The second one is met if the target has less than 20% health.
The targetbuff conditions checks for (de)buffs on your target. The first condition will be true if your target has a buff with the id 16511 (Hemorrhage debuff), the second one if your target does not have a buff with id 15326 (Blackout proc, lol).
In the paid version this condition can be used similarily like the castspell: command, specifying multiple IDs, i.e.
This will check whether your target doesn't have any rank of Hunter's Mark on it.
The enemycasting condition checks whether your current target is casting a spell or not. The first condition is met if your target is not casting, the second one if it is.
The isplayer flag tells the bot to only perform the action if the target is another player. The !isplayer will do the opposite, so an action will only be performed if the target is not a player.
The combatcount condition checks with how many units you are in combat with. The first example is true if there are more than 3 units fighting with you, the second one if there are less than 5.
Similar to the combatcount condition, the addcount condition checks whether there are enemies that would assist your current target if you attack it. This condition is also fulfilled if you already are in combat.
The first example will only be passed if there would be at least 1 additional mob that engages you together with your current target. The second example will only be passed if there are no additional adds attacking you.
The meleepullcount condition checks whether there would be additional bodypulls if you would be standing at the position of your current target. The first example would be fulfilled if there is at least one additional enemy that would attack you if you went into melee range (which means you would be in combat with at least 2 enemies, since your target is not counted for this). The second example is fulfilled if there are no additional enemies in body pull range of your targets position at the current time (wandering mobs might still join the fight if they move in close enough while you are still in combat).
The havetarget condition checks whether you currently have a target (either player or NPC). The first condition will pass if you do have a target, the second one only if you do not.
All of these conditions require an active pet. If there is none, any cast with these conditions will be false (with the exception of !petactive).
The pethealth command checks the health of your pet. The first condition is true if your pet has more than 70% of his health. The second one is met if your pet has less than 20% health.
The petmana command checks the mana percentage of your pet. The first condition is true if your pet has more than 70% of its mana. The second one is met if your pet has less than 30% mana.
The petfocus command checks the focus of your pet. The first condition is true if your pet has more than 50 focus. The second one is met if your pet has less than 40 focus.
The petactive condition checks whether you have an active pet. The first condition is true if you have one, the second one if you don't. Dead pets are also active!
The petalive condition checks whether your pet is dead. The first condition is true if it is, the second one if your pet is dead.
The pethappiness conditions check for the various states of your (hunter) pets happiness. This is useful for the usage of a feeding macro which should look like this:
/cast Feed Pet
/script PickupContainerItem (0,3)
Maybe in the category other, but not less important.
The distance command checks the distance of you to your target (in ingame yards). The first condition is true if you are more than 20 yards away from your target, the second one is true if you are in melee range. This condition can be used multiple times.
The haveaggro condition checks whether you have aggro. The first condition is fulfilled if you do not (i.e. your pet has aggro), the second one if you do.
The cooldown command will prevent your bot from spamming one attack even if it is not ready yet. The number represents the cooldown in milliseconds (1 second = 1000 milliseconds).
Since Vanilla Botter 1.8.0 you can also make multiple cast assignments share the same cooldown, you do that by giving them an ID like in this example:
The incombat command checks whether you are in combat or not. The first command is returning true if you are fighting, the second one if you are not, which is useful for spells that can only be cast out of combat or eating/drinking.
The castonce command will make sure that you cast a spell only once per enemy.
This command will make sure that you will not move and cast for a certain time which is necessary so you don't break your channeling spells or stop eating/drinking too early.
The breakoncombat command breaks a channelingtime command if you enter combat (useful for eating/drinking spells).
The breakonkill command breaks a channelingtime command if you kill your target.
The breakonfullmana command breaks a channelingtime command if your mana reaches 100%.
The breakonfullhp command breaks a channelingtime command if you have 100% of your health.
The haveitem conditions check whether you got an amount greater than then given count or less than that. This checks your whole inventory for the item with given ID!
The trigger and triggeredby commands allow the creation of cast sequences. If a cast has been assigned with the trigger command, the triggeredby condition becomes true for the given number. The number does not have to be unique and both of these commands can be used multiple times per cast, allowing more complex sequences.
The haveitem trigger can be used to trigger an action when the casting slot of the action has the specified amount of items in it. I.e. if you add this to a drinking macro and you run out of water, an action with the specified trigger ID can be cast, i.e. a mage can conjure new water. This condition only applies to item usage (either with use: or cast:)!
Casts flagged with the aftercombat command will only be executed after you have killed one or more units.
The afterloot flag makes sure that an action is only performed after all killed mobs have been looted.
The loot option will make the bot loot on the next occasion. This is necessary if you want the bot to open items or pick pocket mobs. Only works on instant loot windows like Clams or Pick Pocket. Disenchanting and opening lockboxes does not work!
Casts with the nogcd option will not trigger the global cooldown and thus allow a smoother acting when using abilites that don't base on the global cooldown.
The nostand parameter tells the bot to not stand up for the execution of a cast. This is specifically necessary for eating & drinking at the same time.
The ismounted check will only be passed if you are currently on a mount. Likewise, the !ismounted check will only go through if you are not mounted.
The isfriendly checks only work on player characters. "isfriendly" is true if the targetted player is friendly, "!isfriendly" is only true if your target is hostile (of the other faction). If no player is targetted, the action will never be performed.
The chance condition allows randomization of combat actions. In the given example the chance is 75% that an action will be performed - if not it will be skipped and the next action in the profile will be checked.
The alert command will play the set alert sound of the bot process if the action is performed. Warning sounds have to be enabled!
The backpedal option will tell the bot to move backwards for the given amount of time in milliseconds should the action be performed. If you want the bot to move after some casting time and not immediately after the key has been pressed then you will also have to add a channelingtime:X flag.