• 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
MQ2React

Release MQ2React

This has happened twice to me.

I type in /react enable MethodName and my entire yaml file is basically rewritten/deleted. What am I doing wrong?
 
I just had the same thing happen to me. My file is back to the default one.

The problem was I use /bcaa to update react, and it causes the file to delete itself because there were 20+ boxes trying to update it at once.

Just stop toggling reaction methods more than one at a time (in game via /bcaa) and you should be fine.
 
The problem was I use /bcaa to update react, and it causes the file to delete itself because there were 20+ boxes trying to update it at once.

Just stop toggling reaction methods more than one at a time (in game via /bcaa) and you should be fine.

I have never turned on a react that way. I always enabled or disable it in the file itself. So I don't think that is what wiped the file for me.
 
I have never turned on a react that way. I always enabled or disable it in the file itself. So I don't think that is what wiped the file for me.

I'm sorry to hear that as it must be frustrating.

Have you tried doing /react save after loading in a new file?

Also, perhaps there is a typo in the file itself causing the environment to detect a 'corruption' and delete? Even the most minor flaw in the code itself can cause these files to malfunction.

Hope you are able to figure out this problem.
 
first Idea: add an additional check at "ShmH2BP" and "ShmH3SoothAA" 's condition if not the cast of Zrelik is running ... anyone can help me to find the sysntax?
like !"{Me.Casting("Zreli'ks Recourse")} ... or similar?

can I generally check if another react is progressing (any other) inside a condtiton of react, so 1 react may not interrupt another react?
You should be able to add this into the same line. I'm not familiar with the spell you are working with but you could change the line indicated with the spell name and you should be fine.
&& !${Spell[${Me.Casting}].Name.Equal[insert-spellname-here]}
 
@BrianGragg tyvm, seems to have solved my problem. Working as intended, since I added the condition you suggested.


Here I got the next one. The following react:

[CODE lang="yaml" title="Save pullers life"] MageCoHPuller:
action: /multiline ; /stopcast ; /xtarget set 13 puller ; /target id ${Spawn[${Me.XTarget[13]}].ID} ; /alt act 7050
condition: >-
${${Group.Puller}.PctHPs} < 80 && ${Me.CombatState.NotEqual[COMBAT]}[/CODE]
is meant so save the pullers life by launch a CoH on the mage in case he's hindered to turn back to camp

but creates a flush of repeating messages on the mq2-window as soon as I reload react with this one enabled:
1613922280312.png
the undefined Variable is the char-Name of the puller

the first part of the condition "${${Group.Puller}.PctHPs} < 80" may be the culprit, it's the only part, I made myself. The other parts are snippets, already elsewhere in use

___________________________________________________________________________________
The following modification eliminated error messages:
[CODE lang="yaml" title="save the puller"]globals:
PullerHP: "${Group.Puller.PctHPs}"

MageCoHPuller:
action: /multiline ; /stopcast ; /xtarget set 13 puller ; /target id ${Spawn[${Me.XTarget[13]}].ID} ; /alt act 7050 ; /g Emergency-CoH emminent
condition: >-
${React.Global[PullerHP]} < 80 && ${Me.CombatState.NotEqual[COMBAT]}[/CODE]

next step is, to extend by checking puller.rooted and puller.snared
 
Last edited:
@Many_Whelps : forgot to give you a : many thanks here. That worked.

actually looking for the name of the parameter which defines the cycle per second ..
Wasn't there a parameter like : cyclePerSecond = 10 ... 50

what is the right name and place of it? I want to tune it down a little.

Edit:
Talking about the decembre.11 Update: "Config setting added to affect rate of react processing."

Edit2:
sleep_frames: 40 ... at the lower end of the ini-Yaml

Edit3:
sleep_frames: 40 ... is something like: react will cycle throught all its condition once every 40 frames.
So setting it to 50 will make it a little less reactive and set it to the "reactiveness" of the time b4 dec.11. Did I understand this right?
 
Last edited:
Was getting problems with react killing my group because of its speed? maybe. Old i5 Intel cpu.

I have my charm and and the Unity clicky in my react. The react is actually superfast trying to click them, making them break. It makes my clickies not clickable even if I check them and the Timer says Ready.

The test I did was I put a /fs Clicking Charm and /fs Clicking Feather

The spam was heavy. It made my macros functioning not so well and it made the clicky timers go bonkers.

I had to put in
sleep_frames: 75 instead of 15

now my team click the clickies and there is no spam and the macro is working much better.
 
YAML:
SusBurn:
    action: >-
      /multiline ; /disc Knifeplay Discipline ; /disc Chelicerae Discipline
      Rk. II ; /disc Twisted Chance Discipline
    condition: "${Me.CombatState.Equal[COMBAT]} && !${Me.ActiveDisc.ID}"

If I'm in combat and no disc is up, it should first try Knifeplay, then try Chelicerae, then try Twisted Chance. Given their timers, one of them should always be available.

Instead, it only tries casting Twisted Chance and it spams me with "you can use twisted a chance again in 6 minutes" over and over.

What am I doing wrong?
 
YAML:
SusBurn:
    action: >-
      /multiline ; /disc Knifeplay Discipline ; /disc Chelicerae Discipline
      Rk. II ; /disc Twisted Chance Discipline
    condition: "${Me.CombatState.Equal[COMBAT]} && !${Me.ActiveDisc.ID}"

If I'm in combat and no disc is up, it should first try Knifeplay, then try Chelicerae, then try Twisted Chance. Given their timers, one of them should always be available.

Instead, it only tries casting Twisted Chance and it spams me with "you can use twisted a chance again in 6 minutes" over and over.

What am I doing wrong?


It isn't ideal but they probably need to be on separate lines. Scrolling through examples I don't see any other /disc on a multiline. Something like:

YAML:
SusBurn1:
    action: >-
      /disc Knifeplay Discipline ;
    condition: "${Me.CombatState.Equal[COMBAT]} && !${Me.ActiveDisc.ID} && ${Me.CombatAbilityReady[${Spell[Knifeplay Discpline]}]}"
SusBurn2:
    action: >-
      /disc Chelicerae Discipline ;
    condition: "${Me.CombatState.Equal[COMBAT]} && !${Me.ActiveDisc.ID} && ${Me.CombatAbilityReady[${Spell[Chelicerae Discpline]}]}"
SusBurn3:
    action: >-
      /disc Twisted Chance Discipline ;
    condition: "${Me.CombatState.Equal[COMBAT]} && !${Me.ActiveDisc.ID} && ${Me.CombatAbilityReady[${Spell[Twisted Chance Discipline]}]}"
 
Thanks.
Finally got it working.
Before anyone copies and pastes from bytebite, note that there is an "i" missing in discipline and there's an extra ]} in there =).

Also
${Me.CombatAbilityReady[${Spell[Twisted Chance Discipline]}]}
should be
${Me.CombatAbilityReady[Twisted Chance Discipline]}
No need for the Spell part.
 
Anyone feel like helping debug something? While in combat, I keep getting spammed with the message "You are too distracted to use a skill." But for the life of me, I can't find any errors here or what "skill" I'm trying to use. I'm only using React right now, no macros or plugins.

YAML:
globals:
  EnduranceGood: >-
    !${Me.PctEndurance} < 10 && !${Me.Song[Relax Rk.II].ID} && !${Me.Buff[Revival
    Sickness].ID} && !${Me.Buff[Resurection Sickness].ID}
  SafeToCast: >-
    !${Me.Song[Evader's Shroud of Stealth].ID} && !${Me.PctHPs} <=25
    && !${Me.Moving} && !${Me.Buff[Revival Sickness].ID} && !${SpawnCount[npc
    radius 40]}>0
reacts:
  RogAlways1:
    action: /disc Blitzstrike Rk. II
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && ${Me.CombatAbilityReady[Blitzstrike Rk. II]}
  RogAlways10:
    action: "/disc Thief's Vision Rk. II"
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && !${Me.Song[Thief's Vision Rk. II].ID} && ${Me.CombatAbilityReady[Thief's
      Vision Rk. II]}
  RogAlways2:
    action: /disc Bushwhack Rk. II
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && ${Me.CombatAbilityReady[Bushwhack Rk. II]}
  RogAlways3:
    action: /disc Vindictive Puncture Rk. II
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && ${Me.CombatAbilityReady[Vindictive Puncture Rk. II]}
  RogAlways4:
    action: /disc Naive Mark Rk. II
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && ${Me.CombatAbilityReady[Naive Mark Rk. II]}
  RogAlways5:
    action: /disc Pinpoint Defects Rk. II
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && ${Me.CombatAbilityReady[Pinpoint Defects Rk. II]}
  RogAlways6:
    action: /alt activate 672
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && ${Me.AltAbilityReady[672]}
  RogAlways7:
    action: /disc Cloaked Blade Rk. II
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && ${React.Global[EnduranceGood]}
      && !${Me.Song[Cloaked Blade Rk. II].ID} && ${Me.CombatAbilityReady[Cloaked
      Blade Rk. II]}
  RogAlways8:
    action: "/useitem ${InvSlot[Chest].Item.Name}"
    condition: "${Me.CombatState.Equal[COMBAT]} && ${Me.ItemReady[165263]}"
  RogAlways9:
    action: /useitem Fatestealer
    condition: "${Me.CombatState.Equal[COMBAT]} && ${Me.ItemReady[52347]}"
  RogApplyPoison:
    action: /useitem Consigned Bite of the Shissar XX
    condition: >-
      ${React.Global[SafeToCast]} && !${Me.Buff[Bite of the Shissar Poison
      XI].ID} && ${Me.CombatState.NotEqual[COMBAT]}
  RogEscape:
    action: >-
      /multiline ; /end ; /attack off ; /melee reset ; /delay 4 ; /alt
      activate 102
    condition: "${Me.XTarget} > 0 && ${Me.PctHPs} < 20"
  RogNimble:
    action: /disc Nimble Discipline
    condition: >-
      ${Me.CombatState.Equal[COMBAT]} && !${Me.Buff[Assassin's Parry I].ID}
      && ${Me.CombatAbilityReady[Nimble Discipline]} && ${Me.PctHPs} <
      30
  RogReflexes:
    action: /disc Practiced Reflexes Rk. II
    condition: >-
      ${React.Global[SafeToCast]} && ${React.Global[EnduranceGood]} &&
      !${Me.Buff[Practiced Reflexes Rk. II].ID} && ${Me.CombatState.NotEqual[COMBAT]}
  RogRelax:
    action: /disc Relax Rk. II
    condition: "${Me.PctEndurance} < 10 && ${Me.CombatAbilityReady[Relax Rk. II]}"
  RogSummonPoison:
    action: "/useitem ${InvSlot[Legs].Item.Name}"
    condition: >-
      ${React.Global[SafeToCast]} && ${Me.ItemReady[165262]} && ${FindItemCount[=Consigned
      Bite of the Shissar XX]} <= 19 && ${Me.CombatState.NotEqual[COMBAT]}
  RogUseFeather:
    action: /useitem Unified Phoenix Feather
    condition: >-
      ${React.Global[SafeToCast]} && !${Me.Buff[Revival Sickness].ID} &&
      ${Me.ItemReady[165188]} && ${Me.PctEndurance} < 50
 
Hey guys,
Having weird behavior trying to activate clickies, like my epic or breastplate.
These mostly work, but often it thinks an item is ready, when it's not.
Or sometimes, it uses the item, but the inventory slot does not turn red with a countdown.

INI:
  globals:
    Engaged: >-
      ${Me.Combat} && ${Target.ID} && ${Target.Distance} < 15 && !${Me.Casting.ID}
      && !${Me.Stunned}
  reacts:
    UseFatestealer:
      action: /useitem Fatestealer
      condition: "${React.Global[Engaged]} && ${Me.ItemReady[Fatestealer]}"

Something is broken.
Edit: Also see my comment below about RogSummonPoison
 
Last edited:
Hey guys,
Having weird behavior trying to activate clickies, like my epic or breastplate.
These mostly work, but often it thinks an item is ready, when it's not.
Or sometimes, it uses the item, but the inventory slot does not turn red with a countdown.

INI:
  globals:
    Engaged: >-
      ${Me.Combat} && ${Target.ID} && ${Target.Distance} < 15 && !${Me.Casting.ID}
      && !${Me.Stunned}
  reacts:
    UseFatestealer:
      action: /useitem Fatestealer
      condition: "${React.Global[Engaged]} && ${Me.ItemReady[Fatestealer]}"

Am I doing something wrong?
this is a screwing my macros and reacts also. I have not been able to have my Cleric epic automated in a macro because of the same thing. It spams it trying to activate it when it thinks its ready but it isnt. But it looks ready. Same thing with the Unity clickys and the charm click.

Im on AB server and it has been non-functional for me for a long time.

I hade a thought that it was the speed of the macros or reacts that spammed them to fast and that made it fck up, but Im not sure.
 
this is a screwing my macros and reacts also. I have not been able to have my Cleric epic automated in a macro because of the same thing. It spams it trying to activate it when it thinks its ready but it isnt. But it looks ready. Same thing with the Unity clickys and the charm click.

Im on AB server and it has been non-functional for me for a long time.

I hade a thought that it was the speed of the macros or reacts that spammed them to fast and that made it fck up, but Im not sure.
I wonder if adding /delay 50 before the /useitem would keep it from going too fast.
 
No. Something is definitely broken.

If I echo ${Me.ItemReady[${InvSlot[Legs].Item.Name}]} it says TRUE. But they are in fact NOT ready. The slot is not red, but I am not able to click them.

That means that this react:
INI:
  RogSummonPoison:
    action: "/multiline ; /delay 50 ; /useitem ${InvSlot[Legs].Item.Name}"
    condition: >-
      ${React.Global[SafeToCast]} && ${Me.ItemReady[${InvSlot[Legs].Item.Name}]}
      && ${FindItemCount[=Consigned Bite of the Shissar XX]} <= 19 && ${Me.CombatState.NotEqual[COMBAT]}
      && !${Me.Combat}

Once this runs, it tries to KEEP running. It makes everything else freeze. I cannot even sit down. I instantly stand up, continuously trying to use my legs clicky.
 
No. Something is definitely broken.

If I echo ${Me.ItemReady[${InvSlot[Legs].Item.Name}]} it says TRUE. But they are in fact NOT ready. The slot is not red, but I am not able to click them.

That means that this react:
INI:
  RogSummonPoison:
    action: "/multiline ; /delay 50 ; /useitem ${InvSlot[Legs].Item.Name}"
    condition: >-
      ${React.Global[SafeToCast]} && ${Me.ItemReady[${InvSlot[Legs].Item.Name}]}
      && ${FindItemCount[=Consigned Bite of the Shissar XX]} <= 19 && ${Me.CombatState.NotEqual[COMBAT]}
      && !${Me.Combat}

Once this runs, it tries to KEEP running. It makes everything else freeze. I cannot even sit down. I instantly stand up, continuously trying to use my legs clicky.
yes, I get the same thing.

But I was thinking WHY and HOW it gets to that point when I was talking about the speed. If I start fresh and speedklick a bunch of items, they will fire off but not all will go red and show as not ready.
 
yes, I get the same thing.

But I was thinking WHY and HOW it gets to that point when I was talking about the speed. If I start fresh and speedklick a bunch of items, they will fire off but not all will go red and show as not ready.
The not turning red is an eq/server problem. I experience it frequently on raids (without mq running). I suspect the client needs a confirmation from the server side to turn an item red and it never receives it. If not red then the client thinks items is still ready and as mq reads status from client it also thinks ready.

Best workaround is start a timer to keep track on when a clicky should be ready again, dirty and messy I know.

PS: Even a bug thread on it (confirmed) https://forums.daybreakgames.com/eq...isplaying-properly.260243/page-3#post-3997378
logged Oct 25, 2019, 33 likes on it and yet nothing is being fixed.
 
Last edited:
This workaround might work, but I am not 100% sure if it will fix the problem.

INI:
${FindItem[Fatesealer].Timer.TotalSeconds}<1
 
The not turning red is an eq/server problem. I experience it frequently on raids (without mq running). I suspect the client needs a confirmation from the server side to turn an item red and it never receives it. If not red then the client thinks items is still ready and as mq reads status from client it also thinks ready.

Best workaround is start a timer to keep track on when a clicky should be ready again, dirty and messy I know.

PS: Even a bug thread on it (confirmed) https://forums.daybreakgames.com/eq...isplaying-properly.260243/page-3#post-3997378
logged Oct 25, 2019, 33 likes on it and yet nothing is being fixed.
Thanks. Can you show me how to set a timer? Haven't found documentation on that.
 
This workaround might work, but I am not 100% sure if it will fix the problem.

INI:
${FindItem[Fatesealer].Timer.TotalSeconds}<1
Oh wow, didn't know you could do this. Fantastic. Instead of using item ready I can just do ${FindItem[Fatestealer].Timer.TotalSeconds} == 0
Gonna try it out.

Edit: Same problem. It says reports "0" even though it's not ready.
 
Last edited:
Thanks. Can you show me how to set a timer? Haven't found documentation on that.
Still working on a neat way to do it, will post if I am happy with it.

Basically going to be something lilke this
somewhere:
if (!${Defined[unitytimer]}) /declare unitytimer timer global
in react
conditon: !${unitytimer} && etc
action: /useitem xxx; /varset unitytimer ${FindItem[horn of unity].Timer.TotalSeconds}s

Have not figured out an elegant way where to declare the timer. This is very messy/prone to error.
Actually wondering if one of the bright mq devs cannot give us a way to trigger the countdown timer in the item TLO.
 
Yup, the daybreak forum post pretty much sums it up. Everquest client says it’s ready, macroquest says it’s ready and react, CWTN, Holyshit, kissassist all try to /useitem, and they can’t, and they try and press it again and again and again every cycle/pulse, to the exclusion of everything else. I have found picking up said item onto cursor and then re-equipping or putting back into inventory ‘reminds’ EQ and it then shows item in CoolDown. Especially true for cleric BP and geomantra clickies.

Everquest should fix their sh1t. Whether MQ2 and the plugin writers should code around ‘source’ bugs is a philosophic argument. Either way, stuff is broken, so I just don’t use clickies or reacts to click clickies. Whether I click diplomatic papers or not isn’t going to let me live when I would otherwise be dead.

Random list of stuffs I am not using
- cleansing rod
- OOW breastplate
- diplomatic papers
- blooddrinkers coating
- geomantra charm thingy
- venenium
- mount blessing
- jann’s veil
- familiar
- cloak for spikes
- necromantic dragon bone
- horn of unity
- unified Phoenix feather
- circle of power items

As an SK, I’d be half as good as a Warrior if I could use some of this stuff
 
Yup, the daybreak forum post pretty much sums it up. Everquest client says it’s ready, macroquest says it’s ready and react, CWTN, Holyshit, kissassist all try to /useitem, and they can’t, and they try and press it again and again and again every cycle/pulse, to the exclusion of everything else. I have found picking up said item onto cursor and then re-equipping or putting back into inventory ‘reminds’ EQ and it then shows item in CoolDown. Especially true for cleric BP and geomantra clickies.

Everquest should fix their sh1t. Whether MQ2 and the plugin writers should code around ‘source’ bugs is a philosophic argument. Either way, stuff is broken, so I just don’t use clickies or reacts to click clickies. Whether I click diplomatic papers or not isn’t going to let me live when I would otherwise be dead.

Random list of stuffs I am not using
- cleansing rod
- OOW breastplate
- diplomatic papers
- blooddrinkers coating
- geomantra charm thingy
- venenium
- mount blessing
- jann’s veil
- familiar
- cloak for spikes
- necromantic dragon bone
- horn of unity
- unified Phoenix feather
- circle of power items

As an SK, I’d be half as good as a Warrior if I could use some of this stuff

Okay. Multiple people say this is an EQ problem, so I believe you.
Weird thing is, I never had this problem before using React.
I was using clickies with mq2melee downshits without any problem.
 
@Robban @jande @Hylander @Sic and whoever else is frustrated by this issue.

Here is a workaround based on Jande's idea of timers.
Thanks @kaen01 for coming up with this.

Caveat: It doesn't always work, but it works better.
Most importantly, it solves the problem of React repeatedly trying to use an item that's not ready and freezing everything else.

Here are two examples to keep my Epic and BP clickies up using timers.

YAML:
  RogBP:
    action: >-
      /multiline ; /useitem Blizzard Shadowscale Coat; /if (!${Defined[MyRogBPTimer]})
      /declare MyRogBPTimer timer global 610s; /if (${Defined[MyRogBPTimer]}
      && ${MyRogBPTimer} == 0) /varset MyRogBPTimer 610s
    condition: "(${MyRogBPTimer} == 0 || !${Defined[MyRogBPTimer]}) && ${Target.PctHPs} > 30"
  RogEpic:
    action: >-
      /multiline ; /useitem Fatestealer; /if (!${Defined[MyRogEpicTimer]})
      /declare MyRogEpicTimer timer global 370s; /if (${Defined[MyRogEpicTimer]}
      && ${MyRogEpicTimer} == 0) /varset MyRogEpicTimer 370s
    condition: "(${MyRogEpicTimer} == 0 || !${Defined[MyRogEpicTimer]}) && ${Target.PctHPs} > 30"

I set my timers to be a few seconds longer than the recast delays on the clickies.
Also, be sure to use very unique names for the global timers so they don't interfere with other macros or plugins.
 
Why does react say it can't parse this line? action: /multiline; /stopdisc ; /delay 4 ; /disc Nimble Discipline
 
Why does react say it can't parse this line? action: /multiline; /stopdisc ; /delay 4 ; /disc Nimble Discipline
could things. you can't use a delay in a multiline - it doesn't do anything

if you do want some sort of timing - you need to use /timed, and it has to be on the line you want to do something on

you also only want a space before the first semicolon - no spaces before the following ones

action: /multiline ; /stopdisc; /timed 4 /disc Nimble Discipline
 
I was trying to write a React so that if anyone in my group was below 98% mana then everyone in the group would attempt to use their feather. I can't figure out how to do it without some method of setting a variable that isn't character specific.

It's easy enough to write conditions in KISS so that each group member will use their feather if THEY specifically are low on mana but it doesn't help when 4 of my 6 characters rarely budge from 100% even in steady combat situations. This means that most of the time only 2 of the 6 characters are using their feathers and horns on a regular basis.

I know I could explicitly write conditions so that each character checks the mana of each other character in the group but that will look extremely bottish to anyone observing these characters constantly targeting each other so rapidly. I also know that I could probably do something with DanNet queries but honestly I leave DanNet unloaded most of the time.

So I thought if I could get KISS to enable a React set, then I'd just check that React's enable/disable status and if any character has it set then all chars would continue to use their feathers & horns as they were ready. But I don't see any way to make Reacts that respond to other character's Reacts.

I'm just making a suggestion that perhaps in addition to Global conditions we could get access to a Global flagging capability so that characters could pass on conditional checks to other characters! My logic would then be for any KISS client to set a flag if they need mana, then each pass per character would OR gate all the flags and then a separate React would clear the flag with an AND gate if all the characters were full mana.

Thanks for considering!
 
I was trying to write a React so that if anyone in my group was below 98% mana then everyone in the group would attempt to use their feather. I can't figure out how to do it without some method of setting a variable that isn't character specific.

It's easy enough to write conditions in KISS so that each group member will use their feather if THEY specifically are low on mana but it doesn't help when 4 of my 6 characters rarely budge from 100% even in steady combat situations. This means that most of the time only 2 of the 6 characters are using their feathers and horns on a regular basis.

I know I could explicitly write conditions so that each character checks the mana of each other character in the group but that will look extremely bottish to anyone observing these characters constantly targeting each other so rapidly. I also know that I could probably do something with DanNet queries but honestly I leave DanNet unloaded most of the time.

So I thought if I could get KISS to enable a React set, then I'd just check that React's enable/disable status and if any character has it set then all chars would continue to use their feathers & horns as they were ready. But I don't see any way to make Reacts that respond to other character's Reacts.

I'm just making a suggestion that perhaps in addition to Global conditions we could get access to a Global flagging capability so that characters could pass on conditional checks to other characters! My logic would then be for any KISS client to set a flag if they need mana, then each pass per character would OR gate all the flags and then a separate React would clear the flag with an AND gate if all the characters were full mana.

Thanks for considering!
what about KISS buffs section with the |managroup tag?
 
@Robban @jande @Hylander @Sic and whoever else is frustrated by this issue.

Here is a workaround based on Jande's idea of timers.
Thanks @kaen01 for coming up with this.

Caveat: It doesn't always work, but it works better.
Most importantly, it solves the problem of React repeatedly trying to use an item that's not ready and freezing everything else.

Here are two examples to keep my Epic and BP clickies up using timers.

YAML:
  RogBP:
    action: >-
      /multiline ; /useitem Blizzard Shadowscale Coat; /if (!${Defined[MyRogBPTimer]})
      /declare MyRogBPTimer timer global 610s; /if (${Defined[MyRogBPTimer]}
      && ${MyRogBPTimer} == 0) /varset MyRogBPTimer 610s
    condition: "(${MyRogBPTimer} == 0 || !${Defined[MyRogBPTimer]}) && ${Target.PctHPs} > 30"
  RogEpic:
    action: >-
      /multiline ; /useitem Fatestealer; /if (!${Defined[MyRogEpicTimer]})
      /declare MyRogEpicTimer timer global 370s; /if (${Defined[MyRogEpicTimer]}
      && ${MyRogEpicTimer} == 0) /varset MyRogEpicTimer 370s
    condition: "(${MyRogEpicTimer} == 0 || !${Defined[MyRogEpicTimer]}) && ${Target.PctHPs} > 30"

I set my timers to be a few seconds longer than the recast delays on the clickies.
Also, be sure to use very unique names for the global timers so they don't interfere with other macros or plugins.

Okay, so I made quite an improvement on using clickies and getting around the ItemReady bug since posting this.
The problem with the previous code is 1) The timers are not set when you log in, and 2) The timers are not reset if you manually click your clicky, thus messing it up.

So instead of trying to squeeze everything into a single react, I split it up.
- A react to set timers when you log in
- A react to handle the timer of a clicky
- A react to actually click the clicky

I noticed that it's important to set staggered delays before, for example, my epic and my BP so they don't try to cast at the same time.
It's also important to briefly disable and then re-enable so they don't try to cast more than once while the timer code is processing.
Here is an example of what I do for my breastplate:

YAML:
DeclareTimers: #Declare timers when your toon enters the world
    action: >-
      /multiline ; /declare MyRogBPTimer timer global; /declare MyRogEpicTimer timer global
    condition: >-
      !${Defined[MyRogBPTimer]} || !${Defined[MyRogEpicTimer]}

#Triggers when it sees the buff from my BP and then resets the BP timer
#Disables itself for the duration of the buff so it doesn't keep running
#Re-enables itself
ClickyBPTimer:
    action: >-
      /multiline ; /varset MyRogBPTimer 620s; /echo Resteting BP timer
      to ${MyRogBPTimer}; /react disable ClickyBPTimer; /timed 610 /react
      enable ClickyBPTimer
    condition: "${Me.Buff[Poisoned Bladestorm Attunement].ID}"
   
#Triggers when the BP timer hits 0
#Adds a small delay before casting so it doesn't interfere with other clickies
#The delay you add before each clicky should be different
#Disables itself after casting so it doesn't try to cast more than once
#Re-enables itself
ClickyBPUse:
    action: >-
      /multiline ; /timed 10 /useitem Blizzard Shadowscale Coat; /react
      disable ClickyBPUse; /timed 25 /react enable ClickyBPUse
    condition: >-
      ${MyRogBPTimer} == 0 && ${React.Global[Engaged]} && ${Target.PctHPs}
      > 30

So far, this is working like a charm on the 5 clickies I'm using. I can manually trigger them if needed, and because it looks for the item's effect, the timer will be reset.
Note, you will still get the issue where sometimes the item doesn't turn red, but this prevents the client from continually trying to cast it when that happens.
 
Is there any sort of solution for automated mod rods, or other consumables via plugin? Feels like it would be doable?
 
mq2react you can do these things

Here is the MQ2React Collection thread where some folks have shared their usage

Did a thing, could probably use some cleanup, but does appear to function correctly.
Thanks for the assist!

INI:
globals:
  ShouldCast: "${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Me.Invis}"
reacts:
  EatModRod:
    action: /useitem Rod of Mystical Transvergence
    condition: >-
      !${Me.Invis} && ${FindItemCount[=Rod of Mystical Transvergence]}
      >= 1 && ${FindItem[Rod of Mystical Transvergence].Timer.TotalSeconds}<1 && ${Me.PctMana} < 40 && ${Me.PctHPs} >= 75
  RequestModRod:
    action: >-
      /multiline ; /react disable RequestModRod ; /bct MAGE_NAME //mqp on ;
      /timed 5 /bct MAGE_NAME //casting "Rod of Mystical Transvergence"|8|
      -targetid|${Me.ID} ; /timed 75 /bct MAGE_NAME //mqp off ;  /timed 190
      /react enable RequestModRod
    condition: >-
      ${React.Global[ShouldCast]} && ${FindItemCount[=Rod of Mystical Transvergence]}
      == 0 && !${Cursor.Name.Equal[Rod of Mystical Transvergence]}
 
Does anyone know if there is a way to detect if Tranquil Blessings was clicked already? Love to get a react setup to hit TB so I pop out an extra aid or regen out during a raid.
 
There is not. When I use these on raids, I manually control when it does celestial regen or ancestral aid and I manually click TB before engage.
 
Release MQ2React

Users who are viewing this thread

Back
Top
Cart