All pastes #593249 Raw Edit

Something

public text v1 · immutable
#593249 ·published 2007-06-28 07:25 UTC
rendered paste body
dialog statchecker { 
  title "stats checker, by Dani_l11"
  size -1 -1 240 100
  option dbu
  edit "RS name", 1, 70 5 85 10 
  button "Check up", 2, 70 80 85 15
  radio "combat", 3, 10 20 40 10
  radio "attack", 4, 10 30 40 10
  radio "defence", 5, 10 40 40 10
  radio "strenght", 6, 10 50 40 10
  radio "hitpoints", 7, 10 60 40 10
  radio "prayer", 8, 10 70 40 10
  radio "ranged", 9, 70 20 40 10
  radio "magic", 10, 70 30 40 10
  radio "hunter", 11, 70 40 40 10
  radio "fletching", 12, 70 50 40 10
  radio "runecrafting", 13, 70 60 40 10
  radio "thieving", 14, 70 70 40 10
  radio "mining", 15, 130 20 40 10
  radio "smithing", 16, 130 30 40 10
  radio "woodcutting", 17, 130 40 40 10
  radio "farming", 18, 130 50 40 10
  radio "slayer", 19, 130 60 40 10
  radio "agility", 20, 130 70 40 10
  radio "fishing", 21, 190 20 40 10
  radio "cooking", 22, 190 30 40 10
  radio "firemaking", 23, 190 40 40 10
  radio "construction", 24, 190 50 40 10
  radio "overall", 25, 190 60 40 10
}
on *:dialog:statchecker:sclick:2:{
  if ($did(1) == Rs name) || ($did(1) == $null) { notice $me 4Fill a Rs name in 
  halt }
  if ($did(25).state) set $+(%,rs.style.,%ID) stats
  elseif ($did(3).state) set $+(%,rs.style.,%ID) combat
  elseif ($did(4).state) set $+(%,rs.style.,%ID) single
  elseif ($did(5).state) set $+(%,rs.style.,%ID) single
  elseif ($did(6).state) set $+(%,rs.style.,%ID) single
  elseif ($did(7).state) set $+(%,rs.style.,%ID) single
  elseif ($did(8).state) set $+(%,rs.style.,%ID) single
  elseif ($did(9).state) set $+(%,rs.style.,%ID) single
  elseif ($did(10).state) set $+(%,rs.style.,%ID) single
  elseif ($did(11).state) set $+(%,rs.style.,%ID) single
  elseif ($did(12).state) set $+(%,rs.style.,%ID) single
  elseif ($did(13).state) set $+(%,rs.style.,%ID) single
  elseif ($did(14).state) set $+(%,rs.style.,%ID) single
  elseif ($did(15).state) set $+(%,rs.style.,%ID) single
  elseif ($did(16).state) set $+(%,rs.style.,%ID) single
  elseif ($did(17).state) set $+(%,rs.style.,%ID) single
  elseif ($did(18).state) set $+(%,rs.style.,%ID) single
  elseif ($did(19).state) set $+(%,rs.style.,%ID) single
  elseif ($did(20).state) set $+(%,rs.style.,%ID) single
  elseif ($did(21).state) set $+(%,rs.style.,%ID) single
  elseif ($did(22).state) set $+(%,rs.style.,%ID) single
  elseif ($did(23).state) set $+(%,rs.style.,%ID) single
  elseif ($did(24).state) set $+(%,rs.style.,%ID) single
  else { notice $me 4Click on some button }
  if ($len(did(1)) > 12) { notice $me 4The nickname $2-is too long | halt }  
  set $+(%,rs.rsn.,%ID) $did(1)
  if ($did(25).state) set $+(%,rs.skill.,%ID) $setskill(overall)
  if ($did(3).state) set $+(%,rs.skill.,%ID) $setskill(combat)
  if ($did(4).state) set $+(%,rs.skill.,%ID) $setskill(attack)
  if ($did(5).state) set $+(%,rs.skill.,%ID) $setskill(defence)
  if ($did(6).state) set $+(%,rs.skill.,%ID) $setskill(strenght)
  if ($did(7).state) set $+(%,rs.skill.,%ID) $setskill(hitpoints)
  if ($did(8).state) sset $+(%,rs.skill.,%ID) $setskill(prayer)
  if ($did(9).state) set $+(%,rs.skill.,%ID) $setskill(ranged)
  if ($did(10).state) set $+(%,rs.skill.,%ID) $setskill(magic)
  if ($did(11).state) set $+(%,rs.skill.,%ID) $setskill(hunter)
  if ($did(12).state) set $+(%,rs.skill.,%ID) $setskill(fletching)
  if ($did(13).state) set $+(%,rs.skill.,%ID) $setskill(runecrafting)
  if ($did(14).state) set $+(%,rs.skill.,%ID) $setskill(thieving)
  if ($did(15).state) set $+(%,rs.skill.,%ID) $setskill(mining)
  if ($did(16).state) set $+(%,rs.skill.,%ID) $setskill(smithing)
  if ($did(17).state) set $+(%,rs.skill.,%ID) $setskill(woodcutting)
  if ($did(18).state) set $+(%,rs.skill.,%ID) $setskill(farming)
  if ($did(19).state) set $+(%,rs.skill.,%ID) $setskill(slayer)
  if ($did(20).state) set $+(%,rs.skill.,%ID) $setskill(agility)
  if ($did(21).state) set $+(%,rs.skill.,%ID) $setskill(fishing)
  if ($did(22).state) set $+(%,rs.skill.,%ID) $setskill(cooking)
  if ($did(23).state) set $+(%,rs.skill.,%ID) $setskill(firemaking)
  if ($did(24).state) set $+(%,rs.skill.,%ID) $setskill(construction)
  sockclose $+(rsh.,%ID) hiscore.runescape.com 80
  sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
on *:SOCKOPEN:rsh.*:{
  var %ID = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,rs.rsn.,%ID),2) HTTP/1.0
  sockwrite -nt $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}
on *:SOCKREAD:rsh.*:{
  if ($sockerr) { echo -a Error. | halt }
  var %ID = $gettok($sockname,2,46), $&
    %style = $($+(%,rs.style.,%ID),2), $&
    %target = $($+(%,rs.rsn.,%ID),2), $&
    %display = $($+(%,rs.return.,%ID),2), $&
    %skill = $($+(%,rs.skill.,%ID),2)
  sockread &source
  bwrite $sockname -1 -1 &source
  if ($bfind(&source,1,does not feature in the hiscores).text)  { notice $me 4The nickname: %target did not feature in runescape highscores for any skill! | remove $sockname | sockclose $sockname | halt }
  bread $sockname 1 $file($sockname).size $+(&,$sockname)
  var %stat, %x = 1
  while (%x) {
    var %x = $bfind($+(&,$sockname),$calc(%x + 1),<a href="overall.ws?table=).text, %stat = $htmlfree($bvar($+(&,$sockname),%x,200).text)
    tokenize 10 %stat
    hadd -m $sockname $1 $2 $3 $4 $xp2next($3,$4)
  }
  if ($bfind($+(&,$sockname),1,<div id="footerHiscores"></div>).text) {
    if (%style == stats) {
      var %y = 0
      while (%y <= 23) {
        tokenize 32 $hget($sockname,(%y))
        var %file = $setskill(%y) $2
        inc %y
      }
      notice $me 4Stats for %target $+ :
      notice $Me 4 $+ %file  
      unset $+(%,rs.,%ID)
    }
    if (%style == single) {
      if (!$hget($sockname,%skill)) { notice $me 4 $+ %target did not feature in higscores for %skill | remove $sockname | sockclose $sockname | halt }
      tokenize 32 $hget($sockname,%skill)
      notice $me 4 $+ %skill Stats for %target
      notice $me 4Level: $2 Rank: $1 Exp: $3 Exp for $calc($2 + 1)
      unset $+(%,rs.,%ID)  
    }
    if (%style == combat) {
      var %att = $gettok($hget($sockname,attack),2,32), %def = $gettok($hget($sockname,defence),2,32), $&
        %str = $gettok($hget($sockname,strength),2,32), %hp = $gettok($hget($sockname,hitpoints),2,32), $&
        %rng = $gettok($hget($sockname,ranged),2,32), %pray = $gettok($hget($sockname,prayer),2,32), $&
        %magic = $gettok($hget($sockname,magic),2,32)
      var %combat = $cmb(%att,%def,%str,%hp,%rng,%pray,%magic)
      var %temp = $abs($calc($int($calc($gettok(%combat,1,32) +1)) - $gettok(%combat,1,32))), $& 
        %a.lvl = $ceil($calc(%temp / .32707)), %s.lvl = $ceil($calc(%temp / .324)), $& 
        %d.lvl = $ceil($calc(%temp / .25)), $&
        %m.lvl = $ceil($calc(%temp / .487)), $& 
        %r.lvl = $ceil($calc(%temp / .487)), $&
        %p.lvl = $ceil($calc(%temp / .124))
      if ($gettok(%combat,2,32) == Magic Based) var %lvl.base = Magic: %m.lvl
      elseif ($gettok(%combat,2,32) == Ranged Based) var %lvl.base = Ranged: %r.lvl
      else var %lvl.base = $c1(Att:) $c2(%a.lvl) $c1(Str:) $c2(%s.lvl)
      notice $me 4 $+ %target is level %combat
      notice $me 4 $+ Att: %att Def: %def Str: %str hp: %Hp Range: %rng Pray: %pray Magic: %magic
      if ($floor(%combat) != 126) notice $me 4Levels for $floor($calc($gettok(%combat,1,32) +1)) $+ : %lvl.base def/hp: %d.lvl Prayer: %p.lvl
      else notice $me 4 $+ %target has reached the maximum combat level in Runescape!     
      unset $+(%,rs.,%ID)
    }
  }
  remove $sockname
}
alias -l cmb {
  var %a = $calc($2 * 100), %b = $calc($4 * 100), %c = $calc($6 * 50)
  var %base = $calc($calc(%a + %b + %c) / 400), %d = $calc($1 * 130), %e = $calc($3 * 130)
  if ($and($5,1) == 0) var %f = $calc($calc($calc($5 - 1) + $calc($5 * 2)) * 65)
  elseif ($and($5,1) == 1) var %f = $calc($5 * 195)
  if ($and($7,1) == 0) var %g = $calc($calc($calc($7 - 1) + $calc($7 * 2)) * 65)
  elseif ($and($7,1) == 1) var %g = $calc($7 * 195)
  var %mcombat = $calc($calc(%d + %e) / 400), %rcombat = $calc(%f / 400), %macombat = $calc(%g / 400)
  if (%mcombat > %rcombat) && (%mcombat > %macombat) { return $calc(%mcombat + %base) Melee Based }
  elseif (%rcombat > %mcombat) && (%rcombat > %macombat) { return $calc(%rcombat + %base) Ranged Based }
  elseif (%macombat > %mcombat) && (%macombat > %rcombat) { return $calc(%macombat + %base) Magic Based }
}
alias -l htmlfree { var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&amp;) | return %x }
alias -l comma {  Var %a, %b = $regsub($ticks,$$1,/G([+-]?d+?)(?=(?:d{3})++(?=.d++$|$))/g,1 $+ $chr(44),%a) | Return %a }
alias -l xp2Next { var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1)) | return $calc(%nextxp - %xp) }
alias -l xp { var %x = 1, %level = $calc($1 - 1), %xp = 0 | while (%x <= %level) { var %TempXp = $calc((%x + 300 * 2^(%x / 7)) /4) | inc %xp %TempXp | inc %x } | return $int(%xp) }
alias -l setskill {
  if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
  elseif ($1 == 1) || ($regex($1,/^at(t|k|tack)$/Si)) return Attack
  elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
  elseif ($1 == 3) || ($regex($1,/^str(ength)?$/Si)) return Strength
  elseif ($1 == 4) || ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
  elseif ($1 == 5) || ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
  elseif ($1 == 6) || ($regex($1,/^Pray(er)?$$/Si)) return Prayer
  elseif ($1 == 7) || ($regex($1,/^mag(e|ic)$$/Si)) return Magic
  elseif ($1 == 8) || ($regex($1,/^cook(ing)?$/Si)) return Cooking
  elseif ($1 == 9) || ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
  elseif ($1 == 10) || ($regex($1,/^fletch(ing)?$/Si)) return Fletching
  elseif ($1 == 11) || ($regex($1,/^fish(ing)?$/Si)) return Fishing
  elseif ($1 == 12) || ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
  elseif ($1 == 13) || ($regex($1,/^craft(ing)?$/Si)) return Crafting
  elseif ($1 == 14) || ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing
  elseif ($1 == 15) || ($regex($1,/^mine(ing)?$/Si)) return Mining
  elseif ($1 == 16) || ($regex($1,/^herb(law|lore)?$/Si)) return Herblore
  elseif ($1 == 17) || ($regex($1,/^agil(ity)?$/Si)) return Agility
  elseif ($1 == 18) || ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
  elseif ($1 == 19) || ($regex($1,/^slay(er|ing)?$/Si)) return Slayer
  elseif ($1 == 20) || ($regex($1,/^farm(er|ing)?$/Si)) return Farming
  elseif ($1 == 21) || ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
  elseif ($1 == 22) || ($regex($1,/^(hunt)(er|ing)?$/si)) return Hunter
  elseif ($1 == 23) || ($regex($1,/^(con)(struc?tion)?$/si)) return Construction
}


alias -l c1 { return $+($chr(3),4,$1-) }
alias -l c2 { return $+($chr(3),6,$1-) }
on *:TEXT:*:#: { if ($chan == #tzhaar) { halt }
  if ($left($strip($1),1) !isin @!.) || ($regex($strip($1),/(=|[^<]*>|<[^>]*>|<[^>]|[0-9]|$chr(95))/Si)) { halt }
  if ($right($1,-1) == defname) && ($2-) && ($len($2-) <= 12) {
    writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-)
    notice $nick $c1(your nickname for the adress) $c2($mask($fulladdress,3)) $c1(has been set to) $c2($2-)
    halt
  }
  inc %ID 1
  if ($right($strip($1),-1) == stats) set $+(%,rs.style.,%ID) stats
  elseif ($regex($strip($1),/co?mb(at)?/Si)) set $+(%,rs.style.,%ID) combat
  elseif ($setskill($remove($strip($1),@,!,.))) set $+(%,rs.style.,%ID) single
  else halt
  if ($len($2-) > 12) { $iif($left($1,1) == @,msg $chan,notice $nick) $c1(The nickname) $c2($2-) $c1(is too long) | halt }  
  if ($2) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))   
  elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
  elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
  else set $+(%,rs.rsn.,%ID) $nick
  set $+(%,rs.skill.,%ID) $setskill($remove($strip($1),@,!,.))
  set $+(%,rs.return.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
  sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
on *:SOCKOPEN:rsh.*:{
  var %ID = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,rs.rsn.,%ID),2) HTTP/1.0
  sockwrite -nt $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}
on *:SOCKREAD:rsh.*:{
  if ($sockerr) { echo -a Error. | halt }
  var %ID = $gettok($sockname,2,46), $&
    %style = $($+(%,rs.style.,%ID),2), $&
    %target = $($+(%,rs.rsn.,%ID),2), $&
    %display = $($+(%,rs.return.,%ID),2), $&
    %skill = $($+(%,rs.skill.,%ID),2)
  sockread &source
  bwrite $sockname -1 -1 &source
  if ($bfind(&source,1,does not feature in the hiscores).text) { %display $c1(The nickname:) $c2(%target) $c1(did not feature in runescape highscores for any skill!) | remove $sockname | sockclose $sockname | halt }
  bread $sockname 1 $file($sockname).size $+(&,$sockname)
  var %stat, %x = 1
  while (%x) {
    var %x = $bfind($+(&,$sockname),$calc(%x + 1),<a href="overall.ws?table=).text, %stat = $htmlfree($bvar($+(&,$sockname),%x,200).text)
    tokenize 10 %stat
    hadd -m $sockname $1 $2 $3 $4 $xp2next($3,$4)
  }
  if ($bfind($+(&,$sockname),1,<div id="footerHiscores"></div>).text) {
    if (%style == stats) {
      var %y = 0
      while (%y <= 23) {
        tokenize 32 $hget($sockname,$setskill(%y))
        if ($2) var %file = %file $c1($setskill(%y)) $c2($2)
        inc %y
      }
      %display $c1(Stats for) $c2(%target) $+ $c1(:)
      %display %file  
      unset $+(%,rs.,%ID)
    }
    if (%style == single) {
      if (!$hget($sockname,%skill)) { %display $c2(%target) $c1(did not feature in higscores for) $c2(%skill) | remove $sockname | sockclose $sockname | halt }
      tokenize 32 $hget($sockname,%skill)
      %display $c2(%skill) $c1(Stats for) $c2(%target)
      %display $c1(Level:) $c2($2) $c1(Rank:) $c2($1) $c1(Exp:) $c2($3) $c1(Exp for) $c2($calc($2 + 1)) $c1(%skill $+ :) $c2($comma($4))
      unset $+(%,rs.,%ID)  
    }
    if (%style == combat) {
      var %att = $gettok($hget($sockname,attack),2,32), %def = $gettok($hget($sockname,defence),2,32), $&
        %str = $gettok($hget($sockname,strength),2,32), %hp = $gettok($hget($sockname,hitpoints),2,32), $&
        %rng = $gettok($hget($sockname,ranged),2,32), %pray = $gettok($hget($sockname,prayer),2,32), $&
        %magic = $gettok($hget($sockname,magic),2,32)
      var %combat = $cmb(%att,%def,%str,%hp,%rng,%pray,%magic)
      var %temp = $abs($calc($int($calc($gettok(%combat,1,32) +1)) - $gettok(%combat,1,32))), $& 
        %a.lvl = $ceil($calc(%temp / .32707)), %s.lvl = $ceil($calc(%temp / .324)), $& 
        %d.lvl = $ceil($calc(%temp / .25)), $&
        %m.lvl = $ceil($calc(%temp / .487)), $& 
        %r.lvl = $ceil($calc(%temp / .487)), $&
        %p.lvl = $ceil($calc(%temp / .124))
      if ($gettok(%combat,2,32) == Magic Based) var %lvl.base = Magic: %m.lvl
      elseif ($gettok(%combat,2,32) == Ranged Based) var %lvl.base = Ranged: %r.lvl
      else var %lvl.base = $c1(Att:) $c2(%a.lvl) $c1(Str:) $c2(%s.lvl)
      %display $c2(%target) $c1(is level) $c2(%combat)
      %display $c1(Att:) $c2(%att) $c1(Def:) $c2(%def) $c1(Str:) $c2(%str) $c1(hp:) $c2(%Hp) $c1(Range:) $c2(%rng) $c1(Pray:) $c2(%pray) $c1(Magic:) $c2(%magic)
      if ($floor(%combat) != 126) %display $c1(Levels for) $c2($floor($calc($gettok(%combat,1,32) +1))) $+ $c1(:) %lvl.base $c1(def/hp:) $c2(%d.lvl) $c1(Prayer:) $c2(%p.lvl)
      else %display $c2(%target) $c1(has reached the maximum combat level in) $c2(Runescape!)     
      unset $+(%,rs.,%ID)
    }
  }
  remove $sockname
}
alias -l cmb {
  var %a = $calc($2 * 100), %b = $calc($4 * 100), %c = $calc($6 * 50)
  var %base = $calc($calc(%a + %b + %c) / 400), %d = $calc($1 * 130), %e = $calc($3 * 130)
  if ($and($5,1) == 0) var %f = $calc($calc($calc($5 - 1) + $calc($5 * 2)) * 65)
  elseif ($and($5,1) == 1) var %f = $calc($5 * 195)
  if ($and($7,1) == 0) var %g = $calc($calc($calc($7 - 1) + $calc($7 * 2)) * 65)
  elseif ($and($7,1) == 1) var %g = $calc($7 * 195)
  var %mcombat = $calc($calc(%d + %e) / 400), %rcombat = $calc(%f / 400), %macombat = $calc(%g / 400)
  if (%mcombat > %rcombat) && (%mcombat > %macombat) { return $calc(%mcombat + %base) Melee Based }
  elseif (%rcombat > %mcombat) && (%rcombat > %macombat) { return $calc(%rcombat + %base) Ranged Based }
  elseif (%macombat > %mcombat) && (%macombat > %rcombat) { return $calc(%macombat + %base) Magic Based }
}
alias -l htmlfree { var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&amp;) | return %x }
alias -l comma {  Var %a, %b = $regsub($ticks,$$1,/G([+-]?d+?)(?=(?:d{3})++(?=.d++$|$))/g,1 $+ $chr(44),%a) | Return %a }
alias -l xp2Next { var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1)) | return $calc(%nextxp - %xp) }
alias -l xp { var %x = 1, %level = $calc($1 - 1), %xp = 0 | while (%x <= %level) { var %TempXp = $calc((%x + 300 * 2^(%x / 7)) /4) | inc %xp %TempXp | inc %x } | return $int(%xp) }
alias -l setskill {
  if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
  elseif ($1 == 1) || ($regex($1,/^at(t|k|tack)$/Si)) return Attack
  elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
  elseif ($1 == 3) || ($regex($1,/^str(ength)?$/Si)) return Strength
  elseif ($1 == 4) || ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
  elseif ($1 == 5) || ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
  elseif ($1 == 6) || ($regex($1,/^Pray(er)?$$/Si)) return Prayer
  elseif ($1 == 7) || ($regex($1,/^mag(e|ic)$$/Si)) return Magic
  elseif ($1 == 8) || ($regex($1,/^cook(ing)?$/Si)) return Cooking
  elseif ($1 == 9) || ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
  elseif ($1 == 10) || ($regex($1,/^fletch(ing)?$/Si)) return Fletching
  elseif ($1 == 11) || ($regex($1,/^fish(ing)?$/Si)) return Fishing
  elseif ($1 == 12) || ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
  elseif ($1 == 13) || ($regex($1,/^craft(ing)?$/Si)) return Crafting
  elseif ($1 == 14) || ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing
  elseif ($1 == 15) || ($regex($1,/^mine(ing)?$/Si)) return Mining
  elseif ($1 == 16) || ($regex($1,/^herb(law|lore)?$/Si)) return Herblore
  elseif ($1 == 17) || ($regex($1,/^agil(ity)?$/Si)) return Agility
  elseif ($1 == 18) || ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
  elseif ($1 == 19) || ($regex($1,/^slay(er|ing)?$/Si)) return Slayer
  elseif ($1 == 20) || ($regex($1,/^farm(er|ing)?$/Si)) return Farming
  elseif ($1 == 21) || ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
  elseif ($1 == 22) || ($regex($1,/^(hunt)(er|ing)?$/si)) return Hunter
  elseif ($1 == 23) || ($regex($1,/^(con)(struc?tion)?$/si)) return Construction
}