Difference between revisions of "Bot" - MMOBugs Wiki

 
(44 intermediate revisions by 2 users not shown)
Line 12: Line 12:
 
==Description==
 
==Description==
 
<font class="highlight">Bot.Mac</font> 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.
 
<font class="highlight">Bot.Mac</font> 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==
 +
<font class="highlight">My macro isn't working correctly, what do I do!?</font> <br>
 +
1. Follow the initial setup instructions on the first post of the macro thread, also listed below.<br>
 +
2. Follow step 1 exactly.<br>
 +
That should always be your first step for this macro to diagnose a problem.<br>
 +
<br>
 +
'''Troubleshooting'''<br>
 +
Q. Macro isnt doing anything or isnt loading correctly.<br>
 +
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<br>
 +
<br>
 +
Q. I keep getting MQ2Cast error messages or spells keep memming and unmemming.<br>
 +
A. Mq2Melee is likely interfering with macro.  You should disable it while bot is running and set everything up in bot.<br>
 +
<br>
 +
You can use the following commands in your [Mq2melee] ini in \mq2\server_charname.ini to disable the macro:<br>
 +
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[bot.mac]},1,0]}<br><br>
 +
holyshitif=!${Macro.Name.Equal[bot.mac]},1,0]}<br><br>
 +
 +
Q.  My buffs arent working or are spamming.<br>
 +
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.<br>
 +
<br>
 +
Q. My puller is also tanking.  When he comes back to camp, he is getting beat up by mob. What can I do?<br>
 +
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.<br>
 +
<br>
 +
Q. My nukes/dots/stuns/debuff keep interrupting their cast during combat.  What is going on?!?<br>
 +
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.<br>
 +
<br>
 +
Q. My Aura wont work.<br>
 +
A.  Auras have AuraName, AuraSpellName, and AuraSpellIcon.  All three need filled out if applicable.  See [Aura] section below for tips.<br>
 +
<br>
 +
Q.  My toon will not attack.<br>
 +
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:<br>
 +
[MQ2Melee]<br>
 +
stickbreak=1<br>
 +
stickcmd=84% loose<br>
 +
stickmode=1<br>
 +
stickrange=30<br>
 +
<br>
 +
Q.  My toon will not assist.<br>
 +
A. What is your AssistType set to?  What command did you use to start the macro? /mac bot name 99?  something else?  If set to AssistType=3, is your XTarget1 set to Group Assist's Target?<br>
 +
<br>
 +
Q.  My macro doesnt do X, even though I told it to.<br>
 +
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 bot load again<br>
 +
<br>
 +
Q.  My macro is taking a long time to do something.<br>
 +
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.<br>
 +
<br>
 +
Q. Macro is spamming the same thing over and over.  <br>
 +
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.<br>
 +
<br>
 +
Q.  My bard is /twisting over and over during rest.<br>
 +
A.  Your [Aura] section is not filled out correctly, or a clicky item in [ClickyMaintenance] may be messed up.
 +
<br><br>
 +
Q.  My item is NOT clicking.  <br>
 +
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.<br>
 +
<br>
 +
Q.  I keep getting an error that spams suchandsuch .Int unparseable.  <br>
 +
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.<br>
 +
<br>
 +
Q. Pulling doesnt work.<br>
 +
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.<br>
 +
<br>
 +
Q.  Some things are working, but other sections arent.<br>
 +
A.  Go through the sections that arent working and check their ___Totals arent set to 0 and ____Use are set to TRUE.<br>
 +
<br>
 +
Q. I have read the FAQ, I still have a problem, how do I get an answer?<br>
 +
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 bot name 95.  Then post your problem and desribe how/when it happens.<br>
 +
 
==Commands==
 
==Commands==
  
 
* <span class="highlight2">/assisttype #</span> - Changes assist type to 1, 2, 3, 4, 5
 
* <span class="highlight2">/assisttype #</span> - Changes assist type to 1, 2, 3, 4, 5
 +
<ol style="list-style-type: lower-roman;">
 +
<li>/assisttype 1 - standard /assist</li>
 +
<li>/assisttype 2 - auto picks targets</li>
 +
<li>/assisttype 3 - assists and uses XTarget1 to pick target</li>
 +
<li>/assisttype 4 - uses netbots to assist</li>
 +
</ol>
 
* <span class="highlight2">/toggle option</span> - Toggles "option" on or off, ie. /toggle nuke, /toggle aa, /toggle dot
 
* <span class="highlight2">/toggle option</span> - Toggles "option" on or off, ie. /toggle nuke, /toggle aa, /toggle dot
 
* <span class="highlight2">/options</span> - shows current options
 
* <span class="highlight2">/options</span> - shows current options
Line 24: Line 99:
  
 
IgnoreList related:
 
IgnoreList related:
 +
* <span class="highlight2">/imob1</span> - temporarily ignores specific mob, adding it to alert list 1 (pulling related)
 
* <span class="highlight2">/imob</span> - adds current target to ignoremob list
 
* <span class="highlight2">/imob</span> - adds current target to ignoremob list
 
* <span class="highlight2">/cmob</span> - adds current target to coldimmune list
 
* <span class="highlight2">/cmob</span> - adds current target to coldimmune list
Line 47: Line 123:
 
* <span class="highlight2">ivuon</span> - uses invis vs undead
 
* <span class="highlight2">ivuon</span> - uses invis vs undead
 
* <span class="highlight2">invisoff</span> - removes invis/ivu
 
* <span class="highlight2">invisoff</span> - removes invis/ivu
 +
* <span class="highlight2">levon</span> -uses levitate
 +
* <span class="highlight2">levoff</span> - removes levitate
 
* <span class="highlight2">splashp</span> - splashes with paladin
 
* <span class="highlight2">splashp</span> - splashes with paladin
 
* <span class="highlight2">splashc</span> - splashes with cleric
 
* <span class="highlight2">splashc</span> - splashes with cleric
Line 56: Line 134:
 
* <span class="highlight2">/puller</span> - toggles whether or not you are puller
 
* <span class="highlight2">/puller</span> - toggles whether or not you are puller
 
* <span class="highlight2">/pullingmethod</span> - toggles pulling method between MQ2Navigation and MQ2AdvPath
 
* <span class="highlight2">/pullingmethod</span> - toggles pulling method between MQ2Navigation and MQ2AdvPath
* <span class="highlight2">/paths x</span> - sets the amount of paths to x number. ie. /paths 3
+
 
  
  
Line 69: Line 147:
  
 
To attempt to import all created sections:
 
To attempt to import all created sections:
* <span class="highlight2">/import all 95</span>  
+
* <span class="highlight2">/import all 95</span>
  
 
==Includes==
 
==Includes==
Line 76: Line 154:
  
 
==Required Plugins==
 
==Required Plugins==
 +
* <span class="highlight2">MQ2MMOBugs</span> -  Used for several TLOs.
 +
* <span class="highlight2">MQ2MMOTLO</span> -  Used for several TLOs.
 +
* <span class="highlight2">MQ2Moveutils</span> -  Used for movement.
 +
* <span class="highlight2">MQ2CEcho</span> -  Used for sexiness.
 +
* <span class="highlight2">MQ2Cast</span> -  Used to memorize spells.
 +
* <span class="highlight2">MQ2Debuffs</span> -  Used for a couple Debuff checks.
  
* <span class="highlight2">MQ2Moveutils</span> - Used for movement.
+
==Options Plugins (required if using certain features)==
 +
* <span class="highlight2">MQ2Melee</span> - Required for /killthis command.
 +
* <span class="highlight2">MQ2navigation</span> - Required if using to pull via mq2navigation.
  
 
==Configuration==
 
==Configuration==
Line 88: Line 174:
  
 
===Sample Configuration===
 
===Sample Configuration===
Macro Template.ini
+
Bot_CharName_Class.ini
<pre>[Settings]
+
 
LootNPCs=FALSE
+
Primer:
BotVersion=v1.53
+
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.
AssistType=3
+
Commands for specific sections are listed in that section. 
AssistPC=PeteSampras
+
Any variable that has something in [Brackets] means that the variable must equal one of those choices in that exact format.
AssistAt=98
+
Some sections will have protips listed to help you maximize your toon.
UseMelee=FALSE
+
 
UseArchery=FALSE
+
 
ArcheryMaxDistance=200
+
 
ArcheryMinDistance=35
+
'''[Settings]''' <-- This section is for general settings that dont really fall anywhere else
SetTargetMessage=KillTarget->
+
<pre>
OptionsCheck=|AA|AddHandler|MQ2AdvPathFollow|Aura|AutoClickies|Camp|ClickyMaintenance|ClickyNuke|Debuff|Dot|Fade|FightBuff|Heal|MainTankBuff|MQ2NavFollow|Nuke|Pet|Rez|XHeal|
+
UseCamp=TRUE  <-- Leash to camp spot? [TRUE/FALSE]
UseCamp=TRUE
+
CampRadius=10 <-- Distance before you leash
CampRadius=30
+
CampRadiusMax=150 <-- If you are past this distance from camp spot, you ignore leashing so you dont try running across half the zone
CampRadiusMax=150
+
InterruptToHealAt=0 <-- You will interrupt your dot/nuke/stun/debuff/etc to attempt to heal if any group member falls below this % hp
Verbose=TRUE
+
InterruptToXHealAt=0 <-- You will interrupt your dot/nuke/stun/debuff/etc to attempt to xheal if any XTarget PC/Merc falls below this % hp
MyChannel=bc
+
GMAction= <-- Action to take if gm enters zone.  [/end, /exit, /q, /camp, pause] If set to pause, it will unpause once gm leaves.
EQBCAnnounceAdds=FALSE
+
LootNPCs=TRUE <-- Do you want to loot mobs [TRUE/FALSE]
AutoHideNPCCorpses=FALSE
+
AuthorizedUsers= <-- list of names that can request buffs/issue commands, if blank it will allow anyone
InterruptToXHealAt=50
+
Verbose=FALSE <-- Do you want skills/spells to be announced into chat when you use them
InterruptToHealAt=50
+
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
 +
</pre>
 +
Associated Commands: <br>
 +
/ame - sets new camp spot<br>
 +
/campon - turns leashing to camp spot on<br>
 +
/campoff - turns leashing to camp spot off<br>
 +
/lootnpcs - toggles looting in INI<br>
 +
/options - lists current options<br>
 +
/toggle [section] - /toggle Nuke - will toggle use of that section in the INI<br>
 +
<br><br>
 +
Mob_Ignore_List.ini related commands to ignore certain mobs or add them to immune lists.<br>
 +
IgnoreList related:<br>
 +
/imob1 - adds current target to alert list 1 to temporarily ignore for pulling<br>
 +
/imob - adds current target to ignoremob list<br>
 +
/cmob - adds current target to coldimmune list<br>
 +
/dmob - adds current target to diseaseimmune list<br>
 +
/fmob - adds current target to fireimmune list<br>
 +
/mmob - adds current target to magicimmune list<br>
 +
/pmob - adds current target to poisonimmune list<br>
 +
/smob - adds current target to stunimmune list<br>
 +
<br><br>
 +
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.
 +
 
 +
 
 +
 
  
[ImHit]
+
'''[Assist]''' <-- All things assist related
ImHitTotal=2
+
<pre>
ImHitUse1=TRUE
+
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
ImHitSpellName1=Spiritual Blessing
+
AssistPC=PeteSampras <-- by default, you will assist this pc if not designated via /mac bot name
ImHitUseAtMyHP1=50
+
AssistAt=98 <-- by default, you will assist at this % if not designated via /mac bot name pct
ImHitConditions1=
+
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
 +
</pre>
 +
Associated commands: <br>
 +
/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<br>
 +
/burn - toggles BurnMode <br>
 +
/offtank - toggles AmIOffTank<br>
 +
 
 +
 
 +
 
 +
 
 +
'''[Combat]'''
 +
<pre>
 +
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
 +
</pre>
 +
Protip:  <br>
 +
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
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
'''[ImHit]''' <-- Section for things to do when you get hit
 +
<pre>
 +
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=TRUE
+
ImHitUse2=${If[${Group},TRUE,FALSE]} <-- I only want to use this if I am not soloing.
ImHitSpellName2=Ancestral Guard
+
ImHitSpellName2=Improved Death Peace
 +
ImHitRecast2=1s
 
ImHitUseAtMyHP2=80
 
ImHitUseAtMyHP2=80
 
ImHitConditions2=
 
ImHitConditions2=
  
[Follow]
+
Another example (enchanter):
MQ2NavFollowCommand=lets go
+
[ImHit]
NameToFollow=PeteSampras
+
ImHitTotal=4
DistanceToFollow=50
 
AutoFollow=FALSE
 
FollowCheck=1
 
MQ2AdvPathFollowCommand=Follow
 
MQ2AdvPathStopFollowCommand=Stop
 
  
[Custom]
+
ImHitUse1=TRUE
CustomCombatTotal=1
+
ImHitSpellName1=Self Stasis
CustomRestTotal=1
+
ImHitUseAtMyHP1=30
CustomCombat1=/if (${Group.Min}<10 && ${Spawn[group wiz]} && !${Spawn[group clr]}) /bc EVACNOW
 
CustomRest1=/if (!${Me.Pet.ID}) /call SummonPetWeapons
 
  
[Pulling]
+
ImHitUse2=TRUE
AmIPuller=FALSE
+
ImHitSpellName2=Mind Over Matter
PullRadius=200
+
ImHitUseAtMyHP2=60
MQ2NavPullRadius=10
 
PullingMethod=MQ2Navigation
 
PullingAnnounceCMD=NULL
 
PullingTotal=1
 
PullAtMyHPs=75
 
PullSkillName1=Boastful Bellow
 
PullSkillRequiresLineOfSight1=TRUE
 
PullSkillDistance1=250
 
PullSkillSummon1=
 
PullSkillName2=
 
PullSkillRequiresLineOfSight2=TRUE
 
PullSkillDistance2=
 
PullSkillSummon2=
 
  
[Roles]
+
ImHitUse3=FALSE
SetRoles=FALSE
+
ImHitSpellName3=Veil of Mindshadow
GroupLeader=PeteSampras
+
ImHitUseAtMyHP3=50
GroupMainTank=Fry
 
GroupMainAssist=htw
 
GroupPuller=PeteSampras
 
GroupXTarget1=Group Assist Target
 
RaidXTarget1=Raid Assist 1 Target
 
  
[Fade]
+
ImHitUse4=TRUE
FadeTotal=1
+
ImHitSpellName4=Beguiler's Directed Banishment
FadeUse1=FALSE
+
ImHitUseAtMyHP4=40
FadeSpellName1=Inconspicuous Totem
+
</pre>
FadeConditions1=
 
FadeSpellGem1=alt
 
FadeUseAtMyHP1=5
 
  
[Debuff]
 
DontDebuffConColor=|GREY|GREEN|
 
DebuffAdds=TRUE
 
DebuffTotal=3
 
DebuffTotalIfNamed=3
 
ForceMemDebuff=FALSE
 
  
DebuffUse1=TRUE
 
DebuffSpellName1=Turgur's Swarm
 
DebuffConditions1=
 
DebuffSpellGem1=alt
 
DebuffUseAtMobPctHP1=96
 
DebuffStopAtMobPctHP1=1
 
DebuffRecast1=2m
 
DebuffMaxTries1=2
 
  
DebuffUse2=TRUE
 
DebuffSpellName2=Malosinete
 
DebuffConditions2=
 
DebuffSpellGem2=alt
 
DebuffUseAtMobPctHP2=96
 
DebuffStopAtMobPctHP2=1
 
DebuffRecast2=2m
 
DebuffMaxTries2=2
 
  
DebuffUse3=TRUE
+
'''[Custom]'''
DebuffSpellName3=Pathosis
+
<pre>
DebuffConditions3=
+
CustomCombatTotal=1 <-- How many CustomCombat commands do i have?
DebuffSpellGem3=alt
+
CustomRestTotal=1 <-- How many CustomRest commands do i have?
DebuffUseAtMobPctHP3=96
+
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
DebuffStopAtMobPctHP3=1
+
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
DebuffRecast3=2m
+
</pre>
DebuffMaxTries3=2
+
Protip:<br>
 +
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.  <br>
 +
Or you can use it to do specific commands that are otherwise not available in any other section, like the example above.<br>
  
[XHeal]
 
XHealPullerName=PeteSampras
 
XHealPullerDist=50
 
XHealTotal=2
 
  
XHealUse1=TRUE
 
XHealSpellName1=Gotikan's Mending
 
XHealSpellGem1=gem9
 
XHealUseAt1=50
 
XHealStopAt1=90
 
  
XHealUse2=TRUE
 
XHealSpellName2=Reckless Remedy
 
XHealSpellGem2=gem12
 
XHealUseAt2=50
 
XHealStopAt2=90
 
  
[HealSelf]
+
'''[Pulling]'''
HealSelfTotal=1
+
<pre>
HealSelfUse1=TRUE
+
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
HealSelfSpellName1=Gotikan's Mending
+
PullRadius=1000 <-- How far out am i looking for mobs?
HealSelfSpellGem1=
+
PullZRadius=30 <-- How high/low from my current Z position am I looking for mobs?
HealSelfUseAt1=30
+
PullCastRange=150 <-- I wont try using either of my cast skills before this range
HealSelfStopAt1=90
+
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.
  
[HealGroup]
+
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.
HealGroupTotal=2
+
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
  
HealGroupUse1=TRUE
+
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
HealGroupSpellName1=Progenitor's Intervention
+
PullSkillRequiresLineOfSight2=TRUE
HealGroupSpellGem1=gem11
+
PullSkillDistance2=
HealGroupUseAt1=50
+
PullSkillSummon2=
HealGroupStopAt1=80
+
</pre>
HealGroupAvgHP1=60
+
Associated commands: <br>
 +
/pullingmethod [standard|nav|hunt|seek] - toggles pulling method <br>
 +
/puller - toggles puller<br>
 +
<br>
 +
MQ2Navigation camp setup example to add a camp called "center":<br>
 +
1. /addcamp center<br>
 +
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<br>
 +
3. /stopcamp<br>
 +
<br>
 +
4. whenever you want to use this camp now, or in the future, just /startcamp center<br>
 +
<br>
 +
Camps are set in your \mq2\Camps.ini folder if you want to delete camps later or share them.<br>
  
HealGroupUse2=TRUE
 
HealGroupSpellName2=Gotikan's Recourse
 
HealGroupSpellGem2=gem12
 
HealGroupUseAt2=50
 
HealGroupStopAt2=80
 
HealGroupAvgHP2=60
 
  
[HealSingle]
 
HealPullerName=PeteSampras
 
HealPullerDist=50
 
HealSingleTotal=3
 
  
HealSingleUse1=TRUE
 
HealSingleSpellName1=Union of Spirits
 
HealSingleConditions1=
 
HealSingleSpellGem1=alt
 
HealSingleUseAt1=80
 
HealSingleStopAt1=90
 
  
HealSingleUse2=TRUE
+
'''[Roles]''' <-- This section only functions if you are leader of your group
HealSingleSpellName2=Gotikan's Mending
+
<pre>
HealSingleSpellGem2=gem9
+
SetRoles=TRUE <-- Do you want to use this section?
HealSingleUseAt2=80
+
GroupLeader=PeteSampras <-- After setting all the other roles, you will make Petesampras leader
HealSingleStopAt2=90
+
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
 +
</pre>
  
HealSingleUse3=TRUE
 
HealSingleSpellName3=Reckless Remedy
 
HealSingleSpellGem3=gem12
 
HealSingleUseAt3=80
 
HealSingleStopAt3=90
 
  
[HealPet]
 
HealPetTotal=2
 
  
HealPetUse1=TRUE
 
HealPetSpellName1=Gotikan's Mending
 
HealPetSpellGem1=gem9
 
HealPetUseAt1=50
 
HealPetStopAt1=90
 
  
[MainTankBuff]
+
'''[Merc]'''  <-- this will auto manage your merc, leave the merc window open
MainTankBuffTotal=4
+
<pre>
 
+
MercAssistAt=100 <-- tired of your merc nuking/attacking right away? turn off autoassist on merc window and set this to 97 or so
MainTankBuffUse1=TRUE
+
MercStanceNormal=Reactive <-- Do you want this to be balanced on normal mobs? Reactive? Burn? Set that stance here
MainTankBuffSpellName1=Spirit Guardian
+
MercStanceNamed=Reactive <-- what mode do you want your merc to be in for named? set that here
MainTankBuffConditions1=
+
MercStanceOOC=Reactive <-- What mode do you want your merc to be in when nothing is going on? passive? dont care? set that here
MainTankBuffSpellGem1=alt
+
</pre>
MainTankBuffUseAt1=100
 
MainTankBuffStopAt1=5
 
MainTankBuffNamedOnly1=FALSE
 
MainTankBuffRecast1=5m
 
  
MainTankBuffUse2=TRUE
 
MainTankBuffSpellName2=Apathy
 
MainTankBuffSpellGem2=gem1
 
MainTankBuffUseAt2=100
 
MainTankBuffStopAt2=5
 
MainTankBuffNamedOnly2=FALSE
 
MainTankBuffRecast2=8m
 
MainTankBuffConditions2=
 
  
MainTankBuffUse3=TRUE
 
MainTankBuffSpellName3=Halcyon Breath
 
MainTankBuffSpellGem3=gem8
 
MainTankBuffUseAt3=100
 
MainTankBuffStopAt3=5
 
MainTankBuffNamedOnly3=FALSE
 
MainTankBuffRecast3=1m
 
MainTankBuffConditions3=
 
  
MainTankBuffUse4=TRUE
 
MainTankBuffSpellName4=Talisman of the Lion
 
MainTankBuffSpellGem4=gem12
 
MainTankBuffUseAt4=100
 
MainTankBuffStopAt4=5
 
MainTankBuffNamedOnly4=FALSE
 
MainTankBuffRecast4=1m
 
MainTankBuffConditions4=
 
  
[FightBuff]
+
'''[AA] '''<-- This section only fires during combat
FightBuffTotal=1
+
<pre>
ForceMemFightBuff=TRUE
+
AATotal=12 <-- total AAs you want to use
 +
AAAnnounce=FALSE <--announce them in AnnounceChannel?
  
FightBuffUse1=TRUE
+
AAUse1=TRUE <-- Use this AA?
FightBuffSpellName1=Ward of Reconstruction
+
AASpellName1=Reluctant Benevolence <-- AA Name
FightBuffSpellGem1=gem10
+
AAUseAtMobPctHP1=100 <-- Use when mob is 100% or less HP
FightBuffSpellIcon1=Ward of Reconstruction
+
AAStopAtMobPctHP1=1 <-- Stop using when mob is 1% hp
FightBuffNamedOnly1=FALSE
+
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
FightBuffForAggro1=FALSE
+
AANamedOnly1=FALSE <-- Use this only on mobs that are named? (you will get some false positives)
FightBuffConditions1=
+
AAConditions1=${Spell[Reluctant Benevolence].Stacks} <-- What conditions need met for this?
  
[AA]
 
AATotal=20
 
 
AAUse1=TRUE
 
AASpellName1=Spirit Call
 
AAUseAtMobPctHP1=96
 
AAStopAtMobPctHP1=5
 
AARecast1=1s
 
AAUseAtMyHP1=100
 
AANamedOnly1=FALSE
 
AAIfNearby1=npc
 
AAIfNearbyAmt1=1
 
AAConditions1=
 
  
 
AAUse2=TRUE
 
AAUse2=TRUE
AASpellName2=Languid Bite
+
AASpellName2=Empowered Focus of Arcanum
AAUseAtMobPctHP2=96
+
AAUseAtMobPctHP2=98
 
AAStopAtMobPctHP2=5
 
AAStopAtMobPctHP2=5
 
AARecast2=1s
 
AARecast2=1s
AAUseAtMyHP2=100
 
 
AANamedOnly2=FALSE
 
AANamedOnly2=FALSE
AAIfNearby2=npc
 
AAIfNearbyAmt2=1
 
 
AAConditions2=
 
AAConditions2=
  
 
AAUse3=TRUE
 
AAUse3=TRUE
AASpellName3=Dampen Resistance
+
AASpellName3=Army of the Dead
 
AAUseAtMobPctHP3=96
 
AAUseAtMobPctHP3=96
 
AAStopAtMobPctHP3=5
 
AAStopAtMobPctHP3=5
 
AARecast3=1s
 
AARecast3=1s
AAUseAtMyHP3=100
 
 
AANamedOnly3=FALSE
 
AANamedOnly3=FALSE
AAIfNearby3=npc
+
AAConditions3=${SpawnCount[corpse radius 50]}>4 <-- This spell only works if corpses are nearby
AAIfNearbyAmt3=1
 
AAConditions3=
 
  
 
AAUse4=TRUE
 
AAUse4=TRUE
AASpellName4=Fundament: First Spire of Ancestors
+
AASpellName4=Silent Casting
AAUseAtMobPctHP4=96
+
AAUseAtMobPctHP4=98
 
AAStopAtMobPctHP4=5
 
AAStopAtMobPctHP4=5
 
AARecast4=1s
 
AARecast4=1s
AAUseAtMyHP4=100
 
 
AANamedOnly4=TRUE
 
AANamedOnly4=TRUE
AAIfNearby4=npc
 
AAIfNearbyAmt4=1
 
 
AAConditions4=
 
AAConditions4=
  
AAUse5=FALSE
+
AAUse5=TRUE
AASpellName5=Rabid Bear
+
AASpellName5=Fundament: Third Spire of Necromancy
AAUseAtMobPctHP5=96
+
AAUseAtMobPctHP5=98
 
AAStopAtMobPctHP5=5
 
AAStopAtMobPctHP5=5
 
AARecast5=1s
 
AARecast5=1s
AAUseAtMyHP5=100
 
 
AANamedOnly5=FALSE
 
AANamedOnly5=FALSE
AAIfNearby5=npc
+
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
AAIfNearbyAmt5=1
 
AAConditions5=
 
  
[GoM]
+
AAUse6=TRUE
GoMTotal=0
+
AASpellName6=Embrace The Decay
GoMTotalIfNamed=0
+
AAUseAtMobPctHP6=96
GoMUse1=TRUE
+
AAStopAtMobPctHP6=5
GoMSpellName1=
+
AARecast6=1s
GoMSpellIcon1=
+
AANamedOnly6=FALSE
GoMSpellGem1=
+
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
  
[Dot]
+
AAUse7=TRUE
DotTotal=4
+
AASpellName7=Swarm of Decay
DotTotalIfNamed=5
+
AAUseAtMobPctHP7=96
ForceMemDot=TRUE
+
AAStopAtMobPctHP7=5
 +
AARecast7=1s
 +
AANamedOnly7=FALSE
 +
AAConditions7=
  
DotUse1=TRUE
+
AAUse8=TRUE
DotSpellName1=Poanag's Pandemic
+
AASpellName8=Rise of Bones
DotSpellGem1=gem3
+
AAUseAtMobPctHP8=96
DotUseAtMobPctHP1=96
+
AAStopAtMobPctHP8=5
DotStopAtMobPctHP1=1
+
AARecast8=1s
DotRecast1=1s
+
AANamedOnly8=FALSE
DotMaxTries1=2
+
AAConditions8=
DotConditions1=
 
  
DotUse2=TRUE
+
AAUse9=TRUE
DotSpellName2=Nectar of Sholoth
+
AASpellName9=Frenzy of the Dead
DotSpellGem2=gem6
+
AAUseAtMobPctHP9=96
DotUseAtMobPctHP2=96
+
AAStopAtMobPctHP9=5
DotStopAtMobPctHP2=1
+
AARecast9=1s
DotRecast2=1s
+
AANamedOnly9=FALSE
DotMaxTries2=2
+
AAConditions9=${Me.Pet.ID} <-- This AA only works if I have a pet up
DotConditions2=
 
  
DotUse3=TRUE
+
AAUse10=TRUE
DotSpellName3=Hoodoo
+
AASpellName10=Gift of Deathly Resolve
DotSpellGem3=gem2
+
AAUseAtMobPctHP10=96
DotUseAtMobPctHP3=96
+
AAStopAtMobPctHP10=50
DotStopAtMobPctHP3=1
+
AARecast10=1s
DotRecast3=1s
+
AANamedOnly10=TRUE
DotMaxTries3=2
+
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
DotConditions3=
 
  
DotUse4=TRUE
+
AAUse11=TRUE
DotSpellName4=Naeya Blood
+
AASpellName11=Funeral Pyre
DotSpellGem4=gem4
+
AAUseAtMobPctHP11=96
DotUseAtMobPctHP4=96
+
AAStopAtMobPctHP11=50
DotStopAtMobPctHP4=1
+
AARecast11=1s
DotRecast4=1s
+
AANamedOnly11=TRUE
DotMaxTries4=2
+
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.
DotConditions4=
 
  
DotUse5=TRUE
+
AAUse12=TRUE
DotSpellName5=Stranglefang's Venom
+
AASpellName12=Mercurial Torment
DotSpellGem5=gem7
+
AAUseAtMobPctHP12=96
DotUseAtMobPctHP5=96
+
AAStopAtMobPctHP12=50
DotStopAtMobPctHP5=1
+
AARecast12=1s
DotRecast5=1s
+
AANamedOnly12=TRUE
DotMaxTries5=2
+
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.
DotConditions5=
+
</pre>
  
[Nuke]
 
NukeTotal=1
 
NukeTotalIfNamed=1
 
ForceMemNuke=FALSE
 
  
NukeUse1=TRUE
 
NukeSpellName1=Bite of the Grendlaen
 
NukeSpellGem1=gem12
 
NukeUseAtMobPctHP1=96
 
NukeStopAtMobPctHP1=1
 
NukeRecast1=1s
 
NukeConditions1=
 
  
[ClickyNuke]
 
ClickyNukeTotal=2
 
  
ClickyNukeName1=Blessed Spiritstaff of the Heyokah
+
'''[Aggro]'''
ClickyNukeConditions1=
+
<pre>
ClickyNukeSpellGem1=item
+
AggroSpellName=Force of Emarr <-- name of disc/aa/spell/item. 
ClickyNukeRecast1=1s
+
AggroSpellGem=gem2 <-- gem#,alt,disc,item
ClickyNukeUseAtMobPctHP1=96
+
AggroConditions=!${Raid.Members} <-- any addition conditions
ClickyNukeStopAtMobPctHP1=1
+
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
ClickyNukeNamedOnly1=FALSE
+
AEAggroMinMobCount=1               <-- Will only use AE aggro spells if at least this many NPCs are nearby on aggro
 +
</pre>
 +
NOTE: PAL/SK automatically use Audacity, Challenge, and AE/single target Aggro AAs.  Additionally, SK auto uses terror line.
  
ClickyNukeName2=Grandiose Coat of the Diviner
 
ClickyNukeConditions2=
 
ClickyNukeSpellGem2=item
 
ClickyNukeRecast2=1s
 
ClickyNukeUseAtMobPctHP2=96
 
ClickyNukeStopAtMobPctHP2=1
 
ClickyNukeNamedOnly2=FALSE
 
  
  
[Rez]
 
GrabCorpse=TRUE
 
RezTotal=2
 
ForceMemRez=FALSE
 
RezUse1=TRUE
 
RezSpellName1=Call of the Wild
 
RezConditions1=
 
RezSpellGem1=alt
 
RezDuringCombat1=TRUE
 
RezUse2=TRUE
 
RezAlias1=|shmrez|
 
  
RezTrustedTotal=5
+
'''[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
RezTrusted1=PeteSampras
+
<pre>
RezTrusted2=htw
+
AuraTotal=2 <-- Total auras, if you dont have any auras, set this to 0 or it could hang you up
RezTrusted3=Fry
+
AuraAnnounce=FALSE <-- Announce auras to AnnounceChannel?
RezTrusted4=kkthx
 
RezTrusted5=Xeniaz
 
RezRaidTimer=5m
 
GroupRaidTimer=1m
 
  
[Mana]
+
AuraUse1=TRUE <-- Use?
MedAt=75
+
AuraSpellName1=Aura of the Pious <-- Name of the spell/item/disc you cast
MedToFull=FALSE
+
AuraSpellIcon1=Aura of the Pious Effect <-- Name of the song icon in song window, if any
MedEvenIfNotInOOCRegen=FALSE
+
AuraSpellGem1=gem12 <-- gem#, alt, item, disc
MedTimer=10s
+
AuraName1=Aura of the Pious <-- name of aura as it appears in your aura window. (shift a)
Canni_IfManaBelow=70
 
DontCanni_UnlessManaBelow=90
 
Canni_IfMyHPAbove=70
 
  
[Aura]
 
AuraTotal=2
 
AuraUse1=TRUE
 
AuraSpellName1=Aura of the Pious
 
AuraSpellGem1=gem12
 
AuraSpellIcon1=Aura of the Pious Effect
 
AuraName1=Aura of the Pious
 
 
AuraUse2=TRUE
 
AuraUse2=TRUE
AuraSpellName2=Circle of Divinity Rk. II
+
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
 
AuraSpellGem2=gem12
AuraSpellIcon2=Divinity Effect
 
 
AuraName2=Circle of Divinity
 
AuraName2=Circle of Divinity
 
[SelfBuff]
 
SelfBuffTotal=4
 
 
SelfBuffUse1=TRUE
 
SelfBuffSpellName1=Pact of the Wolf
 
SelfBuffSpellIcon1=Pact of the Wolf
 
SelfBuffConditions1=
 
SelfBuffSpellGem1=alt
 
 
SelfBuffUse2=TRUE
 
SelfBuffSpellName2=Preincarnation
 
SelfBuffSpellIcon2=Preincarnation
 
SelfBuffConditions2=
 
SelfBuffSpellGem2=alt
 
 
SelfBuffUse3=TRUE
 
SelfBuffSpellName3=Pack of Hilnaah
 
SelfBuffSpellIcon3=Pack of Hilnaah Rk. II
 
SelfBuffSpellGem3=gem10
 
SelfBuffConditions3=!${Me.Song[Mana Repercussion II].ID}
 
 
SelfBuffUse4=TRUE
 
SelfBuffSpellName4=Talisman of Kolos' Unity
 
SelfBuffSpellIcon4=Imperative Focusing Rk. II
 
SelfBuffSpellGem4=gem7
 
SelfBuffConditions4=
 
 
[Buff]
 
InvisSpell=Group Silent Presence
 
InvisSpellGem=alt
 
InvisUndeadSpell=
 
InvisUndeadSpellGem=
 
BuffTotal=6
 
 
BuffUse1=TRUE
 
BuffSpellName1=Group Pact of the Wolf
 
BuffSpellIcon1=Group Pact of the Wolf
 
BuffConditions1=
 
BuffSpellGem1=alt
 
BuffClasses1=BER,BRD,BST,CLR,DRU,ENC,MAG,MNK,NEC,PAL,RNG,ROG,SHD,SHM,WAR,WIZ
 
BuffAlias1=|
 
 
BuffUse2=TRUE
 
BuffSpellName2=Communion of the Cheetah
 
BuffSpellIcon2=Communion of the Cheetah
 
BuffConditions2=
 
BuffSpellGem2=alt
 
BuffClasses2=|
 
BuffAlias2=|cheetah|
 
 
BuffUse3=TRUE
 
BuffSpellName3=Talisman of Celerity
 
BuffSpellIcon3=Talisman of Celerity
 
BuffConditions3=!${Spawn[group enc].ID}
 
BuffSpellGem3=gem7
 
BuffClasses3=PAL,RNG,BRD,SHD,WAR|
 
BuffAlias1=|haste|
 
 
BuffUse4=TRUE
 
BuffSpellName4=Unity of Kolos
 
BuffSpellIcon4=Mammoth's Force Rk. II
 
BuffIconAlt4=Mammoth's Force Rk. III
 
BuffSpellGem4=gem7
 
BuffClasses4=BER,BRD,BST,CLR,DRU,ENC,MAG,MNK,NEC,PAL,RNG,ROG,SHD,SHM,WAR,WIZ
 
 
BuffUse5=TRUE
 
BuffSpellName5=Talisman of the Indomitable
 
BuffSpellIcon5=Talisman of the Indomitable Rk. II
 
BuffSpellGem5=gem7
 
BuffClasses5=BER,BRD,BST,CLR,DRU,ENC,MAG,MNK,NEC,PAL,RNG,ROG,SHD,SHM,WAR,WIZ
 
 
BuffUse6=FALSE
 
BuffSpellName6=Talisman of Kolos' Unity
 
BuffSpellIcon6=Talisman of Kolos' Unity Rk. II
 
BuffSpellGem6=gem6
 
BuffClasses6=BER,BRD,BST,CLR,DRU,ENC,MAG,MNK,NEC,PAL,RNG,ROG,SHD,SHM,WAR,WIZ
 
 
[Pet]
 
UsePet=TRUE
 
PetSpell=Hilnaah's Faithful Rk. II
 
PetSpellGem=gem10
 
UsePetFocusAA=TRUE
 
PetAttackAt=97
 
ShrinkPet=TRUE
 
ShrinkPetIfHeightAbove=2.1
 
ShrinkPetSpell=Shrink
 
ShrinkPetSpellGem=alt
 
DoPetHeals=TRUE
 
PetHealAt=50
 
PetHealSpell=Gotikan's Mending
 
PetHealSpellGem=gem9
 
UseAAPetHeal=TRUE
 
PetAAHealAt=20
 
DoPetBuffs=TRUE
 
PetBuffRecheck=10s
 
PetBuffTotal=1
 
PetBuffName1=Imperative Focusing Rk. II
 
PetBuffSpell1=Unity of Kolos
 
PetBuffGem1=gem7
 
PetBuffName2=Fortify Companion
 
PetBuffSpell2=Fortify Companion
 
PetBuffGem2=alt
 
 
[ClickyMaintenance]
 
clickies=5
 
click1=Brilliant Band of Arcane Knowledge
 
click2=Excrucidator's Black Silken Sash
 
click3=Drake of Pure Nature
 
click4=Chattering Nymph Rod
 
click5=Bronze Ringmail Spaulders
 
 
[Merc]
 
MercAssistAt=97
 
MercStanceNormal=Burn
 
MercStanceNamed=Balanced
 
 
</pre>
 
</pre>
  
===Configuration Explanation===
 
  
* <span class="highlight2">BuffTotal=1</span> - : The macro checks for 1 buff.
 
  
==Pulling==
 
===Commands===
 
Commands you need to know:
 
<pre>
 
/puller - toggles you as puller or not, regardless of Group.Puller settings
 
/pullingmethod - toggles between mq2navigation and mq2advpath pulling
 
/paths x - sets the number of paths you will randomly use for AdvPath.
 
</pre>
 
  
===Example===
+
'''[Bard]''' <-- bard specific section
How to use example that i want to call "center":
 
 
<pre>
 
<pre>
/addcamp center
+
UseSlow=TRUE <-- use SlowName to slow mobs?
*if you were using mq2navigation for this camp, you would target a bunch of mobs via map at this point until you targeted all you wanted to pull
+
SlowName=Requiem of Time <-- Item/song name to slow with
/stopcamp
+
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
 
</pre>
 
</pre>
  
For mq2avpath: (YOU MUST START AT 0 FOR PATH NAMES)
 
<pre>
 
/record center0
 
*run your path starting at group, and finishing at group.
 
/record save center0
 
</pre>
 
  
<pre>
 
/record center1
 
*run a different path starting at group, and finishing at group.
 
/record save center1
 
</pre>
 
  
 +
'''[Buff]'''
 
<pre>
 
<pre>
/startcamp center
+
BuffXTargets=FALSE <-- Allows you to buff pc/mercs/pets on your extended window that arent aggro on you
</pre>
+
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]
  
(if you only make 1 path, you dont need to do /paths, extra paths are just for randomness, and so that you can do smaller paths for distinct areas)
+
BuffTotal=2 <-- Total buffs to check
/paths 2
+
BuffAnnounce=FALSE
  
it will now randomly run center0, or center1, and target the nearest mob. once that mob is in line of sight, it will aggro it via your pullingskill and head back to group.
+
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.
  
I know that is a lot to take in, but once you use it a couple times its not bad. At any rate, from very, very limited testing, it was working for me on a bard.
+
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
 +
</pre>
 +
Protips:<br>
 +
There are several aliases that can by used in any chat channel by your AuthorizedUsers to invis, ivu, univis, levitate, and remove levitate:<br>
 +
invison<br>
 +
ivuon<br>
 +
invisoff<br>
 +
levon<br>
 +
levoff<br>
 +
<br>
 +
To see what category your buff fits into, or to use it as a conditions, use this format: ${BuffType1}<br>
 +
You can use Buffs to request *ANY* spell/aa/item be cast by someone.<br>
 +
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<br>
 +
<br>
 +
Want a mod rod? set it up! Want a port? want 15 different ports? <br>
 +
want cures on demand? Want to set up a heal that will cast on demand so you can heal whomever you want?
 +
<br>
 +
Example wizard translocate request:<br>
 +
BuffUse2=TRUE<br>
 +
BuffSpellName2=Teleport<br>
 +
BuffSpellIcon2=<br>
 +
BuffSpellGem2=alt<br>
 +
BuffIconAlt2=<br>
 +
BuffAlias2=|AE TL| <-- if you say AE TL in any chat channel, it will cast Teleport<br>
 +
BuffClasses2= <-- no classes, so it wont ever cast it without being asked<br>
 +
<br>
 +
Example cure request:<br>
 +
BuffUse2=TRUE<br>
 +
BuffSpellName2=Radiant Cure<br>
 +
BuffSpellIcon2=<br>
 +
BuffSpellGem2=alt<br>
 +
BuffIconAlt2=<br>
 +
BuffAlias2=|cureme| <-- if you say "cureme", it will cast radiant cure<br>
 +
BuffClasses2= <-- no classes, so it wont ever cast it without being asked<br>
  
MQ2AdvPath wiki for full list of commands in that plugin:
 
[[MQ2AdvPath]]
 
  
==Version History==
 
  
*<span class="highlight2">Archived notes by [section]</span> -  <span class="highlight">''PeteSampras'' @ 2012-10-31</span> -
 
[Section] info
 
  
 +
'''[ClickyMaintenance]'''
 +
<pre>
 +
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
 +
</pre>
 +
Associated commands:  <br>
 +
/addclicky < link ><br>
 +
/removeclicky < link > <br>
 +
/clicky <br>
  
[Merc]
 
Will auto revive any merc. you can set what % for mob to assist at if you set it to manual assist mode. can define different stances for named vs regular mobs.
 
  
[Setrole]
 
Will set your group puller, tank, assist, leader for you. Will set your XTarget1 as Group Assist Target or Raid Assist 1 Target as you change from in or out of raids. it will only change it once so it doesnt spam you if you manually change it to something else.
 
  
[Settings]
 
InterruptToHealAt=60
 
InterruptToXHealAt=60
 
Added checks to Heal/XHeal/Lifetap if you are casting dots, stuns, nukes, buffs, fightbuffs, maintankbuffs and you/groupmate PctHPs fall below that amount.
 
  
[Settings]
+
'''[ClickyNuke]'''
ImmunityCheck=TRUE
+
<pre>
ImmunityCheck will check your poison/disease/magic/fire/cold immunity lists and not use that nuke or dot if the mob is flagged as immune.
+
ClickyNukeTotal=3 <-- Total clicky nukes
 +
ClickyNukeAnnounce=FALSE <-- Announce in AnnounceChannel?
  
[Settings]
+
ClickyNukeUse1=TRUE <-- Use?
AutoHideNPCCorpses=FALSE
+
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
  
[Custom]
+
ClickyNukeUse3=TRUE
CustomCombat1=/call Pikachu
+
ClickyNukeName3=Blightbringer's Tunic of the Grave
During the Always routine will /call Pikachu
+
ClickyNukeRecast3=120s
 +
ClickyNukeUseAtMobPctHP3=96
 +
ClickyNukeStopAtMobPctHP3=1
 +
ClickyNukeNamedOnly3=FALSE
 +
ClickyNukeConditions3=
 +
</pre>
  
if you want to #include some other include and add it to the Always, Combat, or Rest loop, just add the name of the routine you want to call.
 
  
[Mana]
 
Medtimer=10s
 
Delay before /sitting to med after combat, default is 10s
 
  
[Settings]
 
Verbose=TRUE/FALSE
 
MyChannel=bc/tell/group/rsay/channel
 
  
[Mana]
+
'''[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
DontCanni_UnlessMyManaBelow=95 (for shaman)
+
<pre>
DontHarvest_UnlessMyManaBelow=95 (for wizard)
+
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
  
Added support for mana dumps from beastlords, enchanters, clerics into the macro. The ini already had the settings for them. (paragon, focused paragon, second spire enc, quiet miracle cleric)
+
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
  
[Pull]
+
DebuffUse2=TRUE
Pulling section for MQ2Navigation for lifetimers
+
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
  
Added some checks to pulling routines and /face if you are throwing/using a bow. Also made it only try to throw/bow at a mob for 6 seconds before moving onto next, and had it strafe left/right to try to see the mob if there is a tree or something in the way.
+
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=
  
new commands:
+
DebuffUse4=TRUE
/puller - toggles whether you are puller (or if you are set as puller in group, then it is set as 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.
 +
</pre>
 +
Protip:<br>
 +
[Debuff]<br>
 +
DebuffConditions2=!${Debuff1${DebuffID}}<br>
 +
${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.<br>
 +
<br>
 +
With the ID, you can use the Spawn TLO.<br>
 +
<br>
 +
Such as:<br>
 +
DebuffConditions2=${Select[${Spawn[${DebuffID}].ConColor},RED,YELLOW]} <br>
  
How to create and use camps:
 
1. /addcamp name - adds a camp to the zone with that name
 
2. Target all mobs via map or manually target to add them to camp
 
3. /stopcamp - stops adding mobs to camp
 
  
From then on:
 
4. /startcamp name - starts pulling mobs from designated camp with that name
 
  
And while i was at it, i went ahead and stopped it from blocking you from being able to set up a camp for both mq2navigation and mq2advpath at the same time.
 
  
So now you can:
+
'''[Disc]'''
/addcamp potato
+
<pre>
/target all the mobs in the area you want to kill via map or manually
+
DiscTotal=2 <-- Total
/stopcamp
 
  
/record potato0
+
DiscUse1=TRUE <-- Use
run around your camp
+
DiscName1=Deftdance Discipline <-- Leave as rank 1 to auto detect future ranks
/record save potato0
+
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
  
/record potato1
+
DiscUse2=TRUE
run around your camp area in a different route
+
DiscName2=Thousand Blades
/record save potato1
+
DiscNamedOnly2=TRUE
 +
DiscEndCost2=0
 +
DiscRecast2=1s
 +
DiscConditions2=${Me.PctHPs}<40
 +
</pre>
  
and now you have both an mq2navigation and mq2advpath version of the same camp. and you can toggle between using the 2 if you are lifetime member via /pullingmethod
 
  
Posted new version. Turns out MQ2Navigation and MQ2AdvPath input strings werent compatible.
 
  
These are the same:
 
/addcamp
 
/stopcamp
 
  
for MQ2AdvPath startcamp:
+
'''[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.
/starcamp name 2
+
<pre>
 +
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?
  
for MQ2Navigation startcamp:
+
DotUse1=TRUE <-- Use?
/startcampnav name
+
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
  
[Campfire]
+
DotUse2=TRUE
UseCampfire=TRUE
+
DotSpellName2=Itkari's Swift Lifedraw
CampfireName=Super Campfire
+
DotSpellGem2=gem3
CF_Item1=Fellowship Kit: Super Awesome
+
DotUseAtMobPctHP2=98
CF_Item2=Fellowship Lumber Bundle: Light Brown Oak
+
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})
  
Posted new version for non-lifetimers, removing autoload of mq2navigation.
+
DotUse3=TRUE
/campfire
+
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})
  
That will toggle on and off of automatically dropping a campfire if eligible when you enter combat. You can use standard or custom campfires. If using custom, you have to define the name and the components required.
+
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})
  
[All]
+
DotUse6=TRUE
Added new variable "Conditions" to the following routines:
+
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})
  
AA, ClickyNuke, Debuff, Disc, Dot, FightBuff, ImHit, MainTankBuff, Nuke, SelfBuff, Stun
+
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})
  
You will need to reload the sections from scratch to get the variable to declare automatically in your ini. Sorry, not much i can do about that. Alternatively, you can just add in DotConditions1, NukeConditions3, etc manually to the ones you want special conditions for.
+
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})
  
Example of what it does:
+
DotUse9=TRUE
NukeConditions1=${Me.Buff[Twincast].ID} && ${SpawnCount[npc radius 40]}>3 && !${Spawn[group cleric].ID}
+
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})
  
that would only fire nuke1 if you had twincast on, there were more than 3 npc nearby, and there were no clerics in your group alive. just as an example.
+
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})
  
Use the normal syntax that you would use for a holyshit/downshit. If there are other routines that need "Conditions" variable added, let me know. The others seemed ok without it though.
+
DotUse11=TRUE
***IF YOU DO NOT WANT ANY SPECIAL CONDITIONS, LEAVE IT BLANK
+
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})
  
Fixed "Conditions" setting for variables.
+
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})
  
Added some checks to significantly speed up the macro if you set things you dont use to FALSE in the ini. it will now skip all the checks for them if they are set to FALSE, which could potentially up to double the cycle speed for someone level 95 with max spells/AAs.
+
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})
 +
</pre>
 +
Available Variable: ${DotOn1}, ${DotOn2}, etc.  Returns TRUE if that dot is on mob, FALSE if not.  
  
[Bard]
 
Fixed display issue for bard Orb of Tishan and Slow that it didnt /echo properly.
 
  
[Settings]
 
AssistType=5  - allowing you to target your own prioritized mobs. Must use AddHandler for it to work
 
  
[Fade]
 
allows you to fade at designated HP and conditions
 
  
[HealPet]
+
'''[Fade]'''
Allows you to specifically designate heals for pets
+
<pre>
 +
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?
 +
</pre>
  
[Settings]
 
-Corrected AssistType1 to only /attack when at or below the AttackAt amount.
 
  
[HealBalance]
 
-Cleric shields now use /itemnotify so it doesnt try to swap shield into a top level inv slot
 
  
[Settings]
 
-AssistType5, allowing you to target your own prioritized mobs. Must use AddHandler for it to work
 
--Can use your own name or "self", /mac bot self, or /mac bot PeteSampras
 
  
-[Fade] section to allow you to fade at designated HP and conditions. Uses AA fades only. Conditions line to set whatever you want
+
'''[FeignDeath]'''
 +
<pre>
 +
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?
  
-[HealPet] section to allow you to specifically designate heals for pets
+
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.
2 heals for heal classes. 6 for mag/nec/bst
+
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
  
[Custom] CustomCombat, CustomRest, to make macro specific holy/downshits, or /calling of external routines
+
FeignDeathAfter2=100
--literally checks the line you put there just like a holy or downshit:
+
FeignDeathUse2=FALSE
---/call WaitForRez
+
FeignDeathSpellName2=Improved Death Peace
---/if (${Me.PctHPs}<20) /echo hi
+
FeignDeathSpellGem2=alt
 +
FeignDeathRecast2=10s
 +
FeignDeathUseAtMyHP2=40
 +
FeignDeathConditions2=
 +
</pre>
  
[Disc]
 
DiscIfNearbyAmtX line had a typo. Discs should work now, but you need to reload your ini section for discs
 
  
[Pet]
 
If you had a rk2/3 pet buff in spellbook, and the rank 1 AA, it would try to make it rank2/3 even if using the AA. If you want to use the rk2/3, specifically put Rk. II or Rk. III at the end for the spells you have exact name AA versions of.
 
  
[Settings]
 
AutoBreakInvis=FALSE
 
  
This should bypass the invis check for attacking if you set it to TRUE.
+
'''[FightBuff]'''
 +
<pre>
 +
FightBuffTotal=1 <-- Total fightbuffs
 +
ForceMemFightBuff=FALSE <-- memorize if not memmed?
 +
FightBuffAnnounce=FALSE <-- Announce in AnnounChannel
  
[Setroles]
+
FightBuffUse1=TRUE <-- Use
Uses normal eq command of /xtarget instead of mq2 command of /setrole, this should stop XTarget1 from being buggy. I still need someone to confirm for me how to set it to Auto Hater. "/xtarget set 1 AutoHater" may or may not work.
+
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.
  
[Settings]
+
Alternate example to use yaulp and cast group HoT if a cleric:
-Modified AssistType5 (self targeting) to use either AddHandler or to just use XTargets. Using XTargets should make it more efficient, especially if your tank instance is running in the background on computer.
+
[FightBuff]
-Modified AssistType5 to change all of your XTargets to Auto Hater if they are not already.
+
FightBuffTotal=2
-fixed typo in AssistType5
+
ForceMemFightBuff=FALSE
 +
FightBuffAnnounce=FALSE
  
[Root]
+
FightBuffUse1=TRUE
FaceNPCToRoot=FALSE
+
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
  
if set to true, you will /face before casting root.
+
FightBuffUse2=TRUE
 +
FightBuffSpellName2=Yaulp XIII
 +
FightBuffSpellIcon2=Yaulp XIII
 +
FightBuffSpellGem2=gem12
 +
FightBuffNamedOnly2=FALSE
 +
FightBuffForAggro2=FALSE
 +
</pre>
  
[Root] section is attempted before [Debuff] section now for crowd control purposes.
 
Added second layer of checks for primary target on debuff/root. It should already have worked as is due to ID check, but now theres another layer of checks anyway.
 
  
[Pet]
 
-support for auto-summoning and/or equipping pet weapons
 
-you define your own variables in game or via ini
 
- CASE SeNsItIvE. if you add in game, you MUST use the item link and use the word "add".
 
usage to add: /petgear add|alias|< link of item >
 
usage to equip: /petgear alias|alias|alias
 
example:
 
/petgear add|wind|Summoned: Weapon of Wind
 
/petgear add|ice|Summoned: Weapon of Ice
 
/petgear add|belt|Summoned: Belt of Awesomesauce
 
  
Then whenever you want those given to pet:
 
/petgear wind|ice|belt
 
  
PetGearDefaultAlias=fire|ice|belt|mask
+
'''[GoM]''' <-- This section only checks if you have GoM on and it is in the nuke or dot cycle
**This will try to auto load these items you've defined when you create pet if it isnt holding anything already. i dont know how this affects necro pets that hold a scythe.
+
<pre>
 +
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#]
 +
</pre>
  
mages only:
 
PetGearSpellName=name
 
PetGearSpellGem=gem5
 
PetGearDefaultInvSlotForBag=10
 
  
[HealSingle]
 
HealSingleRecast1=18s (or whatever number,reuse time you want, default is 0)
 
  
This will place a reuse timer on the individual you are casting the single heal on, NOT on the spell itself. So if you put 18s reuse, it is by group member. This should allow you to do single target HoTs.
 
  
**It will load with /mac bot load if you delete your old [HealSingle] section or on a fresh load, or you can just manually add that to the INI for any heal you want to have a recast timer.
+
'''[HealSingle]''' <-- only heals group members
 +
<pre>
 +
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
  
posted 1.093 to fix the HealerSingleRecast error.
+
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
  
[Disc]s will now still check, even if a disc is already running. However, a disc with a duration will not try to fire if a disc is currently running. Instant cast discs will fire if a disc is already running.
+
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=
  
[Merc]
+
HealSingleUse4=TRUE
MercStanceOOC=Passive (will make your merc be passive when not in combat, default is blank. aka. same as current)
+
HealSingleSpellName4=Graceful Remedy <-- again, fast heals first are my personal preferred method.
 +
HealSingleSpellGem4=gem12
 +
HealSingleUseAt4=80
 +
HealSingleStopAt4=90
 +
HealSingleStopAtMobPctHP4=0
 +
HealSingleRecast4=1s
 +
HealSingleConditions4=
  
[Custom]
+
HealSingleUse5=TRUE
CustomRestTotal=1
+
HealSingleSpellName5=Reverent Light <-- big heal now
CustomRest1=/call Clarity
+
HealSingleSpellGem5=gem12
 +
HealSingleUseAt5=80
 +
HealSingleStopAt5=90
 +
HealSingleStopAtMobPctHP5=0
 +
HealSingleRecast5=1s
 +
HealSingleConditions5=
  
CustomCombatTotal=1
+
HealSingleUse6=TRUE
CustomCombat1=/call DPS
+
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.
  
-Clarity routine in case you want to use clarity potions. It will check your inventory for them, figure out the best, see if you have buff space and dont already have clarity, then use 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
  
-DPS routine is to figure out how much estimated time is left before the target dies. I made it for my necro mac years ago so that you wouldnt waste mana dotting a mob that would die soon, or so you could use the emerald essence proc nuke if the mob was about to die in the next 5 seconds. It is only an estimate, but i want to see if it works. It gives you access to the variable: ${FightTimer} You can then use this variable in your conditions to figure out if you want to perform certain actions. Maybe you dont want to debuff a mob if it is going to die in the next 10 seconds.
+
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.
 +
</pre>
  
  
[Heal_____] sections
 
Heal___ConditionsX variable to all heals.
 
  
Special variables involved: ${Group.Member[${g}]}
 
  
[Settings]
+
'''[HealGroup]''' <-- only used by priests and paladin
AttackRange=50
+
<pre>
AttackCommand=/killthis
+
HealGroupTotal=3 <-- Total
 +
HealGroupAnnounce=FALSE <-- Announce in AnnounceChannel?
  
AttackRange will determine the distance the mob has to be before engaging a mob on XTarget1. It will also affect using the AttackCommand for AssistType2/3. Previously, the AttackCommand was a hidden variable, and was defaulted to "/attack on". mq2melee is enhanced to do different discs and skills if you use /killthis. So by letting you choose which you want to do, you can increase your dps some. AttackRange ONLY affects AssistType=2 and AssistType=3 for now.
+
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.
  
Options for AttackCommand= are: "/killthis", "/attack on", "/keypress z", or "/keypress q", or if you have changed your default keybinds, they are whatever you've changed them to.
+
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.
  
[Settings]
+
HealGroupUse3=TRUE
OpeningMove=
+
HealGroupSpellName3=Word of Renewal
 +
HealGroupSpellGem3=gem12
 +
HealGroupUseAt3=50
 +
HealGroupStopAt3=80
 +
HealGroupAvgHP3=60
 +
HealGroupConditions3=
 +
</pre>
  
This will execute whatever command you put there prior to /call Attack. It will be the very first thing you do with the designated mob on your target.
 
  
For pet classes, i would suggest:
 
OpeningMove=/pet attack
 
  
For knights:
 
OpeningMove=/disc withstand
 
(or whatever your current rune disc is)
 
  
You can use /multiline or /if statements, just like a holy/downshit.
+
'''[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
 +
<pre>
 +
HealBalanceTotal=2
 +
HealBalanceAnnounce=FALSE
  
[Mana]
+
HealBalanceUse1=TRUE
UseClarityPotions=FALSE
+
HealBalanceSpellName1=Divine Arbitration
Auto detection of lower level clarity potions in case you run out of your highest level potion. Best remaining potion will be used.
+
HealBalanceConditions1=
 +
HealBalanceSpellGem1=alt
 +
HealBalanceUseAt1=30 <-- if individual gets below this amount, use it.
 +
HealBalanceStopAt1=70
  
Removed:
+
HealBalanceUse2=TRUE
[Disc]
+
HealBalanceSpellName2=Aegis of Superior Divinity
OutOfCombatDiscName=
+
HealBalanceConditions2=
UseOOCDiscAtMyEndPct=
+
HealBalanceSpellGem2=item
UseOOCDiscAtDistance=
+
HealBalanceUseAt2=30 <-- if individual gets below this amount, use it.
 +
HealBalanceStopAt2=70
 +
</pre>
  
Those no longer function and capabilities are replaced with OpeningMove=
 
  
[Pet]
 
PetBuffRecast1=1s
 
PetBuffRecast2=2m
 
  
  
[HealSelf]
+
'''[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.
Fixed self heal routine. I had changed a variable because there was an error, turns out there was a second error that broke the routine when i corrected the first error.
+
<pre>
 +
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
 +
</pre>
  
[Mez][AEMez][PBAEMez]
 
AE Mezzes triggering immune messages will now be ignored so that when they land on PCs it doesnt return FALSE positives. If you find your NPCs arent being mezzed, check the Mob_Ignore_List.ini to make sure nothing is incorrectly added. If it is, just delete it out.
 
  
[Summon]
 
section added
 
  
[Merc]
 
Mercs will no longer try to use MercStanceOOC if you dont have one defined.
 
  
[Summon]
+
'''[HealPet]''' <-- group member pets are ignored if you dont specify heals in this section
section will now only check for exact SummonItemNameX matches instead of partials. This should alleviate issues for items like Warm Milk Dispenser summoning Warm Milk.
+
<pre>
 +
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=
 +
</pre>
 +
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.
  
[Settings]
 
EmergencyAlias=Evac Now!
 
EmergencySkill=Exodus
 
ClearTargetDataAlias=resettarget
 
  
Set those to whatever you want, they are blank by default (turned off).
 
EmergencyAlias=whatever phrase you put here will turn off attack/twist/interrupt spells, reset target data, and then fire the skill below
 
EmergencySkill=aa/spell that is memmed/item/disc/ability - if it isnt ready, it just skips it.
 
ClearTargetDataAlias=this phrase will clear your target, turn attack /twist / spell casting off and reset your target data in case you want to stop hitting the current target.
 
  
[Rez]
 
Fixed rez crash above, hopefully.
 
  
[Summon]
+
'''[Jolt]''' <-- This is the jolt/deaggro section.  Useful to deaggro the mob
Less spam for item summoning, you should only get 1 message.
+
<pre>
if the spell name is an item, it will now use /itemnotify instead of /call Cast to avoid top levle inventory swapping
+
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?
  
[Settings]
+
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.
OptionsCheckRaid=
+
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
 +
</pre>
  
If you are in a raid, it will use that list of routines instead. This should let you turn off Dot/Nukes/etc if you dont want them to be used on raids. Default will be same as OptionsCheck= . It wont take effect until the second time you use macro.
 
  
Reminder that if you want to control individual spells to cast while on a raid, you can use DotConditions1=!${Raid.Members} etc. Or you could make your DotTotal=${If[${Raid.Members},8,4]}, and it would only check on initial mac startup.
 
  
[Settings]
 
InterruptToHealAt=30
 
  
That will now work for check for lifetaps too. Between each routine it will check Lifetap routine if your HP is at or below the amount you designate. The normal check every cycle for Lifetap routine is unaffected, so you will keep checking it as normal as well.
+
'''[Lifetap]'''
 +
<pre>
 +
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
  
Corrected:
+
LifetapUse1=TRUE <-- Use?
Emergency events/variables had a typo because i forgot about something. Fixed.
+
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=
 +
</pre>
  
*<span class="highlight2">Archived notes - hidden info</span> -  <span class="highlight">''PeteSampras'' @ 2012-10-31</span>
 
Hidden features:
 
posted a new version, it now checks to see if you have a small, medium, or large mod rod and it also checks to see that if you have the large mod rod AA, it wont cast the medium, and if you have anything more than the small, it wont cast the small.
 
  
Posted new version for aura fix and change to Free Target splash casts. Your screen may appear to blink for a split second.
 
  
Added:
 
Enc auto summons Azure and Sanguine crystals if above 95% mana.
 
Enc uses heal crystal at 50%
 
Enc uses mana crystal at 75%
 
  
Added bard support for AE Mez, tash orb, slow, clickynukes, selfbuffs, auras while /twisting.
+
'''[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.
 +
<pre>
 +
MainTankBuffTotal=7 <-- Total
 +
MainTankBuffAnnounce=FALSE <-- Announce in AnnounceChannel?
  
It doesnt set up twist for you, you need to manually /twist 1 2 3 4 or whatever your song line up is, then it will handle it from there.
+
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.
  
Posted new version so default value on MQ2NavFollowCommand when you /mac bot load is now your charname + a random series of numbers so there are no accidental triggers.
+
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=
  
-Looters should no longer try to loot with anything on XTarget.
+
MainTankBuffUse4=TRUE
-Melee/hybrid using AssistType2 should no longer get hung up targeting themselves and refuse to assist
+
MainTankBuffSpellName4=Galvos' Retort
-If you target yourself for an ImHit, you should now retarget your original target
+
MainTankBuffSpellGem4=gem6
-Fixed an errant variable not defined message for Snare.
+
MainTankBuffUseAt4=100
-i forget the rest because i drank last night
+
MainTankBuffStopAt4=5
 +
MainTankBuffNamedOnly4=FALSE
 +
MainTankBuffRecast4=2m
 +
MainTankBuffConditions4=
  
-Added PC check for /afolow, and /navi so you are less likely to follow warders around.
+
MainTankBuffUse5=TRUE
-Added ${MMOBugs.FreeBuffs} check for self buffs and clickies to make sure you actually have room
+
MainTankBuffSpellName5=Hand of Faithful Infusion
-Fixed so "Conditions" variable now loads for autodetected AAs (however, some routines that dont have conditions may now appear to, so i will add conditions into those routines as i find them. I think jolt was one of those)
+
MainTankBuffSpellGem5=gem12
 +
MainTankBuffUseAt5=100
 +
MainTankBuffStopAt5=5
 +
MainTankBuffNamedOnly5=FALSE
 +
MainTankBuffRecast5=2m
 +
MainTankBuffConditions5=
  
-Macro will force you to load if it is your first time running the macro. You know who you are.
+
MainTankBuffUse6=TRUE
-Added auto check for pulling for if it is an clicky/spell/aa/disc/ability (but i didnt actually add a place in for the ability like kick yet because i need to figure out the distance they work at.
+
MainTankBuffSpellName6=Promised Reformation
-spells should detect correct for characters under level 10
+
MainTankBuffSpellGem6=gem12
-fixed some other small stuff.
+
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=
 +
</pre>
  
-Changed /face fast to /face, can change back if needed
 
-Removed (hopefully), targeting of corpses automatically.
 
-auto summon and inventory chalandria's fang if you have one
 
  
Discs should work a little better for you (at all)
 
  
Xeniaz found some bugs. Fixed them.
 
Campfires should work.
 
CustomCombat and CustomRest should work.
 
ClickyMaintenance should no longer keep sending things to your ini if you have clickies=0
 
  
- You should now clear target if you are in attack cycle and targeting a pet or a group mate
+
'''[Mana]''' <-- Mana section, this will look slightly diffrent for every class based on unique AAs/abilities
-Xeniaz wrote a version of the modbot looting routine. It gives you a bunch of loot settings. I am blindly adding it based on his suggestion and removing the ninjadvloot.inc. the new settings will look like so:
+
<pre>
 +
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?
  
Per request. Pets now use /pet ghold instead of /pet hold
+
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
  
-Mounts should no longer try to summon more than 1 time when using mounts as an /addclicky
+
DeathBloom_IfManaBelow=70 <-- NEC specific to for sure death bloom if mana is below this amount
--Additionally, you should received an /echo say the zone is indoors
+
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
  
-Fade fix
+
Canni_IfManaBelow=70 <-- SHM specific to for sure canni if below this mana percent
- hopefully fade will work now. was missing 2 }
+
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
  
Changed /pet ghold to /pet ghold on
+
QuietMiracle_IfManaBelow=5 <-- CLR specific to QM if own mana dips below this amount and you dont have a corpse in zone
Removed requirement to summon for items if only 1 is left to pull with (rangers + endless quiver only need 1)
+
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
  
Xeniaz fixed INI related issue with looting not working.
+
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)
 +
</pre>
  
Fixed double declare message for XHeal section. Puller range should now recognize correctly.
 
  
non-detrimental spells will ignore distance checks in most offensive routines now.
 
  
-Added Free Target spell casting ability to Debuffs and all heals (HealSplash already had it)
 
  
-Modified "invisoff" by adding the functionality to store current target, /target clear, /attack on, /attack off, /target stored target. Reminder for invison or invisoff is to just say them in group/eqbc. This will break all invises.
+
'''[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
 +
<pre>
 +
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?
  
-Added message to indicate that if you are /mac bot load in any of the "safety" zones, that it MUST be redone outside of PoK/Lobby/Hall for it to work properly.
+
MezUse1=TRUE <-- Use? [TRUE/FALSE]
 +
MezSpellName1=Confound <-- spell|AA name
 +
MezConditions1= <-- this doesnt do anything yet
 +
MezSpellGem1=gem3 <-- [gem#,alt]
  
Should now only try to /target pc or merc for innate buffs. It was already written like that but i added a second layer.
+
MezUse2=TRUE
 +
MezSpellName2=Beam of Slumber
 +
MezConditions2=
 +
MezSpellGem2=alt
  
SK AE aggro will now autodetect if you have an AE aggro spell memmed and use it appropriately. Changed the order of detection to reduce wasted casts.
+
MezUse3=TRUE
 +
MezSpellName3=Chaotic Confusion
 +
MezSpellGem3=gem12
 +
MezConditions3=
  
**It is a cascading check so that all your AE aggros arent spent at once. Assuming you have all AAs + spell: First cycle tries first AA, cycles combat routine, second cycle will trigger next AA, cycles combat routine, third cycle will use spell. It will only autodetect a single AE aggro spell (last gem that contains one from 1-12. so if you have AE aggro in gem3 and gem5, it uses the 5)
+
MezUse5=TRUE
 +
MezSpellName5=Confounding Flash
 +
MezSpellGem5=gem12
 +
MezConditions5=
  
Added ${ValidSpellType} to [GoM], [Nuke], [Dot], and [Buff] routines so that it checks for valid .BodyType and checks if you have any required reagents to use the spell. Please let me know if anything is messed up for those routines. This replaces ${TestVariable}, so if you were testing for me, please delete that reference.
+
'''[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
  
Added 15 second delay when zoning (including partial zone time, uses MMOBugs.ZoneSecs) before you start casting spells. This is to make it less obvious that you are botting. I can play with the time if needed.
+
'''[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
 +
</pre>
 +
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.
  
Added/corrected some misc command info in /helpme
 
  
Added some minor tweaks to Mages summoning petgear. i dont know that it entirely fixes it, but i think it will get it closer. I think the reason it was clicking the wrist was because you had PetGearDefaultInvSlotForBag=8 or 9, which are InvSlot for wrists, and i was thinking they were bag slots. Just keep doing what youre doing for the variable.
 
  
*<span class="highlight2">Archived notes - /commands</span> -  <span class="highlight">''PeteSampras'' @ 2012-10-31</span>
 
Misc commands:
 
New feature add in:
 
/import [Section] [Level]
 
ie.
 
/import Buff 95
 
  
Posted latest version for importing and started + posted the Bot_Imports.ini so people can /import sections.
+
'''[Nuke]'''
 +
<pre>
 +
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?
  
I wanted people to see the format that I wanted this in. I added a handful of things for a few classes as examples. Once people submit ini entries to me, I will add them. If anyone would like to mess around and test some examples to make sure it works for them and not just me, please do so and let me know the results. If a section cannot be imported because it doesnt exist, the macro should tell you.
+
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
  
Example import commands reminder:
+
NukeUse2=TRUE
/import Buff 95
+
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
  
/import Pet 90
+
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)))
  
/import SelfBuff 95
+
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)))
  
Case sensitivity matters!  
+
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]}))))
 +
</pre>
 +
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.
  
added: /import all level
 
  
/import all 95
 
  
This will import all available options from the Bot_Imports.ini for your class at the level you set. I put most the automatic ones as options, so it should get like 95% of what youd want to fix in your ini once we get all the examples done.
 
  
Went ahead and just added the /smob alias to add your current target to the stunimmunelist, put it in the /helpme listing, and added a stunimmunelist check for stuns.
+
'''[Pet]'''
 +
<pre>
 +
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
  
Command:
+
PetBuffName2=Aegis of Kildrukaun
/taskget
+
PetBuffSpell2=Aegis of Kildrukaun
 +
PetBuffGem2=alt
 +
PetBuffRecast2=1s
  
**Whatever phrase you say AFTER the command will get broadcast into EQBC, all characters in group and eqbc will /target your target, then repeat the phrase, then you will /say the phrase. There is a random timer up to 3 seconds between characters so that you dont all say it at the exact same time. I had this as a personal macro for a long time and never got around to putting it out since it was only 5 lines long.
+
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
  
Usage:
 
/taskget badges? we don't need no stinkin' badges!
 
  
Result:
+
Mage only:
All characters in group and EQBC do the following:
+
PetGearSpellName=Grant Frightforged Armaments <-- When gear is requested by others or self, casts this spell for weapons
/target your target
+
PetArmorSpellName=Grant Frightforged Plate <-- When gear is requested by others only, casts this spell for weapons
/say badges? we don't need no stinkin' badges!
+
PetMaskSpellName=Grant Visor of Gobeker <-- when gear is requested by others, casts this spell for mask
then you:
+
PetGearSpellGem=gem1         <-- uses this gem for requests
/say badges? we don't need no stinkin' badges!
+
PetGearDefaultInvSlotForBag=10 <-- uses this inventory slot to place pouch of quellious.  you must NOT have a bag with items inside there.
 +
</pre>
 +
<br>
 +
Associated commands:<br>
 +
/petrequest - Requests gear from mage in eqbc<br>
 +
/petgear add|fire|< link of Summoned: Frightforged Fireblade  >  <-- would add the fire=Summoned: Frightforged Fireblade listed above<br>
 +
/petgear mask|fire|aggro - would equip aliases mask, fire, and aggro from example ini if they are in your bag.<br><br>
  
Added for testing, in game type:
 
/varset TestVariable 1
 
  
Typing that in game should now cycle in and out of Dot/Nuke/Stun/damage routines per spell that is cast instead of cycling through them all. (if you have 8 nukes, it casts one and goes to next routine, instead of casting 1-8 back to back). This will allow crowd control/survival/heal routines to cycle more often, hopefully increasing survivability.
 
  
*<span class="highlight2">Archived notes - by version</span> -  <span class="highlight">''PeteSampras'' @ 2012-10-31</span>
+
'''[Rez]'''
 +
<pre>
 +
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.
 +
</pre>
 +
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
  
Posted new version.
 
  
[Disc]s will now still check, even if a disc is already running. However, a disc with a duration will not try to fire if a disc is currently running. Instant cast discs will fire if a disc is already running.
 
  
  
posted 1.093 to fix the HealerSingleRecast error.
+
'''[Root]''' <-- Root section.  This will call every cycle, after mezzes and before debuffs.  It is meant to be used as crowd control
 +
<pre>
 +
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
  
Added:
+
RootUse1=TRUE <-- Use?
[Merc]
+
RootSpellName1=Pestilent Paralysis <-- AA,spell,item name
MercStanceOOC=Passive (will make your merc be passive when not in combat, default is blank. aka. same as current)
+
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.
 +
</pre>
 +
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}}
  
Added ${ValidSpellType} to [GoM], [Nuke], [Dot], and [Buff] routines so that it checks for valid .BodyType and checks if you have any required reagents to use the spell. Please let me know if anything is messed up for those routines. This replaces ${TestVariable}, so if you were testing for me, please delete that reference.
+
RootSpellName2=Root Spell
 +
RootCondition2=!${Root1${RootID}}
  
Added 15 second delay when zoning (including partial zone time, uses MMOBugs.ZoneSecs) before you start casting spells. This is to make it less obvious that you are botting. I can play with the time if needed.
+
RootSpellName3=Knockback Spell
 +
RootCondition3=${Root2${RootID}}
  
Added 2 routines that can be used via [Custom] section for now. If they work, I will add them to normal macro.
 
To use:
 
[Custom]
 
CustomRestTotal=1
 
CustomRest1=/call Clarity
 
  
CustomCombatTotal=1
 
CustomCombat1=/call DPS
 
  
-Clarity routine in case you want to use clarity potions. It will check your inventory for them, figure out the best, see if you have buff space and dont already have clarity, then use it.
 
  
-DPS routine is to figure out how much estimated time is left before the target dies. I made it for my necro mac years ago so that you wouldnt waste mana dotting a mob that would die soon, or so you could use the emerald essence proc nuke if the mob was about to die in the next 5 seconds. It is only an estimate, but i want to see if it works. It gives you access to the variable: ${FightTimer} You can then use this variable in your conditions to figure out if you want to perform certain actions. Maybe you dont want to debuff a mob if it is going to die in the next 10 seconds.
+
'''[Snare]'''
 +
<pre>
 +
SnareTotal=1 <-- Total
 +
ForceMemSnare=FALSE <-- memorize if a spell isnt memorized?
 +
SnareAnnounce=FALSE <-- Announce attempts,success,fail,immune messages in AnnounceChannel
  
Added/corrected some misc command info in /helpme
+
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?
 +
</pre>
 +
Protips:
 +
Root/snare immunities are automatically added to Mob_Ignore_List.ini.  If a mob isnt getting rooted and it is rootable, check there.
  
Posted new version.
 
  
Added:
 
____ConditionsX variable to all heals.
 
  
Special variables involved: ${Group.Member[${g}]}
 
  
Posted new version.
+
'''[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
 +
<pre>
 +
SelfBuffTotal=4 <-- Total
 +
SelfBuffAnnounce=FALSE <-- Announce in AnnounceChannel?
  
The attack routine hasnt had rigorously testing, and since that is the heart and soul of the macro, you may want to hold off for confirmation that it works, or make a backup of your current mac. I do need some people to test it though to make sure it is picking up targets ok and engaging correctly.
+
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]
  
Added:
+
SelfBuffUse2=TRUE
[Settings]
+
SelfBuffSpellName2=Forsakenside
AttackRange=50
+
SelfBuffSpellIcon2=Forsakenside
AttackCommand=/killthis
+
SelfBuffSpellGem2=gem12
 +
SelfBuffConditions2=
  
AttackRange will determine the distance the mob has to be before engaging a mob on XTarget1. It will also affect using the AttackCommand for AssistType2/3. Previously, the AttackCommand was a hidden variable, and was defaulted to "/attack on". mq2melee is enhanced to do different discs and skills if you use /killthis. So by letting you choose which you want to do, you can increase your dps some. AttackRange ONLY affects AssistType=2 and AssistType=3 for now.
+
SelfBuffUse3=TRUE
 +
SelfBuffSpellName3=Shield of the Dauntless
 +
SelfBuffSpellIcon3=Shield of the Dauntless
 +
SelfBuffSpellGem3=gem12
 +
SelfBuffConditions3=
  
Options for AttackCommand= are: "/killthis", "/attack on", "/keypress z", or "/keypress q", or if you have changed your default keybinds, they are whatever you've changed them to.
+
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
 +
</pre>
  
  
Posted new version.
 
  
Added some minor tweaks to Mages summoning petgear. i dont know that it entirely fixes it, but i think it will get it closer. I think the reason it was clicking the wrist was because you had PetGearDefaultInvSlotForBag=8 or 9, which are InvSlot for wrists, and i was thinking they were bag slots. Just keep doing what youre doing for the variable.
 
  
Posted new version. 1.101?
+
'''[Stun]'''
 +
<pre>
 +
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?
  
Added:
+
StunUse1=TRUE <-- Use?
[Settings]
+
StunSpellName1=Dizzying Squall <-- Spell/AA name
OpeningMove=
+
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.
  
This will execute whatever command you put there prior to /call Attack. It will be the very first thing you do with the designated mob on your target.
+
StunUse2=TRUE
 +
StunSpellName2=Color Confluence
 +
StunSpellGem2=gem10
 +
StunUseAtMobPctHP2=100
 +
StunStopAtMobPctHP2=1
 +
StunRecast2=9s
 +
StunConditions2=
 +
</pre>
  
For pet classes, i would suggest:
+
'''[SummonItem]'''  <-- This section should be used for items you want to summon for yourself if conditions are met
OpeningMove=/pet attack
+
<pre>
 +
[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)
  
For knights:
+
</pre>
OpeningMove=/disc withstand
+
'''[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.
(or whatever your current rune disc is)
+
<pre>
 +
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
 +
</pre>
  
You can use /multiline or /if statements, just like a holy/downshit.
 
  
Added:
+
Frequently Asked Variables:
auto detect and usage of clarity potions if you are carrying them.
+
${AddCount} - How many mobs are aggro on you
[Mana]
+
${BurnMode} - Are you in burn mode?
UseClarityPotions=FALSE
+
${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.
  
Removed:
+
Refer to ANY variable in the INI in a condition:
[Disc]
+
${StunTotal} = Would give the current StunTotal=
OutOfCombatDiscName=
 
UseOOCDiscAtMyEndPct=
 
UseOOCDiscAtDistance=
 
  
Those no longer function and capabilities are replaced with OpeningMove=
+
==AAtoBuy==
 +
This is similar to MQ2AAspend, just macro based.
 +
<pre>
 +
[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
 +
</pre>AA name|'''ranks to buy'''|page number<br>
 +
options: <nowiki>#</nowiki>|M|E<br>
 +
<nowiki>#</nowiki> buys the exact number you list<br>
 +
M buys all available<br>
 +
E will evenly spend on all AAs marked with E until max rank is achieved<br>
 +
<br>
 +
'''AABuyMode'''=classic<br>
 +
classic = uses list<br>
 +
brute uses '''AABuyPageorde'''r<br>
 +
limited uses '''AABuyPageOrder''', then if any Limited are listed, it will only buy those from corresponding page and skip rest, if blank, buys all<br>
 +
<br>
 +
Associated Command:<br>
 +
'''/aaspew''' - will create a "limited" version for you into your INI file. **It will replace whatever you have there already.<br>
  
Posted new version. 1.102
+
==Loot.ini==
 +
Loot.ini is used to control what items are looted/sold/kept/destroyed
 +
<pre>
 +
[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|
 +
</pre>
 +
Associated Command:<br>
 +
/lootthis Name ItemName
 +
Ie.
 +
/lootthis PeteSampras Item of win
 +
/lootthis PeteSampras Item of win
  
Added:
+
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:
  
Auto detection of lower level clarity potions in case you run out of your highest level potion. Best remaining potion will be used.  
+
/lootignore <-- change status of item on cursor to ignore in loot.ini<br>
 +
/lootsell <-- change status of item on cursor to sell in loot.ini<br>
 +
/lootdestroy <-- change status of item on cursor to destroy in loot.ini<br>
 +
/lootkeep <-- change status of item on cursor to keep in loot.ini<br>
 +
/loottradeskills <-- change status of item on cursor to tradeskills in loot.ini<br>
 +
/sell <-- sell items marked as Sell to currently targeted vendor<br>
 +
/deposit <-- deposit items to banker/guildbanker that is on target<br><br>
  
Posted new version. 1.103
+
==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 bot.mac.<br>
 +
<br>
 +
1. Download the .xml file for 20 hotkeys +reload button from the first post.<br>
 +
2. /plugin mq2labels<br>
 +
3. /plugin mq2mybuttons unload<br>
 +
4. go into your mq2\server_charname.ini and add the following info (modifying to your actual aliases):<br>
 +
<br>
 +
<pre>
 +
[MQ2MYButtons_Buttons]
 +
MyButtonLabel_1=bot
 +
MyButtonCommand_1=/mac bot
 +
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
 +
</pre>
 +
5. /plugin mq2mybuttons<br>
 +
6. /loadskin if UI wasnt already loaded.<br>
  
Added:
+
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.
[Pet]
 
PetBuffRecast1=1s
 
PetBuffRecast2=2m
 
  
 +
==Conditions==
 +
'''"Conditions" 101:'''
 +
<pre>
 +
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.
  
Posted new version. 1.105
+
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}
  
Fixed self heal routine. I had changed a variable because there was an error, turns out there was a second error that broke the routine when i corrected the first error.
+
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}
  
Posted new version. 1.106
+
I only want to use this AA when i am in range mode.
 +
AAConditions1=${Me.AutoFire}
  
Changed:
+
or i only want to do this when i am meleeing and NOT at range:
AE Mezzes triggering immune messages will now be ignored so that when they land on PCs it doesnt return FALSE positives. If you find your NPCs arent being mezzed, check the Mob_Ignore_List.ini to make sure nothing is incorrectly added. If it is, just delete it out.
+
AAConditions1=${Melee.Status.Equal[ENGAGED MELEE ATTACK ]} && !${Me.AutoFire}
  
Added: [Summon] section
+
Or you only want to do a disc when you have Auspice and Shaman epic on. etc etc etc.
  
Posted new version. 1.107
+
You can set whatever conditions you want for something to trigger.
Changed:
+
</pre>
Mercs will no longer try to use MercStanceOOC if you dont have one defined.
 
 
 
 
 
Posted new version. 1.108
 
 
 
Changed:
 
Changed it back to /call Summon
 
 
 
Posted new version. 1.109
 
 
 
Changed:
 
-[Summon] section will now only check for exact SummonItemNameX matches instead of partials. This should alleviate issues for items like Warm Milk Dispenser summoning Warm Milk.
 
 
 
-Fixed rez crash above, hopefully.
 
 
 
Posted new version. 1.110
 
 
 
Added:
 
[Settings]
 
EmergencyAlias=Evac Now!
 
EmergencySkill=Exodus
 
ClearTargetDataAlias=resettarget
 
 
 
Set those to whatever you want, they are blank by default (turned off).
 
EmergencyAlias=whatever phrase you put here will turn off attack/twist/interrupt spells, reset target data, and then fire the skill below
 
EmergencySkill=aa/spell that is memmed/item/disc/ability - if it isnt ready, it just skips it.
 
ClearTargetDataAlias=this phrase will clear your target, turn attack /twist / spell casting off and reset your target data in case you want to stop hitting the current target.
 
 
 
Changed:
 
Less spam for item summoning, you should only get 1 message.
 
 
 
Posted new version. 1.111
 
 
 
Added:
 
[Settings]
 
OptionsCheckRaid=
 
 
 
If you are in a raid, it will use that list of routines instead. This should let you turn off Dot/Nukes/etc if you dont want them to be used on raids. Default will be same as OptionsCheck= . It wont take effect until the second time you use macro.
 
 
 
Reminder that if you want to control individual spells to cast while on a raid, you can use DotConditions1=!${Raid.Members} etc. Or you could make your DotTotal=${If[${Raid.Members},8,4]}, and it would only check on initial mac startup.
 
 
 
Changed:
 
[Summon] if the spell name is an item, it will now use /itemnotify instead of /call Cast to avoid top levle inventory swapping
 
 
 
Posted new version. 1.112
 
 
 
Added:
 
[Settings]
 
InterruptToHealAt=30
 
 
 
That will now work for check for lifetaps too. Between each routine it will check Lifetap routine if your HP is at or below the amount you designate. The normal check every cycle for Lifetap routine is unaffected, so you will keep checking it as normal as well.
 
 
 
Corrected:
 
Emergency events/variables had a typo because i forgot about something. Fixed.
 
 
 
Added for testing, in game type:
 
/varset TestVariable 1
 
 
 
Typing that in game should now cycle in and out of Dot/Nuke/Stun/damage routines per spell that is cast instead of cycling through them all. (if you have 8 nukes, it casts one and goes to next routine, instead of casting 1-8 back to back). This will allow crowd control/survival/heal routines to cycle more often, hopefully increasing survivability.
 
  
 
==Availability==
 
==Availability==

Latest revision as of 12:30, 10 June 2014

Macro Info
Name Bot
Author PeteSampras
Link Wiki Link
Commands /mac Bot
Includes Yes
Uses INI File Yes
Required Plugins Yes


Description

Bot.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[bot.mac]},1,0]}

holyshitif=!${Macro.Name.Equal[bot.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 bot 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 bot 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 bot 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 bot 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 bot name
AssistAt=98			<-- by default, you will assist at this % if not designated via /mac bot 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 bot.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=bot
MyButtonCommand_1=/mac bot
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/everquest-macroquest2-macros-huds-and-uis/24608-bot-macro.html