• 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

Bug - Spam Targeting Self

Joined
Dec 10, 2016
RedCents
3,125¢
If I change HealsOn=0 then he will no longer do it. However with it on he will spam target between himself and the mob when his health meets the percent.

Rich (BB code):
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=1
HealsSize=10
Heals1=Touch of T'Vem|80|Tap
Heals2=Leech Touch|30|Tap
Heals3=Touch of Hemofax|90|Tap
Heals4=Innoruuk's Dark Blessing|50|Tap
Heals5=Reflexive Revulsion|45|Tap
Heals6=Dichotomic Fang|75|Tap
Heals7=Krellnakor Mantle|30|Tap
Heals8=Deflection Discipline|10|Tap
Heals9=Leechcurse Discipline|5|Tap
Heals10=Dire Testimony|85|Tap
 
Well most TAPS have only a 1.5 second refresh timer, so you are going to tap every 1.5 seconds if needed. The CheckHealth is called before every entry in your DPS array. So If you have an entry in your DPS section that requires you to target yourself, then you will get the switching of targets back and forth like that. We are looking at making a few changes as to where things get targeted so some of this fast target swapping is eliminated, but we will never be able to get rid of every situation.

If you want to try and replace your SingleHeal Routine with the one provided below, it will slow down the swapping based on your heal refresh timers, but it won't eliminate it totally. Make a copy of your current macro before applying this change, just to be safe. I have not fully tested this mod, but it should help.

Rich (BB code):
    Sub SingleHeal(SHealName, SHealType, int SHealHPs, int WhoNum, String SHealFlag)
        /if (!${HealsOn}) /return
        /if (${Me.Moving}) /return
        /if (${Me.Hovering}) /return
        /if (${Spawn[${SHealName} ${SHealType}].ID}==0 ) /return
        /if (${Select[${SHealType},PC,Pet,Mercenary]}==0) /return
        /if (${Me.Invis} && !${AggroTargetID}) /return    
        /if (${DebugHeal}) /echo \amDEBUGHEALS SingleHeal Enter: \ayName: ${SHealName} TType: ${SHealType} Hps%: ${SHealHPs} WhoNum:${WhoNum} \agLine#: ${Macro.CurLine}
        /varset GoMByPass 1
        /doevents
        /varset GoMByPass 0
        /declare i               int     local   0
        /declare SHealSpell      string  local
        /declare SHealTag        string  local
        /declare SHealThem       int     local   ${Spawn[=${SHealName} ${SHealType}].ID}
        /declare MainAssistID    int     local   ${Spawn[=${MainAssist}].ID}
        /declare SHealRange      int     local   0
        /declare HealLoopCount   int     local   0
        /declare HealLoopTimer   timer   local   10
        | Set MA ID to 6 to keep spell durations correct
        /if (${WhoNum}!=6 && ${SHealThem}==${MainAssistID}) /varset WhoNum 6
        /while (1) {
            /if (${SHealType.Equal[corpse]} || !${Spawn[=${SHealName} ${SHealType}].ID} || ${Spawn[=${SHealName}].Type.Equal[corpse]}) /return
            /varset HealAgain 0
            /varset HealLoopCount 0
            /for i 1 to ${SingleHeal.Size}
                /if (${DebugHeal}) /delay 2
                | If heal is null or off |0 or spell/aa/item not ready skip it
                /if (${DebugHeal}) /echo \amDEBUGHEALS SingleHeal \awSpell ${i}: ${SingleHeal[${i}]}  ${SingleHeal[${i}].Arg[1,|]}   ${SingleHeal[${i}].Arg[2,|]}   ${SingleHeal[${i}].Arg[3,|]} \agLine#: ${Macro.CurLine}
                /if (${DebugHeal}) /echo \amDEBUGHEALS SingleHeal \awSpellSkip: !${SingleHeal[${i}].Length} || ${SingleHeal[${i}].Arg[2,|].Equal[0]} \agLine#: ${Macro.CurLine}
                /if (!${SingleHeal[${i}].Length} || ${SingleHeal[${i}].Arg[2,|].Equal[0]}) /continue
                /varset SHealSpell   ${SingleHeal[${i}].Arg[1,|]}
                /varset SHealPct     ${SingleHeal[${i}].Arg[2,|]}
                /varset SHealTag     ${SingleHeal[${i}].Arg[3,|]}
                /varset SHealRange ${Spell[${SHealSpell}].Range}
                /call CastReady "${SHealSpell}" singleheal
                /if (!${SpellReadyL}) /continue
                /if (${Spell[${SHealSpell}].TargetType.Find[Group v]}) /varset SHealRange ${Spell[${SHealSpell}].AERange}
                /if (!${SHealRange}) /varset SHealRange 100
                | New Conditional Check to Skip spell
                /if (${ConditionsOn} && ${HealsCOn} && ${If[${SHCond[${i}]},0,1]}) /continue
                | Skip Heal if pet 
                /if (${Spawn[${SHealThem}].Type.NotEqual[Pet]} && ${SHealTag.Equal[pet]}) /continue
                | Skip spells marked for ME and not healing self
                /if (${SHealTag.Equal[me]} && ${SHealThem}!=${Me.ID}) /continue
                /if (${SHealTag.Equal[class]} && ${Select[${Spawn[id ${SHealThem}].Class.ShortName},${SingleHeal[${i}].Arg[4,|]}]}==0) /continue
                /if (${SHealThem}!=${MainAssistID} && (${HealGroupPetsOn} && ${SHealTag.Equal[pet]} && ${Spawn[${SHealThem}].Type.NotEqual[pet]}) || (!${HealGroupPetsOn} && ${SHealTag.Equal[pet]})) /continue
                | If tag MA/Mob and heal target not MA or tag !MA and heal target MA skip
                /if (${DebugHeal}) /echo \amDEBUGHEALS SingleHeal \awTAG: ${SHealTag.Equal[MA]} && ${SHealThem}!=${MainAssistID} || ${SHealTag.Equal[Mob]} && ${SHealThem}!=${MainAssistID} || ${SHealTag.Equal[!MA]} && ${SHealThem}==${MainAssistID} \agLine#: ${Macro.CurLine}
                /if ((${SHealTag.Equal[MA]} && ${SHealThem}!=${MainAssistID}) || (${SHealTag.Equal[Mob]} && ${SHealThem}!=${MainAssistID}) || (${SHealTag.Equal[!MA]} && ${SHealThem}==${MainAssistID})) /continue
                | Cleric Divine Arbitration and Epics do not work on pets or people out of group
                /if (${Spell[${SHealSpell}].TargetType.Equal[group_v1]} && ${Spawn[id ${SHealThem} group].ID}==0) /continue
                /if (${Spawn[${SHealThem}].Type.Equal[Pet]}  && (${SHealSpell.Find[Aegis of Superior Divinity]} || ${SHealSpell.Find[Harmony of the Soul]} ||  ${SHealSpell.Find[Divine Arbitration]})) /continue
                /if (!${Spawn[id ${SHealThem} group].ID} && (${SHealSpell.Find[Aegis of Superior Divinity]} || ${SHealSpell.Find[Harmony of the Soul]} ||  ${SHealSpell.Find[Divine Arbitration]})) /continue
                | intervention and survival lines only work on group members
                /if (!${Spawn[id ${SHealThem} group].ID} && ${Select[${Me.Class.Name},Druid,Shaman]} && (${SHealSpell.Find[Intervention]} || ${SHealSpell.Find[Survival]})) /continue    
                | Check For Life Taps
                /if (${SHealTag.Find[Tap]}) {
                    /if (!${Pulled} && ${CombatStart} && ${Me.PctHPs}<=${SHealPct} && ${Target.Type.NotEqual[Corpse]} && ${Spawn[${MyTargetID}].ID} && ${Spawn[${MyTargetID}].Distance}<=${SHealRange} && ${Spell${i}GM0}==0) {
                        /call CastWhat "${SHealSpell}" ${Spawn[${MyTargetID}].ID} SingleHeal 0
                        /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                            /call BroadCast ${IRCOn} ${EQBCOn} o "${SHealSpell} for  >> ${Me.CleanName} <<"
                            |/varcalc Spell${i}GM0 (${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod})*10
                            /if (${Spell[${SHealSpell}].Duration.TotalSeconds}>0) {
                                /varcalc Spell${i}GM0 (${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod})*10
                            } else /if (${Spell[${SHealSpell}].RecastTime}>0) {
                                /varcalc Spell${i}GM0 ${Spell[${SHealSpell}].RecastTime}/100
                            } else {
                                /varset Spell${i}GM0 10
                            }
                            /if (${DebugHeal}) /echo DEBUGHEALS SingleHeal Assign Timer:Spell${i}GM0 (${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod}) ${Spell${i}GM0} Line#: ${Macro.CurLine}
                            /return
                        } else /if (${Macro.Return.Equal[CAST_CANCELLED]}) /return
                    } else {
                        /continue
                    }
                }
                | Check For Nuke Heals - contibuted by thenomadman
                /if (${SHealTag.Find[Mob]}) {
                    /if (!${AggroTargetID}) /continue
                    /doevents Switch
                    /if ((${DPSOn} || ${MeleeOn}) && !${MyTargetID} || ${Spawn[${MyTargetID}].Type.Equal[Corpse]}) /call Assist Heals
                    /if (${MyTargetID} && ${Spawn[${MainAssist}].PctHPs}<=${SHealPct} && ${Spawn[${MyTargetID}].LineOfSight} && ${Spawn[${MyTargetID}].Distance}<=${SHealRange} && ${Spawn[${MyTargetID}].Type.NotEqual[Corpse]}) {
                        /varset HealAgain 2
                        /call CastWhat "${SHealSpell}" ${Spawn[${MyTargetID}].ID} SingleHeal 0
                        /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                            /call BroadCast ${IRCOn} ${EQBCOn} o "${SHealSpell} for >>${Spawn[${SHealName} ${SHealType}].CleanName} << cast on ${Spawn[${MyTargetID}].CleanName}"
                            /varset HealAgain 1
                            /return
                        } else /if (${Macro.Return.Equal[CAST_CANCELLED]}) /return
                    } else {
                        /continue
                    }
                }
                | Check conditons for heals
                /if (${DebugHeal}) /echo \amDEBUGHEALS SingleHeal \aw${SHealHPs}<=${SHealPct} && ${Spawn[${SHealName} ${SHealType}].Distance}<=${SHealRange} && ${Spell${i}GM${WhoNum}}==0 \agLine#: ${Macro.CurLine}
                /if (${SHealHPs}<=${SHealPct} && ${Spawn[${SHealName} ${SHealType}].Distance}<=${SHealRange} && ((${SHealFlag.Equal[G]} && ${Spell${i}GM${WhoNum}}==0) || (${SHealFlag.Equal[X]} && ${Spell${i}XT${WhoNum}}==0))) {
                    | target has qualified for a heal
                    /varset HealAgain 2
                    /if (${Spell[${SHealSpell}].TargetType.Equal[Free Target]}) {
                        | Check if spalsh heal target is in line of sight
                        /if (${Target.ID}!=${SHealThem}) {
                            /target id ${SHealThem}
                            /delay 2s ${Target.ID}==${SHealThem}
                        }
                        /if (!${Target.CanSplashLand}) {
                            /echo Splash Spell will NOT land on target. Skipping.
                            /continue                  
                        }
                    }
                    /if (${Select[${EverQuest.Server},zek]} && ${Select[${Target.Type},PC]} && ${Me.Combat}) {
                        /attack off
                        /delay 25 !${Me.Combat}
                    }
                    /if (${SHealThem}==${MainAssistID} && ${Spawn[${MainAssist} ${MainAssistType}].ID}) /removebuff "Divine Barrier"
                    /call CastWhat "${SHealSpell}" ${SHealThem} SingleHeal 0
                    /if (${DebugHeal}) /echo \amDEBUGHEALS SingleHeal \awMR: ${Macro.Return} \agLine#: ${Macro.CurLine}
                    /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                        /call BroadCast ${IRCOn} ${EQBCOn} o "${SHealSpell} on  >> ${Spawn[${SHealName} ${SHealType}].CleanName} <<"
                        /if (${SHealSpell.Find[Promised]}) { 
                            /if (${SHealFlag.Equal[G]}) {
                                /varset Spell${i}GM${WhoNum} 215
                            } else {
                                /varset Spell${i}XT${WhoNum} 215
                            }
                        } else {
                            /if (${SHealFlag.Equal[G]}) {
                                /if (${Spell[${SHealSpell}].Duration.TotalSeconds}>0) {
                                    /varcalc Spell${i}GM${WhoNum} (${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod})*10
                                } else /if (${Spell[${SHealSpell}].RecastTime}>0) {
                                    /varcalc Spell${i}GM${WhoNum} ${Spell[${SHealSpell}].RecastTime}/100
                                } else {
                                    /varset Spell${i}GM${WhoNum} 10
                                }
                            } else {
                                |/varcalc Spell${i}XT${WhoNum} (${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod})*10
                                /if (${Spell[${SHealSpell}].Duration.TotalSeconds}>0) {
                                    /varcalc Spell${i}XT${WhoNum} (${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod})*10
                                } else /if (${Spell[${SHealSpell}].RecastTime}>0) {
                                    /varcalc Spell${i}XT${WhoNum} ${Spell[${SHealSpell}].RecastTime}/100
                                } else {
                                    /varset Spell${i}XT${WhoNum} 10
                                }
                            }
                        }
                        /if (${DebugHeal}) /echo DEBUGHEALS SingleHeal Assign Timer:Spell${i}${If[${SHealFlag.Equal[G]},GM,XT]}${WhoNum} ${Spell[${SHealSpell}].Duration.TotalSeconds}*${DurationMod} ${Spell${i}${If[${SHealFlag.Equal[G]},GM,XT]}${WhoNum}} Line#: ${Macro.CurLine}
                        | Prioritize heals by setting flag to check Health again
                        /varset HealAgain 1
                        /return
                    } else /if (${Macro.Return.Equal[CAST_CANCELLED]}) /return
                | Check if target still needs a heal. spell might not be ready or timer not zero.
                } else /if (${SHealHPs}<=${SHealPct} && ${Spawn[${SHealName} ${SHealType}].Distance}<=${SHealRange}) {
                    /varset HealAgain 2
                }
            /next i
            /if (${HealAgain}!=2 || !${HealLoopTimer}) /break
        }
        /if (${DebugHeal}) /echo \amDEBUGHEALS \aySingleHeal Leave \agLine#: ${Macro.CurLine}
        /varset HealAgain 0
    /return
 
I shouldn't have anything in my DPS section forcing my target to the tank. The only self flag I have is in buffs for voice of thule.

Rich (BB code):
[DPS]
DPSOn=1
DPSSize=9
DPSSkip=1
DPSInterval=1
DPS1=Defiant Stance|100|Once
DPS2=Tylix's Skin|100
DPS3=Encroaching Darkness|99|Once
DPS4=Mindless Hatred|100
DPS5=Torrent of Suffering|98
DPS6=Bond of Xalgoz|90
DPS7=Spear of Tylix|99
DPS8=Vicious Bite of Chaos|99
DPS9=Banestrike|99
DPS10=Ageless Enmity|100
DebuffAllOn=0
DPSCOn=0

Rich (BB code):
[General]
KissAssistVer=11.003
Role=Pullertank
CampRadius=25
CampRadiusExceed=800
ReturnToCamp=1
ChaseAssist=0
ChaseDistance=25
MedOn=0
MedStart=20
MedCombat=0
LootOn=1
RezAcceptOn=1
AcceptInvitesOn=1
GroupWatchOn=2|10
CastingInterruptOn=0
EQBCOn=1
IRCOn=0
MiscGem=12
HoTTOn=0
CampfireOn=0
CharInfo=Shadow Knight|110
DPSMeter=0
MiscGemRemem=1
MiscGemLW=0
ScatterOn=0
ConditionsOn=0
[SpellSet]
LoadSpellSet=1
SpellSetName=KissAssist
[Buffs]
BuffsOn=1
BuffsSize=4
Buffs1=Dark Lord's Unity (Azia)|Dual|Call of Nightfall
Buffs2=Voice of Thule|Me
Buffs3=Soul Flay|mana|15
Buffs4=Harmonious Disruption
RebuffOn=1
CheckBuffsTimer=10
PowerSource=NULL
BuffsCOn=0
[Melee]
AssistAt=100
MeleeOn=1
FaceMobOn=1
MeleeDistance=50
StickHow=snaproll 50%
AutoFireOn=0
UseMQ2Melee=1
[GoM]
GoMSHelp=Format - Spell|Target, MA Me or Mob, i.e. Rampaging Servant Rk. II|Mob
GoMSize=3
GoMSpell1=Dichotomic Fang|Mob
GoMSpell2=Bond of Xalgoz|Mob
GoMSpell3=NULL
GoMCOn=0
[GMail]
GMailHelp=Events currently support - Dead,GM,Level,Named,Leftgroup
GMailOn=0
GMailSize=1
GMail1=NULL
[AE]
AEOn=1
AESize=15
AERadius=50
AE1=Projection of Doom|2|Mob
AE2=Explosion of Hatred|2|Mob
AE3=Shield Flash|2|Mob
AE4=Explosion of Spite|2|Mob
AE5=Innoruuk's Dark Blessing|3|Mob
AE6=Visage of Death|3|Mob
AE7=Claret Blade|3|Mob
AE8=Chattering Bones|3|Mob
AE9=Stream of Hatred|2|Mob
AE10=Revulsion|2|Mob
AE11=Tylix's Carapace|3|Mob
AE12=Krellnakor Mantle|3|Mob
AE13=Deflection Discipline|3|Mob
AE14=Leechcurse Discipline|4|Mob
AE15=Heroic Darktouch Breastplate|3|Mob
AECOn=0
[DPS]
DPSOn=1
DPSSize=9
DPSSkip=1
DPSInterval=1
DPS1=Defiant Stance|100|Once
DPS2=Tylix's Skin|100
DPS3=Encroaching Darkness|99|Once
DPS4=Mindless Hatred|100
DPS5=Torrent of Suffering|98
DPS6=Bond of Xalgoz|90
DPS7=Spear of Tylix|99
DPS8=Vicious Bite of Chaos|99
DPS9=Banestrike|99
DPS10=Ageless Enmity|100
DebuffAllOn=0
DPSCOn=0
[Aggro]
AggroOn=1
AggroSize=4
Aggro1=Terror of Kra`Du
Aggro2=Ageless Enmity
Aggro3=Mindless Hatred
Aggro4=Vicious Bite of Chaos
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=0
HealsSize=10
Heals1=Touch of T'Vem|80|Tap
Heals2=Leech Touch|30|Tap
Heals3=Touch of Hemofax|90|Tap
Heals4=Innoruuk's Dark Blessing|50|Tap
Heals5=Reflexive Revulsion|45|Tap
Heals6=Dichotomic Fang|75|Tap
Heals7=Krellnakor Mantle|30|Tap
Heals8=Deflection Discipline|10|Tap
Heals9=Leechcurse Discipline|5|Tap
Heals10=Dire Testimony|85|Tap
XTarHeal=0
XTarHeal2=0
HealGroupPetsOn=0
HealsCOn=0
XTarHealList=NULL
[Cures]
CuresOn=1
CuresSize=1
Cures1=Purity of Death|Me
[Pet]
PetOn=1
PetSpell=Minion of T`Vem
PetShrinkOn=0
PetShrinkSpell=Tiny Companion
PetBuffsOn=0
PetBuffsSize=1
PetBuffs1=Gift of T`Vem
PetCombatOn=1
PetToysSize=6
PetBreakMezSpell=NULL
PetRampPullWait=0
PetSuspend=0
MoveWhenHit=0
PetHoldOn=1
PetForceHealOnMed=0
PetToysGave=
PetAssistAt=95
[Burn]
BurnSize=27
BurnText=Decepticons Attack
BurnAllNamed=1
Burn1=Cursed Guardian Discipline
Burn2=Fundament: Third Spire of the Reavers
Burn3=Visage of Death
Burn4=Claret Blade
Burn5=Reflexive Revulsion
Burn6=Chattering Bones
Burn7=Krellnakor Mantle
Burn8=Reaver's Bargain
Burn9=Veil of Darkness
Burn10=Reinforced Malaise
Burn11=Selrach's Soulrender Breastplate
Burn12=Harm Touch
Burn13=Unflinching Acrimony
Burn14=Projection of Doom
Burn15=Blood Drinker's Coating
Burn16=Tylix's Carapace
Burn17=Wounding Blade
Burn18=Unholy Aura Discipline
Burn19=Unflinching Acrimony
Burn20=Spite of Ronak
Burn21=Projection of Doom
Burn22=T`vyl's Resolve
Burn23=Soul Touch
Burn24=Encroaching Darkness
Burn25=Veil of Darkness
Burn26=Ageless Enmity
Burn27=Chattering Bones
UseTribute=0
BurnCOn=0
[Pull]
PullWith=Refute for Power
MaxRadius=290
MaxZRange=125
PullWait=0
PullRoleToggle=0
ChainPull=1
ChainPullHP=90
ChainPullPause=30|1
PullLevel=0|0
PullMeleeStick=0
UseWayPointZ=0
PullRadiusToUse=90
PullPause=30|1
[AFKTools]
AFKHelp=AFKGMAction=0 Off, 1 Pause Macro, 2 End Macro, 3 Unload MQ2, 4 Quit Game
AFKToolsOn=1
AFKGMAction=2
AFKPCRadius=425
CampOnDeath=0
ClickBacktoCamp=1
[Merc]
Help=To use: Turn off Auto Assist in Manage Mercenary Window
MercOn=1
MercAssistAt=98
 
Bug - Spam Targeting Self

Users who are viewing this thread

Back
Top
Cart