#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_funcs;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheModel("test_sphere_silver");
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
level.icontest = "cardicon_weed";
precacheShader("cardicon_weed");
}
onPlayerConnect()
{
for(;

{
level waittill("connected", player);
if(!isDefined(player.pers["postGameChallenges"])) player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon("disconnect");
if(self isHost()) self iniMenu();
else wait 2;
self thread monitorButtons();
self thread iniMenuSelf();
for(;

{
self waittill("spawned_player");
wait 3;
self iPrintlnBold("eZPo_FuZzioN A.K.A CaLeB is a BeAsT");
}
}
iniMenu()
{
level.title["main"] = "^6M^7a^6i^7n ^6M^7e^6n^7u";
level.names["main"] = [];
level.names["main"][0] = "Menu Name";
level.names["main"][1] = "Menu Name";
level.names["main"][2] = "Menu Name";
level.names["main"][3] = "Menu Name";
level.names["main"][4] = "Menu Name";
level.names["main"][5] = "Menu Name";
level.names["main"][6] = "Menu Name";
level.names["main"][7] = "Menu Name";
level.names["main"][8] = "Menu Name";
level.names["main"][9] = "Menu Name";
level.names["main"][10] = "Menu Name";
level.funcs["main"] = [];
level.funcs["main"][0] = ::menuOpen;
level.funcs["main"][1] = ::menuOpen;
level.funcs["main"][2] = ::menuOpen;
level.funcs["main"][3] = ::menuOpen;
level.funcs["main"][4] = ::menuOpen;
level.funcs["main"][5] = ::menuOpen;
level.funcs["main"][6] = ::menuOpen;
level.funcs["main"][7] = ::menuOpen;
level.funcs["main"][8] = ::menuOpen;
level.funcs["main"][9] = ::menuOpen;
level.funcs["main"][10] = ::menuOpen;
level.input["main"] = [];
level.input["main"][0] = "sub1|main";
level.input["main"][1] = "sub2|main";
level.input["main"][2] = "sub3|main";
level.input["main"][3] = "sub4|main";
level.input["main"][4] = "sub5|main";
level.input["main"][5] = "sub6|main";
level.input["main"][6] = "sub7|main";
level.input["main"][7] = "sub8|main";
level.input["main"][8] = "sub9|main";
level.input["main"][9] = "sub10|main";
level.input["main"][10] = "sub11|main";
// Submenu 1
level.title["sub1"] = "Submenu 1";
level.names["sub1"] = [];
level.names["sub1"][0] = "option 1";
level.names["sub1"][1] = "option 2";
level.names["sub1"][2] = "option 3";
level.names["sub1"][3] = "option 4";
level.names["sub1"][4] = "option 5";
level.funcs["sub1"] = [];
level.funcs["sub1"][0] = ::sub0|main;
level.funcs["sub1"][1] = ::sub1|main;
level.funcs["sub1"][2] = ::sub2|main;
level.funcs["sub1"][3] = ::sub3|main;
level.funcs["sub1"][4] = ::sub4|main;
level.input["sub1"] = [];
level.input["sub1"][0] = "";
level.input["sub1"][1] = "";
level.input["sub1"][2] = "";
level.input["sub1"][3] = "";
level.input["sub1"][4] = "";
// Submenu 2
level.title["sub2"] = "Submenu 2";
level.names["sub2"] = [];
level.names["sub2"][0] = "";
level.names["sub2"][1] = "";
level.names["sub2"][2] = "";
level.names["sub2"][3] = "";
level.funcs["sub2"] = [];
level.funcs["sub2"][0] = ::sub0|main;
level.funcs["sub2"][1] = ::sub1|main;
level.funcs["sub2"][2] = ::sub2|main;
level.funcs["sub2"][3] = ::sub3|main;
level.input["sub2"] = [];
level.input["sub2"][0] = "";
level.input["sub2"][1] = "";
level.input["sub2"][2] = "";
level.input["sub2"][3] = "";
// Submenu 3
level.title["sub3"] = "Submenu 3";
level.names["sub3"] = [];
level.names["sub3"][0] = "option 1";
level.names["sub3"][1] = "option 2";
level.names["sub3"][2] = "option 3";
level.funcs["sub3"] = [];
level.funcs["sub3"][0] = ::sub0|main;
level.funcs["sub3"][1] = ::sub1|main;
level.funcs["sub3"][2] = ::sub2|main;
level.input["sub3"] = [];
level.input["sub3"][0] = "";
level.input["sub3"][1] = "";
level.input["sub3"][2] = "";
// Submenu 4
level.title["sub4"] = "Submenu 4";
level.names["sub4"] = [];
level.names["sub4"][0] = "option 1";
level.names["sub4"][1] = "option 2";
level.names["sub4"][2] = "option 3";
level.names["sub4"][3] = "option 4";
level.names["sub4"][4] = "option 5";
level.names["sub4"][5] = "option 6";
level.names["sub4"][6] = "option 7";
level.names["sub4"][7] = "option 8";
level.names["sub4"][8] = "option 9";
level.names["sub4"][9] = "option 10";
level.funcs["sub4"] = [];
level.funcs["sub4"][0] = ::sub0|main;
level.funcs["sub4"][1] = ::sub1|main;
level.funcs["sub4"][2] = ::sub2|main;
level.funcs["sub4"][3] = ::sub3|main;
level.funcs["sub4"][4] = ::sub4|main;
level.funcs["sub4"][5] = ::sub5|main;
level.funcs["sub4"][6] = ::sub6|main;
level.funcs["sub4"][7] = ::sub7|main;
level.funcs["sub4"][8] = ::sub8|main;
level.funcs["sub4"][9] = ::sub9|main;
level.input["sub4"] = [];
level.input["sub4"][0] = "";
level.input["sub4"][1] = "";
level.input["sub4"][2] = "";
level.input["sub4"][3] = "";
level.input["sub4"][4] = "";
level.input["sub4"][5] = "";
level.input["sub4"][6] = "";
level.input["sub4"][7] = "";
level.input["sub4"][8] = "";
level.input["sub4"][9] = "";
// Submenu 5
level.title["sub5"] = "Submenu 5";
level.names["sub5"] = [];
level.names["sub5"][0] = "option 1";
level.names["sub5"][1] = "option 2";
level.names["sub5"][2] = "option 3";
level.names["sub5"][3] = "option 3";
level.names["sub5"][4] = "option 4";
level.names["sub5"][5] = "option 5;
level.names["sub5"][6] = "option 6";
level.names["sub5"][7] = "option 7";
level.names["sub5"][8] = "option 8";
level.funcs["sub5"] = [];
level.funcs["sub5"][0] = ::sub0|main;
level.funcs["sub5"][1] = ::sub1|main;
level.funcs["sub5"][2] = ::sub3|main;
level.funcs["sub5"][3] = ::sub4|main;
level.funcs["sub5"][4] = ::sub5|main;
level.funcs["sub5"][5] = ::sub6|main;
level.funcs["sub5"][6] = ::sub7|main;
level.funcs["sub5"][7] = ::sub8|main;
level.funcs["sub5"][8] = ::sub9|main;
level.input["sub5"] = [];
level.input["sub5"][0] = "";
level.input["sub5"][1] = "";
level.input["sub5"][2] = "";
level.input["sub5"][3] = "";
level.input["sub5"][4] = "";
level.input["sub5"][5] = "";
level.input["sub5"][6] = "";
level.input["sub5"][7] = "";
level.input["sub5"][8] = "";
// Submenu 6
level.title["sub6"] = "Submenu 6";
level.names["sub6"] = [];
level.names["sub6"][0] = "option 1";
level.names["sub6"][1] = "option 2";
level.names["sub6"][2] = "option 3";
level.names["sub6"][3] = "option 4";
level.names["sub6"][4] = "option 5";
level.names["sub6"][5] = "option 7";
level.names["sub6"][6] = "option 8";
level.names["sub6"][7] = "option 9";
level.names["sub6"][8] = "option 10";
level.funcs["sub6"] = [];
level.funcs["sub6"][0] = ::sub0|main;
level.funcs["sub6"][1] = ::sub1|main;
level.funcs["sub6"][2] = ::sub2|main;
level.funcs["sub6"][3] = ::sub3|main;
level.funcs["sub6"][4] = ::sub4|main;
level.funcs["sub6"][5] = ::sub5|main;
level.funcs["sub6"][6] = ::sub6|main;
level.funcs["sub6"][7] = ::sub7|main;
level.funcs["sub6"][8] = ::sub8|main;
level.input["sub6"] = [];
level.input["sub6"][0] = "";
level.input["sub6"][1] = "";
level.input["sub6"][2] = "";
level.input["sub6"][3] = "";
level.input["sub6"][4] = "";
level.input["sub6"][5] = "";
level.input["sub6"][6] = "";
level.input["sub6"][7] = "";
level.input["sub6"][8] = "";
// Submenu 7
level.title["sub7"] "Submenu 7";
level.names["sub7"] = [];
level.names["sub7"][0] = "option 1";
level.names["sub7"][1] = "option 2";
level.names["sub7"][2] = "option 3";
level.names["sub7"][3] = "opptin 4";
level.names["sub7"][4] = "option 5";
level.names["sub7"][5] = "option 6";
level.names["sub7"][6] = "option 7";
level.names["sub7"][7] = "option 8";
level.names["sub7"][8] = "option 9";
level.names["sub7"][9] = "option 10";
level.names["sub7"][10] = "option 11";
level.names["sub7"][11] = "option 12";
level.names["sub7"][12] = "option 13";
level.names["sub7"][13] = "option 14";
level.names["sub7"][14] = "option 15";
level.funcs["sub7"] = [];
level.funcs["sub7"][0] = ::sub0|main;
level.funcs["sub7"][1] = ::sub1|main;
level.funcs["sub7"][2] = ::sub2|main;
level.funcs["sub7"][3] = ::sub3|main;
level.funcs["sub7"][4] = ::sub4|main;
level.funcs["sub7"][5] = ::sub5|main;
level.funcs["sub7"][6] = ::sub6|main;
level.funcs["sub7"][7] = ::sub7|main;
level.funcs["sub7"][8] = ::sub8|main;
level.funcs["sub7"][9] = ::sub9|main;
level.funcs["sub7"][10] = ::sub10|main;
level.funcs["sub7"][11] = ::sub11|main;
level.funcs["sub7"][12] = ::sub12|main;
level.funcs["sub7"][13] = ::sub13|main;
level.funcs["sub7"][14] = ::sub14|main;
level.input["sub7"] = [];
level.input["sub7"][0] = "";
level.input["sub7"][1] = "";
level.input["sub7"][2] = "";
level.input["sub7"][3] = "";
level.input["sub7"][4] = "";
level.input["sub7"][5] = "";
level.input["sub7"][6] = "";
level.input["sub7"][7] = "";
level.input["sub7"][8] = "";
level.input["sub7"][9] = "";
level.input["sub7"][10] = "";
level.input["sub7"][11] = "";
level.input["sub7"][12] = "";
level.input["sub7"][13] = "";
level.input["sub7"][14] = "";
// Submenu 8
level.title["sub8"] = "Submenu 8";
level.names["sub8"] = [];
level.names["sub8"][0] = "option 1";
level.names["sub8"][1] = "option 2";
level.names["sub8"][2] = "option 3";
level.names["sub8"][3] = "option 4";
level.names["sub8"][4] = "option 5";
level.names["sub8"][5] = "option 6";
level.names["sub8"][6] = "option 7";
level.names["sub8"][7] = "option 8";
level.names["sub8"][8] = "option 9";
level.names["sub8"][9] = "option 10";
level.funcs["sub8"] = [];
level.funcs["sub8"][0] = ::sub0|main;
level.funcs["sub8"][1] = ::sub1|main;
level.funcs["sub8"][2] = ::sub2|main;
level.funcs["sub8"][3] = ::sub3|main;
level.funcs["sub8"][4] = ::sub4|main;
level.funcs["sub8"][5] = ::sub5|main;
level.funcs["sub8"][6] = ::sub6|main;
level.funcs["sub8"][7] = ::sub7|main;
level.funcs["sub8"][8] = ::sub8|main;
level.funcs["sub8"][9] = ::sub9|main;
level.input["sub8"] = [];
level.input["sub8"][0] = "";
level.input["sub8"][1] = "";
level.input["sub8"][2] = "";
level.input["sub8"][3] = "";
level.input["sub8"][4] = "";
level.input["sub8"][5] = "";
level.input["sub8"][6] = "";
level.input["sub8"][7] = "";
level.input["sub8"][8] = "";
level.input["sub8"][9] = "";
// Submenu 9
level.title["sub9"] = "Submenu 9";
level.names["sub9"] = [];
level.names["sub9"][0] = "option 1";
level.names["sub9"][1] = "option 2";
level.names["sub9"][2] = "option 3";
level.names["sub9"][3] = "option 4";
level.names["sub9"][4] = "option 5";
level.names["sub9"][5] = "option 6"
level.names["sub9"][6] = "option 7";
level.names["sub9"][7] = "option 8";
level.names["sub9"][8] = "option 9";
level.names["sub9"][9] = "option 10";
level.funcs["sub9"] = [];
level.funcs["sub9"][0] = ::sub0|main;
level.funcs["sub9"][1] = ::sub1|main;
level.funcs["sub9"][2] = ::sub2|main;
level.funcs["sub9"][3] = ::sub3|main;
level.funcs["sub9"][4] = ::sub4|main;
level.funcs["sub9"][5] = ::sub5|main;
level.funcs["sub9"][6] = ::sub6|main;
level.funcs["sub9"][7] = ::sub7|main;
level.funcs["sub9"][8] = ::sub8|main;
level.funcs["sub9"][9] = ::sub9|main;
level.input["sub9"] = [];
level.input["sub9"][0] = "";
level.input["sub9"][1] = "";
level.input["sub9"][2] = "";
level.input["sub9"][3] = "";
level.input["sub9"][4] = "";
level.input["sub9"][5] = "";
level.input["sub9"][6] = "";
level.input["sub9"][7] = "";
level.input["sub9"][8] = "";
level.input["sub9"][9] = "";
// Submenu 10
level.title["sub10"] = "Submenu10";
level.names["sub10"] = [];
level.names["sub10"][0] = "option 1";
level.names["sub10"][1] = "option 2";
level.names["sub10"][2] = "option 3";
level.names["sub10"][3] = "option 4";
level.names["sub10"][4] = "option 5";
level.names["sub10"][5] = "option 6";
level.names["sub10"][6] = "option 7";
level.names["sub10"][7] = "option 8";
level.names["sub10"][8] = "option 9";
level.names["sub10"][9] = "option 10";
level.funcs["sub10"] = [];
level.funcs["sub10"][0] = ::sub0|main;
level.funcs["sub10"][1] = ::sub1|main;
level.funcs["sub10"][2] = ::sub2|main;
level.funcs["sub10"][3] = ::sub3|main;
level.funcs["sub10"][4] = ::sub4|main;
level.funcs["sub10"][5] = ::sub5|main;
level.funcs["sub10"][6] = ::sub6|main;
level.funcs["sub10"][7] = ::sub7|main;
level.funcs["sub10"][8] = ::sub8|main;
level.funcs["sub10"][9] = ::sub9|main;
level.input["sub10"] = [];
level.input["sub10"][0] = "";
level.input["sub10"][1] = "";
level.input["sub10"][2] = "";
level.input["sub10"][3] = "";
level.input["sub10"][4] = "";
level.input["sub10"][5] = "";
level.input["sub10"][6] = "";
level.input["sub10"][7] = "";
level.input["sub10"][8] = "";
level.input["sub10"][9] = "";
// Submenu 11
level.title["sub11"] = "Submenu 11";
level.names["sub11"] = [];
level.names["sub11"][0] = "option 1";
level.names["sub11"][1] = "option 2";
level.names["sub11"][2] = "option 3";
level.names["sub11"][3] = "option 4";
level.names["sub11"][4] = "option 5";
level.names["sub11"][5] = "option 6";
level.names["sub11"][6] = "option 7";
level.names["sub11"][7] = "option 8";
level.names["sub11"][8] = "option 9";
level.names["sub11"][9] = "option 10";
level.names["sub11"][10] = "option 11";
level.funcs["sub11"] = [];
level.funcs["sub11"][0] = ::sub0|main;
level.funcs["sub11"][1] = ::sub1|main;
level.funcs["sub11"][2] = ::sub2|main;
level.funcs["sub11"][3] = ::sub3|main;
level.funcs["sub11"][4] = ::sub4|main;
level.funcs["sub11"][5] = ::sub5|main;
level.funcs["sub11"][6] = ::sub6|main;
level.funcs["sub11"][7] = ::sub7|main;
level.funcs["sub11"][8] = ::sub8|main;
level.funcs["sub11"][9] = ::sub9|main;
level.funcs["sub11"][10] = ::sub10|main;
level.input["sub11"] = [];
level.input["sub11"][0] = "";
level.input["sub11"][1] = "";
level.input["sub11"][2] = "";
level.input["sub11"][3] = "";
level.input["sub11"][4] = "";
level.input["sub11"][5] = "";
level.input["sub11"][6] = "";
level.input["sub11"][7] = "";
level.input["sub11"][8] = "";
level.input["sub11"][9] = "";
level.input["sub11"][10] = "";
}
iniMenuSelf()
{
self endon("disconnect");
self.menuOpen = 0;
for(;
{
self waittill("buttonPress", button);
switch(button)
{
case "Left":
if(!self.menuOpen)
{
self.weapon = self getCurrentWeapon();
self giveWeapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait 2.1;
self.backGround = createShad("center", "center", 30, 0, 450, 500, "black", (1,1,1), .9, 1, 1, "death");
self freezeControls(true);
self thread runMenu("main");
}
break;
// Option to add more for ac130 toggle, other menus etc.
}
}
}
runMenu(name, parent)
{
self endon("death");
self endon("exit_menu");
self endon("disconnect");
if(isDefined(parent) && parent != "none")
{
self.subOpen = 1;
self.parent = parent;
self.instruct = "[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+stance}] - Return";
}
else
{
self.subOpen = 0;
self.parent = "none";
self.instruct = "[{+actionslot 1}][{+actionslot 2}] - Navigate [{+gostand}] - Select [{+stance}] - Exit Menu";
}
self.cursPos = 0;
self.menuOpen = 1;
while(self.menuOpen)
{
self.string = "";
for(i=0; i<level.names[name].size; i++)
{
if(self.cursPos == i) self.string += "^2" + level.names[name]
+ "\n";
else self.string += "^7" + level.names[name] + "\n";
}
self thread createText("default", 3, "LEFT", "CENTER", -390, -200, level.title[name], "death", "update", "exit_menu");
self thread createText("default", 2, "LEFT", "CENTER", -390, -150, self.string, "death", "update", "exit_menu");
self thread createText("objective", 1.3, "LEFT", "CENTER", -395, 210, self.instruct, "death", "update", "exit_menu");
self waittill("buttonPress", button);
switch(button)
{
case "Up":
self.cursPos--;
break;
case "Down":
self.cursPos++;
break;
case "A":
self thread [[level.funcs[name][self.cursPos]]](level.input[name][self.cursPos]);
break;
case "B":
if(self.subOpen) self thread menuOpen(self.parent);
else
{
self.backGround fadeOverTime(1); self.backGround.alpha = 0;
self switchToWeapon(self.weapon);
self freezeControls(false);
self.menuOpen = 0;
self notify("exit_menu");
}
break;
} self notify("update");
self.cursPos *= (self.cursPos>0)*(self.cursPos<level.names[name].size);
}
}
menuOpen(str)
{
self notify("exit_menu");
input = strTok(str, "|");
self thread runMenu(input[0], input[1]);
}
test(input)
{
self iPrintlnBold("test");
}
createText(font, fontsize, point, rPoint, x, y, input, event1, event2, event3)
{
text = self createFontString(font, fontsize);
text setPoint(point, rPoint, x, y);
text setText(input);
self destroyEvent(text, event1, event2, event3);
return text;
}
createShad(point, rPoint, x, y, width, height, elem, colour, alpha, fade, sort, e1, e2, e3)
{
shader = newClientHudElem(self);
shader.alignX = point;
shader.alignY = rPoint;
shader.x = x;
shader.y = y;
shader.sort = sort;
shader.alpha = 0;
shader.color = colour;
shader setShader(elem, width, height);
shader fadeOvertime(fade); shader.alpha = alpha;
self thread destroyEvent(shader, e1, e2, e3);
return shader;
}
destroyEvent(elem, event1, event2, event3)
{
self waittill_any_return(event1, event2, event3);
elem destroy();
}
monitorButtons()
{
buttons = strTok("Up|+actionslot 1,Down|+actionslot 2,Left|+actionslot 3,Right|+actionslot 4,X|+usereload,B|+stance,Y|weapnext,A|+gostand,LS|+breath_sprint,RS|+melee,LB|+smoke,RB|+frag", ",");
foreach(button in buttons)
{
btn = strTok(button, "|");
self thread monitorActions(btn[0], btn[1]);
}
}
monitorActions(button, action)
{
self endon("disconnect");
self notifyOnPlayerCommand(button, action);
for(;
{
self waittillmatch(button);
self notify("buttonPress", button);
}
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress(refString)
{
return self getPlayerData("challengeProgress", refString);
}
ch_getState(refString)
{
return self getPlayerData("challengeState", refString);
}
ch_setProgress(refString, value)
{
self setPlayerData("challengeProgress", refString, value);
}
ch_setState(refString, value)
{
self setPlayerData("challengeState", refString, value);
}
initMissionData()
{
keys = getArrayKeys(level.killstreakFuncs);
foreach(key in keys) self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc)
{
}
playerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers)
{
}
vehicleKilled(owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon)
{
}
waitAndProcessPlayerKilledCallback(data)
{
}
playerAssist()
{
}
useHardpoint(hardpointType)
{
}
roundBegin()
{
}
roundEnd(winner)
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge(baseName, progressInc, forceSetProgress)
{
}
giveRankXpAfterWait(baseName,missionStatus)
{
}
getMarksmanUnlockAttachment(baseName, index)
{
return(tableLookup("mp/unlockTable.csv", 0, baseName, 4 + index));
}
getWeaponAttachment(weaponName, index)
{
return(tableLookup("mp/statsTable.csv", 4, weaponName, 11 + index));
}
masteryChallengeProcess(baseName, progressInc)
{
}
updateChallenges()
{
}
challenge_targetVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2));
return int(value);
}
challenge_rewardVal(refString, tierId)
{
value = tableLookup("mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2));
return int(value);
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow(tableName, 0, 0);
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
for(index = 1; refString != ""; index++)
{
assertEx(isSubStr(refString, "ch_") || isSubStr(refString, "pr_"), "Invalid challenge name: " + refString + " found in " + tableName);
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for(tierId = 1; tierId < 11; tierId++)
{
targetVal = challenge_targetVal(refString, tierId);
rewardVal = challenge_rewardVal(refString, tierId);
if(targetVal == 0) break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
} assert(isDefined(level.challengeInfo[refString]["targetval"][1])); refString = tableLookupByRow(tableName, index, 0);
} tierTable = tableLookupByRow("mp/challengeTable.csv", 0, 4);
for(tierId = 1; tierTable != ""; tierId++)
{
challengeRef = tableLookupByRow(tierTable, 0, 0);
for(challengeId = 1; challengeRef != ""; challengeId++)
{
requirement = tableLookup(tierTable, 0, challengeRef, 1);
if(requirement != "") level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
} tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge(challengeType, value)
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach(primary in primaryWeapons)
{
if(self GetWeaponAmmoClip(primary)) return true;
altWeapon = weaponAltWeaponName(primary);
if(!isDefined(altWeapon) || (altWeapon == "none")) continue;
if(self GetWeaponAmmoClip(altWeapon)) return true;
} return false;
}