block load
{
  es_xset mb_menuload 1
  es_xdoblock mb_matrix/library/menu/createpopups
}
block createpopups
{
  //**********************
  // ** Character Menus **
  //**********************
  popup create rebelmenu
  popup addline rebelmenu "Rebels:"
  popup addline rebelmenu "->1. Morpheus"
  popup addline rebelmenu "->2. Trinity"
  popup addline rebelmenu "->3. Neo"
  popup addline rebelmenu "->4. Seraph"
  popup addline rebelmenu "->5. Niobe"
  popup addline rebelmenu "->6. Ghost"
  popup addline rebelmenu "0. Exit"
  popup menuselect rebelmenu mb_matrix/library/menu/rebelmenu
  popup select rebelmenu 10 mb_matrix/library/menu/exitmenus

  popup create machinemenu
  popup addline machinemenu "Machines:"
  popup addline machinemenu "->1. Smith"
  popup addline machinemenu "->2. Agent"
  popup addline machinemenu "->3. Twin"
  popup addline machinemenu "->4. Merovingian"
  popup addline machinemenu "->5. Swat"
  popup addline machinemenu "0. Cancel"
  popup menuselect machinemenu mb_matrix/library/menu/machinemenu
  popup select machinemenu 10 mb_matrix/library/menu/exitmenus

  //****************
  // ** Main Menu **
  //****************
  popup create mainmenu
  popup addline mainmenu "->1. Increase Character Stats"
  popup addline mainmenu "->2. Character Sheet"
  popup addline mainmenu "->3. Purchase Items"
  popup addline mainmenu "->4. Change Current Class"
  popup addline mainmenu "->5. Get Mod Help"
  popup addline mainmenu "0. Exit"
  popup menuselect mainmenu mb_matrix/library/menu/mainmenu
  popup select mainmenu 10 mb_matrix/library/menu/exitmenus
  popup submenu mainmenu 1 statsmenu
  popup submenu mainmenu 2 infomenu
  popup submenu mainmenu 3 operatormenu
  popup submenu mainmenu 5 helpmenu
  popup submenu mainmenu 6 mainmenu
  popup submenu mainmenu 7 mainmenu
  popup submenu mainmenu 8 mainmenu
  popup submenu mainmenu 9 mainmenu

  //*******************
  // ** Status Menus **
  //*******************
  popup create statsmenu
  popup prepuser statsmenu mb_matrix/library/menu/dynamicstats
  popup addline statsmenu "Character Name"
  popup addline statsmenu "Health Line"
  popup addline statsmenu "Speed Line"
  popup addline statsmenu "Defense Line"
  popup addline statsmenu "Damage Line"
  popup addline statsmenu "---------------------"
  popup addline statsmenu "Choose a stat to increase"
  popup addline statsmenu "Stat Points"
  popup addline statsmenu "->8. Back"
  popup menuselect statsmenu mb_matrix/library/menu/statsmenu
  popup select statsmenu 10 mb_matrix/library/menu/exitmenus
  popup submenu statsmenu 1 statsmenu
  popup submenu statsmenu 2 statsmenu
  popup submenu statsmenu 3 statsmenu
  popup submenu statsmenu 4 statsmenu
  popup submenu statsmenu 5 statsmenu
  popup submenu statsmenu 6 statsmenu
  popup submenu statsmenu 7 statsmenu
  popup submenu statsmenu 8 mainmenu
  popup submenu statsmenu 9 statsmenu

  //****************
  // ** Info Menu **
  //****************
  popup create infomenu
  popup prepuser infomenu mb_matrix/library/menu/infomenu
  popup addline infomenu "Character Sheet"
  popup addline infomenu "Character Stats"
  popup addline infomenu "Health Line"
  popup addline infomenu "Speed Line"
  popup addline infomenu "Defense Line"
  popup addline infomenu "Damage Line"
  popup addline infomenu "---------------------"
  popup addline infomenu "Abilities"
  popup addline infomenu "Hyper Jump"
  popup addline infomenu "Dodge Rate"
  popup addline infomenu "Ability Level"
  popup addline infomenu "---------------------"
  popup addline infomenu "Misc"
  popup addline infomenu "Focus points"
  popup addline infomenu "Stat points"
  popup addline infomenu "Experience"
  popup addline infomenu "---------------------"
  popup addline infomenu "->8. Back"
  popup addline infomenu "0. Cancel"
  popup submenu infomenu 1 infomenu
  popup submenu infomenu 2 infomenu
  popup submenu infomenu 3 infomenu
  popup submenu infomenu 4 infomenu
  popup submenu infomenu 5 infomenu
  popup submenu infomenu 6 infomenu
  popup submenu infomenu 7 infomenu
  popup submenu infomenu 8 mainmenu
  popup submenu infomenu 9 infomenu
  popup menuselect infomenu mb_matrix/library/menu/infomenu
  popup select infomenu 10 mb_matrix/library/menu/exitmenus

  //*********************
  // ** Operator Menus **
  //*********************
  popup create operatormenu
  popup addline operatormenu "Operator"
  popup addline operatormenu "->1. Buy Focus - $8000"
  popup addline operatormenu "->2. Buy 120 Armor - $1500"
  popup addline operatormenu "->3. Buy Hand Grenade - $6000"
  popup addline operatormenu "->4. Body Reconstruction - $12000"
  popup addline operatormenu "8. Back"
  popup addline operatormenu "0. Exit"
  popup menuselect operatormenu mb_matrix/library/menu/operatormenu
  popup submenu operatormenu 1 operatormenu
  popup submenu operatormenu 2 operatormenu
  popup submenu operatormenu 3 operatormenu
  popup submenu operatormenu 4 operatormenu
  popup submenu operatormenu 5 operatormenu
  popup submenu operatormenu 6 operatormenu
  popup submenu operatormenu 7 operatormenu
  popup submenu operatormenu 8 mainmenu
  popup select operatormenu 10 mb_matrix/library/menu/exitmenus

  //****************
  // ** Help Menu **
  //****************
  popup create helpmenu
  popup addline helpmenu "Choose A Help Topic"
  popup addline helpmenu "->1. List of Mod Commands"
  popup addline helpmenu "->2. How To Use Abilities"
  popup addline helpmenu "->3. How To Level Up"
  popup addline helpmenu "->4. How To Increase Character Stats"
  popup addline helpmenu "->5. About Bullet Time"
  popup addline helpmenu "->6. Key Binding Help"
  popup addline helpmenu "->7. Administration Help"
  popup addline helpmenu "->8. View Your Character Sheet"
  popup addline helpmenu "0. Exit"
  popup addline helpmenu "---------------------"
  popup addline helpmenu " "
  popup addline helpmenu "Written by MBchrono"
  popup menuselect helpmenu mb_matrix/library/menu/helpmenu
  popup submenu helpmenu 1 commandsmenu
  popup submenu helpmenu 2 focusmenu
  popup submenu helpmenu 3 levelupmenu
  popup submenu helpmenu 4 upgrademenu
  popup submenu helpmenu 5 bulletmenu
  popup submenu helpmenu 6 bindmenu
  popup submenu helpmenu 9 helpmenu
  popup select helpmenu 10 mb_matrix/library/menu/exitmenus

  //**********************
  // ** Upgrade up Menu **
  //**********************
  popup create upgrademenu
  popup addline upgrademenu "How To Increase Character Stats"
  popup addline upgrademenu " "
  popup addline upgrademenu "You can increase your character's stats by spending statpoints."
  popup addline upgrademenu "Type !matrix in chat and when your character sheet comes up choose"
  popup addline upgrademenu "the stat you wish to increase.  Each increase will take away from your"
  popup addline upgrademenu "statpoints.  You cannot increase stats if you do not have any statpoints."
  popup addline upgrademenu "You can earn more points by leveling up.  For leveling information, refer"
  popup addline upgrademenu "to the help menu."
  popup addline upgrademenu "->8. Back"
  popup addline upgrademenu "->0. Exit"
  popup submenu upgrademenu 1 upgrademenu
  popup submenu upgrademenu 2 upgrademenu
  popup submenu upgrademenu 3 upgrademenu
  popup submenu upgrademenu 4 upgrademenu
  popup submenu upgrademenu 5 upgrademenu
  popup submenu upgrademenu 6 upgrademenu
  popup submenu upgrademenu 7 upgrademenu
  popup submenu upgrademenu 8 helpmenu
  popup submenu upgrademenu 9 upgrademenu

  //********************
  // ** Level up Menu **
  //********************
  popup create levelupmenu
  popup addline levelupmenu "How To Level Up"
  popup addline levelupmenu " "
  popup addline levelupmenu "You can increase your level by earning the required experience (exp)"
  popup addline levelupmenu "needed for your next level.  When this occurs your level will go up"
  popup addline levelupmenu "by one and you will be given a statpoint.  Experience is earned when"
  popup addline levelupmenu "you perform various actions.  The most common way is to kill an enemy."
  popup addline levelupmenu "You get an exp bonus for headshot and knife kills.  You also earn exp"
  popup addline levelupmenu "by planting the bomb, and rescuing hostages.  You may lost exp for"
  popup addline levelupmenu "killing yourself and killing teammates."
  popup addline levelupmenu "->8. Back"
  popup addline levelupmenu "->0. Exit"
  popup submenu levelupmenu 1 levelupmenu
  popup submenu levelupmenu 2 levelupmenu
  popup submenu levelupmenu 3 levelupmenu
  popup submenu levelupmenu 4 levelupmenu
  popup submenu levelupmenu 5 levelupmenu
  popup submenu levelupmenu 6 levelupmenu
  popup submenu levelupmenu 7 levelupmenu
  popup submenu levelupmenu 8 helpmenu
  popup submenu levelupmenu 9 levelupmenu
  popup select levelupmenu 10 mb_matrix/library/menu/exitmenus

  //***********************
  // ** Bullet Time Menu **
  //***********************
  popup create bulletmenu
  popup addline bulletmenu "About Bullet Time"
  popup addline bulletmenu " "
  popup addline bulletmenu "Bullet time occurs various times in Matrix Mod."
  popup addline bulletmenu "The most common way for bullet time to occur, is when the"
  popup addline bulletmenu "last player on either team is killed.  Grenade kills also trigger"
  popup addline bulletmenu "bullet time.  On your character select screen, if you choose Neo or"
  popup addline bulletmenu "Seraph, they also can activate bullet time using their abilities."
  popup addline bulletmenu "->8. Back"
  popup addline bulletmenu "->0. Exit"
  popup submenu bulletmenu 1 bulletmenu
  popup submenu bulletmenu 2 bulletmenu
  popup submenu bulletmenu 3 bulletmenu
  popup submenu bulletmenu 4 bulletmenu
  popup submenu bulletmenu 5 bulletmenu
  popup submenu bulletmenu 6 bulletmenu
  popup submenu bulletmenu 7 bulletmenu
  popup submenu bulletmenu 8 helpmenu
  popup submenu bulletmenu 9 bulletmenu
  popup select bulletmenu 10 mb_matrix/library/menu/exitmenus

  //*****************
  // ** Focus Menu **
  //*****************
  popup create focusmenu
  popup addline focusmenu "Focus Help"
  popup addline focusmenu " "
  popup addline focusmenu "Focus is used to preform abilities."
  popup addline focusmenu "Focus is regenerated over time."
  popup addline focusmenu "You must bind !focus to a key."
  popup addline focusmenu "Check the main help screen for binding information."
  popup addline focusmenu "->8. Back"
  popup addline focusmenu "->0. Exit"
  popup submenu focusmenu 1 focusmenu
  popup submenu focusmenu 2 focusmenu
  popup submenu focusmenu 3 focusmenu
  popup submenu focusmenu 4 focusmenu
  popup submenu focusmenu 5 focusmenu
  popup submenu focusmenu 6 focusmenu
  popup submenu focusmenu 7 focusmenu
  popup submenu focusmenu 8 helpmenu
  popup submenu focusmenu 9 focusmenu
  popup select focusmenu 10 mb_matrix/library/menu/exitmenus


  //****************
  // ** Item Menu **
  //****************
  popup create itemmenu
  popup addline itemmenu "Items You Can Purchase"
  popup addline itemmenu "->1. Focus - Buy 1 focus point"
  popup addline itemmenu "->2. Armor - Gives you MAX armor"
  popup addline itemmenu "->3. Grenade - Gives you one hegrenade"
  popup addline itemmenu "->4. Body Reconstruction - Respawn if you are dead, or next time you die."
  popup addline itemmenu "8. Back"
  popup addline itemmenu "0. Exit"
  popup submenu itemmenu 1 itemmenu
  popup submenu itemmenu 2 itemmenu
  popup submenu itemmenu 3 itemmenu
  popup submenu itemmenu 4 itemmenu
  popup submenu itemmenu 5 itemmenu
  popup submenu itemmenu 6 itemmenu
  popup submenu itemmenu 7 itemmenu
  popup submenu itemmenu 8 helpmenu
  popup submenu itemmenu 9 itemmenu
  popup select itemmenu 10 mb_matrix/library/menu/exitmenus

  //********************
  // ** Commands Menu **
  //********************
  popup create commandsmenu
  popup addline commandsmenu "Mod Commands"
  popup addline commandsmenu "->1. !matrix - Your main character sheet. Everything can be done from here."
  popup addline commandsmenu "->2. !dismiss - Type in chat if your menus get screwed up"
  popup addline commandsmenu "->3. changeclass - Brings up character select menu"
  //popup addline commandsmenu "->4. !togglehud - Turns off the constant hudhint that shows your current status"
  popup addline commandsmenu "8. Back"
  popup addline commandsmenu "0. Exit"
  popup submenu commandsmenu 1 commandsmenu
  popup submenu commandsmenu 2 commandsmenu
  popup submenu commandsmenu 3 commandsmenu
  popup submenu commandsmenu 4 commandsmenu
  popup submenu commandsmenu 5 commandsmenu
  popup submenu commandsmenu 6 commandsmenu
  popup submenu commandsmenu 7 commandsmenu
  popup submenu commandsmenu 8 helpmenu
  popup submenu commandsmenu 9 commandsmenu
  popup select commandsmenu 10 mb_matrix/library/menu/exitmenus

  //****************
  // ** Bind Menu **
  //****************
  popup create bindmenu
  popup addline bindmenu "Key Binding Help"
  popup addline bindmenu "->1. Binding !focus"
  popup addline bindmenu "->2. Binding !hyper"
  popup addline bindmenu "->3. How To Bind A Key"
  popup addline bindmenu "8. Back"
  popup addline bindmenu "0. Exit"
  popup menuselect bindmenu mb_matrix/library/menu/bindmenu
  popup submenu bindmenu 1 bindmenu
  popup submenu bindmenu 2 bindmenu
  popup submenu bindmenu 3 bindmenu
  popup submenu bindmenu 4 bindmenu
  popup submenu bindmenu 5 bindmenu
  popup submenu bindmenu 6 bindmenu
  popup submenu bindmenu 7 bindmenu
  popup submenu bindmenu 8 helpmenu
  popup submenu bindmenu 9 bindmenu
  popup select bindmenu 10 mb_matrix/library/menu/exitmenus

  //*************************
  // ** Agent Ability Menu **
  //*************************
  popup create agentmenu
  popup prepuser agentmenu mb_matrix/agent/prepagent
  popup addline agentmenu "Agent Teleport"
  popup addline agentmenu "->1. Save Current Location"
  popup addline agentmenu "->2. Teleport Back"
  popup addline agentmenu "0. Exit"
  popup menuselect agentmenu mb_matrix/characters/agent/agentmenu
  popup submenu agentmenu 1 agentmenu
  popup submenu agentmenu 2 agentmenu
  popup submenu agentmenu 3 agentmenu
  popup submenu agentmenu 4 agentmenu
  popup submenu agentmenu 5 agentmenu
  popup submenu agentmenu 6 agentmenu
  popup submenu agentmenu 7 agentmenu
  popup submenu agentmenu 8 agentmenu
  popup submenu agentmenu 9 agentmenu
  popup select agentmenu 10 mb_matrix/library/menu/exitmenus

  //*******************************
  // ** Merovingian Ability Menu **
  //*******************************
  popup create merovingianmenu
  popup prepuser merovingianmenu mb_matrix/characters/merovingian/prepmero
  popup addline merovingianmenu "Change Your Starting Weapon"
  popup addline merovingianmenu "->1. weapon1"
  popup addline merovingianmenu "->2. weapon2"
  popup addline merovingianmenu "->3. weapon3"
  popup addline merovingianmenu "->4. weapon4"
  popup addline merovingianmenu "->5. weapondefault"
  popup addline merovingianmenu "0. Exit"
  popup menuselect merovingianmenu mb_matrix/characters/merovingian/merovingianmenu
  popup select merovingianmenu 10 mb_matrix/library/menu/exitmenus
}
block exitmenus
{
  //Nada damn thing
}
block mainmenu
{
  if (server_var(_popup_choice) == 4) do
  {
    es_getplayerteam mb_getteam server_var(_popup_userid)
    if (server_var(mb_getteam) == 2) then popup send rebelmenu server_var(_popup_userid)
    if (server_var(mb_getteam) == 3) then popup send machinemenu server_var(_popup_userid)
  }
}
block infomenu
{
  es_xset mb_exists 0
  es_getplayersteamid mb_steamid server_var(_popup_userid)
  es_exists mb_exists key matrix server_var(mb_steamid)
  if (server_var(mb_exists) == 1) do
  {
    es_keygetvalue mb_focus matrix server_var(mb_steamid) focus
    es_keygetvalue mb_currentclass matrix server_var(mb_steamid) currentclass
    es_xcopy mb_copyclass mb_currentclass
    es_keygetvalue mb_statpoints server_var(mb_copyclass) server_var(mb_steamid) statpoints
    es_keygetvalue mb_healthlevel server_var(mb_copyclass) server_var(mb_steamid) healthlevel
    es_keygetvalue mb_speedlevel server_var(mb_copyclass) server_var(mb_steamid) speedlevel
    es_keygetvalue mb_defenselevel server_var(mb_copyclass) server_var(mb_steamid) defenselevel
    es_keygetvalue mb_damagelevel server_var(mb_copyclass) server_var(mb_steamid) damagelevel
    es_keygetvalue mb_hyperjumplevel server_var(mb_copyclass) server_var(mb_steamid) hyperjumplevel
    es_keygetvalue mb_dodgelevel server_var(mb_copyclass) server_var(mb_steamid) dodgelevel
    es_keygetvalue mb_exp server_var(mb_copyclass) server_var(mb_steamid) exp
    es_keygetvalue mb_expnext server_var(mb_copyclass) server_var(mb_steamid) expnext
    es_keygetvalue mb_charlevel server_var(mb_copyclass) server_var(mb_steamid) charlevel
    es_keygetvalue mb_healthlevelmax server_var(mb_copyclass) server_var(mb_steamid) healthlevelmax
    es_keygetvalue mb_speedlevelmax server_var(mb_copyclass) server_var(mb_steamid) speedlevelmax
    es_keygetvalue mb_defenselevelmax server_var(mb_copyclass) server_var(mb_steamid) defenselevelmax
    es_keygetvalue mb_currentability server_var(mb_copyclass) server_var(mb_steamid) currentability
    es_keygetvalue mb_damagelevelmax server_var(mb_copyclass) server_var(mb_steamid) damagelevelmax
    es_xmath mb_abilityexp float
    es_xmath mb_count float
    es_xmath mb_trimdec float
    es_keygetvalue mb_abilityexp server_var(mb_copyclass) server_var(mb_steamid) abilityexp
  }
  es_xset mb_maxlevel 0
  es_math mb_maxlevel + server_var(mb_healthlevelmax)
  es_math mb_maxlevel + server_var(mb_speedlevelmax)
  es_math mb_maxlevel + server_var(mb_defenselevelmax)
  es_math mb_maxlevel + server_var(mb_damagelevelmax)
  es_formatv mb_formatmenus "%1 Level %2/%3" mb_copyclass mb_charlevel mb_maxlevel
  es popup modline infomenu 1 server_var(mb_formatmenus)

  es_formatv mb_formatmenus "->1. Health Level: %1/%2" mb_healthlevel mb_healthlevelmax
  if (server_var(mb_healthlevel) < server_var(mb_healthlevelmax)) then popup modline infomenu 3 server_var(mb_formatmenus)
  if (server_var(mb_healthlevel) == server_var(mb_healthlevelmax)) then popup modline infomenu 3 "->1. Health Level: MAX"

  es_formatv mb_formatmenus "->2. Speed Level: %1/%2" mb_speedlevel mb_speedlevelmax
  if (server_var(mb_speedlevel) < server_var(mb_speedlevelmax)) then popup modline infomenu 4 server_var(mb_formatmenus)
  if (server_var(mb_speedlevel) == server_var(mb_speedlevelmax)) then popup modline infomenu 4 "->2. Speed Level: MAX"

  es_formatv mb_formatmenus "->3. Defense Level: %1/%2" mb_defenselevel mb_defenselevelmax
  if (server_var(mb_defenselevel) < server_var(mb_defenselevelmax)) then popup modline infomenu 5 server_var(mb_formatmenus)
  if (server_var(mb_defenselevel) == server_var(mb_defenselevelmax)) then popup modline infomenu 5 "->3. Defense Level: MAX"

  es_formatv mb_formatmenus "->4. Melee Damage Level: %1/%2" mb_damagelevel mb_damagelevelmax
  if (server_var(mb_damagelevel) < server_var(mb_damagelevelmax)) then popup modline infomenu 6 server_var(mb_formatmenus)
  if (server_var(mb_damagelevel) == server_var(mb_damagelevelmax)) then popup modline infomenu 6 "->4. Melee Damage Level: MAX"

  if (server_var(mb_hyperjumpmodule) == 1) do
  {
    if (server_var(mb_hyperjumplevel) == 0) then popup modline infomenu 9 "->1. Hyper Jump Ability: None"
    if (server_var(mb_hyperjumplevel) >= 2) then popup modline infomenu 9 "->1. Hyper Jump Ability: Low"
    if (server_var(mb_hyperjumplevel) >= 3) then popup modline infomenu 9 "->1. Hyper Jump Ability: Medium"
    if (server_var(mb_hyperjumplevel) >= 4) then popup modline infomenu 9 "->1. Hyper Jump Ability: High"
    if (server_var(mb_hyperjumplevel) >= 5) then popup modline infomenu 9 "->1. Hyper Jump Ability: Very High"
    if (server_var(mb_hyperjumplevel) > 5) then popup modline infomenu 9 "->1. Hyper Jump Ability: Extremely High"
  }
  else do
  {
    popup modline infomenu 9 "->1. Hyper Jumping Disabled"
  }
  if (server_var(mb_dodgelevel) == 0) then popup modline infomenu 10 "->2. Bullet Dodge Chance: None"
  if (server_var(mb_dodgelevel) > 15) then popup modline infomenu 10 "->2. Bullet Dodge Chance: Very Low"
  if (server_var(mb_dodgelevel) <= 15) then popup modline infomenu 10 "->2. Bullet Dodge Chance: Low"
  if (server_var(mb_dodgelevel) <= 12) then popup modline infomenu 10 "->2. Bullet Dodge Chance: Medium"
  if (server_var(mb_dodgelevel) <= 10) then popup modline infomenu 10 "->2. Bullet Dodge Chance: High"
  if (server_var(mb_dodgelevel) <= 8) then popup modline infomenu 10 "->2. Bullet Dodge Chance: Very High"

  if (server_var(mb_currentability) < 5) do
  {
    es est_trimdecimal mb_trimdec server_var(mb_abilityexp) 2
    es_formatv mb_formatmenus "->3. Ability Level: %1 (%2%)" mb_currentability mb_trimdec
    es popup modline infomenu 11 server_var(mb_formatmenus)
  }
  else do
  {
    popup modline infomenu 11 "->3. Ability Level: MAX"
  }
  es_formatv mb_formatpoints "->1. You have %1 Focus Point(s)" mb_focus
  es popup modline infomenu 14 server_var(mb_formatpoints)
  es_formatv mb_formatpoints "->2. You have %1 Stat Point(s)" mb_statpoints
  es popup modline infomenu 15 server_var(mb_formatpoints)
  es_formatv mb_formatmenus "->3. Experience: %1/%2" mb_exp mb_expnext
  es popup modline infomenu 16 server_var(mb_formatmenus)
}
block dynamicstats
{
  es_xset mb_exists 0
  es_getplayersteamid mb_steamid server_var(_popup_userid)
  es_exists mb_exists key matrix server_var(mb_steamid)
  if (server_var(mb_exists) == 1) do
  {
    es_keygetvalue mb_focus matrix server_var(mb_steamid) focus
    es_keygetvalue mb_currentclass matrix server_var(mb_steamid) currentclass
    es_xcopy mb_copyclass mb_currentclass
    es_keygetvalue mb_statpoints server_var(mb_copyclass) server_var(mb_steamid) statpoints
    es_keygetvalue mb_healthlevel server_var(mb_copyclass) server_var(mb_steamid) healthlevel
    es_keygetvalue mb_speedlevel server_var(mb_copyclass) server_var(mb_steamid) speedlevel
    es_keygetvalue mb_defenselevel server_var(mb_copyclass) server_var(mb_steamid) defenselevel
    es_keygetvalue mb_damagelevel server_var(mb_copyclass) server_var(mb_steamid) damagelevel
    es_keygetvalue mb_healthlevelmax server_var(mb_copyclass) server_var(mb_steamid) healthlevelmax
    es_keygetvalue mb_speedlevelmax server_var(mb_copyclass) server_var(mb_steamid) speedlevelmax
    es_keygetvalue mb_defenselevelmax server_var(mb_copyclass) server_var(mb_steamid) defenselevelmax
    es_keygetvalue mb_damagelevelmax server_var(mb_copyclass) server_var(mb_steamid) damagelevelmax
  }
  es_xset mb_maxlevel 0
  es_math mb_maxlevel + server_var(mb_healthlevelmax)
  es_math mb_maxlevel + server_var(mb_speedlevelmax)
  es_math mb_maxlevel + server_var(mb_defenselevelmax)
  es_math mb_maxlevel + server_var(mb_damagelevelmax)
  es_formatv mb_formatmenus "%1 Level %2/%3" mb_copyclass mb_charlevel mb_maxlevel
  es popup modline statsmenu 1 server_var(mb_formatmenus)

  es_formatv mb_formatmenus "->1. Health Level: %1/%2" mb_healthlevel mb_healthlevelmax
  if (server_var(mb_healthlevel) < server_var(mb_healthlevelmax)) then popup modline statsmenu 2 server_var(mb_formatmenus)
  if (server_var(mb_healthlevel) == server_var(mb_healthlevelmax)) then popup modline statsmenu 2 "->1. Health Level: MAX"

  es_formatv mb_formatmenus "->2. Speed Level: %1/%2" mb_speedlevel mb_speedlevelmax
  if (server_var(mb_speedlevel) < server_var(mb_speedlevelmax)) then popup modline statsmenu 3 server_var(mb_formatmenus)
  if (server_var(mb_speedlevel) == server_var(mb_speedlevelmax)) then popup modline statsmenu 3 "->2. Speed Level: MAX"

  es_formatv mb_formatmenus "->3. Defense Level: %1/%2" mb_defenselevel mb_defenselevelmax
  if (server_var(mb_defenselevel) < server_var(mb_defenselevelmax)) then popup modline statsmenu 4 server_var(mb_formatmenus)
  if (server_var(mb_defenselevel) == server_var(mb_defenselevelmax)) then popup modline statsmenu 4 "->3. Defense Level: MAX"

  es_formatv mb_formatmenus "->4. Melee Damage Level: %1/%2" mb_damagelevel mb_damagelevelmax
  if (server_var(mb_damagelevel) < server_var(mb_damagelevelmax)) then popup modline statsmenu 5 server_var(mb_formatmenus)
  if (server_var(mb_damagelevel) == server_var(mb_damagelevelmax)) then popup modline statsmenu 5 "->4. Melee Damage Level: MAX"

  es_formatv mb_formatpoints "You have %1 Stat Point(s)" mb_statpoints
  es popup modline statsmenu 8 server_var(mb_formatpoints)
}
block helpmenu
{
  if (server_var(_popup_choice) == 7) do
  {
    if (server_var(mb_adminmodule) == 0) do
    {
      es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultThe administration module is not installed!
    }
    else do
    {
      es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultThe administration modules enables admins to perform various admin-y things.
    }
  }
}
block statsmenu
{
  es_xset mb_exists 0
  es_getplayersteamid mb_steamid server_var(_popup_userid)
  es_exists mb_exists key matrix server_var(mb_steamid)
  if (server_var(mb_exists) == 1) do
  {
    es_keygetvalue mb_currentclass matrix server_var(mb_steamid) currentclass
    es_xcopy mb_copyclass mb_currentclass
    es_keygetvalue mb_statpoints server_var(mb_copyclass) server_var(mb_steamid) statpoints
  }
  if (server_var(_popup_choice) == 1) do
  {
    es_keygetvalue mb_healthlevel server_var(mb_copyclass) server_var(mb_steamid) healthlevel
    es_keygetvalue mb_healthlevelmax server_var(mb_copyclass) server_var(mb_steamid) healthlevelmax
    es_keygetvalue mb_currenthealth server_var(mb_copyclass) server_var(mb_steamid) currenthealth
    if (server_var(mb_statpoints) >= 1) do
    {
      if (server_var(mb_healthlevel) < server_var(mb_healthlevelmax)) do
      {
        es_xmath mb_healthlevel + 1
        es_xmath mb_statpoints - 1
        es_math mb_currenthealth + server_var(mb_healthperlevel)
        es est_health server_var(_popup_userid) + server_var(mb_healthperlevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) currenthealth server_var(mb_currenthealth)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) healthlevel server_var(mb_healthlevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) statpoints server_var(mb_statpoints)
        es_tell server_var(_popup_userid) #multi #lightgreen[Health Increase] #defaultYour Maximum health has increased by#green server_var(mb_healthperlevel)
      }
      else do
      {
        es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou have already maxed this skill!
      }
    }
    else do
    {
      es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou "don't" have enough stat points!
    }
  }
  if (server_var(_popup_choice) == 2) do
  {
    es_keygetvalue mb_speedlevel server_var(mb_copyclass) server_var(mb_steamid) speedlevel
    es_keygetvalue mb_speedlevelmax server_var(mb_copyclass) server_var(mb_steamid) speedlevelmax
    es_keygetvalue mb_currentspeed server_var(mb_copyclass) server_var(mb_steamid) currentspeed
    if (server_var(mb_statpoints) >= 1) do
    {
      if (server_var(mb_speedlevel) < server_var(mb_speedlevelmax)) do
      {
        es_xmath mb_speedlevel + 1
        es_xmath mb_statpoints - 1
        es_math mb_currentspeed + server_var(mb_speedperlevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) currentspeed server_var(mb_currentspeed)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) speedlevel server_var(mb_speedlevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) statpoints server_var(mb_statpoints)
        es_keygetvalue mb_speedlevel server_var(mb_copyclass) server_var(mb_steamid) speedlevel
        es est_speed server_var(_popup_userid) server_var(mb_currentspeed)
        es_tell server_var(_popup_userid) #multi #lightgreen[Speed Increase] #defaultYour Maximum speed has increased by#green server_var(mb_speedperlevel)
        es_tell server_var(_popup_userid) #lightgreen server_var(mb_currentspeed)
      }
      else do
      {
        es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou have already maxed this skill!
      }
    }
    else do
    {
      es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou "don't" have enough stat points!
    }
  }
  if (server_var(_popup_choice) == 3) do
  {
    es_keygetvalue mb_defenselevel server_var(mb_copyclass) server_var(mb_steamid) defenselevel
    es_keygetvalue mb_defenselevelmax server_var(mb_copyclass) server_var(mb_steamid) defenselevelmax
    es_keygetvalue mb_currentarmor server_var(mb_copyclass) server_var(mb_steamid) currentarmor
    if (server_var(mb_statpoints) >= 1) do
    {
      if (server_var(mb_defenselevel) < server_var(mb_defenselevelmax)) do
      {
        es_xmath mb_defenselevel + 1
        es_xmath mb_statpoints - 1
        es_math mb_currentarmor + server_var(mb_armorperlevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) currentarmor server_var(mb_currentarmor)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) defenselevel server_var(mb_defenselevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) statpoints server_var(mb_statpoints)
        es est_armor server_var(_popup_userid) + server_var(mb_armorperlevel)
        es_tell server_var(_popup_userid) #multi #lightgreen[Defense Increase] #defaultYour Maximum armor has increased by#green server_var(mb_armorperlevel)
      }
      else do
      {
        es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou have already maxed this skill!
      }
    }
    else do
    {
      es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou "don't" have enough stat points!
    }
  }
  if (server_var(_popup_choice) == 4) do
  {
    es_keygetvalue mb_damagelevel server_var(mb_copyclass) server_var(mb_steamid) damagelevel
    es_keygetvalue mb_damagelevelmax server_var(mb_copyclass) server_var(mb_steamid) damagelevelmax
    es_keygetvalue mb_currentdamage server_var(mb_copyclass) server_var(mb_steamid) currentdamage
    if (server_var(mb_statpoints) >= 1) do
    {
      if (server_var(mb_damagelevel) < server_var(mb_damagelevelmax)) do
      {
        es_xmath mb_damagelevel + 1
        es_xmath mb_statpoints - 1
        es_math mb_currentdamage + server_var(mb_damageperlevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) currentdamage server_var(mb_currentdamage)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) damagelevel server_var(mb_damagelevel)
        es_keysetvalue server_var(mb_copyclass) server_var(mb_steamid) statpoints server_var(mb_statpoints)
        es_tell server_var(_popup_userid) #multi #lightgreen[Melee Damage Increase] #defaultYour knife damage has been increased by#green server_var(mb_damageperlevel)
      }
      else do
      {
        es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou have already maxed this skill!
      }
    }
    else do
    {
      es_tell server_var(_popup_userid) #multi #lightgreen[Failure] #defaultYou "don't" have enough stat points!
    }
  }
}
block rebelmenu
{
  es_getplayersteamid mb_steamid server_var(_popup_userid)
  es_xset mb_exists 0
  es_exists mb_exists key matrix server_var(mb_steamid)
  if (server_var(mb_exists) == 1) do
  {
    es_keygetvalue mb_currentclass matrix server_var(mb_steamid) currentclass
    es_getplayerprop mb_dead server_var(_popup_userid) "CCSPlayer.baseclass.pl.deadflag"
  }
  if (server_var(_popup_choice) == 1) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass morpheus
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Morpheus
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass morpheus
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass morpheus
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 2) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass trinity
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Trinity
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass trinity
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass trinity
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 3) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass neo
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Neo
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass neo
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass neo
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 4) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass seraph
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Seraph
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass seraph
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass seraph
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 5) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass niobe
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Niobe
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass niobe
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass niobe
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 6) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass ghost
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Ghost
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass ghost
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass ghost
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
}
block machinemenu
{
  es_getplayersteamid mb_steamid server_var(_popup_userid)
  es_xset mb_exists 0
  es_exists mb_exists key matrix server_var(mb_steamid)
  if (server_var(mb_exists) == 1) do
  {
    es_keygetvalue mb_currentclass matrix server_var(mb_steamid) currentclass
    es_getplayerprop mb_dead server_var(_popup_userid) "CCSPlayer.baseclass.pl.deadflag"
  }
  if (server_var(_popup_choice) == 1) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass smith
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Smith
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass smith
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass smith
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 2) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass agent
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Agent
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass agent
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass agent
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 3) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass twin
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Twin
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass twin
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass twin
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 4) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass merovingian
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Merovingian
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass merovingian
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass merovingian
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
  if (server_var(_popup_choice) == 5) do
  {
    es_keysetvalue matrix server_var(mb_steamid) changedclass swat
    es_tell server_var(_popup_userid) #multi #lightgreen[Character Change] #defaultYour class will change on next spawn to Swat
    if (server_var(mb_dead) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) currentclass swat
    }
    else do
    {
      if (server_var(mb_extendchange) == 1) do
      {
        es_keysetvalue matrix server_var(mb_steamid) currentclass swat
        es est_spawn server_var(_popup_userid) 1
      }
    }
  }
}
block operatormenu
{
  es_getplayersteamid mb_steamid server_var(_popup_userid)
  es_xset mb_exists 0
  es_exists mb_exists key matrix server_var(mb_steamid)
  if (server_var(mb_exists) == 1) do
  {
    es_keygetvalue mb_focus matrix server_var(mb_steamid) focus
    es_getplayerprop mb_dead server_var(_popup_userid) "CCSPlayer.baseclass.pl.deadflag"
  }
  if (server_var(_popup_choice) == 1) do
  {
    es_keygetvalue mb_focus matrix server_var(mb_steamid) focus
    es_getplayerprop mb_money server_var(_popup_userid) CCSPlayer.m_iAccount
    if (server_var(mb_money) >= 8000) then es_xtell server_var(_popup_userid) #multi #lightgreen[Purchase] #defaultYou have bought server_var(mb_focusbuy) focus.
    if (server_var(mb_money) < 8000) then es_xtell server_var(_popup_userid) #lightgreen You need $8000 to buy focus.
    if (server_var(mb_money) >= 8000) then es_xmath mb_focus + server_var(mb_focusbuy)
    if (server_var(mb_money) >= 8000) then es_xtell server_var(_popup_userid) #lightgreen You now have server_var(mb_focus) focus points.
    if (server_var(mb_money) >= 8000) then es_xmath mb_money - 8000
    es_setplayerprop server_var(_popup_userid) CCSPlayer.m_iAccount server_var(mb_money)
    es_keysetvalue matrix server_var(mb_steamid) focus server_var(mb_focus)
  }
  if (server_var(_popup_choice) == 2) do
  {
    if (server_var(mb_dead) == 0) do
    {
      es_getplayerprop mb_money server_var(_popup_userid) CCSPlayer.m_iAccount
      if (server_var(mb_money) >= 1000) then es_xtell server_var(_popup_userid) #multi #lightgreen[Purchase] #defaultYou have bought extra armor.
      if (server_var(mb_money) < 1000) then es_xtell server_var(_popup_userid) #lightgreen You need $1000 to buy armor.
      if (server_var(mb_money) >= 1000) then est_SetArmor server_var(_popup_userid) 120
      if (server_var(mb_money) >= 1000) then es_xmath mb_money - 1000
      es_setplayerprop server_var(_popup_userid) CCSPlayer.m_iAccount server_var(mb_money)
    }
    else do
    {
      es_tell server_var(_popup_userid) #lightgreen You must be alive to buy armor.
    }
  }
  if (server_var(_popup_choice) == 3) do
  {
    if (server_var(mb_dead) == 0) do
    {
      es_getplayerprop mb_money server_var(_popup_userid) CCSPlayer.m_iAccount
      if (server_var(mb_money) >= 6000) then es_xtell server_var(_popup_userid) #multi #lightgreen[Purchase] #defaultYou have bought a hand grenade.
      if (server_var(mb_money) < 6000) then es_xtell server_var(_popup_userid) #lightgreen You need $6000 to restock your hand grenade.
      if (server_var(mb_money) >= 6000) then es_xgive server_var(_popup_userid) weapon_hegrenade
      if (server_var(mb_money) >= 6000) then es_xmath mb_money - 6000
      es_setplayerprop server_var(_popup_userid) CCSPlayer.m_iAccount server_var(mb_money)
    }
    else do
    {
      es_tell server_var(_popup_userid) #lightgreen You must be alive to buy grenades.
    }
  }
  if (server_var(_popup_choice) == 4) do
  {
    if (server_var(mb_dead) == 1) do
    {
      es_getplayerprop mb_money server_var(_popup_userid) CCSPlayer.m_iAccount
      if (server_var(mb_money) >= 12000) then es_xtell server_var(_popup_userid) #multi #lightgreen[Purchase] #defaultYour body has been reinserted into the matrix.
      if (server_var(mb_money) < 12000) then es_xtell server_var(_popup_userid) #lightgreen You need $12000 to preform body reconstruction.
      if (server_var(mb_money) >= 12000) then est_spawn server_var(_popup_userid)
      if (server_var(mb_money) >= 12000) then es_xmath mb_money - 12000
      es_setplayerprop server_var(_popup_userid) CCSPlayer.m_iAccount server_var(mb_money)
    }
    else do
    {
      es_getplayerprop mb_money server_var(_popup_userid) CCSPlayer.m_iAccount
      if (server_var(mb_money) >= 12000) then es_xtell server_var(_popup_userid) #multi #lightgreen[Purchase] #defaultYou will respawn the next time you die.
      if (server_var(mb_money) < 12000) then es_xtell server_var(_popup_userid) #lightgreen You need $12000 to preform body reconstruction.
      if (server_var(mb_money) >= 12000) then es_xmath mb_money - 12000
      if (server_var(mb_money) >= 12000) then es_keysetvalue matrix server_var(_popup_userid) canspawn 1
      es_setplayerprop server_var(_popup_userid) CCSPlayer.m_iAccount server_var(mb_money)
    }
  }
}
block bindmenu
{
  if (server_var(_popup_choice) == 1) do
  {
    es_tell server_var(_popup_userid) #lightgreen You can bind your ability by binding a key to !focus.  Use the HOW TO BIND A KEY option for help.
  }
  if (server_var(_popup_choice) == 2) do
  {
    es_tell server_var(_popup_userid) #lightgreen You can bind HyperJump by binding a key to !hyper.  Use the HOW TO BIND A KEY option for help.
  }
  if (server_var(_popup_choice) == 3) do
  {
    es_tell server_var(_popup_userid) #lightgreen To bind a key, open console and use the syntax: bind <key> [command].  (Example: bind k !focus)
  }
}
