• 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

Monk DPS Macro request

Tiama

New member
Joined
Mar 4, 2005
RedCents
Ok all you macro gurus, this one should be easy. I would like a macro for my husband's monk that will assist his warrior, attack after a certain hp%, kick, mend if needed, FD if he gets aggro and then stand back up and fight. Oh yeah, and return to a certain point once the mob is dead. I'd prefer not to use /warp if at all possible, maybe just target cleric and use follow to go back to her?

Before anyone suggests that we use the monk to pull, he's a good bit lower than the warrior, so basically just PLing and using him for additional DPS until he grows up.

Thanks in advance
:)
 
Tested and working.

When you start macro have the person you want to assist targeted.
Be in the spot you wish to run back to after a mob dies

Once your tank gets a mob below the Assist at HP % the monk will not stop attacking that mob until that mob is dead.

/g Back off
makes the monk go back to camp and FD till that mob is dead or no longer targeted by you.

/g Switch Targets will make the monk switch his target to what your targeting if your in mid combat.


Have your tank targeted when you begin or it won't work.

He goes back to the point where you started him on the macro after each kill. If you want to change that then the Sub CheckAnchor X Y coordinates could simply be replaced with your cleric's location.

Edit: Ok figured it out, I screwed up declaring the HP to assist at (forgot to type Outer)

Code:
| Hacked Monk DPS Bitch Boy[ex-puller] By Ccomp5950 V2.5
| 4-26-05 5:57pm 
| 
| 

#Chat group

#event Zoned          		"#*#LOADING, PLEASE WAIT...#*#"
#Event Unduck          		"#*#You must be standing to attack!#*#"
#Event BitchBoyHit     		"#*#YOU for#*#points of damage.#*#
#Event SwitchTargets  		"#*#tells the group, 'Switch Targets#*#"
#Event SitBooBoo       		"#*#tells the group, 'Back off'"
#Event YourFDSkillSucks         "#*#has fallen to the ground#*#"
Sub Main 

   |------------------------------------------------------------ 
   | Mend at in %.  IE if you want to mend when your down to 50% you would set this to 50. 
   |------------------------------------------------------------ 
   /declare RV_MendPct      int outer 75
   |------------------------------------------------------------ 
   | How far is the combat range? 
   |------------------------------------------------------------ 
   /declare RV_Range        int outer 10 
   |------------------------------------------------------------
   | What % HP do you wish to assist at?
   |------------------------------------------------------------
   /declare RV_Assistat     int outer 96
   |------------------------------------------------------------ 
   | Don't worry about the rest.
   |------------------------------------------------------------
 

    /echo -------------------------------------- 
    /echo Monk Bitch Boy 2.5 Initializing 
    /echo -----{Real Monks Pull!~}-----
    /echo --------------------------------------
    /echo  
   /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 NotBitchBoy		 string outer ${Target.CleanName}
   /declare NotBitchBoysID	 int outer ${Target.ID} 
   /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   


   
   /if (${Target.Type.NotEqual["PC"]}) /call WhatTheFuckBitch
   :Start 
   /doevents
   /call GMCheck 
   /doevents
   /call GetTarget 
 
   /doevents
   /call CombatSub 
   /doevents
   /call MoveToMob 
   /call ResetSub 

   /goto :Start

/return



|-------------------------------------------------------------------------------- 
|SUB: Aquire Target 
|-------------------------------------------------------------------------------- 
Sub GetTarget 
:NotYetBitchBoy
/assist ${NotBitchBoy}
/delay 4
/if (!${Target.ID}) /goto :NotYetBitchBoy
/if ((${Target.ID}!=${NotBitchBoysID}) && (${Target.PctHPs}<${RV_Assistat}) && (${Target.Distance}<150)) /return
/goto :NotYetBitchBoy
/delay 3s
/return
|-------------------------------------------------------------------------------- 
|SUB: GM Check 
|-------------------------------------------------------------------------------- 
Sub GMCheck 
/doevents 
   /if (${Spawn[gm].ID}) { 
      /beep 
      /beep 
      /beep 
      
      /echo GM has entered the zone! 
      /echo FUCK HIM but ending the macro... 

      /keypress forward 
      /keypress back 

      /quit 
      /endmacro 
   } 
    
/return 

|-------------------------------------------------------------------------------- 
|SUB: Where's the group?. 
|-------------------------------------------------------------------------------- 

Sub CheckAnchor    
	/if (${Math.Distance[${AnchorY},${AnchorX}]}>8) /call MoveToAnchor    
/return 

|-------------------------------------------------------------------------------- 
|SUB: Move back to group. 
|-------------------------------------------------------------------------------- 
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: Obstacle Avoidance 
|-------------------------------------------------------------------------------- 
Sub HitObstacle 
/gsay Uhm I'm stuck, I either can't get back to camp or I can't get to the Mob.  Damn I suck.
/gsay Feigning Death, get me set back up when you can.
/doability "Feign Death"
/endmacro
/return 
|-------------------------------------------------------------------------------- 
|SUB: Reset 
|-------------------------------------------------------------------------------- 
Sub ResetSub 
   /call CheckAnchor 
   /varset RV_TargetDead 0 
   /varset RV_Fighting 0 
   /doevents 
   /attack off
   /keypress ESC 
   /face fast heading ${RV_resetheading}
   /return


|-------------------------------------------------------------------------------- 
|SUB: Moving 
|-------------------------------------------------------------------------------- 
Sub MoveToMob 

   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /declare RV_DistanceTimer timer 15 
    
   /doevents 
    
   :MovementLoop 
   /doevents
   /if ((${Target.Type.Equal["Corpse"]})&&(${Int[${Target.Distance}]}>20)) {
        /keypress forward hold
        /delay 1
        /goto :Movementloop
   }     

   /if ((${Target.Type.Equal["Corpse"]})&&(${Int[${Target.Distance}]}<20)) /return


   /if (${Target.ID}) { 
      /face fast nolook
   } 
   /if (${Int[${Target.Distance}]}>${RV_FastRange}) { 
      /keypress forward hold 
   } 
   /if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) { 
      /keypress forward 
   } 
   /if (${Int[${Target.Distance}]}<${RV_RangeMin}) { 
      /keypress back
      /delay 3 
   } 
   /if (!${RV_DistanceTimer}) { 
      /doevents
      /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 
      /goto :Movementloop 
   } 
   /if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop 

/return 

|--------------------------------------------------------------------------
|SUB PULL: Should only be called when pulling, hopefully MovetoMob is called rest of time
|Will check Line of Sight and if needed use way points to get to mobs.  If used way points
|it will call them again in reverse order to get back to the camp after agroing the mob.
|--------------------------------------------------------------------------

|Removed since your a bitch boy, you don't do this.

|-------------------------------------------------------------------------------- 
|SUB: Combat (This is where you macro should be while beating the mob up)
|-------------------------------------------------------------------------------- 
Sub CombatSub 

   /varset RV_Fighting 1 
   /varset RV_TargetDead 0 
   /if ((${Target.ID})&&(${Target.Type.Equal["NPC"]})) /attack on
   :CombatLoop 
   /doevents 
   /attack on
   /call MoveToMob 
   /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: Special Combat 
|-------------------------------------------------------------------------------- 
Sub SpecialIT 

|--------------------------------------------------------------------------------- 
| Checks if Flying Kick is up, if it is it performs a flying kick special attack. 
|---------------------------------------------------------------------------------

     /if (${Me.AbilityReady["Flying Kick"]}) /doability "Flying Kick"

|---------------------------------------------------------------------------------
| Line belox clicks your epic.  Does not check to see if any buffs that block 
| it are there (if you wish to add this Rogue Helper has it, I duo so I don't need it) 
|---------------------------------------------------------------------------------
	
     /if (!${Me.Buff[Celestial Tranquility].ID} && ${FindItem["Celestial Fist"].InvSlot.Name.Equal["hands"]}) /cast item "Celestial Fists"

|-------------------------------------------------------------------------------- 
| Checks to see if your HP is below what you set the varidible up top to mend at and 
| if the ability is read...then Mends if both conditions are true 
|--------------------------------------------------------------------------------

     /if ((${Me.PctHPs} < ${RV_MendPct}) && (${Me.AbilityReady["Mend"]})) {
          /doability "Mend" 
     }
|--------------------------------------------------------------------------------
| Checks to see if HP is below 10...if so FD's and ends macro
|--------------------------------------------------------------------------------
     /if ((${Me.PctHPs} < 10) && (${Me.AbilityReady["Feign Death"]})) {
          /attack off
          /doability "Feign Death"
          /delay 30s
          /Echo ${Target} Beat me to within moments of my life.
	  /gsay ${Target} Beat me to within moments of my life.  God I am a Bitch
          /endmacro
    }
/return

|--------------------------------------------------------------------------------
|
|--------------------------------------------------------------------------------

Sub WhatTheFuckBitch
	/echo Uhm target the person you want to assist before starting this macro.
	/endmacro
/return

Sub Event_BitchBoyHit
	:againbitch
	/doevents flush
	/doability "Feign Death"
	/delay 2
	/sit
/return

Sub Event_SwitchTargets
/assist ${NotBitchBoy}
/gsay ${Target.CleanName} is my new target.
/return

Sub Event_SitBooBoo
/varset SitBooBooID ${Target.ID}
/gsay Ok if you say so.
/call CheckAnchor
/doability "Feign Death"
/gsay Gonna sit here FD till you target something else or what ya got targeted dies.
:SitBooBooLoop
/assist ${NotBitchBoy}
/delay 3
/if (${Target.ID}==${SitBooBooID}) /goto :SitBooBooLoop
/sit
/return

Sub Event_YourFDSkillSucks
/delay 10s
/doability "Feign Death"
/echo My FD skill Sucks!~
/gsay My FD skill Sucks!~
/return

Sub Event_Unduck
	/call CheckAnchor 
/return

Sub Event_Zoned
	/gsay I have zoned, camping in 30 seconds.  Probably because I am a Bitch Boy and Failed FD a few times and died.
	/echo Zoned, camping in 30 seconds.
	/delay 30s
	/camp desktop
	/delay 45s
/return
 
Last edited:
No problem, and good luck.

I messed up in the switch targets routine.... add a /return at the end of it or just recopy and paste.
 
Monk DPS Macro request

Users who are viewing this thread

Back
Top
Cart