• 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 (1 Viewer)

Can anyone please check the syntax is my MQ2React.yaml file? I cannot figure out why NONE of the reacts trigger for ANY of the characters I have them enabled for, even though the conditions do indeed apply.

By the way, I initiate the plugin by typing: /dgae /plugin mq2react load . I hope that is the correct way.

Anyway, below is my code... thanks in advance!!!

YAML:
Server Name:
  Character1:
    DA1: disabled
    DA2: disabled
    Death Peace: disabled
    Touch of Mujaki: disabled
    Meditate in combat: disabled
    Meditate out of combat: disabled
  Character2:
    DA1: enabled
    DA2: enabled
    Death Peace: enabled
    Touch of Mujaki: enabled
    Meditate in combat: enabled
    Meditate out of combat: enabled
  Character3:
    DA1: enabled
    DA2: enabled
    Death Peace: enabled
    Touch of Mujaki: enabled
    Meditate in combat: enabled
    Meditate out of combat: enabled
  Character4:
    DA1: enabled
    DA2: enabled
    Death Peace: enabled
    Touch of Mujaki: enabled
    Meditate in combat: enabled
    Meditate out of combat: enabled
  Character5:
    DA1: enabled
    DA2: enabled
    Death Peace: enabled
    Touch of Mujaki: enabled
    Meditate in combat: enabled
    Meditate out of combat: enabled
  Character6:
    DA1: enabled
    DA2: enabled
    Death Peace: enabled
    Touch of Mujaki: enabled
    Meditate in combat: enabled
    Meditate out of combat: enabled

globals:
  MainAssist: "Character1"
  Casting: "${Me.Casting.ID}"
  Invis: "${Me.Invis}"
  Moving: "${Me.Moving}"
  Feigning: "${Me.Feigning}"
  Aggro: "${Me.PctAggro}==100"
  LowAggro: "${Me.PctAggro}<60"
  FullHPs: "${Me.PctHPs}==100"
  FullMana: "${Me.PctMana}>=90"
  InCombat: "${Me.XTarget}>0"

reacts:
  DA1:
    action: "/cast Quivering Veil of Xarn"
    condition: "${React.Global[InCombat]} && !${React.Global[FullHPs]} && ${React.Global[Aggro]} && ${Me.SpellReady[Quivering Veil of Xarn]} && !${React.Global[Casting]} && !${React.Global[Invis]} && !${React.Global[Moving]} && !${React.Global[Feigning]}"
  DA2:
    action: "/cast HarmShield"
    condition: "${React.Global[InCombat]} && !${React.Global[FullHPs]} && ${React.Global[Aggro]} && !${Me.SpellReady[Quivering Veil of Xarn]} && ${Me.SpellReady[HarmShield]} && !${React.Global[Casting]} && !${React.Global[Invis]} && !${React.Global[Moving]} && !${React.Global[Feigning]}"
  Death Peace:
    action: "/cast Death Peace"
    condition: "${React.Global[InCombat]} && !${React.Global[FullHPs]} && ${React.Global[Aggro]} && !${Me.SpellReady[Quivering Veil of Xarn]} && !${Me.SpellReady[HarmShield]} && ${Me.SpellReady[Death Peace]} && !${React.Global[Casting]} && !${React.Global[Invis]} && !${React.Global[Moving]} && !${React.Global[Feigning]}"
  Touch of Mujaki:
    action: "/multiline ; /stand ; /delay 1 ; /assist ${React.Global[MainAssist]} ; /delay 1 ; /cast Touch of Mujaki"
    condition: "${React.Global[InCombat]} && !${React.Global[FullHPs]} && ${React.Global[LowAggro]} && ${Me.SpellReady[Touch of Mujaki]} && !${React.Global[Casting]} && !${React.Global[Invis]} && !${React.Global[Moving]} && !${React.Global[Feigning]}"
  Meditate in combat:
    action: "/book"
    condition: "!${React.Global[FullMana]} && ${React.Global[InCombat]} && ${React.Global[LowAggro]}"
  Meditate out of combat:
    action: "/book"
    condition: "!${React.Global[FullMana]} && !${React.Global[InCombat]}"

sleep_frames: 15
and delay dont work in multiline I think, you can test with

/multiline ; /stand ; /delay 10 ; /gsay Hi ; /delay 10 ; /gsay Hi again

needs to be

/multiline ; /stand ; /timed 10 /gsay Hi ; /timed 30 /gsay Hi again

where timed is like a timer starting and the actions are run when the timer reach 10 and 30
 
and delay dont work in multiline I think, you can test with

/multiline ; /stand ; /delay 10 ; /gsay Hi ; /delay 10 ; /gsay Hi again

needs to be

/multiline ; /stand ; /timed 10 /gsay Hi ; /timed 30 /gsay Hi again

Thanks, I have corrected it :)

try /react list
see if they are there
then maybe /react on

Yes, when I type /react list, they do get prompted in the MQ chat so it seems like the plugin is loading correctly. Unfortunately, even after typing /react on, the reactions still wont trigger when the conditions apply :(

Any other idea? Thanks!
 
Last edited:
Any other idea? Thanks!

I offer no silver bullet although I did try and read your reacts. You will need to rely on basic debugging principles. In your case I would save your yaml code temporarily to another file. Then recreate a new file and start with one simple react. Make it one condition and one reaction. The reaction should be something like /g This works!

Then test each and every condition by just typing the condition in-game with the /echo command. This is to ensure you've got the syntax correct and that it returns a TRUE/FALSE result like you anticipate.

Then gradually keep building your react one condition at a time and finally change the output to the actual command you'd like to achieve.

You can also read through the entire thread and review other people's posted reacts to get examples of things that work.

One of the biggest drawbacks to using reacts is the stupid YAML format is not very friendly. A single error in line or text spacing can cause it to fail. I've manually "re-spaced" an entire file before to get it to work. Remember to type /react reload after every change to ensure the plugin can correctly read the file. If there is no error message then it's readable by the plugin.

Start small and work up from there.

Here are the reacts I'm currently using across all my characters. The vast majority of mine were stolen from other posts in this thread. Many of them I no longer use but keep in the file for future ideas...

[CODE lang="yaml" title="Sample REACTS"]
globals:
GFOM: "${Me.PctMana > 99}"
GFeatherReady: "${Me.ItemReady[Unified Phoenix Feather]}"
GHasFeather: "${FindItemCount[=Unified Phoenix Feather] == 1}"
GHasHorn: "${FindItemCount[=Miniature Horn of Unity] == 1}"
GHornReady: "${Me.ItemReady[Miniature Horn of Unity]}"
GNeedMana: "${Me.PctMana < 98}"
GNoBlessing: "!${Me.Song[Blessing of Unity].ID}"
GNoGrace: "!${Me.Song[Grace of Unity].ID}"
GNoStrangers: >-
${Math.Calc[${SpawnCount[pc radius 200]}-${SpawnCount[pc group radius
200]}]} == 0
GNotCasting: "!${Me.Casting.ID}"
GNotInvis: "!${Me.Invis}"
GNotMoving: "!${Me.Moving}"
GlobalExample: "${Me.CombatState.NotEqual[COMBAT]} && ${Me.PctHPs} <= 25"

reacts:
BandDefense:
action: >-
/multiline ; /echo Activating Defensive Bandolier ; /timed 3 /band
activate Tank ; /timed 6 /react enable BandOffense ; /timed 7 /react
disable BandDefense
condition: >-
${Me.CombatState.Equal[COMBAT]} && !${Me.Buff[Defensive Proficiency].ID}
&& (${Target.Named} || ${Me.XTarget} > 2 || ${Select[${Target.ConColor},RED]}>=1
|| ${Me.PctHPs} < 50)
BandOffense:
action: >-
/multiline ; /echo Activating Offensive Bandolier ; /timed 3 /band
activate 2HSHeal ; /timed 6 /react enable BandDefense ; /timed 7
/react disable BandOffense
condition: >-
${Me.CombatState.Equal[COMBAT]} && ${Me.XTarget} < 2 && !${Target.Named}
&& ${Me.Buff[Defensive Proficiency].ID} && !${Select[${Target.ConColor},YELLOW,RED]}>=1
&& ${Me.PctHPs} > 95
BardRallyPause:
action: >-
/multiline ; /mqp on ; /twist off ; /g Rallying Solo Medding ; /alt
act 1136 ; /sit ; /timed 400 /mqp off
condition: >-
${Me.CombatState.NotEqual[COMBAT]} && ${Me.AltAbilityReady[Rallying
Solo]} && (${Me.PctMana} < 30 || ${Me.PctEndurance} < 30)
Buy Glyph of Angry Thoughts:
action: /alt buy 5404
condition: "${AltAbility[Mythic Glyph of Inspired Provocation V].CanTrain}"
Buy Glyph of Arcane Secrets:
action: /alt buy 5204
condition: "${AltAbility[Mythic Glyph of Arcane Secrets V].CanTrain}"
Buy Glyph of Destruction:
action: /alt buy 5304
condition: "${AltAbility[Mythic Glyph of Ultimate Power V].CanTrain}"
Buy Glyph of Dragon Scales:
action: /alt buy 5104
condition: "${AltAbility[Mythic Glyph of Dragon Scales V].CanTrain}"
CurePuller:
action: >-
/multiline ; /stopcast ; /timed 1 ; /nav pause ; /mqp on ; /keypress
F1 ; /timed 5 ; /echo Attempting to cure my snare or root ; /alt
act 2031 ; /mqp off
condition: >-
(${Me.Snared.ID} || ${Me.Rooted.ID}) && ${Me.AltAbilityReady[2031]}
&& ${Me.PctHPs}<30
CurePuller1:
action: >-
/multiline ; /stopcast ; timed 1 ; /nav pause ; /mqp on ; /keypress
F1 ; /timed 5 ; /echo Attempting to reset my Purity of Death ; /alt
act 7003 ; /mqp off
condition: "${Me.AltAbilityReady[7003]} && !${Me.AltAbilityReady[2031]}"
CurePuller2:
action: >-
/multiline ; "/g I need a cure for root or snare!" ; /timed 30 ;
/mqp off
condition: "${Me.Snared.ID} || ${Me.Rooted.ID}"
DestroyBrightedge:
action: /destroy
condition: >-
${Cursor.Name.Equal[Brightedge]} || ${Cursor.Name.Equal[Summoned:
Nightblade]}
DestroyBulwark:
action: >-
/multiline ; /mqp on ; /if (${Cursor.Name.Equal[Bulwark of Many Portals]}
&& (${FindItem[Bulwark of Many Portals].Charges}< 1)) /destroy ;
/autoinv ; /mqp off
condition: "${Cursor.Name.Equal[Bulwark of Many Portals]}"
DestroyDarkshineStaff:
action: /destroy
condition: >-
${Cursor.Name.Equal[Summoned: Darkshine Staff]} || ${Cursor.Name.Equal[Ether-Fused
Shard]}
DestroyImprint:
action: /destroy
condition: "${Cursor.Name.Equal[Imprint of the Enhanced Minion]}"
DestroyRottingScale:
action: /destroy
condition: "${Cursor.Name.Equal[Rotting Dragon Scale]}"
DestroySmallChunk:
action: /destroy
condition: >-
${Cursor.Name.Equal[Small Chunk of Velium]} || ${Cursor.Name.Equal[Broken
Fish Hook]} || ${Cursor.Name.Equal[Tattered Cloth Sandal]} || ${Cursor.Name.Equal[Rusty
Dagger]} || ${Cursor.Name.Equal[Broken Fish Hook]}
DestroyTavon:
action: /destroy
condition: >-
${Cursor.Name.Equal[Tavon's Polished Gemstone]} || ${Cursor.Name.Equal[Tavon's
Burnished Gemstone]} || ${Cursor.Name.Equal[Solus' Polished Gemstone]}
|| ${Cursor.Name.Equal[Solus' Burnished Gemstone]} || ${Cursor.Name.Equal[Solus'
Marquise-Cut Gemstone]} || ${Cursor.Name.Equal[Summoned: Darkshine
Staff]}
DestroyTwilightOrchid:
action: /destroy
condition: "${Cursor.Name.Equal[Twilight Orchid]}"
ExampleReact:
action: >-
/multiline ; /echo Default Example react Disables itself when you're
at 100%HP and out of Combat ; /delay 5 ; /react disable ExampleReact
condition: "${Me.PctHPs} == 100 && ${Me.CombatState.NotEqual[COMBAT]}"
GBandDefense:
action: >-
/multiline ; /echo Activating Defensive Bandolier ; /timed 3 /band
activate Tank ; /timed 6 /react enable GBandOffense ; /timed 7 /react
disable GBandDefense
condition: >-
${Me.CombatState.Equal[COMBAT]} && !${Me.Buff[Defensive Proficiency].ID}
&& (${Target.Named} || ${Me.XTarget} > 2 || ${Select[${Target.ConColor},RED]}>=1
|| ${Me.PctHPs} < 50)
GBandOffense:
action: >-
/multiline ; /echo Activating Offensive Bandolier ; /timed 3 /band
activate 2HP ; /timed 6 /react enable GBandDefense ; /timed 7 /react
disable GBandOffense
condition: >-
${Me.CombatState.Equal[COMBAT]} && ${Me.XTarget} < 2 && !${Target.Named}
&& ${Me.Buff[Defensive Proficiency].ID} && !${Select[${Target.ConColor},YELLOW,RED]}>=1
&& ${Me.PctHPs} > 95
Glyph of Arcane Secrets:
action: /alt act 5204
condition: >-
${Me.CombatState.Equal[COMBAT]} && ${Me.AltAbilityReady[Mythic Glyph
of Arcane Secrets V]} && ${Me.PctMana}<25
Glyph of Destruction:
action: /alt act 5304
condition: >-
${Me.AAPoints} > 248 && ${Me.CombatState.Equal[COMBAT]} && ${Me.AltAbilityReady[Mythic
Glyph of Ultimate Power V]}
Glyph of Dragon Scales:
action: /alt act 5104
condition: >-
${Me.CombatState.Equal[COMBAT]} && ${Me.AltAbilityReady[Mythic Glyph
of Dragon Scales V)]} && ${Me.PctHPs}<25
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]})
NoNagWindows:
action: >-
/multiline ; /windowstate alertwnd close ; /windowstate alertstackwnd
close
condition: >-
${Window[alertwnd].Open} || ${Window[alertstackwnd].Open} && ${Window[alertwnd].Child[ALW_Message_Box].Text.Find[become
a member]}>0
SHMSheiSpirRebuke:
action: >-
/multiline ; /react disable SHMSheiSpirRebuke; /stopcast; /timed
5 /mqp on; /timed 7 /stopcast; /timed 10 /target a datiar xi tavuelim;
/timed 13 /alt act 147; /timed 25 /mqp off; /timed 30 /react enable
SHMSheiSpirRebuke
condition: >-
${Spawn[npc a datiar xi tavuelim radius 60].ID} && ${Me.AltAbilityReady[147]}
&& !${Me.AltAbilityReady[171]}
SHMSheiVirPara:
action: >-
/multiline ; /react disable SHMSheiVirPara; /stopcast; /timed 5 /mqp
on; /timed 7 /stopcast; /timed 10 /target a datiar xi tavuelim; /timed
13 /alt act 171; /timed 20 /mqp off; /timed 25 /react enable SHMSheiVirPara
condition: "${Spawn[npc a datiar xi tavuelim radius 60].ID} && ${Me.AltAbilityReady[171]}"
SKSheiAtkOff:
action: /attack off
condition: >-
${Me.Song[Mark of Vinitras].ID} > 0 && ${Zone.ShortName.Equal[akhevatwo_mission]}
&& ${Me.Combat}
Save SK:
action: >-
/multiline ; /echo Attempting to save myself ; /alt act 1116 ; /alt
act 9403 ; /disc Fyrthek Mantle ; /disc Xetheg's Carapace ; /disc
Ignominious Influence
condition: "${Me.CombatState.Equal[COMBAT]} && ${Me.PctHPs}<25"
SavePuller:
action: >-
/multiline ; /stopcast ; /nav pause ; /mqp on ; /keypress F1 ; /echo
Attempting to save myself ; /alt act 821 ; /mqp off
condition: >-
${Me.Snared.ID} || ${Me.Rooted.ID} && !${Me.AltAbilityReady[2031]}
&& ${Me.AltAbilityReady[821]}
Test:
action: /beep
condition: "${Me.Song[Gift of Chromatic Haze VI].ID}"
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}
sleep_frames: 55

[/CODE]
 
Disregard this YAML, it didn't work well and has been replaced. See below!

Wanting to create a React for the new expansion's Curse of Subjugation. I think what I have may work, but my specific question is will it deal correctly with the 6? different numbered variants? Thanks in advance if someone can take a read of this code and whether I need to adjust the text string! It's like dealing with multiple ranks of spell effects.

[CODE lang="yaml" title="YAML React for Aureate's Bane"]reacts:
AureatesBaneOff:
action: >-
/multiline ; /react enable AureatesBaneOn ; /timed 1 /react disable
AureatesBaneOff
condition: "!${Me.Song[Curse of Subjugation].ID}"
AureatesBaneOn:
action: >-
/multiline ; /echo Activating Aureate's Bane! ; /timed 2 /alt act
15074 ; /timed 3 /react enable AureatesBaneOff ; /timed 4 /react
disable AureatesBaneOn
condition: "${Me.Song[Curse of Subjugation].ID}"
[/CODE]

PS Yes, I know there is a Lua for this, but I don't like to leave Lua running on my machine. Tin foil hat and all that!
 
Last edited:
I think all you need is this. Leaving out the ID will ensure it catches all 6 ranks.
I don't see any need to enable / disable reacts like you're doing.

Code:
  AureatesBane:
    action: "/alt act 15074"
    condition: "${Me.Song[Curse of Subjugation]}"
 
I think all you need is this. Leaving out the ID will ensure it catches all 6 ranks.
I don't see any need to enable / disable reacts like you're doing.

Code:
  AureatesBane:
    action: "/alt act 15074"
    condition: "${Me.Song[Curse of Subjugation]}"

Thanks so much for your suggestion.

I do the enable / disable trick just to ensure the React only has to evaluate one time per event. Because I've written these things that would spam me as it evaluated the same condition multiple times per second.
 
In that case, you could just do this. You don't need two.
Code:
  AureatesBane:
    action: "/multiline ; /react disable AreatesBane ; /alt act 15074 ; /timed 10 /react enable AreatesBane"
    condition: "${Me.Song[Curse of Subjugation]}"
 
In that case, you could just do this. You don't need two.
Code:
  AureatesBane:
    action: "/multiline ; /react disable AreatesBane ; /alt act 15074 ; /timed 10 /react enable AreatesBane"
    condition: "${Me.Song[Curse of Subjugation]}"
Need to use this instead, throws no errors as a ID.

Also AureatesBane <> AreatesBane in the above. Appreciate the assists from Discord on this!

[CODE title="React"]
AureatesBane:
action: >-
/multiline ; /react disable AureatesBane; /alt act 15074; /delay 10; /react enable AureatesBane
condition: "${Me.Song[Curse of Subjugation].ID} > 0"
[/CODE]
 
Last edited:
Thanks for the comments and help, I was way too complex. This is all I needed. (I found it wouldn't work without the .ID component.)

[CODE lang="yaml" title="Fire Aureates Bane"] AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"
[/CODE]
 
Last edited:
I copied this line into my mq2react.yaml - and it cures the curse, but also keeps spamming for a while and tried to cure again?

reacts:
AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"

From my log
A scalewrought attacker begins casting Lesser Curse of Subjugation I.
Your mind fogs and your limbs grow heavy!
You begin casting Aureate's Bane VI.
You siphon draconic power.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
etc etc

Full yaml excluding the lines with char name

globals:
GlobalExample: "${Me.CombatState.NotEqual[COMBAT]} && ${Me.PctHPs} <= 25"
reacts:
AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"
ExampleReact:
action: >-
/multiline ; /echo Default Example react Disables itself when you're
at 100%HP and out of Combat ; /delay 5 ; /react disable ExampleReact
condition: "${Me.PctHPs} == 100 && ${Me.CombatState.NotEqual[COMBAT]}"
sleep_frames: 15


Is it something with the formatting? Cause I had it workign for a while, but seems I broke it trying to add someting else
 
I copied this line into my mq2react.yaml - and it cures the curse, but also keeps spamming for a while and tried to cure again?

reacts:
AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"

From my log
A scalewrought attacker begins casting Lesser Curse of Subjugation I.
Your mind fogs and your limbs grow heavy!
You begin casting Aureate's Bane VI.
You siphon draconic power.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
etc etc

Full yaml excluding the lines with char name

globals:
GlobalExample: "${Me.CombatState.NotEqual[COMBAT]} && ${Me.PctHPs} <= 25"
reacts:
AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"
ExampleReact:
action: >-
/multiline ; /echo Default Example react Disables itself when you're
at 100%HP and out of Combat ; /delay 5 ; /react disable ExampleReact
condition: "${Me.PctHPs} == 100 && ${Me.CombatState.NotEqual[COMBAT]}"
sleep_frames: 15


Is it something with the formatting? Cause I had it workign for a while, but seems I broke it trying to add someting else
Eq currently has a bug with spells and desyncing. Aureates bane doesn't immediately cure the debuff, and even after it is "cured" your group window might have it for several seconds until the server syncs.

Best suggestion so far is to make your check also look for the buff
 
I copied this line into my mq2react.yaml - and it cures the curse, but also keeps spamming for a while and tried to cure again?

reacts:
AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"

From my log
A scalewrought attacker begins casting Lesser Curse of Subjugation I.
Your mind fogs and your limbs grow heavy!
You begin casting Aureate's Bane VI.
You siphon draconic power.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
Your Aureate's Bane VI spell is interrupted. You must be suffering from Curse of Subjugation to cast this spell.
etc etc

Full yaml excluding the lines with char name

globals:
GlobalExample: "${Me.CombatState.NotEqual[COMBAT]} && ${Me.PctHPs} <= 25"
reacts:
AureatesBane:
action: /multiline ; /timed 10 /alt act 15074
condition: "${Me.Song[Curse of Subjugation].ID}"
ExampleReact:
action: >-
/multiline ; /echo Default Example react Disables itself when you're
at 100%HP and out of Combat ; /delay 5 ; /react disable ExampleReact
condition: "${Me.PctHPs} == 100 && ${Me.CombatState.NotEqual[COMBAT]}"
sleep_frames: 15


Is it something with the formatting? Cause I had it workign for a while, but seems I broke it trying to add someting else

If you don't mind switching to LEM, I created a workaround. Though, I'm sure you could adapt it to react too.

Since the curse appears to stick around as a 'ghost', I check whether its duration is not 0.

Lua:
local mq = require('mq')

-- Do not edit this if condition
if not package.loaded['events'] then
    print('This script is intended to be imported to Lua Event Manager (LEM). Try "\a-t/lua run lem\a-x"')
end

local function on_load()
end


local function condition()
  local bane = mq.TLO.Me.Song('Subjugation')() or false
  if mq.TLO.Me.Song('Subjugation').Duration() == 0 then bane = false end
  return bane
end

local function action()
   mq.cmd('/alt activate 15074')
end

return {onload=on_load, condfunc=condition, actionfunc=action}
 
For anyone playing on emu (Project Lazarus in my case) and looking for an approach to autoforage with a little more control than MQ2AutoForage, I've been using this React with success. It requires RGMercs + lootnscoot (lootnscoot has a setting for handling foraged loot). Pausing RGMercs acts as a de facto pause for Foraging as well.

Code:
reacts:
  Forage:
    action: >-
      /multiline ; /autoinventory ; /doability "Forage"
    condition: '${Me.Ability["Forage"]} && ${Me.AbilityReady["Forage"]} && ${Cursor.ID} == NULL && ${Me.Standing} && ${Lua.Script[rgmercs].Status.Equal[RUNNING]} && ${Lua.Script[lootnscoot].Status.Equal[RUNNING]} && !${RGmercs.Paused}'
sleep_frames: 15
 
For anyone playing on emu (Project Lazarus in my case) and looking for an approach to autoforage with a little more control than MQ2AutoForage, I've been using this React with success. It requires RGMercs + lootnscoot (lootnscoot has a setting for handling foraged loot). Pausing RGMercs acts as a de facto pause for Foraging as well.

Code:
reacts:
  Forage:
    action: >-
      /multiline ; /autoinventory ; /doability "Forage"
    condition: '${Me.Ability["Forage"]} && ${Me.AbilityReady["Forage"]} && ${Cursor.ID} == NULL && ${Me.Standing} && ${Lua.Script[rgmercs].Status.Equal[RUNNING]} && ${Lua.Script[lootnscoot].Status.Equal[RUNNING]} && !${RGmercs.Paused}'
sleep_frames: 15
Does LEM not work on EMU?
 
Release MQ2React

Users who are viewing this thread

Back
Top
Cart