on $*:TEXT:/^[!@]m(ove)?(dex)? /Si:#:{
if ((Chesticles ison $chan) && ($me != Chesticles)) { halt }
if (!$2) { .notice $nick You must specify something to search for. }
else {
var %x = 1 | while ($sock($+(Move.,%x))) { inc %x }
set $+(%,move.search.,%x) $2-
set $+(%,move.msg.,%x) $iif(@* iswm $1,msg $chan,.notice $nick)
sockopen $+(Move.,%x) veekun.com 80
}
}
on *:SOCKOPEN:Move.*:{
sockwrite -nt $sockname GET /dex/moves/ $+ $replace(%move.search. [ $+ [ $gettok($sockname,2,46) ] ] ,$chr(32),$+(%,20)) HTTP/1.1
sockwrite -nt $sockname Host: veekun.com $+ $crlf $+ $crlf
}
off *:SOCKREAD:Move.*:{
var %read
sockread -f %read
write read.txt %read
}
on *:SOCKREAD:Move.*:{
var %x = $gettok($sockname,2,46)
var %search = $($+(%,move.search.,%x),2), %msg = $($+(%,move.msg.,%x),2)
if ($sockerr) {
write SockErr.txt $sockname : $sockerr
echo -a Socket Error - Check SockErr.txt
halt
}
elseif (%wait) {
if (%wait == text) { set $+(%,text.,%x) $notags(%read) }
elseif (%wait == power) { set $+(%,power.,%x) $notags(%read) }
elseif (%wait == accuracy) { set $+(%,accuracy.,%x) $notags(%read) }
elseif (%wait == pp) { set $+(%,pp.,%x) $notags(%read) }
unset %wait
}
else {
var %read
sockread -f %read
if (*Error - veekun.com* iswm %read) {
%msg Move $qt(%search) not found.
cleanup %x
}
elseif ($regex(%read,/<a href=".+"><img src=".+" alt="(\w+)" .+ <img src=".+" alt="(\w+)"/)) {
set $+(%,type.,%x) $regml(1)
set $+(%,damage.,%x) $regml(2)
}
elseif (*<dt>*Flavor Text*</dt>* iswm %read) {
set %wait text
}
elseif (>Power< isin %read) { set %wait power }
elseif (>Accuracy< isin %read) { set %wait accuracy }
elseif (>PP< isin %read) { set %wait pp }
elseif (<h2>flags</h2> isin %read) {
var %type = $($+(%,type.,%x),2), %damage = $($+(%,damage.,%x),2)
var %power = $($+(%,power.,%x),2), %accuracy = $($+(%,accuracy.,%x),2), %pp = $($+(%,PP.,%x),2)
var %text = $($+(%,text.,%x),2)
%msg $+(,$capitalize(%search),:) %type $+ -type ¦ $capitalize(%damage) attack
.timer 1 1 %msg Power: %power ¦ Accuracy: %accuracy ¦ PP: %pp
.timer 1 1 %msg $iif(%text,$v1,Error recieving move escription)
cleanup %x
}
}
}
alias -l cleanup {
sockclose $+(Move,.,$1)
unset $+(%,*.,$1)
unset %s
}
alias -l notags {
return $remove($1-,<dd>,</dd>)
}