• Hail, we're RedGuides. We want you to play six (yes, 6!) EverQuest characters at once. We have scripts and a friendly community to help, please join our playstyle and say hello! 👋
MQ2React

Release MQ2React

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...

Sample REACTS
YAML:
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
 
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.

YAML React for Aureate's Bane
YAML:
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}"

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!

React
Code:
  AureatesBane: 
    action: >-
      /multiline ; /react disable AureatesBane;  /alt act 15074;  /delay 10;  /react enable AureatesBane
    condition: "${Me.Song[Curse of Subjugation].ID} > 0"
 
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.)

Fire Aureates Bane
YAML:
  AureatesBane:
    action: /multiline ; /timed 10 /alt act 15074
    condition: "${Me.Song[Curse of Subjugation].ID}"
 
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