//Non-Weapon Challenge Index
//The List
//$Challenge::Info[%name] = "Name\tCategoryID\tEXP Reward\tOther Reward";

//Killstreaks
$Challenge::Info["UAV1"] = "UAV Expert I\t1\t500\tNone";
$Challenge::Info["UAV2"] = "UAV Expert II\t1\t1000\tNone";
$Challenge::Info["UAV3"] = "UAV Expert III\t1\t2500\tNone";
$Challenge::Info["Airstrike1"] = "Airstrike Expert I\t1\t1000\tNone";
$Challenge::Info["Airstrike2"] = "Airstrike Expert II\t1\t5000\tNone";
$Challenge::Info["Airstrike3"] = "Airstrike Expert III\t1\t10000\tNone";
$Challenge::Info["UAMS1"] = "UAMS Expert I\t1\t1000\tNone";
$Challenge::Info["UAMS2"] = "UAMS Expert II\t1\t5000\tNone";
$Challenge::Info["UAMS3"] = "UAMS Expert III\t1\t10000\tNone";
$Challenge::Info["Helicopter1"] = "Helicopter Expert I\t1\t2500\tNone";
$Challenge::Info["Helicopter2"] = "Helicopter Expert II\t1\t10000\tNone";
$Challenge::Info["Helicopter3"] = "Helicopter Expert III\t1\t12500\tCombat Helicopter Schematics";
$Challenge::Info["Harrier1"] = "Harrier Expert I\t1\t2500\tNone";
$Challenge::Info["Harrier2"] = "Harrier Expert II\t1\t5000\tNone";
$Challenge::Info["Harrier3"] = "Harrier Expert III\t1\t12500\tPlasma Harrier Schematics";
$Challenge::Info["SatNuke1"] = "OLS Expert I\t1\t5000\tNone";
$Challenge::Info["SatNuke2"] = "OLS Expert II\t1\t10000\tNone";
$Challenge::Info["SatNuke3"] = "OLS Expert III\t1\t25000\tNone";
$Challenge::Info["NapalmHarrier1"] = "Napalm Airstrike Expert I\t1\t5000\tNone";
$Challenge::Info["NapalmHarrier2"] = "Napalm Airstrike Expert II\t1\t10000\tNone";
$Challenge::Info["NapalmHarrier3"] = "Napalm Airstrike Expert III\t1\t25000\tF41 Strike Fighter Schematics";
$Challenge::Info["GunHeli1"] = "Gunship Helicopter Expert I\t1\t5000\tNone";
$Challenge::Info["GunHeli2"] = "Gunship Helicopter Expert II\t1\t10000\tNone";
$Challenge::Info["GunHeli3"] = "Gunship Helicopter Expert III\t1\t25000\tGunship Helicopter Schematics";
$Challenge::Info["SBomber1"] = "Stealth Bomber Expert I\t1\t5000\tNone";
$Challenge::Info["SBomber2"] = "Stealth Bomber Expert II\t1\t10000\tNone";
$Challenge::Info["SBomber3"] = "Stealth Bomber Expert III\t1\t25000\tStealth Bomber Schematics";
$Challenge::Info["Gunship1"] = "Harbingers Wrath Expert I\t1\t5000\tNone";
$Challenge::Info["Gunship2"] = "Harbingers Wrath Expert II\t1\t10000\tNone";
$Challenge::Info["Gunship3"] = "Harbingers Wrath Expert III\t1\t25000\tAC-130 Vehicle Schematics";
$Challenge::Info["ACGunship1"] = "AC-130 Expert I\t1\t5000\tNone";
$Challenge::Info["ACGunship2"] = "AC-130 Expert II\t1\t10000\tNone";
$Challenge::Info["ACGunship3"] = "AC-130 Expert III\t1\t25000\tBragging Rights... lol.";
$Challenge::Info["Apache1"] = "Apache Gunner Expert I\t1\t5000\tNone";
$Challenge::Info["Apache2"] = "Apache Gunner Expert II\t1\t10000\tNone";
$Challenge::Info["Apache3"] = "Apache Gunner Expert III\t1\t25000\tApache Helicopter Schematics";
$Challenge::Info["Centaur1"] = "Centaur Artillery Expert I\t1\t10000\tNone";
$Challenge::Info["Centaur2"] = "Centaur Artillery Expert II\t1\t25000\tNone";
$Challenge::Info["Centaur3"] = "Centaur Artillery Expert III\t1\t50000\tNone";
$Challenge::Info["Hind1"] = "Hind Expert I\t1\t10000\tNone";
$Challenge::Info["Hind2"] = "Hind Expert II\t1\t25000\tNone";
$Challenge::Info["Hind3"] = "Hind Expert III\t1\t50000\tHind Helicopter Schematics";
$Challenge::Info["EMP1"] = "EMP Expert I\t1\t10000\tNone";
$Challenge::Info["EMP2"] = "EMP Expert II\t1\t25000\tNone";
$Challenge::Info["EMP3"] = "EMP Expert III\t1\t50000\tNone";
$Challenge::Info["Nuke1"] = "Nuke Expert I\t1\t10000\tNone";
$Challenge::Info["Nuke2"] = "Nuke Expert II\t1\t25000\tNone";
$Challenge::Info["Nuke3"] = "Nuke Expert III\t1\t50000\tZ-Bomb Killstreak";
$Challenge::Info["Fission1"] = "Fission Bomb Expert I\t1\t25000\tNone";
$Challenge::Info["Fission2"] = "Fission Bomb Expert II\t1\t50000\tNone";
$Challenge::Info["Fission3"] = "Fission Bomb Expert III\t1\t75000\tNone";

//Bosses
$Challenge::Info["Yvex1"] = "Nightmarish Enterprise\t2\t1000\tNone";
$Challenge::Info["Yvex2"] = "Darkness Rising\t2\t2500\tNone";
$Challenge::Info["Yvex3"] = "Shadowy Desecration\t2\t5000\tLord Yvex Recruitable Ally";
$Challenge::Info["CWS1"] = "Fortress In The Sky\t2\t1000\tNone";
$Challenge::Info["CWS2"] = "Aerieal Nightmare\t2\t2500\tNone";
$Challenge::Info["CWS3"] = "Harbinger's Bane\t2\t5000\tNone";
$Challenge::Info["GOL1"] = "Envious Lightning\t2\t1500\tNone";
$Challenge::Info["GOL2"] = "The Shocking Truth\t2\t3000\tNone";
$Challenge::Info["GOL3"] = "Severe Thunderstorm\t2\t6500\tNone";
$Challenge::Info["Veg1"] = "Flaming Revolt\t2\t1500\tNone";
$Challenge::Info["Veg2"] = "Burning Frenzy\t2\t3000\tNone";
$Challenge::Info["Veg3"] = "Firestorm Ender\t2\t6500\tGeneral Vegenor Recruitable Ally";
$Challenge::Info["LRog1"] = "Revenge Halter\t2\t2500\tNone";
$Challenge::Info["LRog2"] = "Return to Returner\t2\t5000\tNone";
$Challenge::Info["LRog3"] = "Payback's A Bitch\t2\t10000\tLord Rog Recruitable Ally";
$Challenge::Info["Ins1"] = "El Shipitor\t2\t2500\tNone";
$Challenge::Info["Ins2"] = "No Gravity, No Problem\t2\t5000\tNone";
$Challenge::Info["Ins3"] = "Gravitational Influx\t2\t10000\tMajor Insignia Recruitable Ally";
$Challenge::Info["Treb1"] = "Precious Cargo\t2\t2500\tNone";
$Challenge::Info["Treb2"] = "Harbinger Denied\t2\t5000\tNone";
$Challenge::Info["Treb3"] = "Tank Halter\t2\t10000\tNone";
$Challenge::Info["Vard1"] = "Shining Star\t2\t3500\tNone";
$Challenge::Info["Vard2"] = "Glare The Dark\t2\t7000\tNone";
$Challenge::Info["Vard3"] = "Outevil The Wicked\t2\t12500\tLord Vardison Recruitable Ally";
//Blacklist
$Challenge::Info["Acceptance"] = "Acceptance\t3\t1000\tNone";
$Challenge::Info["ListHit"] = "Hitlister of The List\t3\t2500\tNone";
$Challenge::Info["TopHit"] = "Champion Slayer\t3\t3500\tNone";
$Challenge::Info["ButIm2"] = "But I'm #2\t3\t3500\tNone";
$Challenge::Info["DF3"] = "Don't Forget #3\t3\t3500\tNone";
//Zombie Slaying

//Events
$Challenge::Info["NewYearsEve"] = "New Years Eve Fireworks\t5\t1500\tJavelin Hellclass";
$Challenge::Info["NewYears"] = "New Years Fireworks\t5\t1500\tNone";
$Challenge::Info["GunshipMall"] = "Gunship to the Mall\t5\t2500\tNone";
$Challenge::Info["IndepRPG"] = "Independance RPG\t5\t1500\tNone";
$Challenge::Info["SoulsticeBombard"] = "Soulstice Bombard\t5\t1500\tNone";

//Phantom Games Development
//see DChalg.cs

//Sabotage
$Challenge::Info["BombDisarmed"] = "Bomb Disarmed\t7\t500\tNone";
$Challenge::Info["BombPlanted"] = "Bomb Planted\t7\t2500\tNone";
$Challenge::Info["BombDetonated"] = "Bomb Detonated\t7\t3000\tNone";
$Challenge::Info["3For5Sabo"] = "Three For Five\t7\t4500\tBomb Shadower Perk";
$Challenge::Info["BaseDestroyer"] = "Base Destroyer\t7\t5000\tNone";

//Domination
$Challenge::Info["ZoneCapture"] = "Zone Conquerer\t8\t500\tNone";
$Challenge::Info["ABC"] = "Alpha Bravo Charlie\t8\t2500\tNone";
$Challenge::Info["MatchSet"] = "Match Set\t8\t3000\tNone";
$Challenge::Info["3For5"] = "Three For Five\t8\t4500\tNone";
$Challenge::Info["Undefeatable"] = "Undefeatable\t8\t5000\tNone";

//Horde 3
$Challenge::Info["15For15"] = "15 For 15\t9\t15000\tNone";
$Challenge::Info["Milestone25"] = "Milestone 25\t9\t25000\tNone";
$Challenge::Info["ArmyOf50Stopped"] = "Army Of 50 Stopped\t9\t50000\tSecond Chance Perk";
$Challenge::Info["Angel"] = "Angel\t9\t500\tNone";
$Challenge::Info["ZBomber"] = "Z-Bomber\t9\t2000\tNone";

//Helljump
$Challenge::Info["GroupBuster"] = "Group Buster\t10\t5000\tNone";
$Challenge::Info["WaveDefeater"] = "Wave Defeater\t10\t50000\tNone";
$Challenge::Info["OneK"] = "1K Soldier\t10\t10000\tNone";
$Challenge::Info["FiveK"] = "5K Soldier\t10\t25000\tNone";
$Challenge::Info["TenK"] = "10K Soldier\t10\t50000\tNone";
$Challenge::Info["PointsSurge"] = "Points Surge\t10\t25000\tNone";
$Challenge::Info["PointsJackpot"] = "Points Jackpot\t10\t50000\tNone";
$Challenge::Info["ThatsAHind"] = "That's a Hind\t10\t5000\tNone";
$Challenge::Info["DownBoy"] = "Down Boy... Down\t10\t5000\tNone";
$Challenge::Info["ClassExtravaganza"] = "Class Extravaganza\t10\t100\tNone";
$Challenge::Info["LifeGiver"] = "Giver of Life\t10\t7500\tNone";

//From The Top
$Challenge::Info["SimonSays"] = "Simon Says\t11\t1000\tNone";
$Challenge::Info["FromTheTop"] = "From The Top\t11\t1000\tNone";
$Challenge::Info["GoldStar"] = "Gold Star\t11\t1000\tNone";
$Challenge::Info["Faster"] = "Faster!\t11\t250\tNone";
$Challenge::Info["EpicFailure"] = "Epic Failure\t11\t5\tNone";

//Prestige
$Challenge::Info["Prestge1"] = "Instructive Private\t12\t100\tNone";
$Challenge::Info["Prestge2"] = "Excelling Private\t12\t250\tNone";
$Challenge::Info["Prestge3"] = "Champion Private\t12\t350\tNone";
$Challenge::Info["Prestge4"] = "Prestigious Private\t12\t500\tNone";
$Challenge::Info["Prestge5"] = "Supreme Private\t12\t1000\tNone";
$Challenge::Info["Prestge9"] = "Phantom's Vengeance\t12\t10000\tNone";
$Challenge::Info["GameEnder"] = "Game Ender\t12\t5000\tNone";


//CORE

//non weapon challenges
//started TWM2 2.0
//These vary from using killstreaks, to shooting down things.
//much more to do with these challenges

//Core Functions
function GameConnection::AllowedToDoNW(%client, %name) {
   %scriptController = %client.TWM2Core;
   %xp = getCurrentEXP(%client);
   %taskCate = getField($Challenge::Info[%name], 1);
   switch(%taskCate) {
      case 1:
         if(%xp > $Ranks::MinPoints[13]) {
            return 1;
         }
         else {
            return 0;
         }
      case 2:
         if(%xp > $Ranks::MinPoints[18]) {
            return 1;
         }
         else {
            return 0;
         }
      case 3:
         if(%xp > $Ranks::MinPoints[23]) {
            return 1;
         }
         else {
            return 0;
         }
      case 4:
         if(%xp > $Ranks::MinPoints[28]) {
            return 1;
         }
         else {
            return 0;
         }
      case 5:
         return 1; //everyone can do these.
      case 6:
         return 1; //handled by a different system
      case 7 or 8 or 9 or 10:
         if(%xp > $Ranks::MinPoints[40]) {
            return 1;
         }
         else {
            return 0;
         }
      case 11:
         if(%xp > $Ranks::MinPoints[59]) {
            return 1;
         }
         else {
            return 0;
         }
      case 12:
         return 1;
   }
}

function GameConnection::CheckNWChallengeCompletion(%client, %name) {
   %scriptController = %client.TWM2Core;
   if(%scriptController.challengeComplete[%name] == 1) {
      return true;
   }
   else {
      return false;
   }
}

function CompleteNW_allPlayers(%name) {
   for(%i = 0; %i < ClientGroup.getCount(); %i++) {
      %client = ClientGroup.getObject(%i);
      CompleteNWChallenge(%client, %name);
   }
}

function CompleteNWChallenge(%client, %name) {
   if(%client $= "" || !%client) {
      return;
   }
   if(%client.CheckNWChallengeCompletion(%name)) {
      return;
   }
   if(!%client.AllowedToDoNW(%name)) {
      return;
   }
   //
   %scriptController = %client.TWM2Core;
   %taskName = getField($Challenge::Info[%name], 0);
   %taskXPGive = getField($Challenge::Info[%name], 2);
   %taskReward = getField($Challenge::Info[%name], 3);
   //
   GainExperience(%client, %taskXPGive, "Challenge "@%taskName@" Completed ");
   BottomPrint(%client, "CHALLEGNE COMPLETE: "@%taskName@" \n +"@%taskXPGive@"XP, Reward: "@%taskReward@"", 2, 3);
   MessageClient(%client, 'MsgSound', "~wfx/Bonuses/Nouns/General.wav");
   MessageAll('msgComplete', "\c5"@%client.namebase@" completed challenge "@%taskName@"");
   //
   %scriptController.challengeComplete[%name] = 1;
   %file = ""@$TWM::RanksDirectory@"/"@%client.guid@"/Saved.TWMSave";
   SaveClientFile(%client);
   echo("TWM2: Client "@%client@", "@%client.nambase@", Completed Challenge "@%taskname@", File Updated.");
}

//Menus
function GenerateChallegnesMenu(%client, %tag, %index) {
   %scriptController = %client.TWM2Core;
   %xp = getCurrentEXP(%client);
   messageClient( %client, 'SetLineHud', "", %tag, %index, "Other Challenges:");
   %index++;
   //
   messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t6>PGD Challenges (Daily/Weekly/Monthly)</a>");
   %index++;
   if(%xp >= $Ranks::MinPoints[13]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t1>Killstreak Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Killstreak Challenges - Reach Sergeant To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[18]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t2>Boss Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Boss Challenges - Reach Gunnary Sergeant To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[23]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t3>Blacklist Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Blacklist Challenges - Reach Lieutenant To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[28]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Zombie Slaying Challenges (Coming Soon)");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Zombie Slaying Challenges - Reach Captain To Unlock");
      %index++;
   }
   //
   messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t5>Special Event Challenges</a>");
   %index++;
   //
   if(%xp >= $Ranks::MinPoints[40]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t7>Sabotage Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Sabotage Challenges - Reach Colonel To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[40]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t8>Domination Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Domination Challenges - Reach Colonel To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[40]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t9>Horde 3 Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde 3 Challenges - Reach Colonel To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[40]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t10>Helljump Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Helljump Challenges - Reach Colonel To Unlock");
      %index++;
   }
   //
   if(%xp >= $Ranks::MinPoints[40]) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t11>From the top</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "From the top - Reach Commading Officer To Unlock");
      %index++;
   }
   //
   if(%scriptController.officer >= 1) {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOtherTasksSub\t12>Officer Challenges</a>");
      %index++;
   }
   else {
      messageClient( %client, 'SetLineHud', "", %tag, %index, "Officer Challenges - Reach a Officer Rank To Unlock");
      %index++;
   }
   return %index;
}

//SUB MENU        GetNonWeapSubMenu(%client, %tag, %index, %challengeCategory)
function GetNonWeapSubMenu(%client, %tag, %index, %challengeCategory) {
   switch(%challengeCategory) {
      //Killstreaks
      case 1:
         //Killstreak.cs
         %index = GenerateStreakChallengeMenu(%client, %tag, %index);
      //Bosses
      case 2:
         %index = GenerateBossChallengeMenu(%client, %tag, %index);
      //Blacklist
      case 3:
         messageClient( %client, 'SetLineHud', "", %tag, %index, "Blacklist Challenges:");
         %index++;
         if(%client.CheckNWChallengeCompletion("Acceptance")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Acceptance: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Acceptance: Earn a Spot on the Blacklist 15.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("ListHit")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Hitlister of The List: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Hitlister of The List: Kill a Blacklist Player.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("TopHit")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Champion Slayer: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Champion Slayer: Kill the #1 Player on the Server.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("ButIm2")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "But I'm #2: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "But I'm #2: Kill the #2 Player on the Server.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("DF3")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Don't Forget #3: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Don't Forget #3: Kill the #3 Player on the Server.");
            %index++;
         }
         //
      //Zombie Slaying
      case 4:
      //Events
      case 5:
         messageClient( %client, 'SetLineHud', "", %tag, %index, "Special Event Challenges:");
         %index++;
         if(%client.CheckNWChallengeCompletion("NewYearsEve")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Eve Fireworks: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Eve Fireworks: Get a Javelin Kill on New Years Eve.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("NewYears")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Fireworks: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Fireworks: Call in a nuke on New Years Day.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("GunshipMall")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship to The Mall: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship to The Mall: Call in a Gunship on Christmas Mall 2009.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("IndepRPG")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Independance RPG: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Independance RPG: Score an RPG Kill on the Fourth Of July.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("SoulsticeBombard")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Soulstice Bombard: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Soulstice Bombard: Call in artillery on one of the soulstices.");
            %index++;
         }
         //
      //PGD
      case 6:
         %index = GenerateDWMChallengeMenu(%client, %tag, %index);
      //Sabotage
      case 7:
         %index = GenerateSabotageChallengeMenu(%client, %tag, %index);
      //Domination
      case 8:
         %index = GenerateDominationChallengeMenu(%client, %tag, %index);
      //Horde 2
      case 9:
         %index = GenerateHordeChallengeMenu(%client, %tag, %index);
      //Helljump
      case 10:
         %index = GenerateHelljumpChallengeMenu(%client, %tag, %index);
      //FTT
      case 11:
         messageClient( %client, 'SetLineHud', "", %tag, %index, "From The Top Challenges:");
         %index++;
         if(%client.CheckNWChallengeCompletion("SimonSays")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Simon Says: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Simon Says: Order a mission.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("FromTheTop")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "From The Top: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "From The Top: Accept a mission.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("GoldStar")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Gold Star: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Gold Star: Complete a mission within the time limit.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("Faster")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Faster!: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Faster!: Complete a mission, but miss the time limit.");
            %index++;
         }
         //
         if(%client.CheckNWChallengeCompletion("EpicFailure")) {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Epic Failure: Done.");
            %index++;
         }
         else {
            messageClient( %client, 'SetLineHud', "", %tag, %index, "Epic Failure: Fail a mission.");
            %index++;
         }
      //Prestige
      case 12:
         %index = GeneratePrestigeChallengeMenu(%client, %tag, %index);
   }
   return %index;
}

