AFCleric.mac - Cleric automation macro (updated Aug 24th)

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

episix
orc pawn
orc pawn
Posts: 18
Joined: Wed Aug 18, 2004 1:44 pm

Post by episix » Wed Aug 18, 2004 9:13 pm

Thanks much dumbstruck, i'll check it out. ;)

Seariz
a lesser mummy
a lesser mummy
Posts: 52
Joined: Thu Feb 06, 2003 1:22 pm
Location: The Computer
Contact:

Post by Seariz » Thu Sep 02, 2004 8:21 am

Hello, I just started playing my cleric again after a few months vacation and there seems to be ALOT of new updates to AFCleric. One of which is the MoK plugin to the macro, while i do love having it auto MoK every mob. Its not ok to waste 3x the mana on doing so, since it seems to cast it 3 times directly in a row. Is there any way to completely delete the re-cast ability of it? No mob I kill lasts over 3mins so I see no reason for me to re-cast it. Thanks in advance!
Every work group has one sadistic nut who makes the job unbearable for everyone else. That's why they hired me!

User avatar
aChallenged1
a grimling bloodguard
a grimling bloodguard
Posts: 1804
Joined: Mon Jun 28, 2004 10:12 pm

Post by aChallenged1 » Thu Sep 02, 2004 8:48 am

You're talking about the mok include on the previous page right? If that is the case, go back to the original macro without changes on page 1 and just fire off the MoK manually.

While I'm sure there is a way to adjust the inc file, I'm not awake enough to look into it. Perhaps someone else can look into it?
Fuck writing MQ2 macros. Go with IS scripts; IS Rules!

holymoly
decaying skeleton
decaying skeleton
Posts: 2
Joined: Thu Sep 02, 2004 7:54 am

Post by holymoly » Thu Sep 02, 2004 11:46 am

hello everyone this is my first usage of macroquest. I downloaded to the macro folder but whenever I start eq and run it I get line saying "Couldn't open include file: C:\Documents and Settings\Owner\Desktop\Blech\Release\Macros\spell_routines.inc" the current macro has ended. Unable to add macro line. any ideas what I am doing wrong?

Rusty~
a hill giant
a hill giant
Posts: 244
Joined: Wed Apr 14, 2004 2:55 pm

Post by Rusty~ » Thu Sep 02, 2004 11:49 am

You need spell_routines.inc ... which you put in your macros folder

holymoly
decaying skeleton
decaying skeleton
Posts: 2
Joined: Thu Sep 02, 2004 7:54 am

Post by holymoly » Thu Sep 02, 2004 1:45 pm

many thanks Rusty, got it working like a charm...very impressed so far. Keep up the good work everyone!!!!

Meydrel'Koth
decaying skeleton
decaying skeleton
Posts: 7
Joined: Thu Sep 02, 2004 4:04 pm

Post by Meydrel'Koth » Thu Sep 02, 2004 4:06 pm

I noticed that there is code to nuke/stun when high on mana. Would it be hard to have the cleric stun mobs at 20%? I see this alot when there is not a snarer in the group.

BTW kick ass macro.

fantum409
a ghoul
a ghoul
Posts: 141
Joined: Fri Nov 14, 2003 10:03 pm

Post by fantum409 » Mon Sep 06, 2004 8:46 pm

Seariz the recast on MoK is configurable by editing the addon. To avoid recasting MOK, simply set

Code: Select all

   /if (!${Defined[mokduration]}) /declare mokduration int outer 200
to a real high number, like 99999. It wont recast MOK unless the mob lives a very long time... But you shouldn't be seeing recasts of MOK on a mob that dies fast, I wonder if your seeing recast attempts for when MOK is resisted. Number of recast attempts is similarly configurable

Code: Select all

   /if (!${Defined[mokretrylimit]}) /declare mokretrylimit int outer 5
change the 5 to whatever you want.

Meydrel'Koth it would be possible to make this macro do that if you wanted. The Mokaddon.inc could be easily modified to do that.

I haven't had much time to pour into macro writing lately, hopefully get to it eventually. I have a modified version of MOK addon that I use for nukes. I dont bother casting MOK normally, only in special situations. But if cleric tends toward being idle, I make her DPS a little. This is an example of how I changed mokaddon to suit my purposes, surely you can change a cuple lines and make it stun instead.

Code: Select all

|** mokaddon.inc (for AFCleric.mac)

NEEDS THESE FOUR LINES ADDED TO AFCleric.mac:

1)beginning of mac, before Sub Main put:
#include mokaddon.inc

2)beginning of mac, in the declares section put:
   /declare mokaddon int outer 1

3)middle of Sub Healgroup, right below the line that is <         /if ((${healpetmode}>0)&&(${Me.PctMana}>=${manatohealpet})) /call HealPet>
         /if (${mokaddon}==1) /if (${Target.ID}==${tanknameid}) /call AutoMOK

4)end of Sub Healgroup, right above the /return line put:
   /if (${mokaddon}==1) /call AutoMOK


Configuration/variable definitions:
   mokspell is item that casts MOK. To use a spell instead, replace <"Chestplate of Stability" item> with <"Mark of Kings" spell> or whatever you're using
   mokmaxrange is max distance a mob can be to cast MOK
   mokduration (seconds x10) before cleric will re-MOK a given mob
   mokmaxcount is max number of mobs, within mokaddrange radius. If more than specified number of mobs within specified radius, cleric will skip MOK and just heal
   mokmaxhealth is max HP mob can have to trigger MOK, mokminhealth is minimum
   mokminmana is min mana cleric must have before casting MOK
   mokretrylimit is number of casts before giving up MOK
Once you've added those 4 lines to the main macro, then reviewed/edited variables in this inc as above, your GTG 

FaNTuM's mokaddon.inc v1.0  **|




Sub AutoMOK
|EDIT THESE VARIABLES AS NEEDED
   /if (!${Defined[mokspell]}) /declare mokspell string outer "Order" spell
   /if (!${Defined[mokmaxrange]}) /declare mokmaxrange int outer 100
   /if (!${Defined[mokduration]}) /declare mokduration int outer 200
   /if (!${Defined[mokmaxcount]}) /declare mokmaxcount int outer 3
   /if (!${Defined[mokaddrange]}) /declare mokaddrange int outer 50
   /if (!${Defined[mokmaxhealth]}) /declare mokmaxhealth int outer 90
   /if (!${Defined[mokminhealth]}) /declare mokminhealth int outer 5
   /if (!${Defined[mokminmana]}) /declare mokminmana int outer 75
   /if (!${Defined[mokretrylimit]}) /declare mokretrylimit int outer 5
|END EDITING


|Internal use defines
   /if (!${Defined[mokretrycount]}) /declare mokretrycount int outer 0
   /if (!${Defined[mokmobida]}) /declare mokmobida int outer 0
   /if (!${Defined[mokmobidb]}) /declare mokmobidb int outer 0
   /if (!${Defined[mokmobidc]}) /declare mokmobidc int outer 0
   /if (!${Defined[mokmobidd]}) /declare mokmobidd int outer 0
   /if (!${Defined[mokmobide]}) /declare mokmobide int outer 0
   /if (!${Defined[moktemptargetid]}) /declare moktemptargetid int outer 0
   /if (!${Defined[moktemptargetname]}) /declare moktemptargetname string outer NULL
   /if (${Me.PctMana}<${mokminmana}) /return

|Nuke mod routine, delete for mokversion
   /if ((!${Me.SpellReady[Order]})&&(!${Me.SpellReady[Condemnation]})) /return
   /if (!${Me.SpellReady[Order]}) /if (${Me.SpellReady[Condemnation]}) /varset mokspell "Condemnation" spell
   /if (!${Me.SpellReady[Condemnation]}) /if (${Me.SpellReady[Order]}) /varset mokspell "Order" spell
|End Nuke mod routine. See also mokspell variable setting if removing nukemod, and announce line below

   /if (${NearestSpawn[${Math.Calc[${mokmaxcount}+1]}, NPC].Distance}<${mokaddrange}) /return
   /if (${moktemptargetid}!=0) /if ((!${Spawn[${moktemptargetid}].ID})||(${String[${Spawn[${moktemptargetid}].Name}].NotEqual[${moktemptargetname}]})) {
      /varset moktemptargetid 0
      /varset mokretrycount 0
      /varset moktemptargetname NULL
   }
   /if ((!${Spawn[${mokmobida}].ID})||(${Spawn[${mokmobida}].Type.Equal[corpse]})) /varset mokmobida 0
   /if ((!${Spawn[${mokmobidb}].ID})||(${Spawn[${mokmobidb}].Type.Equal[corpse]})) /varset mokmobidb 0
   /if ((!${Spawn[${mokmobidc}].ID})||(${Spawn[${mokmobidc}].Type.Equal[corpse]})) /varset mokmobidc 0
   /if ((!${Spawn[${mokmobidd}].ID})||(${Spawn[${mokmobidd}].Type.Equal[corpse]})) /varset mokmobidd 0
   /if ((!${Spawn[${mokmobide}].ID})||(${Spawn[${mokmobide}].Type.Equal[corpse]})) /varset mokmobide 0
   /target id ${tanknameid}
   /if (${Target.ID}==${tanknameid}) {
      /assist
      /delay 5 ${Target.Type.Equal[NPC]}
      /if (${Target.ID}==${tanknameid}) {
         /assist
         /delay 5 ${Target.Type.Equal[NPC]}
      }
      /if (${Target.Type.NotEqual[npc]}) /return
      /if ((${Target.ID}==${mokmobida})||(${Target.ID}==${mokmobidb})||(${Target.ID}==${mokmobidc})||(${Target.ID}==${mokmobidd})||(${Target.ID}==${mokmobidd})) /return
      /if (!${Target.LineOfSight}) /return
      /if (${Target.Distance}>${mokmaxrange}) /return
      /if (${Target.Type.Equal[NPC]}) /delay 3
      /if ((${Target.Type.Equal[NPC]})&&(${Target.PctHPs}<=${mokmaxhealth})&&(${Target.PctHPs}>=${mokminhealth})) {
         /if (${Target.ID}!=${moktemptargetid}) {
            /varset moktemptargetid ${Target.ID}
            /varset moktemptargetname ${Target.Name}
            /varset mokretrycount 0
         }
         /if (${mokretrycount}>=${mokretrylimit}) /return
         /call Cast ${mokspell} 2s

|Nuke mod line insertion, remove for original mokaddon
         /if (${announce}==1) /g Nuke down on %T
|End Nuke mod line insertion

         /if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
            /varset moktemptargetid 0
            /varset moktemptargetname NULL
            /varset mokretrycount 0
            /if (${mokmobida}==0) {
               /varset mokmobida ${Target.ID}
               /timed ${mokduration} /varset mokmobida 0
            } else /if (${mokmobidb}==0) {
               /varset mokmobidb ${Target.ID}
               /timed ${mokduration} /varset mokmobidb 0
            } else /if (${mokmobidc}==0) {
               /varset mokmobidc ${Target.ID}
               /timed ${mokduration} /varset mokmobidc 0
            } else /if (${mokmobidd}==0) {
               /varset mokmobidd ${Target.ID}
               /timed ${mokduration} /varset mokmobidd 0
            } else /if (${mokmobide}==0) {
               /varset mokmobide ${Target.ID}
               /timed ${mokduration} /varset mokmobide 0
            }
            /return
         }
         /if ((${Macro.Return.Equal["CAST_NOTREADY"]})||(${Macro.Return.Equal["CAST_CANNOTSEE"]})||(${Macro.Return.Equal["CAST_INTERRUPTED"]})||(${Macro.Return.Equal["CAST_CANCELLED"]})) /return
         /varcalc mokretrycount ${mokretrycount}+1
      }
   }
/return
One of these days I should really finish adding customization for heals to each specific class, ini support, and put these addons into a big include file that is standard with the macro and configurable along with its other options. But as I said, haven't been writing much lately.

If you use this plz be sure to read the options at the top, should be self explanatory how to tweak this.

Enjoy~

User avatar
Fuergrissa
a grimling bloodguard
a grimling bloodguard
Posts: 607
Joined: Mon Dec 08, 2003 3:46 pm
Location: UK

Post by Fuergrissa » Wed Sep 08, 2004 10:00 am

This macro is great and the mokaddon is awesome, i dont suppose anyone wants the challenge of adding an Inc for using the Ornate greaves to cast the hammer pet just before or just after the MoK.
I have coded a few macros but this is way beyond me i think. If noone jumps at it i may try and rip the MokAddon myself and botch one :)

Many Thanks in advance.
[quote]"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."[/quote]

Frank25
a ghoul
a ghoul
Posts: 136
Joined: Thu Aug 12, 2004 6:38 am

Post by Frank25 » Fri Sep 10, 2004 2:33 am

I have an odd problem.

Before your latest update to get rid of the spell ducking i had NO problems with it. Only time my cleric got off his horse when it had to interupt a spell due to his target dying to fast. no biggie.

Now that i updated to the LATEST code (i rechecked twice) after every heal cast cleric ducks and get off horse.
Or simply ducks even when not on a horse.

I've tried inserting the noducking code you posted in a few places but it never worked.

Is this something you are still working on or is there something i am doig wrong?

TI994a
a ghoul
a ghoul
Posts: 87
Joined: Mon Oct 13, 2003 12:25 pm

Post by TI994a » Fri Sep 10, 2004 1:40 pm

Love this macro!

One issue I have with it, should be simple enough to fix... When cleric dies, and is rezzed back into zone, macro starts spamming group trying to heal self, because of the low health of cleric, and the OOM of cleric. Could you add in the ability to pause the macro, or end it if need be, upon death? That way, once the cleric is rezzed back into group, he/she can loot corpse, set up and med, and then unpause as soon as he/she is ready to go again. And no group spams. And no one wondering why the cleric is spamming group 100 times in the span of 5 seconds trying to heal themselves after rez.

Thanks!

- TI

in_training
Craptastic
Posts: 115
Joined: Fri Oct 10, 2003 8:25 am

Post by in_training » Sun Sep 12, 2004 3:36 am

/mqpause
[url=http://www.macroquest2.com/main.php?p=donate]Vote or Die!l[/url]

vanemon
a lesser mummy
a lesser mummy
Posts: 58
Joined: Fri Aug 20, 2004 7:22 am

Post by vanemon » Wed Sep 15, 2004 11:34 am

after oow patch i get now the message lom, oom as soon as i start the macro - same on the modified one with the *.ini file.

anyone else that has the same problems or knows how to fix it pplz?

redeye93
decaying skeleton
decaying skeleton
Posts: 5
Joined: Sat Aug 28, 2004 6:41 am

Post by redeye93 » Wed Sep 15, 2004 12:11 pm

Mine doesn't even cast anymore after OoW patch. Humbly awaiting a fix to my fave macro omg! I actually have to manually heal...blasphemy!!!! :P

ztrike
a ghoul
a ghoul
Posts: 83
Joined: Fri Mar 26, 2004 1:17 pm
Contact:

Post by ztrike » Wed Sep 15, 2004 1:07 pm

vanemon wrote:after oow patch i get now the message lom, oom as soon as i start the macro - same on the modified one with the *.ini file.

anyone else that has the same problems or knows how to fix it pplz?
http://www.macroquest2.com/phpBB2/viewtopic.php?t=9272
Ztrike out