Sub Main
/echo You're a lazy ass.
/delay 1s
/declare What string outer npc a cave
/declare Respawn bool local TRUE
:Loop
/if (${SpawnCount[${What}]}) /squelch /target ${What}
/if (${Target.Name.Find[${What}]}) {
/call Move2Target 14
/if (${Target.Type.Equal[NPC]}) /call KillTarget
}
/if (${Respawn} || ${SpawnCount[${What}]}) /goto :Loop
/return
Sub Move2Target(float MaxDist)
/if (!${Defined[MaxDist]}) {
/declare MaxDist float local 10
}
/declare TmpY float local ${Me.Y}
/declare TmpX float local ${Me.X}
/declare Timeout timer local 2s
/declare Dist float local ${Math.Distance[${TmpY},${TmpX}]}
/if (!${Me.Standing}) /stand
/squelch /face fast nolook
/delay 1s
/if (${Target.Distance} > ${MaxDist}) /nomodkey /keypress FORWARD hold
:Loop
/varset Timeout ${StuckTimer.OriginalValue}
/varset TmpY ${Me.Y}
/varset TmpX ${Me.X}
/squelch /face fast nolook target
/varset Dist ${Math.Distance[${TmpY},${TmpX}]}
/if (${Target.Distance} > ${MaxDist}) {
/if (!${Timeout} && ${Dist} <= 5) {
/echo Seems we're stuck. Trying to correct.
/nomodkey /keypress BACK
/nomodkey /keypress BACK hold
/delay 2s
/if (${Math.Rand[2]}) {
/squelch /face fast nolook heading ${Math.Calc[${Heading[${LocY},${LocX}].DegreesCCW}+45]}
} else {
/squelch /face fast nolook heading ${Math.Calc[${Heading[${LocY},${LocX}].Degrees}+45]}
}
/nomodkey /keypress FORWARD
/nomodkey /keypress FORWARD hold
}
}
/if (${Target.Distance} > ${MaxDist}) /goto :Loop
/keypress BACK
/keypress FORWARD
/delay 1s
/return
Sub Move2Loc(float LocY, float LocX, float MaxDist)
/if (!${Defined[LocY]} || !${Defined[LocX]}) {
/echo Move2Loc error. No target coordinates defined.
/echo Syntax: /call Move2Loc (float)Y (float)X[ (float)MaxDistance]
/echo Ending macro...
/endmacro
}
/if (!${Defined[MaxDist]}) {
/declare MaxDist float local 10
}
/declare TmpY float local ${Me.Y}
/declare TmpX float local ${Me.X}
/declare Timeout timer local 2s
/declare Dist float local ${Math.Distance[${TmpY},${TmpX}]}
/if (!${Me.Standing}) /stand
/squelch /face fast nolook loc ${LocY},${LocX}
/delay 1s
/if (${Math.Distance[${LocY},${LocX}]} > ${MaxDist}) /nomodkey /keypress FORWARD hold
:Loop
/varset Timeout ${StuckTimer.OriginalValue}
/varset TmpY ${Me.Y}
/varset TmpX ${Me.X}
/squelch /face fast nolook target
/varset Dist ${Math.Distance[${TmpY},${TmpX}]}
/if (${Math.Distance[${LocY},${LocX}]} > ${MaxDist}) {
/if (!${Timeout} && ${Dist} <= 5) {
/echo Seems we're stuck. Trying to correct.
/nomodkey /keypress BACK
/nomodkey /keypress BACK hold
/delay 2s
/if (${Math.Rand[2]}) {
/squelch /face fast nolook heading ${Math.Calc[${Heading[${LocY},${LocX}].DegreesCCW}+45]}
} else {
/squelch /face fast nolook heading ${Math.Calc[${Heading[${LocY},${LocX}].Degrees}+45]}
}
/nomodkey /keypress FORWARD
/nomodkey /keypress FORWARD hold
}
}
/if (${Math.Distance[${LocY},${LocX}]} > ${MaxDist}) /goto :Loop
/nomodkey /keypress FORWARD
/nomodkey /keypress BACK
/return
Sub KillTarget
/if (!${Me.Combat}) /attack
:Kill
|Could add some doevents or other actions in here, that needs checking or doing, during combat.
/if (${Target.Type.Equal[NPC]}) /goto :Kill
/return