• 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

Question - Heal pet to 100% before next pull when PullerPetTank

Joined
Nov 7, 2005
RedCents
1,471¢
Is there a way to heal pet in vanilla KA before starting next pull?

Let's say I am using my 105 Mage as PullerPetTank and that my .ini pet heals are handled by

Rich (BB code):
Heals1=Renewal of Calix|70|Pet

Is there something to heal pet to 100 before next pull?

I do not want to bump the in-combat healing threshold, I just want the pet to be full health before the fight.

I've been going over http://www.redguides.com/community/showthread.php/26002-KissAssist-7-Instructions-amp-Settings-Info but might have missed something.

EDIT: Just thought of one possible workaround, add a pet buff check for Promised Invigoration(delayed heal) that would help a bit
 
random thought... Would a downshit to check pets health when there are no xtargets work? pausing KA long enough to cast a heal might be tricky though...


I don't use KA or mq2melee, so this is just a random thought with no real help...
 
Thanks for the thought :)

I was also thinking a downshit to check for in Combat then heal if not in combat would be ok, but just thought that maybe there is some setting in KA to have your main tank be full health before pull.
 
OK. Playj,

Here is the code you would need to do what you want, but this will only use 1 heal spell and that spell will be the spell with the highest heatat%(Heals1=Renewal of Calix|70|Pet)

ONLY ADD THE HIGHLIGHTED LINES. The other lines are for your reference only.

Add this line in the PET ini load section.

Rich (BB code):
        /call LoadIni Pet PetBreakMezSpell    string      NULL
        /call LoadIni Pet PetRampPullWait       int         0  
        /call LoadIni Pet PetSuspend            int         0
        /call LoadIni Pet MoveWhenHit           int         0
		/call LoadIni Pet PetHoldOn             int         1
		/declare PetHold                		string     outer
		/if (${Me.AltAbility[Pet Discipline]}>=1) {
			/if (${Me.AltAbility[Pet Discipline]}<=5) 			/varset PetHold hold
			/if (${Me.AltAbility[Pet Discipline]}>=6) 			/varset PetHold ghold
		}
		/call LoadIni Pet PetForceHealOnMed     int         0
	}	
| ************************* Mez *************************************

Now find the DoWeMed sub routine. Just replace this whole routine. If you have any custom mods in this routine you will need to update this code with your mods.

Rich (BB code):
    Sub DoWeMed
        /if (!${MedOn}) /return
        /if (${Debug}) /echo \atDEBUG DoWeMed Enter \agLine#: ${Macro.CurLine}
        /declare Med2On int local 0
        /declare MedStat1 string local ${MedStat}
		/declare j int local 0
		/if (${Select[${Me.Class.ShortName},BST,BRD,CLR,DRU,ENC,MAG,NEC,PAL,RNG,SHM,SHD,WIZ]}) /varset MedStat Mana
		/if (${Select[${Me.Class.ShortName},BER,MNK,ROG,WAR]}) /varset MedStat Endurance
        /if (!${Me.Moving}) {
            /if (${Select[${Me.Class.ShortName},BST,PAL,RNG,SHD]} && ${Me.Pct${MedStat2}}<${MedStart} && ${Me.Pct${MedStat}}>${MedStart})  {
                /varset MedStat1 ${MedStat}
                /varset MedStat ${MedStat2}
                /varset Med2On 1
            }
            /if (${Me.Pct${MedStat}}<${MedStart} || (${ChainPullHold}==2 && ${Me.Pct${MedStat}}<100) || (${Group.MainAssist.ID} && ${Group.MainAssist.Sitting} && ${Me.Pct${MedStat}}<20 && !${Role.Find[puller]} && !${MedCombat})) {
                /squelch /tar clear
                /varset Medding 1
                /if (${Attacking}) /call CombatReset
                /if (${Select[${Role},puller,pullertank,pullerpettank,hunter,hunterpettank]}) /call BroadCast ${IRCOn} ${EQBCOn} t "PULLER-> My ${MedStat} is ${MedStart}% time to med."
                | bards twisting while others fighting negate fast med 
				/if (${IAmBard} && ${AggroTargetID}) {
					/if (${Twist}) /squelch /twist off
					/delay 10
					/squelch /twist ${TwistMed}
				}
                /if (${Medding}) /echo Medding until ${MedStat} 100%
                /if (${Me.Pct${MedStat}}<${MedStart}) /call BroadCast ${IRCOn} ${EQBCOn} t "My ${MedStat} is ${MedStart}% time to med."
            :wait_for_resume
                    /doevents
                    /if (${ReturnToCamp} && ${Math.Distance[${CampYLoc},${CampXLoc}]} > 15) {
						/if (!${Me.Mount.ID} && ${Me.Sitting}) /stand
                        /call DoWeMove
                    }
					/if (!${Me.Mount.ID} && ${Me.Standing}) /sit					
                    /if (${Debug}) /echo \atDEBUG ${MedStat} ${MedStat1} ${MedStat2} \agLine#: ${Macro.CurLine}
                    /delay 5
                    /call CheckCasting 50
                    /delay 5
                    /if (!${MedCombat}) {
						/call WaitSubs
                        /call CheckForCombat 1 DoWeMed
                        /if (${AggroTargetID}) {
                            /if (${Med2On}) /varset MedStat ${MedStat1}
                            /varset Medding 0
                            /return
                        }
                    }
                /if (${Me.Pct${MedStat}}<100) /goto :wait_for_resume
                :done_medding
                /if (${Med2On}) /varset MedStat ${MedStat1}
                /varset Medding 0
                /if (${Me.Sitting}) /stand
                /if (${IAmABard} && ${TwistMed}) /stopsong
            }
            /if (${Select[${Role},pullerpettank,puller,hunter,hunterpettank]} && ${Me.PctHPs}<=50) {
                /echo Medding to 100% health
                /if (!${Me.Mount.ID} && !${Me.Sitting}) /sit
                :WaitFor100
                    /doevents
                    /if (${ReturnToCamp} && ${Math.Distance[${CampYLoc},${CampXLoc}]} > 15) {
                        /if (!${Me.Mount.ID} && ${Me.Sitting}) /stand
                        /call DoWeMove
                    }
                    /delay 5
                    /call CheckCasting 50
                    /delay 5
                    /if (!${MedCombat}) {
						/call WaitSubs
                        /call CheckForCombat 1 DoWeMed
                        /if (${AggroTargetID}) {
                            /varset Medding 0
                            /return
                        }
                    }
                /if  (${Me.PctHPs}<100) /goto :WaitFor100
                /if (!${Me.Mount.ID} && ${Me.Sitting}) /stand
            }
            /if (${Select[${Role},pullerpettank,hunterpettank]} && (${Me.Pet.PctHPs}<=50 || ${PetForceHealOnMed})) {
                | Check pet is at full health before pulling.  
                /echo Waiting on pet to full health before next pull        
                /if (${Me.Pet.ID} && ${Me.Pet.PctHPs}<100) {                
                    :WaitingOnPetHealth
                    /for j ${Heals.Size} downto 1
                        /if (${Heals[${j}].Arg[3,|].NotEqual[pet]} || !${Heals[${j}].Length} || ${Heals[${j}].Arg[2,|]}==0) /goto :NextPetHeal
                        /if (${Me.Pet.ID} && ${Me.Pet.Distance}<${Spell[${Heals[${j}].Arg[1,|]}].Range}) {
                            /if (${Debug}) /echo \amDEBUG DoPetMedStuff (${Heals[${j}].Arg[3,|].Find[PET]} && ${HealThem}==${Me.ID} && ${Me.Pet.PctHPs}<=${HealPct} && ${Me.Pet.ID} && ${Me.Pet.Distance}<${Spell[${Heals[${j}].Arg[1,|]}].Range}) \agLine#: ${Macro.CurLine}
                            /call CastWhat "${Heals[${j}].Arg[1,|]}" ${Me.Pet.ID} Med
                            /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                                /call BroadCast ${IRCOn} ${EQBCOn} o "${Heals[${j}].Arg[1,|]} on  >> ${Me.Pet.CleanName} <<"
                                /varcalc PetHealTimer${j} (${Spell[${Heals[${j}].Arg[1,|]}].Duration.TotalSeconds}*${DurationMod})*10
                            }
			                /varset j 1
                        }
                        :NextPetHeal
                    /next j
                    /if (${Me.Pet.ID} && ${Me.Pet.PctHPs}<100 && !${AggroTargetID}) {
				        /delay 6s
				        /goto :WaitingOnPetHealth
				    }
                }
            }          
        }
        /if (${Debug}) /echo \atDEBUG DoWeMed Leave \agLine#: ${Macro.CurLine}
    /return

Save the macro and run it. Let it run till you see it open and then close your buffs window. End the macro and go edit the ini file and change the PetForceHealOnMed=1.

You just have to have the med options turned on and you should be good to go. I have not tested the code, so make a copy of your current macro before making any changes.

Hope this helps.
 
Question - Heal pet to 100% before next pull when PullerPetTank

Users who are viewing this thread

Back
Top
Cart