Moderator: MacroQuest Developers
I was able to add the doHideSneak manually but I was a bit confused on where to add the other changes. I looked through the macro but I was unable to figure it out. Any help would be appreciated.Flebbit wrote:Some stuff I add manually that I find useful, that more people may be able to get use out of.
&& ${Target.Animation}!=32
I add this to the attack decision check - mezzed mobs are always in animation 32 whereas fighting mobs are constantly cycling different animations. This stops the problem where a mob that is below the assist threshold is mezzed, and once your current target is dead, the tank targets the mezzed mob to taunt and you immediately charge it and break mez.
${Math.Distance[${Target.Y},${Target.X}:${Spawn[pc ${mainassist}].Y},${Spawn[pc ${mainassist}].X}]}<35
I add this to the attack decision check as well - This says, if the mob is outside melee range of the main tank to hold off on attacking until the mob closes with the tank. This prevents the 'charge an incoming mob and end up tanking like a dork' problem. The 35 is a literal because I am too lazy to parameterize it.
The assist check also needs a !${strikeReady} on it, otherwise it reassists while you are moving into position, then checks strike timer and aborts strike because it's not ready. I think you already included that one though, I don't remember re-adding it to the latest version but figured I would include it just in case.

I made these changes and have been testing extensively with them.loadingpleasewait wrote: The events I'm currently using in arch.mac to detect agro for autojolt are:and so far it appears to work perfectly. Maybe you should reconsider the events you're using.Code: Select all
#Event GotMissed "#*#YOU, but#*#" #Event GotHit "#*#YOU for #*#"
Code: Select all
#Event GotHit "|${Target.CleanName}|#*#YOU for #*#"
#Event GotMissed "|${Target.CleanName}|#*#YOU, but#*#" 
Code: Select all
#Event GotHit "#*#|${Target.CleanName}|#*#YOU for #*#"
#Event GotMissed "#*#|${Target.CleanName}|#*#YOU, but#*#"
Code: Select all
#Event GotHit "#1# YOU for #*#"
#Event GotMissed "#1# YOU, but #*#"
Sub Event_GotHit(string Line, string Mob)
/if (!${Mob.Find[${Target.CleanName}]}) /return
/varset lastevent Event_GotHit
/if (!${aggrotimer}) {
/echo ** AGGRO Detected (struck) **
/popup ** AGGRO Detected (struck) **
}
/varset gotHit TRUE
/varset aggrotimer 5s
/return
Sub Event_GotMissed(string Line, string Mob)
/if (!${Mob.Find[${Target.CleanName}]}) /return
/varset lastevent Event_GotMissed
/if (!${aggrotimer}) {
/echo ** AGGRO Detected (whiff) **
/popup ** AGGRO Detected (whiff) **
}
/varset gotHit TRUE
/varset aggrotimer 5s
/return
Code: Select all
#event Enraged "#*#|${Spawn[id ${CombatTargetID}].CleanName.Right[${Math.Calc[${Spawn[id ${CombatTargetID}].CleanName.Length}-1]}]}| has become ENRAGED#*#"
#event Offrage "#*#|${Spawn[id ${CombatTargetID}].CleanName.Right[${Math.Calc[${Spawn[id ${CombatTargetID}].CleanName.Length}-1]}]}| is no longer enraged#*#"
#event UnderAttack "#1#YOU for #*#"
#event UnderAttack "#1#to#*#YOU, but #*#" Code: Select all
#Event GotHit "|${Target.CleanName}| #*# YOU for #*#"
#Event GotMissed "|${Target.CleanName}| #*# YOU, but #*#"

Code: Select all
#Event GotHit "#*#YOU for #*#"
#Event GotMissed "#*#YOU, but#*#"
Sub Event_GotHit(string Line)
/if (!${Line.Find[${Target.CleanName}]}) /return
/varset lastevent Event_GotHit
/if (!${aggrotimer}) {
/echo ** AGGRO Detected (struck) **
/popup ** AGGRO Detected (struck) **
}
/varset gotHit TRUE
/varset aggrotimer 5s
/return
Sub Event_GotMissed(string Line)
/if (!${Line.Find[${Target.CleanName}]}) /return
/varset lastevent Event_GotMissed
/if (!${aggrotimer}) {
/echo ** AGGRO Detected (whiff) **
/popup ** AGGRO Detected (whiff) **
}
/varset gotHit TRUE
/varset aggrotimer 5s
/return
