| Standard Melee assist Macro. Scrapped together by Villageidiot
|
|
| This macro will assist whoever is designated
| and will return to starting point after mob
| dies.
|
| Usage: /mac assist (char's name your assisting)
|
|
| This has been mainly scrapped together from a few
| different macro's. I do not take full credit for
| this macro but through it together and decided to
| share this with everyone.
Sub Main
/if (!${Defined[Param0]}) {
/echo Proper usage: /macro assist TankName
/end
}
/declare RT_MyXLOC int outer ${Me.X}
/declare RT_MyyLOC int outer ${Me.Y}
/declare AssistGuy string outer ${Param0}
:Loop
/if (${Zone.ShortName.Equal[GuildLobby]}) {
/sit
/endmac
}
/if (${Spawn[${AssistGuy}].Type.Equal[PC]} && ${Spawn[${AssistGuy} radius 100].ID}) {
/delay 1s
/assist ${AssistGuy}
}
/if (!${Target.ID}) /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC}
/delay 3s
/goto :Loop
/return
Sub MoveToLoc(MoveToY, MoveToX)
/declare running int local
/declare distanceNow float local
/declare distanceBefore float local
/declare distanceModifier int local
/declare distanceTimer timer 15
/varset running 0
/varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}
/varset distanceModifier 1
/echo Moving to Location: ${MoveToY}, ${MoveToX}.
/echo Distance: ${distanceBefore}
:moveToLocation
/face fast nolook loc ${MoveToY},${MoveToX}
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<10) {
/keypress forward
/return
}
/if (${distanceTimer}==0) {
/if (${Me.Sneaking}) {
/varset distanceModifier 2
} else {
/varset distanceModifier 1
}
/varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}
/if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) {
/call HitObstacle
}
/varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}
/varset distanceTimer 15
}
/if (${running}==0) {
/keypress forward
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>10) {
/varset running 1
/keypress forward hold
}
} else {
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<11) {
/varset running 0
/keypress forward
}
}
/goto :moveToLocation
/return
Sub HitObstacle
/echo Obstacle hit, moving around it...
/keypress forward
/keypress back hold
/delay 3
/keypress back
/if (${Math.Rand[2]}) {
/keypress strafe_right hold
} else {
/keypress strafe_left hold
}
/delay 5
/keypress strafe_right
/keypress strafe_left
/keypress forward hold
/return