• 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 - Writing a macro/snippet; Trying to figure out how to handle pet heals... (1 Viewer)

DarkLatto80

New member
Joined
Dec 23, 2016
RedCents
Hello all, semi-new here (I believe this is my first post, although I've been hovering for years)... I nabbed level 2 again simply to root around and see if I could find an answer to my questions, but it seems I cannot find precisely what I am looking for. (anywhere, I also read on several other sites and have VIP there too)

I would consider myself intermediate in MQ2 coding, although I feel like a noob (others think I am some genius but I cannot hold a candle to the guys that write these macros that are thousands of lines long), no where near the "fluent" that Maskoi references in his posts. I've been using MQ2 for about 5 years I guess, but I work a full time job (typically 60-90 hours a week) and have a family with two children so my time is very limited.

I've been creating a series of snippets to be handled through MQ2Melee. Mostly for my mother, who just turned 68, and needs something simple and turnkey. Also, we play on the THF server and use the MQ2EMU UF Gold compile. (not sure if that will make any difference or not, but thought I should share that).

Anyway, what I am trying to accomplish is a simple loop to be run on a timer to check pet health and cast an assigned heal where necessary. I have forgotten more things than I can recall about what I have tried. My latest run was with MQ2NetBots:

/if (${NetBots[X].PetHP}=100 && ${Cast.Ready})
/multi ; /target id ${NetBots[X].PetID} ;
/casting "Spiritual Touch Rk. II" -maxtries|3

With this I keep getting an error that states "non-numeric," and the /echo error shows @6 "100=100 && TRUE," ironically, which is (${NetBots[X].PetHP}=100 && ${Cast.Ready}). (btw X = name of toon)

I've attempted altering it a bunch of ways. When I /echo each piece alone, they all return what I am looking for, but the flow in macro form isn't working. (if there is any stupid typos here it's because I am just typing it out fast, the typos I can assure you aren't in the original works)

I also previously attempted this in my cleric macro without any success (just to add a loop at the end to check pets)... Ironically, the cleric macro, which is super simple, just runs through everyone's HP in group, checks PctHPs, then if below certain intervals 80%, 65%, or 50% it casts heals, uses clickies, or DI where needed and it has 0 errors. However, pets are just a pain for some reason and I know I am just over looking something stupid in my logic... (this is just an excerpt of the Sub PetHealLoop, of course my declarations were all made at the start of the macro)

varset MendPet ${PetHealSpell}
/if (${Group.Member[${GrpMem}].Pet.ID}) {
/if (${Group.Member[${GrpMem}].Pet.PctHPs} < ${PetHealthPct}) {
/target id ${Group.Member[${GrpMem}].Pet.ID}
/g Casting ${MendPet} on ${Target}
/casting "${MendPet}" -targetid|${Group.Member[${GrpMem}].Pet.ID} -maxtries|5

Any help, ideas, or cleaning up of my nonsense is appreciated... Thanks in advance. I've spent months of frustration trying to get this stuff to work. (Thu Jul 27, 2017 6:11 pm was my last post on this topic)

I can live without it, but my mom really wants it on her SHM...

- - - Updated - - -

I wonder if...

/if (${If[${NetBots[X].PetHP}<80(bool),true,false]}=TRUE && ${Cast.Ready})

would fix the error... I'll test that when I get home...
 
I just wanted to share this with everyone... it's ghetto, but it does precisely what I want and works... I know this is a common question around the web for those who want some automation but not fully automated toons...

In your toons ini's pop in this holyflag wherever, I put it near the top of the rotation myself for prioritization purposes:

Rich (BB code):
holyflag1=1
holyshit1=/multiline ; /if (!${Defined[PetHeal1]}) /declare PetHeal1 timer outer 0 ; /if (${PetHeal1}==0 && ${Me.Pet.PctHPs}<69) /mac PetHeal.mac ; /if (${PetHeal1}==0) /varset PetHeal1 10s

Then copy/save this crude little snippet as a mac "PetHeal.mac" in your macros folder. Then in combat melee will call the macro and the healer will target whomever's pet, then cast heal, then retarget the MT and assist.

Rich (BB code):
Sub Main

     | -- replace [healer name here] with actual CLR/DRU/SHM name
     /bct [healer name here] //melee off
	 /delay 5
	      /bct [healer name here] //twist off
	      /delay 5
	           /bct [healer name here] //interrupt
	           /delay 1s
     /bct [healer name here] //target ${Me.Pet.CleanName}
          /delay 2s
	      /bct [healer name here] //face fast
	      /delay 5
	           /bct [healer name here] //casting "heal spell name here"
                   | be sure to adjust the seconds below to your heal spell cast time 
	           /delay 4s 
     | --of course replace the tank/assist name below with your MT/MA name
     /bct [healer name here] //target [tank name here]
          /delay 5
	       /bct [healer name here] //face fast
               /bct [healer name here] //melee on
	       /delay 5
	            /bct [healer name here] //assist
	            /delay 2
	            /bct [healer name here] //attack on
	 
/return

Note you can simply remove the target MT and assist part if you play "pure healer/caster" types and don't activate holys, then just switch it to a downshit.

Of course you could add in declarations to make it more versatile, like instead of naming players.

I have no idea why I didn't think this up before...

I have a main cleric that is running a raid heal macro, but have DRU/SHM in each group to cover pet spot heals (but were doing next to nothing except acting as buff bots until now). You can easily make a 2nd instance of this just name it something like "PetHeal2.mac" and adjust it in the holy/down flags accordingly to have different groups utilizing different healers. I put it on a timer so that if the healer is casting, and gets more than one request, it will interrupt the first but will heal the second, thusly when the first requests again it will fire and land. I put the fast face on just to visually let you know it's working really since LOS doesn't really mean anything.

For all my other pet classes with heals I have something like this as well to reduce the abuse of the spot healer:

Rich (BB code):
; Below is a spell that auto-targets the pet then uses the pet to retarget the mob...
holyflag0=1
holyshit0=/if (${Me.Pet.PctHPs}<85 && ${Cast.Ready[Renewal of Chaos]} && !${Me.Moving} && ${Me.Standing}) /multiline ; /casting "Renewal of Chaos" gem9 ; /delay5 /assist

; Below would be for a toon that does not have a pet specific heal and needs to target the pet...
holyflag0=1
holyshit0=/if (${Me.Pet.PctHPs}<85 && ${Cast.Ready[Spiritual Touch Rk. II]} && !${Me.Moving} && ${Me.Standing}) /multiline ; /target ${Me.Pet.CleanName} ; /delay 1s /casting "Spiritual Touch Rk. II" gem1 ; /delay 6s /assist

; Below is for someone that either does not have a heal spell, or is out of mana. Remove the mana check %{Me.PctMana}<10 check if it is a non-casting toon.
; Swap the clicky item name for whatever, and change the |neck to bag or whatever slot you are using... 
holyflag1=1
holyshit1=/if (${Me.Pet.PctHPs}<85 && %{Me.PctMana}<10 && ${Cast.Ready[Dragon Scaled Neckguard]}) /multiline ; /target ${Me.Pet.CleanName} ; /delay 1s /casting "Dragon Scaled Neckguard"|neck ; /delay 2 /assist

You can replace the spell with any clicky or whatnot to make it work best for you.

Hopefully someone may find this useful...
 
Request - Writing a macro/snippet; Trying to figure out how to handle pet heals...

Users who are viewing this thread

Back
Top