|follow start
Sub FollowLoad
/if (${FollowLoaded}) /return
/if (!${Defined[FollowLoaded]}) /declare FollowLoaded int outer 1
/declare FollowMethod string outer ${Ini[MyIni,Follow,FollowMethod]}
/if (!${FollowMethod.Length}||${FollowMethod.Equal[NULL]}) /ini "MyIni" "Follow" "FollowMethod" "stick|30 healer"
/declare DistanceToFollow int outer ${Ini[MyIni,Follow,DistanceToFollow,30]}
/if (!${DistanceToFollow}) /ini "MyIni" "Follow" "DistanceToFollow"
/declare FollowCommand string outer ${Ini[MyIni,Follow,FollowCommand]}
/if (!${FollowCommand.Length}||${FollowCommand.Equal[NULL]}) /ini "MyIni" "Follow" "FollowCommand" "FollowCommand"
/declare StopFollowCommand string outer ${Ini[MyIni,Follow,StopFollowCommand]}
/if (!${StopFollowCommand.Length}||${StopFollowCommand.Equal[NULL]}) /ini "MyIni" "Follow" "StopFollowCommand" "StopFollowCommand"
/declare MoveUpCommand string outer ${Ini[MyIni,Follow,MoveUpCommand]}
/if (!${MoveUpCommand.Length}||${MoveUpCommand.Equal[NULL]}) /ini "MyIni" "Follow" "MoveUpCommand" "MoveUpCommand"
/if (!${Defined[Following]}) /declare Following int outer
/if (!${Defined[MoveID]}) /declare MoveID int outer
/if (!${Defined[NameToFollow]}) /declare NameToFollow string outer
/squelch /moveto set trytojump on
/squelch /moveto set stucklogic on
/return
Sub Follow
/if (!${Defined[FollowLoaded]}) /call FollowLoad
/if (!${Spawn[id ${MoveID}].ID}||!${Following}) /return
/if (${Spawn[id ${MoveID}].Distance}>${DistanceToFollow}) {
/if (${Me.Casting.ID} && !${Me.Class.ShortName.Equal[BRD]}) /delay 5s !${Me.Casting.ID}
/if (${FollowMethod.Find[nav]} && !${Navigation.Active}) /navi name "${NameToFollow}"
/if (${FollowMethod.Find[stick]} && !${Stick.Distance}) /stick id ${MoveID} ${FollowMethod.Arg[2,|]}
/if (${FollowMethod.Find[adv]} && ${AdvPath.State}!=1) /afollow spawn ${MoveID}
/if (${FollowMethod.Find[keypress]} && !${Me.Moving}) /call MoveToLoc ${Spawn[id ${MoveID}].Y} ${Spawn[id ${MoveID}].X}
}
/return
Sub Event_Follow(followname,int moveup)
/if (!${Defined[FollowLoaded]}) /call FollowLoad
/if (!${Spawn[pc ${followname}].ID}) /return
/varset NameToFollow ${followname}
/varset MoveID ${Spawn[pc ${followname}].ID}
/echo Following ${NameToFollow} - ID: ${MoveID}
/if (!${moveup}) /varset Following 1
/varset UseCamp FALSE
/if (${FollowMethod.Find[nav]} && !${Navigation.Active}) /navi name "${NameToFollow}"
/if (${moveup}) {
/moveto loc ${Spawn[id ${MoveID}].Y} ${Spawn[id ${MoveID}].X} ${Spawn[id ${MoveID}].Z} loose
/return
}
/if (${FollowMethod.Find[stick]}) /stick id ${Spawn[pc ${followname}].ID} ${FollowMethod.Arg[2,|]}
/if (${FollowMethod.Find[adv]}) /afollow spawn ${Spawn[pc ${followname}].ID}
/call Follow
/return
Sub Event_StopFollow
/varset Following 0
/varset MoveID 0
/varset NameToFollow
/keypress back
/if (${Stick.Distance}) /stick off
/if (${FollowMethod.Find[adv]}) /afollow off
/return
|stop follow