• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

A couple usefull Events (1 Viewer)

HardOne

Member
Joined
Jan 15, 2006
RedCents
61¢
HardOne's Event Collection

These are a couple of events I wrote and added to the macro I run all the time. (Note: some of these have appeared in numerous macros before, so I can't take all the credit, though buffcheck, and healself, are HardOne originals)

This one, checks the durations of all buffs on you, and returns the names / # of ticks left till it fades. Usefull for checking whats gonna fade soon before engaging a mob.

Default minimum is 100 ticks (10 minutes)

Rich (BB code):
#Event BuffCheck		"[MQ2] buffcheck"
Sub Event_BuffCheck
	/declare i int local 0 
		/for i 0 to 25 
		/if (${Me.Buff[${i}].ID} && ${Me.Buff[${i}].Duration} < 100) { 
		/echo Less then ${Me.Buff[${i}].Duration} Ticks left on > ${Me.Buff[${i}].Name} < 
		} 
	/next i
	/echo *Done Checking Buff Durations
/return

This one I use when soloing, or farming where I'll need to heal myself. all it does is cast a specified spell until your HP > 99% (you must edit the spell you want manually, requires spell_routines.inc)

Rich (BB code):
#Event HealSelf "[MQ2] healself" 
Sub Event_HealSelf
	/if (${Me.PctHPs} > 99) {
		/echo My HP's are FULL, you Fool!
		/return
	} else {
		/echo My HP's are less then 99%, Healing Self. 
		:healloop
			/target myself
			|Edit Spell Name / Gem here
			/call cast "Heal Spell Name" gem2 
			/if (${Me.PctHPs} < 99) /goto :healloop
		/echo # Done Healing Self to Full HP
	} 
/return

The next one is nice for clerics, it will auto equip your rez stick and rez your target if it's a corpse. (also requires spell_routines.inc)

Rich (BB code):
#Event RezClicky				"[MQ2] rez"
Sub Event_RezClicky
	/if (${Me.Class.Name.NotEqual["Cleric"]} || !${Target.ID} || ${Target.Type.NotEqual[Corpse]}) /return
	/echo Ressurecting ${Target.Name}
	/call Cast "Water Sprinkler of Nem Ankh" item
/return

this are triggered by text in the MQ window.
Useage = /echo buffcheck or /echo healself or /echo rez
ensure /doevents is in your main macro loop.

If you want to add an alias, so you don't need to type /echo first, add this code into your sub main before you macro loop.

Rich (BB code):
	/squelch /alias /healself /echo healself
	/squelch /alias /buffcheck /echo buffcheck
/squelch /alias /rez /echo rez

you could also add the alias manually, in your macroquest.ini, you'll see a section with a bunch of alias's. once an alias is added, you don't need that above code in your macro, but leaving it there wont hurt either. (It will ensure if your update your source and don't copy your macroquest.ini, they get added again)


This is an event I put in all my macro, it will automatically /endmac when you go to camp, cause I always forget to end my macro's

Rich (BB code):
#Event	Camping				"#*#It will take you about 30 seconds to prepare your camp.#*#"
Sub Event_Camping
	/echo Camping - Ending macro!
	/endmacro
/return


Hope these prove usefull to someone.
 
Last edited:
You could always just /alias /ccamp /multiline ; /endmac ; /camp.
 
Here is another HardOne Creation. You may have seen it elsewhere as well, hope someone finds it usefull.


This is an include file with one event, made for hitting all mobs within 50 Range of you. I designed this for use during power leveling, with the throw Stone ability in mind. (will work for any AA just by changing the ABILITY_NAME define)

Useage = /hitallmobs

Requires spell_routines.inc

Basically, it will target the closest NPC, make sure you ability is ready, and make sure you can see the mob, then it will /face you target, throw stone, then move to the next mob, if your target is not in LoS, it will skip it, it wil also loop and wait for your ability to be ready. When finished, it will tell you how many mobs were hit.


If you have any problems, or suggestions, post or PM me.

hitallmobs.inc
Rich (BB code):
|hitallmobs.inc By: Harden 07/08/06
|-------------------------------------------------------------------
|Description: Hit's all mobs within 50 range of you with a specified 
|ability. Keep's count of how many mobs were hit, and reports when 
|done. (Requires spell_routines.inc)
--------------------------------------------------------------------
|-Useage: /hitallmobs
--------------------------------------------------------------------
|Make sure your Macro has #include spell_routines.inc at the top
|add /squelch /alias /hitallmobs /echo hitallmobs to your sub main
|
|===================================================================

#Event HitAllMobs        "[MQ2] HitAllMobs"
Sub Event_HitAllMobs
|=========================================|
|==Edit Throw Stone, for your AA ability==|
|=========================================|
	/declare ABILITY_NAME string local Throw Stone
	/echo *Attempting to hit all mobs in Range with ${ABILITY_NAME}.	
	/if (!${SpawnCount[npc radius 50]}) {
	/echo No Mobs in Range, Aborting...
	/return
}	
	/target npc
	/declare i int local 0
	/declare cnt int local 0	
		/for i 1 to ${SpawnCount[npc radius 50]} {
			:loop	
				/if (${Me.AltAbilityReady[${ABILITY_NAME}]} && ${Target.LineOfSight}) {
					/face
					/delay 1s
					/aa act ${ABILITY_NAME}
					/delay 3s
				} else {
				/if (!${Me.AltAbilityReady[${ABILITY_NAME}]}) }{
					/goto :loop
				} else {
				/if (!${Target.LineOfSight}) }{
					/echo ${Target.CleanName} Not in Line of sight, Skipping...
					/next i
						}
					}
				}
			/varcalc cnt ${cnt}+1
			/target npc next radius 50
		/next i
	/echo *Done Hitting mobs all mobs in range.
	/echo *Total of ${cnt} Mob(s) hit.
/return
 
Last edited:
Hi, great post !!

I have a question about the /hitallmobs (macro??) you posted. I was wondering , if I saved this as a .mac file would it work ?

So I could use my bard to pull a train, then have my warrior /macro hitallmobs ... after I see the total count at the end , turn up the bard's DS ??

I don't understand what is different between a .inc and .mac file I guess.

Thanks !!
 
hitallmobs.mac
Rich (BB code):
|hitallmobs.mac By: Harden 07/08/06
|-------------------------------------------------------------------
|Description: Hit's all mobs within 50 range of you with a specified 
|ability. Keep's count of how many mobs were hit, and reports when 
|done. (Requires spell_routines.inc)
--------------------------------------------------------------------
|-Useage: /hitallmobs
|===================================================================
#include spell_routines.inc

Sub Main
/squelch /alias /hitallmobs /echo hitallmobs
	:loop
		/doevents
	/goto :loop
/return

#Event HitAllMobs        "[MQ2] HitAllMobs"
Sub Event_HitAllMobs
|=========================================|
|==Edit Throw Stone, for your AA ability==|
|=========================================|
	/declare ABILITY_NAME string local Throw Stone
	/echo *Attempting to hit all mobs in Range with ${ABILITY_NAME}.	
	/if (!${SpawnCount[npc radius 50]}) {
	/echo No Mobs in Range, Aborting...
	/return
}	
	/target npc
	/declare i int local 0
	/declare cnt int local 0	
		/for i 1 to ${SpawnCount[npc radius 50]} {
			:loop	
				/if (${Me.AltAbilityReady[${ABILITY_NAME}]} && ${Target.LineOfSight}) {
					/face
					/delay 1s
					/aa act ${ABILITY_NAME}
					/delay 3s
				} else {
				/if (!${Me.AltAbilityReady[${ABILITY_NAME}]}) }{
					/goto :loop
				} else {
				/if (!${Target.LineOfSight}) }{
					/echo ${Target.CleanName} Not in Line of sight, Skipping...
					/next i
						}
					}
				}
			/varcalc cnt ${cnt}+1
			/target npc next radius 50
		/next i
	/echo *Done Hitting mobs all mobs in range.
	/echo *Total of ${cnt} Mob(s) hit.
/return
 
Last edited:
Here is an event I wrote to shrink myself, using Wand of Imperceptibility.


Requires spell_routines.inc
Requires an alias /squelch /alias /shrinkself /echo shrinkself (or just use /echo shrinkself)


Rich (BB code):
#Event ShrinkSelf            "[MQ2] shrinkself"
Sub Event_ShrinkSelf
	|ShrinkSelf code by HardOne
	|useage == /shrinkself
	
	/declare i int local 0
	/declare oldId int local 0
	
	/if (${Target.ID} && (${Target.ID} != ${Me.ID})) /varset oldId ${Target.ID}

	/echo # Shrinking Self

	|Note: When you are max shrinked, your Height == 2.00
	/target myself
	:Shrink
	/if ((${Me.Height} > 2.00)) {
		/call Cast "Wand of Imperceptibility" item
		/goto :Shrink
	}
	/echo # Done Shrinking

	/if (${oldId}) /target id ${oldId}
/return
 
Here is some code to automatically accept a group or raid invite. Each time you enter the command /acceptinvite, you will accept the next x number of ivnites. (ex. you type the command 3 times, the next 3 invites you get, will be auto accepted.)


Put this code in the Sub Main part of your macro:
Rich (BB code):
Sub Main
	/squelch /alias /acceptinvite /echo acceptinvite
	/declare autoAcceptInvite int outer 0

Here is the Events:
Rich (BB code):
#Event AutoAcceptInvite "[MQ2] acceptinvite"
Sub Event_AutoAcceptInvite(string Line)
	/varcalc autoAcceptInvite ${autoAcceptInvite}+1
	/if (${autoAcceptInvite} == 1) {
		/echo # The next group or raid invite will be auto-accepted.
	} else {
		/echo # The next ${autoAcceptInvite} group or raid invites will be auto-accepted.
	}
/return

#Event HandleInvitedRaid "#1# invites you to join a raid."
Sub Event_HandleInvitedRaid(string Line, string Player)
	/if (!${autoAcceptInvite}) /return
	/varcalc autoAcceptInvite ${autoAcceptInvite}-1
	/echo # Auto-accepting raid invite from ${Player} <${Spawn[PC ${Player}].Guild}>
	/delay ${Math.Calc[${Math.Rand[3]}+1]}s
	/raidaccept
/return

#Event HandleInvitedGroup "#1# invites you to join a group."
Sub Event_HandleInvitedGroup(string Line, string Player)
	/if (!${autoAcceptInvite} || ${Group.Members}) /return
	/varcalc autoAcceptInvite ${autoAcceptInvite}-1
	/echo # Auto-accepting group invite from ${Player} <${Spawn[PC ${Player}].Guild}>
	/delay ${Math.Calc[${Math.Rand[3]}+1]}s
	/if (${Target.Type.Equal[PC]}) /squelch /target clear
	/invite
/return
 
For those wanting an even to be called after zoning, the format has changed (as most of you may know)

An event will no longer trigger on
Rich (BB code):
#Event EnteredNewZone "You have entered #1#."

If order to work around this we need to do a couple things.

In your Sub Main place the following code
Rich (BB code):
Sub Main
	/declare currentZone			int outer ${Zone.ID}

then in your Macro's loop add this:
Rich (BB code):
	:loop
		/if (${Zone.ID}!=${currentZone}) /call Event_EnteredNewZone

Once that is done, in your entering zone event you need at a minimum the following (look at the bold stuff.) (Note: the event is commented out with a | since it won't be called on zoning, but I left the line there for easy of recognition)
Rich (BB code):
|#Event EnteredNewZone "You have entered #1#."
Sub Event_EnteredNewZone(string Line, string ZoneName)
	/echo entered zone ${Zone.Name}
	/varset currentZone ${Zone.ID}
/return
 
This isn't an event, but it's some code that may save your life. It will auto click your Distillate of Divine Healing X when your HP are less then 10%.

Put this code snippet somewhere in your macro :loop.

Rich (BB code):
|Uses Healing Potion X if possible
/if ((${Me.PctHPs} <= 10) && !${Me.Stunned} && !${Me.Invis} && !${Me.Feigning}) {
	/if (${FindItem["Distillate of Divine Healing X"].InvSlot} && !${FindItem["Distillate of Divine Healing X"].Timer}) {
		/call cast "Distillate of Divine Healing X" item
		/echo # CLICKING HEALING POTION X!!!
		/popup CLICKING HEALING POTION X!!!
	}
}
 
Another Code Snippet

This one will Click your mod rod if your less then 30% mana and have at least 1500hp.

Rich (BB code):
|Uses mod rod if possible
/if (${Me.MaxMana} && !${Me.Invis} && (${Me.PctMana} <= 30) && (${Me.CurrentHPs} >= 1500)) {
	/if (${FindItem["Rod of Mystical Transvergance"].InvSlot} && !${FindItem["Rod of Mystical Transvergance"].Timer}) {
		/call Cast "Rod of Mystical Transvergance" item
		/echo # CLICKING MOD ROD!!!
	}
}
 
How bout one to keep you clickies up unless attack is on, or invis or running, and something like /lootmycorpse ? Used to have one but can't find it for jack now :(
 
Loot my corpse event, with Mob rod useage after looting.

Useage= /echo lootmycorpse
-or add an alias (/squelch /alias /lootmycorpse /echo lootmycorpse)

Warning: This loots all items.

Rich (BB code):
#Event LootMyCorpse        "[MQ2] lootmycorpse" 
Sub Event_LootMyCorpse(string Line)
	/declare lootTotal int local 0
	/declare lootSlot int local 0
	/declare skippedCount int local 0
	/declare wornSlotNumber int local 0
	
	/if (!${SpawnCount[${Me.Name}'s corpse]}) {
		/echo # You have no corpses in the zone!
		/return	
	}

	/echo # You have ${SpawnCount[${Me.Name}'s corpse]} corpses in zone, looting nearest...

	/target mycorpse
	/delay 2s
	

	/if (${Target.Type.NotEqual[CORPSE]}) {
		/echo * Error: Can't target my corpse.
		/return
	}

	/echo # Looting my corpse

	/corpse
	/delay 1s
	/loot
	/delay 1s

	/if (${Me.State.NotEqual[BIND]}) {
		/echo * Debug: Error in getting onto corpse! Aborting.
		/return
	}

	:lootLag
	/varset lootTotal ${Corpse.Items}   
	/delay 2
	/if (${lootTotal} != ${Corpse.Items}) /goto :lootLag

	/delay 1s
	:doAgain
	/if (${Corpse.Items} > ${lootTotal}) /goto :lootLag
	/echo # Looting ${lootTotal} items. (corpse has ${Corpse.Items} items)
	/for lootSlot 1 to ${lootTotal}
		:lootItem
		/if (${Corpse.Item[${lootSlot}].ID}) {
			/nomodkey /itemnotify loot${lootSlot} rightmouseup
			/delay 2
			/goto :lootItem
		}
		/delay 2
	/next lootSlot

	/delay 5
	/echo * Done looting my corpse.
	/notify LootWnd DoneButton leftmouseup
	
	/delay 20
	

	|Uses mod rod if possible
	/if (${Me.MaxMana} && (${Me.PctMana} <= 10) && (${Me.CurrentHPs} >= 1500) && ${FindItem["Rod of Mystical Transvergance"].InvSlot} && !${FindItem["Rod of Mystical Transvergance"].Timer}) {
		/call Cast "Rod of Mystical Transvergance" item
		/echo # Clicking modrod
	}

	/if (${Me.Standing} && ${Me.MaxMana} && !${Me.Moving} && !${Me.Casting.ID}) /sit
/return
 
RedDog, try MQ2Clickies or one of the already made macro's which control clickies (like the Krust Macro) Both of which can be found on the MQ2 site using search.

I believe theZ includes MQ2clickies in his compile.
 
Here is a ranger specific event. I created this to click / activate all the ranger dps abilities for max melee dps, using Warder's Wrath.

Requires spell_routines.inc
Assumes you have the following:
  • Epic 1.5 / 2.0
  • Guardian of the Glade AA
  • Auspice of the Hunter AA
  • Warder's Wrath Discipline

Useage = /echo maxmeleedps
-Or /maxdps after adding an alias (/squelch /alias /maxmeleedps /echo maxmeleedps)

*EDIT* Fixed Problem with Casting of Epic.

Rich (BB code):
#Event MaxMeleeDPS		"[MQ2] maxmeleedps"
Sub Event_MaxMeleeDPS
	/echo * Activating Maximum Melee DPS
	/if (${Me.CombatAbilityReady["Warder's Wrath"]}) {
		/doability "Warder's Wrath"
		/echo Warder's Wrath Activated
		} else {
			/echo Warder's Wrath is not Ready.
			}
			/delay 1.5s
	/if (${Me.AltAbilityReady[Guardian of the Glade]}) {
		/call Cast "Guardian of the Glade" alt
		/echo Guardian of the Glade Activated
		} else {
			/echo Guardian of the Glade is not Ready.
			}
			/delay 1.5s
	/if ((${FindItem["Heartwood Blade"].InvSlot} && !${FindItem["Heartwood Blade"].Timer}) || (${FindItem["Aurora, the Heartwood Blade"].InvSlot} && !${FindItem["Aurora, the Heartwood Blade"].Timer})) {
		/if (${FindItem["Heartwood Blade"].InvSlot}) {
			/call Cast "Heartwood Blade" item
			}
		/if (${FindItem["Aurora, the Heartwood Blade"].InvSlot}) {
			/call Cast "Aurora, the Heartwood Blade" item
			}
		/echo Epic Activated
		} else {
			/if (${FindItem["Heartwood Blade"].InvSlot} && !${FindItem["Heartwood Blade"].Timer} || ${FindItem["Aurora, the Heartwood Blade"].InvSlot} && !${FindItem["Aurora, the Heartwood Blade"].Timer}) {
				/echo Epic is not Ready.
			}
		}
			/delay 1.5s
	/if (${Me.AltAbilityReady[Auspice of the Hunter]}) {
		/call Cast "Auspice of the Hunter" alt
		/echo Auspice of the Hunter Activated
		} else {
			/echo Auspice of the Hunter is not Ready.
			}
	/echo * Maximum Melee DPS Activated
/return
 
Last edited:
Comming soon will be an event similar to the one above, for Rangers Trueshot using the same AA's and such. With that Event will also be included the checks to see if the ability is available before activating,a nd reporting when activated, or if not activated due to not ready.


If anyone has any ideas for Events they would like to see in the future, post em here and I'll see what I can do.
 
Here is a ranger specific event. I created this to click / activate all the ranger dps abilities for max archery dps, using Trueshot.

Requires spell_routines.inc
Assumes you have the following:
  • Epic 1.5 / 2.0
  • Guardian of the Glade AA
  • Auspice of the Hunter AA
  • Trueshot Discipline

Useage = /echo maxarcherydps
-Or /maxdps after adding an alias (/squelch /alias /maxarcherydps /echo maxarcherydps)

*EDIT* Fixed Problem with Casting Epic

Rich (BB code):
#Event MaxArcheryDPS		"[MQ2] maxarcherydps"
Sub Event_MaxArcheryDPS
	/echo * Activating Maximum Archery DPS
	/if (${Me.AltAbilityReady[Guardian of the Glade]}) {
		/call Cast "Guardian of the Glade" alt
		/echo Guardian of the Glade Activated
		} else {
			/echo Guardian of the Glade is not Ready.
			}
		/delay 1.5s
	/if ((${FindItem["Heartwood Blade"].InvSlot} && !${FindItem["Heartwood Blade"].Timer}) || (${FindItem["Aurora, the Heartwood Blade"].InvSlot} && !${FindItem["Aurora, the Heartwood Blade"].Timer})) {
		/if (${FindItem["Heartwood Blade"].InvSlot}) {
			/call Cast "Heartwood Blade" item
			}
		/if (${FindItem["Aurora, the Heartwood Blade"].InvSlot}) {
			/call Cast "Aurora, the Heartwood Blade" item
			}
		/echo Epic Activated
		} else {
			/if ((${FindItem["Heartwood Blade"].InvSlot} && !${FindItem["Heartwood Blade"].Timer}) || (${FindItem["Aurora, the Heartwood Blade"].InvSlot} && !${FindItem["Aurora, the Heartwood Blade"].Timer})) {
				/echo Epic is not Ready.
			}
		}
		/delay 1.5s
	/if (${Me.AltAbilityReady[Auspice of the Hunter]}) {
		/call Cast "Auspice of the Hunter" alt
		/echo Auspice of the Hunter Activated
		} else {
			/echo Auspice of the Hunter is not Ready.
			}
		/delay 1.5s
	/if (${Me.CombatAbilityReady["Trueshot Discipline"]}) {
		/doability "Trueshot Discipline"
		/echo Trueshot Discipline Activated
		} else {
			/echo Trueshot Discipline is not Ready.
			}
	/echo * Maximum Archery DPS Activated
/return
 
Last edited:
Here is a ranger specific event. I created this to click / activate all the ranger dps abilities for max dps (without using any disciplines).

Requires spell_routines.inc
Assumes you have the following:
  • Epic 1.5 / 2.0
  • Guardian of the Glade AA
  • Auspice of the Hunter AA

Useage = /echo maxdps
-Or /maxdps after adding an alias (/squelch /alias /maxdps /echo maxdps)

*EDIT* Fixed problem with casting Epic

Rich (BB code):
#Event MaxDPS		"[MQ2] maxdps"
Sub Event_MaxDPS
	/echo * Activating Maximum DPS
	/if (${Me.AltAbilityReady[Guardian of the Glade]}) {
		/call Cast "Guardian of the Glade" alt
		/echo Guardian of the Glade Activated
		} else {
			/echo Guardian of the Glade is not Ready.
			}
		/delay 1.5s
	/if ((${FindItem["Heartwood Blade"].InvSlot} && !${FindItem["Heartwood Blade"].Timer}) || (${FindItem["Aurora, the Heartwood Blade"].InvSlot} && !${FindItem["Aurora, the Heartwood Blade"].Timer})) {
		/if (${FindItem["Heartwood Blade"].InvSlot}) {
			/call Cast "Heartwood Blade" item
			}
		/if (${FindItem["Aurora, the Heartwood Blade"].InvSlot}) {
			/call Cast "Aurora, the Heartwood Blade" item
			}
		/echo Epic Activated
		} else {
			/if (${FindItem["Heartwood Blade"].InvSlot} && !${FindItem["Heartwood Blade"].Timer} || ${FindItem["Aurora, the Heartwood Blade"].InvSlot} && !${FindItem["Aurora, the Heartwood Blade"].Timer}) {
				/echo Epic is not Ready.
			}
		}
		/delay 1.5s
	/if (${Me.AltAbilityReady[Auspice of the Hunter]}) {
		/call Cast "Auspice of the Hunter" alt
		/echo Auspice of the Hunter Activated
		} else {
			/echo Auspice of the Hunter is not Ready.
			}
	/echo * Maximum DPS Activated
/return
 
Last edited:
Havent heard any feedback in a while, anyone even using these events. Just wanna know if it's worth my time to keep making more of them.

Additionally, I need some fresh ideas as well. I've pretty much exhausted my list of already made, or in progress Events to post.
 
Hey hey... tried real hard to get the throwstone.mac to work but it seems to hang up on me before actually tossing a stone...

the macro starts.... targets the first mob... then just stands there... doesn't actually do the ability..

I had a couple of people, better at macros than I am, look at it for me and try to modify it some, keep ending up with the same problem...


my question is about it being a aa ability in your macro... throw stone is actually a warrior discipline ... could that be what's causing the problem ?

I don't know if any shroud forms have throw stone as an aa ability .. but if they do, is that what the macro is intended for ? if so that's easy enough, I can just shroud to whatever and pl....

anyway, thanks a bunch for the useful macro's and event's !!!
great work !
 
dougie222 said:
my question is about it being a aa ability in your macro... throw stone is actually a warrior discipline ... could that be what's causing the problem ?

Yes it would cause a problem, it;'s setup for shrouds to use it as an AA.

If your using spell_routines.inc you can change the /doability to /call cast "Throw Stone" alt
 
Ranger Events updated
-fixed problem with casting the Correct Epic
-changed the way AA's were activated, now using the spell_routines.inc
-Increased the Delay between casting, to prevent missing an AA
 
HardOne, You could always do something nifty for clerics *nods


These are extremely good, and If i was a ranger... i'd use em :P
 
Devlin said:
HardOne, You could always do something nifty for clerics *nods


These are extremely good, and If i was a ranger... i'd use em :P

Think it's in the first post is a Rez event (target corpse, /rez). I'll see what else I can come up with. Again, f if anyone has any ideas for something they want, post em here.
 
Thanks Hardone!
I added some of these to my macros and they seem to be working great. Thanks for taking the time to post them. Red cent for you
 
RedDog said:
How bout one to keep you clickies up unless attack is on, or invis or running, and something like /lootmycorpse ? Used to have one but can't find it for jack now :(

I wrote something like that a while back that I use now and again.. would work better if customized for your use (some clickies will try to overwrite each other repeatedly, i.e. form of clickies). Will post it because it has a few other things that may be found useful by people.. I just called it gen.mac (generic macro):
Rich (BB code):
#Event DoBuff              "[MQ2] DoBuff#*#"
#Event DoDispell           "[MQ2] DoDispell#*#"
#Event LootMyCorpse    "[MQ2] LootMyCorpse#*#" 
#Event DoTaunt	         "[MQ2] DoTaunt#*#"

#include spell_routines.inc
|#include wait4rez.inc

Sub Main

  /declare doGroup int outer 0
  /echo Keeping up clicks.

| /buff usage:
| /buff c buffs target with conviction
| /buff c g buffs target group with conviction
| /buff cd g buffs target group with conviction and aura of devotion
| /buff b buffs target with balikor
| options are /buff [cdbw] [g]
| [conviction, devotion, balikor, ward of valiance] [group if spell available]
  /squelch /alias /buff /echo DoBuff

| cheesy corpse loot command
  /squelch /alias /lootmycorpse /echo LootMyCorpse 

| quick alias to call dispell clicky (/shrug)
  /squelch /alias /dispell /echo doDispell

| command to use to taunt if you have potime taunt mod boots; swaps in and taunts.
  /squelch /alias /taunt /echo DoTaunt

:begin
   /if (!${Me.Invis} && ${Me.Standing} && !${Me.Moving}) {
    /call Checkclicks
    /doevents
   }
  /goto :begin
/return

Sub Checkclicks
  /if (${FindItem[Ancient Werewolf Skull].InvSlot} && ${Me.Buff["Aura of Pure Arcanum"].Duration} < 2) /call cast "Ancient Werewolf Skull" item 
  /if (${FindItem[Black Fur Boots].InvSlot} && ${Me.Buff["Spirit of Wolf"].Duration} < 2) /call cast "Black Fur Boots" item 
  /if (${FindItem[Irestone of Sharp Sight].InvSlot} && ${Me.Buff["Aura of Eternity"].Duration} < 2) /call cast "Irestone of Sharp Sight" item 
  /if (${FindItem[Colossus Shard Earring].InvSlot} && ${Me.Buff["Form of Endurance II"].Duration} < 2) /call cast "Colossus Shard Earring" item 
  /if (${FindItem[Serrated Dart of Energy].InvSlot} && ${Me.Buff["Savage Guard"].Duration} < 2) /call cast "Serrated Dart of Energy" item 
  /if (${FindItem[Stormeye Band].InvSlot} && ${Me.Buff["Storm Guard"].Duration} < 2) /call cast "Stormeye Band" item 
  /if (${FindItem[Earring of Frozen Poison].InvSlot} && ${Me.Buff["Form of Endurance III"].Duration} < 2) /call cast "Earring of Frozen Poison" item 
  /if (${FindItem[Ring of the Beast].InvSlot} && ${Me.Buff["Form of Endurance III"].Duration} < 2) /call cast "Ring of the Beast" item 
  /if (${FindItem[Symbol of the Overlord].InvSlot} && ${Me.Buff["Ancient Power"].Duration} < 2) /call cast "Symbol of the Overlord" item 
  /if (${FindItem[Eye of Dreams].InvSlot} && ${Me.Buff["Maelin's Meditation"].Duration} < 2) /call cast "Eye of Dreams" item 
  /if (${FindItem[Girdle of Efficiency].InvSlot} && ${Me.Buff["Maelin's Methodical Mind"].Duration} < 2) /call cast "Girdle of Efficiency" item 
  /if (${FindItem[Tainted Undershore Rock].InvSlot} && ${Me.Buff["Form of Protection III"].Duration} < 2 && ${Spell[Form of Protection III].Stacks}) /call cast "Irestone of Sharp Sight" item | does this even work?
  /if (${FindItem[Hanvar's Hoop].InvSlot} && ${Me.Buff["Form of Defense III"].Duration} < 2) /call cast "Hanvar's Hoop" item 
  /if (${FindItem[Prism of Dark Hues].InvSlot} && ${Me.Buff["Primal Guard"].Duration} < 2) /call cast "Prism of Dark Hues" item
  /if (${FindItem[Symbol of the Planemasters].InvSlot} && ${Me.Buff["Pestilence Shock"].Duration} < 2) /call cast "Symbol of the Planemasters" item
/return 

| potime boots useful again!
Sub Event_DoTaunt
  /if (${FindItem[Boots of Despair].InvSlot}) /call SwapItem "Boots of Despair" 19
  /delay 3
  /if (${Me.AbilityReady["Taunt"]} && ${Target.Distance}<=33) {
    /echo * * * Taunting ${Target.CleanName}
    /doability "Taunt"
    /delay 3
  } else {
    /echo * * * Taunt not ready or target OOR
  }
  /if (${Me.AbilityReady["Disarm"]} && ${Target.Distance}<=15) {
    /doability "Disarm"
  }
  /if (${FindItem[Boots of Despair].InvSlot}) /call SwapItem "Gladiator's Plate Boots of War" 19
/return

Sub Event_DoBuff(string Line)
  /if (${Line.Arg[3].Length}) {
    /if (!${Line.Arg[4].Length}) {
      /if (${Line.Arg[3].Find[c]}) /call Cast Conviction gem9
      /if (${Line.Arg[3].Find}) /call Cast "Symbol of Balikor" gem9
      /if (${Line.Arg[3].Find[d]}) /call Cast "Blessing of Devotion" gem9
      /if (${Line.Arg[3].Find[w]}) /call Cast "Ward of Valiance" gem9
    }
    /if (${Line.Arg[4].Find[g]}) {
      /if (${Line.Arg[3].Find[c]}) /call Cast "Hand of Conviction" gem9
      /if (${Line.Arg[3].Find}) /call Cast "Balikor's mark" gem9
      /if (${Line.Arg[3].Find[d]}) /call Cast "Aura of Devotion" gem9
      /if (${Line.Arg[3].Find[w]}) /call Cast "Ward of Valiance" gem9
    }
  }
/return

Sub Event_DoDispell
  /call Cast "Wand of the Vortex" item
/return

| Stolen from 500000 corpse looting macros
Sub Event_LootMyCorpse 
  |- Logic ripped off from Loot.mac and simplified somewhat 
  /declare LootTotal int local 0 
  /declare LootSlot int local 
  |- Get corpse on target and continue looting if possible 
  /squelch /target mycorpse 
  /if (${Target.Type.NotEqual[CORPSE]} || !${Target.ID}) { 
    /echo ** Can't target my corpse. 
    /return 
  }    
  /corpse 
  /delay 1s 
  /loot 
  /delay 1s 
  /if (${Me.State.NotEqual[BIND]}) { 
    /echo ** Massive lag right now... Aborting looting. 
    /return 
  } 
  |- Get item count accurately 
  :LootLag 
  /if (${LootTotal}!=${Corpse.Items}) { 
    /varset LootTotal ${Corpse.Items} 
    /delay 5 
    /goto :LootLag 
  } 
  |- Loot Loop 
  /for LootSlot 1 to ${LootTotal} 
    :LootItem 
    /itemnotify loot${LootSlot} rightmouseup 
    /delay 3 
    /if (${Corpse.Item[${LootSlot}].ID}) { 
      /delay 2 
      /goto :LootItem 
    } 
  /next LootSlot 
  /delay 5 
  /echo ** Done looting my corpse. 
  /notify LootWnd DoneButton leftmouseup 
/return 
 
This isn't mine, but soeone was asking for it, so I'll post it.

Rich (BB code):
#Event Incoming			"[MQ2] incoming"
Sub Event_Incoming 
	/declare RND int 
	/declare INC[4] string 
	/varset INC[1] "I just teabagged a << %T >> and %s is very angry!!" 
	/varset INC[2] "Save the Women and the RANGERS, %T INC!" 
	/varset INC[3] "Anyone else want to have a ride on the neighborhood %t?"
	/varset INC[4] "Incoming > %t < KILL IT!!!" 
	/varcalc RND ${Math.Rand[4]} + 1 
	
	/gsay ${INC[${RND}]} 
/return
 
Cool idea would be to add the rez part to http://www.redguides.com/community/showthread.php?t=9064

also the chanter macro listed here is very cool, it has a great buff part where you can specify the buff you want. For clerics you could ask for temp virtue and conviction. Auto accept rez and rebuff when dead is also pretty cool. Maybe taking the buff portion and the autorez rebuff could be added to the above cleric macro.


Rich (BB code):
| autoenc.mac 
| By Rusty~ 
| Last update 10/27/2004 
| 
| /macro autoenc [ma name][sa name][radius #][minhp #] 
| 
| Description: 
| Will assist the person set as main assist. If the main assist dies, it will assist the person 
| set as secondary assist if there is one. Once a target is aquired, and is varified as being aggro 
| it will then wait till the mob is engaged by the tank. Then it will wait till mob is under the spcified hp, 
| or the specified time has expired since the tank has engaged, and it will tash, slow, and nuke, if enabled. 
| Will mez any adds within the set radius, and debuff them if it's enabled. 
| This will also keep self buffs up, and buff people on request (with the spells specified in ini). 
| 
| 
| After running the macro for the first time, you should open the ini file generated (Auto_Yourname.ini) 
| Most of the options are self explanatory 
| Here's an example how the ini based buffs work: 
| 
| BuffList1=c6 
| BuffName1=clairvoyance 
| BuffType1=gem4 
| 
| BuffList is a list of words (or phrases) that will trigger the buff, separated by commas 
| BuffName is the name of the spell or item 
| BuffType is either item, gem1-9, or alt, for items, spells, or aa abilities respectively 
| 
| BuffName can also be a "shortcut" name. Shortcut names will cast different buffs depending on certain 
| circumstances. For example, putting "c6" as the BuffName, will cast Voice of Clairvoyance if it's up, 
| or else it will cast Clairvoyance. Following is a list of shortcut buffs and what they do: 
| 
| c6 - Will cast Voice of Clairvoyance if you have no C6 on and are in a group, else will cast Clairvoyance 
| c5 - Voice of Quellious 
| c4 - Will use C4 pants if you have them, else will cast Tranquility 
| c3 - Will use C3 wand if you have it, else will cast Koadic's Endless Intellect 
| c2 - Clairty II 
| c1 - Will cast Rod of Infinite thought if you have, else will cast Clarity 
| haste - If you have group haste memmed (spell name specified in ini), it will cast group haste 
| else it will cast single haste. If you are under 60% mana and have elemental legs 
| it will cast them instead of single or group haste spells 
| shissar - Will cast epic 1.0 
| 
| 
| 
| For each self buff and clicky buff, there's a place to put all the buffs that don't stack with it: 
| 
| Clicky1=Velium Coldain Insignia Ring 
| ClickyNoStack1=Call of Earth,Call of the Rathe,Guard of the Earth,Illusion Fire Elemental 
| 
| *note* To mem spells after death, save a spellset, and put the name of it in your ini under SpellSet 
| 
| 
|----------------------------------------------------------------------------------------------------------+ 
| slash commands: | 
|----------------------------------------------------------------------------------------------------------+ 
| /setma name - sets main assist | 
| /setsa name - sets secondary assist | 
| /buff # - mode 1 buffs all the time, self buff and tells | 
| - mode 2 does self buffs and tells when you have no target | 
| - mode 3 does self buffs only, all the time | 
| - mode 4 does self buffs only, only when you have no target | 
| /debuff on|off - turns auto debuffing on or off | 
| /mez on|off - turns auto mezzing on or off | 
| /mount on|off - turns auto mounting on or off | 
| /nukedelay # - sets the minimum amount of deciseconds between nukes | 
| /engagedelay # - amount of deciseconds before you start nuking mob | 
| /anchor # - sets the leash length when using an anchor | 
| /minhp # - sets the minimum hp % that you'll begin nuking at | 
| /cleanup on|off - turns on auto looting of any droppable loot | 
| /checknamed on|off - turns alerts on for named in your current zone | 
| /runehp # - sets the health % at which you'll cast your rune item or spell| 
| /nukemode 0, 1, 2 - mode 0 turns nukes off completely | 
| - mode 1 uses robe if enabled, and slows nukes if low mana | 
| - mode 2 chain nukes, with only delay being the set /nukedelay | 
| /manarobe mode #|min #|max # - mode 1 uses manrobe all the time | 
| - mode 2 uses your set % to start robing | 
| /radius # - sets the distance at which you'll engage the main assist's | 
| target | 
|----------------------------------------------------------------------------------------------------------+ 

#include spell_routines.inc 
#include gen_routines.inc 
#include move.inc 

#turbo 40 

#chat group 
#chat tell 
#chat chat 
#chat say 

#event AutoStun "[MQ2] AutoStun #1#" 
#event Gate "|${Target.DisplayName}| begins to cast the gate spell#*#" 
#event Mez "[MQ2] mez" 
#event RageOff "#*#is no longer enraged#*#" 
#event RageOn "#*#has become ENRAGED#*#" 
#event Ranger "[MQ2] Ranger" 


Sub Main 
/call GeneralDeclares 

/call DeclareIniVar mainAssist string Settings 
/call DeclareIniVar secondAssist string Settings 
/call DeclareIniVar minRadius int Settings 150 /radius 
/call DeclareIniVar engageDelay int Settings 55 /engagedelay 
/call DeclareIniVar minHP int Settings 95 /minhp 
/call DeclareIniVar autoBuff int Settings 1 /buff 
/call DeclareIniVar useMount int Settings 0 /mount 
/call DeclareIniVar useMez int Settings 1 /mez 
/call DeclareIniVar useDebuff int Settings 1 /debuff 
/call DeclareIniVar nukeMode int Settings 1 /nuke 
/call DeclareIniVar useCharm int Settings 0 /charm 
/call DeclareIniVar useTashFocus int Settings 0 /tash 
/call DeclareIniVar useDPS int Settings 0 /dps 
/call DeclareIniVar hasteGroup int Settings 0 /haste 
/call DeclareIniVar privateChannel string Settings 
/call DeclareIniVar channelAnnounce int Settings 1 
/call DeclareIniVar noInterrupt int Settings 0 
/call DeclareIniVar useManaStone int Settings 0 /manastone 
/call DeclareIniVar checkNamed int Settings 0 /checknamed 
/call DeclareIniVar noInvis int Settings 1 
/call DeclareIniVar useManaRobe int Settings 1 
/call DeclareIniVar manaRobeMode int Settings 1 
/call DeclareIniVar manaRobeMinMana int Settings 70 
/call DeclareIniVar manaRobeMaxMana int Settings 90 
/call DeclareIniVar nukeMana int Settings 50 /nukemana 
/call DeclareIniVar nukeDelay int Settings 0 /nukedelay 
/call DeclareIniVar nukeMode int Settings 1 /nukemode 
/call DeclareIniVar ignoreList string Settings 
/call DeclareIniVar runeHP int Settings 70 
/call DeclareIniVar cleanUp int Settings 0 /cleanup 
/call DeclareIniVar spellSet string Settings "default raid" 
/call DeclareIniVar mezDuration string Settings 500 
/call DeclareIniVar tashDuration string Settings 14m 
/call DeclareIniVar slowDuration string Settings 2100 
/call DeclareIniVar autoAnnounce string Settings 1 
/call DeclareIniVar announceTells string Settings 0 /announcetells 
/call DeclareIniVar rodBitch string Settings 
/call DeclareIniVar noKnockBack string Settings 0 /usezoom 
/call DeclareIniVar usePet int Settings 1 /companion 

/call DeclareIniVar nuke1 string Spells "Psychosis" 
/call DeclareIniVar nuke2 string Spells "Insanity" 
/call DeclareIniVar mezSpell string Spells "Bliss" 
/call DeclareIniVar tashSpell string Spells "Howl of Tashan" 
/call DeclareIniVar slowSpell string Spells "Serpent of Vindication" 
/call DeclareIniVar slowType string Spells "item" 
/call DeclareIniVar charmSpell string Spells "Command of Druzzil" 
/call DeclareIniVar aeMezSpell string Spells "Bliss of the Nihil" 
/call DeclareIniVar shielding string spells "Mystic Shield" 
/call DeclareIniVar singleHasteSpell string Spells "Speed of Salik" 
/call DeclareIniVar groupHasteSpell string Spells "Hastening of Salik" 
/call DeclareIniVar selfRune string Spells "Ethereal Rune" 
/call DeclareIniVar petSpell string Spells "Salik's Animation" 
/call DeclareIniVar selfBuff1 string Spells " " 
/call DeclareIniVar selfBuffNoStack1 string Spells " " 
/call DeclareIniVar selfBuff2 string Spells " " 
/call DeclareIniVar selfBuffNoStack2 string Spells " " 
/call DeclareIniVar selfBuff3 string Spells " " 
/call DeclareIniVar selfBuffNoStack3 string Spells " " 
/call DeclareIniVar selfBuff4 string Spells " " 
/call DeclareIniVar selfBuffNoStack4 string Spells " " 
/call DeclareIniVar selfBuff5 string Spells " " 
/call DeclareIniVar selfBuffNoStack5 string Spells " " 
/call DeclareIniVar buffList1 string Spells "c6,crack,clarity,c5,c" 
/call DeclareIniVar buffName1 string Spells "c6" 
/call DeclareIniVar buffType1 string Spells "gem4" 
/call DeclareIniVar buffList2 string Spells "haste,sov,salik,speed,pants" 
/call DeclareIniVar buffName2 string Spells "haste" 
/call DeclareIniVar buffType2 string Spells "gem4" 
/call DeclareIniVar buffList3 string Spells "mr,grm,god" 
/call DeclareIniVar buffName3 string Spells "guard of druzzil" 
/call DeclareIniVar buffType3 string Spells "gem4" 
/call DeclareIniVar buffList4 string Spells "shissar,snake" 
/call DeclareIniVar buffName4 string Spells "staff of the serpent" 
/call DeclareIniVar buffType4 string Spells "item" 
/call DeclareIniVar buffList5 string Spells "c3" 
/call DeclareIniVar buffName5 string Spells "koadic's endless intellect" 
/call DeclareIniVar buffType5 string Spells "gem4" 

/call DeclareIniVar hpRobe string Items "${InvSlot[chest].Item.Name}" 
/call DeclareIniVar clicky1 string Items "Girdle of Efficiency" 
/call DeclareIniVar clickyNoStack1 string Items " " 
/call DeclareIniVar clicky2 string Items "Veil of the Inferno" 
/call DeclareIniVar clickyNoStack2 string Items " " 
/call DeclareIniVar clicky3 string Items " " 
/call DeclareIniVar clickyNoStack3 string Items " " 
/call DeclareIniVar clicky4 string Items " " 
/call DeclareIniVar clickyNoStack4 string Items " " 
/call DeclareIniVar clicky5 string Items " " 
/call DeclareIniVar clickyNoStack5 string Items " " 
/call DeclareIniVar useFood int Items 1 
/call DeclareIniVar statFood string Items "Bristlebanes Party Platter" 
/call DeclareIniVar food1 string Items "Halas 10lb Meat Pie" 
/call DeclareIniVar food2 string Items "Misty Thicket Picnic" 
/call DeclareIniVar food3 string Items "Holy Cake" 
/call DeclareIniVar food4 string Items " " 
/call DeclareIniVar food5 string Items " " 
/call DeclareIniVar meleeWep string Items "Staff of the Silent Star" 
/call DeclareIniVar invisItem string Items "Opaline Charm" 
/call DeclareIniVar dispellItem string Items "Wand of the Vortex" 
/call DeclareIniVar tashFocusItem string Items "Sharp Ended Broken Lever" 
/call DeclareIniVar normalMainhand string Items "${InvSlot[mainhand].Item.Name}" 


/squelch /custombind add ma 
/squelch /custombind add sa 
/squelch /alias /anchor /echo SetAnchor 
/squelch /alias /manarobe /echo Mana Robe 
/squelch /alias /setma /custombind set ma /assist 
/squelch /alias /setsa /custombind set sa /assist 

/declare i int local 
/declare j int local 
/declare oldTarget int local 
/declare tempTimer timer local 0 
/varset castSub CheckForAdds 
:check_params 
/if ( ${Defined[Param${i}]} ) { 
/if ( ${Param${i}.Equal[ma]} ) { 
/varcalc i ${i}+1 
/call SetIniVar mainAssist Settings "${Param${i}}" 
} else /if ( ${Param${i}.Equal[sa]} ) { 
/varcalc i ${i}+1 
/call SetIniVar secondAssist Settings "${Param${i}}" 
} else /if ( ${Param${i}.Equal[radius]} ) { 
/varcalc i ${i}+1 
/call SetIniVar minRadius Settings "${Param${i}}" 
} else /if ( ${Param${i}.Equal[minhp]} ) { 
/varcalc i ${i}+1 
/call SetIniVar minHP Settings "${Param${i}}" 
} else /if ( ${Param${i}.Equal[buff]} ) { 
/call SetIniVar autoBuff Settings 1 
} else /if ( ${Param${i}.Equal[nobuff]} ) { 
/call SetIniVar autoBuff Settings 0 
} else /if ( ${Param${i}.Equal[nuke]} ) { 
/call SetIniVar nukeMode Settings 1 
} else /if ( ${Param${i}.Equal[nonuke]} ) { 
/call SetIniVar nukeMode Settings 0 
} else /if ( ${Param${i}.Equal[mez]} ) { 
/call SetIniVar useMez Settings 1 
} else /if ( ${Param${i}.Equal[nomez]} ) { 
/call SetIniVar useMez Settings 0 
} else /if ( ${Param${i}.Equal[debuff]} ) { 
/call SetIniVar useDebuff Settings 1 
} else /if ( ${Param${i}.Equal[nodebuff]} ) { 
/call SetIniVar useDebuff Settings 0 
} 
/varcalc i ${i}+1 
/goto :check_params 
} 
/if ( !${Me.Gem[${mezSpell}]} ) { 
/if ( ${Me.Gem[bliss]} ) { 
/call SetIniVar mezSpell Spells Bliss 
} else /if ( ${Me.Gem[sleep]} ) { 
/call SetIniVar mezSpell Spells Sleep 
} else /if ( ${Me.Gem[apathy]} ) { 
/call SetIniVar mezSpell Spells Apathy 
} else /if ( ${Me.Gem[glamour of kintaz]} ) { 
/call SetIniVar mezSpell Spells "Glamour of Kintaz" 
} else /if ( ${Me.Gem[felicity]} ) { 
/call SetIniVar mezSpell Spells Felicity 
} else /if ( ${Me.Gem[euphoria]} ) { 
/call SetIniVar mezSpell Spells Euphoria 
} 
} 

/if ( !${InvSlot[chest].Item.Name.Equal[mana robe]} ) /call SetIniVar hpRobe Items "${InvSlot[chest].Item.Name}" 

/call SwapStatFood 1 

/squelch /alert clear 6 

/if ( ${autoAnnounce} ) /announce on 

/echo AutoEnc Mode Activated 
/if ( ${nukeMode} || ${useDebuff} || ${useMez} ) { 
/echo Main Assist: ${mainAssist} 
/if ( ${Bool[${secondAssist}]} ) /echo Secondary Assist: ${secondAssist} (if ${mainAssist} dies) 
} 
/if ( ${nukeMode} ) /echo Nuke Mode: ${nukeMode} 
/if ( ${useDebuff} ) /echo Auto Debuffs Enabled 
/if ( ${useMez} ) { 
/echo Auto Mez adds within a radius of ${minRadius} 
/if ( !${Me.Gem[${mezSpell}]} ) /memspell 7 "${mezSpell}" 
} 
/if ( ${autoBuff} ) /echo AutoBuff Mode: ${autoBuff} 
/if ( ${useMount} ) /echo Mount is enabled. 
/if ( ${manaRobeMode} ) /echo ManaRobe Mode: ${manaRobeMode} 
:wait_for_target 
/if ( ${nukeMode} || ${useDebuff} || ${useMez} ) /echo Waiting for target... 
/varset newAdds 0 
/varset validTarget 0 
:wait_for_target2 
/if ( ${Spawn[pc ${secondAssist}].ID} && ( !${Spawn[pc ${mainAssist}].ID} || ${Spawn[corpse ${mainAssist} radius ${minRadius}].ID} ) ) { 
/varset mainTank ${secondAssist} 
} else { 
/varset mainTank ${mainAssist} 
} 
/if ( !${Corpse.Open} && ${Spawn[${mainAssist}].NearestSpawn[npc radius ${Math.Calc[${minRadius}*2]}].ID} && ( ${nukeMode} || ${useDebuff} || ${useMez} ) ) { 
/if ( ${Me.Casting.ID} ) /call WaitCast 
/assist ${mainTank} 
/call ManaRobe 
/varset oldTarget ${Target.ID} 
/varset tempTimer 5 
/call CheckRune 100 
:wait_for_assist1 
/call CheckTarget 
/if ( ${tempTimer} && !${validTarget} ) /goto :wait_for_assist1 
} 
/call CheckTarget 
/if ( !${validTarget} || ( !${nukeMode} && !${useDebuff} && !${useMez} ) ) { 
/doevents 
/call CheckBuffs 
/call CheckPet 
/call CheckRune ${runeHP} 
/if ( ${useAnchor} ) /call CheckLoc 
/call ManaRobe 
/goto :wait_for_target2 
} 
/echo Target Aquired >> ${Target.DisplayName} << 
/varset petAttacking false 
/varset engaged 0 
/varset nukeWaitTimer 0 
/varset mobID ${Target.ID} 
/varset mobHPStart ${Target.PctHPs} 
/call UpdateMobList 
/call AddToList mobList ${mobID} 
/if ( ${Defined[mezTimer${mobID}]} ) /deletevar mezTimer${mobID} 
/declare mezTimer${mobID} int outer -1 
/varset newAdds 0 
/varset nukeWaitTimer 0 
/varset fightStartTime 0 
/varset totalNonMeleeDmg 0 
/varset totalMeleeDmg 0 
/if ( ${Defined[waitTimer${mobID}]} ) /deletevar waitTimer${mobID} 
/declare waitTimer${mobID} int outer -1 
:check_add_loop 
/if ( ( ${Target.PctHPs}>${minHP} && ${waitTimer${mobID}} ) || !${assistWaitTimer} ) { 
/if ( ${Spawn[pc ${secondAssist}].ID} && ( !${Spawn[pc ${mainAssist}].ID} || ${Spawn[corpse ${mainAssist} radius ${minRadius}].ID} ) ) { 
/varset mainTank ${secondAssist} 
} else { 
/varset mainTank ${mainAssist} 
} 
/if ( ${Me.Casting.ID} ) /call WaitCast 
/assist ${mainTank} 
/if ( ${useManaRobe} && ( ${refreshTime} || ${nukeWaiTimer} || !${nukeMode} ) ) /call ManaRobe 
/varset tempTimer 8 
:wait_for_assist 
/call CheckForAdds 
/doevents Timer 
/if ( ${tempTimer} && ${Target.ID}==${mobID} ) /goto :wait_for_assist 
/if ( ${Target.ID} && ${Target.ID}!=${mobID} ) { 
/if ( ${Defined[mezTimer${mobID}]} ) /deletevar mezTimer${mobID} 
/call DeleteFromList mobList ${mob} 
/goto :wait_for_target 
} 
/varset assistWaitTimer 5s 
} 
/varset addIndex 1 
:check_add_loop2 
/call CheckForAdds 
/if ( ${addIndex}>1 ) /goto :check_add_loop2 
/if ( ${newAdds} ) /call MezAdds 
/call CheckPet 
/if ( !${Spawn[${mobID}].Type.Equal[NPC]} && !${Spawn[${mobID}].Type.Equal[pet]} ) /goto :mob_dead 
/if ( !${nukeMode} && !${useDebuff} && !${useMez} ) /goto :wait_for_target 
/target id ${mobID} 
/if ( ( ${Target.PctHPs}<${mobHPStart} ) && ${Spawn[pc ${mainTank}].NearestSpawn[radius ${Math.Calc[${Spawn[${mobID}].MaxRangeTo}+10]} id ${mobID}].ID} && ${waitTimer${mobID}}<0 && ${Spawn[${mobID}].Distance3D}<=${minRadius} ) { 
/deletevar waitTimer${mobID} 
/declare waitTimer${mobID} timer outer ${engageDelay} 
} 
/doevents 
/target id ${mobID} 

/if ( ${Target.PctHPs}>${minHP} && ${waitTimer${mobID}} ) /goto :check_add_loop 
/if ( ${newAdds} ) /call MezAdds 
/if ( !${engaged} ) { 
/varset engaged 1 
/echo Engaging >> ${Target.DisplayName} << 
} 
/if ( ${Me.Pet.ID} && !${petAttacking} && !${Me.PetBuff[word of worell]} ) { 
/pet attack 
/varset petAttacking true 
} 
/call UpdateMobList 
/doevents Timer 
/if ( ${useDebuff} && !${newAdds} ) /call DebuffMobs 
/if ( ${Spawn[${mobID}].Type.Equal[NPC]} || ( !${Spawn[${mobID}].Master.Type.Equal[PC]} && ${Spawn[${mobID}].Type.Equal[pet]} ) ) { 
/target id ${mobID} 
} else { 
/goto :mob_dead 
} 
/if ( !${newAdds} && ( ${slowTimer${mobID}}>1 || ${slowTimer${mobID}}<0 || !${useDebuff} ) ) { 
/call CheckRune 100 
/call CheckBuffs 
/target id ${mobID} 
/if ( ${Target.Type.Equal[npc]} && ( ${Target.Class.CanCast} || ${Zone.ID}>=300 ) ) { 
/if ( ${Me.Gem[Scryer's Trespass]} && !${spellRecastTimer${Me.Gem[Scryer's Trespass]}} ) /call Cast "Scryer's Trespass" spell 0 CheckForAdds 
/if ( ${Me.Gem[Theft of Thought]} && !${spellRecastTimer${Me.Gem[Theft of Thought]}} ) /call Cast "Theft of Thought" spell 0 CheckForAdds 
} 
/target id ${mobID} 
/if ( ${refreshTime}<20 && ( ${Target.PctHPs}<${mobHPStart} || ${minHP}==100 ) && !${newAdds} && ${Target.LineOfSight} && !${Me.TargetOfTarget.Name.Equal[${Me.Name}]} && !${nukeWaitTimer} && ${nukeMode} && ( ${Me.PctMana}>=${nukeMana} || ${nukeMode}==2 ) && ( ${Target.Type.Equal[NPC]} || ${Target.Type.Equal[pet]} ) ) { 
/if ( !${fightStartTime} ) /varset fightStartTime ${MacroQuest.Running} 
/call Cast "${nuke1}" gem1 0 CheckForAdds 
/if ( ${Macro.Return.Equal[CAST_NOTREADY]} ) { 
/if ( ${Me.Gem[${nuke2}]} ) { 
/call Cast "${nuke2}" gem2 0 CheckForAdds 
} else { 
/call ManaRobe 
} 
} 
/if ( ${Macro.Return.Equal[CAST_SUCCESS]} || ${Macro.Return.Equal[CAST_RESISTED]} ) { 
/if ( ${nukeMode}==1 ) { 
/varcalc nukeWaitMod 5*(90 - ${Me.PctMana}) 
} else { 
/varset nukeWaitMod 0 
} 
/if ( ${nukeDelay}>${nukeWaitMod} ) { 
/varset nukeWaitTimer ${nukeDelay} 
} else { 
/varset nukeWaitTimer ${nukeWaitMod} 
} 
} 
} else { 
/call ManaRobe 
} 
} 
/goto :check_add_loop 
:mob_dead 
/call UpdateMobList 
/echo Target Dead! 
/doevents 
/if ( ${useDPS} ) { 
/call DisplayDPS 
} 
/goto :wait_for_target
Sub CheckForAdds 
/if ( ${Me.Casting.ID} ) { 
/doevents gate 
/doevents rageon 
/doevents rageoff 
/doevents uquakey 
/doevents setvar 
/if ( ${castEndTime}>5 ) /doevents chat 
/if ( !${castReturn.Equal[CAST_CANCELLED]} && ${castEndTime} && ${castEndTime}<=5 && ( !${startCastingLoc.Arg[1].Equal[${Me.X}]} || !${startCastingLoc.Arg[2].Equal[${Me.Y}]} ) ) { 
/keypress forward 
/keypress left 
/squelch /zoom ${startCastingLoc} 
} 
/if ( ${useMez} && ${newAdds} && !${Me.Casting.Name.Equal[${mezSpell}]} && !${Spawn[${petID}].Type.Equal[NPC]} ) /call Interrupt 
} 
/if ( ${Target.ID}==${mobID} && ${Me.TargetOfTarget.Type.Equal[pc]} && ${Me.TargetOfTarget.Class.Name.Equal[cleric]} && ${Me.TargetOfTarget.PctHPs}<=50 && ${Me.AltAbilityReady[soothing words]} ) { 
/if ( ${Me.TargetOfTarget.ID}==${Group[1].ID} || ${Me.TargetOfTarget.ID}==${Group[2].ID} || ${Me.TargetOfTarget.ID}==${Group[3].ID} || ${Me.TargetOfTarget.ID}==${Group[4].ID} || ${Me.TargetOfTarget.ID}==${Group[5].ID} ) { 
/if ( ${Me.Casting.ID} && !${Me.Casting.Name.Equal[${mezSpell}]} && !${Spawn[${petID}].Type.Equal[NPC]} ) /call Interrupt 
/call Cast "soothing words" alt 
} 
} 

/if ( ${useCharm} ) /call CheckPet2 
:check_add_loop 
/if ( !${Spawn[${mobID}].Type.Equal[NPC]} && !${Spawn[${mobID}].Master.Type.Equal[NPC]} && !${petOff} ) { 
/varset addIndex 1 
/varset newAdds 0 
/return 
} 
/if ( ${petCheck} ) { 
/varset addID ${NearestSpawn[${addIndex},npc radius ${minRadius}].ID} 
} else { 
/varset addID ${NearestSpawn[${addIndex},pet radius ${minRadius}].ID} 
} 
/if ( ${addID} ) { 
/if ( ( ${mezTimer${addID}}<=${Math.Calc[${mezDuration}-50]} || !${mezTimer${addID}} ) && ${Spawn[${addID}].Distance3D}<=${minRadius} && ${addID}!=${petID} && ${Spawn[${addID}].LineOfSight} && ${aggroAnim.Find[|${Spawn[${addID}].Animation}|]} && ${mezTimer${addID}}!=-1 && ( ( !${Spawn[${addID}].Master.Type.Equal[PC]} && ${Spawn[${addID}].Type.Equal[pet]} ) || ( ${Spawn[${addID}].Type.Equal[NPC]} && ${addID}!=${Spawn[${mobID}].Master.ID} ) ) ) { 
/call AddToList addList ${addID} 
/call AddToList mobList ${addID} 
/if ( ${Macro.Return.Equal[1]} ) { 
/if ( !${Defined[waitTimer${addID}]} ) /declare waitTimer${addID} timer outer ${engageDelay} 
/echo Add detected! >> ${Spawn[${addID}].DisplayName} << 
} 
/varset newAdds 1 
} 
/varcalc addIndex ${addIndex}+1 
} else { 
/varcalc petCheck !${petCheck} 
/varset addIndex 1 
} 
/return 

Sub CheckPet2 
/if ( ${Zone.ID}!=${currentZone} ) /call Event_Zone 
/if ( ${petOff} && ${Me.Pet.ID} ) { 
/varset petOff 0 
/if ( !${addList.Find[[]} ) /varset newAdds 0 
} 
/if ( ${Spawn[${petID}].Type.Equal[NPC]} && !${petOff} && ${useCharm} && ${petID} ) { 
/echo Pet Off! 
/varset petAttacking false 
/varset newAdds 1 
/varset petOff 1 
/if ( ${useCharm}>1 && ${Me.Casting.ID} && ${useMez} && ${newAdds} && !${Me.Casting.Name.Equal[${mezSpell}]} && !${Me.Casting.Name.Equal[word of morell]} && !${Me.Casting.Name.Equal[howl of tashan]} && !${Me.Casting.Name.Equal[${charmSpell}]} ) /call Interrupt 
/if ( ${useCharm}==1 ) { 
/beep 
/timed 7 /g PET OFF!! snare/malo pls! 
/target id ${petID} 
} 
} 
/return 

Sub CheckPet 
/if ( !${FindItem[${normalOffhand}].ID} && ${InvSlot[offhand].Item.ID} ) /varset normalOffhand ${InvSlot[offhand].Item.Name} 
/if ( ${FindItem[Wand of Destructive Protection].ID} ) { 
/declare AETime float local 
/varcalc AETime (${MacroQuest.Running}-${uquaAETime})%90000 
/if ( ${AETime}>84000 ) { 
/if ( !${Me.Inventory[offhand].Name.Equal[Wand of Destructive Protection]} ) /call EquipItem "Wand of Destructive Protection|offhand" 
} else { 
/if ( ${AETime}>3000 && !${Me.Inventory[offhand].Name.Equal[${normalOffhand}]} ) /call EquipItem "${normalOffhand}|offhand" 
} 
} 
/doevents rageon 
/doevents rageoff 
/declare i int local 
/declare tempID int local 
/call CheckPet2 
/if ( ${petOff} ) { 
/if ( ${useCharm}>1 ) { 
/call Charm ${petID} 
} 
} 
/for i 1 to ${Group} 
/varset tempID ${Group.Member[${i}].Pet.ID} 
/if ( ${tempID} ) { 
/if ( !( ${slowTimer${tempID}}<0 ) ) { 
/if ( ${Defined[mezTimer${tempID}]} ) /deletevar mezTimer${tempID} 
/if ( ${Defined[slowTimer${tempID}]} ) /deletevar slowTimer${tempID} 
/if ( ${Defined[tashTimer${tempID}]} ) /deletevar tashTimer${tempID} 
/declare mezTimer${tempID} int outer -1 
/declare tashTimer${tempID} int outer -1 
/declare slowTimer${tempID} int outer -1 
} 
} 
/next i 
/return 

Sub MezAdds 
/if ( !${useMez} ) /goto :end_mez_adds 
/declare tempID string local 
/declare AEmezzed int local 0 
:mez_adds_loop 
/if ( ${addList.Find[[]} ) { 
/if ( ${addList.Find[[]}>1 ) /varset addList ${addList.Right[-${Math.Calc[${addList.Find[[]}-1]}]} 
/if ( !${Spawn[${mobID}].Type.Equal[NPC]} && !${Spawn[${mobID}].Master.Type.Equal[NPC]} ) /return 
/varset tempID ${addList.Arg[1,[].Left[-1]} 
/if ( !${Spawn[${tempID}].Type.Equal[NPC]} && !${Spawn[${tempID}].Master.Type.Equal[NPC]} ) { 
/if ( ${Defined[mezTimer${tempID}]} ) /deletevar mezTimer${tempID} 
/if ( ${Defined[slowTimer${tempID}]} ) /deletevar slowTimer${tempID} 
/if ( ${Defined[tashTimer${tempID}]} ) /deletevar tashTimer${tempID} 
} else { 
/target id ${tempID} 
/if ( !${AEmezzed} && ${Spawn[${tempID}].NearestSpawn[2,npc radius 30].ID} && ${Spawn[${tempID}].Distance3D}>30 && ${addList.Count[[]}>=2 ) { 
/call Cast "${aeMezSpell}" 
/varset AEmezzed 1 
} 
/target id ${tempID} 
/call Mez 
} 
/call DeleteFromList addList ${tempID} 
/goto :mez_adds_loop 
} 
:end_mez_adds 
/varset newAdds 0 
/return 

Sub DebuffMobs 
/declare i int local 
/declare tempID string local 
/if ( ${mobList.Find[[]} ) { 
/if ( ${mobList.Find[[]}>1 ) /varset mobList ${mobList.Right[-${Math.Calc[${mobList.Find[[]}-1]}]} 
/for i 1 to ${mobList.Count[[]} 
/varset tempID ${mobList.Arg[${i},[].Left[-1]} 
/if ( !${Defined[slowTimer${tempID}]} ) { 
/if ( !${Spawn[${tempID}].Type.Equal[npc]} ) { 
/declare slowTimer${tempID} int outer 0 
} else /if ( ( ( !${waitTimer${tempID}} || ${mezTimer${tempID}}>0 ) && ( ${slowTimer${mobID}} || ${waitTimer${mobID}} ) ) || ${tempID}==${mobID} ) { 
/call UpdateMobList 
/doevents Timer 
/target id ${tempID} 
/if ( !${tashTimer${tempID}} ) /call Tash 
/if ( ${newAdds} ) /return 
/call Slow 
/if ( ${addList.Find[[]} ) /varset newAdds 1 
/if ( ${newAdds} ) /return 
/if ( ${Macro.Return.Equal[CAST_CANCELLED]} ) /return 
/if ( ${newAdds} ) /return 
} 
} 
/if ( !${Spawn[${mobID}].Type.Equal[NPC]} && !${Spawn[${mobID}].Master.Type.Equal[NPC]} ) /return 
/next i 
} 
/return 

Sub Charm(int tempID) 
/declare oldTargetID int local ${Target.ID} 
/target id ${tempID} 
/if ( ${Me.Gem[Word of Morell]} ) { 
/if ( ${Target.Distance3D}>30 ) { 
/face fast nolook 
/keypress forward hold 
/delay 1s ${Target.Distance3D}<=30 
/keypress forward 
/delay 5 !${Me.Moving} 
} 
/if ( ${Target.Distance3D}<=30 ) /call Cast "Word of Morell" gem4 6s CheckForAdds 
} 
/target id ${tempID} 
/if ( ${tashTimer${tempID}}<5500 ) /call Tash 
/target id ${tempID} 
/call Cast "${charmSpell}" gem6 2s CheckForAdds 
/if ( ${Me.Pet.ID} ) { 
/if ( ${Spawn[${oldTargetID}].ID} ) { 
/target id ${oldTargetID} 
} else { 
/squelch /target clear 
} 
} 
/return 

Sub Tash 
/declare tempID int local ${Target.ID} 
/if ( ${useTashFocus} ) /call SwapItem "${tashFocusItem}" ${FindItem[${tashFocusItem}].WornSlot[1]} 
/call Cast "${tashSpell}" gem3 6s 
/if ( !${Defined[tashTimer${tempID}]} ) /declare tashTimer${tempID} timer outer 
/if ( ${Macro.Return.Equal[CAST_SUCCESS]} ) { 
/varset tashTimer${tempID} ${tashDuration} 
} else { 
/varset tashTimer${tempID} 1 
} 
/call SwapItem "${normalMainhand}" mainhand 
/return ${Macro.Return} 

Sub Slow 
/declare tempID int local ${Target.ID} 
/doevents Hit 
/call Cast "${slowSpell}" ${slowType} 6s CheckForAdds 
/if ( !${Defined[slowTimer${tempID}]} ) /declare slowTimer${tempID} timer outer 
/if ( ${Macro.Return.Equal[CAST_IMMUNE]} ) { 
/deletevar slowTimer${tempID} 
/declare slowTimer${tempID} int outer -1 
} else /if ( ${Macro.Return.Equal[CAST_SUCCESS]} ) { 
/varset slowTimer${tempID} ${slowDuration} 
} else /if ( ${newAdds} || ${Macro.Return.Equal[CAST_OUTOFMANA]} || ${Macro.Return.Equal[CAST_OUTOFRANGE]} || ${Macro.Return.Equal[CAST_CANNOTSEE]} ) { 
/varset slowTimer${tempID} 50 
} else { 
/varset slowTimer${tempID} 1 
} 
/return ${Macro.Return} 

Sub Mez 
/declare tempID int local ${Target.ID} 
/declare resistCount int local 0 
/if ( ${mezTimer${tempID}}>${Math.Calc[${mezDuration}-50]} ) /return 
:mez_loop 
/tar id ${tempID} 
/if ( ${Target.PctHPs}<99 && ${mezTimer${tempID}} ) { 
/deletevar mezTimer${tempID} 
/declare mezTimer${tempID} int outer -1 
/return ${Macro.Return} 
} 
/if ( !${Spawn[${tempID}].Type.Equal[NPC]} && !${Spawn[${tempID}].Master.Type.Equal[NPC]} ) { 
/call UpdateMobList 
/return 
} 
/if ( !${Defined[mezTimer${tempID}]} ) /declare mezTimer${tempID} timer outer 
/doevents Hit 
/call Cast "${mezSpell}" gem7 3s CheckForAdds 
/if ( ${Macro.Return.Equal[CAST_IMMUNE]} || ${Macro.Return.Equal[CAST_CANCELLED]} ) { 
/deletevar mezTimer${tempID} 
/declare mezTimer${tempID} int outer -1 
} else /if ( ${Macro.Return.Equal[CAST_SUCCESS]} ) { 
/varset mezTimer${tempID} ${mezDuration} 
} else /if ( ${Macro.Return.Equal[CAST_OUTOFMANA]} || ${Macro.Return.Equal[CAST_OUTOFRANGE]} || ${Macro.Return.Equal[CAST_CANNOTSEE]} ) { 
/varset mezTimer${tempID} 50 
} else { 
/if ( ${Macro.Return.Equal[CAST_INTERRUPTED]} ) { 
/if ( ${Me.SpellReady[word of morrel]} ) { 
/call Cast "Word of Morell" gem4 4s 
} 
} 
/if ( ${Macro.Return.Equal[CAST_RESISTED]} ) { 
/varcalc resistCount ${resistCount}+1 
/if ( ${resistCount}==2 && !${tashTimer${addID}} ) /call Tash 
} 
/if ( !${Spawn[${mobID}].Type.Equal[NPC]} && !${Spawn[${mobID}].Master.Type.Equal[NPC]} && ${useMez} ) /return 
/goto :mez_loop 
} 
/return ${Macro.Return} 

Sub Event_Timer(string timerName,int timerValue) 
/if ( !${Defined[${timerName}]} ) /return 
/declare tempID int local 0 
/declare oldTargetID int local ${Target.ID} 
/if ( ${timerName.Left[9].Equal[tashTimer]} ) { 
/varset tempID ${timerName.Right[-9]} 
/if ( ${Spawn[${tempID}].Type.Equal[NPC]} || ${Spawn[${tempID}].Master.Type.Equal[NPC]} ) { 
/target id ${tempID} 
/call Tash 
} else { 
/deletevar ${timerName} 
} 
} else /if ( ${timerName.Left[9].Equal[slowTimer]} ) { 
/varset tempID ${timerName.Right[-9]} 
/if ( ${Spawn[${tempID}].Type.Equal[NPC]} || ${Spawn[${tempID}].Master.Type.Equal[NPC]} ) { 
/target id ${tempID} 
/call Slow 
} else { 
/deletevar ${timerName} 
} 
} else /if ( ${timerName.Left[8].Equal[mezTimer]} ) { 
/varset tempID ${timerName.Right[-8]} 
/if ( ${Spawn[${tempID}].Type.Equal[NPC]} || ${Spawn[${tempID}].Master.Type.Equal[NPC]} ) { 
/target id ${tempID} 
/call Mez 
} else { 
/deletevar ${timerName} 
} 
} else { 
/return ${Macro.Return} 
} 
/if ( ${Target.ID}==${tempID} ) { 
/if ( ${Spawn[${oldTargetID}].ID} ) { 
/target id ${oldTargetID} 
} else { 
/squelch /target clear 
} 
} 
/return ${Macro.Return} 

Sub ClickOffIllusion 
/declare i int local 
/for i 1 to 20 
/if ( ${Me.Buff[${i}].Name.Find[illusion:]} ) /notify BuffWindow buff${Math.Calc[${i}-1].Int} leftmouseup 
/next i 
/return 

Sub IllusionRanger 
/declare oldChest string local 
/declare oldArms string local 
/declare oldLegs string local 
/declare oldPrimary string local 
/declare oldSecondary string local 
/call ClickOffIllusion 
/call EquipItem "enchanted elven chain tunic" 
/varset oldChest ${Macro.Return} 
/call EquipItem "enchanted elven chainmail leggings" 
/varset oldLegs ${Macro.Return} 
/call EquipItem "ruined heretic longsword" 
/varset oldPrimary ${Macro.Return} 
/call EquipItem "preserved chokidai vocal cords" 
/varset oldSecondary ${Macro.Return} 
/target id ${Me.ID} 
/call Cast "illusion: werewolf" gem4 10s 
/call EquipItem ${oldChest} 
/call EquipItem ${oldLegs} 
/call EquipItem ${oldPrimary} 
/call EquipItem ${oldSecondary} 
/call ClickOffIllusion 
/call Cast "illusion: wood elf" gem4 10s 
/return 

Sub CheckBuffs 
/if ( ${Zone.ID}!=${currentZone} ) /call Event_Zone 

/varset deathFlag ${Math.Calc[!(${InvSlot[chest].Item.ID}>0)]} 
/if ( ${deathFlag} ) /goto :dead 
/declare i int local 
/declare oldTarget int local ${Target.ID} 
/declare oldItemName string local 
/declare foodName string local 
/declare oldSlotID int local 
/declare spellName string local 
/declare buffText string local 
/declare targetName string local 
/declare spellName2 string local 
/declare spellType string local 
/declare spellRange int local 118 
/declare tempID int local 
/declare focusList string local Wunshi's Focusing,Focus of Alladnu,Focus of Soul,Talisman of Kragg,Focus of the Seventh,Talisman of Wunshi 
/declare shaman bool local false 
/declare targetType string local 

/doevents Indoors 
/if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=900 ) /call SumPet 
/if ( ${Me.Pet.ID} && ${petID}!=${Me.Pet.ID} ) { 
/varset petID ${Me.Pet.ID} 
/if ( ${Defined[mezTimer${petID}]} ) /deletvar mezTimer${petID} 
/if ( ${Defined[slowTimer${petID}]} ) /deletvar slowTimer${petID} 
/declare mezTimer${petID} int outer -1 
/declare slowTimer${petID} int outer -1 
} 
/if ( !${Me.Casting.ID} ) { 
/if ( ${Me.Combat} ) { 
/call SwapItem "${meleeWep}" mainhand 
} else { 
/call SwapItem "${normalMainhand}" mainhand 
} 
} 
/if ( ${Cursor.Name.Equal[Rod of Mystical Transvergance]} ) /autoinventory 
/if ( !${FindItem[Rod of Mystical Transvergance].ID} && ${Spawn[pc ${rodBitch} radius 200].ID} && !${askedForRodTimer} ) { 
;tell ${rodBitch} rod pls! 
/varset askedForRodTimer 5m 
} 
/if ( ${FindItem[Rod of Mystical Transvergance].ID} && !${modRodTimer} && ${Me.PctHPs}>50 && ${Me.PctMana}<=95 ) { 
/call Cast "Rod of Mystical Transvergance" item 
/varset modRodTimer 3100 
} 
/if ( ${checkNamed} ) /call CheckNamed 

/if ( ${Me.Hunger}<5000 && ${useFood} ) { 
/call GetFoodName 
/varset foodName ${Macro.Return} 
/if ( ${Bool[${foodName}]} ) { 
/varset oldSlotID ${FindItem[${foodName}].InvSlot.ID} 
/call SwapItem "${foodName}" "pack8" 
/nomodkey /itemnotify pack8 rightmouseup 
/call SwapItem "${foodName}" "${oldSlotID}" 
} 
} 
/if ( !${autoBuff} ) /goto :skip_buffs 
/if ( ( ${autoBuff}==2 || ${autoBuff}==4 ) && ${Target.ID} ) /return 

/call CheckIniBuffs 

/if ( ${Me.Pet.ID} ) { 
/if ( !${Me.PetBuff[${charmSpell}]} && !${Me.PetBuff[speed of vallon]} && !${Me.PetBuff[speed of salik]} && !${Me.PetBuff[hastening of salik]} && ${Me.Pet.Distance3D}<=120 ) /call AddToQueue "haste,${Me.Pet.Name}" 
/if ( !${Me.PetBuff[Night`s Dark Terror]} && ${Me.Pet.Distance3D}<=120 && ${Me.SpellReady[Night`s Dark Terror]} ) /call AddToQueue "Night`s Dark Terror,${Me.Pet.Name}" 
} 
/if ( ${Me.Buff["Clairvoyance"].Duration}<=5 && ${Me.Buff["Voice of Clairvoyance"].Duration}<=5 ) { 
/if ( !${Me.Buff["Voice of Quellious"].ID} && !${Me.Buff["Tranquility"].ID} ) { 
/if ( ${Me.PctMana}<50 && ${FindItem[Silken Augmenter's Pantaloons].ID} && !${Me.Buff["Clairvoyance"].ID} && !${Me.Buff["Voice of Clairvoyance"].ID} ) { 
/call AddToQueue "c4,${Me.Name}" 
} else { 
/call AddToQueue "c6,${Me.Name}" 
} 
} else /if ( ${Me.PctMana}>=90 && ( ${Me.Book[clairvoyance]} || ${Me.Book[voice of clairvoyance]} ) ) { 
/call AddToQueue "c6,${Me.Name}" 
} 
} 
/if ( ${hasteGroup} ) { 
/for i 1 to ${Group} 
/varset tempID ${Group.Member[${i}].ID} 
/if ( ${tempID} ) { 
/if ( !${Defined[hasteTimer${tempID}]} ) /declare hasteTimer${tempID} timer outer 
/if ( ${Spawn[${tempID}].Type.Equal[pc]} ) { 
/if ( !${hasteTimer${tempID}} ) { 
/if ( ${Group.Member[${i}].Class.PureCaster} ) { 
/deletevar hasteTimer${tempID} 
/declare hasteTimer${tempID} int outer -1 
} else { 
/call AddToQueue "sos,${Group.Member[${i}].Name}" 
/varset hasteTimer${tempID} 62m 
} 
} 
} else /if ( ${Spawn[${tempID}].Type.Equal[corpse]} ) { 
/varset hasteTimer${tempID} 0 
} 
} else /if ( ${Defined[hasteTimer${tempID}]} ) { 
/deletevar hasteTimer${tempID} 
} 
/next i 
} 
/if ( ${Spawn[pc class shaman].ID} ) { 
/if ( ${Raid.Members} ) { 
/if ( ${Spawn[pc guild "${Me.Guild}" shm].ID} ) /varset shaman true 
} else { 
/for i 1 to ${Group} 
/if ( ${Group.Member[${i}].Class.Name.Equal[shaman]} ) /varset shaman true 
/next i 
} 
} 
/if ( ${shaman} ) { 
/if ( ${Me.Buff["${shielding}"].ID} ) /call ClickOffBuff "${shielding}" 
} else { 
/for i 1 to ${focusList.Length} 
/if ( ${Me.Buff[${focusList.Arg[${i},,]}].ID} ) /goto :skip_buffs 
/next i 
/if ( !${Me.Buff[${shielding}].ID} ) /call AddToQueue "${shielding}" 
} 
:skip_buffs 
/if ( !${Me.Mount.ID} && ${useMount} ) /call Cast "${InvSlot[ammo].Item.Name}" item 2s CheckForAdds 
/if ( ${buffQueue.Find[[]} ) { 
/if ( ${buffQueue.Find[[]}>1 ) /varset buffQueue ${buffQueue.Right[-${Math.Calc[${buffQueue.Find[[]}-1]}]} 
/for i 1 to ${buffQueue.Count[[]} 
/varset buffText [${buffQueue.Arg[${i},[]} 
/varset spellName ${buffText.Arg[1,,].Right[-1]} 
/if ( ${spellName.Right[1].Equal["]"]} ) /varset spellName ${spellName.Left[-1]} 
/varset targetName ${buffText.Arg[2,,].Left[-1]} 
/call GetBuffName "${spellName}" 
/varset spellName ${Macro.Return.Arg[1,,]} 
/varset spellType ${Macro.Return.Arg[2,,]} 
/if ( ${spellType.Equal[item]} ) { 
/varset spellName2 ${FindItem[${spellName}].Spell.Name} 
} else { 
/varset spellName2 ${spellName} 
} 
/if ( ${Spell[${spellName2}].TargetType.Equal[Group v2]} ) { 
/varcalc spellRange 1.18*${Spell[${spellName2}].AERange} 
} else { 
/varcalc spellRange 1.18*${Spell[${spellName2}].Range} 
} 
/varset targetType pc 
/if ( !${Spawn[pc ${targetName}].ID} ) /varset targetType pet 
/if ( ${Bool[${spellName}]} ) { 
/if ( ${Me.CurrentMana}>=${Math.Calc[${Spell[${spellName}].Mana}+${Me.ManaRegen}]} || ${spellType.Equal[item]} || ${spellType.Equal[alt]} ) { 
/if ( !${Bool[${targetName}]} ) { 
/call Cast "${spellName}" ${spellType} 4s CheckForAdds 
} else /if ( ${Spawn[${targetType} ${targetName}].ID} && ( ${Spawn[pc ${targetName}].Distance3D}<=${spellRange} || !${spellRange} ) ) { 
/target ${targetType} ${targetName} 
/if (${Target.ID}==${Me.ID} && ${String[${targetName}].NotEqual[${Me.CleanName}]}) /target next ${targetType} ${targetName}
/call Cast "${spellName}" ${spellType} 4s CheckForAdds 
/if ( ${Spawn[${oldTarget}].ID} ) { 
/if ( ${Target.Name.Equal[${targetName}]} ) /target id ${oldTarget} 
} else { 
/squelch /target clear 
} 
} 
/if ( ${Macro.Return.Equal[CAST_SUCCESS]} || ${Macro.Return.Equal[CAST_UNKNOWNSPELL]} || ${Macro.Return.Equal[CAST_NOTARGET]} || ( ${Macro.Return.Equal[CAST_CANCELLED]} && ( !${newAdds} || !${useMez} ) ) ) { 
/call DeleteFromQueue "${buffText}" 
/varcalc i ${i}-1 
} 
} 
} else { 
/call DeleteFromQueue "${buffText}" 
/varcalc i ${i}-1 
} 
/next i 
} 
/return 
:dead 
/declare i int local 
/varset mobList 
/varset addList 
/varset buffQueue 
/varset mobID 0 
/varset petID 0 
/varset useAnchor 0 
/squelch alert clear 6 
/call ClearMobList 
:wait_for_loot 
/varset deathFlag ${Math.Calc[!(${InvSlot[chest].Item.ID}>0)]} 
/if ( ${Spawn[corpse radius 100 ${Me.Name}].ID} && ${deathFlag} ) { 
/target mycorpse 
/call LootCorpse 
/delay 5 
/goto :wait_for_loot 
} 
/if ( ${deathFlag} ) { 
/memspellset ${spellSet} 
/echo You're dead! Consenting and waiting for rez... 
/consent guild 
/delay 25 
/consent raid 
/delay 25 
/consent group 
:wait_for_rez 
/doevents 
/delay 1s 
/if ( !${Window[ConfirmationDialogBox].Open} ) /goto :wait_for_rez 
/delay 18s !${Window[SpellBookWnd].Open} 
/echo Yay a rez! 
/target id ${Me.ID} 
/call cast "Clairvoyance" gem4 5s RezBuff 
/call TakeRez 
/delay 5s ${Spawn[corpse radius 100 ${Me.Name}].ID} 
/goto :wait_for_loot 
} 
/return 

Sub RezBuff 
/if ( ${Me.Casting.ID} && ${castEndTime}<=5 ) { 
/varset castReturn CAST_CANCELLED 
/call TakeRez 
} 
/return 

Sub TakeRez 
:wait_for_rez2 
/if ( ${Window[ConfirmationDialogBox].Open} ) { 
/delay 1 
/notify ConfirmationDialogBox Yes_Button leftmouseup 
/goto :wait_for_rez2 
} 
/return 

Sub GetBuffName(string spellName) 
/declare i int local 
/declare buffText string local 
/declare spellType string local 
/if ( !${Me.Gem[4].SpellType.Equal[detrimental]} ) { 
/varset spellType gem4 
} else { 
/varset spellType gem9 
} 
/if ( ${spellName.Equal[gom]} ) /varset spellName Gift of Magic 
/if ( ${spellName.Equal[c1]} ) { 
/if ( ${FindItem[rod of infinite thought].ID} ) { 
/varset spellName rod of infinite thought 
/varset spellType item 
} else { 
/varset spellName clarity 
} 
} 
/if ( ${spellName.Equal[c2]} ) /varset spellName Clarity II 
/if ( ${spellName.Equal[c3]} ) { 
/if ( ${FindItem[Wand of Tranquility].ID} ) { 
/varset spellName Wand of Tranquility 
/varset spellType item 
} else { 
/varset spellName Koadic's Endless Intellect 
} 
} 
/if ( ${spellName.Equal[c4]} ) { 
/if ( ${FindItem[Silken Augmenter's Pantaloons].ID} ) { 
/varset spellName Silken Augmenter's Pantaloons 
/varset spellType item 
} else { 
/varset spellName Tranquility 
} 
} 
/if ( ${spellName.Equal[mgb]} ) { 
/varset spellName Mass Group Buff 
/varset spellType alt 
} 
/if ( ${spellName.Equal[c5]} ) /varset spellName Voice of Quellious 
/if ( ${spellName.Equal[c6]} ) { 
/if ( ${Group} && ${Me.Book[Voice of Clairvoyance]} && ${Me.Buff[Clairvoyance].Duration}<=5 && ${Me.Buff[Voice of Clairvoyance].Duration}<=5 ) { 
/varset spellName Voice of Clairvoyance 
} else { 
/varset spellName Clairvoyance 
} 
} 
/if ( ${spellName.Equal[haste]} ) { 
/if ( ${Me.PctMana}>60 || !${FindItem[Romar's Pantaloons of Visions].ID} ) { 
/varset spellType gem9 
/if ( ${Me.Gem[${groupHasteSpell}]} ) { 
/varset spellName ${groupHasteSpell} 
} else { 
/varset spellName ${singleHasteSpell} 
} 
} else { 
/varset spellName Romar's Pantaloons of Visions 
/varset spellType item 
} 
} 
/if ( ${spellName.Equal[sov]} || ${spellName.Equal[speed of vallon]} || ${spellName.Equal[vallon]} ) { 
/varset spellName Romar's Pantaloons of Visions 
/varset spellType item 
} 
/if ( ${spellName.Equal[shissar]} || ${spellName.Equal[snake]} ) { 
/varset spellName Staff of the Serpent 
/varset spellType item 
} 
/if ( ${spellName.Equal[see invis]} ) { 
/varset spellName bracer of the hidden 
/varset spellType item 
} 
/if ( ${spellName.Equal[mr]} || ${spellName.Equal[grm]} || ${spellName.Equal[gmr]} || ${spellName.Equal[god]} || ${spellName.Equal[magic resist]} ) /varset spellName Guard of Druzzil 
/if ( ${spellName.Equal[lev]} ) /varset spellName Levitation 
/if ( ${spellName.Equal[sos]} ) /varset spellName Speed of Salik 
/if ( ${spellName.Equal[imp invis]} ) /varset spellName Improved Invisibility 
/if ( ${spellName.Equal[invis]} ) /varset spellName Cloud of Indifference 
/if ( ${spellName.Equal[ivu]} ) /varset spellName Invisibility versus Undead 
/if ( ${spellName.Equal[rune]} ) /varset spellName Rune of Zebuxoruk 
/if ( ${spellName.Left[3].Equal[pac]} ) /varset spellName Pacification 
/if ( ${Me.Book[illusion: ${spellName}]} ) /varset spellName illusion: ${spellName} 
/if ( ${spellName.Equal[tash]} ) { 
/varset spellName ${tashSpell} 
/varset spellType gem3 
} 
/if ( ${spellName.Equal[slow]} ) { 
/varset spellName ${slowSpell} 
/varset spellType ${slowType} 
} 
/if ( ${spellName.Equal[mez]} ) { 
/varset spellName ${mezSpell} 
/varset spellType gem7 
} 
/if ( ${spellName.Left[6].Equal[dispel]} ) { 
/if ( ${Me.Gem[recant magic]} ) { 
/varset spellName Recant Magic 
} else { 
/varset spellName ${dispellItem} 
/varset spellType item 
} 
} 
/for i 1 to 5 
/if ( ${spellName.Equal[${buffName${i}}]} ) /varset spellType ${buffType${i}} 
/next i 
/if ( ( ${spellType.Find[gem]} || ${spellType.Equal[spell]} ) && !${Int[${Me.Book[${spellName}]}]} ) { 
/if ( ${FindItem[${spellName}].ID} ) { 
/varset spellType item 
} else /if ( ${Me.AltAbility[${spellName}]} || ${spellName.Equal[${Int[${spellName}]}]} ) { 
/varset spellType alt 
} else { 
/return 
} 
} 
/return ${spellName},${spellType} 

Sub CheckRune(int tempHP) 
/if ( !${Me.Buff["${selfRune}"].ID} && !${Me.Buff["Eldritch Rune"].ID} && ${autoBuff} && ( ${Me.PctHPs}<=${tempHP} || ${Me.PctMana}==100 ) ) { 
/call AddToQueue "${selfRune}" 
} 
/return 

Sub SumPet 
/declare i int local 
/if ( ${Me.AltAbilityReady[persistent minion]} ) /alt activate 176 
/delay 10s !${Me.Casting.ID} 
/delay 5s ${Me.Pet.ID} 
/if ( !${Me.Pet.ID} ) { 
/call cast "${petSpell}" gem4 5s 
} 
/return 

| ======================== EVENTS ======================== 

Sub Event_Chat2(string chatType,string chatSender,string chatText) 
/if ( ${chatText.Equal[camp]} && ${chatType.Equal[tell]} ) { 
/if ( ${Me.Mount.ID} ) /dismount 
/camp desktop 
} 
/if ( ${ignoreList.Find[|${chatSender}|]} || ${chatText.Left[4].Equal[cast]} || !${autoBuff} || ${Spawn[${chatSender}].Type.Equal[NPC]} ) /return 
/if ( !${Defined[buffQueue]} ) /declare buffQueue string outer 
/if ( !${Defined[chatTimer]} ) /declare chatTimer float outer 
/declare chatTime float local ${MacroQuest.Running} 
/declare oldTarget int local ${Target.ID} 
/declare n int local 
/declare spellName string local 
/declare i int local 
/declare j int local 
/declare please bool local 
/declare inGroup bool local false 
/declare tempStr string local /\.,?!() 
/declare tempChar string local 
/declare tempStr2 string local 

/for i 1 to ${tempStr.Length} 
/varset tempChar ${tempStr.Mid[${i},1]} 
:remove_char 
/if ( ${chatText.Find[${tempChar}]} ) { 
/varset chatText ${chatText.Left[${Math.Calc[${chatText.Find[${tempChar}]}-1]}]} ${chatText.Right[-${chatText.Find[${tempChar}]}]} 
/goto :remove_char 
} 
/next i 

/varset n ${chatText.Count[ ]} 

:count_spaces 
/if ( ${chatText.Arg[${Math.Calc[${n}+1]}].Length} ) { 
/varcalc n ${n}+1 
/goto :count_spaces 
} 

/if ( ${chatText.Find[please]} || ${chatText.Find[pls]} || ${chatText.Find[plz]} ) /varset please true 
/if ( ${chatText.Arg[${n}].Find[please]} || ${chatText.Arg[${n}].Find[pls]} || ${chatText.Arg[${n}].Find[plz]} || ${chatText.Arg[${n}].Equal[me]} ) /varcalc n ${n}-1 
/if ( ${Spawn[pc ${chatText.Arg[${n}]}].Name.Left[3].Equal[${chatText.Arg[${n}].Left[3]}]} ) { 
/if ( !${Spawn[pc ${chatText.Arg[${n}]}].Name.Equal[${Me.Name}]} ) /varset chatSender ${Spawn[pc ${chatText.Arg[${n}]}]} 
/varcalc n ${n}-1 
} 

/if ( ${n}==1 && ${chatText.Arg[1].Equal[invite]} && ${GroupLeader.ID}==${Me.ID} ) { 
/tar pc ${chatSender} 
/if ( ${Me.Casting.ID} ) /call WaitCast 
/invite 
} 

/for j 1 to 5 
/if ( ${Group.Member[${j}].Name.Equal[${chatSender}]} ) /varset inGroup true 
/next j 

/if ( !${Spawn[${chatSender}].ID} ) /return 

/for i 1 to ${n} 
/if ( ( ${chatText.Equal[plead]} && !${Spawn[pc ${chatSender}].Class.PureCaster} ) || ${chatText.Arg[${i}].Left[5].Equal[haste]} || ${chatText.Arg[${i}].Left[3].Equal[sov]} || ${chatText.Arg[${i}].Left[5].Equal[speed]} || ${chatText.Arg[${i}].Left[2].Equal[vq]} || ${chatText.Arg[${i}].Left[4].Equal[pant]} || ( ${chatText.Arg[${i}].Left[6].Equal[vallon]} && !${chatText.Find[zek]} ) ) { 
/if ( ${Me.Gem[speed of salik]} && ${Me.PctMana}>50 ) { 
/call AddToQueue "sos,${chatSender}" 
} else { 
/call AddToQueue "sov,${chatSender}" 
} 
} 
/if ( ${chatText.Arg[${i}].Left[3].Equal[VoQ]} || ${chatText.Arg[${i}].Left[2].Equal[c5]} ) { 
/call AddToQueue "c6,${chatSender}" 
} 
/if ( ( ( ${chatText.Equal[plead]} && ${Spawn[pc ${chatSender}].Class.CanCast} ) || ${chatText.Arg[${i}].Left[2].Equal[c6]} || ${chatText.Arg[${i}].Equal[c]} || ${chatText.Arg[${i}].Left[7].Equal[clarity]} || ${chatText.Arg[${i}].Left[8].Equal[clairity]} || ${chatText.Arg[${i}].Left[5].Equal[crack]} ) && !${chatText.Find[i c]} && !${chatSender.Equal[runningbear]} && !${chatText.Find[AE c]} && !${chatText.Find[inc c]} ) { 
/if ( ${chatSender.Equal[vitesse]} ) { 
/chat tell Vitesse die pls! 
} else { 
/call AddToQueue "c6,${chatSender}" 
} 
} 
/if ( ( ( ${chatText.Arg[${i}].Left[3].Equal[god]} || ${chatText.Arg[${i}].Left[4].Equal[druz]} || ${chatText.Arg[${i}].Left[2].Equal[mr]} ) && ( ${please} || ${chatText.Find[can i get]} ) ) || ${chatText.Arg[${i}].Left[3].Equal[gmr]} || ${chatText.Arg[${i}].Left[3].Equal[grm]} || ( ${chatText.Arg[${i}].Left[5].Equal[magic]} && ${chatText.Arg[${Math.Calc[${i}+1]}].Find[resist]} ) ) { 
/call AddToQueue "mr,${chatSender}" 
} 
/if ( ${chatText.Arg[${i}].Equal[gom]} ) { 
/call AddToQueue "gom,${chatSender}" 
} 
/if ( ${chatText.Arg[${i}].Equal[insight]} ) { 
/call AddToQueue "insight,${chatSender}" 
} 
/if ( ${chatText.Arg[${i}].Left[2].Equal[c1]} ) { 
/call AddToQueue "c1,${chatSender}" 
} 
/if ( ${chatText.Arg[${i}].Left[2].Equal[c2]} ) { 
/call AddToQueue "c2,${chatSender}" 
} 
/if ( ${chatText.Arg[${i}].Left[2].Equal[c3]} ) { 
/call AddToQueue "c3,${chatSender}" 
} 
/if ( ${chatText.Arg[${i}].Equal[shissar]} ) { 
/call AddToQueue "shissar,${chatSender}" 
} 
/if ( ( ${Me.Book[illusion: ${chatText.Arg[${i}]}]} || ${Me.Book[illusion: ${chatText.Arg[${i}]} ${chatText.Arg[${Math.Calc[${i}+1]}]}]} ) && ( ${please} || ${n}==1 || ${chatText.Arg[${Math.Calc[${i}+1]}].Left[2].Equal[me]} || ${chatText.Arg[${Math.Calc[${i}+2]}].Left[2].Equal[me]} ) ) { 
/if ( ${inGroup} ) { 
/if ( ${Me.Book[illusion: ${chatText.Arg[${i}]}]} ) { 
/call AddToQueue "${chatText.Arg[${i}]},${chatSender}" 
} else { 
/call AddToQueue "${chatText.Arg[${i}]} ${chatText.Arg[${Math.Calc[${i}+1]}]},${chatSender}" 
} 
} 
} 
/next i 

/varcalc chatTimer (${MacroQuest.Running}-${chatTime})/1000 
/echo ${chatTimer} secs to parse chat 
/return 

Sub Event_AutoStun(string line,string toggle) 
/if ( !${Defined[useStun]} ) /declare useStun int outer 0 
/if ( ${toggle.Equal[on]} ) { 
/varset useStun 1 
} else { 
/varset useStun 0 
} 
:stun_loop 
/if ( ${useStun} ) { 
/if ( ${refreshTime} ) /call ManaRobe 
/call Cast "Color Cloud" 
/call Cast "Color Slant" 
/if ( ${Macro.Return.Equal[CAST_INTERRUPTED]} ) /call Cast "Color Flux" 
/if ( ${Macro.Return.Equal[CAST_NOTREADY]} ) /call Cast "Color Shift" 
/if ( ${Macro.Return.Equal[CAST_NOTREADY]} ) /call Cast "Color Skew" 
/call CheckRune 90 
/doevents AutoStun 
/doevents chat 
/doevents setvars 
/goto :stun_loop 
} 
/return 

Sub Event_RageOn(string line) 
/if ( ( ${line.Find[${Spawn[${mobID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]} ) && ${Me.Pet.ID} ) { 
/echo calling off pet... 
/pet back off 
} 
/return 

Sub Event_RageOff(string line) 
/if ( ( ${line.Find[${Spawn[${mobID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]} ) && ${Me.Pet.ID} ) { 
/target id ${mobID} 
/pet attack 
} 
/return 

Sub Event_Mez 
/if ( ${Defined[mezTimer${Target.ID}]} ) /deletevar mezTimer${Target.ID} 
/call Mez 
/return 

Sub Event_Gate(string line,string mobName) 
/if ( !${Me.Casting.Name.Equal[${mezSpell}]} ) /call Interrupt 
/call Cast "${mezSpell}" gem7 3s CheckForAdds 
/return 

Sub Event_Ranger 
/call IllusionRanger 
/return__________________

another idea to improve the cleric macro is telling cleric in tells to rez a target... not sure how that would be done but if you could sent tell to the cleric to rez a target. example "/tell cleric rez <targetname>" and then the cleric would equip the 1.0 epic and target the corpse you sent a tell about and then clicked rez stick and then back to what ever primary was used when sent the tell.
 
I dind't post any full macro's or utilities like that, sicne this was a Event's thread.

As for adding one of my events to any macro's, talk to the devloper of that macro, or just code it in your self (which is really simple).

Krust is my macro of choice, It handles buff requests and the like.
 
Last edited:
Hardone or anyone else able to update the hitallmobs.mac to utilize a normal warrior (not shrouded) using the throw stone discipline ?

I tried using this macro with a shroud and my normal warrior and it seems to do everything except actually use the ability. Will target the mobs, will display a total mobs hit count at end, but never throw's a stone.

Any help would be great !


thanks !!
 
Some abilities, and macro's using them is broken currently, but for a quick fix that may work for you, change all occurences of AltAbility to CombatAbility, and all /aa act "ABILITY_NAME" Alt to /doability ABILITY_NAME.
 
thanks, I'll make those change's and give it a go...

Macro always gave me that issue I stated previously, ended up not using it and just pl'ing my cleric using ae's :D

waited on TSS to be released to start working on a warrior, figure new race be nifty.


thanks again
 
A couple usefull Events

Users who are viewing this thread

Back
Top
Cart