on admin:text:*:*:{
  var %t = $left($1,1),%1 = $right($1,-1)
  if (!$chan) close -m $nick
  if (%t !isalnum) {
    if (%1 == part) { 
      if ($me ison $2) part $2 $3-
      else _msg $nick Error, $iif($2,I'm not on $qt($2),Syntax: !Part <chan> [msg]
    }
    elseif (%1 == join) {
      if ($me !ison $2) join $2 
      else _msg $nick Error, $iif($2,I'm already on $qt($2),Syntax: !Join <chan>)
    }
    elseif (%1 == npc) {
      if ($2 === -l) {
        var %n = 1,%names
        while ($wildtok(%fighting,NPC.*,%n,32)) {
          var %names = %names $v1  
          inc %n
        }
        _msg $nick Current NPC: $iif(%names,$v1,N/A)
      }
      elseif ($2 === -d) {
        if ($istok(%fighting,$3,32)) {
          npc_destroy $3 $4-
        }
        else _msg $nick Invalid NPC $qt($3)
      }
      elseif ($2 === -c) npc_create $3-
      elseif ($2 === -r) npc_randatk $3-
      elseif ($2 === -p) npc_pause $3-
      else _msg $nick NPC Syntax: !NPC -ldcrp [name]; l = list, d = delete, c = create, r = random attack, p = (un)pause 
    }
    elseif (%1 == flood) {
      if ($2) {  
        $iif($istok(on start 1,$2,32),.enable,.disable) #Floodprot
        _msg $nick Flood protection $iif($istok(on start 1,$2,32),enabled,disabled!) $+ !
      }
      else _msg $nick Flood Protection is $group(#floodprot) $+ !
    }
  }
}

alias npc_create {
  if ($wildtok($1-,copy=*,1,32)) var %total = $gettok($v1,2,61)
  else var %total = 1
  while (%total) {
    ;if ($wildtok($1-,name=*,1,32)) var %name = $gettok($v1,2,61)
    ;if (!%name) var %name = $+(NPC.,$r(A,Z),$r(10,99))
    var %name = $+(NPC.,$r(A,Z),$r(10,99))
    ;if ($left(%name,4) != npc.) var %name = NPC. $+ %name
    var %money = $r(9000,12000)
    if (!$hget(%name)) {
      hadd -m %name name NPC
      hadd %name output return
      hadd %name level %level
      hadd %name money %money
      hadd %name kills 0
      npc_add_gundam %name
      $+(.timer,%name,.atk) 1 $r(2,7) npc_randatk %name
      .signal -n 105 %name
    }
    dec %total
  }
  return Successully created NPC
}
alias npc_destroy {
  if ($hget($1)) {
    if ($istok(%fighting,$1,32)) set %fighting $remtok(%fighting,$1,1,32)
    amsgx ! $_nick($1) has been destroyed $iif($2,( $+ $2- $+ ))
    hfree $1
  }
}
alias npc_randatk {
  if ($hget($1)) {
    if ($hget($1,status) != paused) {
      var %w = $gettok($ug.weap($1),$r(1,$numtok($ug.weap($1),44)),44)
      if (($ug.shield($1)) && ($r(1,3) == 3)) var %w = $v1
      if ($istok(%fighting,$2,32)) var %t = $2
      else {
        var %r = $r(1,$calc($numtok(%fighting,32) - 1))
        var %t = $gettok($remove(%fighting,$1),%r,32)
      }
      if ($hget($1,lastused) != %w) || ($ui.type($1,$hget($1,lastused)) == shield) {
        if ($ui.type($1,%w) == gun) var %cmd = _shoot
        elseif ($ui.type($1,%w) == sword) var %cmd = _slash
        elseif ($ui.type($1,%w) == shield) var %cmd = _shield
        if (!%cmd) var %cmd = _punch
        %cmd $1 $iif($ui.type($1,%w) != shield,%t) %w
        hadd $1 lastused %w        
        if ($r(1,2) == 2) $+(.timer,$1,.atk) 1 $r(5,10) npc_randatk $1 $iif($r(1,2) == 2,%t)
      }
      else {
        ;timeratk.retry. $+ $1 1 0 npc_randatk $1 
      }
    }
  }
}
alias npc_pause {
  if ($hget($1)) {
    if ($hget($1,status) != paused) {
      hadd $1 status paused 
      if ($timer($+($1,.atk))) $+(.timer,$1,.atk) off
      amsgx ! $_nick($1) has been paused!
    }
    else { 
      hdel $1 status 
      amsgx ! $_nick($1) has been unpaused!
    }
  }
}
alias pfinder {
  var %money = $iif($1 !isnum,$u.mon($1),$1),%n = 1,%list
  while ($ini(gundams.ini,%n)) {
    var %name = $v1,%price = $g.price(%name)
    if (%money >= %price) var %list = %list %name
    inc %n
  }
  return %list
}
alias npc_add_gundam {
  var %gundam = $gettok($pfinder($1),$r(1,$numtok($pfinder($1),32)),32)
  add_gundam $1 %gundam
  hadd $1 currentgundam %gundam
  set %fighting $addtok(%fighting,$1,32)
  amsgx ! $_nick($1) has entered combat.
}
