Bot40 - MMOBugs Wiki

Macro Info
Name Bot40
Author [40oz]
Link Wiki Link
Commands /mac bot40
Includes Yes
Uses INI File Yes
Required Plugins Yes


Description

Bot40.Mac Macro for all classes (limited bard support). It should be a fully functional macro that uses all your skills/abilities/items and is customizable via .ini and in game commands.


FAQ

My macro isn't working correctly, what do I do!?
1. Follow the initial setup instructions on the first post of the macro thread, also listed below.
2. Follow step 1 exactly.
That should always be your first step for this macro to diagnose a problem.

Troubleshooting
Q. Macro isnt doing anything or isnt loading correctly.
A. Check what zone you are in, by default, the macro doesnt work in Lobby/Hall/PoK/bazaar. You can modify zones it will restrict by changing [Settings] RestrictedZones=344,202,151,345

Q. I keep getting MQ2Cast error messages or spells keep memming and unmemming.
A. Mq2Melee is likely interfering with macro. You should disable it while bot is running and set everything up in bot.

You can use the following commands in your [Mq2melee] ini in \mq2\server_charname.ini to disable the macro:
downshitif=${If[!${Select[${Zone.ID},344,202,151,345,33505]} && !${Me.Invis} && ${Me.Standing} && ${Me.Buff[Resurrection Sickness].Duration}<38 && ${Me.Buff[Revival Sickness].Duration}<18 && !${Macro.Name.Equal[bot40.mac]},1,0]}

holyshitif=!${Macro.Name.Equal[bot40.mac]},1,0]}

Q. My buffs arent working or are spamming.
A. Check your BuffTotal=, SelfBuffTotal=, FightBuffTotal= to verify correct numbers. Also make sure that you have filled in the BuffSpellIconX= and SelfBuffIconX= and FightBuffIconX= or they will not work or spam you.

Q. My puller is also tanking. When he comes back to camp, he is getting beat up by mob. What can I do?
A. Make your puller your front instance. The lag on macros running in the background can significantly slow the process of UI updates, thus your tank isnt getting XTarget window update in a timely manner. Moving them to front instance should solve your problem.

Q. My nukes/dots/stuns/debuff keep interrupting their cast during combat. What is going on?!?
A. [Settings] InterruptToHeal and InterruptToXHeal are likely interrupting your casts to try to heal someone. Make sure your [XHeal] and all Heal sections are set up correctly. Also refer to [Settings] section below to see tips on stopping this from happening.

Q. My Aura wont work.
A. Auras have AuraName, AuraSpellName, and AuraSpellIcon. All three need filled out if applicable. See [Aura] section below for tips.

Q. My toon will not attack.
A. /killthis command requires [mq2melee] to be set up to stick in order to work. Either change your [Settings] AttackCommand=/attack on or add the following to your \mq2\server_charname.ini:
[MQ2Melee]
stickbreak=1
stickcmd=84% loose
stickmode=1
stickrange=30

Q. My toon will not assist.
A. What is your AssistType set to? What command did you use to start the macro? /mac bot40 name 99? something else? If set to AssistType=3, is your XTarget1 set to Group Assist's Target?

Q. My macro doesnt do X, even though I told it to.
A. Check your [Settings] OptionsCheck= to ensure that the section you want to use is there. If not, add it. If it is something you want to use during combat, also check the [Combat] section to ensure it appears somewhere as one of the CombatFrequency variables. If that doesnt work, delete the entire section and /mac bot40 load again

Q. My macro is taking a long time to do something.
A. The macro will take a long time to load compared to other macros. But after that it should cycle quickly. See [Combat] section below for tips to improve performance.

Q. Macro is spamming the same thing over and over.
A. This usually means that something is spelled incorrectly or is missing in your INI. Track down that spell/aa/item/disc in your INI and confirm the settings.

Q. My bard is /twisting over and over during rest.
A. Your [Aura] section is not filled out correctly, or a clicky item in [ClickyMaintenance] may be messed up.

Q. My item is NOT clicking.
A. There is a known issue with having more than 264 bag slots. Try moving your item to a higher slot in your inventory. If that doesnt work, you may have to do /addclicky <clicky link> to get it to work if it is a buff.

Q. I keep getting an error that spams suchandsuch .Int unparseable.
A. It may be a bug, or it may be your UI. Try with default UI and see if it still gives an error message. If it does, report that to me via PM or IRC or on the thread.

Q. Pulling doesnt work.
A. You need to verify every setting in the [Pulling] section. Your PullingMethod needs to be correct, PullingTotal / Skill / CastRange / Radius check all need to be accurate. It is very important that the section is entirely filled out.

Q. Some things are working, but other sections arent.
A. Go through the sections that arent working and check their ___Totals arent set to 0 and ____Use are set to TRUE.

Q. I have read the FAQ, I still have a problem, how do I get an answer?
A. Post or PM or come to IRC and provide your current [Settings] OptionsCheck=, and whatever [Section] isnt working for you from your INI. Also, if it is routine not working during combat, provide your [Combat] section. If it is something to do with not targeting mobs or assisting, also provide the command you used to start the macro. ie. /mac bot40 name 95. Then post your problem and desribe how/when it happens.

Commands

  • /assisttype # - Changes assist type to 1, 2, 3, 4, 5
  1. /assisttype 1 - standard /assist
  2. /assisttype 2 - auto picks targets
  3. /assisttype 3 - assists and uses XTarget1 to pick target
  4. /assisttype 4 - uses netbots to assist
  • /toggle option - Toggles "option" on or off, ie. /toggle nuke, /toggle aa, /toggle dot
  • /options - shows current options

Clickies:

  • /addclicky < item link > - adds clicky to maintain
  • /removeclicky < item link > - removes clicky from maintaing
  • /clicky - toggles maintainence of clickies

IgnoreList related:

  • /imob1 - temporarily ignores specific mob, adding it to alert list 1 (pulling related)
  • /imob - adds current target to ignoremob list
  • /cmob - adds current target to coldimmune list
  • /dmob - adds current target to diseaseimmune list
  • /fmob - adds current target to fireimmune list
  • /mmob - adds current target to magicimmune list
  • /pmob - adds current target to poisonimmune list
  • /smob - adds current target to stunimmune list

Camp related:

  • /campon - turns leash mode on
  • /campoff - turns leash mode off
  • /ame - anchors you at current spot

MQ2NavFollow related:

  • /navfollow - toggles autofollowing of designated PC

SummonTank related:

  • /sumtank - toggles summon tanking for current target

Special commands:

  • invison - uses invis
  • ivuon - uses invis vs undead
  • invisoff - removes invis/ivu
  • levon -uses levitate
  • levoff - removes levitate
  • splashp - splashes with paladin
  • splashc - splashes with cleric
  • /trusted name - Adds name to trusted rez list
  • /LootNPCs - toggles on and off looting
  • /offtank - toggles whether or not you want to offtank mobs in event of no enc/bard or unmezzable mob

Pulling related:

  • /puller - toggles whether or not you are puller
  • /pullingmethod - toggles pulling method between MQ2Navigation and MQ2AdvPath


  • /addcamp name - adds a camp to zone with that name
  • Then target al the mobs you want to add to camp
  • /stopcamp - stops creating the new camp
  • /startcamp name - starts camp with that name


  • [Imports] to import a section, use the following format (Case Sensitive): /import Section Level
  • /import Buff 95

To attempt to import all created sections:

  • /import all 95

Includes

  • spell_routines.inc - Used for casting.

Required Plugins

  • MQ2MMOBugs - Used for several TLOs.
  • MQ2MMOTLO - Used for several TLOs.
  • MQ2Moveutils - Used for movement.
  • MQ2CEcho - Used for sexiness.
  • MQ2Cast - Used to memorize spells.
  • MQ2Debuffs - Used for a couple Debuff checks.

Options Plugins (required if using certain features)

  • MQ2Melee - Required for /killthis command.
  • MQ2navigation - Required if using to pull via mq2navigation.

Configuration

Initial set up:
1. Set up your group puller/tank as intended.
2. Set XTarget1 to your main tank/assist target.
3. /mac bot40 load
4. This will create an ini in your macros folder: Name_class.ini
5. Edit the ini to desired settings. Note that AAs, Auras, Discs, SelfBuffs, Buffs are set to FALSE by default to prevent issues. Also note that ALL pet information must be done manually for now. Ensure SpellIcon names are correct. For group Buffs they will almost certainly be wrong. I suggest using single target buffs for best results and most efficiency. (make sure to edit to proper classes)

Sample Configuration

Bot_CharName_Class.ini

Primer: Sections are broken out as you see them in your INI. If you have a question or problem with a certain section, check there first. Commands for specific sections are listed in that section. Any variable that has something in [Brackets] means that the variable must equal one of those choices in that exact format. Some sections will have protips listed to help you maximize your toon.


[Settings] <-- This section is for general settings that dont really fall anywhere else

UseCamp=TRUE  		<-- Leash to camp spot? [TRUE/FALSE]
CampRadius=10 		<-- Distance before you leash
CampRadiusMax=150 	<-- If you are past this distance from camp spot, you ignore leashing so you dont try running across half the zone
InterruptToHealAt=0 	<-- You will interrupt your dot/nuke/stun/debuff/etc to attempt to heal if any group member falls below this % hp
InterruptToXHealAt=0 	<-- You will interrupt your dot/nuke/stun/debuff/etc to attempt to xheal if any XTarget PC/Merc falls below this % hp
GMAction= 		<-- Action to take if gm enters zone.  [/end, /exit, /q, /camp, pause]  If set to pause, it will unpause once gm leaves.
LootNPCs=TRUE 		<-- Do you want to loot mobs [TRUE/FALSE]
AuthorizedUsers= 	<-- list of names that can request buffs/issue commands, if blank it will allow anyone
Verbose=FALSE 		<-- Do you want skills/spells to be announced into chat when you use them
MyChannel=bc		<-- Chat to use to announce spells/skills. ie. group, bc, chat 1, guild
AnnounceChannel=bc	<-- Used for individual [Sections], independent of Verbose/MyChannel
AnnounceEvents=TRY|CAST_SUCCESS|CAST_IMMUNE|CAST_RESIST		<-- Announce only these events; when you cast a spell, when it is successful, when immune, or when it resists.  You can remove as you see fit.
EQBCAnnounceAdds=FALSE	<-- Do you want to announce your adds into eqbc? Useful if you have more than 1 group of characters that dont otherwise have access to aggro information
AutoHideNPCCorpses=FALSE <-- Automatically hide corpses every 2 minutes
ImmunityCheck=TRUE	<-- Will check against Fire/Cold/Magic/Disease/Poison immune lists and not try to use those specific spells on mobs flagged as immune to that type
BotVersion=v2.15a	<-- current version of bot
ClearTargetDataAlias=ClearTargetDataAlias	<-- Saying this alias in any channel will clear all stored target data in case bad data gets added
EmergencyAlias=EmergencyAlias		<-- Saying this alias will cause you to use whatever EmergencySkill you have designated
EmergencySkill=Death's Effigy		<-- in this case, Death's Effigy will be cast if "EmergencyAlias" is said
RestrictedZones=344,202,151,345		<-- macro will not function in these zones to prevent wasted abilities and detectability (lobby/old guild hall/pok/bazaar)
OptionsCheck=|Pulling|SetRoles|Merc|AA|Aura|AutoClickies|Buff|ClickyMaintenance|ClickyNuke|Fade|Debuff|Dot|FightBuff|HealSingle|HealPet|XHeal|Jolt|Lifetap|Mez|Nuke|Pet|Root|SelfBuff|Snare|Mana|ModRod| <-- Routines will you use if not in a raid
OptionsCheckRaid=|Pulling|SetRoles|Merc|AA|Aura|AutoClickies|Buff|ClickyMaintenance|ClickyNuke|Fade|Debuff|Dot|FightBuff|HealSingle|HealPet|XHeal|Jolt|Lifetap|Mez|Nuke|Pet|Root|SelfBuff|Snare|Mana|ModRod| <-- Routines will you use if in a raid

Associated Commands:
/ame - sets new camp spot
/campon - turns leashing to camp spot on
/campoff - turns leashing to camp spot off
/lootnpcs - toggles looting in INI
/options - lists current options
/toggle [section] - /toggle Nuke - will toggle use of that section in the INI


Mob_Ignore_List.ini related commands to ignore certain mobs or add them to immune lists.
IgnoreList related:
/imob1 - adds current target to alert list 1 to temporarily ignore for pulling
/imob - adds current target to ignoremob list
/cmob - adds current target to coldimmune list
/dmob - adds current target to diseaseimmune list
/fmob - adds current target to fireimmune list
/mmob - adds current target to magicimmune list
/pmob - adds current target to poisonimmune list
/smob - adds current target to stunimmune list


Protip: OptionsCheck= is what tells the macro what sections to use. It is the single most important variable to verify is set up correctly. If something isnt working, check here first.



[Assist] <-- All things assist related

AssistType=3			<-- How you pick targets. AssistType options are; 1 = /assist, 2 = pick own target, 3 = use XTarget1 as your kill target, 4 = use netbots to pick target
AssistPC=PeteSampras		<-- by default, you will assist this pc if not designated via /mac bot40 name
AssistAt=98			<-- by default, you will assist at this % if not designated via /mac bot40 name pct 
OpeningMove=/pet attack		<-- When you first /assist AssistPC at AssistAt percent, you will do this action
AttackRange=150			<-- You will not do anything to mob until it is within this range
AmIOffTank=FALSE		<-- Do you want to offtank mobs on this character
UseMelee=FALSE			<-- Do you want to use Melee if within melee range
UseArchery=FALSE		<-- Do you want to use Archery if in the designated archery ranges?
ArcheryMaxDistance=200		<-- Max range to use archery
ArcheryMinDistance=35		<-- Min range to use archery, note this must be at least 35
SetTargetMessage=Kill_this	<-- This message will be announced/received to designate the kill target
AttackCommand=/killthis		<-- command issued if UseMelee=TRUE.  /killthis or /attack on
BurnModeAlias=BurnModeAlias	<-- Using this alias in any channel will turn the variable "BurnMode" to true.  Or you can use /burn to toggle on and off.  ${BurnMode} can be used as a condition for spells/skills in order to use them or not

Associated commands:
/assisttype [1|2|3|4] <-- toggles assist type. 1 = /assist, 2 = pick own target, 3 = use XTarget1 as your kill target, 4 = use netbots to pick target
/burn - toggles BurnMode
/offtank - toggles AmIOffTank



[Combat]

CombatFrequency1=XHeal|Heal					<-- This is what you care about least, it will check 1 out of every 5 cycles
CombatFrequency2=Rez|ModRod|Mana				<-- This checks 2 out of every 5 cycles
CombatFrequency3=						<-- This checks 3 out of every 5 cycles
CombatFrequency4=FightBuff					<-- This checks 4 out of every 5 cycles
CombatFrequency5=Lifetap|AA|Dot|Jolt|Nuke|Snare|ClickyNuke|Jolt	<-- This checks every cycle in this exact order.
StandardCombatOptions=Bard|XHeal|HealSingle|HealGroup|HealBalance|HealSelf|HealPet|Disc|MainTankBuff|FightBuff|Lifetap|Stun|AA|Dot|Nuke|Snare|ClickyNuke|Jolt|Rez|ModRod|Mana|Merc

Protip:
Remove the options you dont use, and move the sections around to your own priorities to fit your playstyle. Note that you can list sections multiple times, and they will check that much more often. Also, you can use "Heal" as a wildcard to check all types of heals. Setting this section up correctly will directly effect how well your macro works. It is one of the single most important sections for performance.



[Follow] <-- All things follow related

FollowMethod=stick|30 healer		<-- available options are: nav, stick, advpath, keypress.  If you use stick, you can use additional settings by adding | and your setting.  ie: stick|40 loose  would /stick name 40 loose
FollowCommand=FollowCommand		<-- Using this alias in any channel will turn make all characters follow that character using FollowMethod
StopFollowCommand=StopFollowCommand	<-- Using this alias in any channel will turn auto following off
MoveUpCommand=MoveUpCommand		<-- Using this alias in any channel will cause a 1 time move up to your current location via using /keypress forward and running in a straight line to you



[ImHit] <-- Section for things to do when you get hit

ImHitTotal=2		<-- Total of ImHit items
ImHitAnnounce=FALSE	<-- Announce in AnnounceChannel?

ImHitUse1=TRUE						<-- Use this?
ImHitSpellName1=Embalmer's Carapace			<-- Spell/AA/Disc/Item name
ImHitRecast1=1s						<-- How often do i want to try to use this
ImHitUseAtMyHP1=20					<-- Use this only when my hitpoints get to this percent
ImHitConditions1=${SpawnCount[pccorpse ${AssistPC}]}	<-- Any special conditions required to fire this.  In this case, I only want to use it if the AssistPC is dead

ImHitUse2=${If[${Group},TRUE,FALSE]}			<-- I only want to use this if I am not soloing.
ImHitSpellName2=Improved Death Peace
ImHitRecast2=1s
ImHitUseAtMyHP2=80
ImHitConditions2=

Another example (enchanter):
[ImHit]
ImHitTotal=4

ImHitUse1=TRUE
ImHitSpellName1=Self Stasis
ImHitUseAtMyHP1=30

ImHitUse2=TRUE
ImHitSpellName2=Mind Over Matter
ImHitUseAtMyHP2=60

ImHitUse3=FALSE
ImHitSpellName3=Veil of Mindshadow
ImHitUseAtMyHP3=50

ImHitUse4=TRUE
ImHitSpellName4=Beguiler's Directed Banishment
ImHitUseAtMyHP4=40



[Custom]

CustomCombatTotal=1	<-- How many CustomCombat commands do i have?
CustomRestTotal=1	<-- How many CustomRest commands do i have?
CustomCombat1=/if (${Me.Buff[Gift of Deathly Resolve].ID} && ${Me.Song[Bestow Mortality].ID}) /nomodkey /notify ShortDurationBuffWindow SDBW_Buff${Math.Calc[${Me.Song[Bestow Mortality].ID}-1].Int}_Button leftmouseup		<-- This buff blocks song spell from landing when a certain buff is on, so I want to click it off if the other buff is on
CustomRest1=/if (${Me.Buff[Gift of Deathly Resolve].ID} && ${Me.Song[Bestow Mortality].ID}) /nomodkey /notify ShortDurationBuffWindow SDBW_Buff${Math.Calc[${Me.Song[Bestow Mortality].ID}-1].Int}_Button leftmouseup		<-- This buff blocks song spell from landing when a certain buff is on, so I want to click it off if the other buff is on

Protip:
Custom is a powerful tool for those well versed in macros. It let's you do anything you want. You can create include files and /call them via [Custom] section.
Or you can use it to do specific commands that are otherwise not available in any other section, like the example above.



[Pulling]

AmIPuller=FALSE		<-- Am I set to puller by default? If so, I will immediately start pulling on macro launch.  toggle this to TRUE/FALSE in game using the command /puller
PullRadius=1000		<-- How far out am i looking for mobs?
PullZRadius=30		<-- How high/low from my current Z position am I looking for mobs?
PullCastRange=150	<-- I wont try using either of my cast skills before this range
AlertListClear=FALSE             <-- Clear the alert list every AlertListClearTimer interval of time?
AlertListClearTimer=60m        <-- how often the alert list clears (also clears on macro startup
CourseCorrectionTimer=5       <-- how often to course correct (in tenths of a second) when pulling.  set to 300 to basically never course correct
MQ2NavPullRadius=10	<-- if using mq2navigation as my PullingMethod, how far from mob spawn point am I searching?
MQ2NavPullZRadius=10	<-- If using Mq2navigation as my PullingMethod, how high/low from mob spawn point am I searching?
ReturnActionTotal=1	<-- Number of actions to take once I have aggroed a mob while pulling
ReturnAction1=/alt act ${Me.AltAbility[Cloak of Shadows].ID}	<-- in this case, I want to invis after aggroing an add.
PullConColor=GREY,GREEN,LIGHT BLUE,BLUE,WHITE,YELLOW		<-- What Target.ConColor am I willing to pull? RED is turned off by default so you dont wipe yourself
PullingMethod=Standard	<-- What method do I want to pull/kill with?  Options are standard, nav, hunt, seek.  standard=searches a radius and brings mob to camp, nav=uses mq2nav and you create a specific camp using /addcamp name, target mobs you want to kill, /stopcamp, /startcamp name. hunt=uses mq2nav to kill anything in line of sight.  seek=uses mq2moveutils to kill things in line of sight.
PullingAnnounceCMD=NULL <-- what command, if any, do you want to issue when you pull a mob? ie. /bcaa //keypress 1, or /g INC %T
PullingTotal=1		<-- How many spell/aa/disc/items do you want to pull with
PullAtMyHPs=75		<-- your minimum hitpoints to do pulling
PullConditions=${Me.PctMana}>70  && !${SpawnCount[pccorpse radius 40]} <-- whatever conditions you want to check before attempting any pulls, in this case I want at least 70% mana and no corpses of my groupmates.

PullSkillName1=Lifetap  <-- spell/aa/disc/clicky item name.  I suggest something with a short reuse, or a pet spell so you dont need line of sight.
PullSkillRequiresLineOfSight1=TRUE  <-- does the pullskill require line of sight. ie. pets do not, and some pet spells do not
PullSkillDistance1=190  <-- how far out do you want to use this?  i suggest something LESS than max range, or you are gonna have a bad time
PullSkillSummon1=	<-- this is a remnant to summon items to throw/bow.  it isnt used right now but i may add it back in

PullSkillName2=		<-- it will use this if PullSkill1 isnt ready, ideally you would have a line of sight spell and non-line of sight, or else why bother using this at all
PullSkillRequiresLineOfSight2=TRUE
PullSkillDistance2=
PullSkillSummon2=

Associated commands:
/pullingmethod [standard|nav|hunt|seek] - toggles pulling method
/puller - toggles puller

MQ2Navigation camp setup example to add a camp called "center":
1. /addcamp center
2. use the map to target all the mobs you want to kill, in the order you want to kill them, once finished, go to next step
3. /stopcamp

4. whenever you want to use this camp now, or in the future, just /startcamp center

Camps are set in your \mq2\Camps.ini folder if you want to delete camps later or share them.



[Roles] <-- This section only functions if you are leader of your group

SetRoles=TRUE				<-- Do you want to use this section?
GroupLeader=PeteSampras			<-- After setting all the other roles, you will make Petesampras leader
GroupMainTank=KimJongUn			<-- KimJongUn will be set as GroupMainTank
GroupMainAssist=HansBrix		<-- HansBrix will be set as GroupMainAssist
GroupPuller=Fancy			<-- Fancy will be set as puller
GroupXTarget1=Group Assist Target	<-- When not in raid, a 1 time check will be made to see if XTarget1 is set to this role, and if not, set it
RaidXTarget1=Raid Assist 1 Target	<-- When in raid, a 1 time check will be made to see if XTarget1 is set to this role, and if not, set it



[Merc] <-- this will auto manage your merc, leave the merc window open

MercAssistAt=100		<-- tired of your merc nuking/attacking right away? turn off autoassist on merc window and set this to 97 or so
MercStanceNormal=Reactive	<-- Do you want this to be balanced on normal mobs? Reactive? Burn? Set that stance here
MercStanceNamed=Reactive	<-- what mode do you want your merc to be in for named? set that here
MercStanceOOC=Reactive		<-- What mode do you want your merc to be in when nothing is going on? passive? dont care? set that here



[AA] <-- This section only fires during combat

AATotal=12 		<-- total AAs you want to use
AAAnnounce=FALSE	<--announce them in AnnounceChannel?

AAUse1=TRUE						<-- Use this AA?
AASpellName1=Reluctant Benevolence			<-- AA Name
AAUseAtMobPctHP1=100					<-- Use when mob is 100% or less HP
AAStopAtMobPctHP1=1					<-- Stop using when mob is 1% hp
AARecast1=1s						<-- How often do I want this to recast? 1s if as soon as ready, 10m if I only want it every 10 minutes even though it is ready sooner
AANamedOnly1=FALSE					<-- Use this only on mobs that are named? (you will get some false positives)
AAConditions1=${Spell[Reluctant Benevolence].Stacks}	<-- What conditions need met for this?


AAUse2=TRUE
AASpellName2=Empowered Focus of Arcanum
AAUseAtMobPctHP2=98
AAStopAtMobPctHP2=5
AARecast2=1s
AANamedOnly2=FALSE
AAConditions2=

AAUse3=TRUE
AASpellName3=Army of the Dead
AAUseAtMobPctHP3=96
AAStopAtMobPctHP3=5
AARecast3=1s
AANamedOnly3=FALSE
AAConditions3=${SpawnCount[corpse radius 50]}>4		<-- This spell only works if corpses are nearby

AAUse4=TRUE
AASpellName4=Silent Casting
AAUseAtMobPctHP4=98
AAStopAtMobPctHP4=5
AARecast4=1s
AANamedOnly4=TRUE
AAConditions4=

AAUse5=TRUE
AASpellName5=Fundament: Third Spire of Necromancy
AAUseAtMobPctHP5=98
AAStopAtMobPctHP5=5
AARecast5=1s
AANamedOnly5=FALSE
AAConditions5=(${Me.Buff[Curse of Muram].ID}||${BurnMode}||${Me.Buff[Gift of Deathly Resolve].ID}) 	<-- This AA amplifies these other buffs and I only want to use it if they are on or I am in BurnMode

AAUse6=TRUE
AASpellName6=Embrace The Decay
AAUseAtMobPctHP6=96
AAStopAtMobPctHP6=5
AARecast6=1s
AANamedOnly6=FALSE
AAConditions6=((${Debuffs.Poisoned}||${Debuffs.Diseased}) && !${Raid.Members}) 			<-- This is a cure, and I only want to auto cure outside of raids because some raids require you NOT to cure

AAUse7=TRUE
AASpellName7=Swarm of Decay
AAUseAtMobPctHP7=96
AAStopAtMobPctHP7=5
AARecast7=1s
AANamedOnly7=FALSE
AAConditions7=

AAUse8=TRUE
AASpellName8=Rise of Bones
AAUseAtMobPctHP8=96
AAStopAtMobPctHP8=5
AARecast8=1s
AANamedOnly8=FALSE
AAConditions8=

AAUse9=TRUE
AASpellName9=Frenzy of the Dead
AAUseAtMobPctHP9=96
AAStopAtMobPctHP9=5
AARecast9=1s
AANamedOnly9=FALSE
AAConditions9=${Me.Pet.ID}		<-- This AA only works if I have a pet up

AAUse10=TRUE
AASpellName10=Gift of Deathly Resolve
AAUseAtMobPctHP10=96
AAStopAtMobPctHP10=50
AARecast10=1s
AANamedOnly10=TRUE
AAConditions10=(!${Raid.Members}||${BurnMode})	<--  I only want this to fire on a raid if I tell it to because of trashed appearing as named, or mini named before the big named.  Otherwise it will only fire on named if not in a raid

AAUse11=TRUE
AASpellName11=Funeral Pyre
AAUseAtMobPctHP11=96
AAStopAtMobPctHP11=50
AARecast11=1s
AANamedOnly11=TRUE
AAConditions11=!${SpawnCount[group brd]}	<-- Bard Aria gives the same effect as this AA, only with no penalties.  So I dont want to use this if a bard is in group.

AAUse12=TRUE
AASpellName12=Mercurial Torment
AAUseAtMobPctHP12=96
AAStopAtMobPctHP12=50
AARecast12=1s
AANamedOnly12=TRUE
AAConditions12=(!${Raid.Members}||${BurnMode})	<-- this is a really long reuse AA that I only want to use in BurnMode or if i click it manually when on a raid, otherwise it will get used on group named whenever ready.



[Aggro]

AggroSpellName=Force of Emarr		<-- name of disc/aa/spell/item.  
AggroSpellGem=gem2			<-- gem#,alt,disc,item
AggroConditions=!${Raid.Members}	<-- any addition conditions
AggroAtAggroPct=50			<-- if any group members are above this percent on aggro meter, you will use one of your automatically used aggro spells if available or your AggroSpellName
AEAggroMinMobCount=1                <-- Will only use AE aggro spells if at least this many NPCs are nearby on aggro

NOTE: PAL/SK automatically use Audacity, Challenge, and AE/single target Aggro AAs. Additionally, SK auto uses terror line.



[Aura] <-- section for aura, by default this is only called during rest. You can have it call during combat by adding it to the [Combat] section

AuraTotal=2					<-- Total auras, if you dont have any auras, set this to 0 or it could hang you up
AuraAnnounce=FALSE				<-- Announce auras to AnnounceChannel?

AuraUse1=TRUE					<-- Use?
AuraSpellName1=Aura of the Pious		<-- Name of the spell/item/disc you cast
AuraSpellIcon1=Aura of the Pious Effect		<-- Name of the song icon in song window, if any
AuraSpellGem1=gem12				<-- gem#, alt, item, disc
AuraName1=Aura of the Pious			<-- name of aura as it appears in your aura window. (shift a)

AuraUse2=TRUE
AuraSpellName2=Circle of Divinity Rk. II	<-- notice SpellName, Icon, and Name are all different.  Ensure everything is correct.  Case Sensitive.  circle of divinity isnt the same as Circle of Divinity
AuraSpellIcon2=Divinity Effect
AuraSpellGem2=gem12
AuraName2=Circle of Divinity



[Bard] <-- bard specific section

UseSlow=TRUE			<-- use SlowName to slow mobs?
SlowName=Requiem of Time	<-- Item/song name to slow with
UseTashOrb=FALSE		<-- if you have this clicky and want to use it, TRUE
RestTwist=5 6 7 9 10		<-- twist these songs in rest mode.  NOTE:  If your [Aura] section isnt filled out correctly or you leave something blank there, your twist will screw up in rest mode.
CombatTwist=5 6 7 9		<-- twist these songs in combat mode
UseSingleMez=TRUE         <-- Will use AA first, then any other single target mezzes you have memmed
UseCrescendo=TRUE        <-- Will use Crescendo line if you have it memmed on macro start
CrescendoAtGroupMana=30   <-- Will use Crescendo if  UseCrescendo=TRUE, you have Crescendo memmed, and a caster's mana drops  below this amount
CrescendoMyMinMana=30     <-- Will only use Crescendo if your mana is above this amount


[Buff]

BuffXTargets=FALSE					<-- Allows you to buff pc/mercs/pets on your extended window that arent aggro on you
BuffPets=FALSE						<-- Allows you to buff pets in group
AutoInvis=FALSE						<-- Will autoinvis using InvisSpell if an NPC is within 50 range of you during rest routine, AutoBreakInvis must be set to TRUE for this feature to work.
AutoBreakInvis=FALSE					<-- Allow macro to work even while invis? or stand there and let nature take its course if someone aggros on accident.
InvisSpell=Group Perfected Invisibility			<-- invis spell
InvisSpellGem=alt					<-- [gem#|alt|item]
InvisUndeadSpell=Group Perfected Invisibility to Undead	<-- ivu spell
InvisUndeadSpellGem=alt					<-- [gem#|alt|item]
LevitateSpell=Group Perfected Levitation		<-- levitate spell
LevitateSpellGem=alt					<-- [gem#|alt|item]

BuffTotal=2						<-- Total buffs to check
BuffAnnounce=FALSE

BuffUse1=TRUE						<-- Use?
BuffSpellName1=Voice of Premeditation			<-- Spell/AA/item name to cast
BuffSpellIcon1=Voice of Premeditation			<-- Icon in BuffWindow to know if it is already on the person
BuffSpellGem1=gem12					<-- [gem#|alt|item]
BuffAlias1=|encvoice|					<-- Alias to request, must be in |alias| to separate it.  saying "encvoice" in any chat channel will request this buff.  May require being asked twice depending on spell gem timer of that spell
BuffClasses1=BST,CLR,DRU,ENC,MAG,PAL,RNG,SHD,SHM,WIZ	<-- specify what classes get it, or leave it blank so it will ONLY cast on demand.

BuffUse2=TRUE
BuffSpellName2=Hastening of Aransir
BuffSpellIcon2=Hastening of Aransir
BuffSpellGem2=gem12
BuffAlias2=|enchaste|
BuffClasses2=BER,BRD,BST,MAG,MNK,NEC,PAL,RNG,ROG,SHD,WAR

Protips:
There are several aliases that can by used in any chat channel by your AuthorizedUsers to invis, ivu, univis, levitate, and remove levitate:
invison
ivuon
invisoff
levon
levoff

To see what category your buff fits into, or to use it as a conditions, use this format: ${BuffType1}
You can use Buffs to request *ANY* spell/aa/item be cast by someone.
You can also ask for a buff to be done on someone else. like if you want "encvoice" on your friend Francisco, you would use: encvoice on Francisco

Want a mod rod? set it up! Want a port? want 15 different ports?
want cures on demand? Want to set up a heal that will cast on demand so you can heal whomever you want?
Example wizard translocate request:
BuffUse2=TRUE
BuffSpellName2=Teleport
BuffSpellIcon2=
BuffSpellGem2=alt
BuffIconAlt2=
BuffAlias2=|AE TL| <-- if you say AE TL in any chat channel, it will cast Teleport
BuffClasses2= <-- no classes, so it wont ever cast it without being asked

Example cure request:
BuffUse2=TRUE
BuffSpellName2=Radiant Cure
BuffSpellIcon2=
BuffSpellGem2=alt
BuffIconAlt2=
BuffAlias2=|cureme| <-- if you say "cureme", it will cast radiant cure
BuffClasses2= <-- no classes, so it wont ever cast it without being asked



[ClickyMaintenance]

clickies=1				<-- total number of clickies to use.  Note all modern clickies are automatically clicked other than Geomantra and damage shields due to stacking issues.  So only add clickies that arent auto used.
click1=Black Chain Bridle		<-- Name of click.  If clicky is a mount, it will always attempt to click it at least once to check indoor/outside zone status.
doclickies=1				<-- use clickies?  this is toggled in game via /click

Associated commands:
/addclicky < link >
/removeclicky < link >
/clicky



[ClickyNuke]

ClickyNukeTotal=3		<-- Total clicky nukes
ClickyNukeAnnounce=FALSE	<-- Announce in AnnounceChannel?

ClickyNukeUse1=TRUE		<-- Use?
ClickyNukeName1=Deathwhisper	<-- Name of item
ClickyNukeConditions1=		<-- any conditions I should check?  ie. shaman epic can look to make sure you dont already have the song on you in case of double shaman in group. or ${BurnMode}
ClickyNukeSpellGem1=item	<-- item
ClickyNukeRecast1=30s		<-- recast timer, default is 1s, but sometimes item timers get bugged and appear as if there is no timer, when it is still locked out.  placing a Recast timer here is useful in those conditions, especially for bards.
ClickyNukeUseAtMobPctHP1=96	<-- use at mob HP
ClickyNukeStopAtMobPctHP1=1	<-- stop using at mob's HP
ClickyNukeNamedOnly1=FALSE	<-- named only?

ClickyNukeUse2=TRUE
ClickyNukeName2=Lucid Soulreaper Robe
ClickyNukeConditions2=
ClickyNukeSpellGem2=item
ClickyNukeRecast2=180s		<-- I suggest a recast timer that is at least .25-.33 of the duration of the normal item recast timer so that it doesnt spam you if timer bugs, but it still checks it early.
ClickyNukeUseAtMobPctHP2=96
ClickyNukeStopAtMobPctHP2=1
ClickyNukeNamedOnly2=FALSE

ClickyNukeUse3=TRUE
ClickyNukeName3=Blightbringer's Tunic of the Grave
ClickyNukeRecast3=120s
ClickyNukeUseAtMobPctHP3=96
ClickyNukeStopAtMobPctHP3=1
ClickyNukeNamedOnly3=FALSE
ClickyNukeConditions3=



[Debuff] <-- Debuffs get checked every combat cycle right after mezzes and roots, you do not need to add them to [Combat] section unless you just want to check that much more often

DontDebuffConColor=|GREY|GREEN|		<-- dont bother debuffing these Target.ConColor
DebuffAdds=TRUE				<-- Debuff adds?  I would only worry about this if you arent mezzing/rooting adds.
DebuffTotal=4				<-- Total for non-named
DebuffTotalIfNamed=4			<-- Total for named, maybe add some AAs or extra resist debuffs
ForceMemDebuff=FALSE			<-- memorize a spell if it isnt already memorized
DebuffAnnounce=FALSE			<-- Announce attempts, success, resists, immune messages in AnounceChannel

DebuffUse1=TRUE				<-- Use?
DebuffSpellName1=Enunciation of Tashan	<-- Name of spell, AA, item, disc
DebuffConditions1=			<-- any special conditions?
DebuffSpellGem1=gem6			<-- [gem#|alt|disc|item]
DebuffUseAtMobPctHP1=100		<-- if you want to debuff adds, set this to 100%
DebuffStopAtMobPctHP1=1			<-- stop debuffing if mob gets below this % hp
DebuffRecast1=12m			<-- Dont try to recast before this time.
DebuffMaxTries1=2			<-- If spell gets resisted, try it this many times at most

DebuffUse2=TRUE
DebuffSpellName2=Diminishing Helix
DebuffSpellGem2=gem2
DebuffUseAtMobPctHP2=100
DebuffStopAtMobPctHP2=1
DebuffRecast2=5m
DebuffMaxTries2=2
DebuffConditions2=!${Debuff3${DebuffID}}	<-- I dont want to slow it if it is already slowed, but I prefer this slow, so try it first

DebuffUse3=TRUE
DebuffSpellName3=Dreary Deeds
DebuffConditions3=!${Debuff2${DebuffID}}	<-- I dont want to slow it if it is already slowed by the other spell, and I prefer the other spell so i set this at a lower pct HP and checks after previous
DebuffSpellGem3=alt
DebuffUseAtMobPctHP3=95
DebuffStopAtMobPctHP3=1
DebuffRecast3=2m
DebuffConditions3=

DebuffUse4=TRUE
DebuffSpellName4=Bite of Tashani
DebuffSpellGem4=alt
DebuffUseAtMobPctHP4=100
DebuffStopAtMobPctHP4=1
DebuffRecast4=2m
DebuffMaxTries4=2
DebuffConditions4=!${Debuff1${DebuffID}}  <-- I am only using this if the first spell failed or wasnt available for recast yet.

Protip:
[Debuff]
DebuffConditions2=!${Debuff1${DebuffID}}
${Debuff#${DebuffID}} is the timer, ${DebuffID} is the npc id. so if you wanted to see if your debuff1 was on the mob in the conditions, it would be ${Debuff1${DebuffID}}. Useful if you want to use 2 slows, or 2 malos, but dont want to use both on same mob.

With the ID, you can use the Spawn TLO.

Such as:
DebuffConditions2=${Select[${Spawn[${DebuffID}].ConColor},RED,YELLOW]}



[Disc]

DiscTotal=2				<-- Total

DiscUse1=TRUE				<-- Use
DiscName1=Deftdance Discipline		<-- Leave as rank 1 to auto detect future ranks
DiscNamedOnly1=TRUE			<-- only use this on named?
DiscEndCost1=0				<-- how much endurance does this require, if any
DiscRecast1=1s				<-- how often do you want this used if something other than as available
DiscConditions1=			<-- do you only want to use this if a certain buff or AA combination is on you or available? or only if another disc is already used?  that information goes here

DiscUse2=TRUE
DiscName2=Thousand Blades
DiscNamedOnly2=TRUE
DiscEndCost2=0
DiscRecast2=1s
DiscConditions2=${Me.PctHPs}<40



[Dot] <-- This is the only standard section that has a max amount you can use because there are some hardcoded checks. If I can use every necro dot in last 5 levels with 15, so can you.

DotTotal=11				<-- Total dots to use against non-named (Max 15)
DotTotalIfNamed=11			<-- Total dots to use against named mobs (Max 15)
ForceMemDot=FALSE			<-- should I memorize dots if they arent already memmed? [TRUE/FALSE].  I *highly* suggest mq2mmofastmem if TRUE
DotAnnounce=FALSE			<-- Announce in AnnounceChannel?

DotUse1=TRUE				<-- Use?
DotSpellName1=Osalur's Flashblaze	<-- Name of spell.  You can leave as rank 1, and it will auto detect ranks as you level.
DotSpellGem1=gem4			<-- gem#, really only matters if you use forcemem, otherwise it will cast correctly if spell is already memorized
DotUseAtMobPctHP1=98			<-- use at mob's HP
DotStopAtMobPctHP1=5			<-- stop using at this percent
DotRecast1=1s				<-- recast timer, if any.  Do you only want to Use this dot every minute even though it wears off every 18 seconds
DotMaxTries1=2				<-- how many times per mob can this spell be resisted before you dont try it again
DotConditions1=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>20))||${Me.Song[Deathly Resolve].ID}) <--conditions to use the dot. In this example, I will use this dot down to 5% hp if: (I dont have the buff "Gift of Deathly Resolve" and it is a named mob or not a named and above 20% health.) OR if i do have the buff "Gift of Deathly Resolve" on me

DotUse2=TRUE
DotSpellName2=Itkari's Swift Lifedraw
DotSpellGem2=gem3
DotUseAtMobPctHP2=98
DotStopAtMobPctHP2=5
DotRecast2=1s
DotMaxTries2=2
DotConditions2=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>20))||${Me.Song[Deathly Resolve].ID})

DotUse3=TRUE
DotSpellName3=Bora's Swift Sickness
DotSpellGem3=gem2
DotUseAtMobPctHP3=98
DotStopAtMobPctHP3=5
DotRecast3=1s
DotMaxTries3=2
DotConditions3=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>20))||${Me.Song[Deathly Resolve].ID})

DotUse4=TRUE
DotSpellName4=Pernicious Wounds
DotSpellGem4=gem12
DotUseAtMobPctHP4=97
DotStopAtMobPctHP4=30
DotRecast4=1s
DotMaxTries4=2
DotConditions4=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>90))||${Me.Song[Deathly Resolve].ID})

DotUse5=TRUE
DotSpellName5=Pyre of Marnek
DotSpellGem5=gem7
DotUseAtMobPctHP5=98
DotStopAtMobPctHP5=10
DotRecast5=1s
DotMaxTries5=2
DotConditions5=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse6=TRUE
DotSpellName6=Coruscating Shadow
DotSpellGem6=gem12
DotUseAtMobPctHP6=96
DotStopAtMobPctHP6=20
DotRecast6=1s
DotMaxTries6=2
DotConditions6=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>40))||${Me.Song[Deathly Resolve].ID})

DotUse7=TRUE
DotSpellName7=Ignite Thoughts
DotSpellGem7=gem12
DotUseAtMobPctHP7=98
DotStopAtMobPctHP7=10
DotRecast7=1s
DotMaxTries7=2
DotConditions7=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse8=TRUE
DotSpellName8=Termination
DotSpellGem8=gem12
DotUseAtMobPctHP8=98
DotStopAtMobPctHP8=10
DotRecast8=1s
DotMaxTries8=2
DotConditions8=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse9=TRUE
DotSpellName9=Pyre of the Forsaken
DotSpellGem9=gem12
DotUseAtMobPctHP9=98
DotStopAtMobPctHP9=10
DotRecast9=1s
DotMaxTries9=2
DotConditions9=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse10=TRUE
DotSpellName10=Dissolution
DotSpellGem10=gem12
DotUseAtMobPctHP10=96
DotStopAtMobPctHP10=10
DotRecast10=1s
DotMaxTries10=2
DotConditions10=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse11=TRUE
DotSpellName11=Halstor's Pallid Haze
DotSpellGem11=gem12
DotUseAtMobPctHP11=96
DotStopAtMobPctHP11=10
DotRecast11=1s
DotMaxTries11=2
DotConditions11=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse12=TRUE
DotSpellName12=Halstor's Grasp
DotSpellGem12=
DotUseAtMobPctHP12=96
DotStopAtMobPctHP12=10
DotRecast12=1s
DotMaxTries12=2
DotConditions12=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

DotUse13=TRUE
DotSpellName13=Binaesa Venom
DotSpellGem13=
DotUseAtMobPctHP13=96
DotStopAtMobPctHP13=10
DotRecast13=1s
DotMaxTries13=2
DotConditions13=((!${Me.Buff[Gift of Deathly Resolve].ID} && (${Target.Named}||${Target.Name.Find[#]}||${Target.PctHPs}>30))||${Me.Song[Deathly Resolve].ID})

Available Variable: ${DotOn1}, ${DotOn2}, etc. Returns TRUE if that dot is on mob, FALSE if not.



[Fade]

FadeTotal=1						<-- Fade total
FadeAnnounce=TRUE					<-- Announce in AnnounceChannel?
FadeUse1=TRUE						<-- Use?
FadeSpellName1=Death's Effigy				<-- Name of deaggro AA
FadeUseAtMyHP1=15					<-- Use if my % HP get below this amount
FadeConditions1=${Group.MainTank.ID}==${Me.ID}		<-- any special conditions i should do?



[FeignDeath]

FeignDeathStandAtMyHP=50	<-- If the macro feigned you because you fellow below the designated % HP, it will not stand you until you reach this mount.  It ignores if you feign yourself manually.
FeignDeathTotal=2		<-- Total
FeignDeathAnnounce=FALSE	<-- Announce in AnnounceChannel?

FeignDeathAfter1=100			<-- This is same as jolt.  There really isnt a point to this any more, but people specifically asked for it, i suggest setting it really high.
FeignDeathUse1=TRUE			<-- Use?
FeignDeathSpellName1=Death's Effigy	<-- Spell/AA/Disc name.  Use your best stuff w/ lowest HP to check first so you live more often.
FeignDeathSpellGem1=alt			<-- [gem#|alt|disc|item]
FeignDeathRecast1=1s			<-- Recast delay between attemps if used as a jolt
FeignDeathUseAtMyHP1=20			<-- Use if my HP % gets below this
FeignDeathConditions1=			<-- Any special conditions.  like ${Me.ID}!=${Group.MainTank.ID} if you are an SK that doesnt want to FD if you are tanking

FeignDeathAfter2=100
FeignDeathUse2=FALSE
FeignDeathSpellName2=Improved Death Peace
FeignDeathSpellGem2=alt
FeignDeathRecast2=10s
FeignDeathUseAtMyHP2=40
FeignDeathConditions2=



[FightBuff]

FightBuffTotal=1		<-- Total fightbuffs
ForceMemFightBuff=FALSE		<-- memorize if not memmed?
FightBuffAnnounce=FALSE		<-- Announce in AnnounChannel

FightBuffUse1=TRUE						<-- Use
FightBuffSpellName1=Bestow Mortality				<-- Name of spell/disc/aa/item
FightBuffSpellIcon1=Bestow Mortality				<-- name of the song/buff icon as it appears on you
FightBuffSpellGem1=gem7						<-- gem#,alt,disc,item
FightBuffNamedOnly1=FALSE					<-- Use this only on named mobs?
FightBuffForAggro1=FALSE					<-- remnant mostly, this was for SK/PAL that only wanted to use temp hp buffs if tanking
FightBuffConditions1=!${Me.Buff[Gift of Deathly Resolve].ID}	<-- any special conditions to use this FightBuff?  In this example, this FightBuff blocks a proc from that other buff, even though it stacks with the spell itself.

Alternate example to use yaulp and cast group HoT if a cleric:
[FightBuff]
FightBuffTotal=2
ForceMemFightBuff=FALSE
FightBuffAnnounce=FALSE

FightBuffUse1=TRUE
FightBuffSpellName1=Elixir of the Beneficent
FightBuffSpellIcon1=Elixir of the Beneficent
FightBuffConditions1=${Group.MainTank.Distance}<${Spell[Elixir of the Beneficent].AERange}
FightBuffSpellGem1=gem7
FightBuffNamedOnly1=FALSE
FightBuffForAggro1=FALSE

FightBuffUse2=TRUE
FightBuffSpellName2=Yaulp XIII
FightBuffSpellIcon2=Yaulp XIII
FightBuffSpellGem2=gem12
FightBuffNamedOnly2=FALSE
FightBuffForAggro2=FALSE



[GoM] <-- This section only checks if you have GoM on and it is in the nuke or dot cycle

GoMTotal=0		<-- This can only be 1 or 0
GoMTotalIfNamed=0	<-- This can only be 1 or 0
GoMAnnounce=FALSE	<-- Announce to AnnounceChannel?
GoMUse1=TRUE		<-- Use?
GoMSpellName1=		<-- Name of spell to cast, usually people set up huge mana spells here or group buffs like champion (back in the day), group lion, group hots, etc. but the purpose of this has been trivialized in recent expansions due to massive mana regen
GoMSpellIcon1=		<-- I honestly have no idea.  It was originally supposed to be a buff icon if you were casting a buff as your GoM spell.. but I dont see it getting used in the macro and i think it can be deleted.  
GoMSpellGem1=		<-- [gem#]



[HealSingle] <-- only heals group members

HealPullerName=PeteSampras		<-- This guy is out messing with mobs on pulls, dont heal him until he is within range of HealPullerDist or else you may cause unintended aggro
HealPullerDist=50			<-- safe distance to heal designated puller
HealSingleTotal=6			<-- total heals
HealSingleAnnounce=FALSE

HealSingleUse1=TRUE			<-- Use?
HealSingleSpellName1=Burst of Life	<-- Nameof spell/aa/item
HealSingleConditions1=${Group.Member[${gmember}].Class.ShortName.NotEqual[SHM]}  <-- I dont want to waste this spell on a shaman that can self heal, the check to see members is: ${Group.Member[${gmember}].Whatever}
HealSingleSpellGem1=alt			<-- [gem#|alt|item]
HealSingleUseAt1=80			<-- Only use this if the person is below this % HP
HealSingleStopAt1=90			<-- Cancel the cast if the person gets above this % HP
HealSingleStopAtMobPctHP1=0		<-- if the mob gets below this %, dont bother casting heal.
HealSingleRecast1=1s			<-- artificial delay to enable use of HoT and delayed heals. unique timer for each group member

HealSingleUse2=TRUE
HealSingleSpellName2=Beacon of Life 	<-- I suggest using any free heals first, like AAs to conserve mana
HealSingleConditions2=
HealSingleSpellGem2=alt
HealSingleUseAt2=80
HealSingleStopAt2=90
HealSingleStopAtMobPctHP2=0
HealSingleRecast2=1s

HealSingleUse3=TRUE
HealSingleSpellName3=Fifteenth Emblem	<-- After the free heals, put your most important/lowest hitpoint heals first so they check first. This one only works if target is below 45% health, so checks are added.  This should aways be first real heal for cleric if you use it at all.
HealSingleSpellGem3=gem1
HealSingleUseAt3=35
HealSingleStopAt3=45
HealSingleStopAtMobPctHP3=0
HealSingleRecast3=1s
HealSingleConditions3=

HealSingleUse4=TRUE
HealSingleSpellName4=Graceful Remedy	<-- again, fast heals first are my personal preferred method.
HealSingleSpellGem4=gem12
HealSingleUseAt4=80
HealSingleStopAt4=90
HealSingleStopAtMobPctHP4=0
HealSingleRecast4=1s
HealSingleConditions4=

HealSingleUse5=TRUE
HealSingleSpellName5=Reverent Light	<-- big heal now
HealSingleSpellGem5=gem12
HealSingleUseAt5=80
HealSingleStopAt5=90
HealSingleStopAtMobPctHP5=0
HealSingleRecast5=1s
HealSingleConditions5=

HealSingleUse6=TRUE
HealSingleSpellName6=Fervent Renewal	<--biggest heal with longest recast, and it has cures, so maybe a condition in there.  if i am using netbots, i can make it known if my group mate is dotted.
HealSingleSpellGem6=gem12
HealSingleUseAt6=80
HealSingleStopAt6=90
HealSingleStopAtMobPctHP6=0
HealSingleRecast6=1s
HealSingleConditions6=			<-- Using netbots + conditions, you can use cures as "heals" and just set the use at as 100% if the group member is debuffed and you can cure it.

HealSingleUse7=TRUE
HealSingleSpellName7=Promised Reformation  <-- example delayed heal
HealSingleSpellGem7=gem11
HealSingleUseAt7=95		<-- higher percent than rest
HealSingleStopAt7=100		<-- higher than rest because I am anticipating future damage
HealSingleStopAtMobPctHP7=20 	<-- higher than rest because of delay
HealSingleRecast7=20s		<-- note the recast timer
HealSingleConditions7=${Group.Member[${gmember}].ID}==${Group.Puller.ID}  <-- I am only using this on the puller as an example of conditions usage

HealSingleUse8=TRUE
HealSingleSpellName8=Halcyon Breath	<-- example shaman HoT
HealSingleSpellGem8=gem8
HealSingleUseAt8=95		<-- higher percent than rest
HealSingleStopAt8=100		<-- higher percent than rest
HealSingleStopAtMobPctHP8=50	<-- higher percent than rest due to delay
HealSingleRecast8=1m		<-- higher percent than rest (1m duration on sham HoT)
HealSingleConditions8=!${Select[${Group.Member[${gmember}].Class.ShortName},CLR,DRU,SHM,NEC]} && ${Me.Song[Wisp of Renewal].ID}		<-- i only want to HoT them if they arent a priest/necro and if we dont already have group HoT on.



[HealGroup] <-- only used by priests and paladin

HealGroupTotal=3	<-- Total
HealGroupAnnounce=FALSE	<-- Announce in AnnounceChannel?

HealGroupUse1=TRUE			<-- Use?
HealGroupSpellName1=Beacon of Life	<-- Name of spell/aa/item
HealGroupConditions1=			<-- any special conditions
HealGroupSpellGem1=alt			<-- [gem#|alt|item]
HealGroupUseAt1=50			<-- Use this if single group member gets below this amount.  I *highly* encourage setting this to 0 unless you want to use group heals as primary source of healing or have super fast group heals like shaman intervention.  In this case, the AA is instant cast, so i will leave it at 50
HealGroupStopAt1=80			<-- stop casting the spell if group member gets above this amount
HealGroupAvgHP1=60			<-- cast if the group average HP reaches this amount.  This is the number you should focus on.

HealGroupUse2=TRUE
HealGroupSpellName2=Word of Rehabilitation
HealGroupSpellGem2=gem5
HealGroupUseAt2=50
HealGroupStopAt2=80
HealGroupAvgHP2=60
HealGroupConditions2=			<-- you can set ${Debuffs.Poisoned} etc conditions here to do cures as well, or heals with cures.  Netbots makes this even more effective.

HealGroupUse3=TRUE
HealGroupSpellName3=Word of Renewal
HealGroupSpellGem3=gem12
HealGroupUseAt3=50
HealGroupStopAt3=80
HealGroupAvgHP3=60
HealGroupConditions3=



[HealBalance] <-- slightly different version of group heal, really designed for cleric epic 1.5/2.0 shield and divine arb, shaman intervention could be applied, but just use it as a group heal

HealBalanceTotal=2
HealBalanceAnnounce=FALSE		

HealBalanceUse1=TRUE
HealBalanceSpellName1=Divine Arbitration
HealBalanceConditions1=
HealBalanceSpellGem1=alt
HealBalanceUseAt1=30			<-- if individual gets below this amount, use it.
HealBalanceStopAt1=70

HealBalanceUse2=TRUE
HealBalanceSpellName2=Aegis of Superior Divinity
HealBalanceConditions2=
HealBalanceSpellGem2=item
HealBalanceUseAt2=30			<-- if individual gets below this amount, use it.
HealBalanceStopAt2=70



[HealSplash] <-- cleric/pal get a splash heal, this allows them to use it. additionally, you can say "splashp" in any chat channel and your paladin will splash on command if it is memorized. "splashc" for cleric to do the same.

HealSplashTotal=0
HealSplashAnnounce=FALSE
HealSplashUse1=TRUE
HealSplashSpellName1=Rejuvenating Splash
HealSplashSpellGem1=gem12
HealSplashAvgHP1=60			<-- will splash if group HP avg gets to this.
HealSplashUse2=TRUE
HealSplashSpellName2=
HealSplashSpellGem2=
HealSplashAvgHP2=60



[HealPet] <-- group member pets are ignored if you dont specify heals in this section

HealPetTotal=2
HealPetAnnounce=FALSE			<-- see [HealSingle] as example to fill section.
HealPetUse1=TRUE
HealPetSpellName1=Graceful Remedy
HealPetSpellGem1=gem12
HealPetUseAt1=60
HealPetStopAt1=90
HealPetConditions1=
HealPetUse2=TRUE
HealPetSpellName2=
HealPetSpellGem2=
HealPetUseAt2=50
HealPetStopAt2=90
HealPetConditions2=

Paladin get [HealSelf] section, but i dont have an example. They have several self heals and group heals they can use, it is common sense to fill in. If someone provides me with an example, i can post it.



[Jolt] <-- This is the jolt/deaggro section. Useful to deaggro the mob

JoltTotal=1		<-- Total jolts
ForceMemJolt=FALSE	<-- memorize if it is a spell and is not memmed already
JoltAnnounce=FALSE	<-- Announce attempts, success, failures in AnnounceChannel?

JoltAfter1=10				<-- standard detrimental spells are worth 1 point, stuns worth 2.  So this means after 10 points, you will use this spell. ie. 10 nukes, or 2 nukes and 3 stuns, or 1 dot and 4 stuns.
JoltUse1=TRUE				<-- Use?
JoltSpellName1=Improved Death Peace	<-- spell/aa name
JoltConditions1=			<-- any special conditions?
JoltSpellGem1=alt			<-- [gem#|alt]
JoltUseAtMobPctHP1=96			<-- Use this if mob is below this % HP
JoltStopAtMobPctHP1=5			<-- dont bother jolting if mob is below this % HP
JoltRecast1=18s				<-- artificial recast timer in case you cast a bunch of fast spells and dont want to jolt within this time period
JoltValue1=10				<-- how many points does using this jolt erase?  some jolts do better than others, some erase entirely
JoltNamedOnly1=FALSE			<-- only jolt on named?
JoltAtAggroPct1=50			<-- jolt if my aggro gets above this %.  Must have ROF expansion.  If you have ROF, you can set your JoltAfter to really high since it is not really needed any more



[Lifetap]

LifetapTotal=2				<-- Total Lifetaps if fighting normal mob
LifetapTotalIfNamed=2			<-- Total Lifetaps if fighting named mob
ForceMemLifetap=FALSE			<-- Memorize the spell if not already memorized
LifetapAnnounce=FALSE			<-- Announce in AnnounceChannel
InterruptToLifetapAt=40			<-- Interrupt nuke/dot/etc to cast a Lifetap if your HP falls below this amount

LifetapUse1=TRUE			<-- Use?
LifetapSpellName1=Dying Grasp		<-- AA/disc/spell name
LifetapSpellGem1=alt			<-- gem#,alt,disc,item
LifetapUseAtMyHP1=40			<-- Use if my hp falls below this amount
LifetapConditions1=			<-- any conditions required?  Only lifetap if a certain buff is/isnt on?

LifetapUse2=TRUE
LifetapSpellName2=Plunder Essence
LifetapSpellGem2=gem1
LifetapUseAtMyHP2=70
LifetapConditions2=



[MainTankBuff] <-- This section is ONLY used to cast spells on the designated ${Group.MainTank} that you set using group roles. It ONLY uses memorized spells or AAs/items that are ready.

MainTankBuffTotal=7		<-- Total
MainTankBuffAnnounce=FALSE	<-- Announce in AnnounceChannel?

MainTankBuffUse1=TRUE
MainTankBuffSpellName1=Divine Guardian
MainTankBuffConditions1=		<-- several classes get this line, and it doesnt stack with divine intervention line, so you may want to check for classes as a condition
MainTankBuffSpellGem1=alt		<-- [gem#|alt|item]
MainTankBuffUseAt1=100			<-- Use at MainTank's % HP
MainTankBuffStopAt1=5			<-- stop at MainTank's % HP
MainTankBuffNamedOnly1=FALSE		<-- Use this only if fighting a named mob?
MainTankBuffRecast1=5m			<-- Duration check, this is 10m recast spell and 5m duration.

MainTankBuffUse2=TRUE
MainTankBuffSpellName2=Focused Celestial Regeneration
MainTankBuffConditions2=
MainTankBuffSpellGem2=alt
MainTankBuffUseAt2=100
MainTankBuffStopAt2=5
MainTankBuffNamedOnly2=FALSE
MainTankBuffRecast2=1m			<-- 1m duration HoT that only is cast on MainTank, recast is much longer

MainTankBuffUse3=TRUE
MainTankBuffSpellName3=Shining Armor
MainTankBuffSpellGem3=gem12
MainTankBuffUseAt3=100
MainTankBuffStopAt3=5
MainTankBuffNamedOnly3=FALSE
MainTankBuffRecast3=8m			<-- 8m duration buff, recast is instant
MainTankBuffConditions3=

MainTankBuffUse4=TRUE
MainTankBuffSpellName4=Galvos' Retort
MainTankBuffSpellGem4=gem6
MainTankBuffUseAt4=100
MainTankBuffStopAt4=5
MainTankBuffNamedOnly4=FALSE
MainTankBuffRecast4=2m
MainTankBuffConditions4=

MainTankBuffUse5=TRUE
MainTankBuffSpellName5=Hand of Faithful Infusion
MainTankBuffSpellGem5=gem12
MainTankBuffUseAt5=100
MainTankBuffStopAt5=5
MainTankBuffNamedOnly5=FALSE
MainTankBuffRecast5=2m
MainTankBuffConditions5=

MainTankBuffUse6=TRUE
MainTankBuffSpellName6=Promised Reformation
MainTankBuffSpellGem6=gem12
MainTankBuffUseAt6=100
MainTankBuffStopAt6=5
MainTankBuffNamedOnly6=FALSE
MainTankBuffRecast6=30s			<-- delayed heal with ~18s duration and near instantly recast. set to 30s recast that is ONLY cast on the tank
MainTankBuffConditions6=



[Mana] <-- Mana section, this will look slightly diffrent for every class based on unique AAs/abilities

MedAt=75				<-- If mana is below this amount, and no combat is going on, /sit down
MedToFull=FALSE				<-- If TRUE, you will sit to med until you are above 90+ mana.  Even if group is combat, you will remain sitting.
MedEvenIfNotInOOCRegen=FALSE		<-- If TRUE, you will sit down immediately after combat, even if you wont get OOC regen
MedTimer=10s				<-- How often to check if you are standing before you /sit again.
UseClarityPotions=FALSE			<-- Use clarity potions?

Then there are several class specific settings that only show up on those classes' INIs. Missing BST/WIZ/MAG examples.  ie.
SecondSpire_IfManaBelow=65		<-- ENC specific, will use second spire if your own mana is below this amount
SecondSpire_Others_IfManaBelow=5	<-- ENC specific, will use if any other caster's mana in group is below this amount

DeathBloom_IfManaBelow=70		<-- NEC specific to for sure death bloom if mana is below this amount
DeathBloom_IfMyHPAbove=70		<-- NEC specific to death bloom only if HP is above this amount, so you dont die
DontDeathBloom_UnlessManaBelow=99	<-- NEC specific to DO NOT death bloom for any reason unless my mana is below this.  Required setting to avoid wasted skills

Canni_IfManaBelow=70			<-- SHM specific to for sure canni if below this mana percent
DontCanni_UnlessManaBelow=99		<-- SHM specific to DO NOT canni for any reason unless my mana is below this.  Required setting to avoid wasted skills
Canni_IfMyHPAbove=70			<-- SHM specific to only canny if your HP is above this amount

QuietMiracle_IfManaBelow=5		<-- CLR specific to QM if own mana dips below this amount and you dont have a corpse in zone
QuietMiracle_Others_IfManaBelow=5	<-- CLR specific to QM a caster if their mana dips below this amount and they dont have a corpse in zone

ThoughtLeech_IfManaBelow=60		<-- SHD specific to Thought Leech target if your mana is below this amount and you dont have a corpse in zone. (requires |Mana| in [Combat] section to work)



[Mez] <-- Single target mez section (red icon) All mezzes will call every combat cycle, there is no need to add it to [Combat] unless you want extra checks

DontMezConColor=|GREY|GREEN|		<-- dont bother mezzing these Target.ConColor
MezTotal=1				<-- total mezzes to use
ForceMemMez=FALSE			<-- memorize if spell isnt already mezzed
MezAnnounce=FALSE			<-- Announce casts/resists/immunes/success in AnnounceChannel?

MezUse1=TRUE				<-- Use? [TRUE/FALSE]
MezSpellName1=Confound			<-- spell|AA name
MezConditions1=				<-- this doesnt do anything yet
MezSpellGem1=gem3			<-- [gem#,alt]

MezUse2=TRUE
MezSpellName2=Beam of Slumber
MezConditions2=
MezSpellGem2=alt

MezUse3=TRUE
MezSpellName3=Chaotic Confusion
MezSpellGem3=gem12
MezConditions3=

MezUse5=TRUE
MezSpellName5=Confounding Flash
MezSpellGem5=gem12
MezConditions5=

'''[AEMez]'''					<-- targeted AE mez section (green icon)
AEMezTotal=1				<-- total AE Mezzes
AEMezAnnounce=FALSE			<-- Announce casts/resists/immunes/success in AnnounceChannel?
AEMezUse1=TRUE				<-- Use?
AEMezSpellName1=Slackening Wave		<-- spell name
AEMezSpellGem1=gem5			<-- [gem3]
AEMezConditions1=			<-- doesnt do anything yet

'''[PBAEMez]'''				<-- point blank AE mez (blue icon)
PBAEMezTotal=1				<-- total PBAE Mezzes
PBAEMezAnnounce=FALSE			<-- Announce casts/resists/immunes/success in AnnounceChannel?
PBAEMezUse1=TRUE			<-- Use?
PBAEMezSpellName1=Disorientation	<-- spell name
PBAEMezSpellGem1=gem4			<-- [gem#]
PBAEMezConditions1=			<-- not used yet

Protips: Mez immune mobs are automatically added to Mob_Ignore_List.ini. As you level, immunities may change due to spell level, it is helpful to delete that file whenever you get new level mez spells.



[Nuke]

				
NukeTotal=5				<-- Total
NukeTotalIfNamed=5			<-- Total if named, useful to repeat nukes with different conditions or use instant cast skills or nukes that need to be memmed
ForceMemNuke=FALSE			<-- memorize spell if not already memmed?
NukeAnnounce=FALSE			<-- Announce in AnnounceChannel?

NukeUse1=TRUE				<-- Use
NukeSpellName1=Call Skeleton Throng	<-- Spell/AA name
NukeSpellGem1=gem12			<-- [gem#|alt]
NukeUseAtMobPctHP1=96			<-- nuke if mob % HP is below this
NukeStopAtMobPctHP1=30			<-- stop using if mob % HP is below this - in this case it is a swarm pet with 12-18 sec duration.  so i stop it early since most fights last 30 seconds tops when exping
NukeRecast1=1s				<-- Artificial recast timer for some nukes that provide a buff that you dont want to recast before a certain period
NukeConditions1=(!${Me.Song[Deathly Resolve].ID} && !${Me.Buff[Gift of Deathly Resolve].ID} && (!${Me.Song[Deathly Resolve].ID} && ((${DotOn1}||${Me.GemTimer[4]}) && (${DotOn2}||${Me.GemTimer[3]}) && (${DotOn3}||${Me.GemTimer[2]}))))  <-- necro AA does double twincast dots but requires a direct damage spell to trigger.  this spell doesnt count, so if that AA is on, i dont want this spell to cast at all.  however, i want my 3 quick dots (gem4/3/2) to be on or unavailable before I attempt any nukes at all

NukeUse2=TRUE
NukeSpellName2=Impel for Blood
NukeSpellGem2=gem5
NukeUseAtMobPctHP2=96
NukeStopAtMobPctHP2=15 <-- I stop this at 15% because Nuke4 gives me a free essence emerald 5% chance if i get a kill shot with it
NukeRecast2=1s
NukeConditions2=((!${Me.Song[Deathly Resolve].ID} && ${Me.Buff[Gift of Deathly Resolve].ID})||(!${Me.Song[Deathly Resolve].ID} && ((${DotOn1}||${Me.GemTimer[4]}) && (${DotOn2}||${Me.GemTimer[3]}) && (${DotOn3}||${Me.GemTimer[2]}))||(!${Me.Song[Deathly Resolve].ID} && ${Target.PctHPs}<30))) <-- only want it to fire if all 3 quick dots are on, or mob is below 30%, or if it needs to trigger the twincast for dots buff

NukeUse3=TRUE
NukeSpellName3=Scintillate Bones
NukeSpellGem3=gem6
NukeUseAtMobPctHP3=96
NukeStopAtMobPctHP3=15
NukeRecast3=1s
NukeConditions3=((!${Me.Song[Deathly Resolve].ID} && ${Me.Buff[Gift of Deathly Resolve].ID})||(!${Me.Song[Deathly Resolve].ID} && ((${DotOn1}||${Me.GemTimer[4]}) && (${DotOn2}||${Me.GemTimer[3]}) && (${DotOn3}||${Me.GemTimer[2]}))||(!${Me.Song[Deathly Resolve].ID} && ${Target.PctHPs}<30)))

NukeUse4=TRUE
NukeSpellName4=Dissolving Venin
NukeSpellGem4=gem10
NukeUseAtMobPctHP4=15 <-- I want to save this to try to get kill shot for 5% chane at free essence emerald to rez with
NukeStopAtMobPctHP4=1
NukeRecast4=1s
NukeConditions4=((!${Me.Song[Deathly Resolve].ID} && ${Me.Buff[Gift of Deathly Resolve].ID})||(!${Me.Song[Deathly Resolve].ID} && ((${DotOn1}||${Me.GemTimer[4]}) && (${DotOn2}||${Me.GemTimer[3]}) && (${DotOn3}||${Me.GemTimer[2]}))||(!${Me.Song[Deathly Resolve].ID} && ${Target.PctHPs}<30)))

NukeUse5=TRUE
NukeSpellName5=Mind Strip
NukeSpellGem5=gem12
NukeUseAtMobPctHP5=96
NukeStopAtMobPctHP5=1
NukeRecast5=1s
NukeConditions5=(!${Me.Song[Deathly Resolve].ID} && !${Me.Buff[Gift of Deathly Resolve].ID} && (!${Me.Song[Deathly Resolve].ID} && ((${DotOn1}||${Me.GemTimer[4]}) && (${DotOn2}||${Me.GemTimer[3]}) && (${DotOn3}||${Me.GemTimer[2]}))))

Protip: I could set a conditions to check % mana of group mates, but i dont use nuke 5 anyway, so i didnt bother. You can add all your AA/song checks as conditions for nuke to fire. You can also repeat the same nuke with different conditions if needed, but if you get complex enough, you can make a single condition for each nuke to fit every setting you want.



[Pet]

UsePet=TRUE				<-- Use a pet?
PetSpell=Unearthed Assassin		<-- name of pet spell
PetSpellGem=gem12			<-- [gem#]
UsePetFocusAA=TRUE			<-- Use /pet focus?
PetAttackAt=97				<-- /pet attack once mob reaches this amount
ShrinkPet=TRUE				<-- shrink pet?
ShrinkPetIfHeightAbove=1.5		<-- Me.Pet.Height.  1.5 works for most pets, but not all. 
ShrinkPetSpell=Modest Earring		<-- what spell/item/aa do you want to use to shrink?
ShrinkPetSpellGem=item			<-- [gem#|item|alt]
DoPetHeals=FALSE			<-- heal your pet?
PetHealAt=50				<-- at what % HP
PetHealSpell=				<-- name of spell
PetHealSpellGem=			<-- gem#
UseAAPetHeal=TRUE			<-- use AA heal for pet? (long recast)
PetAAHealAt=20				<-- when do you want to use it
DoPetBuffs=TRUE				<-- Buff your pet?
PetBuffRecheck=10s			<-- How often do you want to check your pet's buffs

PetBuffTotal=2				<-- total pet buffs
PetBuffName1=Sigil of the Sundered	<-- name of pet buff spell/AA as shown on pet buff window
PetBuffSpell1=Sigil of the Sundered	<-- name of pet buff spell/AA to cast
PetBuffGem1=gem12			<-- [gem#|item|alt]
PetBuffRecast1=1s			<-- Artificial limit on casting a buff on pet so you dont spam it

PetBuffName2=Aegis of Kildrukaun
PetBuffSpell2=Aegis of Kildrukaun
PetBuffGem2=alt
PetBuffRecast2=1s

PetGearDefaultAlias=mask|aggro|aggro		<-- this will /echo the alias to equip the items listed below when you create a pet and will equip the items if available
magic=Summoned: Frightforged Shortsword		<-- Added alias "magic" to equipped this item
fire=Summoned: Frightforged Fireblade		<-- Added alias "fire" to equipped this item
ice=Summoned: Frightforged Iceblade		<-- Added alias "ice" to equipped this item
aggro=Summoned: Frightforged Ragesword		<-- Added alias "aggro" to equipped this item
jolt=Summoned: Frightforged Mindblade		<-- Added alias "jolt" to equipped this item
mask=Summoned: Visor of Gobeker			<-- Added alias "mask" to equipped this item


Mage only:
PetGearSpellName=Grant Frightforged Armaments	<-- When gear is requested by others or self, casts this spell for weapons
PetArmorSpellName=Grant Frightforged Plate	<-- When gear is requested by others only, casts this spell for weapons
PetMaskSpellName=Grant Visor of Gobeker	<-- when gear is requested by others, casts this spell for mask
PetGearSpellGem=gem1				        <-- uses this gem for requests
PetGearDefaultInvSlotForBag=10			<-- uses this inventory slot to place pouch of quellious.  you must NOT have a bag with items inside there.


Associated commands:
/petrequest - Requests gear from mage in eqbc
/petgear add|fire|< link of Summoned: Frightforged Fireblade > <-- would add the fire=Summoned: Frightforged Fireblade listed above
/petgear mask|fire|aggro - would equip aliases mask, fire, and aggro from example ini if they are in your bag.


[Rez]

GrabCorpse=TRUE					<-- /corpse the corpse to you or leave it where it is?
RezTotal=2					<-- Total
ForceMemRez=FALSE				<-- Force the spell to be memorized if in combat?
RezAnnounce=FALSE				<-- Announce in Announce Channel?
RezUse1=TRUE					<-- Use?
RezSpellName1=Blessing of Resurrection		<-- AA/spell/item name
RezConditions1=					<-- this doesnt do anything yet, i need to add it in.  Someone remind me if anyone reads this and cares about rez conditions working or not.
RezSpellGem1=alt
RezDuringCombat1=TRUE
RezUse2=TRUE
RezSpellName2=Divine Resurrection		<-- 100% rezzes are ignored from auto rezzes so they arent wasted
RezConditions2=
RezSpellGem2=alt
RezDuringCombat2=TRUE
RezTrustedTotal=1
RezTrusted1=PeteSampras
RezTrusted2=
RezTrusted3=
RezTrusted4=
RezTrusted5=
RezRaidTimer=5m					<-- How often to try to rez again if you are in a raid
RezGroupTimer=1m				<-- How often to try to rez again if you arent in a raid.

Associated commands: /trusted name - /trusted PeteSampras = adds RezTrusted1=Petesampras; RezTrustedTotal=1, and will now rez Petesampras corpse whenever it comes across it, regardless of group status



[Root] <-- Root section. This will call every cycle, after mezzes and before debuffs. It is meant to be used as crowd control

DontRootConColor=|GREY|GREEN|		<-- ignore root if it is this Target.ConColor
RootPrimaryTarget=FALSE			<-- root the mob we are fighting?  Useful if you are root rotting or pet tanking.
RootAdds=${If[${Select[${Zone.ShortName},breedinggrounds]},TRUE,FALSE]}		<-- Do you want to root any adds? This can be a standard [TRUE/FALSE], Mobs in breedinggrounds and kaeldrakkel are mez immune, so i want it set to TRUE in those zones, but FALSE in every other zone for my personal group
FaceNPCToRoot=TRUE			<-- do you want to /face the mob before rooting, useful for knockback roots so you throw them in the correct direction.
RootTotal=1				<-- Total
RootTotalIfNamed=1			<-- Total if named
RootAnnounce=TRUE			<-- Announce attempts,success,fail,immune messages in AnnounceChannel

RootUse1=TRUE				<-- Use?
RootSpellName1=Pestilent Paralysis	<-- AA,spell,item name
RootSpellGem1=alt			<-- [gem#|alt|item]
RootUseAtMobPctHP1=100			<-- To use this as crowd control, this should be 100%
RootStopAtMobPctHP1=1			<-- stop rooting at this %
RootRecast1=1s				<-- Any artifical recast timer that you want added
RootMaxTries1=2				<-- Number of resists before you stop trying to use it on that mob
RootConditions1=!${Root2${RootID}}	<-- Any special conditions? If you had a root2, this example would check to make sure it isnt already rooted with that spell.

Protips: Root/snare immunities are automatically added to Mob_Ignore_List.ini. If a mob isnt getting rooted and it is rootable, check there. ${Root#${RootID}} is the timer, ${RootID} is the npc id. so if you wanted to see if your Root1 was on the mob in the conditions, it would be ${Root1${RootID}}. Useful if you want to use multiple roots, but dont want to use both on same mob. Example conditions: RootConditions3=((${Root1${RootID}}||${Root2${Root ID}}) && ${Spawn[id ${RootID}].Distance}<50) What do i mean? Ok, say you have 3 spells: Example (note that these are paraphrases and not the real things): RootSpellName1=KnockBack + Root Spell RootCondition1=!${Root2${RootID}} && !${Root3${RootID}}

RootSpellName2=Root Spell RootCondition2=!${Root1${RootID}}

RootSpellName3=Knockback Spell RootCondition3=${Root2${RootID}}



[Snare]

SnareTotal=1				<-- Total			
ForceMemSnare=FALSE			<-- memorize if a spell isnt memorized?
SnareAnnounce=FALSE			<-- Announce attempts,success,fail,immune messages in AnnounceChannel

SnareUse1=TRUE				<-- use?
SnareSpellName1=Encroaching Darkness	<-- AA,spell,item name
SnareSpellGem1=alt			<-- [gem#|alt|item]
SnareUseAtMobPctHP1=99			<-- Use if mob % HP is below this, auto recast
SnareMaxTries1=2			<-- max resists to stop attempting
SnareConditions1=			<-- any special conditions?

Protips: Root/snare immunities are automatically added to Mob_Ignore_List.ini. If a mob isnt getting rooted and it is rootable, check there.



[SelfBuff] <-- by default, this section is only called when not in combat. use [FightBuffs] for buffs to use only in combat or add |SelfBuff| to the [Combat] section to use these any time

SelfBuffTotal=4				<-- Total
SelfBuffAnnounce=FALSE			<-- Announce in AnnounceChannel?

SelfBuffUse1=TRUE					<-- Use?
SelfBuffSpellName1=Perfected Dead Man Floating		<-- Name of spell, AA, Item, Disc to cast
SelfBuffSpellIcon1=Perfected Dead Man Floating		<-- Name of song/buff icon on you
SelfBuffConditions1=!${Me.Levitating}			<-- Conditions to check, ie, already levitating, buffs you dont want to overwrite or that dont stack correctly but still try to cast
SelfBuffSpellGem1=alt					<-- [gem#|alt|disc|item]

SelfBuffUse2=TRUE
SelfBuffSpellName2=Forsakenside
SelfBuffSpellIcon2=Forsakenside
SelfBuffSpellGem2=gem12
SelfBuffConditions2=

SelfBuffUse3=TRUE
SelfBuffSpellName3=Shield of the Dauntless
SelfBuffSpellIcon3=Shield of the Dauntless
SelfBuffSpellGem3=gem12
SelfBuffConditions3=

SelfBuffUse4=TRUE
SelfBuffSpellName4=Zombieskin
SelfBuffSpellIcon4=Zombieskin
SelfBuffSpellGem4=gem12
SelfBuffConditions4=!${Me.Song[Death Bloom].ID}		<-- Death Bloom just eats this rune, so i wait until it is over



[Stun]

StunTotal=2			<-- Total
StunTotalIfNamed=0		<-- I personally dont bother with trying to stun named
ForceMemStun=FALSE		<-- Mem the spell if not already memmed?
StunAnnounce=FALSE		<-- Announce in AnnounceChannel?

StunUse1=TRUE			<-- Use?
StunSpellName1=Dizzying Squall	<-- Spell/AA name
StunSpellGem1=gem6		<-- [gem#|alt]
StunUseAtMobPctHP1=100		
StunStopAtMobPctHP1=1
StunRecast1=9s			<-- Most stun spells have a long recast, but in case you want to space out your stuns you can modify this to stun lock your targets.
StunConditions1=		<-- Maybe you only want to stun if there are multiple mobs or no clerics in group or someone died. Whatever tickles your fancy.

StunUse2=TRUE
StunSpellName2=Color Confluence
StunSpellGem2=gem10
StunUseAtMobPctHP2=100
StunStopAtMobPctHP2=1
StunRecast2=9s
StunConditions2=

[SummonItem] <-- This section should be used for items you want to summon for yourself if conditions are met

[SummonItem]
SummonItemTotal=2   <-- Total?
SummonItemUse1=TRUE                                             <-- Use?
SummonItemName1=Grant Icebound Paradox                 <-- Name of Spell/item to cast
SummonItemSpellGem1=gem1                                      <-- [gem#|item|alt]
SummonItemConditions1=!${FindItemCount[Summoned: Icebound Sliver]} && ${Me.PctMana}>70
SummonItemUse2=TRUE
SummonItemName2=Warm Milk Dispenser
SummonItemSpellGem2=item
SummonItemConditions2=(${FindItemCount[=Warm Milk]}<5 ||${Me.Thirst}<3000)

[XHeal] <-- target NPC/mercs and add them as "Current Target" to your extended target window (DO NOT USE XTARGET1 AS A PC/MERC TO HEAL. IT IS REQUIRED TO REMAIN AS YOUR "KILL" TARGET). If i had 10 XTarget slots, and wanted to add 5 people to heal, I would add them as XTarget6-10. That way i could use XTarget1 to kill/debuff mob and easily see how many mobs are attacking group and perform Rooting if needed.

XHealPullerName=PeteSampras		<-- This guy is the puller, so i dont want to heal too early and screw up pulls
XHealPullerDist=50			<-- I will heal PeteSampras at this range
XHealTotal=1				<-- Total
XHealUse1=TRUE				<-- Use?
XHealSpellName1=Gotikan's Mending	<-- Name of spell/aa/item
XHealSpellGem1=gem1			<-- [gem#|alt|item]
XHealUseAt1=90				<-- heal if my XTarget goes below this amount
XHealStopAt1=90				<-- stop healing my XTarget if they go above this amount


Frequently Asked Variables: ${AddCount} - How many mobs are aggro on you ${BurnMode} - Are you in burn mode? ${Debuff1${DebuffID}} - used in debuff conditions to check against other debuffs - Example checks if DebuffSpellName1 is on the mob ${Root1${RootID}} - used in [Root] conditions to check against other roots - Example checks if RootSpellName1 is on the mob ${Group.Member[${gmember}].X} - Check whatever .Variable for group member that you want for [HealSingle] Conditions ${DotOn1} ... ${DotOn15} - Is dot 1-15 currently on the mob? Max dots are 15.

Refer to ANY variable in the INI in a condition: ${StunTotal} = Would give the current StunTotal=

AAtoBuy

This is similar to MQ2AAspend, just macro based.

[AAtoBuy]
AABuy=FALSE
AABuyChannel=/echo
AABuyAt=15 (won't start buying until you have this many saved, suggest at least 12/15/18 for class AA purchases)
AABuyMode=classic (options are: classic,limited,brute)
AABuyPageOrder=class|archetype|general|special
LimitedGeneral=Innate Run Speed|Combat Stability|Combat Agility|Innate Regeneration
LimitedArchetype=Fury of Magic|Spell Casting Reinforcement Mastery|Spell Casting Mastery
LimitedClass=Blood Tithe
LimitedSpecial=Glyph of the Cataclysm
AACount=5
AA1=Combat Stability|E|1
AA2=Combat Agility|E|1
AA3=Innate Run Speed|M|1
AA4=Spell Casting Reinforcement Mastery|4|2
AA5=Levant|1|3

AA name|ranks to buy|page number

options: #|M|E
# buys the exact number you list
M buys all available
E will evenly spend on all AAs marked with E until max rank is achieved

AABuyMode=classic
classic = uses list
brute uses AABuyPageorder
limited uses AABuyPageOrder, then if any Limited are listed, it will only buy those from corresponding page and skip rest, if blank, buys all

Associated Command:
/aaspew - will create a "limited" version for you into your INI file. **It will replace whatever you have there already.

Loot.ini

Loot.ini is used to control what items are looted/sold/kept/destroyed

[Loot]
Version=v2.24		<-- Version
LootOnRaids=FALSE	<-- Loot if in a raid?
HideCorpseLooted=TRUE	<-- /hidecorpse looted on macro start
LootMobs=TRUE		<-- Master setting, will not allow any looting if set to FALSE
CorpseRadius=150	<-- Radius scan for corpses
MobTooClose=75		<-- How close an NPC can be before you ignore looting
ReportLoot=TRUE		<-- Announce loot in LootChannel?
ReportOnlyGear=TRUE	<-- ONLY announce wearable gear that is rotting.
LootChannel=g		<-- channel to announce in. g or bc
MinValue=30		<-- min plat value of item in order to loot (Tradeskill items over this value will be set as Sell)
LootTradeskills=TRUE	<-- Loot tradeskill items, regardless of value
LootDuringCombat=FALSE	<-- Loot even when in Me.Combat?
OpenAllBags=TRUE	<-- Open all your bags when selling/depositing items
AddNewSales=TRUE	<-- Allow adding of items for sale
LootForage=TRUE		<-- Auto add items you forage to ini
LootIgnoreList=Ornamentation,Chorosene,Mamba,Words of,Rune of,Etched Rune, Delphinium, Privit, Meat,Larkspur,Ornament,Velium ,Fine Steel,Salil's,Laburnum,Muscimol,Nihilite,Uncut ,Oleander,	<-- Ignore anything that contains a phrase on this list
Loot_PeteSampras=trinkets-5|thingamajigs-1|top hats-4|
Loot_FrankyJ=wrist molds-2|

Associated Command:
/lootthis Name ItemName Ie. /lootthis PeteSampras Item of win /lootthis PeteSampras Item of win

So you will target the corpse you want looted and type that. If your toon name is PeteSampras, it will target that corpse, save location and heading and invis status, go to corpse, loot that item, go back to original position, /face original heading, and reinvis if you were invised. That will work to force a one time loot of a specific item. However, you can add the following in your loot.ini to keep a list and auto loot items by character:

/lootignore <-- change status of item on cursor to ignore in loot.ini
/lootsell <-- change status of item on cursor to sell in loot.ini
/lootdestroy <-- change status of item on cursor to destroy in loot.ini
/lootkeep <-- change status of item on cursor to keep in loot.ini
/loottradeskills <-- change status of item on cursor to tradeskills in loot.ini
/sell <-- sell items marked as Sell to currently targeted vendor
/deposit <-- deposit items to banker/guildbanker that is on target

MQ2MyButtons

Use MQ2MyButtons to create hotkeys outside of normal eq hotkeys on its own special set of keys. Here is a demo of 20 keys and how they can make your life much easier using bot40.mac.

1. Download the .xml file for 20 hotkeys +reload button from the first post.
2. /plugin mq2labels
3. /plugin mq2mybuttons unload
4. go into your mq2\server_charname.ini and add the following info (modifying to your actual aliases):

[MQ2MYButtons_Buttons]
MyButtonLabel_1=bot40
MyButtonCommand_1=/mac bot40
MyButtonLabel_2=clr tar
MyButtonCommand_2=/bc ClearTargetDataAlias
MyButtonLabel_3=emerg
MyButtonCommand_3=/bc EmergencyAlias
MyButtonLabel_4=imob
MyButtonCommand_4=/imob
MyButtonLabel_5=imob1
MyButtonCommand_5=/imob1
MyButtonLabel_6=puller
MyButtonCommand_6=/puller
MyButtonLabel_7=pause
MyButtonCommand_7=/bcaa //mqpause
MyButtonLabel_8=fol on
MyButtonCommand_8=/bc FollowCommand
MyButtonLabel_9=fol off
MyButtonCommand_9=/bc StopFollowCommand
MyButtonLabel_10=invis
MyButtonCommand_10=/bc invison
MyButtonLabel_11=uninvis
MyButtonCommand_11=/bc invisoff
MyButtonLabel_12=exp
MyButtonCommand_12=/bc expreport
MyButtonLabel_13=camp
MyButtonCommand_13=/bcaa //camp
MyButtonLabel_14=ass
MyButtonCommand_14=/bcaa //assist group
MyButtonLabel_15=/off
MyButtonCommand_15=/offtank
MyButtonLabel_16=/sum
MyButtonCommand_16=/sumtank 20
MyButtonLabel_17=/leap
MyButtonCommand_17=/leap 30
MyButtonLabel_18=/clicky
MyButtonCommand_18=/clicky
MyButtonLabel_19=move
MyButtonCommand_19=/bc MoveUpCommand
MyButtonLabel_20=buff1
MyButtonCommand_20=/bc BuffAlias1

5. /plugin mq2mybuttons
6. /loadskin if UI wasnt already loaded.

Now you have a hotkey bar with most of the Bot specific aliases and dont have to figure out /slash commands or alt tab over to other toons to get things done.

Conditions

"Conditions" 101:

Conditions should allow full customization for a bunch of questions people have had about how do i only cast when this and this and this are the case.

People have stated things like: i only want to use this necro nuke when i dont have Chaotic Power song on. ok. Then add this as your Conditions for that nuke.
NukeConditions1=!${Me.Song[Chaotic Power].ID}

or theyve asked if i have whatever that mage and wizard that if i have the fire boost song on, i dont want to cast magic or cold based nukes. Here could be how to avoid casting a fire nuke if the Ice or Magic booster are on:
NukeConditions1=!${Me.Song[Syllable of Ice]} && !${Me.Song[Syllable of Magic]}

I only want to use my sk self mana buff if there are no encs in my group.
SelfBuffConditions1=!${Spawn[group enc].ID}

I only want to use this AA when i am in range mode.
AAConditions1=${Me.AutoFire}

or i only want to do this when i am meleeing and NOT at range:
AAConditions1=${Melee.Status.Equal[ENGAGED MELEE ATTACK ]} && !${Me.AutoFire}

Or you only want to do a disc when you have Auspice and Shaman epic on. etc etc etc.

You can set whatever conditions you want for something to trigger.

Availability

This macro is located in at the following forum link at MMOBugs.com.

http://www.mmobugs.com/forums/bot-mac-botting-macro/31681-bot-mac-updates-bug-fixes-40oz.html