class u_Helper extends Object;


// colors and tags, maybe later I will convert this to a config array
struct ColorRecord
{
  var string ColorName;            // color name, for comfort
  var string ColorTag;             // color tag
  var Color Color;                 // RGBA values
};
var array<ColorRecord> ColorList;   // color list

var array<string> TagsToRemove;     // list of unnesesary tags to remove
var array<string> MsgHelp;          // help messages


// help list for zed spawning
static function TellAbout(PlayerController pc, HideMutInteraction Hide, string whatToTell)
{
  local int i;
  local array<string> StrTemp;

  switch(whatToTell)
  {
    case "MsgHelp":
      StrTemp = default.MsgHelp;
      break;
    case "Chars":
      StrTemp = class'KFGameType'.default.AvailableChars;
      for(i = 0; i < StrTemp.Length; i++)
      {
        StrTemp[i] = "^w" $ i $ ". ^y" $ StrTemp[i];
      }
      break;
    default:
      // fallback warning
      StrTemp[0] = "^rHIDE MENU HELPER: We shouldn't get to this so this means you used WRONG modifier!";
  }

	for(i = 0; i < StrTemp.Length; i++)
  {
    pc.clientMessage(ParseTags(StrTemp[i]));
  }
}


// converts color tags to colors
static function string ParseTags(string input)
{
	local int i;
  local array<ColorRecord> Temp;
  local string strTemp;

  Temp = default.ColorList;
  for(i=0; i<Temp.Length; i++)
  {
    strTemp = class'GameInfo'.Static.MakeColorCode(Temp[i].Color);
    ReplaceText(input, Temp[i].ColorTag, strTemp);
  }
  return input;
}


// removes colors from a string
static function string StripColor(string s)
{
  local int p;

  p = InStr(s,chr(27));
  while ( p>=0 )
  {
    s = left(s,p)$mid(S,p+4);
     p = InStr(s,Chr(27));
  }
  return s;
}


defaultproperties
{
  MsgHelp[0]="^w---------------------------- ^rHIDE MENU^w ------------------------------------"
  MsgHelp[1]="^wThis is a complete list of commands. Some shit may be incorrect, please report."
  MsgHelp[2]="  ^bHideMenu ^w- old menu."
  MsgHelp[3]="  ^bHideMenuOld ^w- Chaos's menu."
  MsgHelp[4]="  ^bHideMenuNew ^w- Bi's menu."
  MsgHelp[5]="  ^bweaponManagement ^w- opens weapon buy-slot menu."

  MsgHelp[6]="^w-------------------------- ^yCRASHING n Nades^w ----------------------------------"
  MsgHelp[7]="  ^bcrashServer ^w- requires at least 2500-3000 dosh."
  MsgHelp[8]="  ^bcrashServer2 ^w- uses nades."
  MsgHelp[9]="  ^bcrashServer3 ^w- spec-join, requires some spam."
  MsgHelp[10]="  ^bnade ^w- infinite nades."
  MsgHelp[11]="  ^bbignade ^y<int> ^w- throw selected ammount of nades."

  MsgHelp[12]="^w---------------------------- ^yTRADING^w ------------------------------------"
  MsgHelp[13]="  ^bbuyKevlar ^w- buy vest."
  MsgHelp[14]="  ^bbuyHP ^w- buy health, const 150 dosh."
  MsgHelp[15]="  ^bbuyAmmo ^w- buy ammo for everything."
  MsgHelp[16]="  ^bbuy ^y<weaponClassName> ^w- allows to buy shit that is not in trader."
  MsgHelp[17]="  ^bbuyAll ^w- buy ALL vanilla weapons."
  MsgHelp[18]="  ^bunlockDlc ^w- no dosh for TWI."

  MsgHelp[19]="^w-------------------------- ^yWEAPON MANAGMENT^w ----------------------------------"
  MsgHelp[20]="  ^breallyQuickHeal ^w- obviously."
  MsgHelp[21]="  ^bgetWeapon1-9 ^w- replaces vanilla system."

  MsgHelp[22]="^w-------------------------- ^yWEAPONS^w ----------------------------------"
  MsgHelp[23]="  ^bshowPriority ^w- weapon priority."
  MsgHelp[24]="  ^bnonStop ^y<optional bNewWaitForRelease, optional bAllWeapons> ^w- fast shooting."
  MsgHelp[25]="  ^bnr ^w- no recoil."
  MsgHelp[26]="  ^bfl ^y<optional bool cleanup> ^w- spawn infinite flashlight, can be multiple."

  MsgHelp[27]="^w-------------------------- ^yAUTOMATIC ACTIONS^w ----------------------------------"
  MsgHelp[28]="  ^bstartTossCash ^w- start the raining dosh."
  MsgHelp[29]="  ^bstopTossCash ^w- stops that shit ^."
  MsgHelp[30]="  ^bstartTossWeapons ^w- tosses everything except pipes."
  MsgHelp[31]="  ^bstopTossWeapons ^w- stops that shit ^."
  MsgHelp[32]="  ^bstartPrinting ^w- starts to buy dualies and toss them."
  MsgHelp[33]="  ^bstopPrinting ^w- stops that shit ^."
  MsgHelp[34]="  ^bstartSellWeapons ^w- sells everything."
  MsgHelp[35]="  ^bstopSellWeapons ^w- stops that shit ^."
  MsgHelp[36]="  ^bstopAnyWeaponTosserActions ^w- fixes unstoppable tossing."
  MsgHelp[37]="  ^bclearTrash ^w- clears all dosh and weapon tossing."

  MsgHelp[38]="^w-------------------------- ^yHUD FUNCTIONS^w ----------------------------------"
  MsgHelp[39]="  ^bReveal ^w- set zap effect for ^bstalkers ^wand ^bPats^w."
  MsgHelp[40]="  ^bHPBar ^y<optional float> ^w- enable zed health bars, edit the range."
  MsgHelp[41]="  ^bxhair ^y<optional bool> ^w- controll crosshair."
  MsgHelp[42]="  ^bhalo ^w- spawn big light around you."
  MsgHelp[43]="  ^bcameraMode ^y<0-9> ^w- change camera mode."

  MsgHelp[44]="^w-------------------------- ^ySPEECH and CHAT FUNCTIONS^w ----------------------------------"
  MsgHelp[45]="  ^bHlp ^w- deduce this information."
  MsgHelp[46]="  ^bfastTalk ^w- spamspamspam."
  MsgHelp[47]="  ^bSsay ^y<text> ^w- use for spam binds."
  MsgHelp[48]="  ^bwarnSC ^w- scrake text bind."
  MsgHelp[49]="  ^bwarnFP ^w- FP text bind."
  MsgHelp[50]="  ^bTTS ^w- enables / disable TTS feature.."
  MsgHelp[51]="  ^bspam ^y<text> ^w- so good."
  MsgHelp[52]="  ^bfspam ^y<float> ^w- ammount of spam."
  MsgHelp[53]="  ^binsult ^y<1-2> ^w- insult spam."
  MsgHelp[54]="  ^bPatHP ^y<optional bool broadcastall> ^w- shows pat health and syringes."

  MsgHelp[55]="^w-------------------------- ^yNOT SORTED YET^w ----------------------------------"
  MsgHelp[56]="  ^bchangeChar ^y<newCharacter> ^w- change skins."
  MsgHelp[57]="  ^bteamKill ^y<timerTime> ^w- shoot-spectate trick."
  MsgHelp[58]="  ^bsn ^y<name> ^w- change name."
  MsgHelp[59]="  ^bgetActorName ^w- shoots projectile at actor and shows it name."
  MsgHelp[60]="  ^badlog ^w- admin login-logout."
  MsgHelp[61]="  ^bLobby ^w- returns to lobby."
  MsgHelp[62]="  ^bMap ^w- spectate during lobby."
  MsgHelp[63]="  ^bflashlight ^w- use it with all weapons."
  MsgHelp[64]="  ^bspec ^w- spectate."
  MsgHelp[65]="  ^bjoin ^w- join the game."
  MsgHelp[66]="  ^bSS ^y<float> ^w- change mouse sense."
  MsgHelp[67]="  ^bSA ^y<0-9> ^w- change alias."
  MsgHelp[68]="  ^bSC ^y<1-9, char> ^w- change character."
  MsgHelp[69]="  ^bNewChar ^y<char> ^w- change character."
  MsgHelp[70]="  ^bNewName ^y<name> ^y<char> ^w- change name and char."
  MsgHelp[71]="  ^bSS ^y<float> ^w- change mouse sense."
  MsgHelp[72]="  ^bCamDist ^y<float> ^w- change camera distance for 3rd view pov."
  MsgHelp[73]="  ^bf4 ^w- behind view for all servers."


  MsgHelp[74]="^w---------------------------- ^yPERKS^w ------------------------------------"
  MsgHelp[75]="  ^bbSup ^y<level> ^w- change sups level."
  MsgHelp[76]="  ^bbSharp ^y<level> ^w- change sharps level."
  MsgHelp[77]="  ^bbMed ^y<level> ^w- change meds level."
  MsgHelp[78]="  ^bbZerk ^y<level> ^w- change zerks level."
  MsgHelp[79]="  ^bbMando ^y<level> ^w- change mandos level."
  MsgHelp[80]="  ^bbDemo ^y<level> ^w- change demos level."
  MsgHelp[81]="  ^bbPyro ^y<level> ^w- change firefags level."
  MsgHelp[82]="  ^bbNone ^w- neutral perk."
  MsgHelp[83]="  ^bvet ^y<classname> ^w- change to non-vanilla perks."
  MsgHelp[84]="  ^bgreyList ^w- adds greylisted status."

  MsgHelp[85]="^w---------------------------- ^yDEBUG^w ------------------------------------"
  MsgHelp[86]="  ^bgetC ^w- player controller and repinfo details."
  MsgHelp[87]="  ^bgetGt ^w- current gametype name."
  MsgHelp[88]="  ^bgetMap ^w- map name."
  MsgHelp[89]="  ^bgetIP ^w- IP info."
  MsgHelp[90]="  ^bgetLoc ^w- location info."
  MsgHelp[91]="  ^bgetChar ^w- print all vanilla characters."
  MsgHelp[92]="  ^bcrashS ^w- crash your game."
  MsgHelp[93]="  ^bsp <optional bool> ^w- show path nodes and paths."

  ColorList[0]=(ColorName="Red",ColorTag="^r",Color=(B=50,G=50,R=200,A=0))
  ColorList[1]=(ColorName="Orange",ColorTag="^o",Color=(B=0,G=127,R=255,A=0))
  ColorList[2]=(ColorName="Yellow",ColorTag="^y",Color=(B=0,G=255,R=255,A=0))
  ColorList[3]=(ColorName="Green",ColorTag="^g",Color=(B=0,G=200,R=0,A=0))
  ColorList[4]=(ColorName="Blue",ColorTag="^b",Color=(B=200,G=100,R=50,A=0))
  ColorList[5]=(ColorName="Violet",ColorTag="^v",Color=(B=139,G=0,R=255,A=0))
  ColorList[6]=(ColorName="White",ColorTag="^w",Color=(B=255,G=255,R=255,A=0))
}