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

Bard Assist Macro Request (1 Viewer)

eyeknowy

New member
Joined
Jan 31, 2006
RedCents
I have a boxing group that consists of a WAR/CLR/NEC. I am in need of a Slower for my little group. I know that SHM/ENC would be best choice, but unfortunately I dont have access to either. I do have a 70 bard that I was hoping to use as the slower for the group. I have attempted to adjust RNG and Necro assist macros to use for this but am not having much luck do to how bard songs seem to work vs. normal caster spells. I see there are a lot of great Bard macros out there for kiting, but have not had much luck finding a good Assist/Slow macro for a bard. If anyone could point me in the right direction or had a simple mac I could modify it would be much appreciated. I am looking for something that assist the MT, slows the target, reslows if failed, then twist a set of combat songs. If the slow wears off before fight is over, reslow the target.

Thanks in advance for any help.
 
I would suggest Autobot in the MQ2 VIP section. It's what I use for my bard and he twists 4 combat songs, plays marr at rest, pops all his offense AA's when a named fight occurs and mezzes adds.
 
Target your tank and then start the macro!
Rich (BB code):
|Tone's Bardbot.mac
#Event EXP                      "You gain#*#"
#Event Slain                    "You have been slain by#*#"
#Event DPS			"<#*#> DPS"
#Event Pull                     "<#*#> Tag#*#"
#Event Attack                   "<#*#> Attack"
#Include Wait4rez.inc
#Include Spell_Routines.inc
#Include botevents.inc
#Chat tell
#Chat group
#Chat channel
Sub Main
    /call BotDeclares
   
|===========================================================
|Songs~n~Stuff Edit this stuff
|===========================================================
   /declare Master               string outer ${Target.CleanName}
   /declare MA                   string outer ${Target.CleanName}
 
   /declare MAID                 int outer ${Target.ID}
   /declare MyChannel            string outer somechannel
   /declare MyChannelPass        string outer somepassword
   /declare Tells                int outer 1
   |                             1 echos tells to channel; 0 is no echoing
   /declare Spam                 int outer 1
   |                             1 echos events to private channel; 0 no echoing
   /declare Bellow               string outer Fortified Bellowing
   /declare HealSong             string outer Chorus of Life
   /declare HealSongGem          int outer 6
   /declare HasteSong            string outer Warsong of Zek
   /declare HasteSongGem         int outer 4
   /declare NukeSong             string outer Eriki's Psalm of Power
   /declare NukeSongGem          int outer 3
   /declare ResistSong           string outer Psalm of Veeshan
   /declare ResistSongGem        int outer 5
   /declare SnareSong            string outer Largo`s Absonant Binding
   /declare SnareSongGem         int outer 9
   /declare SnarePct             int outer 39
   /declare Anchor		 int outer 0
|===========================================================
| Assist %
|===========================================================
 /declare RV_Assistat          int outer 96


|===========================================================
| End of Editing
|===========================================================
   /declare RV_Looper            int outer  0
   /declare RV_MyTargetID        int outer  0
   /declare RV_MyTargetName      string outer
   /declare RV_MyTargetDead      int outer  0
   /declare RV_RandomWait        int outer  0
   /declare RV_CheckLook         int outer  0
   /declare RV_Fighting          int outer  0
   /declare RV_TargetDead        int outer  0
   /declare RV_MyXLOC            int outer  0
   /declare RV_MyYLOC            int outer  0
   /declare AnchorX              int outer ${Me.X}
   /declare AnchorY              int outer ${Me.Y}
   /declare RV_resetheading      int outer ${Me.Heading.DegreesCCW.Int}
   /declare SitBooBooID          int outer
   /declare RV_FastRange         int outer
   /declare RV_RangeMax          int outer
   /declare RV_RangeMin          int outer
   /declare RV_Subreset          int outer 0
   /declare RV_Rangedw           int outer
   /declare Exper                float outer
   /declare AAExp                float outer
   /declare Mobs_Killed          int outer 0
   /varset  Exper                ${Me.PctExp}
   /varset  AAExp                ${Me.PctAAExp}
   /varcalc RV_FastRange         ${RV_Range}+3
   /varcalc RV_RangeMax          ${RV_Range}+1
   /varcalc RV_RangeMin          ${RV_Range}-1
   /varcalc RV_Rangedw           ${RV_Rangedw} - 10
  
|========================================================






/join ${MyChannel}:${MyChannelPass}
:Start
/call GetTarget
/call CheckBuffs
|/call MemSpells    I took this out because I just have the set saved.
/doevents
/goto :Start   

/return

Sub MemSpells
/echo Meming Spells...
/memspell ${HealSongGem} "${HealSong}
/delay 5s
/memspell ${HasteSongGem} "${HasteSong}"
/delay 5s
/memspell ${NukeSongGem} "${NukeSong}"
/delay 5s
/memspell ${ResistSongGem} "${ResistSong}"
/delay 5s
/memspell ${SnareSongGem} "${SnareSong}"
/echo ~~Done Meming Spells~~
/return  


Sub GetTarget
:NotYet
/doevents
/assist ${MA}
/delay 4
/if (!${Target.ID}) /goto :NotYet
/if ((${Target.ID}!=${MAID}) && (${Target.PctHPs}<${RV_Assistat}) && (${Target.Distance}<100) && ${Target.Type.Equal[NPC]}) /call Combat
/goto :NotYet
/delay 3s
/return

Sub Combat

   /varset RV_Fighting 1
   /varset RV_TargetDead 0
   /if ((${Target.ID}) && (${Target.Type.Equal["NPC"]})) /attack on
   /twist ${HasteSongGem} ${HealSongGem} ${NukeSongGem} ${ResistSongGem}
   :CombatLoop
   /doevents
   /attack on
   /stick behind 50%
   /call SpecialIT

   }
   :nocombat
   /if ((!${Target.ID}) || (${Target.Type.Equal["Corpse"]})) {
      /varcalc Mobs_Killed (${Mobs_Killed}+1) 
      /attack off
      /keypress forward
      /keypress back
      /keypress esc
      /varset AAExp ${Math.Calc[${Me.PctAAExp}-${AAExp}]}
      /varset Exper ${Math.Calc[${Me.PctExp}-${Exper}]}
      /echo EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes
      /popup EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes
      /echo Total Mobs killed so far:  ${Mobs_Killed}
      /varset Exper ${Me.PctExp}
      /varset AAExp ${Me.PctAAExp}
      /varset RV_TargetDead 1
      /varset RV_Fighting 0
   }
   /if (!${RV_TargetDead}) {
        /goto :CombatLoop
   }
/return

Sub SpecialIT
     /doevents
     /if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<=${SnarePct}) /call Snare

     /if (${Me.PctHPs} < 10) {
          /attack off
          /disc Deftdance
          /alt act 212
          /delay 30s
          /Echo ${Target} Beat me to within moments of my life!
    }
/return

Sub Snare
/twist ${SnareSongGem} ${HealSongGem} ${NukeSongGem} ${HasteSongGem}
:Snare
/doevents
/if (!${Target.ID}) {
/return
} Else {
/goto :Snare
}
/return

Sub ResetSub
   /varset RV_TargetDead 0
   /varset RV_Fighting 0
   /doevents
   /attack off
   /keypress ESC
   /call CheckAnchor
   
   /return


Sub Event_EXP
/doevents
/call CheckBuffs
/twist ${HealSongGem}
/call ResetSub
/return

Sub CheckAnchor   
   /if (${Math.Distance[${AnchorY},${AnchorX}]}>10 && ${Anchor}==1) /call MoveToAnchor   
/return


Sub MoveToAnchor
    /declare iCount int local
    /varset iCount 0

|    /echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}.
    /varset RV_MyXLOC ${Int[${Me.X}]}
    /varset RV_MyYLOC ${Int[${Me.Y}]}
    /declare RV_DistanceTimer timer 15
:AnchorMoveLoop
    /delay 1
    /doevents
    /face fast nolook loc ${AnchorY},${AnchorX}
   
    /if (${Math.Distance[${AnchorY},${AnchorX}]}>12) {
       /keypress forward hold
    } else {
       /keypress forward
       /face fast away nolook loc ${AnchorY},${AnchorX}
       /return
    }

    /if (${iCount}>2) {
        /face fast nolook loc ${AnchorY},${AnchorX}
        /varset iCount 0
    }
    /if (!${RV_DistanceTimer}) {
      /if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
      /varset RV_MyXLOC ${Int[${Me.X}]}
      /varset RV_MyYLOC ${Int[${Me.Y}]}
      /varset RV_DistanceTimer 15
      } 
     }   
   
    /varcalc iCount ${iCount}+1
    /goto :AnchorMoveLoop

/return

sub HitObstacle 
   /keypress forward 
   /keypress back hold 
   /delay 5 
   /keypress back 
   /if (${Math.Rand[2]}) { 
      /keypress strafe_right hold 
      /delay 3 
      /keypress strafe_right 
   } else { 
      /keypress strafe_left hold 
      /delay 3 
      /keypress strafe_left 
   } 
   /keypress forward hold 
/return

Sub Event_Slain
/call Wait4Rez 
/return

Sub Event_Gate(string Line,string Gater)
/bc << ${Gater} Trying to Gate >>
/sqluech /twist ${MezSongGem} ${SnareSongGem} ${HasteSongGem} ${NukeSongGem}
/alt act ${Bellow}
/return

Sub Event_DPS
/call cast "Prismatic Dragon Blade" item
/bc Nuke away clicking 1.5
/return

Sub Event_Chat(string ChatType,string Sender,string ChatText)

/if (!${ChatType.Equal[GROUP]} && !${ChatType.Equal[${MyChannel}]}&& !${ChatType.Equal[TELL]}) {
/return
} 
   /mqlog ${ChatType}: ${Sender} tells you: ${ChatText}
   
/if (${ChatType.Equal[TELL]} && ${Tells}==1) {
/bc ${Sender} told me: ${ChatText}
}
/return 


Sub Event_Pull
/twist off
/return


Sub Event_Attack
/attack off
/keypress esc
/stand
/attack off
/call CheckAnchor
/return

Sub CheckBuffs
|Here are the clickies !

/if (${Me.Buff[Vengeful Guard].Duration}<=3) /call cast "Cloak of Retribution" item 1s
/if (${Me.Buff[Symphony of Battle].Duration}<=3) /call cast "Songblade of the Eternal" item 3s

/return

You're going to need to get the botevents include that I made. You can get it from this post:
http://www.redguides.com/community/showthread.php?t=9593&page=1
 
It basically twist 3 4 5 6 then 9 (snare) at 20% to avoid runners.... If you are using your bard to slow use requiem of time and harmony of sound in gems 3 and 4, then gems 5 and 6 use haste + healing.
 
Tone said:
You're going to need to get the botevents include that I made. You can get it from this post:
http://www.redguides.com/community/showthread.php?t=9593&page=1
Is this botevents inc different from the others (i.e the one with pallytank.mac? If so it may explains some of the troubles i am having getting stuff to work right? I have been under the assumption that botincludes.inc was a standard file used by lots of these macros. If peeps are changing botincludes.inc for their own macros, shouldent they have a different name to avoid breaking another macro?

Gonna try this one later on, looks real good,
 
Bard Assist Macro Request

Users who are viewing this thread

Back
Top