• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Making Auto-Bard.inc (1 Viewer)

Joined
Feb 8, 2005
RedCents
8,490¢
Ok so I started playing a bard just a couple months ago (for years I used them for PL bots, but never played them), and I am just really dis-satisfied with what we have to manage songs. MQ2Medley made by winnower is pretty good, but still doesn't play nice with MQ2Cast. Don't get me started with MQ2Twist which is extremely inefficient. I am going to make an include file for use with any macro for auto casting on a bard or you can just rock it 100% of the time. The reason behind this is I feel like bards are not performing at the level they should. My hope is I want to make a bard that can sing at a 100% efficiency. Even when a human is playing they seem to stream a ton of songs into a /melody command that is also inefficient as it doesn't account for missed notes and such. By doing simple /cast commands I am able to read when songs are ready and also read the buffs/songs to know what to cast.

Here is my logic so far:
-Cast Aria of ****
-Cast Song of Suffering line (melee heavy group) and Caster song for caster group
-Cast War March
-Cast Chorus for regen

On incoming (no SHM/ENC in group)
-Cast Requiem of Time

On Fleeing Mob
-Cast Snare Song

On Extended Targets = 2
-Cast Single Mez on XTarget 2

On Extended Targets > 2 and NPC Count with radius 30
-Cast AE Mez

Obviously the human will do the pulling or the macro the inc is tied to, but what other logic am I missing? What else does a bard do in the group that I don't have above?
 
Bard was my initial box partner for my war. Count me in for testing. :)


Depends on if you want to control burn abilities. Second/Third spire depending on group make-up. Quicktime, Fierce Eye, Bladed Song, Cacophony, Funeral Dirge.

- - - Updated - - -

gonna add some slowage to that?

He already listed RoT under inc logic.
 
Bard was my initial box partner for my war. Count me in for testing. :)


Depends on if you want to control burn abilities. Second/Third spire depending on group make-up. Quicktime, Fierce Eye, Bladed Song, Cacophony, Funeral Dirge.

- - - Updated - - -

totally Agree!



He already listed RoT under inc logic.
 
would be awesome to see logic to use single target charm on xtarget 2 for added dps, potentially if bard is group puller... just an idea.

Yeah how this accomplished is using group member distance to determine if you are in camp or not. If you are then go ahead and fire off single target mez on XTarget 2

I.E.
Rich (BB code):
|--AM I IN CAMP?
declare x int local 0
declare memincamp int local 0
declare amincamp int local 0
for x 1 to ${Group}
   if (${Group.Member[x].Type.Equal[pc]} && ${Group.Member[x].Distance}<50) /varcalc memincamp ${memincamp}+1
/next x
/if (${memincamp}==${group}) /varset amincamp 1
/if (${amincamp}==1 && ${Me.XTarget}==2) /casting "AE MEZ Song" -targetid|${Me.XTarget[2].ID}
then use mez logic from here. Might need to tinker with distance but thats the just of it. The only gotcha is if your group is hitting XTarget 2 instead of XTarget 1. So some HP Logic needs to be put in as well.
 
Don't use your bard to slow. You will die.

I'm actually surprised on how bard slow doesn't generate nearly the aggro that ENC does. I've been slowing on pulls and the tank merc is able to grab aggro before the mob even gets to me on pull. Then again I'm not in current content yet and I hear they did all kinds of stuff to CC to make it difficult.
 
I'm actually surprised on how bard slow doesn't generate nearly the aggro that ENC does. I've been slowing on pulls and the tank merc is able to grab aggro before the mob even gets to me on pull. Then again I'm not in current content yet and I hear they did all kinds of stuff to CC to make it difficult.

bard songs seems to be capped far less than other classes.

http://www.eqemulator.org/forums/showpost.php?p=241400&postcount=1 is a pretty good analysis of hate stuff, some stuff still isn't the clearest, but hate values for most of the spells are figured out. (a lot of it verifies old stuff too, which is good)
 
With BST/BRD in same group, I'd likely have Bard pulling with RoT since AA pulling with KA is broken now, then have BST setup to slow on inc as well to overwrite or make sure it sticks for longer duration slow.
 
I'd probably just make a check for target.slowed, especially in case for BST, in case they're getting resists. Not sure if BST's have it, but bard has AA to reduce chance of RoT getting resisted. Better to have RoT on mob as a filler while other class gets slow on mob.
 
Haven't forgot about this, and I am re-designing my original thoughts on this. I think expanding MQ2Cast plugin to detect bards better is the best option. I'm working on modifying this now, and then I can fully automate the bard by just using holyshits in MQ2Melee. So it won't be using a macro.

- - - Updated - - -

Making pretty decent headway on this change in MQ2Cast, Already have ${Cast.Ready} fixed to see bard casting, now working on individual songs. Detecting Slow / Mez cooldowns is the main reason for this.
 
I've switched to an elaborate holyshit/downshit setup. Still working out the kinks, but it is looking very promising. Here is a snippit of my current MQ2Melee. It is far from finished and is customized just for my bard, but you get the general idea.

Rich (BB code):
downflag0=1
downflag1=1
downflag2=1
downflag3=1
downflag4=1
downflag5=1
downshit0=/if (!${Defined[castready]}) /declare castready timer outer 0
downshit1=/if (!${Spell[${Me.Aura[1]}].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Sitting} && ${Me.State.NotEqual[FEIGN]}&&${castready}==0) /multiline ; /if (${Me.Casting.ID}) /stopcast ; /cast ${Me.Gem[Aura of Maetanrus]} ; /varset castready ${Math.Calc[(${Spell[Aura of Maetanrus].MyCastTime}*10)+5]}
downshit2=/if (${Me.PctMana}>80&&${Group}&&${Me.GemTimer[Silisia's Lively Crescendo]}==0&&!${Me.Invis}&& !${Me.Sitting}&&${castready}==0) /multiline ; /if (${Me.Casting.ID}) /stopcast ; /cast ${Me.Gem[Silisia's Lively Crescendo]} ; /varset castready ${Math.Calc[(${Spell[Silisia's Lively Crescendo].MyCastTime}*10)+5]}
downshit3=/if (${Spell[Selo's Sonata].Stacks} &&(!${Me.Buff[Selo's Sonata].ID})&& !${Me.Invis}&& !${Me.Sitting} && ${Me.AltAbilityReady[Selo's Sonata]}) /docommand /alt act 3704
downshit4=/if (${Select[${Me.Casting.ID},${Spell[War March of Jocelyn].ID},${Spell[Aria of Maetanrus].ID},${Spell[Arcane Melody].ID}]}>0) /stopcast
downshit5=/if (!${Me.Combat} && ${Mercenary.Stance.Equal[Burn]} && ${Mercenary.State.Equal[ACTIVE]}) /stance Balanced
holyflag0=1
holyflag1=1
holyflag2=1
holyflag3=1
holyflag4=1
holyflag5=1
holyflag6=1
holyflag7=1
holyflag10=1
holyflag11=1
holyflag12=1
holyshit0=/if (${Spell[Selo's Sonata].Stacks} &&!${Me.Buff[Selo's Sonata].ID}&& !${Me.Invis} && ${Me.AltAbilityReady[3704]} && ${Me.State.NotEqual[FEIGN]}) /docommand /alt act 3704
holyshit1=/if (${Me.AltAbilityReady[Banestrike]} && ${Target.Type.Equal[NPC]} && ${Me.CombatState.Equal[COMBAT]} && ${Me.State.NotEqual[FEIGN]}) /docommand /alt act 15073
holyshit2=/if (${FindItem[Vicious Rabbit].Timer}==0 && ${Target.Type.Equal[NPC]} && ${Me.CombatState.Equal[COMBAT]} && ${Me.State.NotEqual[FEIGN]}) /multiline ; /docommand /useitem "Vicious Rabbit" ; /delay 10
holyshit3=/if (${Me.AltAbilityReady[Selo's Kick]} && ${Target.Type.Equal[NPC]} && ${Me.CombatState.Equal[COMBAT]} && ${Me.State.NotEqual[FEIGN]}) /docommand /alt act 8205
holyshit4=/if (${Me.Combat} && ${castready}==0 && ${Me.XTarget}>1 && ${SpawnCount[NPC radius 50]} &&${Me.GemTimer[Wave of Torpor]}==0) /multiline ; /if (${Me.Casting.ID}) /stopcast ; /cast ${Me.Gem[Wave of Torpor]} ; /varset castready ${Math.Calc[(${Spell[Wave of Torpor].MyCastTime}*10)+15]}
holyshit5=/if (${Me.Combat} && ${castready}==0 && ${Target.Type.Equal[NPC]} && ${Target.Distance}<150&&${Me.GemTimer[Requiem of Time]}==0 && ((${Me.XTarget}>1 && ${SpawnCount[NPC radius 50]} &&${Me.GemTimer[Wave of Torpor]}!=0)||${Me.XTarget}==1) && !${Spell[${Target.Buff[Requiem of Time]}].ID}) /multiline ; /if (${Me.Casting.ID}) /stopcast ; /cast ${Me.Gem[Requiem of Time]} ; /varset castready ${Math.Calc[(${Spell[Requiem of Time].MyCastTime}*10)+10]}
holyshit6=/if (${Me.Combat} && ${castready}==0 && ${Me.GemTimer[Dichotomic Psalm]}==0 && ((${Me.XTarget}>1 && ${SpawnCount[NPC radius 50]} &&${Me.GemTimer[Wave of Torpor]}!=0)||${Me.XTarget}==1)) /multiline ; /if (${Me.Casting.ID}) /stopcast ; /delay 10 !${Me.Casting.ID} ; /cast ${Me.Gem[Dichotomic Psalm]} ; /varset castready ${Math.Calc[(${Spell[Dichotomic Psalm].MyCastTime}*10)+10]}
holyshit7=/if (${Me.Combat} && ${castready}==0 && ${Me.GemTimer[Dichotomic Psalm]}!=0 && ${Select[${Me.Casting.ID},${Spell[War March of Jocelyn].ID},${Spell[Aria of Maetanrus].ID},${Spell[Arcane Melody].ID},${Spell[Chorus of Sionachie].ID}]}==0) /multiline ; /if (${Me.Casting.ID}) /stopcast ; /delay 10 !${Me.Casting.ID} ; /melody ${Me.Gem[War March of Jocelyn]} ${Me.Gem[Aria of Maetanrus]} ${Me.Gem[Arcane Melody]} ${Me.Gem[Chorus of Sionachie]}
holyshit10=/if (${Me.AltAbilityReady[8204]} && ${Target.Type.Equal[NPC]} && ${Me.CombatState.Equal[COMBAT]} && ${Me.State.NotEqual[FEIGN]}) /docommand /alt act 8204
holyshit11=/if (${Me.Combat} && ${Mercenary.Stance.Equal[Balanced]} && ${Mercenary.State.Equal[ACTIVE]} && ${Group.Member[1].PctAggro}<70 && (${Spawn[NPC ${Me.XTarget[1].ID}].PctHPs}<95)) /stance Burn
holyshit12=/if (${Me.Combat} && ${Mercenary.Stance.Equal[Burn]} && ${Mercenary.State.Equal[ACTIVE]} && ${Group.Member[1].PctAggro}>=70) /stance Balanced

- - - Updated - - -

You may want to post that into a Notepad++ because it looks like a wall of crap, but it works good for a 105 bard with no Rk 2 spells and the new Bard Song loaded.
You need the following spells loaded for it to work:
War March of Jocelyn
Aria of Maetanrus
Arcane Melody
Silisia's Lively Crescendo
Aura of Maetanrus
Wave of Torpor
Requiem of Time
Dichotomic Psalm
Chorus of Sionachie

If you are really interested and have some of these as RK2 spells and I'll modify it a bit for you, but overall it works pretty damn well.

- - - Updated - - -

The end game of course is to modify it for everyone and use a macro to populate all the MQ2Melee settings for that bard. Adding ${Spell[SongHere].RankName} will take care of the issues with Ranks and then its just a matter of populating the songs for each bard at different levels.
 
Making Auto-Bard.inc

Users who are viewing this thread

Back
Top