• 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
TLP CH Rotation MAC

Release TLP CH Rotation MAC

Joined
Feb 28, 2017
RedCents
108¢
Hello!

I tried out several CH rotation macs for the TLP and had issues with all of them until I found this very simple little gem of a macro.

This is not my macro. It was made over a decade ago by an individual named Pinkfloydx33. I'm new to RGs so if I have done something inappropriate by listing someone elses mac, please let me know so I can remove it.

OK. So, here is how it works:

Lets say you have 5 clerics: Bob, Matt, Jake, John, Neo


First, you join a chat channel that is going to be the rotation spam channel on all clerics (it is very important that all clerics are in this channel. It can be called anything).

Example: /join MyCHRotation


Second, you join a chat channel that is going to be the mana update spam channel on all clerics.

Example: /join MyManaUpdate

Each cleric is now in 1. MyCHRotation, 2. MyManaUpdate


Third, decide the rotation order for your clerics.

We will use: 1. Bob, 2. Matt, 3. Jake, 4. John, 5. Neo

(You can use as little as two clerics, but will have to make sure the delay between CHs is enough so the CH is refreshed before the next cleric goes. You can have as many clerics in the chain as you like)


Fourth, create a little hot key for each clerics .mac. If you saved the mac as CH.mac it would follow this format:

/mac CH <name of the next cleric> <delay in seconds to wait before casting CH> <rotation channel> <mana report channel>

Bob will have: /mac CH Matt 4 1 2

Matt will have: /mac CH Jake 4 1 2

Jake will have: /mac CH John 4 1 2

John will have: /mac CH Neo 4 1 2

Neo will have: /mac CH Bob 4 1 2

Now, you can actually create a couple of these starting macs, each with a different rotation time in it. In the above example, the CH rotation is 4 second between CH casts. You can create different hot keys with different times in them. I would do this so you can adjust the delay in the middle of a Rotation.

So if each cleric has 4 hot keys:

Bob:

1: /mac CH Matt 3 1 2
2: /mac CH Matt 4 1 2
3: /mac CH Matt 5 1 2
4: /mac CH Matt 6 1 2

So when Bob finishes his CH (delay then cast complete), you can actually restart the mac with a different delay and the chain will continue. You will have to restart on each cleric, but I think you get the idea. Just make sure you restart for a cleric that is finished casting and not about to be initiated for a cast.

If the tanks health is getting too low, or spikes are getting close to killing him, you can make the rotation faster and if the the tanks health is staying high, you can adjust the delay longer to save mana.


Fifth, starting the rotation:

OK, so each cleric is actually looking for their name to be called in a specific way with the event:

#Event go "#*# next (#1#)#*#"

which is initiated in the macro with:

/chat ${chatNum} CH on %t, next (${nextCler})

So basically, this is outputting something like this to the 1. MyCHRotation channel:

Bob output: CH on <TankName>, next (Matt)

All clerics will see this output in 1. MyCHRotation channel, but only Matt will see this as his initiator for the CH to start (delay then cast).

So, in your 1. MyCHRotation channel, you will see something like:

Bob output: CH on <TankName>, next (Matt)
Matt output: CH on <TankName>, next (Jake)
Jake output: CH on <TankName>, next (John)
John output: CH on <TankName>, next (Neo)
Neo output: CH on <TankName>, next (Bob)


IMPORTANT:


1. Chat channel is called with a number in the mac:

/mac CH Matt 4 1 2

In this case, channel 1 is the initiator channel and channel 2 is the mana update channel.

So, . . . make sure your clerics are calling the right channel. If you are already in General Channel on one of your clerics, and general is channel 1, the cleric will output the "CH on <TankName>, next (Matt)" there. Don't make that mistake.

2. When it comes time to cast the CH, the cleric is going to cast it on his target.

Make sure all the clerics have the tank on target.

3. So I started all the CH.mac on each cleric and they are all just sitting there doing nothing . . .

You have to start the rotation by initiating one of the clerics with a manual message in the 1. MyCHRotation. Anyone can type it:

"CH on %t, next (Bob)" Actually, you can do it with just "next (Bob)"

That should start the rotation.


Notes:

1. Yes there are several ways this mac can be improved. It is very basic, but for me, it's simplicity is what I liked. It gets the job done.

2. It can easily be gutted to get rid of the chat channels and just use guild chat or group chat (if you have 6 or less clerics).

3. Adding something that makes the cleric target the tank and then possibly a second tank if the first tank dies would really improve the mac.

4. Some kind of distance check on the tank with the possibility of a delayed fast heal if out of CH range would be a good addition.

5. Finally, some kind of check to see if the /varset nextCler ${Param0} is actually alive? If the cleric has been killed for some reason, can initiate the cleric after - so basically store the next two clerics in the chain and skip the first if dead - or if they are OOM?



Rich (BB code):
#Turbo 
#Event go "#*# next (#1#)#*#"
#include spell_routines.inc 

Sub Main 

/declare nextCler outer 
/declare waitTime int outer 
/declare chatNum int outer
/declare castNum int outer
/declare manaNum int outer

/if (!${Defined[Param0]}) {
    /echo [CH] You must Specify the next cleric
    /echo [CH] Unloading
    /endmacro
}

/if (!${Defined[Param1]}) {
    /echo [CH] You must Specify the delay
    /echo [CH] Unloading
    /endmacro
}

/if (!${Defined[Param2]}) {
    /echo [CH] You must Specify the CH rot channel number
    /echo [CH] Unloading
    /endmacro
}

/if (!${Defined[Param3]}) {
    /echo [CH] You must Specify the mana report channel number
    /echo [CH] Unloading
    /endmacro
}


/varset castNum 0
/varset nextCler ${Param0}
/echo Next Cleric in Rotation: ${nextCler}
/varset waitTime ${Param1}
/echo CH Rot Timer: ${waitTime}s
/varset chatNum ${Param2}
/echo Chat Number: ${chatNum}
/varset manaNum ${Param3}
/echo Mana report Chat: ${manaNum}


:loop
/doevents
/goto :loop 

/return 


Sub event_go(line, who)
    
/if (${who.Equal[${Me}]}) {
      /varset castNum ${Math.Calc[${castNum}+1]}
      /echo Waiting ${waitTime} seconds to CH
      /delay ${waitTime}s
      /stand
      /chat ${chatNum} CH on %t, next (${nextCler})   
      /call cast "Complete Heal"
      /sit
      /if (${castNum}==5) {
            /g ${Me.PctMana} Mana
            /rs ${Me.PctMana} Mana
            /chat ${manaNum} ${Me.PctMana} Mana
            /varset castNum 0
      }

}

/return
 
I have been looking for this post thank you!

ok what if we use /gu for our rotaion... how would i set that?

something as simple as /gu instead of the number?
 
"Back in my day, we had to watch the chat box and spam our in-game macros!" ;)

I was a Cleric at EQ launch and for about 3-4 years or so following, so I'm just giving you crap. I would have killed for something like this during raiding...lol
 
That's what I am doing currently, BUT its hard to be the main tank and pay attention to all these priests! :D :D

- - - Updated - - -

I think this post might have confused me more than anything. :bang:
 
Looks like this one broke as well with update...not sure if anyone really uses it. Seems like it's a Spell_routines.inc break instead of the macro. I downloaded a fresh copy of RG compile of Spell_Routines.Inc and replaced the old one, still not working. Anyone else having trouble with the .inc?

ch.PNG
 
Anyone have an update on spell_routines.inc being updated or possibly converting this macro to MQ2cast?


Sent from my iPhone using Tapatalk
 
You can just as easily create this manually by using MQ2Events.

[CH2]
trigger=#*#tells clericchat:2, '2-2#*#'
command=/keypress 2

[ch sit]
trigger=#*#tell clericchat:2, '2-2#*#'
command=/if (!${Me.Sitting}) /timed 120 /sit

When someone tells the channel "2-2" it will hit the macro on hotkey 2, which will in turn have a line telling the next person to go.

The second one watchs for your 2-2 going message and sits 12 seconds later (enough to cast, and enough for lag).

You can also change it up to just have it watch for a cleric's name, and you could also change "command=/if (!${Me.Sitting}) /timed 120 /sit" to command=/if (!${Me.Sitting}) /timed 120 /casting "Yaulp VI" or something along those lines.

Takes a little longer to set up for each cleric, but if you, or you and a couple of friends are running the cleric rot, you never have to set it up again. MQ2Events is awesome :)
 
You can just as easily create this manually by using MQ2Events.

[CH2]
trigger=#*#tells clericchat:2, '2-2#*#'
command=/keypress 2

[ch sit]
trigger=#*#tell clericchat:2, '2-2#*#'
command=/if (!${Me.Sitting}) /timed 120 /sit

When someone tells the channel "2-2" it will hit the macro on hotkey 2, which will in turn have a line telling the next person to go.

The second one watchs for your 2-2 going message and sits 12 seconds later (enough to cast, and enough for lag).

You can also change it up to just have it watch for a cleric's name, and you could also change "command=/if (!${Me.Sitting}) /timed 120 /sit" to command=/if (!${Me.Sitting}) /timed 120 /casting "Yaulp VI" or something along those lines.

Takes a little longer to set up for each cleric, but if you, or you and a couple of friends are running the cleric rot, you never have to set it up again. MQ2Events is awesome :)

Thanks Ethereal I may do just that. I also think I could remove the .inc and replace the /call cast stuff with just /casting ?complete heal? which would effectively transfer it from spell_routines to MQ2Cast. It?s not like it?s a complex macro.

Not home yet but I?ll give it a try and come up with a working version post an update. I?m probably the only one who uses it but I got dependent on it.


Sent from my iPhone using Tapatalk
 
ok this "should" work
Rich (BB code):
#Turbo 
#Event go "#*# next (#1#)#*#"
|#include spell_routines.inc 

Sub Main 

/declare nextCler outer 
/declare waitTime int outer 
/declare chatNum int outer
/declare castNum int outer
/declare manaNum int outer

/if (!${Defined[Param0]}) {
    /echo [CH] You must Specify the next cleric
    /echo [CH] Unloading
    /endmacro
}

/if (!${Defined[Param1]}) {
    /echo [CH] You must Specify the delay
    /echo [CH] Unloading
    /endmacro
}

/if (!${Defined[Param2]}) {
    /echo [CH] You must Specify the CH rot channel number
    /echo [CH] Unloading
    /endmacro
}

/if (!${Defined[Param3]}) {
    /echo [CH] You must Specify the mana report channel number
    /echo [CH] Unloading
    /endmacro
}


/varset castNum 0
/varset nextCler ${Param0}
/echo Next Cleric in Rotation: ${nextCler}
/varset waitTime ${Param1}
/echo CH Rot Timer: ${waitTime}s
/varset chatNum ${Param2}
/echo Chat Number: ${chatNum}
/varset manaNum ${Param3}
/echo Mana report Chat: ${manaNum}


:loop
/doevents
/goto :loop 

/return 


Sub event_go(line, who)
    
/if (${who.Equal[${Me}]}) {
      /varset castNum ${Math.Calc[${castNum}+1]}
      /echo Waiting ${waitTime} seconds to CH
      /delay ${waitTime}s
      /stand
      /chat ${chatNum} CH on %t, next (${nextCler})   
      /casting "Complete Healing"
      /delay 12
      /sit
      /if (${castNum}==5) {
            /g ${Me.PctMana} Mana
            /rs ${Me.PctMana} Mana
            /chat ${manaNum} ${Me.PctMana} Mana
            /varset castNum 0
      }

}

/return
that should work but might need to play with /delay i think its in seconds or it might be milliseconds
 
I read this thread and then felt sad. I've been mostly AFK for MQ2 stuff this past year due to life changes but I thought the CHCHAIN macro filled this need well that CTaylor and I worked on last year. <cries in the corner and realizes I have ants, thanks Maskoi>
 
I would just convert this to MQ2Cast the listed errors are coming from spell routines inc file.

Looks like that is what saar did.
 
I've tried using this but my clerics don't seem to respond to next (clericname), everything seems to load up fine. It shows all the input correctly, I'm wondering if something is outdated or if I missed something obvious on my end?
 
with the macro running and on the second cleric also run it and type
Rich (BB code):
/echo ${who.Equal[${Me}]}
see what it reports
 
technically if you used eqbcs, youd just need one cleric to run a macro that tells the others when to heal, and what target to heal, and ask them for mana reports
 
We're trying to set up multiple clerics between 2-3 other people. This macro would be perfect, but I don't think the clerics are picking up their name for some reason, I'm a noob at this stuff lol
 
Release TLP CH Rotation MAC

Users who are viewing this thread

Back
Top
Cart