on *:start:on_start
alias _msg {   
  var %msg = $iif($ini($_upath($$1),settings,output),$_read($1,settings,output),msg)
  if ($get.chr($1) == NPC) var %msg = return
  . $+ %msg $1 %left $+ $$2- $+ %right 
}

alias on_start {
  if (!$isdir(user)) mkdir user
  if (!%left) set %left 04X15
  if (!%right) set %right 04X15
  if (!$isdir(user)) mkdir user
  if (!%chan) echo -a %left Waring! Channel is not set. Type /set %chan # to set it. %right
  if (!%great_hit) set %great_hit 07(00Great hit07)15
  if (!%good_hit) set %good_hit 03(00Good hit03)15
  if (!%crit_hit) set %crit_hit 04(14Critical Hit04)15 
  if (!%poor_hit) set %poor_hit 05(00Poor hit05)15
  if (!%password) set %password zoomj
}

alias _write writeini -n $_upath($$1) $$2-

alias _read return $readini($_upath($$1),$2,$3-)

alias _upath return user\ $+ $1 $+ .ini

alias logo return Samurai 04X15 v104.150 00::15 Pass

; --
alias get.stm return $iif(!$hget($1),$_read($1,stats,stamina),$hget($1,stats.stamina))
alias get.techs return $iif(!$hget($1),$_read($1,stats,techniques),$hget($1,stats.techniques))
alias get.fstm return $iif(!$hget($1),$_read($1,stats,fstamina),$hget($1,stats.fstamina))
alias get.def return $iif(!$hget($1),$_read($1,stats,defense),$hget($1,stats.defense))
alias get.style return $iif(!$hget($1),$_read($1,stats,style),$hget($1,stats.style))
alias get.agl return $iif(!$hget($1),$_read($1,stats,agility),$hget($1,stats.agility))
alias get.chr return $iif(!$hget($1),$_read($1,settings,chr),$hget($1,settings.chr))
alias get.w return $iif(!$hget($1),$_read($1,stats,wins),$hget($1,stats.wins))
alias get.l return $iif(!$hget($1),$_read($1,stats,losses),$hget($1,stats.losses))
alias get.dmg return $iif(!$hget($1),$_read($1,stats,dmg),$hget($1,stats.dmg))
alias get.weap return $iif(!$hget($1),$_read($1,weapon,name),$hget($1,weapon.name))
alias get.lvl return $iif(!$hget($1),$_read($1,stats,level),$hget($1,stats.level))
alias get.ats return $iif(!$hget($1),$_read($1,stats,attacking),$hget($1,stats.attacking))
alias get.exp return $iif(!$hget($1),$_read($1,stats,exp),$hget($1,stats.exp))
alias get.nexp return $iif(!$hget($1),$_read($1,stats,nexp),$hget($1,stats.nexp))
alias get.com return $iif(!$hget($1),$_read($1,weapon,command),$hget($1,weapon.command))
alias get.wdmg return $iif(!$hget($1),$_read($1,weapon,damage),$hget($1,weapon.damage))
alias get.wlbs return $iif(!$hget($1),$_read($1,weapon,weight),$hget($1,weapon.weight))
alias get.wrg return $iif(!$hget($1),$_read($1,weapon,range),$hget($1,weapon.range))
alias get.atl return $iif($timer($+(attack.,$1)) > 0,$timer($+(attack.,$1)).secs)
alias get.guard return $iif(!$hget($1),$_read($1,stats,guard),$hget($1,stats.guard))
alias get.stp return $iif(!$hget($1),$_read($1,stats,points),$hgeT($1,stats.points))
alias get.money return $iif(!$hget($1),$_read($1,stats,money),$hget($1,stats.money))
alias get.npc return $iif($hget($1,stats.npc),$true)
alias _get return $iif(!$hget($1),$_read($1,$2,$3),$hget($1,$+($2,.,$3)))
;-
alias cget.def return $readini(sxc.ini,$1,defense)
alias cget.style return $readini(sxc.ini,$1,style)
alias cget.agl return $readini(sxc.ini,$1,agility)
alias cget.weap return $readini(sxc.ini,$1,weapon)
; --

alias bot_ban {
  if ($1 ischan) {
    if ($ini(ugs.ini,$2)) {
      if ($readini(ugs.ini,1,fighting) == yes) lfield $1 $2
      if ($3 == -u) && ($4 isnum) var %switch = -ku $+ $4,%msg = $5-,%ignore = $4
      else var %switch = -k,%msg = $3-,%ignore = 3
      .ignore -u $+ %ignore $address($$2,2)
      ban %switch $$1 $$2 2 %left $+ Enforced BotBan (00 $+ $iif(%msg,%msg,No Reason) $+ 15) $+ %right
    }
    else return Error: No such user $qt($2)
  }
  else return Syntax: /bot_ban <#channel> <nickname> [[-u #][comment]]
}

alias select_char {
  if (!$2) || (!$ini(sxc.ini,$2)) { 
    var %all = $ini(sxc.ini,0),%char
    while (%all) {
      var %char = %char $iif(%char,-) $ini(sxc.ini,%all)
      dec %all
    }
    _msg $1 $iif(%char,%char,N/A)
    halt
  }
  if ($level($nick) == chr) {
    _write $$1 stats level 1
    _write $$1 stats wins 0
    _write $$1 stats losses 0 
    _write $$1 stats DMG 0
    _write $$1 stats EXP 0
    _write $$1 stats nexp 200
    _write $$1 stats money $r(10,100)
    _write $$1 stats defense $readini(sxc.ini,$2,defense)
    _write $$1 stats style $readini(sxc.ini,$2,style)
    _write $$1 stats agility $readini(sxc.ini,$2,agility) 
    _write $$1 stats fstamina 100
    _write $$1 stats stamina 100
    _write $$1 stats points 0
    ;  _write $$1 stats break $readini(sxc.ini,$2,break)
    ;  _write $$1 stats grapple $readini(sxc.ini,$2,grapple)

    _write $$1 settings output notice
    _write $$1 settings chr $2
    var %weapon = $readini(sxc.ini,$2,weapon)
    if (%weapon) {
      _write $$1 weapon name %weapon
      _write $$1 weapon damage $readini(weapons.ini,%weapon,damage)
      _write $$1 weapon command $readini(Weapons.ini,%weapon,command)
      _write $$1 weapon weight $readini(weapons.ini,%weapon,weight)
      _write $$1 weapon range $readini(weapons.ini,%weapon,range)
    }
    var %techniques = $readini(sxc.ini,$2,techniques),%technique = $numtok(%techniques,44)
    _write $$1 stats techniques %techniques
    while (%technique) {
      var %tech = $gettok(%techniques,%technique,44)
      if ($ini(techniques.ini,%tech)) {
        if ($readini(techniques.ini,%tech,damage)) _write $$1 %tech Damage $v1
        if ($readini(techniques.ini,%tech,stamina)) _write $$1 %tech Stamina $v1
        _write $$1 %tech Logo $readini(techniques.ini,%tech,logo)
      }
      dec %technique
    }
    _msg $$1 You're now registered; type 04 $+ $iif(%t,%t,!) $+ help battle15 for more info.
    _msg %chan User(00 $+ $$1 $+ 15) is now registered
    if ($level($nick) == chr) .ruser chr $nick
  }
  /*
  elseif ($get.exp($1) != $null) {
    if (!$hget($1)) {
      var %def = $get.def($1),%style = $get.style($1),%agil = $get.agl($1),%c = $get.chr($1)
      var %ddef = $calc(%def - $cget.def(%c)),%dstyle = $calc(%style - $cget.style(%c)),%dagil = $calc(%agil - $cget.agl(%c))
      _write $$1 stats defense $iif(%ddef > 0,%ddef,0)
      _write $$1 stats style $iif(%dstyle > 0,%dstyle,0)
      _write $$1 stats agility $iif(%dagil > 0,%dagil,0)
      _write $$1 stats defense $calc(%ddef + $readini(sxc.ini,$2,defense))
      _write $$1 stats style $calc(%dstyle + $readini(sxc.ini,$2,style))
      _write $$1 stats agility $calc(%dagil + $readini(sxc.ini,$2,agility))
      _write $$1 settings chr $2
      var %weapon = $readini(sxc.ini,$2,weapon)
      _write $$1 weapon name %weapon
      _write $$1 weapon damage $readini(weapons.ini,%weapon,damage)
      _write $$1 weapon command $readini(Weapons.ini,%weapon,command)
      _write $$1 weapon weight $readini(weapons.ini,%weapon,weight)
      _write $$1 weapon range $readini(weapons.ini,%weapon,range)
      _write $$1 stats techniques $addtok($get.techs($1),%techniques,44)
      var %techniques = $readini(sxc.ini,$2,techniques),%technique = $numtok(%techniques,44)
      while (%technique) {
        var %tech = $gettok(%techniques,%technique,44)
        if ($ini(techniques.ini,%tech)) {
          if ($_get($1,%tech,logo)) {
            if ($readini(techniques.ini,%tech,damage)) _write $$1 %tech Damage $v1
            if ($readini(techniques.ini,%tech,stamina)) _write $$1 %tech Stamina $v1
            _write $$1 %tech Logo $readini(techniques.ini,%tech,logo)
          }
          dec %technique
        }
      }
      _msg $1 Your character has been changed to 04 $+ $2 $+ 15
    }
    else _msg $1 You cannot use this command in combat
  }
  */
}

alias _set {
  if ($2 == output) {
    if ($istok(msg notice,$3,32)) {
      if ($isfile($_upath($1))) {
        _write $1 settings output $3
        _msg $$1 Set 04output15 to04 $3 $+ 15
      }
    }
    else _msg $$1 Invalid output method; MSG or NOTICE only
  }
  if ($2 == chr) { 
    if ($isfile($_upath($1))) || ($level($nick) == chr) {
      select_char $$1 $$3 
    }
    ; else echo -a 1
  }
  ; else echo -a 2
}

alias lfield {
  if ($hget($1)) {
    if (!$get.npc($1)) { hadd $1 stats.stamina $get.fstm($1) | hsh2ini $1 $_upath($1) }
    set %fighting $remtok(%fighting,$1,1,44)
    _msg $1 You've left combat
    _msg %chan $_nick($1) has 04left15 combat $+ $iif($2 isalnum || $3-,; Reason(00 $+ $iif($2 isalnum,$2-,$3-) $+ 15))
    if (!$get.npc($1)) hfree $1
    else npc_destroy $1
    ; output leave $1
  }
  ; else _msg $nick You're not in combat.04 $iif($len($2) == 1 && $2 !isalnum,$2,!) $+ help battle15
}

alias efield {
  if ($isfile($_upath($1))) {
    if (!$hget($1)) {
      ini2hsh $_upath($1) $1
      set %fighting $addtok(%fighting,$1,44)
      _msg $1 You've entered combat
      _msg %chan $_nick($1) has 04entered15 combat; level(00 $+ $get.lvl($1) $+ 15)
      ; output enter $1
    }
    ; else _msg $nick You're already in combat. $left($1,1) $+ help combat
  }
  ; else _msg $nick You're not registered. $left($1,1) $+ help 09register15
}

alias drop {
  if ($_upath($1)) {
    if ($hget($1)) { set %fighting $remtok(%fighting,$nick,1,44) | hfree $1 }
    .remove $_upath($1)
    _msg $1 You're dead to the game
    _msg %chan $1 has been 04removed15 from the game $+ $iif($2-,; Reason(00 $+ $2- $+ 15))
    ; output quit $1 $2-
  }
  ; else _msg $nick You're not registered.04 $left($1,1) $+ help register15 
}

alias ini2hsh {
  var %heads = 1,%skin = $1
  if ($hget($2)) hfree $2
  while ($ini(%skin,%heads)) {
    var %head = $ini(%skin,%heads),%items = 1
    while ($ini(%skin,%head,%items)) {
      var %item = $ini(%skin,%head,%items)
      hadd -m $$2 $+(%head,.,%item) $readini(%skin,%head,%item)
      inc %items
    }
    inc %heads
  }
  ; echo $color(info) -a * /ini2hsh: Complete
}
alias hsh2ini {
  var %heads = 1
  while ($hget($1,%heads).item) {
    var %raw = $hget($1,%heads).item,%data = $hget($1,%heads).data,%head = $gettok(%raw,1,46),%item = $gettok(%raw,2,46),%items = 1
    writeini $qt($2) %head %item %data
    inc %heads     
  }
  ; echo $color(info) -a * /hsh2ini: Complete 
}
alias _stats {
  if ($isfile($_upath($2))) || ($hget($2)) var %nick = $2
  elseif ($isfile($_upath($1))) var %nick = $1
  if (%nick) {
    _msg $1 -- Stats(00 $+ %nick $+ 15) --
    _msg $1 Fighter(00 $+ $get.chr(%nick) $+ 15); Level(00 $+ $get.lvl(%nick) $+ 15); Damage Sustained(00 $+ $get.dmg(%nick) $+ % $+ 15); Exp( $+ $iif($get.exp(%nick) > $get.nexp(%nick),04,00) $+ $get.exp(%nick) $+ 15/00 $+ $get.nexp(%nick) $+ 15); In Combat( $+ $iif($hget(%nick),09TRUE15,04FALSE15) $+ ) $+ $iif($get.guard(%nick),; Guard(11TRUE15))
    _msg $1 Stat Points(00 $+ $get.stp(%nick) $+ 15); Style(00 $+ $get.style(%nick) $+ 15); Defense(00 $+ $get.def(%nick) $+ 15); Agility(00 $+ $get.agl(%nick) $+ 15); Stamina(00 $+ $iif($get.stm(%nick),$v1,??) $+ / $+ $iif($get.fstm(%nick),$v1,??) $+ 15) $+ $iif($get.guard(%nick),; Guard(11 $+ $v1 $+ % $+ 15))
  }
}
alias _wstats {
  if ($isfile($_upath($2))) || ($hget($2)) var %nick = $2
  elseif ($isfile($_upath($1))) var %nick = $1
  if (%nick) {
    _msg $1 -- Weapon Stats(00 $+ %nick $+ 15) --
    _msg $1 Name(00 $+ $iif($get.weap(%nick),$v1,?) $+ 15); Damage(00 $+ $iif($get.wdmg(%nick),$v1,?) $+ 15); Weight(00 $+ $iif($get.wlbs(%nick),$v1,?) $+ 15); Range(00 $+ $iif($get.wrg(%nick),$v1,?) $+ 15)
  }
}
alias _tstats {
  if ($isfile($_upath($2))) || ($hget($2)) var %nick = $2
  elseif ($isfile($_upath($1))) var %nick = $1
  if (%nick) {
    var %techniques = $get.techs(%nick),%t = $numtok(%techniques,44)
    _msg $1 -- Technique Stats(00 $+ %nick $+ 15) --
    while (%t) {
      var %tech = $gettok(%techniques,%t,44),%info = $iif($readini(techniques.ini,%tech,info) != $null,$v1,??),%damage = $_get(%nick,%tech,damage),%stam = $_get(%nick,%tech,stamina),%logo = $replace($_get(%nick,%tech,logo),&,)
      _msg $1 Name(00 $+ %tech $+ 15); Damage(00 $+ %damage $+ 15); Stamina Cost(00 $+ %stam $+ 15); Info(00 $+ %info $+ 15)
      dec %t
    }
  }
}
alias datk {
  if ($hget($1)) {
    if ($timer(attack. $+ $nick)) timerattack. $+ $nick off
    hadd $1 stats.attacking $false
    _msg $1 You've 04finished15 attacking
  }
}
alias _nick { 
  var %chr = $get.chr($1)
  if ($_get($1,stats,stunned)) var %std = $true
  if ($_get($1,stats,paused)) var %psd = $true
  return $1 $+ (00 $+ %chr $+ $iif(%std,$chr(124) $+ 07stunned15 $+ ) $+ $iif(%psd,$chr(124) $+ 09paused15 $+ ) $+ 15)   
}

alias doatk { 
  if ($hget($1)) && ($hget($2)) {
    if (!$get.guard($1)) {
      if (!$get.ats($1)) {
        if ($istok(kick punch $get.weap($1),$3,32)) {
          var %nick = $1,%target = $2,%attack = $3
          if ($3 == $get.weap(%nick)) var %wlbs = $get.wlbs(%nick)
          if (!%wlbs) var %wlbs = +0
          var %_t = $calc($get.agl($1) - %wlbs)
          var %time = $calc(60 - %_t)
          if ($istok(kick punch,%attack,32)) var %time = $calc(%time /2) 
          if (%time > 59) var %time = 59
          if (%time < 1) var %time = 1
          .timerattack $+ . $+ $1 1 %time attack %nick %target %attack
          _msg %chan $_nick($1) prepares to 04attack15 $_nick($2) in approximately04 %time 15seconds..
          if ($get.chr($1) == NPC) .timerattackagain. $+ $1 1 $calc((%time + 10) + $r(10,15)) //npc_attack $1
        }
      }
    }
    else _msg $1 You cannot 04attack15 while 11guarding15
  }
}

alias guard {
  if ($1 != $2) {
    if ($hget($1)) {
      ;if ($hget($2)) {
      ;if ($get.ats($2)) {
      ;if (attack $2 $1 == $gettok($timer($+(attack.,$2)).com,1-3,32)) {
      hadd $1 stats.guard $abs($int($calc($get.def($1) * .6)))  
      _msg $1 You've began 11guarding15 your surroundings..              
      ;}
      ;else _msg $1 You're not being 04targeted15  
      ;}
      ;else _msg $1 04 $+ $2 15is not attacking
      ;}
    }
  }
}

alias deguard {
  if ($get.guard($1)) {
    if ($hget($1)) hadd $1 stats.guard $false 
    else _write $1 stats guard $false
    _msg $1 You've removed your 11guard15
  }
}

alias attack { 
  tokenize 32 $1-
  if ($1 != $2) {
    if ($hget($1)) { 
      if ($hget($2)) {  
        if (!$get.ats($1)) { 
          if (!$_get($1,stats,stunned)) {
            if (!$_get($1,stats,paused)) {
              if (!$get.guard($1)) {
                hadd $1 stats.attacking $true
                var %tmp.agl = $calc($get.agl($2) * .25),%tmp.style = $calc($get.style($2) * .45),%b = $iif($calc(%tmp.agl + %tmp.style) > 0,$v1,0)
                var %tmp.parry = %b
                if ($get.weap($1) == $3) || ($istok(Kick Punch,$3,32)) var %temp.atk = $3
                if (%temp.atk) {
                  if (!%temp.miss) { 
                    var %set = 1,2,3,4,5 6,7,8,9 10,11
                    if (!$istok(punch kick,%temp.atk,32)) var %n = $get.wrg($1)
                    else var %n = +0    
                    if (%n < %tmp.parry) var %s = $r(1,3)
                    elseif (%n < $calc((%tmp.parry * .5) + %tmp.parry)) var %s = $r(1,2)
                    var %ntok = $numtok($gettok(%set,%s,44),32)
                    var %n = $gettok(%set,$r(1,%ntok),44)
                    var %temp.miss = $iif(%n isnum,%n,$r(1,11))
                  }
                  if (!$istok(punch kick,%temp.atk,32)) var %dmg = $calc($round($abs($calc(($get.power($1) + ($get.agl($1) * .2) $get.wlbs($1)) - $get.def($2))),0) $get.wdmg($1))
                  else var %dmg = $calc($round($abs($calc(($get.power($1) + ($get.agl($1) * .3) - $get.def($2)))),0)) + $iif($3 == punch,2,5))
                  var %dmg = $calc(%dmg + $get.style($1))
                  if ($get.guard($2)) { 
                    var %total = $calc(%dmg * $iif($get.guard($2) < 100,. $+ $v1,$+($left(%dmg,1),.,$right(%dmg,-2))))
                    var %dmg = $int($calc(%dmg - %total))
                  }
                  if (%dmg < 0) var %dmg = $r(1,10)
                  var %tmp.exdmg = $r(1,100)
                  if (%tmp.exdmg isnum 40-60) {
                    var %_dmg = $get.dmg($2)
                    if ($right(%dmg,-2) >= 5) { var %critical $true | %tmp.exdmg = $r(150,250) }
                    else {
                      if (!%x) var %x = $r(1,5),%y = $r(1,5) 
                      if (%x == %y) { var %critical $true | %tmp.exdmg = $r(150,250) }
                    }
                  }

                  if (%dmg >= $get.style($1)) var %dmgout = %great_hit
                  elseif (%dmg >= $calc($get.style($1) / 2)) var %dmgout = %good_hit
                  elseif (%dmg >= $calc($get.style($1) / 4)) var %dmgout = %norm_hit 
                  elseif (%dmg >= $calc($get.style($1) / 8)) var %dmgout = %poor_hit 
                  if (%critical) var %dmgout = %crit_hit
                  var %temp.atk = $3-,%exp = $r(1,40)
                  ; New Chances - [ 1 2 3 4 5 ][ 6 7 8 9 ][ 10 11 ]
                  if (%temp.miss isnum 10-11) { 
                    .timer 1 10 datk $1
                    var %exp = $calc(%exp * 2)
                    hadd $1 stats.dmg $calc($get.dmg($2) + %tmp.parry)
                    hadd $2 stats.exp $calc($get.exp($1) + %exp)
                    _msg %chan $_nick($1) attacks $_nick($2) with a04 $3 15but was 00PARRIED15. $_nick($1) gains $+(04,$iif(%tmp.parry < 10,0 $+ %tmp.parry,%tmp.parry),$chr($asc(%))) 15damage! $_nick($2) gains10 %exp 15exp!
                    level_check $2        
                    return          
                  }
                  elseif (%temp.miss isnum 1-5) {
                    .timer 1 10 datk $1
                    ; var %tmp.dmg = %tmp.exdmg,%hp = $calc($get.dmg($2) + %tmp.dmg)
                    var %hp = $calc($get.dmg($2) + %dmg)
                    if (%_exp < 1) var %_exp = 1
                    if (%critical) var %exp = $int($calc($r(1,9) * $get.lvl($2) + (%dmg * .25)))
                    hadd $1 stats.exp $calc($get.exp($1) + %exp)
                    hadd $2 stats.DMG %hp
                    if ($get.guard($2)) { var %_exp = $ceil($calc(($get.lvl($1) * $r(1,9)/2)+($get.guard($1) * .8) ) ) | hadd $2 stats.exp $calc($get.exp($2) + %_exp) }
                    _msg %chan %dmgout $_nick($1) attacks $_nick($2) with a04 $3 $+ 15! $_nick($2) gains $+(04,$iif(%dmg < 10,0 $+ %dmg,%dmg),$chr($asc(%))) 15damage! 04(00 $+ $iif(%hp < 10,0 $+ %hp,%hp)) $+ % $+ 04)15; $_nick($1) gains10 %exp 15exp! $iif($get.guard($2), 11{15 Guard(11 $+ $v1 $+ % $+ 15); $_nick($2) gains11 %_exp 15exp 11}15)
                    level_check $1
                    level_check $2
                    if (%critical) && ($2 != Pass) kill_check $1 $2
                  }
                  else _msg $1 You cannot 04attack15 while 11guarding15
                }
                elseif ($3) _msg $1 Error: You do not have that weapon(00 $+ $3 $+ 5)
              }
              else { _msg %chan $_nick($1) attacks $_nick($2) a with04 $3 $+ 15.. but misses | .timer 1 3 datk $1 }
            }
            ; else _msg $1 Error: Cannot use this while 09paused15 
          }
          else _msg $1 Error: Cannot use this while 07stunned15
        }
        else _msg $1 Error: You're already attacking
      }
      else _msg $1 Error: That person is not in combat
    }
    else _msg $1 Error: You're not on the field. Type 04!fight15 
  }
}

alias kill_check {
  set %fighting $remtok(%fighting,$2,1,44)
  var %_exp = $calc($get.lvl($1) * $r(1,9))
  hadd $2 stats.exp $calc($get.exp($2) + %_exp)
  hinc $2 stats.losses 
  hinc $1 stats.wins 
  hadd $2 stats.DMG 0
  _msg %chan $_nick($2) gains a 06cherity15 of00 %_exp 15exp..
  lfield $2 Fucking killed
}

alias _calc {
  _msg $1 The answer to the problem(00 $+ $$2- $+ 15) is(00 $+ $iif($calc($$2-),$v1,0) $+ 15) 
}

alias level_check {
  if ($hget($1)) || ($isfile($_upath($1))) {
    if ($get.exp($1) >= $get.nexp($1)) {   
      var %times = $int($calc($get.exp($1) / $get.nexp($1)))
      var %t.p = $r(3,8),%points = $calc(%t.p * %times),%money = $r(50,200)
      var %nexp = $calc(200* %times)
      if ($hget($1)) {
        hadd $1 stats.points $calc($get.stp($1) + %points)
        hadd $1 stats.level $calc($get.lvl($1) + %times)
        hadd $1 stats.money $calc($get.money($1) + %money)
        hadd $1 stats.exp 0
        hadd $1 stats.nexp $calc($get.nexp($1) + %nexp)
        _msg $1 You've grown04 %times 15level(s); Stat Points(00 $+ %points $+ 15); Money(00 $+ $chr(36) $+ %money $+ 15)
      }
      else {
        _write $1 stats points $calc($get.stp($1) + %points)
        _write $1 stats level $calc($get.lvl($1) + %times)
        _write $1 stats money $calc($get.money($1) + %money) 
        _write $1 stats exp 0
        _write $1 stats nexp $calc($get.nexp($1) + %nexp)
        _msg $1 You've grown04 %times 15level(s); Stat Points(00 $+ %points $+ 15); Money(00 $+ $chr(36) $+ %money $+ 15) 
      }
    }
  }
}

alias use_point {
  if ($hget($1)) || ($isfile($_upath($1))) {
    var %points = $iif($2 isnum $+(1-,$get.stp($1)),$2,1)
    var %3 = $iif($2 !isnum $+(1-,$get.stp($1)),$2,$3)
    if ($istok(defense agility style stamina,%3,32)) {
      if (%3 == defense) var %stat = $get.def($1)
      elseif (%3 == agility) var %stat = $get.agl($1)
      elseif (%3 == style) var %stat = $get.style($1)
      elseif (%3 == stamina) var %stat = $get.fstm($1),%_points = $calc(%points *10),%3 = fstamina
      if ($hget($1)) {
        hadd $1 stats.points $calc($get.stp($1) - %points)
        hadd $1 stats. $+ %3 $calc(%stat + $iif(%3 == fstamina,%_points,%points))
        if (%3 == fstamina) hadd $1 stats.stamina $get.fstm($1)
        _msg $1 You have04 $get.stp($1) 15points remaining
      }
      else {
        _write $1 stats %3 $calc(%stat + %points)
        _write $1 stats points $calc($get.stp($1) - %points)
        _msg $1 You have04 $get.stp($1) 15points remaining
      }
    }
  }
}

alias _help {
  if ($3) { 
    if ($2 == Start) {
      _msg $1 -- Help(00start15) -- 
      _msg $1 Type04 $3 $+ start15 in00 PM/ $+ %chan 15to start - Instructions will follow
    }
    if ($2 == Set) { 
      _msg $1 -- Help(00set15) --
      _msg $1 Type04 $3 $+ set15 in00 PM/ $+ %chan 15with the options 11output15/11chr15; Syntax:04 $3 $+ set <output/chr> <selection>15
    }
    if ($2 == Combat) { 
      _msg $1 -- Help(00combat15) --
      _msg $1 To enter combat type04 $$3 $+ enter15; To leave type04 $3 $+ leave15
      _msg $1 To attack, use your11 $iif($get.com($1),$v1,weapon) $+ 15 $+ $chr(44) 11 $+ $3 $+ punch15, or11 $3 $+ kick15
      _msg $1 To get weapon stats type04 $3 $+ wstats [nick]15
    }
    if ($2 == Guard) {
      _msg $1 -- Help(00guard15) -- 
      _msg $1 11Guarding15 is a technique used for protection, though it has many perks
      _msg $1 - A percentage made up from your stats is reduced from any attack against a you
      _msg $1 - You gain 04exp15 from 11guarding15
      _msg $1 Syntax:11 $3 $+ guard15 to protect yourself;11 $3 $+ dguard15 to 'deprotect' yourself
    }
  }
  else _msg $1 Help(00topics15); Start - Set - Combat - Guard - Techniques; Syntax:04 $iif($3,$3,$iif($2 !isalnum,$2,!)) $+ help <topic>15
}

on *:TEXT:*:%chan: {
  if (!$(%chan.flood. $+ $nick,2)) set -u10 $+(%,chan.flood.,$nick)
  inc -u5 %chan.flood. $+ $nick
  if ($($+(%,chan.flood.,$nick),2) >= 15) {
    if ($readini(ugs.ini,$nick,fighting) == yes) lfield $chan $nick
    _msg $nick Flooding - 5 minute BotBan 
    bot_ban $chan $nick -u 300 Flooding - 5 minutes
    unset %chan.flood. $+ $nick
    halt
  }
  var (%trig == $left($1,1)) 
  if (%trig !isalnum) var %1 = $right($1,-1),%t = $left($1,1)
  if (%1 == logo) _msg $chan $logo
  if (%1 == start) {
    _msg $chan $logo
    _msg $chan Type04 %t $+ chr15 to get a list of fighters; Type04 %t $+ set chr <fighter>15 to set your fighter
    .auser chr $nick
    .timerchr.select. $+ $nick 1 60 if ($level($nick) == chr) .ruser chr $nick
  }
  if (%1 == chr) select_char $nick 
  if (%1 == set) _set $nick $2-
  if (%1 == enter) efield $nick
  if (%1 == leave) lfield $nick
  if (%1 == drop) drop $nick
  if (%1 == stats) _stats $nick $2
  if (%1 == targets) { tokenize 44 %fighting | _msg $nick Targets: $iif($1-,$1-,N/A) }
  if (%1 == $get.com($nick)) doatk $nick $2 $get.weap($nick)
  if (%1 == atl) _msg $nick 04 $+ $get.atl($nick) 15seconds until attack hits
  if (%1 == wstats) _wstats $nick $2
  if (%1 == punch) || (%1 == kick) doatk $nick $$2 %1
  if (%1 == guard) guard $nick
  if (%1 == dguard) deguard $nick
  if (%1 == calc) _calc $nick $2-
  if (%1 == use) use_point $nick $2-
  if (%1 == tstats) _tstats $nick $2-
  if (%1 == help) _help $nick $2 %t
}
on *:TEXT:*:?:{
  closemsg $nick
  if (!$(%pm.flood. $+ $nick,2)) set -u10 $+(%,pm.flood.,$nick)
  inc -u5 %pm.flood. $+ $nick
  if ($($+(%,pm.flood.,$nick),2) >= 15) {
    if ($hget($nick)) && (%chan) lfield %chan $nick
    _msg $nick Query flooding - 045 minute ignore 
    .ignore -u $+ %ignore $address($$nick,2)
    unset %pm.flood. $+ $nick
    halt
  }
  var (%trig == $left($1,1)) 
  if (%trig !isalnum) var %1 = $right($1,-1),%t = $left($1,1)
  if (%1 == start) {
    _msg $nick $logo
    _msg $nick Type04 %t $+ chr15 to get a list of fighters; Type04 %t $+ set chr <fighter>15 to set your fighter
    .auser chr $nick
    .timerchr.select. $+ $nick 1 60 if ($level($nick) == chr) .ruser chr $nick
  }
  if (%1 == chr) select_char $nick
  if (%1 == set) _set $nick $2-
  if (%1 == enter) efield $nick
  if (%1 == leave) lfield $nick
  if (%1 == drop) drop $nick
  if (%1 == stats) _stats $nick $2 
  if (%1 == targets) { tokenize 44 %fighting | _msg $nick Targets: $iif($1-,$1-,N/A) }
  if (%1 == $get.com($nick)) doatk $nick $2 $get.weap($nick)
  if (%1 == wstats) _wstats $nick $2
  if (%1 == punch) || (%1 == kick) doatk $nick $2 %1
  if (%1 == guard) guard $nick
  if (%1 == dguard) deguard $nick
  if (%1 == calc) _calc $nick $2-
  if (%1 == use) use_point $nick $2-
  if (%1 == tstats) _tstats $nick $2-
  if (%1 == help) _help $nick $2 %t
}
