| 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