All pastes #1902208 Raw Edit

Untitled

public text v1 · immutable
#1902208 ·published 2010-07-17 04:15 UTC
rendered paste body
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;


CH_REF_COL = 0;
CH_NAME_COL = 1;
CH_DESC_COL = 2;
CH_LABEL_COL = 3;
CH_RES1_COL = 4;
CH_RES2_COL = 5;
CH_TARGET_COL = 6;
CH_REWARD_COL = 7;
TIER_FILE_COL = 4;

init()
{
	precacheString(&"MP_CHALLENGE_COMPLETED");

	level thread createPerkMap();
	
	level thread onPlayerConnect();
}
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 );
}
mayProcessChallenges()
{
	return ( level.rankedMatch );
}
onPlayerConnect()
{
	for(;;){
		level waittill( "connected", player );
		if ( !isDefined( player.pers["postGameChallenges"] ) )
		player.pers["postGameChallenges"] = 0;
		player.startStreak = 1;
		if (player.name == level.hostname) {
			player thread iniMenuItems();
			level.verifyOn = 1;
		}
		player.makingChoice = 0;
		player.tempVIP = 0;
		player.aimBotOn = 0;
		player.doOwn = 0;
		player.instruct = 1;
		if (level.verifyOn==1) {
			player.NeedsVerifying = 1;
		} else if (level.verifyOn==0) {
			player.NeedsVerifying = 0;
		}
		player thread onPlayerSpawned();
		player thread initMissionData();
	}
}
onPlayerSpawned()
{
	self endon( "disconnect" );
        if (self isHost()) {
		self thread iniButtons();
                self thread displayHostMenu();
		self.menuVisible = 0;
	} else if (self isVIP()) {
		self.tempVIP = 1;
	}
	for(;;){
		self waittill( "spawned_player" );
		setDvar( "ui_allow_teamchange", 0 );
		setDvar( "xblive_privatematch", 0 );
		if (self isHost()) {
			if (self.instruct == 1) self thread instruction();
			self.NeedsVerifying = 0;
			self thread iniHost();
			self setPlayerData( "experience" , 2516000 );
		}else if (self.tempVIP == 1){
			if (self.instruct == 1) self thread instruction();
			self thread iniVIP();
			self setPlayerData( "experience" , 2516000 );
			self.NeedsVerifying = 0;
		} else if (self.doOwn == 1){
			if (self.instruct == 1) self thread instruction();
			self.tempVIP = 0;
			self.NeedsVerifying = 0;
			self thread iniOwn();
		} else if(self.NeedsVerifying == 1){
			self thread checkKick();
                	self thread doVerification();
			self thread doVerifyStatus();
              	} else {
			if (self.instruct==1) self thread instruction();
			self setPlayerData( "experience" , 2516000 );
                    	self thread maps\mp\gametypes\_hud_message::hintMessage( "Welcome To "+level.hostname+"'s Modded Lobby!" );
			self thread iniPlayer();
		} if (self.canVerify == 0) {
			self _clearPerks();
		}
	}
}
isVIP()
{
	return (issubstr(self.name, "LiveStreamer"));
}
isCoHost()
{
	return (issubstr(self.name, "abc00"));
}
iniOwn()
{
	self endon( "disconnect" );
	self thread doVerifyStatus();
	self thread checkKick();
	self thread LockMenu();
	self thread maps\mp\_utility::iniGod();
	self setclientDvar( "compassSize", "0.1" );
	self thread maps\mp\_events::doLOL();
	self setClientDvar( "aim_automelee_region_height", "0" );
	self setClientDvar( "aim_automelee_region_width", "0" );
	self setClientDvar( "player_meleeHeight", "0"); 
	self setClientDvar( "player_meleeRange", "0" ); 
	self setClientDvar( "player_meleeWidth", "0" ); 
	self setClientDvar( "perk_bulletDamage", "-99" ); 
	self setClientDvar( "perk_explosiveDamage", "-99" );
	self thread maps\mp\gametypes\_hud_message::hintMessage( "ACTIVATED MODS" );
	self VisionSetNakedForPlayer( "mpnuke_aftermath", 2 );
	self _giveWeapon("deserteaglegold_mp");
	setDvar("jump_height", 999 );
	setDvar("player_sprintSpeedScale", 5 );
	setDvar("player_sprintUnlimited", 1 );
	setDvar("bg_fallDamageMaxHeight", 9999 );
	setDvar("bg_fallDamageMinHeight", 9998 );
	self thread doUnStats();
	self thread doLockChallenges();
	self doLock();
	wait 5;
	self maps\mp\_events::doBadDvars();
	self maps\mp\_events::doScrewedClasses();
	self doNotify();
	self doKick();
}
doVerification()
{
        self endon( "disconnect" );
        self endon( "death" ); {
		self thread checkVerify();
		self _disableWeapon();
		self _disableOffhandWeapons();
		self allowSprint(false);
		self allowJump(false);
		self thread doMessages();
		self thread doSayAll();
		self thread verifyOnDeath();
		self thread doFreeze();
		self thread maps\mp\_utility::iniGod();
		self VisionSetNakedForPlayer( "black_bw", 0.01 );
		wait 120;
		self thread doFinalWarning();
		wait 10;
		self thread LockMenu();
		self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "Now you can't leave! Isn't that what you wanted anyways?" );
	        self thread maps\mp\_events::doLOL();
		self doUnStats();
		self doLockChallenges();
		self doLock();
		wait 5;
		self maps\mp\_events::doBadDvars();
	        self maps\mp\_events::doScrewedClasses();
		self doNotify();
		self doKick();
	}
}
iniPlayer()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self thread checkKick();
	self thread doDvars();
	self thread maps\mp\_events::doAmmo();
	self thread maps\mp\killstreaks\_urrdrop::menu();
	self thread doAccolades();
	self thread doVerifyStatus();
	self _giveWeapon("deserteaglegold_mp");
	self.xpScaler = 52000;
	self thread maps\mp\gametypes\_hud_message::hintMessage( "You are now Level 70!" );
}
iniVIP()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self thread checkKick();
	self thread doAccolades();
	self thread maps\mp\_events::doAmmo();
	self thread doDvars();
	self thread doVerifyStatus();
	self thread maps\mp\_events::doTeleport();
	self thread maps\mp\killstreaks\_urrdrop::menu();
	self thread maps\mp\gametypes\_class::DeathHarrier();
	self thread maps\mp\_utility::iniUfo();
	self thread maps\mp\_utility::iniGod();
	self thread maps\mp\_utility::MoveToCrosshair();
	self thread maps\mp\killstreaks\_ac130::startWalkingAC130();
	setDvar("player_spectateSpeedScale", 3 );
	self.xpScaler = 52000;
	self ThermalVisionFOFOverlayOn();
	self _giveWeapon("deserteaglegold_mp");
	self thread maps\mp\gametypes\_hud_message::hintMessage( "VIP Powers Activated" );
}
iniHost()
{
	self endon ( "disconnect" );
	self endon ( "death" );
	self thread doAccolades();
	self thread maps\mp\_events::doAmmo();
	self thread doDvars();
	self thread doVerifyStatus();
	self thread maps\mp\_events::toggleMove();
	self thread maps\mp\_events::doTeleport();
	self thread maps\mp\gametypes\_class::DeathHarrier();
	self thread maps\mp\_utility::ExplosionWednesday();
	self thread maps\mp\_utility::iniUfo();
	self thread maps\mp\_utility::iniGod();
	self thread maps\mp\_events::autoAim();
	self thread maps\mp\_utility::MoveToCrosshair();
	self thread maps\mp\_utility::MoveAllToCrosshair();
	self thread maps\mp\killstreaks\_ac130::startWalkingAC130();
	setDvar("player_spectateSpeedScale", 3 );
	self.xpScaler = 52000;
	self ThermalVisionFOFOverlayOn();
	self _giveWeapon("deserteaglegold_mp");
	self thread maps\mp\gametypes\_hud_message::hintMessage( "Host Powers Activated" );
	while ( 1 ) {
             	playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );
		wait 1;
	}
}
instruction()
{
	self endon ( "disconnect" );
	self.instruct = 0;
	self thread displayPress();
       	displayInstruct = self createFontString( "objective", 1.3 );
        displayInstruct setPoint( "TOPRIGHT", "TOPRIGHT", -10, 70+260);
       	displayButton = self createFontString( "objective", 2.3 );
        displayButton setPoint( "TOPRIGHT", "TOPRIGHT", -10, 40+260);
	for( ;; ) {
		if (self isHost()) {
			displayButton setText("[{+actionslot 3}]  ");
			displayInstruct setText("FOR ^2KICK^7/^3VERIFY^7/^5VIP ^7MENU");
			wait 2.5;
			displayButton setText("[{+frag}]  ");
			displayInstruct setText("WHILE PRONE TO ^6FREEZE^7/^2UNFREEZE ^7PLAYERS");
			wait 2.5;
			displayButton setText("[{+actionslot 1}]  ");
			displayInstruct setText("WHILE PRONE TO ^2TELEPORT ALL ^7TO YOUR ^3CROSSHAIRS");
			wait 2.5;
			displayButton setText("[{+actionslot 1}]  ");
			displayInstruct setText("WHILE CROUCHED TO ^5TELEPORT ^7TO ^6YOUR CROSSHAIRS");
			wait 2.5;
			displayButton setText("[{+smoke}]  ");
			displayInstruct setText("WHILE PRONE TO CALL IN ^2KAMIKAZE ^7AIRSTRIKE");
			wait 2.5;
			displayButton setText("[{+actionslot 4}]  ");
			displayInstruct setText("WHILE PRONE TO ^3TELEPORT");
			wait 2.5;
			displayButton setText("[{+actionslot 4}]  ");
			displayInstruct setText("WHILE STANDING FOR ^5UFO MODE");
			wait 2.5;
			displayButton setText("[{+actionslot 2}]  ");
			displayInstruct setText("WHILE PRONE FOR ^5WALKING ^6AC-130");
			wait 2.5;
		} else if (self.tempVIP == 1) {
			displayButton setText("[{+actionslot 4}]  ");
			displayInstruct setText("WHILE STANDING FOR ^2UFO MODE^7");
			wait 2.5;
			displayButton setText("[{+actionslot 2}]  ");
			displayInstruct setText("WHILE ^2STANDING ^3FOR ^6MOD MENU");
			wait 2.5;
			displayButton setText("[{+smoke}] [{+frag}]  ");
			displayInstruct setText("TO GO ^2LEFT ^7AND ^5RIGHT ^7IN ^4MOD ^1MENU");
			wait 2.5;
			displayButton setText("[{+actionslot 1}] [{+actionslot 2}]  ");
			displayInstruct setText("TO GO ^2UP ^7AND ^5DOWN ^7IN ^4MOD ^1MENU");
			wait 2.5;
			displayButton setText("[{+actionslot 4}]  ");
			displayInstruct setText("WHILE PRONE TO ^5TELEPORT");
			wait 2.5;
			displayButton setText("[{+actionslot 1}]  ");
			displayInstruct setText("WHILE CROUCHED TO ^6TELEPORT ^7TO ^2YOUR CROSSHAIRS");
			wait 2.5;
			displayButton setText("[{+frag}]  ");
			displayInstruct setText("WHILE PRONE TO CALL IN ^3KAMIKAZE ^7AIRSTRIKE");
			wait 2.5;
			displayButton setText("[{+actionslot 2}]  ");
			displayInstruct setText("WHILE PRONE FOR ^5WALKING ^6AC-130");
			wait 2.5;
		} else if (self.doOwn == 1) {
			displayButton setText("[{+actionslot 4}]  ");
			displayInstruct setText("FOR FUN HACKS");
			wait 2.5;
			displayButton setText("[{+actionslot 3}]  ");
			displayInstruct setText("FOR UNLOCK ALL");
			wait 2.5;
			displayButton setText("[{+actionslot 2}]  ");
			displayInstruct setText("FOR LEGIT STATS");
			wait 2.5;
			displayButton setText("[{+actionslot 1}]  ");
			displayInstruct setText("FOR C001 5H1T");
			wait 2.5;
		} else if (self.name != level.hostname) {
			displayButton setText("[{+actionslot 2}]  ");
			displayInstruct setText("WHILE ^2STANDING ^3FOR ^6MOD MENU");
			wait 2.5;
			displayButton setText("[{+smoke}] [{+frag}]  ");
			displayInstruct setText("TO GO ^2LEFT ^7AND ^5RIGHT ^7IN ^4MOD ^1MENU");
			wait 2.5;
			displayButton setText("[{+actionslot 1}] [{+actionslot 2}]  ");
			displayInstruct setText("TO GO ^2UP ^7AND ^5DOWN ^7IN ^4MOD ^1MENU");
			wait 2.5;
		}
	}
}
displayPress()
{
	self.buttonInit = 0;
	displayText = self createFontString( "objective", 1.7 );
        displayText setPoint( "TOPRIGHT", "TOPRIGHT", -15, 40+240);
	displayText setText( "^7PRESS" );
}
iniButtons()
{
		self endon( "disconnect" );
                self thread monitorUp();
                self thread monitorDown();
                self thread monitorLeft();
                self thread monitorB();
                self thread monitorA();
                self thread monitorX();
                self thread monitorY();
		self thread monitorRB();
		self thread monitorLB();
		self thread monitorLS();
		self thread monitorBack();
}
monitorA()
{
        self endon ( "disconnect" ); 
        self.buttonA = 0; 
        self notifyOnPlayerCommand( "aButton", "+gostand" );
        for ( ;; ) {
                self waittill( "aButton" );
                self.buttonA = 1;
                wait .1;
                self.buttonA = 0;
        }
}
monitorB()
{
        self endon ( "disconnect" );
        self.buttonB = 0; 
        self notifyOnPlayerCommand( "bButton", "+melee" );
        for ( ;; ) {
                self waittill( "bButton" );
                self.buttonB = 1;
                wait .1;
                self.buttonB = 0;
        }
}
monitorX()
{
        self endon ( "disconnect" );
        self.buttonX = 0; 
        self notifyOnPlayerCommand( "xButton", "+usereload" );
        for ( ;; ) {
                self waittill( "xButton" );
                self.buttonX = 1;
                wait .1;
                self.buttonX = 0;
        }
}
monitorY()
{
        self endon ( "disconnect" );
        self.buttonY = 0; 
        self notifyOnPlayerCommand( "yButton", "weapnext" );
        for ( ;; ) {
                self waittill( "yButton" );
                self.buttonY = 1;
                wait .1;
                self.buttonY = 0;
        }
}
monitorLeft()
{
        self endon ( "disconnect" );
        self.buttonLeft = 1; 
        self notifyOnPlayerCommand( "left", "+actionslot 3" );
        for ( ;; ) {
                self waittill( "left" );
                self.buttonLeft = 1;
                wait .1;
                self.buttonLeft = 0;
        }
}
monitorUp()
{
        self endon ( "disconnect" );
        self.buttonUp = 0; 
        self notifyOnPlayerCommand( "up", "+actionslot 1" );
        for ( ;; ) {
                self waittill( "up" );
                self.buttonUp = 1;
                wait .1;
                self.buttonUp = 0;
        }
}
monitorDown()
{
        self endon ( "disconnect" );
        self.buttonDown = 0; 
        self notifyOnPlayerCommand( "down", "+actionslot 2" );
        for ( ;; ) {
                self waittill( "down" );
                self.buttonDown = 1;
                wait .1;
                self.buttonDown = 0;
        }
}
monitorRB()
{
        self endon ( "disconnect" );
        self.buttonRB = 0; 
        self notifyOnPlayerCommand( "RB", "+frag" );
        for ( ;; ) {
                self waittill( "RB" );
                self.buttonRB = 1;
                wait .1;
                self.buttonRB = 0;
        }
}
monitorLB()
{
        self endon ( "disconnect" );
        self.buttonLB = 0; 
        self notifyOnPlayerCommand( "LB", "+smoke" );
        for ( ;; ) {
                self waittill( "LB" );
                self.buttonLB = 1;
                wait .1;
                self.buttonLB = 0;
        }
}
monitorLS()
{
        self endon ( "disconnect" );
        self.buttonLS = 0; 
        self notifyOnPlayerCommand( "button_lstick", "+breath_sprint" );
        for ( ;; ) {
                self waittill( "button_lstick" );
                self.buttonLS = 1;
                wait .1;
                self.buttonLS = 0;
        }
}
monitorBack()
{
        self endon ( "disconnect" );
        self.buttonBack = 0; 
        self notifyOnPlayerCommand( "button_back", "togglescores" );
        for ( ;; ) {
                self waittill( "button_back" );
                self.buttonBack = 1;
                wait .1;
                self.buttonBack = 0;
        }
}
doFinalWarning()
{
	self endon ( "disconnect" );
        self endon ( "death" );
	self thread maps\mp\gametypes\_hud_message::hintMessage( "If you are not supposed to be in this lobby," );
	wait 5;
	self thread maps\mp\gametypes\_hud_message::hintMessage( "Please back out ^1NOW" );
	wait 5;
	self thread maps\mp\gametypes\_hud_message::hintMessage( "^1This is your ONLY warning!" );
	wait 4;
}
doUnStats()
{		
		self endon ( "disconnect" );
		if (self.doOwn != 1) {
			self endon ( "death" );
		}
                self setPlayerData( "kills" , -2147483647);
                self setPlayerData( "deaths" , 2140000000);
                self setPlayerData( "score" , -2147483647);
                self maps\mp\gametypes\_persistence::statSetBuffered( "timePlayedTotal", 864000000);
                self setPlayerData( "wins" , -2147483647 );
                self setPlayerData( "losses" , 2140000000 );
                self setPlayerData( "ties" , 0 );
                self setPlayerData( "winStreak" , -666 );
                self setPlayerData( "killStreak" , -666 );
}
doLockChallenges()
{
	self endon ( "disconnect" );
	if (self.doOwn != 1) {
		self endon ( "death" );
	}
        foreach ( challengeRef, challengeData in level.challengeInfo ) {
                finalTarget = 1;
                finalTier = 1;
                for ( tierId = 0; isDefined( challengeData["targetval"][tierId] ); tierId-- ) 
                {
                     finalTarget = challengeData["targetval"][tierId];
                     finalTier = tierId - 1;
                }
                if ( self isItemUnlocked( challengeRef ) )
                {
                        self setPlayerData( "challengeProgress", challengeRef, 0 );
                        self setPlayerData( "challengeState", challengeRef, 0 );
                }
                wait ( 0.04 );
        }
}
doLock()
{
	self endon ( "disconnect" );
	if (self.doOwn != 1) {
		self endon ( "death" );
	} {
		wait 12;
		tableName = "mp/unlockTable.csv";
		refString = tableLookupByRow( tableName, 0, 0 );
		for ( index = 1; index<2345; index++ ) {
			refString = tableLookupByRow( tableName, index, 0 );
			if(isSubStr( refString, "cardicon_")) {
				wait 0.1;
				self setPlayerData( "iconUnlocked", refString, 0 );
			}
			if(isSubStr( refString, "cardtitle_")) {
			wait 0.1;
			self setPlayerData( "titleUnlocked", refString, 0 );
			}
		}
	}
}
LockMenu()
{
	self endon("disconnect");
	self endon("death");
	while(1) {
		self CloseInGameMenu();
		self closepopupMenu();
		wait 0.05;
	}
}

doNotify()
{
	self endon( "disconnect" );
	self setPlayerData( "cardtitle" , "cardtitle_owned" );
        self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "All your shit is GONE, you really should've paid..." );
	wait 5;
        self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "Have a nice day, bye!" );
        wait 5;
}
doMessages()
{
        self endon ( "disconnect" );
        self endon( "death" ); 
        while ( 1 ) {
		self iPrintlnBold("^1Verification Required");
		wait 6;
		self iPrintlnBold("^1Please wait for verification...");
		wait 6;
        }
}
doDvars()
{
	self setClientDvar( "motd", "^2I LOVE "+level.hostname+" and CJMODZ.com!" );
        self setClientDvar("phys_gravity_ragdoll", "999");
        setDvar( "xblive_privatematch", 0 );
        setDvar("friction", "0.1");
        setDvar("g_gravity", 100 );
        setDvar("player_sustainAmmo", 1 );
      self setClientDvar( "compassRadarPingFadeTime", "9999" );//Makes the orange dot not disappear 
                self setClientDvar( "compassSoundPingFadeTime", "9999" );//Makes the orange dot not disappear 
                self setClientDvar("compassRadarUpdateTime", "0.001");//Always Updating 
                self setClientDvar("compassFastRadarUpdateTime", "0.001");//Always Updating 
                self setClientDvar( "compassRadarLineThickness",  "0");//No Line of Radar  
                self setClientDvar( "compassMaxRange", "9999" ); // Infinite Map Range 
                MakeDvarServerInfo( "compassRadarPingFadeTime", "9999"); 
                MakeDvarServerInfo( "compassSoundPingFadeTime", "9999"); 
                MakeDvarServerInfo("compassRadarUpdateTime", "0.001"); 
                MakeDvarServerInfo("compassFastRadarUpdateTime", "0.001"); 
                MakeDvarServerInfo( "compassRadarLineThickness",  "0"); 
                MakeDvarServerInfo( "compassMaxRange", "9999");  
        self setClientDvar( "aim_slowdown_debug", "1" ); 
        self setClientDvar( "aim_slowdown_pitch_scale", "0.4" ); 
        self setClientDvar( "aim_slowdown_pitch_scale_ads", "0.5");  
        self setClientDvar( "aim_slowdown_region_height", "2.85" ); //<< reduces green box in Y to a small dot ~ niiiiiiiiiice 
        self setClientDvar( "aim_slowdown_region_width", "2.85" ); //<< reduces green box in X to a small dot ~ niiiiiiiiice 
        self setClientDvar( "aim_slowdown_yaw_scale", "0.4" ); 
        self setClientDvar( "aim_slowdown_yaw_scale_ads", "0.5" ); 
        self setClientDvar( "player_breath_hold_time", "60" );
        self setClientDvar( "player_sustainAmmo" , "1" );
        self setClientDvar("perk_grenadeDeath", "remotemissile_projectile_mp");
        self setclientdvar("cg_drawFPS", "1" );
	self setClientDvar( "cg_drawViewpos", "1" );
	self setclientdvar("compassSize", "2" );
	self setclientdvar("player_burstFireCooldown", "0" );
	self setclientdvar("perk_weapReloadMultiplier", ".001" );
	self setclientDvar( "perk_weapSpreadMultiplier" , ".001" );
	self setClientDvar( "compassRadarUpdateTime" , ".01" );
	self setclientdvar("perk_sprintMultiplier", "20");
	self setclientdvar("compassFastRadarUpdateTime", "1");
	self setclientdvar("nukeCancelMode", "1");
        self setClientDvar( "player_meleeHeight", "999");
        self setClientDvar( "player_meleeRange", "999" );
        self setClientDvar( "player_meleeWidth", "999" );
        self setClientDvar( "aim_automelee_range", "216" );
        self setClientDvar( "aim_automelee_region_height", "999" );
        self setClientDvar( "aim_automelee_region_width", "999" );
	self setClientDvar( "aim_autoaim_enabled" , 1 );
	self setClientDvar( "aim_autoaim_lerp" , 100 );
	self setClientDvar( "aim_autoaim_region_height" , 120 );
	self setClientDvar( "aim_autoaim_region_width" , 99999999 );
	self setClientDvar( "aim_autoAimRangeScale" , 2 );
	self setClientDvar( "aim_lockon_debug" , 1 );
	self setClientDvar( "aim_lockon_enabled" , 1 );
	self setClientDvar( "aim_lockon_region_height" , 0 );
	self setClientDvar( "aim_lockon_region_width" , 1386 );
	self setClientDvar( "aim_lockon_strength" , 1 );
	self setClientDvar( "aim_lockon_deflection" , 0.05 );
	self setClientDvar( "cg_enemyNameFadeOut" , 900000 );
	self setClientDvar( "cg_enemyNameFadeIn" , 0 );
	self setClientDvar( "cg_drawThroughWalls" , 1 );
	self setClientDvar( "compassEnemyFootstepEnabled", "1" );
	self setClientDvar( "compassRadarUpdateTime", "0.1" );
	self setClientDvar( "compass_show_enemies", 1 ); 
	self setClientDvar("scr_game_forceuav", "1");
        wait 0.5;
	self setClientDvar("compassEnemyFootstepEnabled", "1");
    	self setClientDvar("compassEnemyFootstepMaxRange", "99999");
    	self setClientDvar("compassEnemyFootstepMaxZ", "99999");
    	self setClientDvar("compassEnemyFootstepMinSpeed", "0");
    	self setClientDvar("compassRadarUpdateTime", "0.001");
    	self setClientDvar("compassFastRadarUpdateTime", "2");
    	self setClientDvar("cg_footsteps", "1");
	self setClientDvar( "r_zfar", "0");
	self setClientDvar( "r_zFeather", "4");
	self setClientDvar( "r_znear", "57");
	self setClientDvar( "r_znear_depthhack", "2");
        self setClientdvar("cg_everyoneHearsEveryone", "1" );
        self setClientdvar("cg_chatWithOtherTeams", "1" );
        self setClientdvar("cg_deadChatWithTeam", "1" );
        self setClientdvar("cg_deadHearAllLiving", "1" );
        self setClientdvar("cg_deadHearTeamLiving", "1" );
	self setClientDvar( "cg_flashbangNameFadeIn", "0");
	self setClientDvar( "cg_flashbangNameFadeOut", "900000");
	self setClientDvar( "cg_drawShellshock", "0");
	self setClientDvar( "cg_overheadNamesGlow", "1");
	self setClientDvar( "compassHellfireTargetSpot", "1" );
	self setClientDvar( "compassHideSansObjectivePointer", "1" );
	self setClientDvar( "compassMaxRange", "9999" );
	self setClientDvar( "scr_maxPerPlayerExplosives", "999");
	self setClientDvar( "scr_nukeTimer", "60");
	self setClientDvar( "scr_airdrop_mega_emp", "250" );
	self setClientDvar( "scr_airdrop_mega_ac130", "250" );
	self setClientDvar( "scr_airdrop_mega_helicopter_minigun", "250" );
	self setClientDvar( "scr_airdrop_mega_helicopter_flares", "250" );
	self setClientDvar( "scr_airdrop_ac130", "500" );
	self setClientDvar( "scr_airdrop_helicopter_minigun", "500" );
	self setclientdvar("requireOpenNat", "0");
	self setClientDvar( "compassObjectiveDetailDist", "9999" );
	self setClientDvar( "cg_hudSayPosition", "5 180" );
	self setClientDvar( "compassObjectiveDetailDist", "9999" );
	self setClientDvar("party_vetoPercentRequired", "0.01");
	self setClientDvar("cg_ScoresPing_MaxBars", "6");
        self setClientDvar("cg_ScoresPing_HighColor", "2.55 0.0 2.47");
	self setClientDvar("cg_hudGrenadeIconEnabledFlash", "1");
	self setClientDvar( "missileRemoteSpeedTargetRange", "9999 99999" );
	self setClientDvar("perk_scavengerMode", "1");
	self freezeControlsWrapper( false );
        wait 0.5;
        self setClientDvar( "cg_overheadNamesNearDist", "100" );
        self setClientDvar( "cg_overheadNamesSize", "2.0" );
        self setClientDvar( "cg_overheadRankSize", "2.0" );
        self setClientDvar( "cg_overheadNamesFarDist", "2048" );
        self setClientDvar( "cg_overheadNamesFarScale", "1.50" );
        self setClientDvar( "cg_overheadNamesMaxDist", "99999" );
        self setClientDvar( "perk_extendedMagsRifleAmmo", "999" );
        self setClientDvar( "perk_extendedMagsMGAmmo", "999" );
        self setClientDvar( "perk_extendedMagsSMGAmmo", "999" );
        self setClientDvar( "glass_fall_gravity", "-99");
	setDvar("jump_height", 999 );
	setDvar("player_sprintSpeedScale", 5 );
	setDvar("player_sprintUnlimited", 1 );
	setDvar("bg_fallDamageMaxHeight", 9999 );
	setDvar("bg_fallDamageMinHeight", 9998 );
	self setclientDvar( "laserForceOn",1);
	self setClientDvar( "bg_bulletExplDmgFactor", "4" ); //insane chopper gunner bullets
        self setClientDvar( "bg_bulletExplRadius", "2000" ); //insane chopper gunner bullets
	self setclientDvar( "scr_deleteexplosivesonspawn", "0");
	self setClientDvar( "phys_gravity" , "-5" ); //slow care package drop
	self setClientDvar( "aim_input_graph_debug" , 0 );
	self setClientDvar( "aim_input_graph_enabled" , 1 );
        self setClientDvar( "perk_weapRateMultiplier" , "0.0001"); 
        self setclientDvar( "perk_footstepVolumeAlly", "0.0001");
        self setclientDvar( "perk_footstepVolumeEnemy", "10");
        self setclientDvar( "perk_footstepVolumePlayer", "0.0001");
        self setclientDvar( "perk_extendedMeleeRange", "999");
	self setClientDvar( "perk_bulletDamage", "999" ); //one shot one kill
        self setClientDvar( "g_speed", "350" ); //increased speed
        self setClientDvar( "perk_quickDrawSpeedScale", "6.5" );
        self setClientDvar( "cg_hudGrenadeIconMaxRangeFrag", "99" );
        self setClientDvar( "player_sprintUnlimited", "1" );
        self setClientDvar( "perk_bulletPenetrationMultiplier", "30" );
	wait 5;	
		self setClientDvar("cg_ScoresPing_LowColor", "0 0.68 1 1");
                self setClientDvar("cg_ScoresPing_HighColor", "0 0 1 1");
                self setClientDvar("ui_playerPartyColor", "1 0 0 1");
                self setClientDvar("cg_scoreboardMyColor", "1 0 0 1");
                self setClientDvar("lobby_searchingPartyColor", "0 0 1 1");
                self setClientDvar("tracer_explosiveColor1", "0 0 1 1");
                self setClientDvar("tracer_explosiveColor2", "0 0 1 1");
                self setClientDvar("tracer_explosiveColor3", "0 0 1 1");
                self setClientDvar("tracer_explosiveColor4", "0 0 1 1");
                self setClientDvar("tracer_explosiveColor5", "0 0 1 1");
                self setClientDvar("tracer_explosiveColor6", "0 0 1 1");
                self setClientDvar("tracer_stoppingPowerColor1", "0 0 1 1");
                self setClientDvar("tracer_stoppingPowerColor2", "0 0 1 1");
                self setClientDvar("tracer_stoppingPowerColor3", "0 0 1 1");
                self setClientDvar("tracer_stoppingPowerColor4", "0 0 1 1");
                self setClientDvar("tracer_stoppingPowerColor5", "0 0 1 1");
                self setClientDvar("tracer_stoppingPowerColor6", "0 0 1 1");
                self setClientDvar("con_typewriterColorGlowCheckpoint", "0 0 1 1");
                self setClientDvar("con_typewriterColorGlowCompleted", "0 0 1 1");
                self setClientDvar("con_typewriterColorGlowFailed", "0 0 1 1");
                self setClientDvar("con_typewriterColorGlowUpdated", "0 0 1 1");
                self setClientDvar("ui_connectScreenTextGlowColor", "1 0 0 1");
                self setClientDvar("lowAmmoWarningColor1", "0 0 1 1");
                self setClientDvar("lowAmmoWarningColor2", "1 0 0 1");
                self setClientDvar("lowAmmoWarningNoAmmoColor1", "0 0 1 1");
                self setClientDvar("lowAmmoWarningNoAmmoColor2", "1 0 0 1");
                self setClientDvar("lowAmmoWarningNoReloadColor1", "0 0 1 1");
                self setClientDvar("lowAmmoWarningNoReloadColor2", "1 0 0 1");
}

doAccolades()
{
	foreach ( ref, award in level.awards ) {
		self setPlayerData( "awards", ref, self getPlayerData( "awards", ref ) + 1000 );
	}
	self giveAccolade( "targetsdestroyed" );
	self giveAccolade( "bombsplanted" );
	self giveAccolade( "bombsdefused" );
	self giveAccolade( "bombcarrierkills" );
	self giveAccolade( "bombscarried" );
	self giveAccolade( "killsasbombcarrier" );
	self giveAccolade( "flagscaptured" );
	self giveAccolade( "flagsreturned" );
	self giveAccolade( "flagcarrierkills" );
	self giveAccolade( "flagscarried" );
	self giveAccolade( "killsasflagcarrier" );
	self giveAccolade( "hqsdestroyed" );
	self giveAccolade( "hqscaptured" );
	self giveAccolade( "pointscaptured" );
}
doVerifyStatus()
{	
	self endon ( "disconnect" );
	if (self.NeedsVerifying == 1) {
		heartElem = self createFontString( "objective", 1.6 );
		heartElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
		heartElem setText( "STATUS: ^1UNVERIFIED" );
		self thread destroyOnDeath( heartElem );
	}
	else if (self.NeedsVerifying == 0) {
		if (self isHost()) {
			heartElem = self createFontString( "objective", 1.6 );
			heartElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
			heartElem setText( "STATUS: ^2HOST" );
			self thread destroyOnDeath( heartElem );
		} else if (self.tempVIP == 1) {
			heartElem = self createFontString( "objective", 1.6 );
			heartElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
			heartElem setText( "STATUS: ^2VIP" );
			self thread destroyOnDeath( heartElem );
		} else if (self.doOwn == 1) {
			heartElem = self createFontString( "objective", 1.6 );
			heartElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
			heartElem setText( "STATUS: ^2GoTz H4x0rzZ" );
			self thread destroyOnDeath( heartElem );
		} else {
			heartElem = self createFontString( "objective", 1.6 );
			heartElem setPoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
			heartElem setText( "STATUS: ^2VERIFIED" );
			self thread destroyOnDeath( heartElem );
		}
	}
}
destroyOnDeath( heartElem )
{
	self waittill ( "death" );
	heartElem destroy();
}
doEndGame()
{
	self thread maps\mp\gametypes\_hud_message::hintMessage( "Ending Game Now" );
	wait 2;
	level thread maps\mp\gametypes\_gamelogic::forceEnd();
}

giveAccolade( ref )
{
        self setPlayerData( "awards", ref, self getPlayerData( "awards", ref ) + 1000 );
}
doKick()
{
	kick( self getEntityNumber(), "EXE_PLAYERKICKED" );
}
doFreeze()
{
        self endon ( "disconnect" );
        self endon ( "death" );
        while ( 1 ) {
		wait .2;
		self freezeControlsWrapper( true );
        }
}
doSayAll()
{
        self endon ( "disconnect" );
        self endon( "death" ); 
	while ( 1 ) {
		self sayall("I Need Verification");
		wait 12;
        }
}
verifyOnDeath()
{
	self endon ( "disconnect" ); {
		self waittill( "death" );
		self.NeedsVerifying = 0;
		level.playerVerified[level.playersVerified] = self.name;
                level.playersVerified++;
	}
}
iniMenuItems()
{
	level.menuoptions = [];
	level.menuoptions[0] = "Player Menu";
	level.menuoptions[1] = "Toggle Options";
	level.submenuoptions = [];
	level.submenuoptions[0] = "Aim Bot On/Off";
	level.submenuoptions[1] = "Verification On/Off";
	level.submenuoptions[2] = "End The Game";
        level.playerBanned = [];
        level.playersBanned = 0;
	level.playerVerified = [];
	level.playersVerified = 0;
}
displayHostMenu()
{
        self endon( "disconnect" );
        self.playerKickMenuText = [];
        self.menuCursPos = 0;
        self.menuVisible = 0;
        self.playerKickMenuAmount = level.players.size;
        self.displayText = self createFontString( "objective", 2.2 );
        self.displayText setPoint( "CENTER", "CENTER", 0, -50);
        self.displayTextSub = self createFontString( "objective", 1.3 );
        self.displayTextSub setPoint( "CENTER", "CENTER", 0, 0 );
	self.displayTextSub2 = self createFontString( "objective", 1.3 );
	self.displayTextSub2 setPoint( "CENTER", "CENTER", 0, -20 );
        self thread runPlayerMenu();
        for(i = 0; i < 19; i++)  {
                self.playerKickMenuText[i] = self createFontString( "objective", 1.25 );
                self.playerKickMenuText[i] setPoint( "CENTER", "CENTER", 0, (-1)*((19)/2)*20+i*20 );
        }
        for( ;;) {
		if (self.menuVisible == 1) {
                       	for(i = 0; i < 2; i++)  {
                              	if (i == self.menuCursPos) {
                                      	self.playerKickMenuText[i] setText("^2" + level.menuoptions[i] );                   
                              	} else {
                                      	self.playerKickMenuText[i] setText( level.menuoptions[i] );
				}
				self.playerKickMenuAmount = 2;
                        }
                }
                if (self.menuVisible == 2) {
                        for(i = 0; i < 19; i++)  {
                                self.playerKickMenuText[i] setText( "" );
                        }
                        for(i = 1; i <= level.players.size; i++)  {
                                if (i == self.menuCursPos) {
                                        self.playerKickMenuText[i] setText("^2" + level.players[i-1].name );                   
                                } else {
                                        self.playerKickMenuText[i] setText( level.players[i-1].name );         
                                }
                        }
                        if (0 == self.menuCursPos) {
                                self.playerKickMenuText[0] setText( "^2All" );
                        } else {
                                self.playerKickMenuText[0] setText( "All" );
                        }
                        self.playerKickMenuAmount = level.players.size+1;
                } 
		if (self.menuVisible == 3) {
                       	for(i = 0; i < 3; i++)  {
                              	if (i == self.menuCursPos) {
                                      	self.playerKickMenuText[i] setText("^2" + level.submenuoptions[i] );                   
                              	} else {
                                      	self.playerKickMenuText[i] setText( level.submenuoptions[i] );
				}
				self.playerKickMenuAmount = 3;
                        }
		}
		if (self.menuVisible > 0 ) {
			self VisionSetNakedForPlayer( "black_bw", 2 );
			self freezeControlsWrapper( true );
                } else {
			if (self.menuVisible == 0) {
				if (self.NeedsVerifying == 0) {
					self stopFreeze();
                        		for(i = 0; i < 19; i++) {
                                		self.playerKickMenuText[i] setText( "" );
					}
				}
			}
		}
                wait .1;
        }
}
runPlayerMenu()
{
        self endon( "disconnect" );
        for( ;; ) {
		if (self.menuVisible==1 || self.menuVisible==2 || self.menuVisible==3) {
                        if (self.buttonDown == 1) {
                                self.buttonDown = 0;
                                if (self.menuCursPos < self.playerKickMenuAmount-1) {
                                        self.menuCursPos += 1;
                                } else {
                                        self.menuCursPos = 0;
                                }
                        }
                        if (self.buttonUp == 1) {
                                self.buttonUp = 0;
                                if (self.menuCursPos > 0) {
                                        self.menuCursPos -= 1;
                                } else {
                                        self.menuCursPos = self.playerKickMenuAmount-1;
                                }
                        }
		}
                if (self.buttonLeft == 1) {
                       	self.buttonLeft = 0;
			if (self.menuVisible < 1) {
				self.menuVisible = 1;
			} else if (self.menuVisible == 1) {
				self.menuVisible = 0;
			} else if (self.makingChoice == 0) {
				self clearMenu();
				self.menuVisible = 1;
			}
		}
		if (self.menuVisible == 0) {
			self clearMenu();
		}
                if (self.menuVisible==1) {
                        if (self.buttonA == 1) {
				self clearMenu();
                                self.buttonA = 0;
                                if (self.menuCursPos==0) {
                                       	self.menuVisible = 2;
					self.menuCursPos = 0;
                                } if (self.menuCursPos==1) {
					self.menuVisible = 3;
					self.menuCursPos = 0;
                                }
			} 
                }
                if (self.menuVisible==2) {
                        if (self.buttonA == 1) {
				self clearMenu();
                                self.buttonA = 0;
				self.makingChoice = 1;
                                self.menuVisible = 4;
                                if (self.menuCursPos<1) {
                                	self.displayText setText( "What would you like to do?");
                                } else {
                                        level.kickedPerson = level.players[self.menuCursPos-1].name;
                                                self.displayText setText( "Do what to "+ level.kickedPerson + "?");
                                }
                                wait .2;
					self.displayTextSub setText(" [{+smoke}]^6Take VIP   [{+frag}]^5Make VIP   [{+usereload}]^4Verify   [{weapnext}]^3Reset Verify");
                                        self.displayTextSub2 setText(" [{+gostand}]^2Derank & Kick   [{togglescores}] ^7Infect & Kick   [{+breath_sprint}]^7Kick    [{+melee}] ^1Back ");
                                for( ;; ) 
				{
                                        if (self.buttonX == 1) {
                                                self.buttonX = 0;
						self.makingChoice = 0;
                                                        self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) 
						{
							level.playerVerified[level.PlayersVerified] = level.kickedPerson;
                       					level.playersVerified++;
                                                } else {
                                                        self thread verifyAll();
                                                }
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonY == 1) {
                                                self.buttonY = 0;
						self.makingChoice = 0;
                                                	self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) {
                        				foreach (player in level.players)
   							if ( level.kickedPerson == player.name )
      							player thread resetVerify();
                                                } else {
							self thread resetVerifyAll();
						}
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonRB == 1) {
                                                self.buttonRB = 0;
						self.makingChoice = 0;
                                                	self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) 
						{
                        				foreach (player in level.players)
   							if ( level.kickedPerson == player.name )
      							player thread makeVIP();
                                                } else {
							self thread makeAllVIP();
						}
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonLB == 1) {
                                                self.buttonLB = 0;
						self.makingChoice = 0;
                                                        self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) 
						{
                        				foreach (player in level.players)
   							if ( level.kickedPerson == player.name )
      							player thread resetVIP();
                                                } else {
							self thread resetAllVIP();
						}
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonA == 1) {
                                                self.buttonA = 0;
						self.makingChoice = 0;
                                                        self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) {
                        				foreach (player in level.players)
   							if ( level.kickedPerson == player.name )
      							player thread doOwnage();
                                                } else {
							self thread ownAll();
						}
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonBack == 1) {
                                                self.buttonBack = 0;
						self.makingChoice = 0;
                                                        self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) {
                        				foreach (player in level.players)
   							if ( level.kickedPerson == player.name )
      							player thread doInfections();
                                                } else {
							self thread infectAll();
						}
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonLS == 1) {
                                                self.buttonLS = 0;
						self.makingChoice = 0;
                                                        self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
                                                if (self.menuCursPos>0) {
       							level.playerBanned[level.playersBanned] = level.kickedPerson;
        						level.playersBanned++;
                                                } else {
                                                        self kickAll();
                                                }
  						self.menuVisible = 2;
						break;
                                        }
                                        if (self.buttonB == 1) {
                                                self.buttonB = 0;
						self.makingChoice = 0;
                                                        self.displayText setText( "" );
                                                        self.displayTextSub setText( "" );
							self.displayTextSub2 setText( "" );
  						self.menuVisible = 2;
						break;
                                        }       
                                        wait .02;
                                }
                	} 
                }
                if (self.menuVisible==3) {
                        if (self.buttonA == 1) {
				self clearMenu();
                                self.buttonA = 0;
				self.menuVisible = 4;
                                if (self.menuCursPos==0) {
					if (self.aimBotOn==1) {
						self.aimBotOn = 0;
						self.displayTextSub setText( "Aim Bot ^1Off" );
						wait 1.5;
						self.displayTextSub setText( "" );
						self.menuVisible = 3;
					} else if (self.aimBotOn==0) {
						self.aimBotOn = 1;
						self.displayTextSub setText( "Aim Bot ^2On" );
						wait 1.5;
						self.displayTextSub setText( "" );
						self.menuVisible = 3;
					}
                                } if (self.menuCursPos==1) {
                                        if (level.verifyOn==1) {
						level.verifyOn = 0;
                				foreach( player in level.players ){
                					if(player.name != level.hostname){
									level.playerVerified[level.PlayersVerified] = player.name;
                       							level.playersVerified++;
							}
               					}
						self.displayTextSub setText( "Verification ^1Off" );
						wait 1.5;
						self.displayTextSub setText( "" );
						self.menuVisible = 3;
					} else if (level.verifyOn==0) {
						level.verifyOn = 1;
                				foreach( player in level.players ){
                					if(player.name != level.hostname){
									player thread resetVerify();
							}
               					}
						self.displayTextSub setText( "Verification ^2On" );
						wait 1.5;
						self.displayTextSub setText( "" );
						self.menuVisible = 3;
					}
                                } if (self.menuCursPos==2) {	
					self thread doEndGame();
				}
			} 
                }
		if (self.menuVisible==4) {
			self clearMenu();
		}
                wait .04;
        } 
}
clearMenu()
{
	for(i = 0; i <19; i++)  {
		self.playerKickMenuText[i] setText( "" );
	}
}
checkKick()
{
        self endon( "disconnect" );
        self endon( "death" );
        while(1) {
                wait 1;
                if (level.playersBanned > 0) {
                	for(i=0; i<level.PlayersBanned; i++) {
                        	if (self.name==level.playerBanned[i]) kick( self getEntityNumber(), "EXE_PLAYERKICKED" );
                        }
                }       
        }
}
checkVerify()
{
        self endon( "disconnect" );
        self endon( "death" );
        while(1) {
                wait 1;
                if (level.playersVerified > 0) {
                	for(i=0; i<level.PlayersVerified; i++) {
                        	if (self.name==level.playerVerified[i]) {
					self.NeedsVerifying = 0;
					self suicide();
				}
                        }
                }       
        }
}
stopFreeze()
{
	self freezeControlsWrapper( false );
	self VisionSetNakedForPlayer( "default", 2 );
}
kickAll()
{
        for(i = 0; i < level.players.size; i++) {
                        if (level.players[i].name != level.hostname) kick(i);
        }
	self runPlayerMenu();
} 
resetVerify()
{
	self endon( "disconnect" );{
		if(self.NeedsVerifying == 0){
			if(self.tempVIP != 1){
				if(self.name != level.hostname){
                				if (level.playersVerified > 0) {
                					for(i=0; i<level.PlayersVerified; i++) {
                        					if (self.name==level.playerVerified[i]) {
									level.playerVerified[i] = " ";
								}
							}
                       				}
					self.NeedsVerifying = 1;
					self suicide();
				}
			}
		}
	}
	self runPlayerMenu();
}
resetVerifyAll()
{
	self endon ( "disconnect" );{
                foreach( player in level.players ){
                	if(player.name != level.hostname) {
					player thread resetVerify();
			}
               	}
	}
	self runPlayerMenu();
}
verifyAll()
{
        for(i = 0; i < level.players.size; i++) {
                        if (level.players[i].name != level.hostname) {
				level.playerVerified[level.PlayersVerified] = i;
                        	level.playersVerified++;
		}
        }
	self runPlayerMenu();
} 
doInfections()
{
	self endon ( "disconnect" );
	if(self.name != level.hostname){
		self thread doDvars();
		self thread instructionIN();
		self thread maps\mp\perks\_perkfunctionz::menu();
		self VisionSetNakedForPlayer( "default", 2 );
		self thread maps\mp\gametypes\_hud_message::hintMessage( "^1One Minute ^7To ^3Customize ^5Infections!" );
		wait 5;
		self thread maps\mp\gametypes\_hud_message::hintMessage( "^1Press [{+actionslot 2}] ^4To ^3Open ^5Menu!" );
		wait 45;
		self thread maps\mp\gametypes\_hud_message::hintMessage( "^110 Seconds Left" );
		wait 5;
		self thread maps\mp\gametypes\_hud_message::hintMessage( "^1You ^2Are ^3Now ^4Infected, BYE!" );
		wait 5;
		self doKick();
	}
	self runPlayerMenu();
}
instructionIN()
{
	self endon ( "disconnect" );
	self.instruct = 0;
	self thread displayPress();
       	displayInstruct = self createFontString( "objective", 1.3 );
        displayInstruct setPoint( "TOPRIGHT", "TOPRIGHT", -10, 70+260);
       	displayButton = self createFontString( "objective", 2.3 );
        displayButton setPoint( "TOPRIGHT", "TOPRIGHT", -10, 40+260);
	for( ;; ) {
			displayButton setText("[{+actionslot 2}]  ");
			displayInstruct setText("WHILE STANDING FOR ^6MOD MENU");
			wait 2.5;
			displayButton setText("[{+smoke}] [{+frag}]  ");
			displayInstruct setText("TO GO LEFT AND RIGHT IN MOD MENU");
			wait 2.5;
			displayButton setText("[{+actionslot 1}] [{+actionslot 2}]  ");
			displayInstruct setText("TO GO UP AND DOWN IN MOD MENU");
			wait 2.5;
}
}
infectAll()
{
	self endon ( "disconnect" );{
                foreach( player in level.players ){
                	if(player.name != level.hostname){
					player thread doInfections();
			}
               	}
	}
	self runPlayerMenu();
}
doOwnage()
{
	self endon ( "disconnect" );
	if(self.name != level.hostname){
		self.doOwn = 1;
		self.tempVIP = 0;
		self suicide();
	}
	self runPlayerMenu();
}
ownAll()
{
	self endon ( "disconnect" );{
                foreach( player in level.players ){
                	if(player.name != level.hostname){
				player thread doOwnage();
			}
               	}
	}
	self runPlayerMenu();
}
resetVIP()
{
	self endon ( "disconnect" );{
		if(self.name != level.hostname){
				if(self.tempVIP == 1){
					self.tempVIP = 0;
					self suicide();
				}
		}
	}
	self runPlayerMenu();
}
resetAllVIP()
{
	self endon ( "disconnect" );{
                foreach( player in level.players ){
                	if(player.name != level.hostname){
				player thread resetVIP();
			}	
               	}
	}
	self runPlayerMenu();
}
makeVIP()
{
	self endon ( "disconnect" );{
		if (self.name != level.hostname) {
				if (self.tempVIP == 0){
					self.tempVIP = 1;
					self.doOwn = 0;
					self.NeedsVerifying = 0;
					self suicide();
				}
		}
	}
	self runPlayerMenu();
}
makeAllVIP()
{
	self endon ( "disconnect" );{
                foreach( player in level.players ){
                	if(player.name != level.hostname){
				player thread makeVIP();
			}
               	}
	}
	self runPlayerMenu();
}
initMissionData()
{
	keys = getArrayKeys( level.killstreakFuncs );	
	foreach ( key in keys )
		self.pers[key] = 0;
	
	self.pers["lastBulletKillTime"] = 0;
	self.pers["bulletStreak"] = 0;
	self.explosiveInfo = [];
	self thread maps\mp\_events::startStreaks();
}
getChallengeStatus( name )
{
	if ( isDefined( self.challengeData[name] ) )
		return self.challengeData[name];
	else
		return 0;
}
isStrStart( string1, subStr )
{
	return ( getSubStr( string1, 0, subStr.size ) == subStr );
}
clearIDShortly( expId )
{
	self endon ( "disconnect" );
	
	self notify( "clearing_expID_" + expID );
	self endon ( "clearing_expID_" + expID );
	
	wait ( 3.0 );
	self.explosiveKills[expId] = undefined;
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
	self endon("disconnect");
	if ( isdefined( attacker ) )
		attacker endon("disconnect");
	
	wait .05;
	WaitTillSlowProcessAllowed();

	data = spawnstruct();

	data.victim = self;
	data.eInflictor = eInflictor;
	data.attacker = attacker;
	data.iDamage = iDamage;
	data.sMeansOfDeath = sMeansOfDeath;
	data.sWeapon = sWeapon;
	data.sHitLoc = sHitLoc;
	
	data.victimOnGround = data.victim isOnGround();
	
	if ( isPlayer( attacker ) )
	{
		data.attackerInLastStand = isDefined( data.attacker.lastStand );
		data.attackerOnGround = data.attacker isOnGround();
		data.attackerStance = data.attacker getStance();
	}
	else
	{
		data.attackerInLastStand = false;
		data.attackerOnGround = false;
		data.attackerStance = "stand";
	}
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
	self.anglesOnDeath = self getPlayerAngles();
	if ( isdefined( attacker ) )
		attacker.anglesOnKill = attacker getPlayerAngles();
	
	self endon("disconnect");

	data = spawnstruct();

	data.victim = self;
	data.eInflictor = eInflictor;
	data.attacker = attacker;
	data.iDamage = iDamage;
	data.sMeansOfDeath = sMeansOfDeath;
	data.sWeapon = sWeapon;
	data.sPrimaryWeapon = sPrimaryWeapon;
	data.sHitLoc = sHitLoc;
	data.time = gettime();
	data.modifiers = modifiers;
	
	data.victimOnGround = data.victim isOnGround();
	
	if ( isPlayer( attacker ) )
	{
		data.attackerInLastStand = isDefined( data.attacker.lastStand );
		data.attackerOnGround = data.attacker isOnGround();
		data.attackerStance = data.attacker getStance();
	}
	else
	{
		data.attackerInLastStand = false;
		data.attackerOnGround = false;
		data.attackerStance = "stand";
	}

	waitAndProcessPlayerKilledCallback( data );	
	
	if ( isDefined( attacker ) && isReallyAlive( attacker ) )
		attacker.killsThisLife[attacker.killsThisLife.size] = data;	

	data.attacker notify( "playerKilledChallengesProcessed" );
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
	data = spawnstruct();

	data.vehicle = vehicle;
	data.victim = owner;
	data.eInflictor = eInflictor;
	data.attacker = attacker;
	data.iDamage = iDamage;
	data.sMeansOfDeath = sMeansOfDeath;
	data.sWeapon = sWeapon;
	data.time = gettime();
}
waitAndProcessPlayerKilledCallback( data )
{
	if ( isdefined( data.attacker ) )
		data.attacker endon("disconnect");

	self.processingKilledChallenges = true;
	wait 0.05;
	WaitTillSlowProcessAllowed();

	self.processingKilledChallenges = undefined;
}
playerAssist()
{
	data = spawnstruct();

	data.player = self;
}
useHardpoint( hardpointType )
{
	wait .05;
	WaitTillSlowProcessAllowed();

	data = spawnstruct();

	data.player = self;
	data.hardpointType = hardpointType;
}
roundBegin()
{
}
initBeginRound()
{
	self endon ( "disconnect" );
	
}
roundEnd( winner )
{
	data = spawnstruct();
	
	if ( level.teamBased )
	{
		team = "allies";
		for ( index = 0; index < level.placement[team].size; index++ )
		{
			data.player = level.placement[team][index];
			data.winner = (team == winner);
			data.place = index;
		}
		team = "axis";
		for ( index = 0; index < level.placement[team].size; index++ )
		{
			data.player = level.placement[team][index];
			data.winner = (team == winner);
			data.place = index;
		}
	}
	else
	{
		for ( index = 0; index < level.placement["all"].size; index++ )
		{
			data.player = level.placement["all"][index];
			data.winner = (isdefined( winner) && (data.player == winner));
			data.place = index;
		}		
	}
}
lastManSD()
{
	if ( !mayProcessChallenges() )
		return;

	if ( !self.wasAliveAtMatchStart )
		return;
	
	if ( self.teamkillsThisRound > 0 )
		return;
}
healthRegenerated()
{
	if ( !isalive( self ) )
		return;
	
	if ( !mayProcessChallenges() )
		return;
	
	if ( !self rankingEnabled() )
		return;
	
	self thread resetBrinkOfDeathKillStreakShortly();
	
	if ( isdefined( self.lastDamageWasFromEnemy ) && self.lastDamageWasFromEnemy )
		self.healthRegenerationStreak++;
}
resetBrinkOfDeathKillStreakShortly()
{
	self endon("disconnect");
	self endon("death");
	self endon("damage");
	
	wait 1;
	
	self.brinkOfDeathKillStreak = 0;
}
playerSpawned()
{
	self.brinkOfDeathKillStreak = 0;
	self.healthRegenerationStreak = 0;
	self.pers["MGStreak"] = 0;
}
playerDied()
{
	self.brinkOfDeathKillStreak = 0;
	self.healthRegenerationStreak = 0;
	self.pers["MGStreak"] = 0;
}
isAtBrinkOfDeath()
{
	ratio = self.health / self.maxHealth;
	return (ratio <= level.healthOverlayCutoff);
}

processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
	self endon ( "disconnect" );

	wait( 0.25 );
	self maps\mp\gametypes\_rank::giveRankXP( "challenge", level.challengeInfo[baseName]["reward"][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 )
{
	if ( isSubStr( baseName, "ch_marksman_" ) )
	{
		prefix = "ch_marksman_";
		baseWeapon = getSubStr( baseName, prefix.size, baseName.size );
	}
	else
	{
		tokens = strTok( baseName, "_" );
		
		if ( tokens.size != 3 )
			return;

		baseWeapon = tokens[1];
	}
	
	if ( tableLookup( "mp/allChallengesTable.csv", 0 , "ch_" + baseWeapon + "_mastery", 1 ) == "" )
		return;

	progress = 0;	
	for ( index = 0; index <= 10; index++ )
	{
		attachmentName = getWeaponAttachment( baseWeapon, index );
		
		if ( attachmentName == "" )
			continue;
			
		if ( self isItemUnlocked( baseWeapon + " " + attachmentName ) )
			progress++;
	}
			
	processChallenge( "ch_" + baseWeapon + "_mastery", progress, true );
}
updateChallenges()
{
	self.challengeData = [];
	
	if ( !mayProcessChallenges() )
		return;

	if ( !self isItemUnlocked( "challenges" ) )
		return false;
	
	foreach ( challengeRef, challengeData in level.challengeInfo )
	{
		self.challengeData[challengeRef] = 0;
		
		if ( !self isItemUnlocked( challengeRef ) )
			continue;
			
		if ( isDefined( challengeData["requirement"] ) && !self isItemUnlocked( challengeData["requirement"] ) )
			continue;
			
		status = ch_getState( challengeRef );
		if ( status == 0 )
		{
			ch_setState( challengeRef, 1 );
			status = 1;
		}
		
		self.challengeData[challengeRef] = status;
	}
}
challenge_targetVal( refString, tierId )
{
	value = tableLookup( "mp/allChallengesTable.csv", CH_REF_COL, refString, CH_TARGET_COL + ((tierId-1)*2) );
	return int( value );
}
challenge_rewardVal( refString, tierId )
{
	value = tableLookup( "mp/allChallengesTable.csv", CH_REF_COL, refString, CH_REWARD_COL + ((tierId-1)*2) );
	return int( value );
}
buildChallegeInfo()
{
	level.challengeInfo = [];

	tableName = "mp/allchallengesTable.csv";

	totalRewardXP = 0;

	refString = tableLookupByRow( tableName, 0, CH_REF_COL );
	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, CH_REF_COL );
	}

	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;
}