////////////////////////////////////////
// WCS - Warcraft:Source              //
// ---------------------------------- //
//  by kRypT0n!Te                     //
//      http://wc3source.de           //
// ---------------------------------- //
// Content of this subscript          //
// - playerinfo                       //
// - showskills                       //
// - spendskills                      //
// - resetskills                      //
////////////////////////////////////////
// say commands:
// playerinfo, showskills
// spendskills, resetskills
//
// admin commands:
// wcs_spendskills <userid>
// wcs_showplayerinfo <userid>
// wcs_showskills <userid>
// wcs_resetskills <userid>
//
////////////////////////////////////////

block load
{
  es_xexists ex command playerinfo
  if (server_var(ex) = 0) then es_xregsaycmd playerinfo wcs/WCSusers/wcs_showplayerinfo "Shows detail info about the players"
  es_xexists ex command resetskills
  if (server_var(ex) = 0) then es_xregsaycmd resetskills wcs/WCSusers/wcs_resetskills "Reset your skills"
  es_xexists ex command showskills
  if (server_var(ex) = 0) then es_xregsaycmd showskills wcs/WCSusers/wcs_showskills "Shows your skills levels"
  es_xexists ex command spendskills
  if (server_var(ex) = 0) then es_xregsaycmd spendskills wcs/WCSusers/wcs_spendskills "Lets you spend skill points"
  es_xexists ex command wcs_showskills
  if (server_var(ex) = 0) then es_xregcmd wcs_showskills wcs/WCSusers/wcs_showskills "Shows your skills levels"
  es_xexists ex command wcs_spendskills
  if (server_var(ex) = 0) then es_xregcmd wcs_spendskills wcs/WCSusers/wcs_spendskills "wcs_spendskills - usage: wcs_spendskills <userid>"
  es_xexists ex command wcs_resetskills
  if (server_var(ex) = 0) then es_xregcmd wcs_resetskills wcs/WCSusers/wcs_resetskills "Reset your skills"
  es_xexists ex command wcs_showplayerinfo
  if (server_var(ex) = 0) then es_xregcmd wcs_showplayerinfo wcs/WCSusers/wcs_showplayerinfo "Shows detail info about players"
  es_xexists ex command showcredits
  if (server_var(ex) = 0) then es_xregsaycmd showcredits wcs/WCSusers/wcs_showcredits "Shows your credits (DOD:S only)"
  // load the users (create if load fails)
  es_xkeygroupcreate "WCSusers"
  echo "[WCS] trying to load the .txt userdatabase..."
  if (server_var(wcs_turbomode) != "1") then es_xkeygroupload "WCSusers" "|wcs/WCSusers"
  if (server_var(wcs_turbomode) = "1") do
  {
    es_xset wcs_showtotalplayers 0
    es_xset wcs_enabletop10 0
  }
  if (server_var(wcs_showtotalplayers) = "1") do
  {
    es_xset wcs_totalplayers 0
    es_xforeachkey wcs_key in "WCSusers" "es_xmath wcs_totalplayers + 1"
    es echo "[WCS] total players : " server_var(wcs_totalplayers)
  }
  es_xkeygroupcreate "WCSuserdata"
}

block unload
{
  if (server_var(wcs_turbomode) != "1") then es_xif (server_var(wcs_cfg_enabletxtfile) = "1") then es_xkeygroupsave "WCSusers" "|wcs/WCSusers"
  es_xkeygroupdelete "WCSusers"
  es_xkeygroupdelete "WCSuserdata"
}


event player_disconnect
{
  // and save the latest record
  es_exists ex key "WCSuserdata" event_var(userid)
  if (server_var(ex) = "1") do
  {
    es wcs_saveplayer event_var(userid) 1
    if (server_var(wcs_cfg_enablesql) = "1") then wcs_sql_setplayer event_var(userid) 1
    // remove userdata key
    echo REMOVING WCSUSERDATA NOW!
    es_keydelete "WCSuserdata" event_var(userid)
  }
}


// >>>>>>>>>>>>>>>>> PLAYERINFO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
block wcs_showplayerinfo
{
wcs_debuglog wcs_showplayerinfo start
  // first, is it a custom command ?
  es_xset wcs_userid 0
  es_xgetargv wcs_userid 1
  es_exists ex userid server_var(wcs_userid)
  if (server_var(ex) = 0) do
  {
    // or a say command
    es_xgetcmduserid wcs_userid
    es_exists ex userid server_var(wcs_userid)
    es wcs_menuzero server_var(wcs_userid)
    //es_xdoblock wcs/WCSusers/wcs_playerinfo
  }
  if (server_var(ex) = "1") do
  {
    es_keysetvalue "WCSuserdata" server_var(wcs_userid) "menu" "playerinfo"
    es_keygetvalue wcs_page "WCSuserdata" server_var(wcs_userid) "page"
    es_xmath wcs_page + 1
    es_keysetvalue "WCSuserdata" server_var(wcs_userid) page server_var(wcs_page)
    //es_keygetvalue wcs_infotext "WCSinfo" "playerinfo" server_var(wcs_page)
    es_xset wcs_upper 7
    es_xset wcs_lower 0
    es_math wcs_upper * server_var(wcs_page)
    es_xcopy wcs_lower wcs_upper
    es_xmath wcs_lower - 7
    es_xset wcs_counter 1
    es_xset wcs_playercount 0
    es_format wcs_text "%1 %2\n " server_var(wcs_lng_page) server_var(wcs_page)
    es_foreachkey wcs_key in WCSuserdata "if(server_var(wcs_counter) > server_var(wcs_lower)) then es_xif (server_var(wcs_counter) <= server_var(wcs_upper)) then es_xdoblock wcs/WCSusers/wcs_playerinfo;es_xmath wcs_counter + 1"
    es_format wcs_text "%1\n \n" server_var(wcs_text)
    if (server_var(wcs_page) > 1) then es_xformat wcs_text "%1\n->8. %2" server_var(wcs_text) server_var(wcs_lng_back)
    if (server_var(wcs_counter) > server_var(wcs_upper)) then es_xformat wcs_text "%1\n->9. %2" server_var(wcs_text) server_var(wcs_lng_next)
    es_format wcs_text "%1\n->0. %2" server_var(wcs_text) server_var(wcs_lng_exit)
    es_strlen wcs_strlen server_var(wcs_text)
    if (server_var(wcs_strlen) > 1) then es_xmenu 0 server_var(wcs_userid) server_var(wcs_text)
  }
wcs_debuglog wcs_showplayerinfo end
}

block wcs_playerinfo
{
  // server_var(wcs_key) = userid !
  es_exists ex userid server_var(wcs_key)
  if (server_var(ex) = "1") do
  {
    es_xmath wcs_playercount + 1
    es_getplayername wcs_name server_var(wcs_key)
    es_format wcs_text "%1\n->%2. %3 " server_var(wcs_text) server_var(wcs_playercount) server_var(wcs_name)
  }
}

block wcs_playerinfo_details
{
wcs_debuglog wcs_playerinfo_details start
  // server_var(wcs_key) !!
  es_exists ex userid server_var(wcs_key)
  if (server_var(ex) = 1) do
  {
    es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_key) "race"
    es_keygetvalue wcs_level "WCSuserdata" server_var(wcs_key) "level"
    es_getplayername wcs_name server_var(wcs_key)
    es_keygetvalue wcs_racename "WCSraces" server_var(wcs_race) "name"
    es_keygetvalue wcs_total_level WCSuserdata server_var(wcs_key) total_level
    es_keygetvalue wcs_numberofskills "WCSraces" server_var(wcs_race) "numberofskills"
    wcs_getlanguage "wcs_lng" "wcs_lng_level"
    wcs_getlanguage "wcs_lng2" "wcs_lng_total"
    es_format wcs_text "\n->1. %1\n -----------------------\n o %2 %3 %4 \n -----------------------\n o %5 : %6 %7" server_var(wcs_name) server_var(wcs_lng2) server_var(wcs_lng) server_var(wcs_total_level) server_var(wcs_racename) server_var(wcs_lng) server_var(wcs_level)
    // get skills
    es_keygetvalue wcs_skillname "WCSraces" server_var(wcs_race) "skillnames"
    es_xset wcs_counter 1
    es_xset wcs_tmp "%1\n  - %2 : %3"
     if (server_var(wcs_numberofskills) > 0) then while "server_var(wcs_counter) <= server_var(wcs_numberofskills)" "es_format wcs_skill skill_%1 server_var(wcs_counter);es_keygetvalue wcs_skilllevel WCSuserdata server_var(wcs_key) server_var(wcs_skill);es_token wcs_name server_var(wcs_skillname) server_var(wcs_counter) |;es_format wcs_text server_var(wcs_tmp) server_var(wcs_text) server_var(wcs_name) server_var(wcs_skilllevel);es_xmath wcs_counter + 1"
     es_format wcs_text "%1\n -----------------------\n" server_var(wcs_text)
     // get credits
     es_keygetvalue wcs_tmp1 WCSuserdata server_var(wcs_key) "credits"
     wcs_getlanguage "wcs_lng" "wcs_lng_credits"
     if (server_var(wcs_tmp1) != "0") then es_xformat wcs_text "%1 o %2 : $ %3\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_tmp1)
     // get skulls
     es_keygetvalue wcs_tmp1 WCSuserdata server_var(wcs_key) "skulls"
     wcs_getlanguage "wcs_lng" "wcs_lng_skulls"
     if (server_var(wcs_tmp1) != "0") then es_xformat wcs_text "%1 o %2 : %3\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_tmp1)
     // get speed
     es_keygetvalue wcs_tmp1 WCSuserdata server_var(wcs_key) "speed"
     wcs_getlanguage "wcs_lng" "wcs_lng_speed"
     if (server_var(wcs_tmp1) != "0") then es_xif (server_var(wcs_tmp1) != 1) then es_xmath wcs_tmp1 * 100
     if (server_var(wcs_tmp1) != "0") then est_RoundDecimal wcs_tmp1 server_var(wcs_tmp1) 0
     if (server_var(wcs_tmp1) != "0") then es_xif (server_var(wcs_tmp1) != 1) then es_xformat wcs_text "%1 o %2 : %3 %\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_tmp1)
     // get gravity
     es_keygetvalue wcs_tmp1 WCSuserdata server_var(wcs_key) "gravity"
     wcs_getlanguage "wcs_lng" "wcs_lng_gravity"
     if (server_var(wcs_tmp1) != "0") then es_xmath wcs_tmp1 * 100
     if (server_var(wcs_tmp1) != "0") then est_RoundDecimal wcs_tmp1 server_var(wcs_tmp1) 0
     if (server_var(wcs_tmp1) != "0") then es_xformat wcs_text "%1 o %2 : %3 %\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_tmp1)
     // get invisibility
     es_keygetvalue wcs_tmp1 WCSuserdata server_var(wcs_key) "invisp"
     wcs_getlanguage "wcs_lng" "wcs_lng_invisibility"
     if (server_var(wcs_tmp1) != "0") then est_RoundDecimal wcs_tmp1 server_var(wcs_tmp1) 0
     if (server_var(wcs_tmp1) != "0") then es_xformat wcs_text "%1 o %2 : %3 %\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_tmp1)
    // get health
    es_getplayerprop wcs_dead server_var(wcs_key) "CCSPlayer.baseclass.pl.deadflag"
     if (server_var(wcs_dead) = "0") do
     {
       es est_GetHealth wcs_tmp1 server_var(wcs_key)
       wcs_getlanguage "wcs_lng" "wcs_lng_health"
       if (server_var(wcs_tmp1) != "100") then es_xformat wcs_text "%1 o %2 : %3 %\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_tmp1)
     }
    es_format wcs_text "%1\n \n->8. %2" server_var(wcs_text) server_var(wcs_lng_back)
    es_menu 0 event_var(userid) server_var(wcs_text)
    es_xmath wcs_page + 1
    es_keysetvalue "WCSuserdata" event_var(userid) "page" server_var(wcs_page)
  }
wcs_debuglog wcs_playerinfo_details end
}
// <<<<<<<<<<<<<<<<< END PLAYERINFO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


// >>>>>>>>>>>>>>>>> SHOW/SPEND/RESET SKILLS BLOCKS >>>>>>>>>>>>>>>>>>>>>>>>>>>>
block wcs_showskills
{
wcs_debuglog wcs_showskills start
  // first, is it a custom command ?
  es_xset wcs_userid 0
  es_xgetargv wcs_userid 1
  es_exists ex userid server_var(wcs_userid)
  if (server_var(ex) = 0) do
  {
    // or a say command
    es_xgetcmduserid wcs_userid
    es_exists ex userid server_var(wcs_userid)
  }
  // clean up
  es wcs_menuzero server_var(wcs_userid)
  if (server_var(ex) = 1) do
  {
    es_exists ex key "WCSuserdata" server_var(wcs_userid)
    if (server_var(ex) = 1) do
    {
      es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
      es_keygetvalue wcs_racename "WCSraces" server_var(wcs_race) "name"
      es_keygetvalue wcs_numberofskills "WCSraces" server_var(wcs_race) "numberofskills"
      es_keygetvalue wcs_unused "WCSuserdata" server_var(wcs_userid) "unused"
      wcs_getlanguage "wcs_lng" "wcs_lng_your"
      wcs_getlanguage "wcs_lng2" "wcs_lng_skills"
      es_format wcs_text "%1 %2 %3:" server_var(wcs_lng) server_var(wcs_racename) server_var(wcs_lng2)
      es_xset wcs_counter 1
      if (server_var(wcs_numberofskills) > 0) then while "server_var(wcs_counter) <= server_var(wcs_numberofskills)" "es_format wcs_val skill_%1 server_var(wcs_counter);es_xdoblock wcs/WCSusers/wcs_showskills_init;es_xmath wcs_counter + 1"
      wcs_getlanguage "wcs_lng" "wcs_lng_unusedpoints"
      es_format wcs_text "%1\n \n %2 : %3\n" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_unused)
      es_strlen wcs_strlen server_var(wcs_text)
      if (server_var(wcs_strlen) > 1) then es_xmenu 0 server_var(wcs_userid) server_var(wcs_text)
    }
  }
wcs_debuglog wcs_showskills end
}

block wcs_showskills_init
{
  // get the name, level
  es_keygetvalue wcs_skillname "WCSraces" server_var(wcs_race) "skillnames"
  es_token wcs_skillname server_var(wcs_skillname) server_var(wcs_counter) "|"
  es_keygetvalue wcs_skilllevel "WCSuserdata" server_var(wcs_userid) server_var(wcs_val)
  // get details
  if (server_var(wcs_showskills_details) = "1") do
  {
    es_keygetvalue wcs_skilldescr "WCSraces" server_var(wcs_race) "skilldescr"
    es_token wcs_skilldescr server_var(wcs_skilldescr) server_var(wcsc_counter) "|"
    es_format wcs_text "%1\n->%2. %3 : %4 (%5)" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_skillname) server_var(wcs_skilllevel) server_var(wcs_skilldescr)
  }
  es_xelse do
  {
    es_format wcs_text "%1\n->%2. %3 : %4" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_skillname) server_var(wcs_skilllevel)
  }
}

block wcs_spendskills
{
wcs_debuglog wcs_spendskills start
  // first, is it a custom command ?
  es_xgetargv wcs_userid 1
  es wcs_menuzero server_var(wcs_userid)
  es_exists ex userid server_var(wcs_userid)
  if (server_var(ex) = 0) do
  {
    // or a say command
    es_xgetcmduserid wcs_userid
    es_exists ex userid server_var(wcs_userid)
  }
  if (server_var(ex) = 1) do
  {
    es_keygetvalue wcs_id "WCSuserdata" server_var(wcs_userid) "id"
    es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
    es_keygetvalue wcs_racename "WCSraces" server_var(wcs_race) "name"
    es_keygetvalue wcs_unused "WCSuserdata" server_var(wcs_userid) "unused"
    es_keygetvalue wcs_level "WCSuserdata" server_var(wcs_userid) "level"
    es_keygetvalue wcs_numberoflevels "WCSraces" server_var(wcs_race) "numberoflevels"
    es_keygetvalue wcs_numberofskills "WCSraces" server_var(wcs_race) "numberofskills"
    es_set wcs_maxlevel server_var(wcs_numberoflevels)
    es_math wcs_maxlevel * server_var(wcs_numberofskills)
    es_set wcs_leveldiff server_var(wcs_level)
    es_math wcs_leveldiff - server_var(wcs_unused)
    // Bot support
    if ("BOT" in server_var(wcs_id)) do
    {
      if (server_var(wcs_maxlevel) > server_var(wcs_leveldiff)) do
      {
        // spend skillpoints on a random skill (ignore required level !)
        es_xset wcs_counter 1
        if (server_var(wcs_numberofskills) > 0) then while "server_var(wcs_counter) < server_var(wcs_maxlevel)" "es_xdoblock wcs/WCSusers/wcs_spendskills_bot;es_xmath wcs_counter + 1"
        es_keysetvalue WCSuserdata server_var(wcs_userid) unused server_var(wcs_unused)
      }
      es_xset ex 0
    }
    // for human spendskills
    if (server_var(ex) = 1) do
    {
      if (server_var(wcs_maxlevel) > server_var(wcs_leveldiff)) do
      {
        wcs_getlanguage "wcs_lng" "wcs_lng_spendskills_1"
        wcs_getlanguage "wcs_lng2" "wcs_lng_skills"
        es_format wcs_text "%1 %2 %3:" server_var(wcs_lng) server_var(wcs_racename) server_var(wcs_lng2)
        es_xset wcs_counter 1
        if (server_var(wcs_numberofskills) > 0) then while "server_var(wcs_counter) <= server_var(wcs_numberofskills)" "es_format wcs_val skill_%1 server_var(wcs_counter);es_xdoblock wcs/WCSusers/wcs_spendskills_init;es_xmath wcs_counter + 1"
        wcs_getlanguage "wcs_lng" "wcs_lng_unusedpoints"
        es_format wcs_text "%1\n \n %2 : %3\n \n 0. %4" server_var(wcs_text) server_var(wcs_lng) server_var(wcs_unused) server_var(wcs_lng_exit)
        es_strlen wcs_strlen server_var(wcs_text)
        if (server_var(wcs_strlen) > 1) then es_xmenu 0 server_var(wcs_userid) server_var(wcs_text)
        es_keysetvalue "WCSuserdata" server_var(wcs_userid) "menu" "level"
      }
      es_xelse do
      {
        wcs_getlanguage "wcs_lng" "wcs_lng_maxlvlreached"
        es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
      }
    }
  }
wcs_debuglog wcs_spendskills end
}

block wcs_spendskills_bot
{
  es_rand wcs_skill 1 server_var(wcs_numberofskills)
  if (server_var(wcs_level) < server_var(wcs_ultimatelevel)) then es_xif (server_var(wcs_skill) = server_var(wcs_numberofskills)) then es_xset wcs_skill "1"
  es_format wcs_val "skill_%1" server_var(wcs_skill)
  es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_userid) server_var(wcs_val)
  es_xcopy wcs_tmp1 wcs_tmp
  if (server_var(wcs_tmp1) < server_var(wcs_numberoflevels)) then es_xif (server_var(wcs_unused) >= 1) then es_xmath wcs_tmp + 1
  if (server_var(wcs_tmp1) < server_var(wcs_numberoflevels)) then es_xif (server_var(wcs_unused) >= 1) then es_xmath wcs_unused - 1
  es_keysetvalue WCSuserdata server_var(wcs_userid) server_var(wcs_val) server_var(wcs_tmp)
  if (server_var(wcs_unused) <= 0) then es_xset wcs_counter server_var(wcs_maxlevel)
}

block wcs_spendskills_init
{
wcs_debuglog wcs_spendskills_init start
  if (server_var(wcs_val) != "0") do
  {
    // get the name
    es_keygetvalue wcs_skillname "WCSraces" server_var(wcs_race) "skillnames"
    es_token wcs_skillname server_var(wcs_skillname) server_var(wcs_counter) "|"
    // get the level
    es_keygetvalue wcs_skilllevel "WCSuserdata" server_var(wcs_userid) server_var(wcs_val)
    if (server_var(wcs_skilllevel) < server_var(wcs_numberoflevels)) do
    {
      // check if its not an ultimate
      if (server_var(wcs_counter) != server_var(wcs_numberofskills)) do
      {
        es_set wcs_skilllevel2 server_var(wcs_skilllevel)
        es_xmath wcs_skilllevel2 + 1
        es_format wcs_text "%1\n->%2. %3 : %4 > %5" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_skillname) server_var(wcs_skilllevel) server_var(wcs_skilllevel2)
      }
      es_xelse do
      {
        // ultimate (level check)
        if (server_var(wcs_level) >= server_var(wcs_ultimatelevel)) do
        {
          // level ultimate
          es_set wcs_skilllevel2 server_var(wcs_skilllevel)
          es_xmath wcs_skilllevel2 + 1
          es_format wcs_text "%1\n->%2. %3 (ultimate) : %4 > %5" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_skillname) server_var(wcs_skilllevel) server_var(wcs_skilllevel2)
        }
        es_xelse do
        {
          es_format wcs_text "%1\n%2. %3 (ultimate) : %4" server_var(wcs_text) server_var(wcs_counter) server_var(wcs_skillname) server_var(wcs_skilllevel)
        }
      }
    }
  }
wcs_debuglog wcs_spendskills_init end
}

block wcs_spendskills_handle
{
wcs_debuglog wcs_spendskills_handle begin
  es_exists ex key "WCSuserdata" event_var(userid)
  if (server_var(ex) = 1) do
  {
    // get skill details
    es_keygetvalue wcs_race "WCSuserdata" event_var(userid) "race"
    es_keygetvalue wcs_unused "WCSuserdata" event_var(userid) "unused"
    es_keygetvalue wcs_level "WCSuserdata" event_var(userid) "level"
    es_keygetvalue wcs_numberoflevels "WCSraces" server_var(wcs_race) "numberoflevels"
    es_keygetvalue wcs_numberofskills "WCSraces" server_var(wcs_race) "numberofskills"
    if (event_var(commandstring) != "10") do
    {
      // user must have free skill points
      if (server_var(wcs_unused) > 0) do
      {
        // check number of skills and levels
        if (event_var(commandstring) <= server_var(wcs_numberofskills)) do
        {
          es_format wcs_skill "skill_%1" event_var(commandstring)
          es_keygetvalue wcs_skilllevel "WCSuserdata" event_var(userid) server_var(wcs_skill)
          if (server_var(wcs_skilllevel) < server_var(wcs_numberoflevels)) do
          {
            es_xset wcs_tmp2 0
            if (event_var(commandstring) != server_var(wcs_numberofskills)) do
            {
              // do the spendskills
              es_xset wcs_tmp2 1
            }
            es_xelse do
            {
              // ultimate - check level
              if (server_var(wcs_level) >= server_var(wcs_ultimatelevel)) do
              {
                // do the spendskills
                es_xset wcs_tmp2 1
              }
              es_xelse do
              {
                wcs_getlanguage "wcs_lng" "wcs_lng_lowlevel"
                es_format wcs_text server_var(wcs_lng) server_var(wcs_ultimatelevel)
                es_tell event_var(userid) #multi server_var(wcs_text)
                es_keysetvalue "WCSuserdata" event_var(userid) "menu" "0"
              }
            }
            if (server_var(wcs_tmp2) = 1) do
            {
              // no ultimate
              es_xmath wcs_skilllevel + 1
              es_xmath wcs_unused - 1
              // store values
              es_keysetvalue WCSuserdata event_var(userid) server_var(wcs_skill) server_var(wcs_skilllevel)
              es_keysetvalue WCSuserdata event_var(userid) "unused" server_var(wcs_unused)
              es_keygetvalue wcs_skillname "WCSraces" server_var(wcs_race) "skillnames"
              es_token wcs_skillname server_var(wcs_skillname) event_var(commandstring) "|"
              wcs_getlanguage "wcs_lng" "wcs_lng_yourskill"
              wcs_getlanguage "wcs_lng2" "wcs_lng_nowonlevel"
              es_format wcs_text "#lightgreen%1 #green'%2' #lightgreen%3 #green%4." server_var(wcs_lng) server_var(wcs_skillname) server_var(wcs_lng2) server_var(wcs_skilllevel)
              wcs_getlanguage "wcs_lng" "wcs_lng_yournewskill"
              wcs_getlanguage "wcs_lng3" "wcs_lng_spendskillshint"
              if (server_var(wcs_skilllevel) = 1) then es_xformat wcs_text "#lightgreen%1 #green'%2' #lightgreen%3 #green%4#lightgreen, %5." server_var(wcs_lng) server_var(wcs_skillname) server_var(wcs_lng2) server_var(wcs_skilllevel) server_var(wcs_lng3)
              es_tell event_var(userid) #multi server_var(wcs_text)
            }
            // refresh the skills
            es_keysetvalue "WCSuserdata" event_var(userid) "skillcheck" "1"
          }
        }
      }
      es_xelse do
      {
        wcs_getlanguage "wcs_lng" "wcs_lng_nofreepoints"
        es_tell event_var(userid) #multi server_var(wcs_lng)
        es_keysetvalue "WCSuserdata" event_var(userid) menu "0"
      }
      // user should spend more skills
      if (server_var(wcs_unused) >= 1) then wcs_spendskills event_var(userid)
    }
  }
wcs_debuglog wcs_spendskills_handle end
}

block wcs_resetskills
{
wcs_debuglog wcs_resetskills start
  // first, is it a custom command ?
  es_xset wcs_userid 0
  es_xgetargv wcs_userid 1
  es_xgetargv wcs_forced 2
  es_exists ex userid server_var(wcs_userid)
  ifx false(ex) do
  {
    // or a say command
    es_xgetcmduserid wcs_userid
    es_exists ex userid server_var(wcs_userid)
  }
  // check if its valid
  ifx true(ex) do
  {
    es_xset wcs_dead 1
    es_getplayerprop wcs_dead server_var(wcs_userid) "CCSPlayer.baseclass.pl.deadflag"
    // when forcing, ignore dead status
    if (server_var(wcs_forced) = 1) then es_xset wcs_dead 1
    // if player is alive
    ifx false(wcs_dead) do
    {
    	ifx true(wcs_cfg_resetskillsnextround) do
    	{
    		wcs_getlanguage wcs_lng wcs_lng_resetnextround
    		es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
    		es_keysetvalue WCSuserdata server_var(wcs_userid) forceresetskills 1
    	}
    	es_xelse do
    	{
      	es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_userid) resetskills
      	ifx true(wcs_tmp) do
      	{
        	es est_slay server_var(wcs_userid)
        	es_xset wcs_dead "1"
	        es_keysetvalue WCSuserdata server_var(wcs_userid) resetskills 0
      	}
      	ifx true(wcs_dead) do
      	{
      		wcs_getlanguage "wcs_lng" "wcs_lng_cannotreset"
      		es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
      		es_keysetvalue WCSuserdata server_var(wcs_userid) resetskills 1
      	}
    	}
    }
    // player is dead (or forced), so reset skills
    ifx true(wcs_dead) do
    {
      // get user race
      es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
      // reset any skill to 0
      es_foreachval wcs_val in "WCSuserdata" server_var(wcs_userid) "if (skill_ in server_var(wcs_val)) then es_xkeysetvalue WCSuserdata server_var(wcs_userid) server_var(wcs_val) 0"
      // all skills are unused now
      es_keygetvalue wcs_level "WCSuserdata" server_var(wcs_userid) "level"
      es_keysetvalue WCSuserdata server_var(wcs_userid) "unused" server_var(wcs_level)
      wcs_getlanguage "wcs_lng" "wcs_lng_skillsreseted"
      es_format wcs_text server_var(wcs_lng) server_var(wcs_level)
      es_tell server_var(wcs_userid) #multi server_var(wcs_text)
      es wcs_saveplayer server_var(wcs_userid)
      // refresh skills
      es_keysetvalue WCSuserdata server_var(wcs_userid) "skillcheck" "1"
      // check if penalty is set
      if(server_var(wcs_cfg_resetskillspenalty) > 0) do
      {
        es_xcopy wcs_tmp wcs_level
        es_math wcs_tmp * server_var(wcs_levelxp)
        es_math wcs_tmp * server_var(wcs_cfg_resetskillspenalty)
        es_xmath wcs_tmp / 100
        es est_RoundDecimal wcs_tmp server_var(wcs_tmp) 0
        if (server_var(wcs_tmp) > 0) do
        {
          wcs_getlanguage "wcs_lng" "wcs_lng_resetskillspenalty"
          es_format wcs_lng server_var(wcs_lng) server_var(wcs_cfg_resetskillspenalty)
          es_xmath wcs_tmp * -1
          es wcs_givexp server_var(wcs_userid) server_var(wcs_tmp) server_var(wcs_lng)
        }
      }
    }
  }
wcs_debuglog wcs_resetskills end
}
// <<<<<<<<<<<<<<<<< END SHOW/SPEND/RESET SKILLS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

block wcs_showcredits
{
  if (server_var(wcs_game) != server_var(wcs_game_css)) do
  {
    // first, is it a custom command ?
    es_xgetargv wcs_userid 1
    es_exists ex userid server_var(wcs_userid)
    ifx false(ex) do
    {
      // or a say command
      es_xgetcmduserid wcs_userid
      es_exists ex userid server_var(wcs_userid)
    }
    // check if its valid
    ifx true(ex) do
    {
      es_exists ex key "WCSuserdata" server_var(wcs_userid)
      ifx true(ex) do
      {
        es_xset wcs_credits 0
        es_keygetvalue wcs_credits WCSuserdata server_var(wcs_userid) credits
        wcs_getlanguage wcs_lng wcs_lng_youhave
        wcs_getlanguage wcs_lng2 wcs_lng_credits
        es_xformatv wcs_text "#lightgreen%1 #green%2 %3." wcs_lng wcs_credits wcs_lng2
        es_tell server_var(wcs_userid) #multi server_var(wcs_text)
      }
    }
  }
}
