• 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

Hatchet Macro

Devlin

Active member
Joined
May 22, 2006
RedCents
140¢
Here is a macro for Hatchet... It's semi-automated, I couldn't automate the running around part or the move away from hatchet part so i just added notices to let you know what to do and when..

Rich (BB code):
|Hatchet.Mac
|You need mq2moveutils for this to work

#event duck "#*#You should duck#*#"
#event move "#*#you should get as far away as possible#*#"
#event legs "#*#you should hide between his legs#*#"
#event run "#*#charge directly at you#*#"

Sub Main
:loop
/doevents
/goto :loop
/return

Sub event_duck
/popup Duck Event Triggered.. Ducking Now
/keypress d
/delay 10s
/keypress d
/return

Sub event_move
/popup Get as far away as possible NOW!
/echo Get as far away as possible NOW!
/beep
/return

Sub event_legs
/popup Getting between his legs!
/echo Prepare for AE RAMPAGE!
/target npc hatchet
/stick 2
/delay 7s
/stick off
/popup You're Safe!.. Feel free to move!
/return

Sub event_run
/popup KITE HATCHET! He's after YOU!
/beep
/delay 4s
/popup KEEP MOVING KEEP MOVING!
/return
Enjoy
 
Last edited:
Thing is, During the event hatchet moves all over; and if you are positioned near a wall... and hatchet is on a trap, or in the middle... or roaming around.. or being tanked in a different spot , you'll go to back up and end up in a wall-- and eating the DT
 
This macro is not bad at all, ill definently use it...one question, can hatchet be kited? i was told he speeds up to a point where you cant outrun him so youd have to run into a corner where no one is and eat DT.....
_________

Also, i opened up notepad and copied and pasted your code you posted for the hatchet macro. I saved file as in my macro folder named Hatchet.mac , is that what im supposed to do? Knew to this stuff :P
 
to run it you would in-game type /mac hatchet..


Also, hatchet doesn't speed up to the point where you can't outrun him...


what happens is when he tries to chase you he starts off slow and gets faster and faster.. and you have to kite him in a circle until he stops , though he will never ever run at such a speed that you can't outrun him.


Enjoy, Redcents appreciated )
 
Hatchet lifts his axe high, preparing to bring it down upon you. You should hide between his legs.
 
Just noting that I gave Devlin the main text for this macro, he just twinked it up a bit, and by the way, you may want to change your duck time from 7s to about 10s
 
Changed!

and , sorry I couldn't figure out a way to be fully automated :-\
 
Maybe set up an array of predefined "safe" spots, then when the time comes for you to move away, figure out which of these safespots are farthest away from Hatchet (just loop through the array and do a distance calculation, at every loop store the biggest distance and the number in the array), and /moveto there.
 
Devlin said:
be my guest

This is VERY untested since I don't play EverQuest currently ;)

You'll need to assign the coordinates for safespots and kitepath on your own, also the kiting part will most likely be somewhat broken (or just lethal).

You'll need to create some event to end the kiting (otherwise it'll just continue kiting when the kite event has been triggered). It's handled by a simple BOOLEAN which, if you're kiting, will be set to TRUE and if you are not kiting (or should stop kiting) should be set to FALSE.
/varset Kiting FALSE
You can even do this with a hotkey in-game.


Enjoy ;)

Rich (BB code):
| Hatchet.Mac
#Event DUCK     "#*#You should duck#*#"
#Event MOVE     "#*#you should get as Spot away as possible#*#"
#Event LEGS     "#*#you should hide between his legs#*#"
#Event KITE     "#*#charge directly at you#*#"
#Event ENDKITE  "EDIT THIS TO HANDLE THE EVENT THAT SHOULD END KITING"

Sub Main
    /call Init
    :loop
        /doevents
    /goto :loop
/return

Sub Init
    |--------------------------------------------------------------------------|
    |-- Checking for MQ2MoveUtils                                            --|
    |--------------------------------------------------------------------------|
    /if (!${Plugin[MQ2MoveUtils].Name.Equal[MQ2MoveUtils]}) /plugin MQ2MoveUtils noauto
    /if (!${Plugin[MQ2MoveUtils].Name.Equal[MQ2MoveUtils]}) {
        /echo [${Time.Time24}] Required plugin 'MQ2MoveUtils' could not be loaded..
        /endmacro
    }

    /declare i              int     outer   0
    /declare Spot           int     outer   0
    /declare Kiting         bool    outer   FALSE

    |--------------------------------------------------------------------------|
    |-- Array with Y and X coordinates of safespots for running.             --|
    |-- Safe[#,2] -- # = Number of safespots to be defined. Second number    --|
    |--                  must always be 2 (for Y and X coordinates).         --|
    |-- The varsets syntax:                                                  --|
    |-- Safe[#,1] -- Set Y coordinate for safespot #                         --|
    |-- Safe[#,2] -- Set X coordinate for safespot #                         --|
    |--------------------------------------------------------------------------|
    /declare Safe[4,2]      float   outer
    /varset Safe[1,1] 1.0
    /varset Safe[1,2] 1.0
    /varset Safe[2,1] 2.0
    /varset Safe[2,2] 2.0
    /varset Safe[3,1] 3.0
    /varset Safe[3,2] 3.0
    /varset Safe[4,1] 4.0
    /varset Safe[4,2] 4.0

    |--------------------------------------------------------------------------|
    |-- Array with Y and X coordinates of safespots for kiting.              --|
    |-- Kite[#,2] -- # = Number of kitespots to be defined. Second number    --|
    |--                  must always be 2 (for Y and X coordinates).         --|
    |-- The varsets syntax:                                                  --|
    |-- Kite[#,1] -- Set Y coordinate for kitespot #                         --|
    |-- Kite[#,2] -- Set X coordinate for kitespot #                         --|
    |--------------------------------------------------------------------------|
    /declare Kite[4,2]      float   outer
    /varset Kite[1,1] 1.0
    /varset Kite[1,2] 1.0
    /varset Kite[2,1] 2.0
    /varset Kite[2,2] 2.0
    /varset Kite[3,1] 3.0
    /varset Kite[3,2] 3.0
    /varset Kite[4,1] 4.0
    /varset Kite[4,2] 4.0
/return

Sub MoveToLoc(float Y, float X, float MaxDist)
    /declare LastDistance   int     local   ${Target.ID}
    /varset  LastDistance ${Math.Distance[${Y}, ${X}]}
    /if (!${Me.Standing}) /stand
    /face fast nolook loc ${Y},${X}
    /delay 1s
    /keypress FORWARD
    /keypress FORWARD hold
    :loop
        /doevents
        /face nolook loc ${Y},${X}
        /if (${Math.Distance[${Y}, ${X}]} > ${LastDistance}) {
            /keypress FORWARD
            /keypress BACK
            /delay 1s
            /face fast nolook loc ${Y},${X}
            /delay 1s
            /keypress FORWARD
            /keypress FORWARD hold
        }
        /varset LastDistance ${Math.Distance[${Y}, ${X}]}
    /if (${Math.Distance[${Y}, ${X}]} > ${MaxDist}) {
        /delay 1
        /goto :loop
    }
    /keypress FORWARD
    /keypress BACK
/return

Sub KitePath(int StartSpot)
    /if (!${Spot}) /varset Spot ${StartSpot}
    /declare LastDistance   int     local   -1
    /declare Y              float   local   ${Kite[${Spot}, 1]}
    /declare X              float   local   ${Kite[${Spot}, 2]}

    :Loop
        /doevents
        /if (!${Kiting}) /goto :End
        /if (${LastDistance} == -1) /varset LastDistance ${Math.Distance[${Y},${X}]}
        /if ((${Math.Distance[${Y},${X}]} < 50) || (${Math.Distance[${Y}, ${X}]} > ${LastDistance})) {
            /varcalc CurrentSpot ${CurrentSpot}+1
            /if (${CurrentSpot} > ${Kite.Size[1]}) /varset CurrentSpot 1
            /varset Y ${Kite[${CurrentSpot}, 1]}
            /varset X ${Kite[${CurrentSpot}, 2]}
        }
        /face nolook loc ${Kite[${Spot},1]},${Kite[${Spot},2]}
        /if (!${Me.Moving}) {
            /keypress FORWARD
            /keypress FORWARD hold
        }
        /varset LastDistance ${Math.Distance[${Y}, ${X}]}
    /goto :Loop
    :End
/return

Sub Event_DUCK
    /popup Ducking now...
    /if (!${Me.Ducking}) /keypress DUCK
    /delay 10s
    /if (${Me.Ducking}) /keypress DUCK
/return

Sub Event_MOVE
    /if (!${Spot}) /varset Spot 1
    /for i 1 to ${Safe.Size[1]}
        /varset 
        /if (${Math.Distance[${Safe[${i},1]}, ${Safe[${i},1]}]} > ${Math.Distance[${Safe[${Spot},1]}, ${Safe[${Spot},1]}]}) /varset Spot ${i}
    /next i
    /popup Running as Spot away as possible. Safespot: ${Spot}; Loc (Y, X): ${Safe[${Spot},1]}, ${Safe[${Spot},1]}.
    /call MoveToLoc ${Safe[${Spot},1]} ${Safe[${Spot},1]} 10
    /varset Spot 0
/return

Sub Event_LEGS
    /popup Getting between his legs!
    /echo Prepare for AE RAMPAGE!
    /target npc hatchet
    /stick 2
    /delay 7s
    /stick off
    /popup You're Safe!.. Feel free to move!
/return

Sub Event_KITE
    /popup Hatchet charges directly at you...
    /if (!${Spot}) /varset Spot 1
    /for i 1 to ${Kite.Size[1]}
        /if (${Math.Distance[${Kite[${i},1]}, ${Kite[${i},1]}]} < ${Math.Distance[${Kite[${Spot},1]}, ${Kite[${Spot},1]}]}) /varset Spot ${i}
    /next i
    /popup Starting to kite Hatchet at Kitespot: ${Spot}; Loc (Y, X): ${Kite[${Spot},1]}, ${Kite[${Spot},1]}.
    /varset Kiting TRUE
    /call KitePath ${Spot}
    /varset Spot 0
/return

Sub Event_ENDKITE
    /varset Kiting FALSE
/return
 
Last edited:
Ok I took the orignal macro and altered it a little bit, it has end events to so you have realtime and not just estimated when it ends + it /g commands for your group you could alter to use for raid i have a 1s delay between when the emote comes up and you tell the group so it doesnt look like your using mq with instantly coming up after the emote does BUT you will start ducking or moving back what ever the second it happens.

|Hatchet.Mac
|You need mq2moveutils for this to work

#event duck "#*#You should duck#*#"
#event move "#*#you should get as far away as possible#*#"
#event legs "#*#you should hide between his legs#*#"
#event run "#*#charge directly at you#*#"
#event endlegs "#*#he has no way to strike you#*#"
#event endmove "#*#clatters to the floor harmlessly#*#"
#event endduck "#*#axe passes harmlessly overhead#*#"

Sub Main
:loop
/doevents
/goto :loop
/return

Sub event_duck
/popup Duck Event Triggered.. Ducking Now
/keypress x
/delay 1s
/g !!!*** ATTENTION DUCK NOW OR YOU WILL DIE ***!!!
/return

Sub event_endduck
/popup Your safe to stand up and attack again!
/keypress x
/g !!!*** ATTENTION PLEASE STAND UP YOUR SAFE NOW ***!!!
/return

Sub event_move
/popup Get as far away as possible NOW!
/echo Get as far away as possible NOW!
/delay 1s
/g !!!*** ATTENTION MOVE BACK AS FAR AS POSSIBLE NOW OR YOU WILL DIE ***!!!
/stick moveback 450
/beep
/return

Sub event_endmove
/popup You're safe... Feel free to approach %t again and resume melee
/delay 1s
/g You're safe... Feel free to resume melee again!
/stick off
/stick 25
/return

Sub event_legs
/popup Getting between his legs!
/echo Prepare for AE RAMPAGE!
/delay 1s
/g !!!*** ATTENTION GET BETWEEN %T's LETS NOW OR YOU WILL DIE ***!!!
/target npc hatchet
/stick 2
/return

Sub Event_endlegs
/popup You're Safe!.. Feel free to move!
/delay 1s
/g YOUR SAFE! Feel free to move again!
/stick off
/return

Sub event_run
/popup KITE HATCHET! He's after YOU!
/beep
/delay 4s
/popup KEEP MOVING KEEP MOVING!
/return
 
Hatchet Macro

Users who are viewing this thread

Back
Top
Cart