Song scheduler for the modern bard.
Known issues:
* -targetid is not %100 reliable. works most of the time for me, but under some circumstances may not work.
This plugin grew out my frustration with MQ2Twist and it being hard to change from twist to twist while still being efficient and not recasting the songs that already had signification duration left. Was hard to use aria, "A Tune Struck in My Head", and burn twists effectively
This is the next evolution of MQ2Twist. Features
Ini/config library
Kiss fork and detailed instructions on using medley with it
Quickstart
Add a section to your server_playername.ini file like
/plugin MQ2Medley
/medley melee
You are now singing songs
INI Format
Can define multiply medleys in section named MQ2Medley-medleyname.
Define up to 20 songs, song1-song20
Each song has 3 parts separate by carrot(^) symbol
Part 1: Song, Item or AA name
Part 2: Duration the song lasts, this must be an expression like you would send to ${Math.Calc[part2]}. This how long you expect the buff to last.
Part 3: Condition for this song to cast. Also an expression for Math.Calc
Scheduling
Songs will cast in priority order, song1 > song2 > ... > song20
Songs that are not ready, will be skipped (Crescendo, Items, AA, etc)
Songs that still have active duration will be skipped (typically will start casting a song if less than 6 seconds left on their duration)
If all songs are active, then will cast the one that will expire soonest.
Commands
/medley name - Sing the given medley
/medley queue "song/item/aa name" [-targetid|spawnid] [-interrupt] - add songs to queue to cast once
/medley stop/end/off - stop singing
/medley - Resume the medley after using /medley stop
/medley delay # - 10ths of a second, minimum of 0, default 3, how long after casting a spell to wait to cast next spell
/medley reload - reload the INI file
/medley quiet - Toggles songs listing for medley and queued songs
Command examples
/medley melee
play medley defined in [MQ2Medley-melee] ini setion
/medley queue "Dirge of the Sleepwalker" -interrupt
Interrupt current song and cast AA "Dirge of the Sleepwaler"
/medley queue "Slumber of Silisia" -targetid|${Me.XTarget[2].ID}
When current song ends, will mez XTarget[2], briefly switching target to XTraget[2] then switching back to current target.
Target will be switched for one pulse, which is typically less than 20ms
/medley queue "Blade of Vesagran"
Add epic click to queue
/medley queue "Lesson of the Devoted"
Lesson of the Devoted AA will be added to the twist queue and sung when current song finished
TLOs
Medley.Medley
- string of current medley
- false (boolean) if no current medley
Medley.TTQE (time to queue empty)
- double time in seconds until queue is empty, this is estimate only. If performing normal medley, this will be 0.0
Medley.Tune
- int deprecated This AA was reworked, and will now always return 0. Do not use.
Medley.Active
- boolean true if MQ2Medley is currently trying to cast spells
Plugin Interaction
MQ2Medley has no plugin dependencies
MQ2Twist - should be able to coexist, just don't /twist and /medley at the same time
MQ2Cast - recommend not using this on your bard. use "/medley queue" to cast items and aa with cast time. use /alt activate or /cast item to cast instant cast AA and items, can do this even while medley is active (bards are awesome like that)
Versions
1.0 initial version
1.01 add mana check (won't get stuck on song you don't have mana for), 2010 compile
1.02 fix Medley.Medley issue (I hope)
Known issues:
* -targetid is not %100 reliable. works most of the time for me, but under some circumstances may not work.
This plugin grew out my frustration with MQ2Twist and it being hard to change from twist to twist while still being efficient and not recasting the songs that already had signification duration left. Was hard to use aria, "A Tune Struck in My Head", and burn twists effectively
This is the next evolution of MQ2Twist. Features
- set conditions for each song in the medley. Only want to cast on named? Only want to do insult if mana > 10%? Only want to cast dots if attack is on? Only want to cast mana regen when not in combat?
- Advanced queuing support. Can specific target of queued spells for mez or cure and plugin will switch back to existing target with plugin reflexes. Optional interrupt when queing song.
- Adapt your song song set without missing a beat, pick up with what's most important after interupting (mezzing, etc)
- priority scheduling. Did you just mez 3 mobs? Switch back to your most important spells automatically
- switch from medley to medley while still remembering the duration of current songs. Named up? just do switch to your burn medley to introduce new songs to the mix, while knowing what songs are already up.
Ini/config library
Kiss fork and detailed instructions on using medley with it
Quickstart
Add a section to your server_playername.ini file like
Rich (BB code):
[MQ2Medley-melee]
song1=War March of Jocelyn^30^1
song2=Aria of Maetanrus Rk. II^30^1
song3=Blade of Vesagran^180^${Melee.Combat}
song4=Fjilnauk's Song of Suffering^30^1
song5=Arcane Melody^30^1
song6=Silisia's Lively Crescendo^45^1
song7=Nilsara's Chant of Flame^24^${Melee.Combat}
/plugin MQ2Medley
/medley melee
You are now singing songs
INI Format
Can define multiply medleys in section named MQ2Medley-medleyname.
Define up to 20 songs, song1-song20
Each song has 3 parts separate by carrot(^) symbol
Part 1: Song, Item or AA name
Part 2: Duration the song lasts, this must be an expression like you would send to ${Math.Calc[part2]}. This how long you expect the buff to last.
Part 3: Condition for this song to cast. Also an expression for Math.Calc
Scheduling
Songs will cast in priority order, song1 > song2 > ... > song20
Songs that are not ready, will be skipped (Crescendo, Items, AA, etc)
Songs that still have active duration will be skipped (typically will start casting a song if less than 6 seconds left on their duration)
If all songs are active, then will cast the one that will expire soonest.
Commands
/medley name - Sing the given medley
/medley queue "song/item/aa name" [-targetid|spawnid] [-interrupt] - add songs to queue to cast once
/medley stop/end/off - stop singing
/medley - Resume the medley after using /medley stop
/medley delay # - 10ths of a second, minimum of 0, default 3, how long after casting a spell to wait to cast next spell
/medley reload - reload the INI file
/medley quiet - Toggles songs listing for medley and queued songs
Command examples
/medley melee
play medley defined in [MQ2Medley-melee] ini setion
/medley queue "Dirge of the Sleepwalker" -interrupt
Interrupt current song and cast AA "Dirge of the Sleepwaler"
/medley queue "Slumber of Silisia" -targetid|${Me.XTarget[2].ID}
When current song ends, will mez XTarget[2], briefly switching target to XTraget[2] then switching back to current target.
Target will be switched for one pulse, which is typically less than 20ms
/medley queue "Blade of Vesagran"
Add epic click to queue
/medley queue "Lesson of the Devoted"
Lesson of the Devoted AA will be added to the twist queue and sung when current song finished
TLOs
Medley.Medley
- string of current medley
- false (boolean) if no current medley
Medley.TTQE (time to queue empty)
- double time in seconds until queue is empty, this is estimate only. If performing normal medley, this will be 0.0
Medley.Tune
- int deprecated This AA was reworked, and will now always return 0. Do not use.
Medley.Active
- boolean true if MQ2Medley is currently trying to cast spells
Plugin Interaction
MQ2Medley has no plugin dependencies
MQ2Twist - should be able to coexist, just don't /twist and /medley at the same time
MQ2Cast - recommend not using this on your bard. use "/medley queue" to cast items and aa with cast time. use /alt activate or /cast item to cast instant cast AA and items, can do this even while medley is active (bards are awesome like that)
Versions
1.0 initial version
1.01 add mana check (won't get stuck on song you don't have mana for), 2010 compile
1.02 fix Medley.Medley issue (I hope)
Attachments
Last edited:



VS 2010 doesn't have the overloads to compile the code, but anything with a C++ 11 and greater compile will.