on *:text:*:*:{
  if (!$chan) close -m $nick
  var %t = $left($1,1),%1 = $right($1,-1)
  if (%t !isalnum) {
    if ($hget($nick)) {
      if (%1 == browse) {
        if ($len($2) > 3) && ($2 isin weapons) {         
          var %n = 1,%names
          while ($ini(weapons.ini,%n)) {
            var %price = $chr(36) $+ $bytes($w.price($v1),db)
            var %names = %names $+($v1,( $+ %price $+ ))
            if ($numtok(%names,32) >= 25) || (%n = $ini(weapons.ini,0)) { if (%names) _msg $nick (Store) Weapons: $v1 | var %names } 
            inc %n
          }
        }
      }
      elseif (%1 == buy) {
        if ($ini(weapons.ini,$2)) {
          if ($u.mon($nick) >= $w.price($2)) {
            if ($w.type($2) == gun) var %list = $u.guns($nick)
            elseif ($w.type($2) == melee) var %list = $u.mel($nick)
            if (!$istok(%list,$2,44)) {
              hadd $nick money $calc($u.mon($nick) - $w.price($2))
              add_weapon $nick $2
              _msg $nick (Store) You just bought a $2 $+ !
            } 
            else _msg $nick (Store) You already have a $2 $+ !
          }
          else _msg $nick (Store) You're $chr(36) $+ $calc($w.price($2) - $u.mon($nick)) short of a $2       
        }
      }
      elseif (%1 == toss) {
        if ($istok($u.guns($nick),$2,44)) _msg $nick $del_weapon($nick,$2)
        else _msg $nick You do not have a $2
      }
    }
  }
}

alias w.price return $readini(weapons.ini,$1,price)
alias w.rate return $readini(weapons.ini,$1,rate)
alias w.clip return $readini(weapons.ini,$1,clip)
alias w.fclip return $readini(weapons.ini,$1,fullclip)
alias w.dmg return $readini(weapons.ini,$1,damage)
alias w.type return $readini(weapons.ini,$1,type)

; User weapon stats 
alias uw.price return $hget($1,$+($2,.price))
alias uw.rate return $hget($1,$+($2,.rate))
alias uw.clip return $hget($1,$+($2,.clip))
alias uw.fclip return $hget($1,$+($2,.fullclip))
alias uw.dmg return $hget($1,$+($2,.damage))
; End of

alias add_weapon {
  if ($hget($1)) {
    if ($ini(weapons.ini,$2)) {
      if (!$hfind($1,$+($2,.*),0,w)) {
        var %c = hadd $1 $+($2,.)
        var %n = 1
        while ($ini(weapons.ini,$2,%n)) {
          %c $+ $v1 $readini(weapons.ini,$2,$v1)
          inc %n
        }
        if ($w.type($2) == gun) var %list = $u.guns($1),%item = guns
        elseif ($w.type($2) == melee) var %list = $u.mel($1),%item = melee
        hadd $1 %item $addtok(%list,$2,44)
        return Successfully added $2
      }
      else return You already have a $2
    }
    else return Invalid item
  }
  else return $1 is not registered
}
alias del_weapon {
  if ($w.type($2) == Gun) var %list = $u.guns($1),%item = guns
  elseif ($w.type($2) == Melee) var %list = $u.mel($1),%item = Melee
  if ($istok(%list,$2,44)) {
    hdel -w $1 $+($2,.*)
    hadd $1 %item $remtok(%list,$2,1,44)
    return Successfully deleted $2
  }
  else return No such weapon $qt($2)
}
alias _shoot {
  if ($u.cgun($1) == $3) {
    if ($uw.clip($1,$3) > 0) {
      var %rate = $uw.rate($1,$3),%dmg = $uw.dmg($1,$3),%n = 1,%shots = $r(1,%rate),%hits,%rand
      if ($uw.clip($1,$3) < %shots) var %shots = $uw.clip($1,$3)
      while (%n <= %shots) { if ($r(1,4) != 4) inc %hits | inc %rand $r(5,20) | inc %n }
      hdec $1 $+($3,.clip) %shots
      var %dmg = $calc(%dmg * %hits + %rand)
      if (%hits > 0) {
        var %damage = $calc($u.hp($2) - %dmg)
        if (%damage < 0) var %damage = 0
        hadd $2 hp %damage
        var %msg = $_nick($1) fires their $3 at $_nick($2) hitting $+(%hits,/,%shots) shot(s), doing %dmg damage!
        var %dcheck = $_dcheck($1,$2),%atk.exp = $gettok(%dcheck,1,32),%atk.money = $gettok(%dcheck,2,32)
        var %exp = $calc($ceil($u.level($2) *.25) + %dmg)
        if (%atk.exp) && (%atk.money) {
          hadd $1 exp $calc($u.exp($1) + %atk.exp)
          hadd $1 money $calc($u.mon($1) + %atk.money)
          var %extmsg = $_nick($1) 04kills $_nick($2) $+ ! $_nick($1) gains $calc(%exp + %atk.exp) $& 
            experience and $+($chr(36),!,%atk.money) $+ !
        }
      }
      else var %msg = ? $_nick($1) fires at $_nick($2) with their $3 and misses %shots shot(s)....
      _amsg %msg %extmsg
      .signal 107 $1 $2 $3
    }
    else _msg $1 Your $3 is out of Ammo
  }
  else _msg $1 Your current gun is $+(,$u.cgun($1),) $+ !
}
alias _dcheck {
  if ($u.hp($2) <= 0) {
    ; attacker shit
    var %atk.exp = $ceil($calc(($u.level($2) * $r(50,100)) /2))
    var %atk.money = $ceil($calc(($u.level($2) * $r(75,150)) /.5))
    hadd $2 hp $u.fhp($2)
    hinc $1 kills
    hinc $2 deaths
    ;
    var %team = $iif($istok($tb.team1,$2,44),team1,team2)
    var %tb.team = $($+($chr(36),tb.,%team),2)
    hadd battle %team $remtok(%tb.team,$2,1,44)
    if (!$($+($chr(36),tb.,%team),2)) {
      .timer 1 1 tb.end Winner(s): $iif(%team == team1,$tb.team2,$tb.team1)
    }
    ;
    .signal 106 $1 $2
    return %atk.exp %atk.money
  }
}
