• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Request for...your requests (Macros) (1 Viewer)

Status
Not open for further replies.
C

Ccomp5950

What macros would you like to see?

Respond with what macros you'd like to see and those of us that can will try and work on them, if you have some really great idea for something macroable but hasn't been implemented yet, I'll give you 50 redcents just for suggesting it.

Nothing to simple, nothing to hard (well maybe).

Even if it's a "Hey, can you make a macro that casts summon food and drink until it's got X amount?" or "Hey, can you make a macro that camps a specific camp in XXX zone until it loots XXX item"
 
Looking for a Shadow knight Macro that will:

Keep his buffs up.

Pull to a specific radius using snare or bow but once back to camp needs to snare if pulled with bow.

Taunt and stick ect. I'm sure I can manage with mq2melee if its easier to make the macro.

I haven't made a macro in 2 years+ Any help would surely be appreciated.
 
K i got two ideas One is a macro the other would be a plug in I'm guessing. I was wondering if a macro could be built that would allow a wizzy to Afk beam pull hive missions. One that would gather a 8 mob train and then kite it in circles until dead, even if it only did the outer ground and nothing in tunnels or towers. It would also nd to be able to keep kiting while pop in harvest, with the use of prevent speed i can harvest on the run. I dont know was just a thought.

And for my second question is there a way a plug in or offset could allow a caster to have Gorm ( gift of radiant mana) up at all time or Once it procs keep it up ? :D
 
mage afmacro... with the following parts to it....

1a. gets on mount by itself (if outdoors) if indoors it clicks aa water elemental form from aas and sits down to med if low on mana

1. listens to a master bot for /move up /follow /stop and /buff on request comands..

2. summons pet, shrinks the pet and then pockets spare pet after buffing using suspend minion aa

3. ability to summon and equip the pet with summoned weapons

4. second part ... part for pet buffs from items and from buffs..(about 5 reg buffs and three item buffs one of which is mage epic clicky.)

5. section for the mage to buff himself with 5 spell buffs and probally 4 click buffs from items.

6.assists ma or group delegated ma for targeting of inc mob. then at a chosen hp (say 98 perc) the mage will cast up to 3 debuffs on the inc mob and send in pet...

7. at a different assigned hps (85hps) mage will then twist up to 3 nukes..

9. if while nuking gift of exsquisitely radiant mana fires off it will then cast a spell of your choice... for the gorm effect.

9a.summon and use clicky nukes when they are up as well as clicking any clicky nukes you may have in your inventory.

10. pet healing section so if pet gets below certain hp mage will cast granite stance on the pet and then cast a heal on the mage pet.

11. if there is a named or called for by ma say /swarm pet it would cast the swarm pet aa to attack the mob.

12.section to coh players by requests and mana rod apon request...

13. see above need a way to either be anchored to a spot or follow person if requested.

14. auto accepts a rez and loots body apon death.



well you guys said you wanted a challenge.
 
Okay, So here is my current macro.

Rich (BB code):
Sub Main
        :loop
    /call Disc
    /call Target
    /if (${SpawnCount[pc radius 2000]}>=2) /call FD
    /delay 3s
            /goto :loop
        /return





sub Target
/target npc Dijo
/delay 4s ${Target.ID}
/if (${Target.ID})    /warp target
/attack on
} else {
/tar npc dijo
/delay 8s ${Target.ID}
/if (${Target.ID})    /warp target
/attack on
}
/return    

sub Disc
/keypress 5
/return


sub FD
:FDLoop
/beep
/if (${SpawnCount[pc radius 2000]}>=2 && ${Me.Standing}) /doability "Feign Death"
/if (${SpawnCount[pc radius 2000]}<=1) {
/call Stand
/return
}
/delay 10s
/goto :FDLoop


sub Stand
:Stand
/if (!${Me.Standing}) /stand
/delay 1s ${Me.Standing}
/if (!${Me.Standing}) /goto :Stand
/return

What it does is, Target's a mob (named dijo), warps to them and kills them.. then targets next dijo, warps to them and kill them..

However, i'd like to be able to effectively cast my disc (/keypress 5 currently.. but i'd like if it was like.. /if ThisDiscisNotUp, /keypress 5..)

I'd also like a HP check where if i get below 50%hp i cast mend.

Also the targetting needs to be worked out... if a dijo is not up it'll still try to /warp to nothing.. so if there could be a /if Targetnotup /goto :wait or something.....

If you have any other suggestions, that would be wonderful. Thanks!
 
Ok, I'm heading to work,

Devlin: yours is easy, what is the disc called.

nyghteyes: yours shouldn't be that hard either, what is the snare and other spells used called.

Nosaj23: as for your buff question no that is all server side and I have ZERO experience with wizards so someone else is going to have to handle it as I'd probably make something akin to "Kill me over and over PLSKTHX!".mac I'll work on a shell or something so someone else can come in and fill it up though.

chance98: Good GOD son, I'll get back with you or if someone feels like taking it on they can.
 
a rogue macro i'd like to have:

a simple one to hit my evade hotkey when i get hit my a mob - would have a lot of usefulness in groups - but to keep from spamming, have it on a 10 sec delay if my evade fails or doesn't drop my aggro
 
Ok, I'm heading to work,

Devlin: yours is easy, what is the disc called.

nyghteyes: yours shouldn't be that hard either, what is the snare and other spells used called.

Nosaj23: as for your buff question no that is all server side and I have ZERO experience with wizards so someone else is going to have to handle it as I'd probably make something akin to "Kill me over and over PLSKTHX!".mac I'll work on a shell or something so someone else can come in and fill it up though.

chance98: Good GOD son, I'll get back with you or if someone feels like taking it on they can.

hey now didnt you say you were up for a challenge.. here ill even help... i will offer a 100 dollar donation to anyone who can produce such masterpiece...

im big fan of crystanes crytanuke and rusty's mage macro... a talented person can probally make the edits to make them work like a charm for this.. only one request i can ask is please make it to create a ini folder so i can edit the spells in the future...

serious 100dollar donation to any talented macro writers for this one..

personally great way to get this site a buzzing would be a nice custom macro for each individual class..
 
hey now didnt you say you were up for a challenge.. here ill even help... i will offer a 100 dollar donation to anyone who can produce such masterpiece...

im big fan of crystanes crytanuke and rusty's mage macro... a talented person can probally make the edits to make them work like a charm for this.. only one request i can ask is please make it to create a ini folder so i can edit the spells in the future...

serious 100dollar donation to any talented macro writers for this one..

personally great way to get this site a buzzing would be a nice custom macro for each individual class..

100 dollars you say, for a macro, and with just the limitations you put in your above post? I might just have to do that, as long as no one beats me to it of course.

Do realize that offering 100 dollars and someone meeting the above request if you pull out after someone has put in the time to create such a macro you will be banned from NotAddicted. We like to hold people to their word here.
 
a rogue macro i'd like to have:

a simple one to hit my evade hotkey when i get hit my a mob - would have a lot of usefulness in groups - but to keep from spamming, have it on a 10 sec delay if my evade fails or doesn't drop my aggro

Working on yours now, trying to see if I can write it in 10 lines or less! (Ok not really but you know)

Edit: Wait you want it to hit a hotkey that has 5 lines in it or just the "Evade" button.

IE: "It's not an ingame macro / hotkey, just hit Evade?"

Either way: Here is your request:
http://forums.notaddicted.com/showthread.php?p=171820
 
Last edited:
Looking for a Shadow knight Macro that will:

Keep his buffs up.

Pull to a specific radius using snare or bow but once back to camp needs to snare if pulled with bow.

Taunt and stick ect. I'm sure I can manage with mq2melee if its easier to make the macro.

I haven't made a macro in 2 years+ Any help would surely be appreciated.

You are next in the shoot, though you were the first to post (sorry about that the other 2 were much easier.)

If you can, give me the spell names and buff names or I can just have a few /declares at the top to work off of.
 
You are next in the shoot, though you were the first to post (sorry about that the other 2 were much easier.)

If you can, give me the spell names and buff names or I can just have a few /declares at the top to work off of.

Sorry about posting late, not worried about someone elses first just happy its being looked at :)

What I can remember off the top of my head here.(Citrix wont let me in allahkazam) Some are older spells but I can update them once the mac is functional.

Snare : Festering Darkness
Buffs: Cloak of Luclin, Shroud of Discord, Pact of Decay,
Pet: Son of Decay (Pet buff: Rune of Decay)
Battle Buffs:Theft of hate,Challenge for power.
Lifetap: Touch of Draygun

Maybe a spot for a few potions. Haste/Heal pot if taps dont cut it.

Soul Abrasion disc if life gets too low?


Thanks again for taking a look!
 
I'd like a paladin macro for soloing mobs that need to be snared.

Mostly I'd like it to do one main thing and two sub ideas.

#1. Switch in Anklesmasher + Shield (or activate the bandolier for it) when I first attack a mob, then once snare actually lands, switch to my dps two hander. That's the most important thing (and I have an audio trigger for it, but my computer doesn't have sound at the moment so watching carefully for the successful snare message is kind of annoying.)

#2. Keep self buffs, clicks and aura up. (Not as important as above although would be super.)

I've been trying to manage the clicks with mq2melee, but since I actually only wear one of the clicks full time, I've been having a hard time of it.

Self Buffs: The ones that have a short duration are the most important, the hp buffs are easy to keep up since they last a longer time. These buffs should be buffed outside of combat.

- Silvered Fury
- Ward of Tunare
- Blessed Aura

Clicks (holyshit ones/in combat or out):
- Fabled Shrunken Goblin Skull Earring (instant cast of Aura of Rage)
- Pauldrons of Ferocity (instant cast of Aura of Battle)
- Velium Coldain Insignia Ring (instant cast of Shield of the Eighth)
- Phylactery (instant cast of Soul Clasp, this one does not have to be equipped)
- Blazing Vambraces (instant cast of Fire Shield, this one requires being equipped and myself to be targeted)
- The Skull of Den Lord Rakban (instant cast of Aura of Pure Arcanum)

Out of combat clicks:
- Breastplate of the Void (this is the shaman focus line, 2.5 second cast Heart of the Void, for when I don't have shaman focus, must be equipped)
- Band of Primordial Energy (Form of Defense II, 4.0 second cast. This one I've actually gotten MQ2Melee to handle since I actually wear it and could downshit it.)
- Silver Hoop of Speed (Primal Guard, 3.5 second cast)
- Girdle of Intense Durability (Shield of Torment, 5.0 second cast)

Potions:
I'd like to have potions kept up as well if possible:
Distillate of Alacrity X (if I don't have haste)
Distillate of Clarity XI (if I don't have kei or better)
Distillate of Skinspikes VI (I'd rather have this than the coldain ring since these are so cheap)

(Maybe the regen and kitty crack potions as well.)

#3. Keep myself healed and if mana is excellent, nuke.

Target self and cast heal over time (Pious Cleansing) when I go below 85% health but above 65.

Target self and cast fast heal (Light of Piety) whenever I go below 65%.

If I go below 50%, activate epic 1.5 click Flames of Redemption, Guard of Righteousness disc, and click Oathbound Breastplate (from inventory) and then continue with fast heal until above 65%.

Below 30%, use Hand of Piety AA and a HoT Potion, below 20% use Lay Hands AA. (MQ2Melee is supposed to be able to do this but I've not had it work yet.)

If above 85% health and 75% mana, then use nuke Last Rites or Spurn Undead.


If the anklesmasher script works well, none of the mobs should ever be running, but perhaps for safety, if the mob is running we could have the paladin cast Shackles of Tunare to root him a moment (and hope for some slays.)

Then when not in combat, sit.


If could get these items done, then all I would have to do is pull the mob and then I could go do my homework while your macro kills them. That would be tits.
 
Last edited:
Hi Gooberish: Meet my weekend project, your request. I'm sure you two know each other very well already so I'll just leave you two to talk.

Bed time!

Also: Nyghteyes I'm half way done with a quick and dirty beta version, I should be done tommorow.

I had to play E-Lawyer to my employer screwing me out of paying me to travel to offsite locations. Not very often I have to write a *#*@ing paper to get things done in the Pizza business.
 
gooberish this might get you a starting point... and macro to begin to alter.. i use it everyday and it keeps up buffs great. it switches to range to pull so im sure it could be altered to swap out your snare as necessary... only problem is you usually need to target someone to turn it on...


its one of crystanes masterpieces....
 
Well u said for any ideas so here one. Don't know if there is one already but i have seen the nagi macro which is suppose to be watched, But what about a 70.3. They are not that hard and are boxed easily. They give a decent about of Xp for the game time also. Was just a thought.:confused:
 
I think most people with afk mission macros like to keep them away from the public since eventually there will be too much abuse to remain a safe macro.

Personally if you were looking for something like that I would hire a good writer to build and proof it for you. That way it remains in only a few peoples hands and doesn't get you much attention. I could be wrong but just seems to be what happens to those macros after a few months.

I am curious what that is worth though.
 
I have one in the sea serpents for katta. It requires a bard to pull, although i guess it could be altered for a monk. As well as the rest of the boxes to be slaved to the puller.
 
yeah, well it does take all 6 boxes because sometimes you can't single-pull or split the named mobs. So there's a possibility of a 2-named and 1 trash in a single pull
 
i'm looking for a macro for my necro to fear kite FH halls i have tryed working with the other macro for that and cant seem to get it to do what i want

1) target any (a squeaking rat) with in a radius of 70
2) cast my snare ( Decerating Darkness)
3) fear the mob ( unholy howl)
4) put my 4 dots on him wether fear landed or not ( fang of death, chaos venom, Pyre of mori, and severan's rot)
5) check if mob is feard if resited try recast now
6) check mana if 20 or less to med
7) to use my aa deaths peace if HP get under 25%
i dont need warps or any thing like that wich is where i think i am runing in to problems with the macro that comes with the compile
 
Ive been working on a beastlord spell assist macro to use with eq2melee and it works great but I cant for the life of me figure out how to integrate a pulling routine that does the below.

1. Park Bst pet at camp
2. Select a target from along a path or from a radius around the camp
3. Pull a mob with a slow
4. Return to camp
5. Pause pull routine while eq2melee kills mob
6. Pull all mobs in camp
7. /sit till mana is at set% then resume pulling

If you want i can post my spells assist macro.
 
No, I had yet another life changing event and left a 50k /yr job to go back to college. My EQ time dropped to the point I had no time to play.

I need to get back on these, sorry I lost steam. I'll see if I can get on these tomorrow after a funeral I have to go to.

I owe nytheyes a macro for his SK, then I need to work on gooberish's. Nyte's is pretty much just a shell of one I've already written, I need to add in the class specific stuffs for it and then it should be ready (and remove the monk lull portion of the pulling code). I started out using someone elses macro and doing it but without being able to play a class that it would work with the bugs weren't as apparent to me.

Also: /makecamp portion of Moveutils is quite possibly the most horrid thing to include in a macro if it's for your puller.
 
I do need to post a couple macros I've made for personal use once I clean them up a bit

(I have a tendency to write colorful :goto names and variable names if a bug I'm trying to fix eludes me or the portion I'm writing has me pissed off because it screwed up so bad my characters died.)
 
Hiyas,

I have 3 simple requests:

1 ) I would like a very simple Mage macro that will assist tank, send pet, then nuke until a certain percentage of mana or until mob dead. If possible also use Host of Elements AA when available. Then when mob is dead, sit and end macro. I will be starting the macro when I want it with a hot key. If mana check fails sit.

2) I would also like a very simple (I hope) Druid macro that will check the tank and at a certain health level cast a heal, then if no heal or after heal check assist the tank and snare, dot and then nuke until a certain mana level. Then when mob is dead, sit and end macro. I will be starting the macro when I want it with a hot key. If mana check fails sit.


3) In addition I would like a simple (again I hope) Shaman macro that will assist the tank, send pet, use the Turgur's Swarm AA, cast Talisman of the Cougar, then cast a Dot, then sit and end macro. I will be starting the macro when I want it with a hot key.

I six box by 2 boxing on 3 computers, my other chars are Chanter, Cleric and Tank is Pally. I don't want to turn over full control to macros for everything, instead i would just like it to come in and take over for the battle. The macros I have found here all want to take over buffing, moving and decisions that I want kept in my hands. the spell names, AA names don't have to be used, I can put in the names, the spell gem number and the do ability

What would be really cool is that is you could create an MQ2Event where these are all started by the tank making a comment in group (IE when tank say "Incoming" in group these three chars all press hot key number whatever to start the macros). I use mq2slave, but because you can't simultaneously make 3 tells at once, its not as effective as what I'm requesting.

If you can create the outline for the mage macro, i sure I can alter it for the other two to make them work. Thanks in advance for this
 
Was wondering how difficult it would be to throw together a macro that basically would just hop through specific zones and attempt to give all the npcs a particular item. I know, it's stupid, but it sounds fairly straightforward for a guy (me) who isn't extremely macro savvy. I can follow other people's logic well enough to edit some macros here and there for my purposes, but writing from the ground up is a challenge.

Thanks ahead of time for any help folks could give!
 
Need help tweaking my Mage Macro, At this point everything works good except that when i set the Pet siphon spell to Elemental Symbiosis Rk. II it will continue to cast it over and over and never stop (it worked fine before i upgraded it to Rk.II). If i switch it back to Elemental Simulacrum it works fine. Also the Mod rod part does the same thing, no matter what one i use.

Also it wont sit when it needs mana if that is a possibility and i would like to add the ability elemental form water to his self buffs.

Thanks in advanced if you can help me out.


Mage Macro

HTML:
| mage.mac
| By Rusty~
| Last update 11/04/2004
|
| /macro mage [ma name][sa name][radius #][nuke fire|magic|bolt][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. It will then send in pet and debuff the mob
|   if debuffs are enabled. It will then wait till mob is under the spcified hp, or the specified time
|   has expired since the tank has engaged, then it will start nuking.
|   This will also keep self buffs up, keep pet up (with weapons, belt, and mask), and buff and rod
|   people that ask (with the spells specified in ini). Will coth people that ask for it via tells
|
|
|   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=rod,modrod
|      BuffName1=Magi`kot's Pants of Convergence
|      BuffType1=item
|
|   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 respectively
|
|   For each self buff and clicky buff, there's a place to put all the buffs that don't stack with it:
|
|      SelfBuff1=Phantom Shield
|      SelfBuffNoStack1=Protection of the Nine,Blessing of the Nine,Steeloak Skin
|
|   *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 on|off                            - turns auto buffing on or off                                  |
|  /debuff on|off                          - turns auto debuffing 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             |
|  /companion on|off                       - sets auto pet summon on or off                                |
|  /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                                                        |
|  /nuketype fire|magic|bolt [spellname]   - sets your current nuke to the specified type                  |
|                                          - include spell name to set the nuke for that type              |
|  /ds on|off                              - turns group ds on or off                                      |
|----------------------------------------------------------------------------------------------------------+

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

#turbo 40

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

#event Coth "#1# tells you, 'coth'"
#event Coth "#1# tells you, 'coth #2#'"
#event Coth "#1# told you, 'coth'"
#event Coth "#1# told you, 'coth #2#'"
#event Gate "#1# gates#*#"
#event Goto "[MQ2] goto #1#"
#event PetWeps "#1# #*#'#*#pet weps#*#'"
#event RageOff "#*#is no longer enraged#*#"
#event RageOn "#*#has become ENRAGED#*#"

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 1 /mount
   /call DeclareIniVar useDebuff int Settings 1 /debuff
   /call DeclareIniVar nukeMode int Settings 1 /nuke
   /call DeclareIniVar useCharm int Settings 0 /charm
   /call DeclareIniVar useDPS int Settings 0 /dps
   /call DeclareIniVar usePet int Settings 1 /companion
   /call DeclareIniVar privateChannel string Settings " "
   /call DeclareIniVar channelAnnounce int Settings 0
   /call DeclareIniVar autoAnnounce string Settings 1 
   /call DeclareIniVar noInterrupt int Settings 0
   /call DeclareIniVar useManaStone int Settings 0
   /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 25 /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 useGroupDS int Settings 1 /ds   
   /call DeclareIniVar clarityBitch string Settings
   /call DeclareIniVar spellSet string Settings "default"
   /call DeclareIniVar maloDuration string Settings 19m
   /call DeclareIniVar resistsTillMala int Settings 3
   /call DeclareIniVar resistsTillQuit int Settings 6

   /call DeclareIniVar nuke1 string Spells "Blade Strike"
   /call DeclareIniVar nuke2 string Spells " "
   /call DeclareIniVar magicNuke string Spells "Blade Strike"
   /call DeclareIniVar fireNuke string Spells "Sun Vortex"
   /call DeclareIniVar boltNuke string Spells "Firebolt of Talon"
   /call DeclareIniVar shielding string spells "Shield of Maelin"
   /call DeclareIniVar petSpell string Spells "Child of Water"
   /call DeclareIniVar malosiniaSpell string Spells "Veil of Lost Hopes"
   /call DeclareIniVar malosiniaType string Spells "item"
   /call DeclareIniVar malaSpell string Spells "Mala"
   /call DeclareIniVar malaType string Spells "gem5"
   /call DeclareIniVar summonedWepSpell string Spells "Summon Dagger of the Deep"
   /call DeclareIniVar summonedWepType string Spells "gem5"
   /call DeclareIniVar summonedBeltSpell string Spells "Girdle of Magi'Kot"
   /call DeclareIniVar summonedBeltType string Spells "gem5"
   /call DeclareIniVar summonedMaskSpell string Spells "Muzzle of Mardu"
   /call DeclareIniVar summonedMaskType string Spells "gem5"
   /call DeclareIniVar groupDSSpell string Spells "Maelstrom of Ro"
   /call DeclareIniVar singleDSSpell string Spells "Flameshield of Ro"
   /call DeclareIniVar siphonSpell string Spells "Elemental Symbiosis Recourse Rk. II"
   /call DeclareIniVar runeSpell string Spells "Shield of Auras"
   /call DeclareIniVar runeType string Spells "item"
   /call DeclareIniVar petHaste string Spells "Burnout V"
   /call DeclareIniVar petShrinkSpell string Spells "Algae Covered Stiletto"
   /call DeclareIniVar petShrinkType string Spells "item"
   /call DeclareIniVar rodSpell string Spells "Magi`kot's Pants of Convergence"
   /call DeclareIniVar rodType string Spells "item"
   /call DeclareIniVar elementalType string Spells "water" /elemental

   /call DeclareIniVar selfBuff1 string Spells "Phantom Shield"
   /call DeclareIniVar selfBuffNoStack1 string Spells "Protection of the Nine,Blessing of the Nine,Steeloak Skin,Blessing of Steeloak"
   /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 "rod,modrod"
   /call DeclareIniVar buffName1 string Spells "Magi`kot's Pants of Convergence"
   /call DeclareIniVar buffType1 string Spells "item"
   /call DeclareIniVar buffList2 string Spells "ds,dmg shield,damage shield"
   /call DeclareIniVar buffName2 string Spells "ds"
   /call DeclareIniVar buffType2 string Spells "gem6"
   /call DeclareIniVar buffList3 string Spells " "
   /call DeclareIniVar buffName3 string Spells " "
   /call DeclareIniVar buffType3 string Spells " "
   /call DeclareIniVar buffList4 string Spells " "
   /call DeclareIniVar buffName4 string Spells " "
   /call DeclareIniVar buffType4 string Spells " "
   /call DeclareIniVar buffList5 string Spells " "
   /call DeclareIniVar buffName5 string Spells " "
   /call DeclareIniVar buffType5 string Spells " "

   /call DeclareIniVar hpRobe string Items "${InvSlot[chest].Item.Name}"
   /call DeclareIniVar clicky1 string Items " "
   /call DeclareIniVar clickyNoStack1 string Items " "
   /call DeclareIniVar clicky2 string Items " "
   /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 "Wand of Temporal Power"
   /call DeclareIniVar invisItem string Items " "
   /call DeclareIniVar dispellItem string Items " "
   /call DeclareIniVar normalMainhand string Items "${InvSlot[mainhand].Item.Name}"
   /call DeclareIniVar normalOffhand string Items "${InvSlot[offhand].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
   /declare petID2 int outer 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[debuff]} ) {
         /call SetIniVar useDebuff Settings 1
      } else /if ( ${Param${i}.Equal[nodebuff]} ) {
         /call SetIniVar useDebuff Settings 0
      }
      /varcalc i ${i}+1
      /goto :check_params
   }

   /call SwapStatFood 1

   /if ( ${autoAnnounce} ) /announce on

   /echo Auto Mage Mode Activated
   /if ( ${nukeMode} || ${useDebuff} ) {
      /echo Main Assist: ${mainAssist}
      /if ( ${Bool[${secondAssist}]} ) /echo Secondary Assist: ${secondAssist} (if ${mainAssist} dies)
   }
   /if ( ${nukeMode} || ${useDebuff} ) /echo Will ${If[${useDebuff},malosinia ,]}${If[${nukeMode} && ${useDebuff},then ,]}${If[${nukeMode},start nuking ,]}at ${minHP}%
   /if ( ${autoBuff} ) /echo Auto Buff is enabled.
   /if ( ${useMount} ) /echo Mount is enabled.
   /if ( ${manaRobeMode} ) /echo ManaRobe Mode: ${manaRobeMode}
:wait_for_target
   /if ( !${petSpamTimer} ) {
      /pet hold
      /varset petSpamTimer 50
   }
   /if ( ${nukeMode} || ${useDebuff} ) /echo Waiting for target...
   /varset validTarget 0
:wait_for_target2
   /if ( ${Spawn[pc ${secondAssist}].ID} && ( !${Spawn[pc ${mainAssist}].ID} || ${Spawn[corpse ${mainAssist}].ID} ) ) {
      /varset mainTank ${secondAssist}
   } else {
      /varset mainTank ${mainAssist}
   }
   /if ( !${Corpse.Open} && ${Spawn[${mainAssist}].NearestSpawn[npc radius ${Math.Calc[${minRadius}*2]}].ID} && ( ${nukeMode} || ${useDebuff} ) ) {
      /if ( ${Me.Casting.ID} ) /call WaitCast
      /assist ${mainTank}
      /varset oldTarget ${Target.ID}
      /varset tempTimer 5
   :wait_for_assist1
      /call CheckTarget
      /if ( ${tempTimer} && !${validTarget} ) /goto :wait_for_assist1
   }
   /call CheckTarget
   /if ( !${validTarget} || ( !${nukeMode} && !${useDebuff} ) ) {
      /call CheckPet
      /call CheckPet2
      /doevents
      /call CheckBuffs
      /call CheckLoc
      /call ManaRobe
      /delay 0
      /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}
   /varset nukeWaitTimer 0
   /if ( ${Defined[waitTimer${mobID}]} ) /deletevar waitTimer${mobID}
   /declare waitTimer${mobID} int outer -1
   /varset newAdds 0
:nuke_loop
   /varset addIndex 1
:check_add_loop
   /call CheckForAdds
   /if ( ${addIndex}>1 ) /goto :check_add_loop
   /call CheckPet
   /call CheckPet2
   /if ( !${Spawn[${mobID}].Type.Equal[NPC]} && ( !${Spawn[${mobID}].Type.Equal[pet]} || ${Spawn[${mobID}].Master.Type.Equal[pc]} ) ) {
      /echo Target Dead!
      /if ( ${cleanUp} ) /call CleanUp ${mobID}
      /goto :wait_for_target
   }
   /target id ${mobID}
   /if ( ${Spawn[${mobID}].Distance3D}<=${minRadius} && ${Spawn[pc ${mainTank}].NearestSpawn[radius ${Spawn[${mobID}].MaxRangeTo} id ${mobID}].ID} && ${waitTimer${mobID}}<0 ) {
      /deletevar waitTimer${mobID}
      /declare waitTimer${mobID} timer outer ${engageDelay}
   }
   /if ( ( ${waitTimer${mobID}}>=0 || ${engaged} ) && ${useDebuff} ) /call DebuffMobs
   /target id ${mobID}
   /if ( ( ${Target.PctHPs}>${minHP} && ${waitTimer${mobID}} ) || !${assistWaitTimer} ) {
      /if ( ${Spawn[pc ${secondAssist}].ID} && ( !${Spawn[pc ${mainAssist}].ID} || ${Spawn[corpse ${mainAssist}].ID} ) ) {
         /varset mainTank ${secondAssist}
      } else {
         /varset mainTank ${mainAssist}
      }
      /assist ${mainTank}
      /if ( ${useManaRobe} && ${refreshTime}>2 ) /call ManaRobe
      /varset tempTimer 8
   :wait_for_assist
      /call CheckPet
      /if ( ${tempTimer} && ${Target.ID}==${mobID} ) /goto :wait_for_assist
      /if ( ${Target.ID} && ${Target.ID}!=${mobID} ) /goto :wait_for_target
      /varset assistWaitTimer 5s
      /goto :nuke_loop
   }
   /if ( !${engaged} ) {
      /varset engaged 1
      /echo Engaging >> ${Target.DisplayName} <<
   }
   /if ( ${Me.Pet.ID} && !${petAttacking} && !${Me.PetBuff[elemental silence]} ) {
      /pet attack
      /varset petAttacking true
   }
   /if ( ${useManaRobe} && ${refreshTime}>2 ) /call ManaRobe
   /if ( !${Spawn[${mobID}].Type.Equal[NPC]} && !${Spawn[${mobID}].Type.Equal[pet]} ) /goto :wait_for_target
   /doevents timer
   /if ( !${petOff} && ( ${maloTimer${mobID}}<0 || ${maloTimer${mobID}}>1 || !${useDebuff} )  ) {
      /doevents
      /call CheckBuffs
      /target id ${mobID}
      /if ( ${nukeMode} && ${Target.LineOfSight} && !${Me.TargetOfTarget.Name.Equal[${Me.Name}]} && !${nukeWaitTimer} &&  ( ${Me.PctMana}>=${nukeMana} || ${nukeMode}==2 ) && ( ${Target.Type.Equal[NPC]} || ${Target.Type.Equal[pet]} ) ) {
         /call Cast "${nuke1}" gem4 0 CheckPet
         /if ( ${Macro.Return.Equal[CAST_NOTREADY]} && ${Me.Gem[${nuke2}]} ) /call Cast "${nuke2}" gem3 0 CheckPet
         /if ( ${Macro.Return.Equal[CAST_SUCCESS]} || ${Macro.Return.Equal[CAST_RESISTED]} ) {
            /if ( ${nukeMode}==1 ) {
               /varcalc nukeWaitMod 2*(90 - ${Me.PctMana})
            } else {
               /varset nukeWaitMod 0               
            }
            /if ( ${nukeDelay}>${nukeWaitMod} ) {
               /varset nukeWaitTimer ${nukeDelay}
            } else {
               /varset nukeWaitTimer ${nukeWaitMod}
            }
         }
      } else {
         /call ManaRobe
      }
   }
/goto :nuke_loop


Sub DebuffMobs
   /declare i int local
   /declare tempID string local
   /if ( ${mobList.Find[[]} ) {
      /for i 1 to ${mobList.Count[[]}
         /if ( ${mobList.Find[[]}>1 ) /varset mobList ${mobList.Right[-${Math.Calc[${mobList.Find[[]}-1]}]}
         /varset tempID ${mobList.Arg[${i},[].Left[-1]}
         /if ( !${Defined[maloTimer${tempID}]} ) {
            /if ( !${Spawn[${tempID}].Type.Equal[npc]} ) {
               /declare maloTimer${tempID} int outer -1
            } else /if ( ( !${waitTimer${tempID}} && ( ${maloTimer${mobID}} || ${waitTimer${mobID}} ) ) || ${tempID}==${mobID} ) {
               /call UpdateMobList
               /target id ${tempID}
               /call Malo
            }
         }
      /next i
   }
/return

Sub CheckPet
   /if ( ${Zone.ID}!=${currentZone} ) {
      /call ClearMobList 
      /varset currentZone ${Zone.ID}
      /varset mobList
      /varset addList
      /varset buffQueue
      /varset mobID 0
      /varset petID 0
      /varset petID2 0
      /varset useAnchor 0
      /squelch alert clear 6
   }
   /call CheckForAdds
   /declare i int local
   /declare tempID int local
   /if ( ${petOff} && ${Me.Pet.ID} ) {
      /varset petOff 0
   }
   /if ( !${Spawn[${petID2}].Type.Equal[NPC]} && ${petOff2} ) /varset petOff2 0
   /if ( ${Spawn[${petID}].Type.Equal[NPC]} && !${petOff} ) {
      /echo Pet Off!
      /varset petAttacking false
      /varset petOff 1
   }
   /if ( ${Spawn[${petID2}].Type.Equal[NPC]} && !${petOff2} ) {
      /echo Chanter Pet Off!
      /varset petOff2 1
   }

   /if ( ${petOff} && ${Me.Casting.ID} && !( ${Me.Casting.Name.Equal[malosinia]} && ${Target.ID}==${petID} ) && !${Me.Casting.Name.Equal[Elemental Silence]} && !${Me.Casting.Name.Equal[call of the arch mage]} ) /call Interrupt
   /doevents gate
   /doevents rageon
   /doevents rageoff
   /doevents setvar
   /if ( ${castWaitTime}>5 ) /doevents chat
/return

Sub CheckPet2
   /if ( ${FindItem[Wand of Destructive Protection].ID} ) {
      /declare AETime float local
      /varcalc AETime (${MacroQuest.Running}-${uquaAETime})%90000
      /if ( ${AETime}>83000 ) {
         /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"
      }
   } else {
      /if ( !${Me.Inventory[offhand].Name.Equal[${normalOffhand}]} ) /call SwapItem "${normalOffhand}" offhand
   }
   /if ( ${petOff} ) /call Charm ${petID}
   /if ( ${petOff2} &&  !( ${maloTimer${petID2}}>=4200 ) ) {
      /declare oldTargetID int local ${Target.ID}
      /tar id ${petID2}
      /call Malo
      /if ( ${Spawn[${oldTargetID}].ID} ) {
         /target id ${oldTargetID}
      } else {
         /keypress clear_target
      }
   }
/return

Sub CheckForAdds
:check_add_loop
   /if ( !${Spawn[${mobID}].Type.Equal[npc]} && !${Spawn[${mobID}].Type.Equal[pet]} ) {
      /varset addIndex 1
      /return
   }
   /varset addID ${NearestSpawn[${addIndex},npc radius ${minRadius}].ID}
   /if ( ${addID} ) {
      /if ( ${Spawn[${addID}].Distance3D}<=${minRadius} && ${addID}!=${petID} && ${Spawn[${addID}].LineOfSight} && ${aggroAnim.Find[|${Spawn[${addID}].Animation}|]} && ${mezTimer${addID}}!=-1 && ${Spawn[${addID}].Type.Equal[NPC]} ) {
         /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 {
      /varset addIndex 1
   }
/return

Sub Charm(int tempID)
   /if ( ${Me.Pet.ID} ) /return
   /varset noInvis 0
   /declare oldTargetID int local ${Target.ID}
:mez_pet
   /target id ${tempID}
   /call Cast "Elemental Silence" gem7 3s   
   /if ( !${Macro.Return.Equal[CAST_SUCCESS]} ) /goto :mez_pet
:malo_pet
   /target id ${tempID}
   /call Malo
   /if ( !${Macro.Return.Equal[CAST_SUCCESS]} ) /goto :malo_pet
   /target id ${tempID}
   /call Cast "Call of the Arch Mage" gem6 5s
   /if ( ${Me.Pet.ID} ) {
      /if ( ${Spawn[${oldTargetID}].ID} ) {
         /target id ${oldTargetID}
      } else {
         /keypress clear_target
      }
   }
   /varset noInvis ${Ini[${iniName},Settings,NoInvis,1]}
/return

Sub Malo
   /declare tempID int local ${Target.ID}
   /if ( !${Defined[maloResists${tempID}]} ) /declare maloResists${tempID} int outer 0
   /if ( ${maloResists${tempID}}==${resistsTillMala} ) /call Cast "${malaSpell}" ${malaType} 5s CheckPet
   /if ( ${maloResists${tempID}}==${resistsTillQuit} ) {
      /deletevar maloTimer${tempID}
      /declare maloTimer${tempID} int outer -1
      /return
   }
   /call Cast "${malosiniaSpell}" ${malosiniaType} 0 CheckPet
   /if ( !${Defined[maloTimer${tempID}]} ) /declare maloTimer${tempID} timer outer
   /if ( ${Macro.Return.Equal[CAST_SUCCESS]} ) {
      /varset maloTimer${tempID} 19m | ${maloDuration}
      /varset maloResists${tempID} 0
   } else /if ( ${Macro.Return.Equal[CAST_OUTOFMANA]} || ${Macro.Return.Equal[CAST_OUTOFRANGE]} || ${Macro.Return.Equal[CAST_CANNOTSEE]} ) {
      /varset maloTimer${tempID} 50     
   } else {
      /if ( ${Macro.Return.Equal[CAST_RESISTED]} ) /varcalc maloResists${tempID} ${maloResists${tempID}}+1
      /varset maloTimer${tempID} 1
   }
/return ${Macro.Return}


Sub CheckBuffs
   /varset deathFlag ${Math.Calc[!(${InvSlot[chest].Item.ID}>0)]}
   /if ( ${deathFlag} ) /goto :dead   

   /if ( ${Me.Combat} ) {
      /if ( !${Me.Inventory[mainhand].Name.Equal[${meleeWep}]} && ${FindItem[${meleeWep}].ID} ) /call SwapItem "${meleeWep}" mainhand
   } else {
      /if ( !${Me.Inventory[mainhand].Name.Equal[${normalMainhand}]} && ${FindItem[${normalMainhand}].ID} ) /call SwapItem "${normalMainhand}" mainhand
   }
   /declare i int local
   /declare j int local
   /declare buffText string local
   /declare targetName string local
   /declare spellName2 string local
   /declare spellType string local
   /declare spellRange int local 118
   /declare spellName string local
   /declare buffName string 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

   /if ( !${petID} && ${Me.Pet.ID} ) /varset petID ${Me.Pet.ID}
   /if ( !${petID2} && ${Spawn[${clarityBitch}].Pet.ID} ) /varset petID2 ${Spawn[${clarityBitch}].Pet.ID}
   /if ( !${Me.Pet.ID} && ${usePet} && !${petOff} && ${Me.CurrentMana}>=900 ) /call SumPet


   /if ( ${Me.Hunger}<5000 && ${useFood} ) {
      /declare foodName string local
      /declare oldSlotID int local
      /call GetFoodName
      /varset foodName ${Macro.Return}
      /if ( ${Bool[${foodName}]} ) {
         /varset oldSlotID ${FindItem[${foodName}].InvSlot.ID}
         /call SwapItem "${foodName}" "pack8"
         /nomodkey /itemnotify pack8 rightmouseup
         /if ( ${FindItem[${foodName}].ID} ) /call SwapItem "${foodName}" "${oldSlotID}"
      }
   }
   /if ( ${checkNamed} ) /call CheckNamed


   /if ( !${Me.Buff["Clairvoyance"].ID} && !${Me.Buff["Voice of Clairvoyance"].ID} && ${Spawn[pc ${clarityBitch} radius 100].ID} && !${c6Timer} ) {
      /chat tell ${clarityBitch} c6
      /varset c6Timer 1m
   }
   /if ( ${Cursor.Name.Equal[Rod of Mystical Transvergance]} ) /autoinventory
   /if ( !${FindItem[Rod of Mystical Transvergance].ID} ) /call AddToQueue "rod,${Me.Name}"
   /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 ( ${useMount} ) {
      /if ( !${Me.Mount.ID} ) /call Cast "${Me.Inventory[ammo].Name}" item
   } else {
      /if ( !${Me.Buff[${elementalType} Elemental Form I].ID} && !${Me.Buff[${elementalType} Elemental Form II].ID} && !${Me.Buff[${elementalType} Elemental Form III].ID} && ${Me.AltAbilityReady[Elemental Form: ${elementalType}]} ) /call Cast "Elemental Form: ${elementalType}" alt
   }
   /if ( ${Me.Pet.ID} ) {
      /if ( !${Me.PetBuff[${petHaste}]} && !${Me.PetBuff[call of the arch mage]} && ${Me.Pet.Distance3D}<=100 ) /call Cast "${petHaste}" gem7 2s
      /if ( !${Me.PetBuff[burnout]} && ${Me.PetBuff[call of the arch mage]} ) /call Cast "Burnout" gem7 2s
      /if ( !${Me.Buff[${siphonSpell} Recourse].ID} && !${Me.PetBuff[call of the arch mage]} && !${Me.Buff[Mind Wrack Recourse].ID} && ${Me.Pet.ID} && ${Me.Pet.Distance3D}<=100 && ${Me.Book[${siphonSpell}]} ) /call cast "${siphonSpell}" gem8 0 CheckPet
   }
   /if ( !${Me.Buff[${groupDSSpell}].ID} && ${useGroupDS} ) {
      /if ( ${Spawn[pc ${mainAssist}].ID} ) {
         /call AddToQueue "${groupDSSpell},${mainAssist}"
      } else {
         /call AddToQueue "${groupDSSpell},${Me.Name}"
      }
   }
   /if ( !${autoBuff} ) /goto :skip_buffs
   /if ( ${Me.PctHPs}<=${runeHP} ) {
      /if ( ${Me.Book[${runeSpell}]} ) {
         /if ( !${Me.Buff[${runeSpell}].ID} ) /call cast "${runeSpell}" ${runeType} 0 CheckPet
      } else /if ( ${FindItem[${runeSpell}].ID} ) {
         /if ( !${Me.Buff[${FindItem[${runeSpell}].Spell.Name}].ID} ) /call cast "${runeSpell}" ${runeType} 0 CheckPet
      }
   }
   /doevents Indoors
   /call CheckIniBuffs
|   /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[${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 ( ${Target.Name.Equal[${Me.Pet.Name}]} ) {
      /if ( ${Spawn[${oldTarget}].ID} ) {
         /target id ${oldTarget}
      } else {
         /keypress clear_target
      }
   }
   /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}
                  /call Cast "${spellName}" ${spellType} 4s CheckForAdds
                  /if ( ${Spawn[${oldTarget}].ID} ) {
                     /if ( ${Target.Name.Equal[${targetName}]} ) /target id ${oldTarget}
                  } else {
                     /keypress clear_target
                  }   
               }
               /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[${Me.MaxHPs}<2000]}
   /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!
   :wait_for_rez2
      /delay 1
      /notify ConfirmationDialogBox Yes_Button leftmouseup
      /if ( ${Window[ConfirmationDialogBox].Open} ) /goto :wait_for_rez2
      /delay 5s ${Spawn[corpse radius 100 ${Me.Name}].ID}
      /goto :wait_for_loot
   }
/return

Sub GetBuffName(string spellName)
   /declare i int local
   /declare buffText string local
   /declare spellType string local gem5
   /if ( ${spellName.Equal[rod]} ) {
      /varset spellName ${rodSpell}
      /varset spellType ${rodType}
   }
   /if ( ${spellName.Equal[ds]} ) {
      /varset spellName ${singleDSSpell}
      /varset spellType gem6
   }
   /if ( ${spellName.Equal[coth]} ) /varset spellName Call of the Hero
   /for i 1 to 5
      /if ( ${spellName.Equal[${buffName${i}}]} ) /varset spellType ${buffType${i}}
   /next i
   /if ( ${Int[${Me.Book[${spellName}]}]} || ${AltAbility[${spellName}].ID} || ${FindItem[${spellName}].ID} ) /return ${spellName},${spellType}
/return

Sub SumPet
   /declare i int local
   /if ( ${Me.AltAbilityReady[suspended minion]} ) /call Cast "suspended minion" alt 2s
   /delay 3s ${Me.Pet.ID}
   /if ( !${Me.Pet.ID} ) {
      /call cast "${petSpell}" gem1 5s
      /tar id ${Me.Pet.ID}
      /call SumWeps
      /call Cast "${petShrinkSpell}" ${petShrinkType} 3s
      /call Cast "${petShrinkSpell}" ${petShrinkType} 3s
   }
/return

Sub SumWeps
   /if ( ${Target.Pet.ID} ) /target id ${Target.Pet.ID}
   /if ( !${Target.Type.Equal[pet]} ) /return
   /call Cast "${summonedWepSpell}" ${summonedWepType} 3s
   /call GiveToPet
   /call Cast "${summonedWepSpell}" ${summonedWepType} 3s
   /call GiveToPet
   /call Cast "${summonedBeltSpell}" ${summonedBeltType} 3s
   /call GiveToPet
   /call Cast "${summonedMaskSpell}" ${summonedMaskType} 3s
   /call GiveToPet
/return


Sub GiveToPet
   /declare i int local
   /varset i 1
:give_item
   /delay 5 ${Cursor.ID}
   /if ( ${Cursor.ID} && !${InvSlot[trade4].Item.ID} ) {
      /if ( ${Cursor.Name.Find[summoned:]} ) {
         /click left target
         /delay 1s ${InvSlot[trade${i}].Item.ID}
      } else {
         /autoinventory
      }
      /goto :give_item
   }
   /for i 1 to 4
      /if ( ${InvSlot[trade${i}].Item.ID} && !${InvSlot[trade${i}].Item.Name.Find[summoned:]} ) /notify GiveWnd GVW_Cancel_Button leftmouseup
   /next i
   /if ( ${Window[GiveWnd].Open} ) {
      /notify GiveWnd GVW_Give_Button leftmouseup
      /delay 5s !${Window[GiveWnd].Open}
   }
   /if ( ${Window[InventoryWindow].Open} ) /keypress inventory
/return

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

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

Sub Event_Gate(string line)
   /if ( ${line.Find[${Spawn[${mobID}].DisplayName}]} && ${Me.Pet.ID} ) {
      /varset mobID 0
   }
/return

Sub Event_Goto(string line,string destination)
   /declare tempZone string local
   /if ( ${destination.Equal[pok]} ) {
      /call MoveToLoc -1700 428
      /call MoveToLoc -1180 -116
      /call MoveToLoc -274 -860
      /call MoveToLoc -222 -945
      /call MoveToLoc 704 -1324
      /call MoveToLoc 726 -1443
      /call MoveToLoc 772 -1440
      /doortarget poktele500
      /face nolook
      /varset tempZone ${Zone.Name}
      /keypress pitchdown hold
   :wait_for_zone_pok
      /keypress use hold
      /delay 1
      /if ( ${tempZone.Equal[${Zone.Name}]} ) /goto :wait_for_zone_pok
   }
   /if ( ${destination.Equal[wfp]} ) {
      /keypress centerview
      /call MoveToLoc -228 -283
      /call MoveToLoc -452 -236
      /doortarget pokfptport500
      /face nolook
      /keypress use hold
   }
   /if ( ${destination.Equal[ec]} ) {
      /call MoveToLoc -636 152
      /call MoveToLoc -559 195
      /face heading 90
      /keypress forward hold
      /varset tempZone ${Zone.Name}
   :wait_for_zone_ec
      /delay 5
      /if ( ${tempZone.Equal[${Zone.Name}]} ) /goto :wait_for_zone_ec
   }
   /if ( ${destination.Equal[nedaria]} ) {
      /call MoveToLoc -497 -762
      /call MoveToLoc -904 -365
      /call MoveToLoc -1049 844
      /call MoveToLoc -1338 795
      /call MoveToLoc -1662 667
      /call MoveToLoc -1671 276
      /call MoveToLoc -1768 16
      /call MoveToLoc -1617 -182
      /target magus
      /say nedaria
   }
   /if ( ${destination.Equal[natimbi]} ) {
      /call MoveToLoc 1050 1528
      /call MoveToLoc 1023 1529
      /target magus
      /say natimbi
   }
   /if ( ${destination.Equal[kodtaz]} ) {
      /if ( !${Me.Levitating} ) {
         /if ( ${Me.Invis} ) {
            /target clear
            /attack on
            /attack off
         }
         /call Cast "Summon Ring of Flight" gem5 10s
         /delay 5s ${Cursor.ID}
         /autoinv
         /target myself
         /call Cast "Summoned: Ring of Levitation" item
      }
      /if ( !${Me.Invis} ) /call Cast "Veil of Elements" gem5 10s
      /call MoveToLoc 36 -1458
      /call MoveToLoc 1071 -1520
      /call MoveToLoc 989 -447
      /call MoveToLoc 1099 110
      /call MoveToLoc 1029 1266
      /call MoveToLoc 1143 1546
      /doortarget nihobelisk800
      /face nolook loc 1144,1555
      /varset tempZone ${Zone.Name}
      /keypress pitchdown hold
   :wait_for_zone_kodtaz
      /keypress use hold
      /delay 1
      /if ( ${tempZone.Equal[${Zone.Name}]} ) /goto :wait_for_zone_kodtaz
   }
   /if ( ${destination.Equal[kt]} ) {
      /echo goto pok
      /echo goto wfp
      /echo goto ec
      /echo goto nedaria
      /echo goto natimbi
      /echo goto kodtaz
      /doevents Goto
   }
/return

Sub Event_Coth(string line,string sender,string name)
   /if ( !${Defined[name]} ) /declare name string local ${sender}
   /declare i int local
   /declare inGroup bool local false
   /if ( !${Spawn[pc ${name}].ID} ) {
      /if ( ${Spawn[pc ${sender}].ID} ) {
         /varset name ${sender}
      } else {
         /return
      }
   }
   /for i 1 to 5
      /if ( ${Group[${i}].Name.Find[${name}]} ) /varset inGroup true
   /next i
   /if ( ${inGroup} ) {
      /call AddToQueue "coth,${name}"
   } else /if ( ${GroupLeader.ID}==${Me.ID} ) {
      /target pc ${name}
      /keypress invite_follow
      /delay 10s ${Group[1].Name.Equal[${name}]} || ${Group[2].Name.Equal[${name}]} || ${Group[3].Name.Equal[${name}]} || ${Group[4].Name.Equal[${name}]} || ${Group[5].Name.Equal[${name}]}
      /for i 1 to 5
         /if ( ${Group[${i}].Name.Equal[${name}]} ) /varset inGroup true
      /next i
      /if ( ${inGroup} ) /call AddToQueue "coth,${name}"
   }
/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[maloTimer]} ) {
      /varset tempID ${timerName.Right[-9]}
      /if ( ${Spawn[${tempID}].Type.Equal[NPC]} ) {
         /target id ${tempID}
         /call Malo
      } else {
         /deletevar ${timerName}
      }
   } else {
      /return ${Macro.Return}
   }
   /if ( ${Target.ID}==${tempID} ) {
      /if ( ${Spawn[${oldTargetID}].ID} ) {
         /target id ${oldTargetID}
      } else {
         /keypress clear_target
      }
   }
/return ${Macro.Return}

Sub Event_PetWeps(string line,string sender)
   /declare tempID int local ${Spawn[pc ${sender}].Pet.ID}
   /if ( !${tempID} || ${Spawn[${tempID}].Distance3D}>250 || !${Spawn[${tempID}].LineOfSight} ) /return
   /target id ${tempID}
   /if ( ${Stick.Status.Length} ) {
      /stick 10
      /delay 5s ${Target.Distance3D}<=10
   } else {
      /declare tempTimer timer local 5s
   :move_to_pet
      /face fast nolook
      /keypress forward hold
      /if ( ${tempTimer} && ${Target.Distance3D}<=20 ) /goto :move_to_pet
      /keypress forward
   }
   /call SumWeps
   /if ( ${Spawn[pc ${followName} radius 150].ID} && ${Stick.Status.Equal[off]} ) {
      /target pc ${followName}
      /stick hold 10
   }
/return

InI

HTML:
[Settings]
MainAssist=Null
SecondAssist=NULL
MinRadius=150
EngageDelay=90
MinHP=90
AutoBuff=1
UseMount=0
UseDebuff=1
NukeMode=1
UseDPS=0
UseCharm=0
UsePet=1
PrivateChannel=0
ChannelAnnounce=0
AutoAnnounce=1
NoInterrupt=0
UseManaStone=0
CheckNamed=0
NoInvis=1
UseManaRobe=0
ManaRobeMode=0
ManaRobeMinMana=70
ManaRobeMaxMana=90
NukeMana=25
NukeDelay=150
IgnoreList=NULL
RuneHP=70
CleanUp=0
UseGroupDS=1
ClarityBitch=0
SpellSet=spells
MaloDuration=19m
ResistsTillMala=3
ResistsTillQuit=6
[Spells]
Nuke1=Bolt of Molten SLag
Nuke2=Bolt of Molten SLag
MagicNuke=Shock of Silvered Steel Rk. II
FireNuke=Fickle Inferno
BoltNuke=Bolt of Molten SLag
Shielding=Prime Shielding
PetSpell=Essence of Air
MalosiniaSpell=Malosinise Rk. II
MalosiniaType=gem3
MalaSpell=Mala
MalaType=gem4
SummonedWepSpell=Summon Elemental Armaments
SummonedWepType=gem1
SummonedBeltSpell=Summon Crystal Belt
SummonedBeltType=gem1
SummonedMaskSpell=Summon Muzzle of Mowcha
SummonedMaskType=gem1
GroupDSSpell=0
SingleDSSpell=Cirlce of Magmaskin
SiphonSpell=Elemental Symbiosis Rk. II
RuneSpell=0
RuneType=0
PetHaste=Elemental Fury
PetShrinkSpell=Algae Covered Stiletto
PetShrinkType=gem1
RodSpell=Wand of Elemental Transvergence
RodType=gem2
ElementalType=0
SelfBuff1=Phantom Shield
SelfBuffNoStack1=Steeloak Skin,Blessing of Steeloak,Blessing of the Direwild,Direwild Skin
SelfBuff2=Circle of Magmaskin
SelfBuffNoStack2=	
SelfBuff3=Prime Shielding
SelfBuffNoStack3=Balikor's Mark,Symbol of Balikor,Elushar's Mark,Symbol of Elushar,Conviction,Hand of Conviction,Tenacity,Hand of Tenacity
SelfBuff4=alt62
SelfBuffNoStack4=
SelfBuff5=
SelfBuffNoStack5=
BuffList1=rod,modrod
BuffName1=Wand of Elemental Transvergence
BuffType1=gem2
BuffList2=ds,dmg shield,damage shield
BuffName2=Scorching Skin
BuffType2=gem1
BuffList3=coh
BuffName3=Call of the Hero
BuffType3=gem9
BuffList4=
BuffName4=
BuffType4=
BuffList5=
BuffName5=
BuffType5=
[Items]
HpRobe=Vision-Shrouded Silk Robe
Clicky1=
ClickyNoStack1=
Clicky2=
ClickyNoStack2=
Clicky3=
ClickyNoStack3=
Clicky4=
ClickyNoStack4=
Clicky5=
ClickyNoStack5=
UseFood=0
StatFood=Bristlebanes Party Platter
Food1=NULL
Food2=NULL
Food3=NULL
Food4=NULL
Food5=NULL
MeleeWep=Wand of Temporal Power
InvisItem=
DispellItem=
NormalMainhand=A Blood Bladed Dagger
NormalOffhand=Blood Defender
 
Last edited:
I have a macro request... I want a macro that can be used in a heal chain format. I want it to be useable by any healing capable character. I intend to use a cleric and druid in my application. The macro would use a chat channel or even better, eqbc text to trigger casting a CH or other spell. It would trigger off a specific character's name and text to the channel, it would start a delay that is changable and then cast their spell with an announcement. After casting the spell, it would simply wait to see the text again and repeat the sequence until the /endmacro is initiated. On top of this, I would also like it to identify when it fizzles and recast immediately saying another message in the chat channel indicating this. I don't know how hard this would be, but I don't think it would be too hard for some of the guru's on here. Thanks!
 
this code is broken because some strings, variables or defines.. heck i dont know lol.. changed in mq2 and now are spelld diffrent. this macro whould check your first gem slot and train that casting skill thill its maxed then move to second gem slot and repeats until all spellgems / casting skills are maxed then log off. its far superior to skillcast wich comes with the compile and maybe should replace it?
anyways, i know its not much work for the "cracks" and whould appriciate a fixed version :)

Rich (BB code):
#define MaxArcaneSkill 235 
#chat tell 
#event lang "tells you" 

#include SpellCast.inc 

Sub Main 

    /declare currentSpell 
    /declare maxSkill 
    /declare skillName 
    /declare spellName 
    
    /varset currentSpell 1 
    /varset maxSkill ${Math.Calc[${Me.Level}*5+5]} 
    /echo maxSkill=${maxSkill} 
    /if ( ${maxSkill} > 235 ) /varset maxSkill 235 

    /target myself 
    
    :nextSpell 
        /echo currentspell=${currentSpell} 
        /echo casting=${Me.Gem[${currentSpell}]} 
        
        /if ( ${Bool[${Me.Gem[${currentSpell}]}]} ) { 
            /varset skillName ${Me.Gem[${currentSpell}].Skill} 
            :castSpell 
                /doevents 
                /if ( ${Me.PctMana}<20) { 
                    /sit on 
                    /call MedBreak 
                } 
                /echo ${skillName}=${Me.Skill[${skillName}]} 
                /if ( ${Me.Skill[${skillName}]} >= ${maxSkill} ) { 
                    /varset currentSpell ${Math.Calc[${currentSpell}+1]} 
                    /goto :nextSpell 
                } 
                /call CheckGM 
                /call mq2cast "${Me.Gem[${currentSpell}]}" 
                
                :checkCursor 
                /if (${Cursor.ID}) { 
                    /autoinv 
                    /goto :checkCursor 
                } 
            /goto :castSpell 
        } 
    
    /sit 
    /call MedBreak 
    /camp 
/return 

Sub CheckGM 
    :GMCheck 
    /if (${Bool[${Spawn[gm].ID}]}) { 
       /echo 'Cast Macro' A GM or Guide has been detected in the zone,  the macro will resume  when the zone is clear of GM/Guides 
       /delay 600s 
       /goto :GMCheck 
    } 
/return 

Sub Event_Chat 
  /echo Got a tell, pausing for 10 minutes 
  /delay 600s 
/return 

Sub Event_Lang 
  /echo Got a tell, pausing for 10 minutes 
  /delay 600s 
/return 

Sub MedBreak 
    /stand 
    /sit 
    :MedMore 
        /delay 2s 
        /if (${Me.CurrentMana}<${Me.MaxMana}) /goto :MedMore 
/return
 
I have a macro request... I want a macro that can be used in a heal chain format. I want it to be useable by any healing capable character. I intend to use a cleric and druid in my application. The macro would use a chat channel or even better, eqbc text to trigger casting a CH or other spell. It would trigger off a specific character's name and text to the channel, it would start a delay that is changable and then cast their spell with an announcement. After casting the spell, it would simply wait to see the text again and repeat the sequence until the /endmacro is initiated. On top of this, I would also like it to identify when it fizzles and recast immediately saying another message in the chat channel indicating this. I don't know how hard this would be, but I don't think it would be too hard for some of the guru's on here. Thanks!

i think most of this is possible using plugins. MQ2cast and MQ2slave. not sure how but if you read the wiki on those two plugins you might fig out a solution.
 
Request for...your requests (Macros)
Status
Not open for further replies.

Users who are viewing this thread

Back
Top