MQ2Melee, Casters and Slam Timing

SiegeTank

Lifetimer
Joined
Aug 20, 2007
Messages
2,307
Reaction score
11
Points
38
My warrior is having problems interrupting caster mobs, especially the self-healing shamans. I have MQ2Melee handling things. I'm wondering if this is ideal. The plugin is configured to slam as often as possible, which I guess is every 12 seconds, the refresh timer. But this means that my warrior could possibly not have slam available once the caster commences to cast and he's going to get that cast off before slam refreshes.

I know I can set MQ2Melee to slam only when the chat "sees" the mob begins to cast. But then I have to shut off "auto-slamming", right?

Maybe I need to write a macro which will watch for the mob casting message event. In that case it will shut off "autoslamming" and then only slam in response to a mob-casting event. Then when the mob dies it would turn back on autoslamming. That make sense?

Just trying to get some tips on how other warriors use MQ2Melee in this regard. Any help, as always, will be mucho appreciated. Thx.
 
Last edited:
/melee slam=0
/melee bash=0 save

Then, manually hit bash / slam when you see mobs casting.
 
Using MQ2Melee I'm trying to avoid doing things manually as much as possible, being lazy and wanting not to have to click too often.

The macro I describe above would work, right?

Not quite sure how to configure MQ2Melee to watch for the mob casting message. Any tips on that?
 
i don't have a warrior but i'd set up this way
slam=0
slamif=${If[${Target.Casting},1,0]}
 
Something along these lines should work...didn't check the code, so you may need to tweak.
Code:
#Event Caster  "#*# begins to cast a spell."

sub main

sub :target
/tar npc
/delay 2
/goto :checkclass

sub :checkclass
/if (${Target.Class}==Warrior} || ${Target.Class}==Berzerker} || ${Target.Class}==Rogue) {
    /melee slam=1 save
    /goto :killit
    }
/melee slam=0 save
/goto :killit

sub :killit
/if (!${Target.ID}) /goto :target
/if (${Me.AbilityReady[DISARM]}) /doability disarm
/doevents
/goto :killit

sub event_Casting
/if (${Me.AbilityReady[SLAM]}) /doability SLAM
/return
 
Here are some things that will improve the code above..

basically you want to verify it is your target that is casting a spell.. ie if the shaman begins to cast a spell you don't want to hit slam.. some of it may be wrong dunno =)

Code:
#Event Caster  "#1# begins to cast a spell."
Pass the name of the "person" that casted the spell

Code:
sub event_Casting(string whoCasted)
Catch the name of the person and store it in the string "whoCasted"

Code:
/if (${whoCasted.Equal[${Target.CleanName}]})

If whoever casted is the same as your target, slam him =)
 
Thanks Math. Realized the downfalls to my code, but didn't know how to double check that your target was the one casting! :) I was going to use %T, but I knew that was wrong. LOL

Oh, and the if statements with the warrior/zerker/rogue are becaues those, to the best of my knowledge, are the only 3 classes that don't cast, so was easier to check that side than check to see if it was a caster.
 
Thanks for the advice.

I think we're all kinda reinventing the wheel here since MQ2Melee seems to have all of this covered with built-in options.

For example, to slam only when the mob is casting, I think all you need to know is set the following switches:

stun0=12950
stunning=100

This tells MQ2melee to stun when the target is casting. "100" means do it from the beginning; you could lower this if you only want to stun if the mob is low health and, for example, about to gate.

Stun0=12950 just tells the plugin to use SLAM in the event that the mob is casting. You can change this ID to use a spell or a clicky. ID comes from the ID field in the Lucy raw data page.

Now to taunt ONLY when you lose aggro, I think we just need a tauntIF statement which returns a "1" whenever the mob's target is no longer the tank. I'm still working on this language and could use some help here. I need an IF statement which checks if the "target of my target" is ME and returns 1 if is not. Then this could be plugged into TAUNTIF= and it should make MQ2Melee taunt only if I lose the target's attention.

So the question how do you code:

${[Target_of_my_target]!EQUAL[Me]} ?
 
Siege,
The point of my macro was to automatically change you from stun-mode for casters to dps mode (not much), for non-casters.

I wasn't aware of the mq2melee functionality built in. With that being said, you could adjust the macro to update those settings if it's a caster. Otherwise, you'll never bash a non-caster.
 
Yeah, that's a point well-taken. Maybe I still need a macro to toggle "auto-bash" on and off depending on whether the mob is a caster or not. I will still have to see about a macro for that.

Still having trouble figuring out how to determine if the mob has switched targets from my tank, though. Doesn't appear to be any built-in utility for determining the target of my target. Can /assist be used to return a target useable by MQ? Then that could be compared to "myself" to see if my tank has lost aggro.

?
 
If you have the Leader HoTT ability, then you can use ${Me.TargetOfTarget} to access spawn data on your target's target. Which, if you have aggro, would be you. So checking ${Me.TargetOfTarget.ID}==${Me.ID} would tell you if you had aggro. Only works if you have the Leader AA for Target of target, though.
 
If you have the Leader HoTT ability, then you can use ${Me.TargetOfTarget} to access spawn data on your target's target. Which, if you have aggro, would be you. So checking ${Me.TargetOfTarget.ID}==${Me.ID} would tell you if you had aggro. Only works if you have the Leader AA for Target of target, though.

I'm working on acquiring that. Need 3 more leader AA's.

What about taking an /assist off the mob? Any way to use that in MQ?
 
Yes, but you'd actually have to /assist the mob, which would change your target. you'd need to set a variable to declare the current mob as the target to retarget the mob by /target <variable>...
 
Yup. If you do /assist, you can watch for your target to change. One downside is the lag involved, which is easily accounted for with a delay. Here's an example snippet for how I would go about checking:

Code:
Sub CheckAggro
/declare MobID
/varset MobID ${Target.ID}
/assist
/delay 2s ${Target.ID}!=${MobID}
/if (${Target.ID}!=${Me.ID}) {
 /target id ${MobID}
} else {
 /target id ${MobID}
 /call SubToGetAggroBack
}
/return
 
Doing some harder lookin', I discover the statement of choice appears to be this one, which appears in a lot of MQ2Melee .ini files:

TauntIF=${If[${Me.GroupSize} && !${Melee.GotAggro},1,0]}

As I understand it, this means IF I'm in a group and I don't have aggro... TAUNT!

I do see warnings that it isn't always 100% reliable, not sure why tho... but worth a try.
 
I believe the unreliability comes from the way it checks for .GotAggro. From what I remember, it looks at things like if the mob is facing you, or what it's animation id is, etc.

Should work OK for you until you get the Leader AA, then you can replace it with ${Me.TargetOfTarget.ID}!=${Me.ID}
 
/delay 2s ${Target.ID}!=${MobID}

What does that do? I know what "delay 2s" means but why the code after it? Is this two commands issued in sequence?

I do think I need to write a macro to accomplish what I want here, using some of the suggestions kindly offered.

I just don't find that TAUNTIF and the STUNNING settings working well for me. I've seen mobs get off lots of casts without BASH being initiated by my toon and I've lost a lot of aggro which I wouldn't lose if I was actively controlling the TAUNT button. Maybe MQ2Melee handles so much that there is a delay involved in how it responds to these. Maybe not, but whatever the case when I tested out a quick crude macro it worked very well. I inserted an echo statement for debugging purposes and found that the response to a mob casting, or to my losing aggro, was very quick with a macro.

If anyone cares, I will post my macro here at some point.

I'm thinking of having two versions: one which would automatically spam TAUNT, BASH and DISARM, to work up the skills, for mobs and groups where I don't have to worry too much about needing to time those skills exactly. Then another version, especially for caster mobs, or for groups where I lose aggro on tough mobs, which would have the code to detect loss of aggro and/or mob casting messages, to use as triggers. I would just have to decide which macro to commence before the pull, which isn't a big deal.