sub INIT
  initEvents
  ignoreItem reset
  set %__EMPTY__
return

sub WAIT_TARGET
  set #targcurs 1
  targetloop:
  If #targcurs = 1
  goto targetloop
return

sub CONFIGURE
  event SysMessage Please move your character to the desired home location and target an animal for taming.
  gosub WAIT_TARGET
  findItem #LTARGETID
  set %TAME_TYPE #FINDTYPE
  set %TAME_ID
  set %HOME_X #CHARPOSX
  set %HOME_Y #CHARPOSY
  set %DEFAULT_FOLLOWERS #FOLLOWERS
  set %LAST_ATTEMPT 0
return

sub MOVE_CHAR
  move %1 %2 0 2s
  if  #CHARPOSX <> %1 || #CHARPOSY <> %2
  {
    event PathFind %1 %2
    sleep 2s
  }
return

sub SEARCH_TAME
  findItem %TAME_TYPE
  if #FINDKIND = -1
  {
    set %TAME_ID
    return
  }
  event Property #FINDID
  if Paragon in #PROPERTY
  {
    ignoreItem #FINDID
    set %TAME_ID
    return
  }
  set %TAME_ID #FINDID
return

sub ATTEMPT_TAME
  if %LAST_ATTEMPT + 3500 < #SYSTIME
  {
    event Macro 13 35
    target 2s
    set #LTARGETID %TAME_ID
    event Macro 22 0
    set %LAST_ATTEMPT #SYSTIME
  }
return

sub AUTOMATE
  gosub SEARCH_TAME
  while %TAME_ID = %__EMPTY__
  {
    gosub MOVE_CHAR %HOME_X %HOME_Y
    gosub SEARCH_TAME
  }
  while #FINDKIND <> -1
  {
    gosub MOVE_CHAR #FINDX #FINDY
    gosub ATTEMPT_TAME
    if #FOLLOWERS > %DEFAULT_FOLLOWERS
    {
      ignoreItem %TAME_ID
      gosub SEARCH_TAME
    }
    findItem %TAME_ID
  }
return

gosub INIT
gosub CONFIGURE
while #true
{
  gosub AUTOMATE
}

halt
