echo *** split.irc loaded.
echo *** Type /shelp for help.

^assign -serverlist1
^assign -serverlist2
^assign -serverlist3
^assign -servers
@ servercount = 0

^alias getservers {
echo *** Generating server list.
^exec rm server.list
^assign serverlist1 N
^assign serverlist2 N
@ servercount = 0
^assign -servers
^on ^raw_irc "% 364 *" {
  ^eval ^exec echo "loadserversub $3" >> server.list
  @ servercount = servercount + 1
  ^assign servers[${servercount-1}] $3 No
  if ([$servercount] < [100]) {
    ^assign serverlist1 $serverlist1 $3
    }
    {
    ^assign serverlist2 $serverlist2 $3
    }
  }
^on ^raw_irc "% 365 *" {
  echo *** Server list generated.  $servercount servers found.
  }
links
wait
^on raw_irc -"% 364 *"
^on raw_irc -"% 365 *"
}

^alias loadserversub {
@ servercount = servercount + 1
if ([$servercount] < [100]) {
  ^assign serverlist1 $serverlist1 $0
  }
  {
  ^assign serverlist2 $serverlist2 $0
  }
^assign servers[${servercount-1}] $0 No
}

^alias loadservers {
echo *** Loading server list.
@ servercount = 0
^assign serverlist1 N
^assign serverlist2 N
^assign -servers
load server.list
wait -cmd echo *** $servercount servers loaded.
}

^alias servers {
echo *** There are $servercount servers in memory.
}


^alias setserver {
if ([$match($0 $serverlist1)] != [0]) {
  ^assign servers[${match($0 $serverlist1) -2}] $0 $1
  }
  {
  if ([$match($0 $serverlist2)] != [0]) {
  ^assign servers[${match($0 $serverlist2) +97}] $0 $1
  }
  {
  @ servercount = servercount + 1
  ^assign servers[${servercount-1}] $0 New
  if ([$servercount] < [100]) {
    ^assign serverlist1 $serverlist1 $0
    }
    {
    ^assign serverlist2 $serverlist2 $0
    }
  ^eval ^exec echo "loadserversub $0" >> server.list
  }
}
^assign -ssx
}


^alias findsplit {
if ([$servercount] < [1]) {
echo *** You need to either create a new server list, or load an old one.
}
{

echo *** Generating list of splits...
@ splitsfound = 0
^on ^raw_irc "% 364 *" {
  setserver $3 Yes
  }
^on ^raw_irc "% 365 *" {
  ^on raw_irc -"% 364 *"
  ^on raw_irc -"% 365 *"
  }
@ sx = 0
while ([$sx] < [$servercount]) {
  @ sx = sx + 1
  setserver $word(0 $servers[${sx -1}]) No
  }
wait 
links
wait
  @ sx = 0
  @ splitcount = 0
  while ([$sx] < [$servercount]) {
    @ sx = sx + 1
    ^assign workwith $word(1 $servers[${sx-1}])
    if ([$workwith]==[NO]) {
      echo *** Split: $word(0 $servers[${sx-1}])
      @ splitcount = splitcount + 1 
      }
      {
    if ([$workwith]==[NEW]) {
      echo ***   New: $word(0 $servers[${sx-1}])
      }
    }
  }
wait
if ([$splitcount] > 0) {
  echo *** $splitcount split servers found.
  }
  { 
  echo *** No split servers found.
  }
^assign -sx
}
}

^alias shelp {
echo *** -----------------------------------------------------
echo *** /loadservers     Load serverlist into memory
echo *** /getservers      Generate serverlist
echo *** /findsplit       Generate a list of split servers
echo *** /servers         Show how many servers are in memory
echo *** /splitunload     Unload script
echo *** /aboutsplit      About information for this script
echo *** /instructions    Basic instructions on use.
echo *** ------------------------------------------------------
}

^alias aboutsplit {
echo *** ----------------------------
echo *** split.irc v0.2
echo *** by maitai@eskimo.com
echo *** ----------------------------
}

^alias instructions {
echo *** ---------------------------------------------------------
echo ***  Use /getservers to get a list of currently connected
echo ***  servers, this will create a file called server.list
echo ***  in your present working directory.  I recommend you
echo ***  do this at a time when you know that the network is
echo ***  fairly stable otherwise, the script miss splits that
echo ***  are around, because it doesn't know the server exists.
echo ***
echo ***  To avoid spending time generating new server lists,
echo ***  user /loadservers to load your previously made server
echo ***  list file.  The script will automatically add new
echo ***  servers it finds that are not in its list whenever you
echo ***  user /findsplit.
echo ***
echo ***  Use /findsplit to list all splits (based on your
echo ***  server list), add new servers to your list, etc.
echo *** ---------------------------------------------------------
}



^alias splitunload {
echo *** Unloading split.irc
^alias -shelp
^assign -servers
^alias -loadserversub
^alias -loadservers
^alias -findsplit
^alias -splitunload
^alias -setserver
^alias -getservers
^alias -instructions
^alias -aboutsplit
^assign -serverlist
^assign -servers
^assign -servercount
}
