alias market {
  var %selections = $ini(items.ini,0),%products
  while (%selections > 0) {
    var %name = $ini(items.ini,%selections)
    var %products = $addtok(%products,%name,32) 
    dec %selections
  }
  if (%products) _msg $$1 12Market:00 %products
}

on *:TEXT:*:?:{ 
  closemsg $nick
  var (%trig == $left($1,1)) 
  if (%trig !isalnum) var %1 = $right($1,-1),%t = $left($1,1)

  if (%1 == login) {
    if ($2 === %password) {
      if ($level($address($nick,2)) != admin) {
        .auser admin $$address($nick,2)
        _msg $nick You now have admin access
      }
    }
    else _msg $nick Error: Invalid password
  }
  if (%1 == logout) {
    if ($level($address($nick,2)) == admin) {
      .ruser admin $address($nick,2)
      _msg $nick You no longer have admin access
    }
  }
  if (%1 == aset) {
    if ($level($address($nick,2)) == admin) {
      if (pass* iswm $2) { set %password $$3 | _msg $nick Set 04password15 to04 $qt($$3) $+ 15 }
      elseif ($2 == left) { set %left $$3 | _msg $nick Set 04left15 to04 $qt($$3) $+ 15 }
      elseif ($2 == right) { set %right $$3 | _msg $nick Set 04right15 to04 $qt($$3) $+ 15 }
      elseif ($2 == SAPass) { set %same.addy $iif($3 == ON,$true,$false) | _msg $nick Set 04SAPass15 to04 $iif($3 == ON,ON,OFF) $+ 15 }
    }
  }
  if (%1 == natk) {
    if ($level($address($nick,2)) == admin) {
      npc_attack $$1 $$2-
    }
  }
  if (%1 == getpass) {
    if ($level($address($nick,2)) == admin) {
      var %msg = The password's  $+ %password $+ 
    }
    elseif ($address($nick,4) == $address($me,4)) {
      if (%same.addy) var %msg = The password's  $+ %password $+ 
    }
    tokenize 32 %msg | _msg $nick $$1-
  }
}
on *:TEXT:*:%chan:{ 
  var %1 = $right($1,-1),%t = $left($1,1)
  if (%1 == destroy) { 
    if ($level($address($nick,2)) == admin) npc_destroy $2-
  }
  if (%1 == spawn) { 
    if ($level($address($nick,2)) == admin) npc_random
  }
  if (%1 == natk) {
    if ($level($address($nick,2)) == admin) npc_attack $2-
  }
  if (%1 == pause) {
    if ($level($address($nick,2)) == admin) npc_pause $2-
  }
  if (%1 == topic) {
    if ($level($address($nick,2)) == admin) .topic %chan %left $+ $$2- $+ %right
  }
}
alias npc_random {
  var %type = $r(1,3)
  npc_spawn %type $2-
}

alias npc_spawn {
  if ($1 == 1) var %name = Samurai $+ $r(1,99),%weapon = Katana,%level = $r(1,30)
  elseif ($1 == 2) var %name = Fighter $+ $r(1,99),%level = $r(1,30)
  elseif ($1 == 3) var %name = Student $+ $r(1,99),%weapon = Bokken,%level = $r(1,30)
  hadd -m %name settings.chr NPC
  hadd %name stats.style $calc($iif(%weapon,$r(1,7),$r(8,14)) * %level)
  hadd %name stats.defense $calc($iif(%weapon,$r(1,7),$r(8,14)) * %level)
  hadd %name stats.agility $calc($iif(%weapon,$r(1,7),$r(8,14)) * %level)
  hadd %name stats.exp 0 
  hadd %name stats.nexp 0
  hadd %name stats.level %level
  hadd %name stats.npc $true
  if (%weapon) {
    hadd %name weapon.name %weapon
    hadd %name weapon.damage $readini(weapons.ini,%weapon,damage)
    hadd %name weapon.command $readini(weapons.ini,%weapon,command)
    hadd %name weapon.weight $readini(weapons.ini,%weapon,weight)
    hadd %name weapon.range $readini(weapons.ini,%weapon,range)
  }
  set %fighting $addtok(%fighting,%name,44)
  _msg %chan $_nick(%name) has 04entered15 combat; level(00 $+ $get.lvl(%name) $+ 15)
  .timer 1 $r(2,7) npc_attack %name $2-
  $+(.timerselfdetenation.,%name) -o 1 300 //npc_destroy %name Self-Detonation
}

alias npc_attack {
  if ($_get($1,stats,paused)) hadd $1 stats.paused $false
  var %all = $remove(%fighting,$1),%n = $r(1,$numtok(%all,44))
  var %target = $gettok(%all,%n,44)),%atkc = $r(1,4),%y = kick punch
  if ($istok(Punch Kick,$3,32)) var %attack = $3
  elseif (!$get.weap($1)) var %attack = $gettok(%y,$r(1,2),32)
  else var %attack = $iif(%atkc isnum 1-3,$get.weap($1),$gettok(%y,$r(1,2),32))
  if ($2) var %target = $2
  if ($istok(%fighting,$1,44)) && ($istok(%fighting,%target,44)) { 
    if ($timer($+(attackagain.,$1))) .timerattackagain. $+ $1 off
    doatk $1 %target %attack
  }
}

alias npc_pause {
  var %npc = $numtok($1,44),%n
  while (%npc) {
    var %name = $gettok($1,%npc,44)
    if ($get.npc(%name)) {
      hadd %name stats.attacking $false
      if ($timer($+(attack.,%name))) .timerattack. $+ %name off
      if ($timer($+(attackagain.,%name))) .timerattackagain. $+ %name off
      if ($2 isnum) .timerattack. $+ %name 1 $calc($2 *60) npc_attack %name
      inc %n
      if ($numtok($1,44) = 1) _msg %chan $_nick(%name) 11paused15 $+ $iif($2,;) $iif($2 isnum,Time(00 $+ $2 15minute(s)),$iif($2,Reason(00 $+ $2- $+ 15))) 
      hadd $1 stats.paused $true
    }
    dec %npc
  }
  if ($numtok($1,44) > 1) _msg %chan 11Paused04 %n 15Fighters $+ $iif($2,;) $iif($2 isnum,Time(00 $+ $2 15minute(s)),$iif($2,Reason(00 $+ $2- $+ 15)))
}

alias npc_destroy {
  var %npc = $numtok($1,44),%n
  while (%npc) {
    var %name = $gettok($1,%npc,44)
    if ($get.npc(%name)) {
      if ($istok(%fighting,%name,44)) set %fighting $remtok(%fighting,%name,1,44)
      if ($hget(%name)) hfree %name
      if ($numtok($1,44) == 1) _msg %chan %name has been 04destroyed15 $+ $iif($2,; Reason(00 $+ $2- $+ 15)) $+ !
      inc %n
    }
    dec %npc
  }
  if (%n > 1) _msg %chan Removed04 %n 15AI Fighter(s) $+ $iif($2-,; Reason(00 $+ $2- $+ 15)) 
}
