Bard Macro

PeteSampras

Your UI is fucking you. Stop using it.
Joined
Dec 12, 2007
Messages
3,956
Reaction score
49
Points
38
Bard mac v. 1.1

Updated: 15 Jan 2011

Update notes:
-Added Color Echos to let you know what is going on.
-Fixed a couple bugs.. probably intoduced a couple more


-Added Tash Orb functionality (only works in combat)
-Added Slow functionality (only works in combat)
-Ghetto fixed AE mez. It will not check if mobs are immune to mez, it will just cast it when 3 or more get in range. But it should work at least.
-- you must designate your gem in the .ini for AE mez because there are multiple Wave of Slumbers in the spelldat file causing conflicting IDs.
-Added some lines to the .ini, requires using the new one.
-Added some additional immunelist stuff to be used with other macros for mobs that are for sure mez/snare/stun able. No need to redownload mob ignore list as it autoupdates it.

-Left a lot of old code in temporarily that I will clean up in next version. I need a reminder of what worked and what didnt.

I will need to change the XTarget stuff again once HoT releases since it is adding 2 additional slots.

I also will get around to looking at the other subs/abilities as i have time, please feel free to post more suggestions/comments.



Downshits still mess up the macro, suggest adding the downshitif command below.


ORIGINAL NOTES:


What it does: Will attack anything on XTarget 1, will mez anything on XTarget2-5. Set your group's tank target or whatever you want killed as XTarget 1. It will use rest mode/songs when nothing is on XTarget. It will use combat when a only 1 target, and that target is XTarget 1.. or if you have mez set to not use, then it will go into combat mode whenever there are any XTargets.

If macro hangs on you: type /twist 0.


What you need:
MQ2Twist, MQ2Cast, MQ2Melee, MQ2exchange, spell_routines.inc
Mob_Ignore_List.ini
YourBardName_BRD.ini
bard.mac

Use:
Set XTarget 1 as the target you want to kill (group tank's assist, raid assist, target's target)
Leave XTarget2-5 as Auto Hate

MAKE SURE WHATEVER AURA AND MEZ SONG YOU ARE USING IS LOADED ALREADY!

Set up buffs/AAs/items in the .ini
Set playlists to reflect gem # of the songs you want played, not the names of the songs
Set RestSongPlaylist and CombatSongPlaylist to the proper list.

/mac bard

Special Commands:
These commands are used to swap songslists while macro is already running, without having to change and restart macro.

To check all playlists currently loaded in ini:
/songcheck

/rplay1-6 to change rest songs to playlist 1-6
Use: /rplay1, /rplay2, /rplay6, etc

/cplay1-6 to change combat songs to playlist 1-6
Use: /cplay1, /cplay2, etc

/burn - turns on your burn song list order
/burnoff - turns off your burn song list order

Thats it.

Known Issues:
SOE messed up bard song names.. carefully look at the names. Rk.III(no space) instead of Rk. III on some of them.

Using MQ2Downshits for buffing while this is running causes it to hang if your downshits dont tell it to /twist off. because of this, i HIGHLY suggest adding this line of code to your mq2melee ini.
Code:
downshitif=${If[${Zone.ID}!=345 && ${Zone.ID}!=344 && !${Me.Invis} && ${Me.Standing} && ${Macro.Name.NotEqual[bard.mac]},1,0]}
Nontargetable mobs were getting targetted sometimes, so i added /alert 6 codes for a couple items and will need to add more so it never tries to target them.

Grubers, Charm routines currently coded, but not tested and are therefore disabled by default.

If macro hangs on you: type clear your target or type /twist 0. this creates an error and the macro sort of resets itself where it left off. /twist off doesnt work for that reset.

Please post comments/issues on here because I know there will be plenty.

I am aware that grubers and charm likely dont work. If you turn them on and encounter errors, or find out they work just fine. Please post that here as well!
 

Attachments

  • Mob_Ignore_List.ini
    13.6 KB · Views: 305
  • Bard.mac
    45.1 KB · Views: 310
  • Bard-oldversion.mac
    44.8 KB · Views: 76
  • PeteSampras_BRD.ini
    4 KB · Views: 237
Last edited:
What it does: Will attack anything on XTarget 5, will mez anything on XTarget1-4. Set your group's tank target or whatever you want killed as XTarget 5. It will use rest mode/songs when nothing is on XTarget. It will use combat when a only 1 target, and that target is XTarget 5.. or if you have mez set to not use, then it will go into combat mode whenever there are any XTargets.

If macro hangs on you: type /twist 0.


What you need:
MQ2Twist, MQ2Cast, MQ2Melee, MQ2exchange, spell_routines.inc
Mob_Ignore_List.ini
YourBardName_BRD.ini
bard.mac

Use:
Set XTarget 5 as the target you want to kill (group tank's assist, raid assist, target's target)
Leave XTarget1-4 as Auto Hate

MAKE SURE WHATEVER AURA AND MEZ SONG YOU ARE USING IS LOADED ALREADY!

Set up buffs/AAs/items in the .ini
Set playlists to reflect gem # of the songs you want played, not the names of the songs
Set RestSongPlaylist and CombatSongPlaylist to the proper list.

/mac bard

Special Commands:
These commands are used to swap songslists while macro is already running, without having to change and restart macro.

To check all playlists currently loaded in ini:
/songcheck

/rplay1-6 to change rest songs to playlist 1-6
Use: /rplay1, /rplay2, /rplay6, etc

/cplay1-6 to change combat songs to playlist 1-6
Use: /cplay1, /cplay2, etc

/burn - turns on your burn song list order
/burnoff - turns off your burn song list order

Thats it.

Known Issues:
SOE messed up bard song names.. carefully look at the names. Rk.III(no space) instead of Rk. III on some of them.

Using MQ2Downshits for buffing while this is running causes it to hang if your downshits dont tell it to /twist off. because of this, i HIGHLY suggest adding this line of code to your mq2melee ini.
Code:
downshitif=${If[${Zone.ID}!=345 && ${Zone.ID}!=344 && !${Me.Song[Elevator Music].ID} && !${Me.Invis} && ${Me.Standing} && !${Macro.Name.NotEqual[Bard.mac]},1,0]}

Nontargetable mobs were getting targetted sometimes, so i added /alert 6 codes for a couple items and will need to add more so it never tries to target them.

MezTimer functionally seems to be completely ignored, so it just chain mezzes each mob instead of waiting the entire duration.

AEMez, Grubers, Charm routines currently disabled, though i did have AEMez working before disabling it, i changed some stuff afterwards and cant for sure say it works in this version.

If macro hangs on you: type /twist 0. this creates an error and the macro sort of resets itself where it left off. /twist off doesnt work for that reset.

Please post comments/issues on here because I know there will be plenty.

I am aware that grubers, AEMez, and charm likely dont work. If you turn them on and encounter errors, or find out they work just fine. Please post that here as well!

This is a well written macro and I'd like anyone that's considering using it to give it a shot. This macro is the best one I've had the opportunity to use for the bard class. Also, please post back here if you have any issues with it so they can be corrected!
 
I have zbot so tweaked on my bard I haven't tried anything else for years. This one looks good though I will try this weekend if I have time.
 
Last edited:
May just be me or a random setting i messed up but like a friend of mine in group said "It either attacks or sings, rarely both."
I love this macro though. Compaired to the modbot version it seems to have alot more control and simplicity. When resting it starts to twist the spells i put in the INI then instantly stops itself. The /twist 0 doesnt seem to fix it for me and i find myself having to start over the macro for every mob so it will work right. Great potental or i just screwed something up. Good job.

Looking at it further, when in rest mode it starts to twist the song, then uses the check to see if its at the camp site, stops the twist, then repeats.
Also when it starts up it thinks your mez spell is the Slumber Rk. III, even if the INI says it isnt. I saw it hard coded into the Bard.mac
 
Last edited:
For attacking purposes: If you are mezzing anything, it will not attack at all. It's because i cant get the mez timers to actually work due to spell_routines not working on songs so it just chain mezzes and i decided to let it do that over forcing it to switch targets back and forth nonstop. However if it is not attacking while playing combat songs, that is certainly a bug and if you can send me your ini or describe how/when it occurs i will gladly get that fixed asap.

Also, ive found that it hangs up for me when in combat songs and mq2melee downshit is trying to do a buff. Use that line of code that disables downshit buffs while this macro is running and just use your buffs within the macro.. when the bard.mac is not running, it will use your mq2melee downshits as normal. holyshits will still function no matter what.

If it is chain casting rest songs, it is most likely because the strings dont match. The strings probably dont match because there is a space at the end of your line. There cannot be a space or it will mess it up. I have already hardcoded a space to pick up. Say you are twisting "1 2 3" . When you do ${Twist.List} it shows up as "1 2 3 " with an extra space. So i had to hardcode that space into the compare function. Make sure your "RestSongList1=1 2 3" and not "RestSongList1=1 2 3 " in the ini.

In regards to hardcoded mez song, yes and no. What is actually coded is that it pulls it from your ini file under the "songs" section and pulls the "MezSong=#####" as your mez. If that is left blank, i have it default to "Slumber of the Mindshear Rk.III" Here is the coding for the /declare on the song:

Same things are applied to the UseMez (default FALSE) and MaxMezLevel (88).

It then figures out what gem you have mez memmed in on its own. If you have UseMez=TRUE, but dont have a mez memmed, it will likely mess it up. I havent tried it, but bardsongs wont work with spell_routines to mem your songs for you either. it only works with spells. I tried to make a custom spells_routine specifically for bard songs but the functionality wasnt up to snuff so i used /twist once instead.

Code:
/declare UseMez bool outer ${Ini[MyIni,Songs,UseMez,FALSE]}
/declare MezSong string outer ${Ini[MyIni,Songs,MezSong,Slumber of the Mindshear Rk.III]}
/declare MezGem int outer 
/declare MaxMezLevel int outer ${Ini[MyIni,Songs,MaxMezLevel,88]}

On a side note:

Really i, or someone else, needs to get spell_routines to include songs and this would solve a lot of problems with getting bard macros to work right.

The way spell_routines works is that it sets CAST_SUCCESS to true when you emote "begin to cast the spell".. but there is no message/emote for bard songs to let it know that you have started casting.. and since you are constantly twisting songs, it always has a ${Me.Casting.ID} so it never stops to mem a song. and because you never start to cast a spell it never runs the doevents for resisting/immune/etc so the bard stands there looping over and over.

I have tried a couple variations but it hasnt been a success yet. I think i could get a hybrid version using spell_routines to call mq2twist for songs, but that isn't optimal for longevity or interaction with other macros/features.
 
Code:
/squelch /twist once ${Me.Gem[${DebuffSpell${i}}]}
/varset castReturn CAST_SUCCESS
/delay ${Spell[${DebuffSpell${i}}].MyCastTime}s
/delay 1s
/call DoCastingEvents

Take a look at el_nene autobot on VIP MQ2 forum. For how to handle debuff with bard.
 
Good deal, thanks a bunch. I had done that /varset castReturn to cast_success in the spell_routines that i had modified and tried an option of just putting a meztimer on there no matter what, then running events and having it set that timer to 0 if a doevent was met for resist or immune. I also need it to add to my mez immune list based on that. This is what i was doing when i had it mez unlimited targets (5 is all you can handle timewise really anyway) before i hardcoded it to 4. It still wasnt working with the meztimer${mob's id} so i scrapped it. But i wasn't doing it just like you said to. Hopefully this works!

I will get this added in asap and rearrange some of the mez handling to reflect it. Thanks nene.
 
i played with this mac lastnight and i also ecncountered where the bard would not attack. i went scrolling through the mac and i think i found out why.
Code:
Sub Combat
/call AAs
/call ClickyNuke
/call Aura
/call DPS
/if (${Attacking}) /return
/if (!${Me.XTarget[5].ID}||!${Target.ID}) /call ClearTarget
/if ((${Twist.List.NotEqual[${PlayList${CombatSongList}} ]}||!${Twist}) && !${Burning})  /call CombatSongs
/if (${Spawn[${Me.XTarget[5].ID}].ID}) /tar ${Spawn[${Me.XTarget[5].ID}]} npc noalert 6
/if [COLOR="DarkRed"](!${Me.CombatState.Equal[COMBAT]}[/COLOR] && ${Spawn[${Me.XTarget[5].ID}].PctHPs}<${MeleeAt} && ${Target.ID}==${Me.XTarget[5].ID}) /attack on
/if (${Spawn[${Me.XTarget[5].ID}].Distance}<100 && ${Spawn[${Me.XTarget[5].ID}].PctHPs}<${MeleeAt} && ${Spawn[${Me.XTarget[5].ID}].Type.Equal[npc]} && ${UseMelee}) {
	/varset AttackCheck 1s
	/attack on
	/pet Attack
	/varset PetAttacking TRUE
	/varset Attacking TRUE
	}
/return

if i am reading this right, the bard will only attack if it is not already engaged with a target. the problem i see is that that code is checking if you have any aggro what so ever. when a mob is incoming and bard is playing a group song and gets aggro, with the bard already having aggro (!${Me.CombatState.Equal[COMBAT]} is checking if you have aggro not if you are physically attack a mob. you need to change it to !${Melee.Combat}.

i have not tested this yet with this fix but i believe it will fix that problem
 
Hmm, you might be right. Will give that a try. thanks for the input! I made the changes to a couple spots like nene suggested but i havent had time to test it so i didnt post the new version yet. will try to get it tested soon.
 
Hmm, you might be right. Will give that a try. thanks for the input! I made the changes to a couple spots like nene suggested but i havent had time to test it so i didnt post the new version yet. will try to get it tested soon.

Instead of using either of those methods, make use of the extended target window to determine if you have aggro or not. By using the extended target window, you also minimize the risk of the bard causing your group to be trained while the puller is out splitting / bringing the mobs back and your rest song / songs land on the puller.
 
I am using the extended target window. Target 5 is the kill target, 1-4 are mez targets.

The not meleeing now and then isnt a huge deal breaker for me to use it, but it is annoying so i do want to fix it. I am able to /twist 0 or restart the macro and it goes back to working.

And as an update to suggestions, the melee.combat thing didnt work either. Nor did nene's suggestion for mez. I dont know why.. it should have because he uses it in his bot.. but it didnt. Even when i manually set the timers to 18s it doesnt work. It is like it is not recognizing a timer or not checking it. im hitting a wall at this point.. will continue plugging away at it.. it does most of what i want. that not attacking and mez timer not actually working is annoying. I have thrown in a bunch of /echos to try to figure out where it is going wrong.
 
When I load the macro it doesn't load the correct versions of my Mez, Charm and AE charm spells. It loads (bc output) the RK. III versions and I only have Rk. II versions when I start my macro.

I does load the correct song playlist, resting only because he never goes into combat mode.

The bard does not self buff with any of the clicky items that I have listed.

My bard does not attack when there's only 1 mob in camp and doesn't attempt to Mez when there's multiple (possibly due to the wrong spells coming up).

Below is my bard's .ini file that I am using.

Any thoughts on what I am doing wrong?



[Settings]
MyChannel=bc
UseSelos=TRUE
UseCamp=TRUE
UseMelee=TRUE
MeleeAt=97
FadeAt=40
StopMobGate=TRUE

[Songs]
ImmunityCheck=FALSE
SongCheck=SongCheck
SongChange=SongChange
PlayListTotal=4
PlayList1=1 2 3 4
PlayList2=1 2
PlayList3=1 1 1
PlayList4=2 2 2
CombatSongList=1
RestSongList=2
BurnList=3

BurnOnTrigger=burn now
BurnOffTrigger=stop burn

UseGrubers=FALSE
GrubersHPAt=30
GrubersManaAt=30
GrubersName=Gruber's Lively Crescendo Rk.II
GrubersRecourseName=Gruber's Lively Crescendo Rk.II
GrubersMyMana=40

UseAEMez=TRUE
AEMez=Wave of Slumber
AEMezRange=50

UseCharm=FALSE
CharmSong=Voice of the Mindshear Rk.II
MaxCharmLevel=83

UseMez=TRUE
MezSpell=Slumber of the Mindshear Rk.II
MezRange=200
MaxMezLevel=88

UseAura1=FALSE
AuraName1=Aura of Rodcet
AuraSong1=Aura of Rodcet Rk. II

UseAura2=TRUE
AuraName2=Aura of the Poet
AuraSong2=Aura of the Poet Rk.II


InvisSpell=Fading Memories
IG=alt
InvisTrigger=invison
InvisOffTrigger=invisoff

StunCHeal=TRUE


[SelfBuffs]
SelfBuffTotal=5

SelfBuff1=Harmonize
SelfBuffSpell1=Phosphorescent Rapier of Intense Light
SelfBuffGem1=item

SelfBuff2=Form of Defense VI
SelfBuffSpell2=Ring of Genari Provocation
SelfBuffGem2=item

SelfBuff3=Symphony of Battle
SelfBuffSpell3=Rapier of Somber Notes
SelfBuffGem3=item

SelfBuff4=Knowledge of the Past IV
SelfBuffSpell4=Crystalline Ring of Drudgery
SelfBuffGem4=item

SelfBuff5=Expanding Mind I
SelfBuffSpell5=Fiery Belt
SelfBuffGem5=item

SelfBuff6=NameOfBuff
SelfBuffSpell6=Spell/item name
SelfBuffGem6=gem#/alt/item

SelfBuff7=NameOfBuff
SelfBuffSpell7=Spell/item name
SelfBuffGem7=gem#/alt/item

SelfBuff8=NameOfBuff
SelfBuffSpell8=Spell/item name
SelfBuffGem8=gem#/alt/item


[Buffs]
DoBuffs=FALSE
BuffTotal=2

Buff1=
BuffGem1=
BuffTrigger1=
Buff2=
BuffGem2=
BuffTrigger2=
Buff3=
BuffGem3=
BuffTrigger3=
Buff4=
BuffGem4=
BuffTrigger4=


[AA]
AATotal=11

AA1=Fierce Eye
AAGem1=alt
UseAA1=FALSE
UseAA1At=95
NamedOnlyUseAA1=FALSE
UseAA1IfNearby=pc
UseAA1IfNearbyAmt=3

AA2=Quick Time
AAGem2=alt
UseAA2=FALSE
UseAA2At=95
NamedOnlyUseAA2=FALSE
UseAA2IfNearby=pc
UseAA2IfNearbyAmt=3

AA3=Dance of Blades
AAGem3=alt
UseAA3=TRUE
UseAA3At=95
NamedOnlyUseAA3=TRUE
UseAA3IfNearby=npc
UseAA3IfNearbyAmt=1

AA4=Fundament: Second Spire of the Minstrels
AAGem4=alt
UseAA4=FALSE
UseAA4At=95
NamedOnlyUseAA4=FALSE
UseAA4IfNearby=pc
UseAA4IfNearbyAmt=3

AA5=Bladed Song
AAGem5=alt
UseAA5=TRUE
UseAA5At=95
NamedOnlyUseAA5=FALSE
UseAA5IfNearby=npc
UseAA5IfNearbyAmt=1

AA6=Boastful Bellow
AAGem6=alt
UseAA6=TRUE
UseAA6At=95
NamedOnlyUseAA6=FALSE
UseAA6IfNearby=npc
UseAA6IfNearbyAmt=1

AA7=Funeral Dirge
AAGem7=alt
UseAA7=TRUE
UseAA7At=95
NamedOnlyUseAA7=TRUE
UseAA7IfNearby=pc
UseAA7IfNearbyAmt=3

AA8=Cacophony
AAGem8=alt
UseAA8=TRUE
UseAA8At=95
StopAA8At=50
NamedOnlyUseAA8=FALSE
UseAA8IfNearby=npc
UseAA8IfNearbyAmt=1

AA9=Song of Stone
AAGem9=alt
UseAA9=TRUE
UseAA9At=95
NamedOnlyUseAA9=TRUE
UseAA9IfNearby=npc
UseAA9IfNearbyAmt=1

AA10=Selo's Kick
AAGem10=alt
UseAA10=FALSE
UseAA10At=95
NamedOnlyUseAA10=FALSE
UseAA10IfNearby=npc
UseAA10IfNearbyAmt=1

AA11=Identity Crisis
AAGem11=alt
UseAA11=FALSE
UseAA11At=95
NamedOnlyUseAA11=FALSE
UseAA11IfNearby=npc
UseAA11IfNearbyAmt=1

AA12=
AAGem12=
UseAA12=TRUE
UseAA12At=95
NamedOnlyUseAA12=TRUE
UseAA12IfNearby=npc
UseAA12IfNearbyAmt=1


[OffensiveClickies]
ClickyNukeTotal=1

ClickyNuke1=Blade of Vesagran
UseClickyNuke1At=95
NamedOnlyClickyNuke1=FALSE

ClickyNuke2=Tarnished Visionbound Plate Breastplate
UseClickyNuke2At=95
NamedOnlyClickyNuke2=FALSE
 
When you type in the Rk. II versions of spells make sure there is NOT a space after it in the macro. Sony sometimes has spaces between the . and the II and sometimes they do not, make sure you have looked very closely at the Rk. II part of the spell and make sure it is typed exactly the same.
 
I looked at my spells and they didn't have spaces. The ini file that I posted also has no spaces.
 
I looked at my spells and they didn't have spaces. The ini file that I posted also has no spaces.

The idea is that it matches exactly what you see in game, such as by hovering the mouse over the spell gem and copy that exactly as you see it.
 
I missed something really obvious and it appears to have worked from very limited testing to resolve the hang up issue with selfbuffs interfering with rest/combat songs. It didn't hit me until i had to reply to another guy's post.

I had a single mess up on my downshitif line that negated the entire line, causing mq2melee buffs to hang the macro.

in your server_charname.ini for mq2melee settings, supposing you dont have a downshitif line:

Code:
downshitif=${If[${Zone.ID}!=345 && ${Zone.ID}!=344 && !${Me.Song[Elevator Music].ID} && !${Me.Invis} && ${Me.Standing} && [COLOR=red]![/COLOR]${Macro.Name.NotEqual[Bard.mac]},1,0]}

Should be
Code:
downshitif=${If[${Zone.ID}!=345 && ${Zone.ID}!=344 && !${Me.Song[Elevator Music].ID} && !${Me.Invis} && ${Me.Standing} && ${Macro.Name.NotEqual[Bard.mac]},1,0]}
with no ! on the final piece.

If you do already have a downshitif line, just add: "&& ${Macro.Name.NotEqual[Bard.mac]}" before the ",1,0]"

This should clear up a lot of the sticking i hope as it does appear to be mq2melee causing the issues. thanks bards for being unique.

It might also require turning off holy shits and adding those in manually to the macro to get the mez/charm to kick in if you are already meleeing. I will need to try that or have folks test.

Also of note, AE Mez is bugged in game. It counts PCs as targets on the actual song. Until that is fixed, AE mez is not so useful unless soloing or PCs are out of the radius of the song.
 
will not play rest song

I can't get him to play the rest song... Starts the twist then stops and moves to group location over and over again...

Thoughts?

[Songs]
ImmunityCheck=FALSE
SongCheck=SongCheck
SongChange=SongChange
PlayListTotal=3
PlayList1=1 2 3 4
PlayList2=5 5
PlayList3=6 6
PlayList4=
CombatSongList=1
RestSongList=2
BurnList=3
 
According to your file there your bard should play song 5 over and over for rest.

If that is the case: make sure there is no space after the 5. you might as well make "PlayList2=5" since you are just twisting the one song.

For the movement part, i did try a change on one of the macro versions that used float instead of integars for the camp location because i thought it would be more accurate. However, it actually made them move a lot more. I dont know if that is what is going on for you. Try the first suggestion and let me know.
 
Ok I have the macro so that it buffs and plays the resting playlist. Turns out my evolving bard weapon, evolved, and it wouldn't do anything since the name was different.

I can't figure out why he won't attack when there's only 1 mob in camp.

Any ideas on what I should be looking for.
 
Try turning off AE Mez.. the actual song is buggy anyway. Mine still sticks some in melee so i just manually engage and it seems to correct itself. I needed the mq2melee downshitif line too.