// DisplayName = TWM Infection //--- GAME RULES BEGIN --- // Humans vs. Zombies // 15 Seconds into the Game, A Human becomes a zombie // The Zombie Tries To Infect all the humans // Humans Killed By The Zombie, Become Zombies // Zombies Can Choose What Zombie To Use (Normal, Demon, Lord) //--- GAME RULES END --- $InvBanList[Infection, "GrappleHook"] = 1; $InfectionGame::Min2Alphas = 7; $InfectionGame::Min3Alphas = 10; $InfectionGame::Rounds = 5; // spam fix function InfectionGame::AIInit(%game) { //call the default AIInit() function AIInit(); } function InfectionGame::allowsProtectedStatics(%game) { return true; } function InfectionGame::pickTeamSpawn(%game, %team) { %pos = vectorAdd($InfectionGame::SpawnLocation[$CurrentMission], TWM2Lib_MainControl("getRandomPosition", 5 TAB 1)); %pos = vectorAdd(%pos,"0 0 5"); return %pos; } function InfectionGame::clientMissionDropReady(%game, %client) { $InfectionGame::Score[%client] = 0; $InfectionGame::ClientZombie[%client] = "Norm"; messageClient(%client, 'MsgClientReady',"", "SinglePlayerGame"); DefaultGame::clientMissionDropReady(%game, %client); } function InfectionGame::onAIRespawn(%game, %client) { //add the default task if (! %client.defaultTasksAdded) { %client.defaultTasksAdded = true; %client.addTask(AIPickupItemTask); %client.addTask(AIUseInventoryTask); %client.addTask(AITauntCorpseTask); %client.addTask(AIEngageTurretTask); %client.addTask(AIDetectMineTask); %client.addTask(AIBountyPatrolTask); %client.bountyTask = %client.addTask(AIBountyEngageTask); } //set the inv flag %client.spawnUseInv = true; } function InfectionGame::updateKillScores(%game, %clVictim, %clKiller, %damageType, %implement) { if (%game.testKill(%clVictim, %clKiller)) { //verify victim was an enemy %game.awardScoreKill(%clKiller); %game.awardScoreDeath(%clVictim); } else if (%game.testSuicide(%clVictim, %clKiller, %damageType)) //otherwise test for suicide %game.awardScoreSuicide(%clVictim); } function InfectionGame::timeLimitReached(%game) { logEcho("game over (timelimit)"); %game.gameOver(); cycleMissions(); } function InfectionGame::scoreLimitReached(%game) { logEcho("game over (scorelimit)"); %game.gameOver(); cycleMissions(); } function InfectionGame::startMatch(%game) { activatePackage(InfectionGamePackage); $TWM::PlayingInfection = 1; $TWM::TeamWars = 1; $Host::RankSystem = 0; $InfectionGame::TimeTilInfect = 15; $InfectionGame::RoundNumber = 1; $InfectionGame::ZombieTier = 1; $InfectionGame::Intermit = 1; $InfectionGame::NoRespawning = 0; messageAll('MsgSPCurrentObjective1', "Selecting Alpha Zombie"); messageAll('MsgSPCurrentObjective2', "Alpha Zombie Selected In: "@$InfectionGame::TimeTilInfect@" Seconds."); %game.StartTimeUntilInfect($InfectionGame::TimeTilInfect); DefaultGame::StartMatch(%game); Game.NumTeams = 1; //Disable Killstreaks and Perks for(%i = 0; %i < ClientGroup.getCount(); %i++) { %client = ClientGroup.getObject(%i); DisableAllPerkGroup(%client, 1); DisableAllPerkGroup(%client, 2); DisableAllPerkGroup(%client, 3); %client.DisableAllKillstreaks(); messageClient(%client, 'msgOffline', "\c5INFECTION: All Killstreaks and Perks Disabled."); } } function InfectionGame::TryInfectAnother(%game) { %selected = ClientGroup.getObject(GetRandom()*ClientGroup.getCount()); if($InfectionGame::IsAlpha[%selected] || %selected.team == 0) { //do not pick observers or already infected return %game.TryInfectAnother(); } return %selected; } function InfectionGame::StartTimeUntilInfect(%game, %time) { %time--; if(%time <= 0) { if (ClientGroup.getCount() <= 1) { MessageAll('MsgError',"\c5Insufficient Players, Need At Least 2"); $InfectionGame::TimeTilInfect = 15; %time = 15; %game.schedule(1000, "StartTimeUntilInfect", %time); return; } %ZString = ""; if(ClientGroup.getCount() >= $InfectionGame::Min3Alphas) { for(%x = 0; %x < 3; %x++) { %selected = ClientGroup.getObject(GetRandom()*ClientGroup.getCount()); if($InfectionGame::IsAlpha[%selected]) { //If this one is selected %selected = %game.TryInfectAnother(); //grab a different client } $InfectionGame::Infected[%selected] = 1; $InfectionGame::IsAlpha[%selected] = 1; // Game.clientChangeTeam( %selected, 2, 0 ); $InfectionGame::ClientZombie[%selected] = "Demon"; //we start them as demonz :) if(isObject(%selected.player)) { %targetlastpos = %selected.player.getworldboxcenter(); makePersonZombie(%targetlastpos, %selected, 4); } %ZString = ""@%ZString@" "@%selected.namebase@""; } for(%i = 0; %i < ClientGroup.getCount(); %i ++) { %client = ClientGroup.getObject(%i); messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Alpha Zombies:"@%ZString@""); messageClient(%client, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%client]@" | TIER 1."); } $InfectionGame::Intermit = 0; %game.timeUpdateLoop = %game.schedule(1, DoTierUpgrades); return; } else if(ClientGroup.getCount() >= $InfectionGame::Min2Alphas && ClientGroup.getCount() < $InfectionGame::Min3Alphas) { for(%x = 0; %x < 2; %x++) { %selected = ClientGroup.getObject(GetRandom()*ClientGroup.getCount()); if($InfectionGame::IsAlpha[%selected]) { //If this one is selected %selected = %game.TryInfectAnother(); //grab a different client } $InfectionGame::Infected[%selected] = 1; $InfectionGame::IsAlpha[%selected] = 1; // Game.clientChangeTeam( %selected, 2, 0 ); $InfectionGame::ClientZombie[%selected] = "Demon"; //we start them as demonz :) if(isObject(%selected.player)) { %targetlastpos = %selected.player.getworldboxcenter(); makePersonZombie(%targetlastpos, %selected, 4); } %ZString = ""@%ZString@" "@%selected.namebase@""; } for(%i = 0; %i < ClientGroup.getCount(); %i ++) { %client = ClientGroup.getObject(%i); messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Alpha Zombies:"@%ZString@""); messageClient(%client, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%client]@" | TIER 1."); } $InfectionGame::Intermit = 0; %game.timeUpdateLoop = %game.schedule(1, DoTierUpgrades); return; } else { %selected = ClientGroup.getObject(GetRandom()*ClientGroup.getCount()); $InfectionGame::Infected[%selected] = 1; $InfectionGame::IsAlpha[%selected] = 1; // Game.clientChangeTeam( %selected, 2, 0 ); $InfectionGame::ClientZombie[%selected] = "Demon"; //we start them as demonz :) if(isObject(%selected.player)) { %targetlastpos = %selected.player.getworldboxcenter(); makePersonZombie(%targetlastpos, %selected, 4); } for(%i = 0; %i < ClientGroup.getCount(); %i ++) { %client = ClientGroup.getObject(%i); messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Alpha Zombie: "@%selected.namebase@""); messageClient(%client, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%client]@" | TIER 1."); } messageClient(%selected, 'MsgSPCurrentObjective1' ,"", "You are The Alpha Zombie"); $InfectionGame::Intermit = 0; %game.timeUpdateLoop = %game.schedule(1, DoTierUpgrades); return; } } %game.schedule(1000, "StartTimeUntilInfect", %time); } function InfectionGame::CheckPlayersAndLMS(%game) { %living = 0; %count = ClientGroup.getCount(); for(%i = 0; %i < %count; %i++) { %client = ClientGroup.getObject(%i); if(!$InfectionGame::Infected[%client]) { if(%client.team != 0) %living++; } } if(%living == 0) { if($InfectionGame::RoundNumber >= $InfectionGame::Rounds) { //%game.gameOver(); //CycleMissions(); $InfectionGame::NoRespawning = 1; $InfectionGame::RoundNumber = 1; MessageAll('MsgAdminForce', "\c5Infection: The Game has completed! Momentarily a vote will be initiated, vote yes to change maps, or no to stay on it."); messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Game Over: Map Cycle Vote"); cancel(%game.timeUpdateLoop); %game.timeinProgress = 0; %game.schedule(3500, "startMapCycleVote"); } else { $InfectionGame::RoundNumber++; %game.Intermission(); } } } function InfectionGame::startMapCycleVote(%game) { if(%game.schedulevote !$="") { cancel(%game.ScheduleVote); %Game.scheduleVote = ""; %Game.kickClient = ""; clearVotes(); %count = clientgroup.getcount(); for(%i = 0; %i < %count; %i++) { messageClient(clientgroup.getobject(%i), 'closeVoteHud', ""); } messageAll('MsgAdminForce', "\c2SERVER: Current vote canceled to allow Infection Map Cycle Vote."); } for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ ) { %cl = ClientGroup.getObject( %idx ); if ( !%cl.isAIControlled() ) { messageClient( %cl, 'VoteStarted', '\c2SERVER: Change Maps? Vote Yes to change, or no to restart this map at Round 1.'); %clientsVoting++; } } for ( %clientIndex = 0; %clientIndex < ClientGroup.getCount(); %clientIndex++ ) { %cl = ClientGroup.getObject( %clientIndex ); if ( !%cl.isAIControlled() ) { messageClient(%cl, 'openVoteHud', "", %clientsVoting, ($Host::VotePassPercent / 100)); } } clearVotes(); %Game.voteType = "MapCycleVote"; %Game.scheduleVote = %game.schedule( ($Host::VoteTime * 1000), "MapCycleVoteEval", false); } function InfectionGame::MapCycleVoteEval(%game, %isVP) { if (%game.scheduleVote !$= "") { %votesFor = 0; %votesAgainst = 0; for (%player = 0; %player < ClientGroup.GetCount(); %player++) { %client = ClientGroup.getObject(%player); if ( %client.vote !$= "" ) { if ( %client.vote ) { %votesFor++; } else { %votesAgainst++; } } } //who wins?!!? if (%VotesFor > %votesAgainst) { messageAll('MsgVotePassed', '\c1Map changes by vote'); %game.gameOver(); CycleMissions(); $InfectionGame::NoRespawning = 0; } else { messageAll('MsgVoteFailed', '\c2Current map continues. Starting Round 1.'); $InfectionGame::NoRespawning = 0; %count = ClientGroup.getCount(); for(%i = 0; %i < %count; %i++) { %client = ClientGroup.getObject(%i); $InfectionGame::Infected[%client] = 0; $InfectionGame::IsAlpha[%client] = 0; $InfectionGame::Intermit = 1; $InfectionGame::ClientZombie[%client] = "Norm"; messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Intermission"); if(isObject(%client.player)) { %client.player.scriptKill(0); // no damage type = no infect :) } } $InfectionGame::TimeTilInfect = 30; $InfectionGame::ZombieTier = 1; %game.StartTimeUntilInfect($InfectionGame::TimeTilInfect); } // Housekeeping time.. for(%cl = 0; %cl < ClientGroup.getCount(); %cl++) { %client = ClientGroup.getObject(%cl); %client.vote = ""; Game.voteType = ""; messageClient(%client, 'clearVoteHud', ""); messageClient(%client, 'closeVoteHud', ""); } Game.scheduleVote = ""; } } function InfectionGame::Intermission(%game) { MessageAll('MsgComplete',"\c5Intermission, Beginning Round "@$InfectionGame::RoundNumber@" of "@$InfectionGame::Rounds@" in 30 Seconds."); %count = ClientGroup.getCount(); for(%i = 0; %i < %count; %i++) { %client = ClientGroup.getObject(%i); $InfectionGame::Infected[%client] = 0; $InfectionGame::IsAlpha[%client] = 0; $InfectionGame::ClientZombie[%client] = "Norm"; $InfectionGame::Intermit = 1; // Game.clientChangeTeam( %client, 1, 0 ); messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Intermission"); if(isObject(%client.player)) { %client.player.scriptKill(0); // no damage type = no infect :) } } $InfectionGame::TimeTilInfect = 30; $InfectionGame::ZombieTier = 1; %game.StartTimeUntilInfect($InfectionGame::TimeTilInfect); cancel(%game.timeUpdateLoop); %game.timeinProgress = 0; } function InfectionGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation) { Parent::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation); if(%clVictim !$= "") { if($InfectionGame::Intermit == 1) { CenterPrint(%clVictim, "ALERT: INTERMISSION\nIn Active Game Time, you Would be Infected, Be Advised!.",2,3); return; } if($InfectionGame::Infected[%clKiller] || (%damageType $= $DamageType::Zombie || %damageType $= $DamageType::Suicide || %damageType $= $DamageType::FellOff)) { if(!$InfectionGame::Infected[%clVictim]) { $InfectionGame::Infected[%clVictim] = 1; $InfectionGame::ClientZombie[%clVictim] = "Norm"; // Game.clientChangeTeam( %client, 2, 0 ); CenterPrint(%clVictim, "You have been infected.",2,3); Echo("Infection: "@%clVictim.namebase@" has been infected."); $InfectionGame::Score[%clKiller] += 10; messageClient(%clKiller, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%clKiller]@""); } else { CenterPrint(%clKiller, "Blargh, Don't kill your brothers!!! \n -5 Points",2,3); $InfectionGame::Score[%clKiller] -= 5; messageClient(%clKiller, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%clKiller]@""); } } else { if($InfectionGame::Infected[%clVictim]) { $InfectionGame::Score[%clKiller]++; messageClient(%clKiller, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%clKiller]@""); } else { CenterPrint(%clKiller, "Don't Kill The Living!!! \n -5 Points",2,3); $InfectionGame::Score[%clKiller] -= 5; messageClient(%clKiller, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%clKiller]@""); } } %game.CheckPlayersAndLMS(); } } function InfectionGame::DoTierUpgrades(%game) { %game.timeinProgress++; %timeToNext = (5*60 + (5*60*($InfectionGame::ZombieTier-1))) - (%game.timeinProgress); %min = mFloor(%timeToNext / 60); %sec = %timeToNext % 60; if(%sec < 10) { %sec = "0"@%sec; } for(%i = 0; %i < ClientGroup.getCount(); %i ++) { %client = ClientGroup.getObject(%i); //messageClient(%client, 'MsgSPCurrentObjective1' ,"", "Alpha Zombie: "@%selected.namebase@""); if($InfectionGame::ZombieTier < 4) { messageClient(%client, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%client]@" | TIER "@$InfectionGame::ZombieTier@" ["@%min@":"@%sec@"]."); } else { messageClient(%client, 'MsgSPCurrentObjective2' ,"", "Score: "@$InfectionGame::Score[%client]@" | TIER "@$InfectionGame::ZombieTier@"."); } } if(%game.timeinProgress >= (5*60) && $InfectionGame::ZombieTier <= 1) { $InfectionGame::ZombieTier = 2; CenterPrintAll("TIER 2 ZOMBIE ARMORS UNLOCKED!", 3, 3); } if(%game.timeinProgress >= (10*60) && $InfectionGame::ZombieTier <= 2) { $InfectionGame::ZombieTier = 3; CenterPrintAll("TIER 3 ZOMBIE ARMORS UNLOCKED!", 3, 3); } if(%game.timeinProgress >= (15*60) && $InfectionGame::ZombieTier <= 3) { $InfectionGame::ZombieTier = 4; CenterPrintAll("TIER 4 ZOMBIE ARMORS UNLOCKED!\nHIGHEST TIER ACHIEVED!", 3, 3); } %game.timeUpdateLoop = %game.schedule(1000, DoTierUpgrades); } function InfectionArmors(%client, %armorList) { if ( %client.favorites[0] !$= "Scout") { %armorList = %armorList TAB "Scout"; } return %armorList; } function InfectionGame::forceObserver( %game, %client, %reason ) { //if($InfectionGame::IsAlpha[%client]) { // %game.Intermission(); //} DefaultGame::forceObserver( %game, %client, %reason ); } function InfectionGame::gameOver(%game) { //call the default deactivatePackage(InfectionGamePackage); $TWM::PlayingInfection = 0; $TWM::TeamWars = 0; $Host::RankSystem = 1; DefaultGame::gameOver(%game); //send the winner message %winner = ""; messageAll('MsgClearObjHud', ""); for(%i = 0; %i < ClientGroup.getCount(); %i ++) { %client = ClientGroup.getObject(%i); //reset all vars $InfectionGame::Infected[%client] = 0; $InfectionGame::IsAlpha[%client] = 0; $InfectionGame::Score[%client] = 0; %game.resetScore(%client); } } function InfectionGame::leaveMissionArea(%game, %playerData, %player) { if(%player.getState() $= "Dead") return; %player.client.outOfBounds = true; %player.OutsideKill = schedule(7500,0,"KillOutside", %player); messageClient(%player.client, 'LeaveMissionArea', '\c1You left the mission area, Return or be killed.~wfx/misc/warning_beep.wav'); } function InfectionGame::enterMissionArea(%game, %playerData, %player) { if(%player.getState() $= "Dead") return; cancel(%player.OutsideKill); %player.client.outOfBounds = false; messageClient(%player.client, 'EnterMissionArea', '\c1You are back in the mission area.'); } function KillOutside(%p) { if(isObject(%p) && %p.getState() !$= "dead") { %p.scriptKill(0); messageClient(%p.client, 'die', '\c1You were killed for being outside of the mission area.'); MessageAll('Dead',"\c0"@%p.client.namebase@" was killed for leaving the mission area for too long."); } } function InfectionGame::ResetScore(%client) { } package InfectionGamePackage { function GameConnection::onDrop(%client, %reason) { //no changes made if($InfectionGame::IsAlpha[%client]) { Game.Intermission(); } parent::onDrop(%client, %reason); } }; function InfectionGame::spawnPlayer( %game, %client, %respawn ) { if($InfectionGame::NoRespawning) { CenterPrint(%client, "The Game is Currently in Intermission.",2,3); return; } Parent::spawnPlayer( %game, %client, %respawn ); } $ZArmor[0, 1] = "Norm\t0\tNormal Zombie\tAbility: Jet Key To Lunge"; $ZArmor[1, 1] = "Demon\t0\tDemon Zombie\tAbility: Jet Key To Throw Fireball"; $ZArmor[2, 1] = "Lord\t1\tZombie Lord\tAbilities: Jet Key To Fire, Mine Key To Lift"; $ZArmor[0, 2] = "Norm\t0\tNormal Zombie\tAbility: Jet Key To Lunge"; $ZArmor[1, 2] = "Rav\t0\tRavenger Zombie\tAbility: Jet Key To Speed Forward/Lunge"; $ZArmor[2, 2] = "Lord\t0\tZombie Lord\tAbilities: Jet Key To Fire, Mine Key To Lift"; $ZArmor[3, 2] = "Demon\t0\tDemon Zombie\tAbility: Jet Key To Throw Fireball"; $ZArmor[4, 2] = "Rap\t1\tAir Rapier Zombie\tAbility: Jet Key Flies"; $ZArmor[5, 2] = "VolRav\t1\tVolatile Ravenger Zombie\tAbility: Jet Key To Detonate C4"; $ZArmor[0, 3] = "Norm\t0\tNormal Zombie\tAbility: Jet Key To Lunge"; $ZArmor[1, 3] = "Rav\t0\tRavenger Zombie\tAbility: Jet Key To Speed Forward/Lunge"; $ZArmor[2, 3] = "Lord\t0\tZombie Lord\tAbilities: Jet Key To Fire, Mine Key To Lift"; $ZArmor[3, 3] = "Demon\t0\tDemon Zombie\tAbility: Jet Key To Throw Fireball"; $ZArmor[4, 3] = "Rap\t0\tAir Rapier Zombie\tAbility: Jet Key Flies"; $ZArmor[5, 3] = "VolRav\t0\tVolatile Ravenger Zombie\tAbility: Jet Key To Detonate C4"; $ZArmor[6, 3] = "UDem\t1\tUltra Demon Zombie\tAbility: Jet Key To Fire, Mine To Charge Forward"; //$ZArmor[7, 3] = "Wraith\t1\tWraith Spec-Ops Zombie\tAbility: Jet Key To Charge, Armed with MP26-CMDO"; $ZArmor[0, 4] = "Norm\t0\tNormal Zombie\tAbility: Jet Key To Lunge"; $ZArmor[1, 4] = "Rav\t0\tRavenger Zombie\tAbility: Jet Key To Speed Forward/Lunge"; $ZArmor[2, 4] = "Lord\t0\tZombie Lord\tAbilities: Jet Key To Fire, Mine Key To Lift"; $ZArmor[3, 4] = "Demon\t0\tDemon Zombie\tAbility: Jet Key To Throw Fireball"; $ZArmor[4, 4] = "Rap\t0\tAir Rapier Zombie\tAbility: Jet Key Flies"; $ZArmor[5, 4] = "VolRav\t0\tVolatile Ravenger Zombie\tAbility: Jet Key To Detonate C4"; $ZArmor[6, 4] = "UDem\t0\tUltra Demon Zombie\tAbility: Jet Key To Fire, Mine To Charge Forward"; //$ZArmor[7, 4] = "Flareguide\t0\tFist of Vengeance Flareguide\tAbility: Armed with the Bursting NLS-22 Rifle, Grenade to Vanish"; //$ZArmor[8, 4] = "Rog\t1\tGeneral Rog\tAbilities: Jet Key To fire zMG42, Shielded, Armed with BoV"; //Score Hud $ScoreHudMaxVisible = 19; function InfectionGame::updateScoreHud(%game, %client, %tag) { messageClient( %client, 'SetScoreHudHeader', "", "" ); messageClient( %client, 'SetScoreHudHeader', "", "Infection - Command HudClose" ); messageClient( %client, 'SetScoreHudSubheader', "", "Infection Player Settings" ); //The Menu messageClient( %client, 'SetLineHud', "", %tag, %index, "Settings:"); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "Zombie Armor [TIER "@$InfectionGame::ZombieTier@"]"); %index++; %i = 0; while(isSet($ZArmor[%i, $InfectionGame::ZombieTier])) { %z = $ZArmor[%i, $InfectionGame::ZombieTier]; if(getField(%z, 1) $= "1") { if($InfectionGame::IsAlpha[%client]) { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%z, 2)@" - "@getField(%z, 3)); %index++; } } else { messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%z, 2)@" - "@getField(%z, 3)); %index++; } %i++; } //end messageClient( %client, 'ClearHud', "", %tag, %index ); } function InfectionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %arg4, %arg5){ %tag = $TagToUseForScoreMenu; messageClient( %client, 'ClearHud', "", %tag, 1 ); //Stuff if(%arg1 $= "") %arg1 = "Null"; if(%arg2 $= "") %arg2 = "Null"; if(%arg3 $= "") %arg3 = "Null"; if(%arg4 $= "") %arg4 = "Null"; if(%arg5 $= "") %arg5 = "Null"; echo("[F2] "@%client.namebase@": "@%arg1@", "@%arg2@", "@%arg3@", "@%arg4@", "@%arg5@"."); switch$ (%arg1){ case "NULL": echo("Null Arg"); return; case "GTP": %game.updateScoreHud(%client, %tag); //Infection Calls This %client.SCMPage = %arg2; return; case "NAC": closeScoreHudFSERV(%client); return; case "SetZArmor": echo("Set Z Armor"); %armor = %arg2; if(getField($ZArmor[%arg3, $InfectionGame::ZombieTier], 1) $= "1") { if(!$InfectionGame::IsAlpha[%client]) { MessageClient(%client, 'MsgNo', "\c5INFECTION: Alpha Zombie Status Required."); closeScoreHudFSERV(%client); return; } } $InfectionGame::ClientZombie[%client] = %armor; MessageClient(%client, 'MsgNo', "\c5INFECTON: Zombie Armor Set To "@%armor@""); %game.updateScoreHud(%client, %tag); //Infection Calls This return; } } $InfectionGame::SpawnLocation["EngelamHimmel"] = "126.7 14.7 181"; $InfectionGame::SpawnLocation["DerGott"] = "0.0299911 -3.61698 155"; $InfectionGame::SpawnLocation["Strikers2"] = "-9.76935 149.965 105"; $InfectionGame::SpawnLocation["Oasis2"] = "-70.435 -46.3061 116.136"; $InfectionGame::SpawnLocation["MrykWood2"] = "-314 -7.5 103.543"; $InfectionGame::SpawnLocation["Skyline"] = "-58.8556 -420.953 750.438"; $InfectionGame::SpawnLocation["GeometricOrder"] = "-172.325 -396.557 159.9";