• 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

Tip - MQ2 React Collection

  • Thread starter Thread starter drwhomphd
  • Anyone can edit the first post of this thread WikiPost WikiPost
  • Start date Start date
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
May be useful for those on Laz Emu. I'm new to MQ2 react and credit the below with inspiration from above posts.

INI:
  UseFBLSwrd:
    action: /useitem Fabled Jagged Sword of the Dragon Slayer
    condition: >-
      !${Me.Casting.ID} && !${Me.CombatState.Equal[COMBAT]} && !${Me.Invis}
      && ${FindItemCount[=Fabled Jagged Sword of the Dragon Slayer]} &&
      ${Me.ItemReady[Fabled Jagged Sword of the Dragon Slayer]} && !${Me.Buff[Fabled
      Nortlav's Vengeance].ID}
  UseBatBoar:
    action: "/useitem Boar Caller's Whistle"
    condition: >-
      !${Me.Casting.ID} && !${Me.CombatState.Equal[COMBAT]} && !${Me.Invis}
      && ${FindItemCount[=Boar Caller's Whistle]} &&
      ${Me.ItemReady[Boar Caller's Whistle]} && !${Me.Buff[Battle
      Boar Familiar].ID}
  UseSnake:
    action: "/useitem Snake Charmer's Flute"
    condition: >-
      !${Me.Casting.ID} && !${Me.CombatState.Equal[COMBAT]} && !${Me.Invis}
      && ${FindItemCount[=Snake Charmer's Flute]} &&
      ${Me.ItemReady[Snake Charmer's Flute]} && !${Me.Buff[Mystic
      Snake Charm].ID}
 
just a friendly reminder about how useitem works, if you don't give it quotes it will try and find the first match from the first word

for example

/useitem cool item of sweetness
vs.
/useitem "cool item of sweetness"

the 1st one will find the first match of an item starting with "cool", which potentially could find "cool ass-cream of Hemorrhoids" the second one will specifically find "cool item of sweetness"
 
just a friendly reminder about how useitem works, if you don't give it quotes it will try and find the first match from the first word

for example

/useitem cool item of sweetness
vs.
/useitem "cool item of sweetness"

the 1st one will find the first match of an item starting with "cool", which potentially could find "cool ass-cream of Hemorrhoids" the second one will specifically find "cool item of sweetness"
Not sure if its the build/emu or what but certain items If I use quotes on it itll throw an error. Trial and error until it works usually.

example being /useitem "Manastone"
 
Last edited:
ROFL! Thank's for the suggestion Sic! That would be an unfortunate mishap. I've found some wonkey-ness with emu and sometimes things do not work the way I'd like, so when I get something to sort-of work, I call it a win.
 
Thanks to @Wolfborn in post https://www.redguides.com/community/threads/mq2-react-collection.72469/post-472470 and @neophys in post https://www.redguides.com/community/threads/mq2-react-collection.72469/post-518814 I have some enhanced Merc control now.

Switches either rogue or wizard mercs between Passive and Burn based on active combat and mob proximity to the character. Also flip flops reacts so they don't consume CPU cycles without need.

[CODE lang="yaml" title="Merc Control"] MercBurn:
action: >-
/multiline ; /stance Burn ; /react enable MercPassive ; /react disable
MercBurn
condition: >-
${Target.Distance} <= 40 && ${Me.CombatState.Equal[COMBAT]} && !${Mercenary.Stance.Equal[Burn]}
&& ${Mercenary.State.Equal[ACTIVE]} && (${Mercenary.Class.Name.Equal[Rogue]}
|| ${Mercenary.Class.Name.Equal[Wizard]})
MercPassive:
action: >-
/multiline ; /stance Passive ; /react enable MercBurn ; /react disable
MercPassive
condition: >-
${Me.XTarget} <= 0 && ${Me.CombatState.NotEqual[COMBAT]} && !${Mercenary.Stance.Equal[Passive]}
&& ${Mercenary.State.Equal[ACTIVE]}&& (${Mercenary.Class.Name.Equal[Rogue]}
|| ${Mercenary.Class.Name.Equal[Wizard]})[/CODE]
 
So I know this is most likely bordering on jumping to a macro instead of using the react, but I'm trying to keep things simple. My question is, is there a way to set and manipulate a variable from inside a reaction? For instance a loop counter initialized as a int starting at 0. Then each time a reaction goes off it increases it (variable++), and the secondary reaction would go off so long as that variable is less than a certain number?
i.e. :
{
int loopcounter = 0;
loop while (loopcounter < 10)
{
practicespellfuncton();
loopcounter++;
}
printf("I tried, I really did.");
}

This isn't the exact scenario I am trying to recreate but figured it was easy enough to visualize. From what I can tell all of the rest of the functionality is there, but I haven't found a way to increment or adjust a variable yet.
 
Ways I can think of to approach this
  1. In your multiline: /if (!${Defined[loopcounter]}) /declare loopcounter int global 0; /if (${loopcounter} < 10) /mac practicespellfunction ; /if (${loopcounter} < 10) /varcalc loopcounter ${loopcounter}+1
  2. Write a script/macro to be called by your react, store the loopcounter in an external config file
  3. Write a script/macro to handle the same conditions as your react and keep the loopcounter completely internal
Depends on what your react is and how often as to which approach makes sense.
 
ok so finally got a chance to test it out and it choked. Here's what I have right now :
SitWaitNew:
action: "/multiline ; if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} ; /sit ; /varcalc sfm 1"
condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving}"
StandupNew:
action: "/multiline ; /timed ${Math.Rand[50]} ; /sit ; if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; if (${Defined[sfm]}) /varcalc sfm 0"
condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && /if(${sfm} = 1)"

The first problem is that on trying to enable react it just keeps repeating Unparsable in calculation : "I"
Second problem is the timer not going off as I had hoped of having a random 5 second interval for it to sit down/stand up from so it isn't so obvious.
If I pull out the variable that I added to try and catch it then it does sit and stand as expected but without the delay I was hoping for.
Anyone able to point me in the right direction?
 
ok so finally got a chance to test it out and it choked. Here's what I have right now :
SitWaitNew:
action: "/multiline ; if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} ; /sit ; /varcalc sfm 1"
condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving}"
StandupNew:
action: "/multiline ; /timed ${Math.Rand[50]} ; /sit ; if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; if (${Defined[sfm]}) /varcalc sfm 0"
condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && /if(${sfm} = 1)"

The first problem is that on trying to enable react it just keeps repeating Unparsable in calculation : "I"
Second problem is the timer not going off as I had hoped of having a random 5 second interval for it to sit down/stand up from so it isn't so obvious.
If I pull out the variable that I added to try and catch it then it does sit and stand as expected but without the delay I was hoping for.
Anyone able to point me in the right direction?
You might be better served writing and .inc file for your macro. Your using if statements in your action. Should be /If yada yada yada
 
You might be better served writing and .inc file for your macro. Your using if statements in your action. Should be /If yada yada yada
I'm not doing a special macro. I'm just using the React and trying to configure my reactions off specific triggers. It's still a work in progress and I know I'm missing a few things but trying to work towards an end goal.
 
ok so finally got a chance to test it out and it choked. Here's what I have right now :
SitWaitNew:
action: "/multiline ; if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} ; /sit ; /varcalc sfm 1"
condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving}"
StandupNew:
action: "/multiline ; /timed ${Math.Rand[50]} ; /sit ; if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; if (${Defined[sfm]}) /varcalc sfm 0"
condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && /if(${sfm} = 1)"

The first problem is that on trying to enable react it just keeps repeating Unparsable in calculation : "I"
Second problem is the timer not going off as I had hoped of having a random 5 second interval for it to sit down/stand up from so it isn't so obvious.
If I pull out the variable that I added to try and catch it then it does sit and stand as expected but without the delay I was hoping for.
Anyone able to point me in the right direction?

YAML:
  SitWaitNew:
    action: "/multiline ; /if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} /sit; /varset sfm 1"
    condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving}"
  StandupNew:
    action: "/multiline ; /timed ${Math.Rand[50]} /stand ; /if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; /varset sfm 0"
    condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && ${sfm} == 1"

I think that puts the reacts into a good state (regardless of whether it does what you want it to do). You were missing a number of forward slashes ('/'). Your timer was set up as a separate statement from your command. More testing is needed (I didn't do any).
 
I think it's getting closer, thank you for what I had missed, but it is still coming back as unparsable if I enable the two new reacts. If I disable them then it works fine.
Here's current variant of it :

SitWaitNew:
action: "/multiline ; /if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} /sit ; /varset sfm 1"
condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning}"
StandupNew:
action: "/multiline ; /timed ${Math.Rand[50]} ; /stand ; /if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; /if (${Defined[sfm]}) /varset sfm 0"
condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && /if (${sfm} == 1 && !${Me.Feigning})"
 
Last edited:
You're going to need to provide a screenshot of the exact message you're getting.

You've also added stuff back in that was taken out in my earlier message.

YAML:
SitWaitNew:
  action: "/multiline ; /if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} /sit ; /varset sfm 1"
  condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning}"
StandupNew:
  action: "/multiline ; /timed ${Math.Rand[50]} ; /stand ; /if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; /varset sfm 0"
  condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && (${sfm} == 1 && !${Me.Feigning})"
 
Last edited:
You're going to need to provide a screenshot of the exact message you're getting.

You've also added stuff back in that was taken out in my earlier message.

Code:
SitWaitNew:
  action: "/multiline ; /if (!${Defined[sfm]}) /declare sfm int global 0; /timed ${Math.Rand[50]} /sit ; /varset sfm 1"
  condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning}"
StandupNew:
  action: "/multiline ; /timed ${Math.Rand[50]} ; /stand ; /if (!${Defined[sfm]}) /declare sfm int global 0; /backoff 0 ; /beep ; /varset sfm 0"
  condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && (${sfm} == 1 && !${Me.Feigning})"
I think too many times of trying to work with this and trying to fix something but not sure what it was.... That and lack of sleep tends to mess things up. Sorry about that. So that got it past the error but for now I just have the issue that the timed function isn't waiting a random 1-5 seconds to do the sit. Or am I not understanding the timed function correctly? I thought it was all executed at the time of the action sent, but with timed it is delayed by 1/10th of a second per the value. When I run this it checks to make sure I'm not in combat, not FD, not moving, not sitting, and less than 100% hp and instantly sits me (no delay at all). Looking in from the outside it's obvious that it's coded since it happens right after a fight faster than I would be able to hit the sit key, and that's what I'm trying to avoid to make it less efficient :)
 
It appears /timed will only accept a constant numerical value. I see a few different options from here:
  • Create a script to do this work for you
  • Pick something you can live with (e.g., /timed 14 /sit) for all conditions
  • Create a bunch of reacts all with a different /timed value in a range (i.e., 20-29), /varset sfm ${Math.Rand[20,30]}, add ${sfm} == <each individual value> to all the conditions
YAML:
SitWaitNew20:
  action: "/multiline ; /if (!${Defined[sfm]}) /declare sfm int global 0; /timed 20 /sit ; /varset sfm ${Math.Rand[20,30]}"
  condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning} && ${sfm} == 20"
SitWaitNew21:
  action: "/multiline ; /if (!${Defined[sfm]}) /declare sfm int global 0; /timed 21 /sit ; /varset sfm ${Math.Rand[20,30]}"
  condition: "${Me.PctHPs} <= 99 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning} && ${sfm} == 21"
 
Thank you Rouneq finally got a working solution based off the multi reacts. Had to combine the mq2events with reacts for it to really shine well. In the events I have a trigger on mob killed to do the /varset sfm ${Math.Rand[15,30]} and then in the reacts I have
starting with 15 on through 30 here.
SitWaitNew29:
action: "/multiline ; /varset sfm 1 ; /timed 29 /sit"
condition: "${Me.PctHPs} <= 98 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning} && ${sfm} == 29"
SitWaitNew30:
action: "/multiline ; /varset sfm 1 ; /timed 30 /sit"
condition: "${Me.PctHPs} <= 98 && !${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Feigning} && ${sfm} == 30"
StandupNew:
action: "/multiline ; /varset sfm 0 ; /timed 15 /stand ; /backoff 0 ; /beep "
condition: "${Me.PctHPs} == 100 && ${Me.Sitting} && ${Me.CombatState.NotEqual[COMBAT]} && ${sfm} != 0 && !${Me.Feigning}"
Works really well with a slight random feel to the sitting that makes it a little more human. So far it still requires a little bit of watching over but it seems to work well. Thank you for the help and the chance to actually learn a lot more about MQ.
 
Hello All,
Can i get some guidance on this, been trying to get this to work on the Shie mission. Using an enchanter with kissassist, the first /backoff on command works and then he casts the spell and mezes the add. However after the mob is mezed it should delay for 4 seconds (4 seconds is 2 seconds longer than the spell cast i have tried 5 to be safe and no luck) and then use /backoff off and start attacking/dpsing again. It doesn't it stays in /backoff on mode. When i do this manually and switch over and use command /backoff off chanter goes back doing what she should be doing. Not sure why it doesn't work on this script.

TestReact:
action: >-
/multiline ; /backoff on ; /delay 1 ; /target datiar xi tavuelim
; /delay 1 ; /g %T Targeted ; /delay 2 ; /cast 2 ; /delay 4 ; /backoff off
condition: "${Spawn[npc datiar xi tavuelim radius 60].ID}"
 
Hello All,
Can i get some guidance on this, been trying to get this to work on the Shie mission. Using an enchanter with kissassist, the first /backoff on command works and then he casts the spell and mezes the add. However after the mob is mezed it should delay for 4 seconds (4 seconds is 2 seconds longer than the spell cast i have tried 5 to be safe and no luck) and then use /backoff off and start attacking/dpsing again. It doesn't it stays in /backoff on mode. When i do this manually and switch over and use command /backoff off chanter goes back doing what she should be doing. Not sure why it doesn't work on this script.

TestReact:
action: >-
/multiline ; /backoff on ; /delay 1 ; /target datiar xi tavuelim
; /delay 1 ; /g %T Targeted ; /delay 2 ; /cast 2 ; /delay 4 ; /backoff off
condition: "${Spawn[npc datiar xi tavuelim radius 60].ID}"
multiline will fire all commands (that are separated by a semi-colon, concurrently). if you want things to fire in some sequence, then like big_daddy said, you need to use /timed to make things happen in a particular (and necessarily independent) order
Code:
/multiline ; /backoff on; /timed 3 /target datiar xi tavuelim; /timed 4 /stopcast; /timed 5 /g %T Targeted; /timed 10 /cast 2; /timed 40 /backoff off

PS the pro-tip would be to use an instant cast AA instead of a spell, beguiler's banishmet, directed banishment, beam of slumber, noctambulate etc
 
Last edited:
multiline will fire all commands (that are separated by a semi-colon, concurrently). if you want things to fire in some sequence, then like big_daddy said, you need to use /timed to make things happen in a particular (and necessarily independent) order
Code:
/multiline ; /backoff on; /timed 3 /target datiar xi tavuelim; /timed 4 /stopcast; /timed 5 /g %T Targeted; /timed 10 /cast 2; /timed 40 /backoff off

PS the pro-tip would be to use an instant cast AA instead of a spell, beguiler's banishmet, directed banishment, beam of slumber, noctambulate etc
Thank you Hylander and Big Daddy
 
I am working on a react to work in conjunction with MQgrind using the RGmercs for all of my toons.

I am running into an issue where if Have an add wander into camp while my group is meddling, the macros fire back up, but the SK just does not tank, he stands there and taunts. Pretty sure the problem is in my reacts but not 100% sure.

I am not using any globals', however I am stumped. Any ideas?

reacts:
GPSit0:
action: /sit
condition: "(${Group.Member[0].PctMana} < 95 && !${Group.Member[0].Sitting}"
GPSit1:
action: "/dex ${Group.Member[1]} /sit"
condition: "(${Group.Member[1].PctMana} < 95 && !${Group.Member[1].Sitting}"
GPSit2:
action: "/dex ${Group.Member[2]} /sit"
condition: "(${Group.Member[2].PctMana} < 95 && !${Group.Member[2].Sitting}"
GPSit3:
action: "/dex ${Group.Member[3]} /sit"
condition: "(${Group.Member[3].PctMana} < 95 && !${Group.Member[3].Sitting}"
GPSit4:
action: "/dex ${Group.Member[4]} /sit"
condition: "(${Group.Member[4].PctMana} < 95 && !${Group.Member[4].Sitting}"
GPSit5:
action: "/dex ${Group.Member[5]} /sit"
condition: "(${Group.Member[5].PctMana} < 95 && !${Group.Member[5].Sitting}"
GrindBegin:
action: >-
/multiline ; /grind start ; /react disable GrindBegin ; /react enable GrindShrink ; /react enable
Grindpause
condition: "${Me.PctHPs} > 0"
GrindEnd:
action: >-
/multiline ; /dgga /rg off ; /react disable Grindpause ; /react disable
Grindresume ; /react disable GPSit0 ; /react disable GPSit1 ; /react
disable GPSit2 ; /react disable GPSit3 ; /react disable GPSit4 ;
/react disable GPSit5 ; /react disable GrindShrink ; /react disable
GrindRescueEnd ; /react disable GrindRescue ; /react disable Grindresume
; /react disable Grindpause ; /react disable GrindEnd
condition: "${Me.PctHPs} > 0"
GrindRescue:
action: >-
/multiline ; /dgga /rg on ; /react disable Grindpause ; /react disable
Grindresume ; /react disable GPSit0 ; /react disable GPSit1 ; /react
disable GPSit2 ; /react disable GPSit3 ; /react disable GPSit4 ;
/react disable GPSit5 ; /react disable GrindShrink ; /react enable
GrindRescueEnd ; /react disable GrindRescue
condition: >-
((${SpawnCount[npc radius 50 xtarhater]} >= 1) || (!${Me.CombatState.NotEqual[COMBAT]})
&& ${Grind.Paused})
GrindRescueEnd:
action: >-
/multiline ; /dgga /rg off ; /react disable Grindpause ; /react enable
Grindresume ; /react enable GPSit0 ; /react enable GPSit1 ; /react
enable GPSit2 ; /react enable GPSit3 ; /react enable GPSit4 ; /react
enable GPSit5 ; /react enable GrindShrink ; /react disable GrindRescueEnd
; /react enable GrindRescue
condition: >-
(${Me.CombatState.NotEqual[COMBAT]} && ${Grind.Paused} && ${SpawnCount[npc
radius 50 xtarhater]} < 1)
GrindShrink:
action: /dex Halil /alt activate 9503
condition: >-
((${Group.Member[0].Height} > 2.05) || (${Group.Member[1].Height}
> 2.05) || (${Group.Member[2].Height} > 2.05) || (${Group.Member[3].Height}
> 2.05) || (${Group.Member[4].Height} > 2.05) || (${Group.Member[5].Height}
> 2.05))
Grindpause:
action: >-
/multiline ; /grind pause ; /dgga /rg off ; /dgga /sit ; /react
disable Grindpause ; /react enable Grindresume ; /react enable GPSit0
; /react enable GPSit1 ; /react enable GPSit2 ; /react enable GPSit3
; /react enable GPSit4 ; /react enable GPSit5 ; /react enable GrindShrink
; /react enable GrindRescue
condition: >-
(((${Group.Member[0].PctMana} < 20) || (${Group.Member[1].PctMana}
< 20) || (${Group.Member[2].PctMana} < 20) || (${Group.Member[3].PctMana}
< 20) || (${Group.Member[4].PctMana} < 20) || (${Group.Member[5].PctMana}
< 20)) && (${Me.CombatState.NotEqual[COMBAT]} && ${Grind.Active}
&& !${Group.AnyoneMissing}))
Grindresume:
action: >-
/multiline ; /grind resume ; /dgga /rg on ; /react disable Grindresume ; /react enable Grindpause ; /react enable Grindresume ; /react disable GPSit0 ; /react disable GPSit1 ; /react disable GPSit2 ; /react disable GPSit3 ; /react disable GPSit4 ; /react disable GPSit5 ; /react enable
GrindShrink ; /react disable GrindRescue ; /react disable GrindRescueEnd
condition: >-
((${Group.Member[0].PctMana} > 95) && (${Group.Member[1].PctMana}
> 95) && (${Group.Member[2].PctMana} > 95) && (${Group.Member[3].PctMana}
> 95) && (${Group.Member[4].PctMana} > 95) && (${Group.Member[5].PctMana}
> 95) && ${Grind.Paused})
sleep_frames: 15
 
Can anyone help me with this, I’m looking for a react to have my Paladin /grind pause /pal mode 4 when his mana % is less 30%. Then at 95% /pal mode 7 /grind resume.
 
Can anyone help me with this, I’m looking for a react to have my Paladin /grind pause /pal mode 4 when his mana % is less 30%. Then at 95% /pal mode 7 /grind resume.
You posted this same question in the MQ2Grind thread, where I responded and instructed you to scroll up. I posted an example that you could modify, and even that React was from someone else that posted before me. If you are still struggling, come back and ask questions and we can help you.
 
You posted this same question in the MQ2Grind thread, where I responded and instructed you to scroll up. I posted an example that you could modify, and even that React was from someone else that posted before me. If you are still struggling, come back and ask questions and we can help you.
I Keep getting error line 9 offset incorrect?
 
Is there any possible way for MQ2React actions (or Lua scripting) to affect KissAssist conditionals? I.e. can I setup KA to use a conditional that it doesn't have logic for but that is instead controlled externally? The reason that I'm looking for this is because having scripting (Lua or MQ2React) cast spells with a non-zero cast time is a problem as it will possibly conflict with what KA is doing. But if I can have my external scripting set/clear the KA conditional flag that controls the buff (or whatever), then the problem goes away because the action will eventually be taken by KA when it is appropriate to do so.

Here is what I'm trying to accomplish: I want to implement a buff rotation for a group buff whose duration is shorter than the recast time (specifically the SK epic clicky which has a 0.8 cast time). It just seems so much easier to write a Lua script to decide when to cast and who should cast next than to try to write super-complex KA conditionals.

Thanks.
 
Is there any possible way for MQ2React actions (or Lua scripting) to affect KissAssist conditionals

Sounds like a neat trick if someone can make it work.

I do something similar with the Rage of Rolfron clicky. However I just make it easy for one character to cast it in their Burn and then all the subsequent characters just check for it's presence. I put it in varying depths in their DPS section so 2 - 3 minutes into a fight none of them will have similar timing.

DPS41=Rage of Rolfron|91|Cond16

Cond16=${Cond[5]} && !${Me.Song[Circle of Power].ID}
 
Could use some help with this. The react actually does work, but when I have myself targetted my MQ window is constantly spammed with the message "Unparsable in Calculation: 'T'"

[CODE lang="yaml" title="SlowIt React"]
globals:
CastReady: "!${Me.Invis} && !${Me.Moving} && !${Me.Casting.ID}"
AggroTarget: "${Target.Type.Equal[npc]} && ${Me.CombatState.Equal[COMBAT]} && ${Target.Aggressive}"
reacts:
SlowIt:
action: "/cast Turgur's Insects"
condition: >-
${React.Global[CastReady]} && ${React.Global[AggroTarget]} &&
!${Target.FindBuff[name "Turgur's Insects"]} &&
${Cast.Ready[Turgur's Insects]}
[/CODE]

If I remove !${Target.FindBuff[name "Turgur's Insects"]} I don't get the spam message, but I don't think that line is wrong because it still works actually
 
Could use some help with this. The react actually does work, but when I have myself targetted my MQ window is constantly spammed with the message "Unparsable in Calculation: 'T'"

[CODE lang="yaml" title="SlowIt React"]
globals:
CastReady: "!${Me.Invis} && !${Me.Moving} && !${Me.Casting.ID}"
AggroTarget: "${Target.Type.Equal[npc]} && ${Me.CombatState.Equal[COMBAT]} && ${Target.Aggressive}"
reacts:
SlowIt:
action: "/cast Turgur's Insects"
condition: >-
${React.Global[CastReady]} && ${React.Global[AggroTarget]} &&
!${Target.FindBuff[name "Turgur's Insects"]} &&
${Cast.Ready[Turgur's Insects]}
[/CODE]

If I remove !${Target.FindBuff[name "Turgur's Insects"]} I don't get the spam message, but I don't think that line is wrong because it still works actually
Have to be a number or boolean for a condition check.

So you want to convert that to a number with an .ID (tho off the top of my head I don't know Find buff has an .ID member)
 
How would you prioritize reacts? Just have to name them in alphabetical order? Also, is there a way to tell if I have vision of someone? i may or may not have see invis, and the target might be a rogue in SOS who may or may not be in my groups, if htey are i can see them anyway, if they're not then it doesn't matter if i have see invis or not.
 
Last edited:
Here is one for reviving dead mercs, trying it atm

ReviveMerc:
action: /notify MMGW_ManageWnd MMGW_SuspendButton LeftMouseUp
condition: "${Window[MMGW_ManageWnd].Child[MMGW_SuspendButton].Enabled} && ${Mercenary.State.Equal[DEAD]}"
I have been trying to get this to work effectively after turning off merc in kissassist and autogroup etc.

I am unsure what is happening (hence why I have turned the other merc things off) but nearly every time it will click revive then immediately suspend. I get the feeling it is hitting the button too fast and auto suspending. How would I get a delay in there to give it time to process the leftup without hitting a 2nd time so quickly. Would I add it to the action before and possibly after to give the condition time to no longer be correct.

action: /delay 10 /notify MMGW_ManageWnd MMGW_SuspendButton LeftMouseUp /delay 10
Something like that? Would it need to be multiline?
 
I have been trying to get this to work effectively after turning off merc in kissassist and autogroup etc.

I am unsure what is happening (hence why I have turned the other merc things off) but nearly every time it will click revive then immediately suspend. I get the feeling it is hitting the button too fast and auto suspending. How would I get a delay in there to give it time to process the leftup without hitting a 2nd time so quickly. Would I add it to the action before and possibly after to give the condition time to no longer be correct.


Something like that? Would it need to be multiline?
could be mq2autogroup messing with you?


Group slots can be reserved for mercenaries. If you set one of your characters to use their mercenary they will attempt to revive them if dead, or if you don't set a character to have a mercenary and they are up they will be suspended. This action is only done right away, it doesn't continue through your time playing.
 
I have turned mq2autogroup off and have been using Makecrew to form the group. I am trying to limit as many things that could be hitting that button as its so annoying to have 10mins of no merc.
 
i don't know, if mq2react is the right one for my question, but i will try....
how can i get my toons standing around and doing nothing, to click their primary anchor transport device (maybe even depending on the zone name); if they haven't moved for example for 10 minutes... (whenever this is possible at all)
thanks for some hints or maybe even a solution.
 
MQ2Groundspawn (bard):

[CODE lang="yaml" title="REACTS"] shinyfade:
action: >-
/multiline ; /echo I GOT AGGRO, NEED TO FADE
; /delay 5 ; /alt act 212
condition: >-
${GroundSpawns.Active} && ${Me.AltAbilityReady[Fading Memories]}
&& ${Me.CombatState.Equal[COMBAT]}
shinyinvis:
action: >-
/multiline ; /echo STARTED UP OR LOST INVIS ; /delay 5 ; /alt act
231
condition: >-
${GroundSpawns.Active} && ${Me.AltAbilityReady[Shauri's Sonorous
Clouding]} && !${Me.Invis}
shinyselos:
action: >-
/multiline ; /echo STARTED UP OR LOST SELOS
; /delay 5 ; /alt act 3704
condition: >-
${GroundSpawns.Active} && ${Me.AltAbilityReady[Selo's Sonata]} &&
!${Me.Buff[Selo's Accelerato].ID}
[/CODE]
 
Last edited:
Tip - MQ2 React Collection

Users who are viewing this thread

Back
Top
Cart