• 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
Resource icon

Release MQ2Medley

Awesome! Is it possible to include effects like AA/worn haste or spell lines like:View attachment 52101
It'd be nice if the Delay setting was just dynamic according to how quickly you could actually sing said songs. It's great you're working on all this, love it way more than Twist
Does this work today when you reload the medley? It should work I think.
 
Actually, yes 90% sure it is. Just reloaded everything to test. Seems like its keeping pace with how quickly /melody would chain things together now . I could be wrong though but seems more fluid. There used to be a noticeable pause during high haste intervals that is gone now//much improved?
 
I had the opportunity to beta test the new version and all i can say is go get it.
Its excellent and the only plugin/Lua to date to support a competitive bard.

Along with either the Lua medleyBanish and/or the kissassist fork for more automation its the core of the best setup a bard can get for situational raid, group or mission play.

Well done, Winnower!
 
Correct I went to the sit gitlab and there are so many I can download. Which one do I DL. Do I make it a mq2medley.dll file and put it into plugins folder?
Undefeated, you do not need to go to gitlab anymore. The dll is included with VV. When you install mq from the Red Guide launcher it will be installed at that time.

When the newest version is released there will be an update to VV so you will install the new version with the update.
 
Correct I went to the sit gitlab and there are so many I can download. Which one do I DL. Do I make it a mq2medley.dll file and put it into plugins folder?
U don't.

You could compile mq and/or plugins, but by and large you don't. Mq2medley is included with vv via the RG launcher
 
The update isn't showing here, but looks like the changes made into the latest build:
  • Compute song cast time dynamically (fix slow cast during quicktime)
  • Track dot timer per mob (more dps!)
  • be passive during silence and invulnerability
  • default to debug off (when first loading plugin for first time)
Thanks @Knightly and @brainiac for the help getting this out.
 
I Did a Thing... !
I added bandolier support to MQ2Medley

[CODE lang="ini" title="Song settings in INI"]song2=McVaxius' Berserker Crescendo^10^${Me.CombatState.Equal[COMBAT]}^1
song3=Katta's Song of Sword Dancin^12^${Me.CombatState.Equal[COMBAT]}^drum[/CODE]

Now there are 4 parts each separated via a "^" carrot
  1. Song / AA / Item Name
  2. Duration (expected duration tweak for lag)
  3. Conditions
  4. Bandolier setting name to swap for song default is 1 no swap. uses in-game bandolier hotkeys and performs /bandolier activate name
 
Last edited:
Updated 1-1-2024

moved the bandolier option to the end of the conditions, less breaking of old configs.
option goes at the end of your song config per song. 1 is no swap.
otherwise uses the bandolier hotkeys name from in game.

examples:
song5=Selo's Accelerating Chorus^6^1^drum
song6=Cantata of Soothing^8^1^lute
song7=Amplification^30^1^1

song 5 will swap to drum , 6 to lute, and 7 stays on last set no swap.
i keep one bandolier set to weaons if meleeing and set the non instrument required ones to weapons.

This is all less needed once you have an epic but very handy for leveling up.
~Grimmier 2024-01-01

Signed-off-by: grimmier378 <[email protected]>

updated above files
 
thats excellent for TLP server ! good work !
thanks. =)
I did another update to MQ2Medley
2024-01-15 Grimmier - Moved the Bandolier settings out of the song string in the INI.
-Now in the INI for each son is a matching bandolier#= setting
-so song1 matches bandolier1 this way we don't break anyone's INI's
-Defaults to a value of 1 which is no swapping.
examples:
song1=Selo's Accelerating Chorus^6^1
song2=Cantata of Soothing^8^1
song3=Amplification^30^1
bandolier1=drum
bandolier2=lute
bandolier3=weapons // this assumes you have a bandolier hotkey named weapons

Compiled both live and emu versions
 
Testing Potential Update 2024-01-18

  • Added in some Backward Compatibility so old INI's with ^ separators still work as intended.
  • Changed INI layout for Swapping and made it consistent with other INI's for MQ using | separators and cond1 etc. variables for conditions.
  • Now checks for cond# statements and looks those up for conditions, this allowed the use of | separators without an or statement breaking it.
  • Item swapping can now be done one of 2 ways.
    • 1: With the in game bandolier command, this requires you to save your hotkeys in game and define the hotkey name in the config.
      • toggle Bandolier use (on/1) or (off/0) with /medley bandolier will toggle between bandolier mode and exchange mode.
      • bandolier entries are defined per song. so song1 would pair with bandolier1 in your config. if no bandolier is set we do not swap.
    • 2: With the MQ2Exchange plugin loaded.
      • you define swap sets like conditions swap1=itemname|slotname|itemname|slotname
      • you can also define sets with itemnumber|slotnumber
      • this accepts multiple items and slots.
      • Added variables for MainHand and OffHand that if set will be used for any instance where you do not define a swapSet in the song string.
      • Item swaps check current known items against what to swap and ignores anything that we should already have equipped.
  • Song strings using the new layout look like this.
    • song1=SongName|Duration|SwapSet|Condition
    • swap set and condition are optional and will default to noswap and 1 respectively.
    • all of the below will be valid entries.
      • song1=SongName|Duration|SwapSet|Condition
      • song1=SongName|Duration|SwapSet #Sets the default condition to 1
      • song1=SongName|Duration|Condition #Sets default SwapSet to MainHand OffHand items if defined, else just plays the song
      • song1=SongName|Duration #Same as above but also defaults the condition to 1
[CODE title="[MQ2Medley] section"][MQ2Medley]
Delay=5
Quiet=0
Debug=0
Medley=test
Playing=1
# MainHand and OffHand are used if defined for any noswap situations to make sure we have our weapons in hand.
# You can leave them blank and it will just cast with whatever you have equipped at the time.
MainHand=Singing Short Sword
OffHand=Ancient Crude Club
# Use bandolier or MQ2Exchange 1 or 0 can toggle with /medley bandolier.
Bandolier=1[/CODE]

[CODE lang="ini" title="[MQ2Medley-MedleyName] section"][MQ2Medley-kiss]
songIF=!${Me.Invis}
# You can call a song by GemNumber this is more reliable
song1=2|10|swap4|cond2
# You can also call a song by Song Name
song2=Chorus of Replenishment|16|cond3
song3=4|20|cond3
song4=3|16|swap5|cond3
song5=Amplification|30
song6=8|50|swap2|cond1
song7=9|12|swap4|cond1
song8=Purifying Chorus|12|swap2
song9=7|12|swap4|cond1
# Conditions are separated from the song string allowing | separators for easy of readability
cond1=TRUE
cond2=${Me.CombatState.Equal[COMBAT]} && ${Target.Type.Equal[NPC]}
cond3=${Me.CombatState.Equal[COMBAT]}
cond4=FALSE
# SwapSet's combinations of ItemName|SlotName or ItemNum|SlotNum can be strung together.
swap1=Singing Short Sword|mainhand|Ancient Crude Club|offhand
swap2=Singing Short Sword|mainhand|Hand Drum|offhand
swap3=Wooden Flute|offhand
swap4=Lute|offhand
swap5=Horn|offhand
# Bandolier settings are key'd to the song of same number. uses in-game bandolier hotkey names.
bandolier1=weapons
bandolier2=weapons
bandolier3=weapons
bandolier4=weapons
bandolier5=weapons
bandolier6=drum
bandolier7=Lute
bandolier8=drum
bandolier9=Lute[/CODE]


I've attached dll's for both EMU and LIVE

Any comments and concerns please feel free to message me. Maybe we can make this MQ2Medley 2.0 and pushed to regular builds =) until then...
 
I deleted the zipped DLL files, we don't want to encourage people to download those outside the normal channels since it could be malicious (not saying you are, just that it's a bad practice).
 
Hello, Since 5/15/2024 patch /medley queue "Blade of Vesagran" finishes current song, pauses the cast time (approxmately) and then resumes. Additionally /cast item "Blade of Vesagran" does nothing (no messages)
 
can confirm /useitem Blade of Vesagran also not working anymore .. /useitem 24 14 (bagnumber, slotnumber) works still

perhaps there was a change how EQ handles this and medley is suffering from it
 
@grimmier great to see you help to develop medely further.

Since you asked for input. Sometimes i need an exact order of songs in which i can queue situational stuff in.

I checked other tools, but Twist doesn't do quick time and long /melody always fall short because you have to do something out of order (like mez, slow, epic, cure, etc.) and it has to be restarted.

As is, medley is the best bard tool out there. It would be great if this addition was possible.
 
Last edited:
Can anyone else confirm that items (ie Blade of Vesagran) are not being cast?

Think I need to switch from using "/cast item" to "/useitem"
 
Hello, Since 5/15/2024 patch /medley queue "Blade of Vesagran" finishes current song, pauses the cast time (approxmately) and then resumes. Additionally /cast item "Blade of Vesagran" does nothing (no messages)
Yep, I'll try to get a pull request out soon to fix this. Should be as simple as switching /cast item to /useitem
 
Yep, I'll try to get a pull request out soon to fix this. Should be as simple as switching /cast item to /useitem
Thank you,

I also confirmed
/cast item "Blegh of Vesagran" stated item 'Blegh of Vesagran' not found. while /cast item "Blade of Vesagran" has no visible indication.
 
Is there an easy way to get this update right now? I see that Winnower commited the fix on May 28, but the most recent release of VV was May 27. I'd really love to have my bard clickies working again.
 
I am using mq2twist atm, but I consider moving on to this. As mentioned somewhere there seems to be a somewhat steeper learning curve to this plug than there is to mq2twist. My current /twist looks like this, when starting from my Lua:
mq.cmd("/twist 21 22 11 1 2 3 4 5 6 7 6 8 6 9 6 10 6") - As you see, song 6 is a nuke that is sung every second song after the first 2 clickies and songs 11, 1-6 '
How would I do this in the inifile? The numbers in mq2twist refers to the spell gems, but in medley it seems like there is no connection between song# and spell gem.
Would I just (simplified)
song1 = name of a song
song2 = name of nuke <-- nuke
song3 = name of another song
song4 = name of nuke <-- same nuke as song2 I wouldnt repeat song2 here, would I?
and so on...
 
I am using mq2twist atm, but I consider moving on to this. As mentioned somewhere there seems to be a somewhat steeper learning curve to this plug than there is to mq2twist. My current /twist looks like this, when starting from my lua:
mq.cmd("/twist 21 22 11 1 2 3 4 5 6 7 6 8 6 9 6 10 6") - As you see, song 6 is a nuke that is sung every second song after the first 2 clickies and songs 11, 1-6 '
How would I do this in the inifile? The numbers in mq2twist refers to the spell gems, but in medley it seems like there is no connection between song# and spell gem.
Would I just (simplified)
song1 = name of a song
song2 = name of nuke <-- nuke
song3 = name of another song
song4 = name of nuke <-- same nuke as song2 I wouldnt repeat song2 here, would I?
and so on...
Can see how I use insult/disdain here https://www.redguides.com/community/threads/mq2medley-medley-resource.89749/

I prioritize dots(if mob has 40% or more hp), over insults. So insults will fire if mob is already dotted up or low hp.

Keep in mind that medley is scheduler, which judges what to play based on the expiration(duration) of the song. So if you put too many songs, the bottom songs may never be played. In practice with tune stuck in the head aa, and 30s+ duration songs, this is unlikely to happen.

You don't need to list nukes/insults multiple times. For each song cast, medley runs down the song list until it finds one that isn't active. If all songs are active, it plays the one that will expire soonest.
 
Holy crap, that's advanced!

As a first test I just did this:

[MQ2Medley-Test
songIF=!${Me.Invis}
song1=Aria of Tenisbre Rk. II^30^1
song2=Swarn's Chant of Frost Rk. II^18^${Melee.Combat}

And it seems that I missunderstand a few things:
First question: The duration of the Aria is 30 seconds. The second part is supposed to be "(expected?) the duration of the buff", but the medley chain casts Aria as fast as it possibly can. I thought it would cast it once, then wait for 30 seconds before casting again. Is this simply because there is only one song that will be cast in the whole set, and it's like a "OMG WHY ARE YOU USING MEDLEY FOR PLAYING ONE SONG?!"-thing?
Second question: The duration of the four main DoTs is 18 seconds, but in the example, it is set to 30. Is this perhaps because you have an item or ability that makes dot last longer? Or just because you dont want to cast them too often?
 
Holy crap, that's advanced!

As a first test I just did this:

[MQ2Medley-Test
songIF=!${Me.Invis}
song1=Aria of Tenisbre Rk. II^30^1
song2=Swarn's Chant of Frost Rk. II^18^${Melee.Combat}

And it seems that I missunderstand a few things:
First question: The duration of the Aria is 30 seconds. The second part is supposed to be "(expected?) the duration of the buff", but the medley chain casts Aria as fast as it possibly can. I thought it would cast it once, then wait for 30 seconds before casting again. Is this simply because there is only one song that will be cast in the whole set, and it's like a "OMG WHY ARE YOU USING MEDLEY FOR PLAYING ONE SONG?!"-thing?
Second question: The duration of the four main DoTs is 18 seconds, but in the example, it is set to 30. Is this perhaps because you have an item or ability that makes dot last longer? Or just because you dont want to cast them too often?
Yes it just refresh the buff. If all songs are active, it casts the song that will expire soonest to refresh it.

You should use the duration that matches your dots. What level is your bard? Tune stuck in your head(I think) and the type 3 augs increase dot duration. For buffs I use conservative duration (less than actually duration), for dots I do the opposite. That's just a personal optimization preference.
 
Yes it just refresh the buff. If all songs are active, it casts the song that will expire soonest to refresh it.

You should use the duration that matches your dots. What level is your bard? Tune stuck in your head(I think) and the type 3 augs increase dot duration. For buffs I use conservative duration (less than actually duration), for dots I do the opposite. That's just a personal optimization preference.
Bard is lvl 125 with maxed out AAs. I thought the number was a "cast again in THIS_NUMBER seconds". But that is not how it works, I guess. Perhaps this is a no-issue when the queue is actually made up of more than one song. ;)
And the dots have a duration of 0:12 (0:18), so I presume this means that due to level and items and AAs the dots land up to 3 times? I have never really looked to tell the truth. This just what I assume happens.

So, I did this. Thoughts? Opinions? Is something just flat out wrong? (There could be typos or other misstakes)

songIF=!${Me.Invis}
song1=Aria of Tenisbre Rk. II^30^1
song2=Blade of Vesagran^180^${Me.Combat}
song3=War March of Nokk^30^1
song4=Kindleheart's Chant of Flame Rk. II^18^${Me.Combat} && ${Target.Type.Equal[NPC]} && (${Target.PctHPs} > 40 || ${Target.Named})
song5=Swarns's Chant of Frost Rk. II^18^${Me.Combat} && ${Target.Type.Equal[NPC]} && (${Target.PctHPs} > 40 || ${Target.Named})
song6=Goremand's Chant of Disease Rk. II^18^${Me.Combat} && ${Target.Type.Equal[NPC]} && (${Target.PctHPs} > 40 || ${Target.Named})
song7=Marsin's Chant of Poison Rk. II^18^${Me.Combat} && ${Target.Type.Equal[NPC]} && (${Target.PctHPs} > 40 || ${Target.Named}
song8=Eoreg's Insult Rk. II^6^${Me.Combat} && ${Target.Type.Equal[NPC]} && (${Target.PctHPs} > 40 || ${Target.Named}
song9=Grayleaf's Reckless Renewal Rk. II^30^${Me.Combat}
song10=Pulse of August Rk. II^30^1
song11=Regar's Lively Crescendo Rk. II^30^1
song12=Arcane Rhythm Rk. II^30^${Me.Combat}

Regarding this: /medley queue "Slumber of Silisia" -targetid|${Me.XTarget[2].ID}
If my bard is smacking away with kicks and blades on the first target, won't switching target to cast mez, break said mez with the melee, before switching back to the first target?
 
Last edited:
Looks decent to me. Test your dot duration on a combat dummy and buy the type 3 Aug for an additional tick.

The targetid is unreliable. But it's quick enough it will rarely break mez. I think sometimes it's too quick to pick up the new target. I've instead used some lem fragments to do stuff like this.
 
Trying this out for the first time and I'm not sure what I'm doing wrong here.

I'm on the EMU Project Lazarus and using the KissAssist fork KissCharm put together by @grimmier.

I have a level 40 bard I'm working though it's teething issues at the moment.
Works mostly, but when it plays it the following medley it only sings two songs, Psalm of Purity and Cantata of Soothing. No Amplification or Selos.

This is the toons ini when the medley is playing:
[CODE lang="ini" title="Project Lazarus_BardName"]
[MQ2Medley-kiss]
songIF=!${Me.Invis}
song1=Selo's Consonant Chain^12^${Me.CombatState.Equal[COMBAT]} && ${Target.Type.Equal[NPC]}
song2=Vilia's Verses of Celerity^10^${Me.CombatState.Equal[COMBAT]}
song3=Psalm of Purity^8^1
song4=Katta's Song of Sword Dancin^12^${Me.CombatState.Equal[COMBAT]}
song5=Cantata of Soothing^8^1
song6=Amplification^30^1
song7=Selo's Accelerando^8^1
[MQ2Medley]
Delay=3
Quiet=0
Debug=0
Medley=kiss
Playing=1[/CODE]
When in combat, the bard mezzes (excellent - KissCharm ini set up properly), but the medley changes to only Selo's Consonant Chain and Vilia's Verses of Celerity, and occasionally Psalm of Purity. No Katta's Song of Sword Dancing =/

What am I missing to get the toon to play 3 or 4 songs?
 
Release MQ2Medley

Users who are viewing this thread

Back
Top
Cart