From b316f2fdbe9d57b571deda2f6327b9f0a786b542 Mon Sep 17 00:00:00 2001 From: Robert Fritzen Date: Fri, 30 Jun 2017 13:24:52 -0500 Subject: [PATCH] Fixed Trevor's Internal Tags, Implemented New Challenge Menu Code Fixed the internal tags for Lordranius Trevor, Grapple Hook balance, round 2, implemented automenu system for challenges (No more mega files, yay!) --- ...ordraniusTrebor.cs => LordraniusTrevor.cs} | 62 +- scripts/TWM2/ChatCommands/Public.cs | 2 +- scripts/TWM2/ChatCommands/SuperAdmin.cs | 8 +- scripts/TWM2/Missions/MissionCore.cs | 44 +- scripts/TWM2/Systems/BossSystem.cs | 16 +- scripts/TWM2/Systems/ChallengeMenus.cs | 1925 +++-------------- scripts/TWM2/Systems/DChalg.cs | 6 + scripts/TWM2/Systems/MainControl.cs | 16 + scripts/TWM2/Systems/Medals.cs | 8 +- scripts/TWM2/Systems/NWChallengeIndex.cs | 1032 +++++---- scripts/TWM2/Systems/scoremenucmds.cs | 28 +- scripts/TWM2/cmddisplaylist.txt | 2 +- scripts/chatCommands.cs | 12 +- scripts/serverCommanderMap.cs | 73 +- scripts/weapons/Pistols/GrappleHook.cs | 2 +- serverControl.cs | 6 +- 16 files changed, 1031 insertions(+), 2211 deletions(-) rename scripts/TWM2/Bosses/{LordraniusTrebor.cs => LordraniusTrevor.cs} (91%) diff --git a/scripts/TWM2/Bosses/LordraniusTrebor.cs b/scripts/TWM2/Bosses/LordraniusTrevor.cs similarity index 91% rename from scripts/TWM2/Bosses/LordraniusTrebor.cs rename to scripts/TWM2/Bosses/LordraniusTrevor.cs index 640e59a..f1d4832 100644 --- a/scripts/TWM2/Bosses/LordraniusTrebor.cs +++ b/scripts/TWM2/Bosses/LordraniusTrevor.cs @@ -1,4 +1,4 @@ -datablock HoverVehicleData(TreborTank) : CentaurVehicle { +datablock HoverVehicleData(TrevorTank) : CentaurVehicle { spawnOffset = "0 0 4"; canControl = true; floatingGravMag = 4.5; @@ -30,13 +30,13 @@ datablock HoverVehicleData(TreborTank) : CentaurVehicle { ShieldDamageScale[$DamageType::Bullet] = 0.01; //I deny you shrike n0bs }; -function StartTrebor(%pos){ +function StartTrevor(%pos){ %team = 6; %rotation = "1 0 0 0"; %skill = 10; %tank = new HoverVehicle() { - dataBlock = TreborTank; + dataBlock = TrevorTank; position = %pos; rotation = %rotation; team = %team; @@ -49,16 +49,16 @@ function StartTrebor(%pos){ %tank.CanUseSpec = 1; %tank.SpecTicks = 0; - InitiateBoss(%tank, "Trebor"); + InitiateBoss(%tank, "Trevor"); - TreborDetermineAttack(%tank); - TreborMove(%tank); - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": It's time to test the harbinger clan's ultimate siege weapon. ON YOU!"); + TrevorDetermineAttack(%tank); + TrevorMove(%tank); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": It's time to test the harbinger clan's ultimate siege weapon. ON YOU!"); return %tank; } -function TreborTank::onAdd(%this, %obj) { +function TrevorTank::onAdd(%this, %obj) { Parent::onAdd(%this, %obj); %turret = TurretData::create(CentaurTurret); @@ -85,11 +85,11 @@ function TreborTank::onAdd(%this, %obj) { setTargetSensorGroup(%turret.getTarget(), 6); setTargetAlwaysVisMask(%turret.getTarget(), 0xffffffff); } -function TreborTank::deleteAllMounted(%data, %obj) { +function TrevorTank::deleteAllMounted(%data, %obj) { CentaurVehicle::deleteAllMounted(%data, %obj); } -function TreborLocateTarget(%tank) { +function TrevorLocateTarget(%tank) { %wbpos = %tank.getworldboxcenter(); %count = ClientGroup.getCount(); %closestClient = -1; @@ -108,7 +108,7 @@ function TreborLocateTarget(%tank) { return %closestClient SPC %closestDistance; } -function TreborRotateAndVec(%tank, %tPl){ +function TrevorRotateAndVec(%tank, %tPl){ if(!isObject(%tPl)) { return; } @@ -126,20 +126,20 @@ function TreborRotateAndVec(%tank, %tPl){ return %set; } -function TreborMove(%tank) { +function TrevorMove(%tank) { if(!isObject(%tank)) { return; } if(%tank.performingSpec) { //Specials make the tank do things that this must be off to work - schedule(250, 0, "TreborMove", %tank); + schedule(250, 0, "TrevorMove", %tank); return; } - %target = TreborLocateTarget(%tank); + %target = TrevorLocateTarget(%tank); if(!isObject(%target.player)) { - schedule(100, 0, "TreborMove", %tank); + schedule(100, 0, "TrevorMove", %tank); return; } - %vec = TreborRotateAndVec(%tank, %target.player); //turns the tank + %vec = TrevorRotateAndVec(%tank, %target.player); //turns the tank %dist = VectorDist(%target.player.getPosition(), %tank.getPosition()); //The all important //don't ask how we would get this far //but we simply move @@ -159,26 +159,26 @@ function TreborMove(%tank) { if(%dist < 10 && !%tank.teleporting) { //interesting... trying to cut it close? %tank.teleporting = 1; - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Trying to do that huhn? I think not!"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Trying to do that huhn? I think not!"); PhaseShift(%tank); } %vector = vectorscale(%tank.getForwardVector(), 1150); %tank.applyImpulse(%tank.getPosition(), %vector); } - schedule(100, 0, "TreborMove", %tank); + schedule(100, 0, "TrevorMove", %tank); } -function TreborDetermineAttack(%tank) { +function TrevorDetermineAttack(%tank) { if(!isObject(%tank)) { return; } if(%tank.performingSpec) { //Specials make the tank do things that this must be off to work - schedule(250, 0, "TreborDetermineAttack", %tank); + schedule(250, 0, "TrevorDetermineAttack", %tank); return; } - %target = TreborLocateTarget(%tank); + %target = TrevorLocateTarget(%tank); if(!isObject(%target)) { - schedule(250, 0, "TreborDetermineAttack", %tank); + schedule(250, 0, "TrevorDetermineAttack", %tank); return; } %dist = VectorDist(%target.player.getPosition(), %tank.getPosition()); //The all important @@ -215,13 +215,13 @@ function TreborDetermineAttack(%tank) { //3. Phase Shift: Tank Shifts to collider range switch(%attackNum) { case 1: - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Dodge this "@getTaggedString(%target.name)@"!!!"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Dodge this "@getTaggedString(%target.name)@"!!!"); RammingSpeed(%tank, %target); case 2: - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Engage sideswipe boosters"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Engage sideswipe boosters"); SlideTarget(%tank, %target); case 3: - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Engage Phase Shift!"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Engage Phase Shift!"); PhaseShift(%tank); } } @@ -230,18 +230,18 @@ function TreborDetermineAttack(%tank) { %attackNum = getRandom(1,3); switch(%attackNum) { case 1: - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Engage missile storm on "@getTaggedString(%target.name)@"!!!"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Engage missile storm on "@getTaggedString(%target.name)@"!!!"); MissileStorm(%tank, %target); case 2: - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Let a firey storm of missiles rain upon you, "@getTaggedString(%target.name)@"!!!"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Let a firey storm of missiles rain upon you, "@getTaggedString(%target.name)@"!!!"); MissileRain(%tank, %target); case 3: - MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trebor"]@": Engage missile storm on "@getTaggedString(%target.name)@"!!!"); + MessageAll('MsgBossBegin', "\c4"@$TWM2::BossName["Trevor"]@": Engage missile storm on "@getTaggedString(%target.name)@"!!!"); MissileStorm(%tank, %target); } } } - schedule(250, 0, "TreborDetermineAttack", %tank); + schedule(250, 0, "TrevorDetermineAttack", %tank); } //Attackz0rs @@ -266,7 +266,7 @@ function RammingSpeed(%tank, %target) { %tank.turretObject.schedule(100, "unMountImage", 0); } else { - %vec = TreborRotateAndVec(%tank, %target.player); //turns the tank + %vec = TrevorRotateAndVec(%tank, %target.player); //turns the tank %vector = vectorscale(%tank.getForwardVector(), 15000); %tank.applyImpulse(%tank.getPosition(), %vector); //%tank.setImageTrigger(3, true); @@ -296,7 +296,7 @@ function SlideTarget(%tank, %target) { %tank.performingSpec = 1; } else { - %vec = TreborRotateAndVec(%tank, %target.player); //turns the tank + %vec = TrevorRotateAndVec(%tank, %target.player); //turns the tank %x = Getword(%vec,0); %y = Getword(%vec,1); %nv1 = %y; diff --git a/scripts/TWM2/ChatCommands/Public.cs b/scripts/TWM2/ChatCommands/Public.cs index 5c78078..f6975fc 100644 --- a/scripts/TWM2/ChatCommands/Public.cs +++ b/scripts/TWM2/ChatCommands/Public.cs @@ -905,7 +905,7 @@ function parsePublicCommands(%sender, %command, %args) { else if (!isBoss(strlwr(%Boss))) { messageclient(%sender, 'MsgClient', '\c2Invalid Boss Name.'); messageclient(%sender, 'MsgClient', '\c2Bosses: Yvex, CnlWindshear, GOL, GOF, Stormrider.'); - messageclient(%sender, 'MsgClient', '\c2GenVeg, LordRog, Insignia, Trebor, Vardison, ShadeLord.'); + messageclient(%sender, 'MsgClient', '\c2GenVeg, LordRog, Insignia, Trevor, Vardison, ShadeLord.'); return 1; } else { diff --git a/scripts/TWM2/ChatCommands/SuperAdmin.cs b/scripts/TWM2/ChatCommands/SuperAdmin.cs index c7eb8f7..727173e 100644 --- a/scripts/TWM2/ChatCommands/SuperAdmin.cs +++ b/scripts/TWM2/ChatCommands/SuperAdmin.cs @@ -120,10 +120,10 @@ function parseSuperAdminCommands(%sender, %command, %args) { %pos = VectorAdd(%sender.player.getPosition(), "0 0 5"); SpawnInsignia(%pos); MessageAll('MsgAdminForce', "\c3"@%sender.namebase@"\c2 spawned Rog's major insignia."); - case "Trebor": + case "Trevor": %pos = VectorAdd(%sender.player.getPosition(), "0 0 15"); - StartTrebor(%pos); - MessageAll('MsgAdminForce', "\c3"@%sender.namebase@"\c2 spawned Lordranius Trebor, leader of the harbinger clan."); + StartTrevor(%pos); + MessageAll('MsgAdminForce', "\c3"@%sender.namebase@"\c2 spawned Lordranius Trevor, leader of the harbinger clan."); case "GhostOfFire": %pos = VectorAdd(%sender.player.getPosition(), "0 0 15"); StartGhostFire(%pos); @@ -143,7 +143,7 @@ function parseSuperAdminCommands(%sender, %command, %args) { default: messageclient(%sender, 'MsgClient', '\c2Invalid Boss Name.'); messageclient(%sender, 'MsgClient', '\c2Bosses: Yvex, CnlWindshear, GhostOfLightning.'); - messageclient(%sender, 'MsgClient', '\c2GenVegenor, LordRog, Insignia, Trebor, Vardison.'); + messageclient(%sender, 'MsgClient', '\c2GenVegenor, LordRog, Insignia, Trevor, Vardison.'); messageclient(%sender, 'MsgClient', '\c2Stormrider, GhostOfFire, ShadeLord.'); } return 1; diff --git a/scripts/TWM2/Missions/MissionCore.cs b/scripts/TWM2/Missions/MissionCore.cs index ade4e6e..c9c65f0 100644 --- a/scripts/TWM2/Missions/MissionCore.cs +++ b/scripts/TWM2/Missions/MissionCore.cs @@ -145,32 +145,32 @@ function CheckMissionRequirement(%client, %mission) { function CreateTWM2Mission(%client, %mission) { %group = NameToID("TWM2Mission"); if(%group.inProgress) { - messageClient(%client, 'msgNope', "\c5MISSION: A mission has been ordered or is in progress."); + messageClient(%client, 'msgNope', "\c5OPERATION: A operation has been ordered or is currently in progress, please try again later."); return; } if(!isObject(%client.player) || %client.player.getState() $= "Dead") { - messageClient(%client, 'msgNope', "\c5MISSION: Dead people cannot order missions."); + messageClient(%client, 'msgNope', "\c5OPERATION: Dead people cannot order operations."); return; } - if(getCurrentEXP(%client) < $Ranks::MinPoints[59] && %client.TWM2Core.officer < 1) { - messageClient(%client, 'msgNope', "\c5MISSION: You must be a Commanding Officer (or Higher) to order missions."); + if(getCurrentEXP(%client) < $Ranks::MinPoints[49] && %client.TWM2Core.officer < 1) { + messageClient(%client, 'msgNope', "\c5OPERATION: You must be a General (or Higher) to order operations."); return; } if($CurrentMissionType !$= "Construction") { error("TWM2 Mission: Must be in construction, aborted."); - messageClient(%client, 'msgNope', "\c5MISSION: Missions an only be ordered in the construction game mode."); + messageClient(%client, 'msgNope', "\c5OPERATION: Operations an only be ordered in the construction game mode."); return; } if($CurrentMission !$= "FlatlandBig" && $CurrentMission !$= "Flatland") { error("TWM2 Mission: Must be in FLBig, aborted."); - messageClient(%client, 'msgNope', "\c5MISSION: Missions can only be ordered on Flatland."); + messageClient(%client, 'msgNope', "\c5OPERATION: This map is incompatible with operations, please request a map change."); return; } %timeleft = $Mission::VarSet[%mission, "TimeLimit"]; %playerlimit = $Mission::VarSet[%mission, "PlayerLimit"]; %playerreq = $Mission::VarSet[%mission, "PlayerReq"]; %missionname = GetField($Mission::VarSet[%mission, "TaskDetails"], 0); - messageClient(%client, 'msgNope', "\c5MISSION: Issuing request to initiate mission: "@%missionname@"."); + messageClient(%client, 'msgNope', "\c5OPERATION: Issuing request to initiate operation: "@%missionname@"."); %group = new ScriptObject(TWM2Mission) { class = "TWM2MissionClass"; @@ -196,7 +196,7 @@ function CreateTWM2Mission(%client, %mission) { %group.schedule(%group.timeToBegin * 1000, "StartTWM2MissionTimer"); if(%group.playerLimit > 1) { //Phantom139: Added TWM2 3.8, obviously we don't want to ask people to join a 1 player mission. - messageAll('msgMission', "\c5MISSION: "@%client.namebase@" has ordered a mission, press [F2] -> Mission to join in."); + messageAll('msgMission', "\c5OPERATION: "@%client.namebase@" has ordered an operation, press [F2] -> Operations to join in."); CompleteNWChallenge(%client, "SimonSays"); } } @@ -204,26 +204,26 @@ function CreateTWM2Mission(%client, %mission) { function AddClientToMission(%client) { %group = nameToID("TWM2Mission"); if(%group.InProgress == 0) { - messageClient(%client, 'msgFailed', "\c5MISSION: There is no mission to join."); + messageClient(%client, 'msgFailed', "\c5OPERATION: There is no active operation to join."); return; } if(%group.InProgress == 1) { - messageClient(%client, 'msgFailed', "\c5MISSION: You cannot join a mission in progress."); + messageClient(%client, 'msgFailed', "\c5OPERATION: You cannot join an operation already in progress."); return; } if(!isObject(%client.player) || %client.player.getState() $= "Dead") { - messageClient(%client, 'msgNope', "\c5MISSION: Dead people cannot join missions."); + messageClient(%client, 'msgNope', "\c5OPERATION: Dead people cannot join operations."); return; } //add them if(%group.Participants >= %group.playerLimit) { - messageClient(%client, 'msgFailed', "\c5MISSION: This mission cannot take any more soldiers."); + messageClient(%client, 'msgFailed', "\c5OPERATION: The fireteam for this operation is to capacity."); return; } //last check, for lulz for(%i = 1; %i <= %group.Participants; %i++) { if(%client == %group.Participant[%i]) { - messageClient(%client, 'msgFailed', "\c5MISSION: Trying to join twice eh?"); + messageClient(%client, 'msgFailed', "\c5OPERATION: You're already in the operation fireteam, prepare for deployment..."); return; } } @@ -231,7 +231,7 @@ function AddClientToMission(%client) { %group.Participants++; %group.Participant[%group.Participants] = %client; %group.ParticipantAlive[%group.Participants] = true; - messageClient(%client, 'msgFailed', "\c5MISSION: Added to the mission squad, prepare for orders."); + messageClient(%client, 'msgFailed', "\c5OPERATION: Added to the operation fireteam, prepare for orders."); CompleteNWChallenge(%client, "FromTheTop"); CompleteNWChallenge(%group.Participant[1], "NaturalLeader"); } @@ -244,11 +244,11 @@ function TWM2MissionClass::StartTWM2MissionTimer(%group) { for(%r = 1; %r <= %counter; %r++) { if(%cl == %group.Participant[%r]) { if(!isObject(%cl.player) || %cl.player.getState() $= "Dead") { - messageClient(%cl, 'msgNope', "\c5MISSION: You have been released from the mission for being dead."); + messageClient(%cl, 'msgNope', "\c5OPERATION: You have been released from the operation fireteam for being dead."); %cl.missionReady = false; } else { - messageClient(%cl, 'msgNope', "\c5MISSION: Standby.... Relaying orders...."); + messageClient(%cl, 'msgNope', "\c5OPERATION: Standby.... Relaying orders...."); %cl.missionReady = true; } } @@ -270,7 +270,7 @@ function TWM2MissionClass::StartTWM2MissionTimer(%group) { //echo("checking 2"); if(%group.Participants < %req) { for(%lol = 1; %lol <= %group.Participants; %lol++) { - messageClient(%group.Participant[%lol], 'msgFailed', "\c5MISSION: Not enough participants, Aborted."); + messageClient(%group.Participant[%lol], 'msgFailed', "\c5OPERATION: Not enough participants in the fireteam, operation aborted."); } %group.EndTWM2Mission(); //echo("NaP"); @@ -324,7 +324,7 @@ function TWM2MissionClass::EndTWM2Mission(%group) { if(%group.Status $= "Failed") { for(%i = 1; %i <= %group.Participants; %i++) { messageClient(%group.Participant[%i], 'msgFailed', "\c5"@%group.commandName@": "@%group.failMessage@"~wfx/misc/flag_lost.wav"); - messageClient(%group.Participant[%i], 'MsgSPCurrentObjective1', "", ""@%group.MissionName@" - Mission Failed"); + messageClient(%group.Participant[%i], 'MsgSPCurrentObjective1', "", ""@%group.MissionName@" - Operation Failed"); schedule(5000, 0, messageClient, %group.Participant[%i], 'MsgSPCurrentObjective1' ,"", "Welcome to TWM2!"); CompleteNWChallenge(%group.Participant[%i], "EpicFailure"); } @@ -333,8 +333,8 @@ function TWM2MissionClass::EndTWM2Mission(%group) { if(%group.timer > 0) { for(%i = 1; %i <= %group.Participants; %i++) { messageClient(%group.Participant[%i], 'msgFailed', "\c5"@%group.commandName@": "@%group.BonusCompleteMessage@"~wfx/misc/hunters_horde.wav"); - GainExperience(%group.Participant[%i], %group.bonusEXP + %group.completionEXP, "Mission Accomplished, Bonus EXP Recieved "); - messageClient(%group.Participant[%i], 'MsgSPCurrentObjective1', "", ""@%group.MissionName@" - Mission Accomplished (Time!)"); + GainExperience(%group.Participant[%i], %group.bonusEXP + %group.completionEXP, "Operation Accomplished, Bonus EXP Recieved "); + messageClient(%group.Participant[%i], 'MsgSPCurrentObjective1', "", ""@%group.MissionName@" - Operation Accomplished (Time Bonus Achieved)"); schedule(5000, 0, messageClient, %group.Participant[%i], 'MsgSPCurrentObjective1' ,"", "Welcome to TWM2!"); CompleteNWChallenge(%group.Participant[%i], "GoldStar"); } @@ -342,8 +342,8 @@ function TWM2MissionClass::EndTWM2Mission(%group) { else { for(%i = 1; %i <= %group.Participants; %i++) { messageClient(%group.Participant[%i], 'msgFailed', "\c5"@%group.commandName@": "@%group.CompleteMessageNoTime@"~wfx/misc/flag_capture.wav"); - GainExperience(%group.Participant[%i], %group.completionEXP, "Mission Accomplished! "); - messageClient(%group.Participant[%i], 'MsgSPCurrentObjective1', "", ""@%group.MissionName@" - Mission Accomplished"); + GainExperience(%group.Participant[%i], %group.completionEXP, "Operation Accomplished! "); + messageClient(%group.Participant[%i], 'MsgSPCurrentObjective1', "", ""@%group.MissionName@" - Operation Accomplished"); schedule(5000, 0, messageClient, %group.Participant[%i], 'MsgSPCurrentObjective1' ,"", "Welcome to TWM2!"); CompleteNWChallenge(%group.Participant[%i], "Faster"); } diff --git a/scripts/TWM2/Systems/BossSystem.cs b/scripts/TWM2/Systems/BossSystem.cs index e89c5fe..ac87d75 100644 --- a/scripts/TWM2/Systems/BossSystem.cs +++ b/scripts/TWM2/Systems/BossSystem.cs @@ -35,7 +35,7 @@ function InitiateBoss(%Boss, %name) { %print = "BOSS ALERT \n LORD VARDISON HAS ENTERED HIS SECOND FORM"; case "Vardison3": %print = "BOSS ALERT \n LORD VARDISON HAS ENTERED HIS FINAL FORM"; - case "Trebor": + case "Trevor": %print = "BOSS BATTLE \n LORDRANIUS TREVOR"; case "Stormrider": %print = "CLASSIC BOSS BATTLE \n COMMANDER STORMRIDER"; @@ -64,7 +64,7 @@ function BossCheckUp(%boss, %name) { MessageAll('MsgSPCurrentObjective1', "", "Boss Battle: "@$TWM2::BossName[%name]@" [Boss Kill Count: "@$TWM2::BossManager.bossKills@"]"); MessageAll('MsgSPCurrentObjective2', "", "Boss HP: "@mFloor(%boss.getDamageLeft()*100)@"/"@mFloor(%boss.getMaxDamage()*100)@" ("@%percentage@"%)"); - if(%name !$= "CnlWindshear" && %name !$= "Trebor" && %name !$= "Stormrider") { + if(%name !$= "CnlWindshear" && %name !$= "Trevor" && %name !$= "Stormrider") { if(!isObject(%boss) || %boss.getState() $= "dead") { if(%name $= "Vardison1") { %count = ClientGroup.getCount(); @@ -175,7 +175,7 @@ function GameConnection::GiveBossAward(%client, %bossName) { CompleteNWChallenge(%client, "VardWtf"); } } - else if(%bossName $= "Trebor") { + else if(%bossName $= "Trevor") { AwardClient(%client, 15); } //rank writing @@ -310,15 +310,15 @@ function CheckBossChallenge(%client, %boss) { if(%dc >= 10) { CompleteNWChallenge(%client, "Stormrider3"); } - case "Trebor": + case "Trevor": if(%dc >= 2) { - CompleteNWChallenge(%client, "Treb1"); + CompleteNWChallenge(%client, "Trev1"); } if(%dc >= 4) { - CompleteNWChallenge(%client, "Treb2"); + CompleteNWChallenge(%client, "Trev2"); } if(%dc >= 7) { - CompleteNWChallenge(%client, "Treb3"); + CompleteNWChallenge(%client, "Trev3"); } case "ShadeLord": if(%dc >= 1) { @@ -344,7 +344,7 @@ exec("scripts/TWM2/Bosses/GhostOfLightning.cs"); exec("scripts/TWM2/Bosses/GeneralVegenor.cs"); exec("scripts/TWM2/Bosses/LordRog.cs"); exec("scripts/TWM2/Bosses/MajorInsignia.cs"); -exec("scripts/TWM2/Bosses/LordraniusTrebor.cs"); +exec("scripts/TWM2/Bosses/LordraniusTrevor.cs"); exec("scripts/TWM2/Bosses/Stormrider.cs"); exec("scripts/TWM2/Bosses/GhostOfFire.cs"); exec("scripts/TWM2/Bosses/ShadeLord.cs"); diff --git a/scripts/TWM2/Systems/ChallengeMenus.cs b/scripts/TWM2/Systems/ChallengeMenus.cs index 908df37..43f8c31 100644 --- a/scripts/TWM2/Systems/ChallengeMenus.cs +++ b/scripts/TWM2/Systems/ChallengeMenus.cs @@ -1,1699 +1,306 @@ //Challenge Menus //TWM2 3.9.1 -//Moved all of the Non-Weapon Challenge menus to a singular file -// under a single function to streamline it... +//All of the challenge menu functions are now in this file to make locating them for adjustment +// easier to maintain. Also, as of 3.9.1, I have now provided a means to automate this menu's +// creation such that new challenges can be very easily added. -// Yes, I know I could "automate" this, but my laziness is still rather persistent to re-do the entire old system... +function GenerateChallengesMenu(%client, %tag, %index) { + %scriptController = %client.TWM2Core; + %xp = getCurrentEXP(%client); + messageClient( %client, 'SetLineHud', "", %tag, %index, "Select a category to view challenges:"); + %index++; + // + messageClient( %client, 'SetLineHud', "", %tag, %index, "PGD Challenges (Daily/Weekly/Monthly)"); + %index++; + for(%i = 1; $Challenge::Category[%i] !$= ""; %i++) { + if(%i != 6) { + %categoryReq = getField($Challenge::Category[%i], 2); + if(getWord(%categoryReq, 0) $= "Officer") { + %offLevel = getWord(%categoryReq, 1); + if(%scriptController.officer >= %offLevel) { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField($Challenge::Category[%i], 0)@": "@getField($Challenge::Category[%i], 1)); + %index++; + } + else { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField($Challenge::Category[%i], 0)@": Locked, Requires officer level "@%offLevel@" ("@strReplace($Prestige::Name[%offLevel], " ", "")@")"); + %index++; + } + } + else { + if(%categoryReq == -1) { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField($Challenge::Category[%i], 0)@": "@getField($Challenge::Category[%i], 1)); + %index++; + } + else { + if(%xp >= $Rank::MinPoints[%categoryReq]) { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField($Challenge::Category[%i], 0)@": "@getField($Challenge::Category[%i], 1)); + %index++; + } + else { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField($Challenge::Category[%i], 0)@": Locked, Requires Rank of "@$Ranks::NewRank[%categoryReq]@"."); + %index++; + } + } + } + } + } + return %index; +} function GenerateChallengeSubMenu(%client, %subMenu, %tag, %index) { - switch(%subMenu) { - case 1: - //Killstreaks - messageClient( %client, 'SetLineHud', "", %tag, %index, "Killstreak Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("UAV1")) { - if(%client.CheckNWChallengeCompletion("UAV2")) { - if(%client.CheckNWChallengeCompletion("UAV3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAV Expert III: Call in 150 UAV Recon Satellites"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAV Expert III: Call in 150 UAV Recon Satellites"); - %index++; - } + if(%subMenu == 6) { + return GenerateDWMChallengeMenu(%client, %tag, %index); + } + + %scriptController = %client.TWM2Core; + %xp = getCurrentEXP(%client); + + for(%i = 0; $Challenge::Challenge[%subMenu, %i] !$= ""; %i++) { + %loopAndFinish = false; + %challengeInternalName = $Challenge::Challenge[%subMenu, %i]; + %challengeDetails = $Challenge::Info[%challengeInternalName]; + %trailing = TWM2Lib_MainControl("getStrTrailingNumber", %challengeInternalName); + if(%done[%challengeInternalName]) { + continue; + } + if(%challengeDetails !$= "") { + //Is this NOT a multi-tier challenge? + if($Challenge::IsNotMultiTier[%challengeInternalName] || %trailing $= "" || %trailing == 0) { + //Proceed to writing ;) + if(%client.CheckNWChallengeCompletion(%challengeInternalName)) { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%challengeDetails, 0)@": "@getField(%challengeDetails, 4)); + %index++; + continue; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAV Expert II: Call in 75 UAV Recon Satellites"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAV Expert I: Call in 30 UAV Recon Satellites"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Airstrike1")) { - if(%client.CheckNWChallengeCompletion("Airstrike2")) { - if(%client.CheckNWChallengeCompletion("Airstrike3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Airstrike Expert III: Call in 125 Airstrikes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Airstrike Expert III: Call in 125 Airstrikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Airstrike Expert II: Call in 65 Airstrikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Airstrike Expert I: Call in 25 Airstrikes"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("UAMS1")) { - if(%client.CheckNWChallengeCompletion("UAMS2")) { - if(%client.CheckNWChallengeCompletion("UAMS3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAMS Expert III: Call in 125 UAMS Strikes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAMS Expert III: Call in 125 UAMS Strikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAMS Expert II: Call in 65 UAMS Strikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "UAMS Expert I: Call in 25 UAMS Strikes"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Helicopter1")) { - if(%client.CheckNWChallengeCompletion("Helicopter2")) { - if(%client.CheckNWChallengeCompletion("Helicopter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helicopter Expert III: Call in 125 Combat Helicopters"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helicopter Expert III: Call in 125 Combat Helicopters"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helicopter Expert II: Call in 65 Combat Helicopters"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helicopter Expert I: Call in 25 Combat Helicopters"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Harrier1")) { - if(%client.CheckNWChallengeCompletion("Harrier2")) { - if(%client.CheckNWChallengeCompletion("Harrier3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harrier Expert III: Call in 110 Plasma Harrier Airstrikes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harrier Expert III: Call in 110 Plasma Harrier Airstrikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harrier Expert II: Call in 55 Plasma Harrier Airstrikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harrier Expert I: Call in 20 Plasma Harrier Airstrikes"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SatNuke1")) { - if(%client.CheckNWChallengeCompletion("SatNuke2")) { - if(%client.CheckNWChallengeCompletion("SatNuke3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "OLS Expert III: Call in 125 Orbital Laser Strikes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "OLS Expert III: Call in 125 Orbital Laser Strikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "OLS Expert II: Call in 65 Orbital Laser Strikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "OLS Expert I: Call in 25 Orbital Laser Strikes"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("NapalmHarrier1")) { - if(%client.CheckNWChallengeCompletion("NapalmHarrier2")) { - if(%client.CheckNWChallengeCompletion("NapalmHarrier3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Napalm Airstrike Expert III: Call in 110 Napalm Airstrikes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Napalm Airstrike Expert III: Call in 110 Napalm Airstrikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Napalm Airstrike Expert II: Call in 55 Napalm Airstrikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Napalm Airstrike Expert I: Call in 20 Napalm Airstrikes"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("GunHeli1")) { - if(%client.CheckNWChallengeCompletion("GunHeli2")) { - if(%client.CheckNWChallengeCompletion("GunHeli3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship Helicopter Expert III: Call in 110 Gunship Helicopters"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship Helicopter Expert III: Call in 110 Gunship Helicopters"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship Helicopter Expert II: Call in 55 Gunship Helicopters"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship Helicopter Expert I: Call in 20 Gunship Helicopters"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SBomber1")) { - if(%client.CheckNWChallengeCompletion("SBomber2")) { - if(%client.CheckNWChallengeCompletion("SBomber3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Stealth Bomber Expert III: Call in 100 Stealth Bombers"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Stealth Bomber Expert III: Call in 100 Stealth Bombers"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Stealth Bomber Expert II: Call in 50 Stealth Bombers"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Stealth Bomber Expert I: Call in 20 Stealth Bombers"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Gunship1")) { - if(%client.CheckNWChallengeCompletion("Gunship2")) { - if(%client.CheckNWChallengeCompletion("Gunship3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Gunship Expert III: Call in 75 Harbinger Gunships"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Gunship Expert III: Call in 75 Harbinger Gunships"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Gunship Expert II: Call in 35 Harbinger Gunships"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Gunship Expert I: Call in 15 Harbinger Gunships"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Apache1")) { - if(%client.CheckNWChallengeCompletion("Apache2")) { - if(%client.CheckNWChallengeCompletion("Apache3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Apache Gunner Expert III: Call in 75 Apache Gunners"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Apache Gunner Expert III: Call in 75 Apache Gunners"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Apache Gunner Expert II: Call in 35 Apache Gunners"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Apache Gunner Expert I: Call in 15 Apache Gunners"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Gunship3")) { - if(%client.CheckNWChallengeCompletion("ACGunship1")) { - if(%client.CheckNWChallengeCompletion("ACGunship2")) { - if(%client.CheckNWChallengeCompletion("ACGunship3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "AC-130 Expert III: Call in 75 AC-130 Gunners"); + //Does this challenge require another challenge be completed? + if($Challenge::RequiresChallenge[%subMenu, %i] !$= "") { + %requiredChallengeName = $Challenge::RequiresChallenge[%subMenu, %i]; + %requiredChallengeDetails = $Challenge::Info[%requiredChallengeName]; + if(!%client.CheckNWChallengeCompletion(%requiredChallengeName)) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked: Requires Completion of "@getField(%requiredChallengeDetails, 0)); %index++; + continue; + } + } + //Does this challenge have an embedded requirement? + if($Challenge::SetRequirement[%subMenu, %i] !$= "") { + %cReq = $Challenge::SetRequirement[%subMenu, %i]; + if(getWord(%cReq, 0) $= "Officer") { + %offLevel = getWord(%cReq, 1); + if(%scriptController.officer < %offLevel) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked, Requires officer level "@%offLevel@" ("@strReplace($Prestige::Name[%offLevel], " ", "")@")"); + %index++; + continue; + } } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "AC-130 Expert III: Call in 75 AC-130 Gunners"); - %index++; + %expReq = $Rank::MinPoints[%cReq]; + if(%xp < $expReq) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked, Requires "@$Ranks::NewRank[%cReq]@" rank"); + %index++; + continue; + } } } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "AC-130 Expert II: Call in 35 AC-130 Gunners"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "AC-130 Expert I: Call in 15 AC-130 Gunners"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Locked: Requires Harbinger Gunship Expert III."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Centaur1")) { - if(%client.CheckNWChallengeCompletion("Centaur2")) { - if(%client.CheckNWChallengeCompletion("Centaur3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Centaur Artillery Expert III: Call in 50 Artillery Strikes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Centaur Artillery Expert III: Call in 50 Artillery Strikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Centaur Artillery Expert II: Call in 25 Artillery Strikes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Centaur Artillery Expert I: Call in 10 Artillery Strikes"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("EMP1")) { - if(%client.CheckNWChallengeCompletion("EMP2")) { - if(%client.CheckNWChallengeCompletion("EMP3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "EMP Expert III: Call in 25 Mass EMP's"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "EMP Expert III: Call in 25 Mass EMP's"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "EMP Expert II: Call in 10 Mass EMP's"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "EMP Expert I: Call in 5 Mass EMP's"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Nuke1")) { - if(%client.CheckNWChallengeCompletion("Nuke2")) { - if(%client.CheckNWChallengeCompletion("Nuke3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Nuke Expert III: Call in 25 Nukes"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Nuke Expert III: Call in 25 Nukes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Nuke Expert II: Call in 10 Nukes"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Nuke Expert I: Call in 5 Nukes"); - %index++; - } - // - if(%client.TWM2Core.Officer >= 1) { - if(%client.CheckNWChallengeCompletion("Fission1")) { - if(%client.CheckNWChallengeCompletion("Fission2")) { - if(%client.CheckNWChallengeCompletion("Fission3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fission Bomb Expert III: Call in 5 Fission Bombs"); + //Is this a "hidden" challenge? + if($Challenge::SetHidden[%subMenu, %i]) { + if($Challenge::HiddenMessage[%subMenu, %i] !$= "") { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$Challenge::HiddenMessage[%subMenu, %i]); %index++; + continue; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fission Bomb Expert III: Call in 5 Fission Bombs"); + messageClient( %client, 'SetLineHud', "", %tag, %index, "This is a hidden challenge, unlock it to learn more."); %index++; + continue; } } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fission Bomb Expert II: Call in 2 Fission Bombs"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fission Bomb Expert I: Call in 1 Fission Bomb"); - %index++; + //All tests passed, write normally. + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%challengeDetails, 0)@": "@getField(%challengeDetails, 4)); + %index++; } } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Locked: Requires Instructive Officer Rank (Off. Rank 1)"); - %index++; - } - // - if(%client.TWM2Core.Officer >= 15) { - if(%client.CheckNWChallengeCompletion("LOAS1")) { - if(%client.CheckNWChallengeCompletion("LOAS2")) { - if(%client.CheckNWChallengeCompletion("LOAS3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "LOAS Expert III: Call in 15 Low Orbit Orbital Strikes (LOAS)"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "LOAS Expert III: Call in 15 Low Orbit Orbital Strikes (LOAS)"); - %index++; - } + //Scan for additional challenges using the same internal name.. + %chStr = getSubStr(%challengeInternalName, 0, strLen(%challengeInternalName) - strLen(%trailing)); + //Loop forward until the system draws a blank + %fCount = 0; + %j = %i; + while(true) { + %nextC = $Challenge::Challenge[%subMenu, %j]; + %nextT = TWM2Lib_MainControl("getStrTrailingNumber", %nextC); + %nextChStr = getSubStr(%nextC, 0, strLen(%nextC) - strLen(%nextT)); + if(%nextChStr $= %chStr && %nextT == %fCount+1) { + %fCount++; + %j++; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "LOAS Expert II: Call in 10 Low Orbit Orbital Strikes (LOAS)"); - %index++; + break; } } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "LOAS Expert I: Call in 5 Low Orbit Orbital Strikes (LOAS)"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Locked: Requires Harbinger Officer Rank (Off. Rank 15)"); - %index++; - } - return %index; - - case 2: - //Boss Hunting - messageClient( %client, 'SetLineHud', "", %tag, %index, "Boss Hunting Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("Yvex1")) { - if(%client.CheckNWChallengeCompletion("Yvex2")) { - if(%client.CheckNWChallengeCompletion("Yvex3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shadowy Desecration: Defeat Lord Yvex 10 Times"); + //This isn't a multi-tier, flag it internally so we can skip this code later, and push a message to the console to let the host know. + if(%fCount == 1) { + error("NOTE: Challenge menu generator has flagged a non multi-tier challenge caught inside the multi-tier loop, consider removing "@%challengeInternalName@" by adding the $Challenge::IsNotMultiTier flag to this challenge."); + if(%client.CheckNWChallengeCompletion(%challengeInternalName)) { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%challengeDetails, 0)@": "@getField(%challengeDetails, 4)); %index++; + continue; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shadowy Desecration: Defeat Lord Yvex 10 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Darkness Rising: Defeat Lord Yvex 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Nightmarish Enterprise: Defeat Lord Yvex 3 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("CWS1")) { - if(%client.CheckNWChallengeCompletion("CWS2")) { - if(%client.CheckNWChallengeCompletion("CWS3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger's Bane: Defeat Colonel Windshear 10 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger's Bane: Defeat Colonel Windshear 10 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Aerieal Nightmare: Defeat Colonel Windshear 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fortress In The Sky: Defeat Colonel Windshear 3 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("GOL1")) { - if(%client.CheckNWChallengeCompletion("GOL2")) { - if(%client.CheckNWChallengeCompletion("GOL3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Severe Thunderstorm: Defeat The Ghost Of Lightning 10 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Severe Thunderstorm: Defeat The Ghost Of Lightning 10 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Shocking Truth: Defeat The Ghost Of Lightning 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Envious Lightning: Defeat The Ghost Of Lightning 3 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("GOF1")) { - if(%client.CheckNWChallengeCompletion("GOF2")) { - if(%client.CheckNWChallengeCompletion("GOF3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Mt. Death Depleter: Defeat The Ghost Of Fire 5 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Mt. Death Depleter: Defeat The Ghost Of Fire 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Inceneration Ender: Defeat The Ghost Of Fire 3 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Purifier: Defeat The Ghost Of Fire"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Veg1")) { - if(%client.CheckNWChallengeCompletion("Veg2")) { - if(%client.CheckNWChallengeCompletion("Veg3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Firestorm Ender: Defeat General Vegenor 10 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Firestorm Ender: Defeat General Vegenor 10 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Burning Frenzy: Defeat General Vegenor 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Flaming Revolt: Defeat General Vegenor 3 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("LRog1")) { - if(%client.CheckNWChallengeCompletion("LRog2")) { - if(%client.CheckNWChallengeCompletion("LRog3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Payback's A Bitch: Defeat Lord Rog 7 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Payback's A Bitch: Defeat Lord Rog 7 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Return to Returner: Defeat Lord Rog 4 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Revenge Halter: Defeat Lord Rog 2 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Ins1")) { - if(%client.CheckNWChallengeCompletion("Ins2")) { - if(%client.CheckNWChallengeCompletion("Ins3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gravitational Influx: Defeat Major Insignia 7 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gravitational Influx: Defeat Major Insignia 7 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "No Gravity, No Problem: Defeat Major Insignia 4 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "El Shipitor: Defeat Major Insignia 2 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Stormrider1")) { - if(%client.CheckNWChallengeCompletion("Stormrider2")) { - if(%client.CheckNWChallengeCompletion("Stormrider3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Fighter Demolisher: Defeat Commander Stormrider 10 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Fighter Demolisher: Defeat Commander Stormrider 10 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shootdown Master: Defeat Commander Stormrider 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Clear Skies: Defeat Commander Stormrider 3 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Treb1")) { - if(%client.CheckNWChallengeCompletion("Treb2")) { - if(%client.CheckNWChallengeCompletion("Treb3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Tank Halter: Defeat Lordranius Trevor 7 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Tank Halter: Defeat Lordranius Trevor 7 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Harbinger Denied: Defeat Lordranius Trevor 4 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Precious Cargo: Defeat Lordranius Trevor 2 Times"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Vard1")) { - if(%client.CheckNWChallengeCompletion("Vard2")) { - if(%client.CheckNWChallengeCompletion("Vard3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Outevil The Wicked: Defeat Lord Vardison 5 Times"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Outevil The Wicked: Defeat Lord Vardison 5 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Glare The Dark: Defeat Lord Vardison 3 Times"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shining Star: Defeat Lord Vardison"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("VardEasy")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Standard Experience: Defeat Lord Vardison on Easy Difficulty"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Standard Experience: Defeat Lord Vardison on Easy Difficulty"); - %index++; - } - if(%client.CheckNWChallengeCompletion("VardNorm")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Demon Hunter: Defeat Lord Vardison on Normal Difficulty"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Demon Hunter: Defeat Lord Vardison on Normal Difficulty"); - %index++; - } - if(%client.CheckNWChallengeCompletion("VardHard")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Master Demon Slayer: Defeat Lord Vardison on Hard Difficulty"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Master Demon Slayer: Defeat Lord Vardison on Hard Difficulty"); - %index++; - } - if(%client.CheckNWChallengeCompletion("VardWtf")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "God of the Shadow Realm: You're a fucking badass... Just bask in that..."); - %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, ""); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "God of the Shadow Realm: Against all odds, emerge victorious against WTF difficulty Lord Vardison"); - %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, ""); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ShadeLord1")) { - if(%client.CheckNWChallengeCompletion("ShadeLord2")) { - if(%client.CheckNWChallengeCompletion("ShadeLord3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Dawnlight Encarnate: Defeat The Shade Lord for the Third Time"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Dawnlight Encarnate: Defeat The Shade Lord for the Third Time"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shadow Embracer: Defeat The Shade Lord Twice"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Night Stalker: Defeat The Shade Lord"); - %index++; - } - // - return %index; - - case 3: - //Wargames - messageClient( %client, 'SetLineHud', "", %tag, %index, "Wargames (PvP) Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("Slayer1")) { - if(%client.CheckNWChallengeCompletion("Slayer2")) { - if(%client.CheckNWChallengeCompletion("Slayer3")) { - if(%client.CheckNWChallengeCompletion("Slayer4")) { - if(%client.CheckNWChallengeCompletion("Slayer5")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Slayer V: Kill 1,000 Enemy Players"); - %index++; + //Does this challenge require another challenge be completed? + if($Challenge::RequiresChallenge[%subMenu, %i] !$= "") { + %requiredChallengeName = $Challenge::RequiresChallenge[%subMenu, %i]; + %requiredChallengeDetails = $Challenge::Info[%requiredChallengeName]; + if(!%client.CheckNWChallengeCompletion(%requiredChallengeName)) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked: Requires Completion of "@getField(%requiredChallengeDetails, 0)); + %index++; + continue; + } + } + //Does this challenge have an embedded requirement? + if($Challenge::SetRequirement[%subMenu, %i] !$= "") { + %cReq = $Challenge::SetRequirement[%subMenu, %i]; + if(getWord(%cReq, 0) $= "Officer") { + %offLevel = getWord(%cReq, 1); + if(%scriptController.officer < %offLevel) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked, Requires officer level "@%offLevel@" ("@strReplace($Prestige::Name[%offLevel], " ", "")@")"); + %index++; + continue; + } } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Slayer V: Kill 1,000 Enemy Players"); + %expReq = $Rank::MinPoints[%cReq]; + if(%xp < $expReq) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked, Requires "@$Ranks::NewRank[%cReq]@" rank"); + %index++; + continue; + } + } + } + //Is this a "hidden" challenge? + if($Challenge::SetHidden[%subMenu, %i]) { + if($Challenge::HiddenMessage[%subMenu, %i] !$= "") { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$Challenge::HiddenMessage[%subMenu, %i]); + %index++; + continue; + } + else { + messageClient( %client, 'SetLineHud', "", %tag, %index, "This is a hidden challenge, unlock it to learn more."); + %index++; + continue; + } + } + //All tests passed, write normally. + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%challengeDetails, 0)@": "@getField(%challengeDetails, 4)); + %index++; + } + } + else { + //Alright, we've got a multi-tier challenge. Now, let's process... + //Step 1: Identify the active challenge... + %j = %i; + %fCount = 1; + while(true) { + %currentC = $Challenge::Challenge[%subMenu, %j]; + %currentT = TWM2Lib_MainControl("getStrTrailingNumber", %currentC); + %currentChStr = getSubStr(%currentC, 0, strLen(%currentC) - strLen(%currentT)); + %cDetails = $Challenge::Info[%currentC]; + if(%loopAndFinish) { + if(%currentChStr $= %chStr && %currentT == %fCount) { + %done[%currentC] = true; + %fCount++; + %j++; + continue; + } + else { + break; + } + } + //Is this challenge complete? If so, check to see if the next challenge is still contained in our "sequence" + if(%client.CheckNWChallengeCompletion(%currentC)) { + %done[%currentC] = true; + //Yes, it's complete, move to the next. + %nextC = $Challenge::Challenge[%subMenu, %j+1]; + %nextT = TWM2Lib_MainControl("getStrTrailingNumber", %nextC); + %nextChStr = getSubStr(%nextC, 0, strLen(%nextC) - strLen(%nextT)); + if(%nextChStr $= %currentChStr && %nextT == %fCount+1) { + %fCount++; + %j++; + continue; + } + else { + %cDetails = $Challenge::Info[%currentC]; + //This is the last challenge in the sequence, and it's done... write. + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%cDetails, 0)@": "@getField(%cDetails, 4)); %index++; + break; } } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Slayer IV: Kill 750 Enemy Players"); - %index++; + //Not complete, this is the active challenge. Proceed to write, then flag the others in the chain as "done" + //Does this challenge require another challenge be completed? + if($Challenge::RequiresChallenge[%subMenu, %j] !$= "") { + %requiredChallengeName = $Challenge::RequiresChallenge[%subMenu, %j]; + %requiredChallengeDetails = $Challenge::Info[%requiredChallengeName]; + if(!%client.CheckNWChallengeCompletion(%requiredChallengeName)) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked: Requires Completion of "@getField(%requiredChallengeDetails, 0)); + %index++; + %loopAndFinish = true; + continue; + } + } + //Does this challenge have an embedded requirement? + if($Challenge::SetRequirement[%subMenu, %j] !$= "") { + %cReq = $Challenge::SetRequirement[%subMenu, %j]; + if(getWord(%cReq, 0) $= "Officer") { + %offLevel = getWord(%cReq, 1); + if(%scriptController.officer < %offLevel) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked, Requires officer level "@%offLevel@" ("@strReplace($Prestige::Name[%offLevel], " ", "")@")"); + %index++; + %loopAndFinish = true; + continue; + } + } + else { + %expReq = $Rank::MinPoints[%cReq]; + if(%xp < $expReq) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Challenge Locked, Requires "@$Ranks::NewRank[%cReq]@" rank"); + %index++; + %loopAndFinish = true; + continue; + } + } + } + //Is this a "hidden" challenge? + if($Challenge::SetHidden[%subMenu, %j]) { + if($Challenge::HiddenMessage[%subMenu, %j] !$= "") { + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@$Challenge::HiddenMessage[%subMenu, %i]); + %index++; + %loopAndFinish = true; + continue; + } + else { + messageClient( %client, 'SetLineHud', "", %tag, %index, "This is a hidden challenge, unlock it to learn more."); + %index++; + %loopAndFinish = true; + continue; + } + } + //All tests passed, write normally. + messageClient( %client, 'SetLineHud', "", %tag, %index, ""@getField(%cDetails, 0)@": "@getField(%cDetails, 4)); + %index++; + //Flag the rest of the chain as done. + %loopAndFinish = true; } } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Slayer III: Kill 500 Enemy Players"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Slayer II: Kill 250 Enemy Players"); - %index++; } } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Slayer I: Kill 100 Enemy Players"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Defectionator1")) { - if(%client.CheckNWChallengeCompletion("Defectionator2")) { - if(%client.CheckNWChallengeCompletion("Defectionator3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Defectionator III: Kill 500 \"Zombified\" Players"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Defectionator III: Kill 500 \"Zombified\" Players"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Defectionator II: Kill 250 \"Zombified\" Players"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Defectionator I: Kill 100 \"Zombified\" Players"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Infectionator1")) { - if(%client.CheckNWChallengeCompletion("Infectionator2")) { - if(%client.CheckNWChallengeCompletion("Infectionator3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Infectionator III: Convert 250 Players to the Zombie Horde"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Infectionator III: Convert 250 Players to the Zombie Horde"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Infectionator II: Convert 100 Players to the Zombie Horde"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Infectionator I: Convert 50 Players to the Zombie Horde..."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("HSHoncho1")) { - if(%client.CheckNWChallengeCompletion("HSHoncho2")) { - if(%client.CheckNWChallengeCompletion("HSHoncho3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Headshot Honcho III: Eliminate 300 Enemy Players with Headshots"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Headshot Honcho III: Eliminate 300 Enemy Players with Headshots"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Headshot Honcho II: Eliminate 200 Enemy Players with Headshots"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Headshot Honcho I: Eliminate 100 Enemy Players with Headshots"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("VehMans1")) { - if(%client.CheckNWChallengeCompletion("VehMans2")) { - if(%client.CheckNWChallengeCompletion("VehMans3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Vehicular Manslaughter III: Eliminate 250 Enemy Players with a vehicle"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Vehicular Manslaughter III: Eliminate 250 Enemy Players with a vehicle"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Vehicular Manslaughter II: Eliminate 100 Enemy Players with a vehicle"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Vehicular Manslaughter I: Eliminate 50 Enemy Players with a vehicle"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Assassin")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Assassinator: Backstab an enemy player using the Blade of Vengeance"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Assassinator: Backstab an enemy player using the Blade of Vengeance"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("CompletelyUnexpected")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "That Was... Unexpected: Eliminate someone playing as General Rog by backstabbing them with the Blade of Vengence"); - %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, ""); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "That Was... Unexpected: Eliminate someone playing as General Rog by backstabbing them with the Blade of Vengence"); - %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, ""); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Uncomprehendable")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Uncomprehendable: You committed the ultimate vehicle kill humiliation, well done!"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Uncomprehendable: Get killed in a fighter, and have the driverless vehicle run down your killer"); - %index++; - } - // - return %index; - - case 4: - //Zombie Slaying - messageClient( %client, 'SetLineHud', "", %tag, %index, "Zombie Slayer Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("NormHunter1")) { - if(%client.CheckNWChallengeCompletion("NormHunter2")) { - if(%client.CheckNWChallengeCompletion("NormHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Frontline Buster III: Slay 10,000 Zombies (Normal Type)"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Frontline Buster III: Slay 10,000 Zombies (Normal Type)"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Frontline Buster II: Slay 5,000 Zombies (Normal Type)"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Frontline Buster I: Slay 2,500 Zombies (Normal Type)"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("RavHunter1")) { - if(%client.CheckNWChallengeCompletion("RavHunter2")) { - if(%client.CheckNWChallengeCompletion("RavHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Speed Kills III: Slay 5,000 Ravager Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Speed Kills III: Slay 5,000 Ravager Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Speed Kills II: Slay 2,500 Ravager Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Speed Kills I: Slay 1,000 Ravager Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("LordHunter1")) { - if(%client.CheckNWChallengeCompletion("LordHunter2")) { - if(%client.CheckNWChallengeCompletion("LordHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Bigger They Are III: Slay 3,000 Zombie Lords"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Bigger They Are III: Slay 3,000 Zombie Lords"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Bigger They Are II: Slay 2,000 Zombie Lords"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "The Bigger They Are I: Slay 1,000 Zombie Lords"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("DemonHunter1")) { - if(%client.CheckNWChallengeCompletion("DemonHunter2")) { - if(%client.CheckNWChallengeCompletion("DemonHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fire Retardant III: Slay 5,000 Demon Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fire Retardant III: Slay 5,000 Demon Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fire Retardant II: Slay 2,500 Demon Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Fire Retardant I: Slay 1,000 Demon Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("AirRapHunter1")) { - if(%client.CheckNWChallengeCompletion("AirRapHunter2")) { - if(%client.CheckNWChallengeCompletion("AirRapHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bat Slayer III: Slay 6,000 Air Rapier Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bat Slayer III: Slay 6,000 Air Rapier Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bat Slayer II: Slay 3,500 Air Rapier Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bat Slayer I: Slay 1,500 Air Rapier Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("DLordHunter1")) { - if(%client.CheckNWChallengeCompletion("DLordHunter2")) { - if(%client.CheckNWChallengeCompletion("DLordHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Hellspawn Erradicator III: Slay 1,500 Demon Lord Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Hellspawn Erradicator III: Slay 1,500 Demon Lord Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Hellspawn Erradicator II: Slay 1,000 Demon Lord Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Hellspawn Erradicator I: Slay 500 Demon Lord Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ShifterHunter1")) { - if(%client.CheckNWChallengeCompletion("ShifterHunter2")) { - if(%client.CheckNWChallengeCompletion("ShifterHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti-Warp III: Slay 6,000 Shifter Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti-Warp III: Slay 6,000 Shifter Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti-Warp II: Slay 3,000 Shifter Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti-Warp I: Slay 1,500 Shifter Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SummonerHunter1")) { - if(%client.CheckNWChallengeCompletion("SummonerHunter2")) { - if(%client.CheckNWChallengeCompletion("SummonerHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde Halter III: Slay 5,000 Zombie Summoners"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde Halter III: Slay 5,000 Zombie Summoners"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde Halter II: Slay 2,500 Zombie Summoners"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde Halter I: Slay 1,000 Zombie Summoners"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SniperHunter1")) { - if(%client.CheckNWChallengeCompletion("SniperHunter2")) { - if(%client.CheckNWChallengeCompletion("SniperHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Scope Breaker III: Slay 5,000 Sniper Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Scope Breaker III: Slay 5,000 Sniper Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Scope Breaker II: Slay 2,500 Sniper Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Scope Breaker I: Slay 1,000 Sniper Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("UDemHunter1")) { - if(%client.CheckNWChallengeCompletion("UDemHunter2")) { - if(%client.CheckNWChallengeCompletion("UDemHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Runner Down III: Slay 5,000 Ultra Demon Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Runner Down III: Slay 5,000 Ultra Demon Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Runner Down II: Slay 2,500 Ultra Demon Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Runner Down I: Slay 1,000 Ultra Demon Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("VRavHunter1")) { - if(%client.CheckNWChallengeCompletion("VRavHunter2")) { - if(%client.CheckNWChallengeCompletion("VRavHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "C4 Coming Through III: Slay 5,000 Volatile Ravager Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "C4 Coming Through III: Slay 5,000 Volatile Ravager Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "C4 Coming Through II: Slay 2,500 Volatile Ravager Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "C4 Coming Through I: Slay 1,000 Volatile Ravager Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SSHunter1")) { - if(%client.CheckNWChallengeCompletion("SSHunter2")) { - if(%client.CheckNWChallengeCompletion("SSHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "De-Flakerizer III: Slay 5,000 Slingshot Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "De-Flakerizer III: Slay 5,000 Slingshot Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "De-Flakerizer II: Slay 2,500 Slingshot Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "De-Flakerizer I: Slay 1,000 Slingshot Zombies"); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("WraithHunter1")) { - if(%client.CheckNWChallengeCompletion("WraithHunter2")) { - if(%client.CheckNWChallengeCompletion("WraithHunter3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti Spec-Ops III: Slay 1,000 Wraith Zombies"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti Spec-Ops III: Slay 1,000 Wraith Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti Spec-Ops II: Slay 750 Wraith Zombies"); - %index++; - } - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Anti Spec-Ops I: Slay 500 Wraith Zombies"); - %index++; - } - // - return %index; - - case 5: - //Special Events - messageClient( %client, 'SetLineHud', "", %tag, %index, "Special Event Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("NewYearsEve")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Eve Fireworks: Get a Javelin Kill on New Year's Eve."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Eve Fireworks: Get a Javelin Kill on New Year's Eve."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("NewYears")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Fireworks: Call in a Nuclear Strike on New Year's Day."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "New Years Fireworks: Call in a Nuclear Strike on New Year's Day."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("GunshipMall")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship to The Mall: Call in a Gunship Killstreak on Christmas Mall 2009."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gunship to The Mall: Call in a Gunship Killstreak on Christmas Mall 2009."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("IndepRPG")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Independance RPG: Score an RPG Kill on the Fourth of July."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Independance RPG: Score an RPG Kill on the Fourth of July."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SoulsticeBombard")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Soulstice Bombard: Call in artillery on one of the soulstices (6/21 or 12/21)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Soulstice Bombard: Call in artillery on one of the soulstices (6/21 or 12/21)."); - %index++; - } - return %index; - - case 6: - //PGD Daily Challenges - //Handled by DChalg.cs - %index = GenerateDWMChallengeMenu(%client, %tag, %index); - return %index; - - case 7: - //Sabotage - messageClient( %client, 'SetLineHud', "", %tag, %index, "Sabotage Game Mode Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("BombDisarmed")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bomb Disarmed: Disarm an enemy bomb."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bomb Disarmed: Disarm an enemy bomb."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("BombPlanted")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bomb Planted: Arm the bomb at the objective."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bomb Planted: Arm the bomb at the objective."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("BombDetonated")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bomb Detonated: Win a Round Of Sabotage."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Bomb Detonated: Win a Round Of Sabotage."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("3For5Sabo")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Three For Five: Win 3 Rounds Of Sabotage in a match."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Three For Five: Win 3 Rounds Of Sabotage in a match."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("BaseDestroyer")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Base Destroyer: Go Undefeated in a full game of Sabotage."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Base Destroyer: Go Undefeated in a full game of Sabotage."); - %index++; - } - // - return %index; - - case 8: - //Domination - messageClient( %client, 'SetLineHud', "", %tag, %index, "Domination Game Mode Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("ZoneCapture")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Zone Conquerer: Capture an Area."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Zone Conquerer: Capture an Area."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ABC")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Alpha Bravo Charlie: Secure All Three Areas at one Time."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Alpha Bravo Charlie: Secure All Three Areas at one Time."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("MatchSet")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Match Set: Win a Round Of Domination."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Match Set: Win a Round Of Domination."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("3For5")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Three For Five: Win 3 Rounds Of Domination."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Three For Five: Win 3 Rounds Of Domination."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Undefeatable")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Undefeatable: Go Undefeated in a full game of Domination."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Undefeatable: Go Undefeated in a full game of Domination."); - %index++; - } - // - return %index; - - case 9: - //Horde - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde 3 Game Mode Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("15For15")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "15 For 15: Complete Wave 15."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "15 For 15: Complete Wave 15."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Milestone25")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Milestone 25: Complete Wave 25."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Milestone 25: Complete Wave 25."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ArmyOf50Stopped")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Army Of 50 Stopped: Complete Horde 3 (All 50 Waves)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Army Of 50 Stopped: Complete Horde 3 (All 50 Waves)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Angel")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Angel: Revive a fallen teammate in Horde."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Angel: Revive a fallen teammate in Horde."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ZBomber")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Z-Bomber: Call in a Z-Bomb While Playing Horde."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Z-Bomber: Call in a Z-Bomb While Playing Horde."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("FirstBlood")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "First Blood: Kill the first zombie that spawns in a Horde 3 game."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "First Blood: Kill the first zombie that spawns in a Horde 3 game."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SpeedSlayer")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Speed Slayer: Be the featured first killer 10 times in a single game."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Speed Slayer: Be the featured first killer 10 times in a single game."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("HighScorer")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "High Scorer: Be the featured high scorer 10 times in a single game."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "High Scorer: Be the featured high scorer 10 times in a single game."); - %index++; - } - // - return %index; - - case 10: - //Helljump - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helljump Game Mode Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("GroupBuster")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Group Buster: Complete A Group."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Group Buster: Complete A Group."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("WaveDefeater")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Wave Defeater: Complete A Wave."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Wave Defeater: Complete A Wave."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("OneK")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "1K Soldier: Earn 1,000 Points (Solo Score)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "1K Soldier: Earn 1,000 Points (Solo Score)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("FiveK")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "5K Soldier: Earn 5,000 Points (Solo Score)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "5K Soldier: Earn 5,000 Points (Solo Score)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("TenK")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "10K Soldier: Earn 10,000 Points (Solo Score)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "10K Soldier: Earn 10,000 Points (Solo Score)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("PointsSurge")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Points Surge: Earn 7,500 Points (Team Score)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Points Surge: Earn 7,500 Points (Team Score)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("PointsJackpot")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Points Jackpot: Earn 25,000 Points (Team Score)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Points Jackpot: Earn 25,000 Points (Team Score)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("DownBoy")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Down Boy... Down: Kill the wraith zombie on Strike 5."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Down Boy... Down: Kill the wraith zombie on Strike 5."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ClassExtravaganza")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Class Extravaganza: Use a hellclass."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Class Extravaganza: Use a hellclass."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("LifeGiver")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Giver of Life: Use a Full Team Respawn beacon."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Giver of Life: Use a Full Team Respawn beacon."); - %index++; - } - // - return %index; - - case 11: - //From The Top (Missions) - messageClient( %client, 'SetLineHud', "", %tag, %index, "From The Top (Mission) Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("SimonSays")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Simon Says: Order a mission."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Simon Says: Order a mission."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("FromTheTop")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "From The Top: Accept a mission."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "From The Top: Accept a mission."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("NaturalLeader")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Natural Leader: Order a mission and have another player join your team."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Natural Leader: Order a mission and have another player join your team."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("GoldStar")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gold Star: Complete a mission within the time limit."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Gold Star: Complete a mission within the time limit."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Faster")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Faster!: Complete a mission, but miss the time limit."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Faster!: Complete a mission, but miss the time limit."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("EpicFailure")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Epic Failure: Fail a mission ;)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Epic Failure: Fail a mission ;)."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("ExpertGunner")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Expert AC-130 Gunner: Complete 'Rain Down'."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Expert AC-130 Gunner: Complete 'Rain Down'."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Survivalist")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Survivalist: Complete 'Surrounded'."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Survivalist: Complete 'Surrounded'."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Invisibreh")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shhh.. I'm Invisibreh: Complete 'Enemy AC-130 Above' by outlasting the enemy AC-130."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shhh.. I'm Invisibreh: Complete 'Enemy AC-130 Above' by outlasting the enemy AC-130."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("WeakGunship")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "I have you now!: Complete 'Enemy AC-130 Above' by destroying the enemy AC-130."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "I have you now!: Complete 'Enemy AC-130 Above' by destroying the enemy AC-130."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("InvasionBuster")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Invade THIS!: Complete 'Invasion'."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Invade THIS!: Complete 'Invasion'."); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("SurvivalistExtreme")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Extreme Survivalist: Complete 'Surrounded 2.0'."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Extreme Survivalist: Complete 'Surrounded 2.0'."); - %index++; - } - // - return %index; - - case 12: - //Officer Promotion - messageClient( %client, 'SetLineHud', "", %tag, %index, "Officer Challenges:"); - %index++; - if(%client.CheckNWChallengeCompletion("Prestige1")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Instructive Officer - Reach Officer Level 1."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige2")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Excelling Officer - Reach Officer Level 2."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige3")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Champion Officer - Reach Officer Level 3."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige4")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Prestigious Officer - Reach Officer Level 4."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige5")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Supreme Officer - Reach Officer Level 5."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige6")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Glorious Officer - Reach Officer Level 6."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige7")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Ultimate Officer - Reach Officer Level 7."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige8")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Shadowing Officer - Reach Officer Level 8."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige9")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Phantom Officer - Reach Oficer Level 9."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige10")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Brutal Officer - Reach Oficer Level 10."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige11")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Vengeful Officer - Reach Oficer Level 11."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige12")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Noble Officer - Reach Oficer Level 12."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige13")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Spectral Officer - Reach Oficer Level 13."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige14")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Masterful Officer - Reach Oficer Level 14."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("Prestige15")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Rising Harbinger - Reach The Highest Officer Level (15)."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "=== CLASSIFIED: REQUIRES ADDITIONAL INTELLIGENCE ==="); - %index++; - } - // - if(%client.CheckNWChallengeCompletion("GameEnder")) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Game Ender - Call in a Fission Bomb."); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Game Ender - Call in a Fission Bomb."); - %index++; - } - // - return %index; - - default: - //Invalid - messageClient( %client, 'SetLineHud', "", %tag, %index, "Invalid menu option passed to GenerateChallengeSubMenu."); - %index++; - return %index; + } + else { + error("GenerateChallengeSubMenu(): Something went wrong.. Loop found challenge "@%challengeInternalName@", but this is not defined in the NWChallengeIndex."); + } } + return %index; + } \ No newline at end of file diff --git a/scripts/TWM2/Systems/DChalg.cs b/scripts/TWM2/Systems/DChalg.cs index 2e00612..79ff052 100644 --- a/scripts/TWM2/Systems/DChalg.cs +++ b/scripts/TWM2/Systems/DChalg.cs @@ -746,10 +746,16 @@ function GenerateDWMChallengeMenu(%client, %tag, %index) { %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "Uncolored Indicates An Active Challenge"); %index++; + messageClient( %client, 'SetLineHud', "", %tag, %index, ""); + %index++; + messageClient( %client, 'SetLineHud', "", %tag, %index, "PGD Daily Challenge News:"); + %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "6/29/17: PGD Challenges reacitvated, now running 5x daily"); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "4/20/16: New Daily Challenge System is Live!"); %index++; + messageClient( %client, 'SetLineHud', "", %tag, %index, "=========================="); + %index++; for(%i = 1; isSet($Challenges::Challenge[%i]); %i++) { %challenge = $Challenges::Challenge[%i]; %cType = getField(%challenge, 0); diff --git a/scripts/TWM2/Systems/MainControl.cs b/scripts/TWM2/Systems/MainControl.cs index 0f92b6c..9b084ca 100644 --- a/scripts/TWM2/Systems/MainControl.cs +++ b/scripts/TWM2/Systems/MainControl.cs @@ -206,6 +206,22 @@ function TWM2Lib_MainControl(%functionName, %arguments) { %PositionF = getWord(%Position, 0) SPC getWord(%Position, 1) SPC %Z; return %PositionF; + + case "getstrtrailingnumber": + %str = trim(StrReplace(%arguments, " ", "")); + %len = strLen(%str); + %trailingNum = ""; + for(%i = %len-1; %i >= 0; %i--) { + %ch = strcmp(getSubStr(%str, %i, 1), ""); + if(%ch > 48 && %ch < 57) { + //Number, remember, we're reading backwards, so write backwards. + %trailingNum = getSubStr(%str, %i, 1) @ %trailingNum; + } + else { + break; + } + } + return %trailingNum; default: error("TWM2Lib_MainControl(): Error, unknown function "@%functionName@" sent to command."); diff --git a/scripts/TWM2/Systems/Medals.cs b/scripts/TWM2/Systems/Medals.cs index f912906..48c39f3 100644 --- a/scripts/TWM2/Systems/Medals.cs +++ b/scripts/TWM2/Systems/Medals.cs @@ -89,10 +89,6 @@ function GetClientMedals(%client, %target, %tag, %index) { messageClient( %client, 'SetLineHud', "", %tag, %index, "*About Damn Time: Reach the Final Rank (3,000,000 EXP)"); %index++; } - if(%target.hasMedal(29)) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "*Daily Max: Earn the maximum amount of EXP for a given day"); - %index++; - } messageClient( %client, 'SetLineHud', "", %tag, %index, "***Boss Medals***"); %index++; if(%target.hasMedal(1)) { @@ -169,7 +165,7 @@ function GetClientMedals(%client, %target, %tag, %index) { messageClient( %client, 'SetLineHud', "", %tag, %index, "*Glorious Fire: accumulate 250 kills with the A|V|X Flamethrower"); %index++; } - messageClient( %client, 'SetLineHud', "", %tag, %index, "***Mission Medals***"); + messageClient( %client, 'SetLineHud', "", %tag, %index, "***Operation Medals***"); %index++; if(%target.hasMedal(32)) { messageClient( %client, 'SetLineHud', "", %tag, %index, "*AC-130 Expert: Complete 'Rain Down'."); @@ -212,7 +208,7 @@ function GetClientMedals(%client, %target, %tag, %index) { %index++; } if(%target.hasMedal(42)) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "*Rog's Vengeance: Complete All 4 Rog's Vengeance Missions"); + messageClient( %client, 'SetLineHud', "", %tag, %index, "*Rog's Vengeance: Complete All 4 Rog's Vengeance Operations"); %index++; } if(%target.hasMedal(31)) { diff --git a/scripts/TWM2/Systems/NWChallengeIndex.cs b/scripts/TWM2/Systems/NWChallengeIndex.cs index 17d081f..3387b46 100644 --- a/scripts/TWM2/Systems/NWChallengeIndex.cs +++ b/scripts/TWM2/Systems/NWChallengeIndex.cs @@ -1,250 +1,614 @@ -//Non-Weapon Challenge Index -//The List -//$Challenge::Info[%name] = "Name\tCategoryID\tEXP Reward\tOther Reward"; +//NWChallengeIndex.cs +//By: Robert C. Fritzen (Phantom139) +//TWM2 3.9.1 Update +//Non-Weapon Challenge Index (Also known as General Tasks, or any challenges that aren't weapon image specific) + +//This system requires the use of three global variables, defined below +//$Challenge::Category[%id] = "F2 Menu Name\tF2 Menu Description\tRequired Rank # or Officer #"; +//$Challenge::Challenge[%catID, %id] = "Name"; +//$Challenge::Info[%name] = "Name\tCategoryID\tEXP Reward\tOther Reward (Text Only)\tDescription (Requirement)"; + +//If you want to make a multi-tier challenge, then all you need to do is use the same name with an incrementing value +// starting from 1.. for example: UAV1, UAV2, UAV3. +//If you need all of these challenges to show, then you must set $Challenge::IsNotMultiTier[%name] = true; +// However, you should get into the habbit of using the $Challenge::IsNotMultiTier[%name] = true; flag for all challenges +// that you make that are not multi-tier. This will make the menu generation code run faster... + +//Additionally, you can flag challenges for additional requirements or other neat little things, here's an example +// of a challenge that is hidden until unlocked +//$Challenge::SetHidden[%catID, %id] = true; +//$Challenge::HiddenMessage[%catID, %id] = "=== CLASSIFIED ==="; + +//To make a challenge require another challenge to be completed: +//$Challenge::RequiresChallenge[%catID, %id] = "Name"; + +//You can also embed additional rank requirements for challenges inside of a menu, for example the killstreak menu +// has two officer killstreak challenges: +//$Challenge::SetRequirement[%catID, %id] = "Officer 15"; + +//For development purposes, challenges can also be disabled here: +//$Challenge::FlagDisabled[%name] = true; //Killstreaks -$Challenge::Info["UAV1"] = "UAV Expert I\t1\t500\tNone"; -$Challenge::Info["UAV2"] = "UAV Expert II\t1\t1000\tNone"; -$Challenge::Info["UAV3"] = "UAV Expert III\t1\t2500\tNone"; -$Challenge::Info["Airstrike1"] = "Airstrike Expert I\t1\t1000\tNone"; -$Challenge::Info["Airstrike2"] = "Airstrike Expert II\t1\t5000\tNone"; -$Challenge::Info["Airstrike3"] = "Airstrike Expert III\t1\t10000\tNone"; -$Challenge::Info["UAMS1"] = "UAMS Expert I\t1\t1000\tNone"; -$Challenge::Info["UAMS2"] = "UAMS Expert II\t1\t5000\tNone"; -$Challenge::Info["UAMS3"] = "UAMS Expert III\t1\t10000\tNone"; -$Challenge::Info["Helicopter1"] = "Helicopter Expert I\t1\t2500\tNone"; -$Challenge::Info["Helicopter2"] = "Helicopter Expert II\t1\t10000\tNone"; -$Challenge::Info["Helicopter3"] = "Helicopter Expert III\t1\t12500\tCombat Helicopter Schematics"; -$Challenge::Info["Harrier1"] = "Harrier Expert I\t1\t2500\tNone"; -$Challenge::Info["Harrier2"] = "Harrier Expert II\t1\t5000\tNone"; -$Challenge::Info["Harrier3"] = "Harrier Expert III\t1\t12500\tPlasma Harrier Schematics"; -$Challenge::Info["SatNuke1"] = "OLS Expert I\t1\t5000\tNone"; -$Challenge::Info["SatNuke2"] = "OLS Expert II\t1\t10000\tNone"; -$Challenge::Info["SatNuke3"] = "OLS Expert III\t1\t25000\tNone"; -$Challenge::Info["NapalmHarrier1"] = "Napalm Airstrike Expert I\t1\t5000\tNone"; -$Challenge::Info["NapalmHarrier2"] = "Napalm Airstrike Expert II\t1\t10000\tNone"; -$Challenge::Info["NapalmHarrier3"] = "Napalm Airstrike Expert III\t1\t25000\tF41 Strike Fighter Schematics"; -$Challenge::Info["GunHeli1"] = "Gunship Helicopter Expert I\t1\t5000\tNone"; -$Challenge::Info["GunHeli2"] = "Gunship Helicopter Expert II\t1\t10000\tNone"; -$Challenge::Info["GunHeli3"] = "Gunship Helicopter Expert III\t1\t25000\tGunship Helicopter Schematics"; -$Challenge::Info["SBomber1"] = "Stealth Bomber Expert I\t1\t5000\tNone"; -$Challenge::Info["SBomber2"] = "Stealth Bomber Expert II\t1\t10000\tNone"; -$Challenge::Info["SBomber3"] = "Stealth Bomber Expert III\t1\t25000\tStealth Bomber Schematics"; -$Challenge::Info["Gunship1"] = "Harbingers Wrath Expert I\t1\t5000\tNone"; -$Challenge::Info["Gunship2"] = "Harbingers Wrath Expert II\t1\t10000\tNone"; -$Challenge::Info["Gunship3"] = "Harbingers Wrath Expert III\t1\t25000\tAC-130 Vehicle Schematics"; -$Challenge::Info["ACGunship1"] = "AC-130 Expert I\t1\t5000\tNone"; -$Challenge::Info["ACGunship2"] = "AC-130 Expert II\t1\t10000\tNone"; -$Challenge::Info["ACGunship3"] = "AC-130 Expert III\t1\t25000\tBragging Rights... lol."; -$Challenge::Info["Apache1"] = "Apache Gunner Expert I\t1\t5000\tNone"; -$Challenge::Info["Apache2"] = "Apache Gunner Expert II\t1\t10000\tNone"; -$Challenge::Info["Apache3"] = "Apache Gunner Expert III\t1\t25000\tApache Helicopter Schematics"; -$Challenge::Info["Centaur1"] = "Centaur Artillery Expert I\t1\t10000\tNone"; -$Challenge::Info["Centaur2"] = "Centaur Artillery Expert II\t1\t25000\tNone"; -$Challenge::Info["Centaur3"] = "Centaur Artillery Expert III\t1\t50000\tNone"; -$Challenge::Info["Hind1"] = "Hind Expert I\t1\t10000\tNone"; -$Challenge::Info["Hind2"] = "Hind Expert II\t1\t25000\tNone"; -$Challenge::Info["Hind3"] = "Hind Expert III\t1\t50000\tHind Helicopter Schematics"; -$Challenge::Info["EMP1"] = "EMP Expert I\t1\t10000\tNone"; -$Challenge::Info["EMP2"] = "EMP Expert II\t1\t25000\tNone"; -$Challenge::Info["EMP3"] = "EMP Expert III\t1\t50000\tNone"; -$Challenge::Info["Nuke1"] = "Nuke Expert I\t1\t10000\tNone"; -$Challenge::Info["Nuke2"] = "Nuke Expert II\t1\t25000\tNone"; -$Challenge::Info["Nuke3"] = "Nuke Expert III\t1\t50000\tZ-Bomb Killstreak"; -$Challenge::Info["Fission1"] = "Fission Bomb Expert I\t1\t25000\tNone"; -$Challenge::Info["Fission2"] = "Fission Bomb Expert II\t1\t50000\tNone"; -$Challenge::Info["Fission3"] = "Fission Bomb Expert III\t1\t75000\tNone"; -$Challenge::Info["LOAS1"] = "LOAS Expert I\t1\t25000\tNone"; -$Challenge::Info["LOAS2"] = "LOAS Expert II\t1\t50000\tNone"; -$Challenge::Info["LOAS3"] = "LOAS Expert III\t1\t75000\tNone"; +$Challenge::Category[1] = "Killstreak Challenges\tTasks for calling in advanced support\t13"; + +$Challenge::Challenge[1, 0] = "UAV1"; +$Challenge::Info["UAV1"] = "UAV Expert I\t1\t500\tNone\tCall in 30 UAV Recon Satellites"; +$Challenge::Challenge[1, 1] = "UAV2"; +$Challenge::Info["UAV2"] = "UAV Expert II\t1\t1000\tNone\tCall in 75 UAV Recon Satellites"; +$Challenge::Challenge[1, 2] = "UAV3"; +$Challenge::Info["UAV3"] = "UAV Expert III\t1\t2500\tNone\tCall in 100 UAV Recon Satellites"; +$Challenge::Challenge[1, 3] = "Airstrike1"; +$Challenge::Info["Airstrike1"] = "Airstrike Expert I\t1\t1000\tNone\tCall in 25 Airstrikes"; +$Challenge::Challenge[1, 4] = "Airstrike2"; +$Challenge::Info["Airstrike2"] = "Airstrike Expert II\t1\t5000\tNone\tCall in 65 Airstrikes"; +$Challenge::Challenge[1, 5] = "Airstrike3"; +$Challenge::Info["Airstrike3"] = "Airstrike Expert III\t1\t10000\tNone\tCall in 125 Airstrikes"; +$Challenge::Challenge[1, 6] = "UAMS1"; +$Challenge::Info["UAMS1"] = "UAMS Expert I\t1\t1000\tNone\tCall in 25 UAMS Strikes"; +$Challenge::Challenge[1, 7] = "UAMS2"; +$Challenge::Info["UAMS2"] = "UAMS Expert II\t1\t5000\tNone\tCall in 65 UAMS Strikes"; +$Challenge::Challenge[1, 8] = "UAMS3"; +$Challenge::Info["UAMS3"] = "UAMS Expert III\t1\t10000\tNone\tCall in 125 UAMS Strikes"; +$Challenge::Challenge[1, 9] = "Helicopter1"; +$Challenge::Info["Helicopter1"] = "Helicopter Expert I\t1\t2500\tNone\tCall in 25 Combat Helicopters"; +$Challenge::Challenge[1, 10] = "Helicopter2"; +$Challenge::Info["Helicopter2"] = "Helicopter Expert II\t1\t10000\tNone\tCall in 65 Combat Helicopters"; +$Challenge::Challenge[1, 11] = "Helicopter3"; +$Challenge::Info["Helicopter3"] = "Helicopter Expert III\t1\t12500\tCombat Helicopter Schematics\tCall in 125 Combat Helicopters"; +$Challenge::Challenge[1, 12] = "Harrier1"; +$Challenge::Info["Harrier1"] = "Harrier Expert I\t1\t2500\tNone\tCall in 20 Plasma Harrier Airstrikes"; +$Challenge::Challenge[1, 13] = "Harrier2"; +$Challenge::Info["Harrier2"] = "Harrier Expert II\t1\t5000\tNone\tCall in 55 Plasma Harrier Airstrikes"; +$Challenge::Challenge[1, 14] = "Harrier3"; +$Challenge::Info["Harrier3"] = "Harrier Expert III\t1\t12500\tPlasma Harrier Schematics\tCall in 110 Plasma Harrier Airstrikes"; +$Challenge::Challenge[1, 15] = "SatNuke1"; +$Challenge::Info["SatNuke1"] = "OLS Expert I\t1\t5000\tNone\tCall in 25 Orbital Laser Strikes"; +$Challenge::Challenge[1, 16] = "SatNuke2"; +$Challenge::Info["SatNuke2"] = "OLS Expert II\t1\t10000\tNone\tCall in 65 Orbital Laser Strikes"; +$Challenge::Challenge[1, 17] = "SatNuke3"; +$Challenge::Info["SatNuke3"] = "OLS Expert III\t1\t25000\tNone\tCall in 125 Orbital Laser Strikes"; +$Challenge::Challenge[1, 18] = "NapalmHarrier1"; +$Challenge::Info["NapalmHarrier1"] = "Napalm Airstrike Expert I\t1\t5000\tNone\tCall in 20 Napalm Airstrikes"; +$Challenge::Challenge[1, 19] = "NapalmHarrier2"; +$Challenge::Info["NapalmHarrier2"] = "Napalm Airstrike Expert II\t1\t10000\tNone\tCall in 55 Napalm Airstrikes"; +$Challenge::Challenge[1, 20] = "NapalmHarrier3"; +$Challenge::Info["NapalmHarrier3"] = "Napalm Airstrike Expert III\t1\t25000\tF41 Strike Fighter Schematics\tCall in 110 Napalm Airstrikes"; +$Challenge::Challenge[1, 21] = "GunHeli1"; +$Challenge::Info["GunHeli1"] = "Gunship Helicopter Expert I\t1\t5000\tNone\tCall in 20 Gunship Helicopters"; +$Challenge::Challenge[1, 22] = "GunHeli2"; +$Challenge::Info["GunHeli2"] = "Gunship Helicopter Expert II\t1\t10000\tNone\tCall in 55 Gunship Helicopters"; +$Challenge::Challenge[1, 23] = "GunHeli3"; +$Challenge::Info["GunHeli3"] = "Gunship Helicopter Expert III\t1\t25000\tGunship Helicopter Schematics\tCall in 110 Gunship Helicopters"; +$Challenge::Challenge[1, 24] = "SBomber1"; +$Challenge::Info["SBomber1"] = "Stealth Bomber Expert I\t1\t5000\tNone\tCall in 20 Stealth Bombers"; +$Challenge::Challenge[1, 25] = "SBomber2"; +$Challenge::Info["SBomber2"] = "Stealth Bomber Expert II\t1\t10000\tNone\tCall in 50 Stealth Bombers"; +$Challenge::Challenge[1, 26] = "SBomber3"; +$Challenge::Info["SBomber3"] = "Stealth Bomber Expert III\t1\t25000\tNone\tCall in 100 Stealth Bombers"; +$Challenge::Challenge[1, 27] = "Gunship1"; +$Challenge::Info["Gunship1"] = "Harbinger's Wrath Expert I\t1\t5000\tNone\tCall in 15 Harbinger Gunships"; +$Challenge::Challenge[1, 28] = "Gunship2"; +$Challenge::Info["Gunship2"] = "Harbinger's Wrath Expert II\t1\t10000\tNone\tCall in 35 Harbinger Gunships"; +$Challenge::Challenge[1, 29] = "Gunship3"; +$Challenge::Info["Gunship3"] = "Harbinger's Wrath Expert III\t1\t25000\tAC-130 Vehicle Schematics\tCall in 75 Harbinger Gunships"; +$Challenge::Challenge[1, 30] = "ACGunship1"; +$Challenge::RequiresChallenge[1, 30] = "Gunship3"; +$Challenge::Info["ACGunship1"] = "AC-130 Expert I\t1\t5000\tNone\tCall in 15 AC-130 Gunners"; +$Challenge::Challenge[1, 31] = "ACGunship2"; +$Challenge::RequiresChallenge[1, 31] = "Gunship3"; +$Challenge::Info["ACGunship2"] = "AC-130 Expert II\t1\t10000\tNone\tCall in 35 AC-130 Gunners"; +$Challenge::Challenge[1, 32] = "ACGunship3"; +$Challenge::RequiresChallenge[1, 32] = "Gunship3"; +$Challenge::Info["ACGunship3"] = "AC-130 Expert III\t1\t25000\tBragging Rights... lol.\tCall in 75 AC-130 Gunners"; +$Challenge::Challenge[1, 33] = "Apache1"; +$Challenge::Info["Apache1"] = "Apache Gunner Expert I\t1\t5000\tNone\tCall in 15 Apache Gunners"; +$Challenge::Challenge[1, 34] = "Apache2"; +$Challenge::Info["Apache2"] = "Apache Gunner Expert II\t1\t10000\tNone\tCall in 35 Apache Gunners"; +$Challenge::Challenge[1, 35] = "Apache3"; +$Challenge::Info["Apache3"] = "Apache Gunner Expert III\t1\t25000\tApache Helicopter Schematics\tCall in 75 Apache Gunners"; +$Challenge::Challenge[1, 36] = "Centaur1"; +$Challenge::Info["Centaur1"] = "Centaur Artillery Expert I\t1\t10000\tNone\tCall in 10 Artillery Strikes"; +$Challenge::Challenge[1, 37] = "Centaur2"; +$Challenge::Info["Centaur2"] = "Centaur Artillery Expert II\t1\t25000\tNone\tCall in 25 Artillery Strikes"; +$Challenge::Challenge[1, 38] = "Centaur3"; +$Challenge::Info["Centaur3"] = "Centaur Artillery Expert III\t1\t50000\tNone\tCall in 50 Artillery Strikes"; +$Challenge::Challenge[1, 39] = "EMP1"; +$Challenge::Info["EMP1"] = "EMP Expert I\t1\t10000\tNone\tCall in 5 Mass EMP's"; +$Challenge::Challenge[1, 40] = "EMP2"; +$Challenge::Info["EMP2"] = "EMP Expert II\t1\t25000\tNone\tCall in 10 Mass EMP's"; +$Challenge::Challenge[1, 41] = "EMP3"; +$Challenge::Info["EMP3"] = "EMP Expert III\t1\t50000\tNone\tCall in 25 Mass EMP's"; +$Challenge::Challenge[1, 42] = "Nuke1"; +$Challenge::Info["Nuke1"] = "Nuke Expert I\t1\t10000\tNone\tCall in 5 Nukes"; +$Challenge::Challenge[1, 43] = "Nuke2"; +$Challenge::Info["Nuke2"] = "Nuke Expert II\t1\t25000\tNone\tCall in 10 Nukes"; +$Challenge::Challenge[1, 44] = "Nuke3"; +$Challenge::Info["Nuke3"] = "Nuke Expert III\t1\t50000\tZ-Bomb Killstreak\tCall in 25 Nukes"; +$Challenge::Challenge[1, 45] = "Fission1"; +$Challenge::SetRequirement[1, 45] = "Officer 1"; +$Challenge::Info["Fission1"] = "Fission Bomb Expert I\t1\t25000\tNone\tCall in 1 Fission Bomb"; +$Challenge::Challenge[1, 46] = "Fission2"; +$Challenge::SetRequirement[1, 46] = "Officer 1"; +$Challenge::Info["Fission2"] = "Fission Bomb Expert II\t1\t50000\tNone\tCall in 2 Fission Bomb"; +$Challenge::Challenge[1, 47] = "Fission3"; +$Challenge::SetRequirement[1, 47] = "Officer 1"; +$Challenge::Info["Fission3"] = "Fission Bomb Expert III\t1\t75000\tNone\tCall in 5 Fission Bomb"; +$Challenge::Challenge[1, 48] = "LOAS1"; +$Challenge::SetRequirement[1, 48] = "Officer 15"; +$Challenge::Info["LOAS1"] = "LOAS Expert I\t1\t25000\tNone\tCall in 5 Low Orbit Orbital Strikes (LOAS)"; +$Challenge::Challenge[1, 49] = "LOAS2"; +$Challenge::SetRequirement[1, 49] = "Officer 15"; +$Challenge::Info["LOAS2"] = "LOAS Expert II\t1\t50000\tNone\tCall in 10 Low Orbit Orbital Strikes (LOAS)"; +$Challenge::Challenge[1, 50] = "LOAS3"; +$Challenge::SetRequirement[1, 50] = "Officer 15"; +$Challenge::Info["LOAS3"] = "LOAS Expert III\t1\t75000\tNone\tCall in 15 Low Orbit Orbital Strikes (LOAS)"; //Bosses -$Challenge::Info["Yvex1"] = "Nightmarish Enterprise\t2\t1000\tNone"; -$Challenge::Info["Yvex2"] = "Darkness Rising\t2\t2500\tNone"; -$Challenge::Info["Yvex3"] = "Shadowy Desecration\t2\t5000\tNone"; -$Challenge::Info["CWS1"] = "Fortress In The Sky\t2\t1000\tNone"; -$Challenge::Info["CWS2"] = "Aerieal Nightmare\t2\t2500\tNone"; -$Challenge::Info["CWS3"] = "Harbinger's Bane\t2\t5000\tNone"; -$Challenge::Info["GOL1"] = "Envious Lightning\t2\t1500\tNone"; -$Challenge::Info["GOL2"] = "The Shocking Truth\t2\t3000\tNone"; -$Challenge::Info["GOL3"] = "Severe Thunderstorm\t2\t6500\tNone"; -$Challenge::Info["GOF1"] = "Purifier\t2\t5000\tNone"; -$Challenge::Info["GOF2"] = "Inceneration Ender\t2\t10000\tNone"; -$Challenge::Info["GOF3"] = "Mt. Death Depleter\t2\t20000\tNone"; -$Challenge::Info["Veg1"] = "Flaming Revolt\t2\t1500\tNone"; -$Challenge::Info["Veg2"] = "Burning Frenzy\t2\t3000\tNone"; -$Challenge::Info["Veg3"] = "Firestorm Ender\t2\t6500\tNone"; -$Challenge::Info["LRog1"] = "Revenge Halter\t2\t2500\tNone"; -$Challenge::Info["LRog2"] = "Return to Returner\t2\t5000\tNone"; -$Challenge::Info["LRog3"] = "Payback's A Bitch\t2\t10000\tNone"; -$Challenge::Info["Ins1"] = "El Shipitor\t2\t2500\tNone"; -$Challenge::Info["Ins2"] = "No Gravity, No Problem\t2\t5000\tNone"; -$Challenge::Info["Ins3"] = "Gravitational Influx\t2\t10000\tNone"; -$Challenge::Info["Stormrider1"] = "Clear Skies\t2\t2500\tNone"; -$Challenge::Info["Stormrider2"] = "Shootdown Master\t2\t5000\tNone"; -$Challenge::Info["Stormrider3"] = "Harbinger Fighter Demolisher\t2\t10000\tNone"; -$Challenge::Info["Treb1"] = "Precious Cargo\t2\t2500\tNone"; -$Challenge::Info["Treb2"] = "Harbinger Denied\t2\t5000\tNone"; -$Challenge::Info["Treb3"] = "Tank Halter\t2\t10000\tNone"; -$Challenge::Info["Vard1"] = "Shining Star\t2\t3500\tNone"; -$Challenge::Info["Vard2"] = "Glare The Dark\t2\t7000\tNone"; -$Challenge::Info["Vard3"] = "Outevil The Wicked\t2\t12500\tNone"; -$Challenge::Info["VardEasy"] = "The Standard Experience\t2\t7000\tNone"; -$Challenge::Info["VardNorm"] = "Demon Hunter\t2\t15000\tNone"; -$Challenge::Info["VardHard"] = "Master Demon Slayer\t2\t25000\tNone"; -$Challenge::Info["VardWtf"] = "God of the Shadow Realm\t2\t50000\tNone"; -$Challenge::Info["ShadeLord1"] = "Night Stalker\t2\t5000\tNone"; -$Challenge::Info["ShadeLord2"] = "Shadow Embracer\t2\t10000\tNone"; -$Challenge::Info["ShadeLord3"] = "Dawnlight Encarnate\t2\t20000\tNone"; +$Challenge::Category[2] = "Boss Challenges\tTasks for eliminating the toughest enemies in TWM2\t18"; -//Blacklist: Depricated 3.9.1 -//$Challenge::Info["Acceptance"] = "Acceptance\t3\t1000\tNone"; -//$Challenge::Info["ListHit"] = "Hitlister of The List\t3\t2500\tNone"; -//$Challenge::Info["TopHit"] = "Champion Slayer\t3\t3500\tNone"; -//$Challenge::Info["ButIm2"] = "But I'm #2\t3\t3500\tNone"; -//$Challenge::Info["DF3"] = "Don't Forget #3\t3\t3500\tNone"; +$Challenge::Challenge[2, 0] = "Yvex1"; +$Challenge::Info["Yvex1"] = "Nightmarish Enterprise\t2\t1000\tNone\tDefeat Lord Yvex 3 Times"; +$Challenge::Challenge[2, 1] = "Yvex2"; +$Challenge::Info["Yvex2"] = "Darkness Rising\t2\t2500\tNone\tDefeat Lord Yvex 5 Times"; +$Challenge::Challenge[2, 2] = "Yvex3"; +$Challenge::Info["Yvex3"] = "Shadowy Desecration\t2\t5000\tNone\tDefeat Lord Yvex 10 Times"; +$Challenge::Challenge[2, 3] = "CWS1"; +$Challenge::Info["CWS1"] = "Fortress In The Sky\t2\t1000\tNone\tDefeat Colonel Windshear 3 Times"; +$Challenge::Challenge[2, 4] = "CWS2"; +$Challenge::Info["CWS2"] = "Aerieal Nightmare\t2\t2500\tNone\tDefeat Colonel Windshear 5 Times"; +$Challenge::Challenge[2, 5] = "CWS3"; +$Challenge::Info["CWS3"] = "Harbinger's Bane\t2\t5000\tNone\tDefeat Colonel Windshear 10 Times"; +$Challenge::Challenge[2, 6] = "GOL1"; +$Challenge::Info["GOL1"] = "Envious Lightning\t2\t1500\tNone\tDefeat The Ghost Of Lightning 3 Times"; +$Challenge::Challenge[2, 7] = "GOL2"; +$Challenge::Info["GOL2"] = "The Shocking Truth\t2\t3000\tNone\tDefeat The Ghost Of Lightning 5 Times"; +$Challenge::Challenge[2, 8] = "GOL3"; +$Challenge::Info["GOL3"] = "Severe Thunderstorm\t2\t6500\tNone\tDefeat The Ghost Of Lightning 10 Times"; +$Challenge::Challenge[2, 9] = "GOF1"; +$Challenge::Info["GOF1"] = "Purifier\t2\t5000\tNone\tDefeat The Ghost Of Fire"; +$Challenge::Challenge[2, 10] = "GOF2"; +$Challenge::Info["GOF2"] = "Inceneration Ender\t2\t10000\tNone\tDefeat The Ghost Of Fire 3 Times"; +$Challenge::Challenge[2, 11] = "GOF3"; +$Challenge::Info["GOF3"] = "Mt. Death Depleter\t2\t20000\tNone\tDefeat The Ghost Of Fire 5 Times"; +$Challenge::Challenge[2, 12] = "Veg1"; +$Challenge::Info["Veg1"] = "Flaming Revolt\t2\t1500\tNone\tDefeat General Vegenor 3 Times"; +$Challenge::Challenge[2, 13] = "Veg2"; +$Challenge::Info["Veg2"] = "Burning Frenzy\t2\t3000\tNone\tDefeat General Vegenor 5 Times"; +$Challenge::Challenge[2, 14] = "Veg3"; +$Challenge::Info["Veg3"] = "Firestorm Ender\t2\t6500\tNone\tDefeat General Vegenor 10 Times"; +$Challenge::Challenge[2, 15] = "LRog1"; +$Challenge::Info["LRog1"] = "Revenge Halter\t2\t2500\tNone\tDefeat Lord Rog 2 Times"; +$Challenge::Challenge[2, 16] = "LRog2"; +$Challenge::Info["LRog2"] = "Return to Returner\t2\t5000\tNone\tDefeat Lord Rog 4 Times"; +$Challenge::Challenge[2, 17] = "LRog3"; +$Challenge::Info["LRog3"] = "Payback's A Bitch\t2\t10000\tNone\tDefeat Lord Rog 7 Times"; +$Challenge::Challenge[2, 18] = "Ins1"; +$Challenge::Info["Ins1"] = "El Shipitor\t2\t2500\tNone\tDefeat Major Insignia 2 Times"; +$Challenge::Challenge[2, 19] = "Ins2"; +$Challenge::Info["Ins2"] = "No Gravity, No Problem\t2\t5000\tNone\tDefeat Major Insignia 4 Times"; +$Challenge::Challenge[2, 20] = "Ins3"; +$Challenge::Info["Ins3"] = "Gravitational Influx\t2\t10000\tNone\tDefeat Major Insignia 7 Times"; +$Challenge::Challenge[2, 21] = "Stormrider1"; +$Challenge::Info["Stormrider1"] = "Clear Skies\t2\t2500\tNone\tDefeat Commander Stormrider 3 Times"; +$Challenge::Challenge[2, 22] = "Stormrider2"; +$Challenge::Info["Stormrider2"] = "Shootdown Master\t2\t5000\tNone\tDefeat Commander Stormrider 5 Times"; +$Challenge::Challenge[2, 23] = "Stormrider3"; +$Challenge::Info["Stormrider3"] = "Harbinger Fighter Demolisher\t2\t10000\tNone\tDefeat Commander Stormrider 10 Times"; +$Challenge::Challenge[2, 24] = "Trev1"; +$Challenge::Info["Trev1"] = "Precious Cargo\t2\t2500\tNone\tDefeat Lordranius Trevor 2 Times"; +$Challenge::Challenge[2, 25] = "Trev2"; +$Challenge::Info["Trev2"] = "Harbinger Denied\t2\t5000\tNone\tDefeat Lordranius Trevor 4 Times"; +$Challenge::Challenge[2, 26] = "Trev3"; +$Challenge::Info["Trev3"] = "Tank Halter\t2\t10000\tNone\tDefeat Lordranius Trevor 7 Times"; +$Challenge::Challenge[2, 27] = "Vard1"; +$Challenge::Info["Vard1"] = "Shining Star\t2\t3500\tNone\tDefeat Lord Vardison"; +$Challenge::Challenge[2, 28] = "Vard2"; +$Challenge::Info["Vard2"] = "Glare The Dark\t2\t7000\tNone\tDefeat Lord Vardison 3 Times"; +$Challenge::Challenge[2, 29] = "Vard3"; +$Challenge::Info["Vard3"] = "Outevil The Wicked\t2\t12500\tNone\tDefeat Lord Vardison 5 Times"; +$Challenge::Challenge[2, 30] = "VardEasy"; +$Challenge::IsNotMultiTier["VardEasy"] = true; +$Challenge::Info["VardEasy"] = "The Standard Experience\t2\t7000\tNone\tDefeat Lord Vardison on Easy Difficulty"; +$Challenge::Challenge[2, 31] = "VardNorm"; +$Challenge::IsNotMultiTier["VardNorm"] = true; +$Challenge::Info["VardNorm"] = "Demon Hunter\t2\t15000\tNone\tDefeat Lord Vardison on Medium Difficulty"; +$Challenge::Challenge[2, 32] = "VardHard"; +$Challenge::IsNotMultiTier["VardHard"] = true; +$Challenge::Info["VardHard"] = "Master Demon Slayer\t2\t25000\tNone\tDefeat Lord Vardison on Hard Difficulty"; +$Challenge::Challenge[2, 33] = "VardWtf"; +$Challenge::IsNotMultiTier["VardWtf"] = true; +$Challenge::Info["VardWtf"] = "God of the Shadow Realm\t2\t50000\tNone\tAgainst all odds, slay WTF difficulty Lord Vardison"; +$Challenge::Challenge[2, 34] = "ShadeLord1"; +$Challenge::Info["ShadeLord1"] = "Night Stalker\t2\t5000\tNone\tDefeat The Shade Lord"; +$Challenge::Challenge[2, 35] = "ShadeLord2"; +$Challenge::Info["ShadeLord2"] = "Shadow Embracer\t2\t10000\tNone\tDefeat The Shade Lord Twice"; +$Challenge::Challenge[2, 36] = "ShadeLord3"; +$Challenge::Info["ShadeLord3"] = "Dawnlight Encarnate\t2\t20000\tNone\tDefeat The Shade Lord for the Third Time"; //Wargames -$Challenge::Info["Slayer1"] = "Slayer I\t3\t1000\tNone"; -$Challenge::Info["Slayer2"] = "Slayer II\t3\t2500\tNone"; -$Challenge::Info["Slayer3"] = "Slayer III\t3\t5000\tNone"; -$Challenge::Info["Slayer4"] = "Slayer IV\t3\t7500\tNone"; -$Challenge::Info["Slayer5"] = "Slayer V\t3\t10000\tNone"; -$Challenge::Info["Defectionator1"] = "Defectionator I\t3\t2500\tNone"; -$Challenge::Info["Defectionator2"] = "Defectionator II\t3\t5000\tNone"; -$Challenge::Info["Defectionator3"] = "Defectionator III\t3\t10000\tNone"; -$Challenge::Info["Infectionator1"] = "Infectionator I\t3\t2500\tNone"; -$Challenge::Info["Infectionator2"] = "Infectionator II\t3\t5000\tNone"; -$Challenge::Info["Infectionator3"] = "Infectionator III\t3\t10000\tNone"; -$Challenge::Info["HSHoncho1"] = "Headshot Honcho I\t3\t2500\tNone"; -$Challenge::Info["HSHoncho2"] = "Headshot Honcho II\t3\t5000\tNone"; -$Challenge::Info["HSHoncho3"] = "Headshot Honcho III\t3\t10000\tNone"; -$Challenge::Info["VehMans1"] = "Vehicular Manslaughter I\t3\t2500\tNone"; -$Challenge::Info["VehMans2"] = "Vehicular Manslaughter II\t3\t5000\tNone"; -$Challenge::Info["VehMans3"] = "Vehicular Manslaughter III\t3\t10000\tNone"; -$Challenge::Info["Assassin"] = "Assassinator\t3\t5000\tNone"; -$Challenge::Info["CompletelyUnexpected"] = "That Was... Unexpected\t3\t50000\tNone"; -$Challenge::Info["Uncomprehendable"] = "Uncomprehendable\t3\t100000\tNone"; +$Challenge::Category[3] = "Wargames Challenges\tTasks for eliminating enemy players in various ways\t23"; + +$Challenge::Challenge[3, 0] = "Slayer1"; +$Challenge::Info["Slayer1"] = "Slayer I\t3\t1000\tNone\tKill 100 Enemy Players"; +$Challenge::Challenge[3, 1] = "Slayer2"; +$Challenge::Info["Slayer2"] = "Slayer II\t3\t2500\tNone\tKill 250 Enemy Players"; +$Challenge::Challenge[3, 2] = "Slayer3"; +$Challenge::Info["Slayer3"] = "Slayer III\t3\t5000\tNone\tKill 500 Enemy Players"; +$Challenge::Challenge[3, 3] = "Slayer4"; +$Challenge::Info["Slayer4"] = "Slayer IV\t3\t7500\tNone\tKill 750 Enemy Players"; +$Challenge::Challenge[3, 4] = "Slayer5"; +$Challenge::Info["Slayer5"] = "Slayer V\t3\t10000\tNone\tKill 1000 Enemy Players"; +$Challenge::Challenge[3, 5] = "Defectionator1"; +$Challenge::Info["Defectionator1"] = "Defectionator I\t3\t2500\tNone\tKill 100 \"Zombified\" Players"; +$Challenge::Challenge[3, 6] = "Defectionator2"; +$Challenge::Info["Defectionator2"] = "Defectionator II\t3\t5000\tNone\tKill 250 \"Zombified\" Players"; +$Challenge::Challenge[3, 7] = "Defectionator3"; +$Challenge::Info["Defectionator3"] = "Defectionator III\t3\t10000\tNone\tKill 500 \"Zombified\" Players"; +$Challenge::Challenge[3, 8] = "Infectionator1"; +$Challenge::Info["Infectionator1"] = "Infectionator I\t3\t2500\tNone\tConvert 50 Players to the Zombie Horde"; +$Challenge::Challenge[3, 9] = "Infectionator2"; +$Challenge::Info["Infectionator2"] = "Infectionator II\t3\t5000\tNone\tConvert 100 Players to the Zombie Horde"; +$Challenge::Challenge[3, 10] = "Infectionator3"; +$Challenge::Info["Infectionator3"] = "Infectionator III\t3\t10000\tNone\tConvert 250 Players to the Zombie Horde"; +$Challenge::Challenge[3, 11] = "HSHoncho1"; +$Challenge::Info["HSHoncho1"] = "Headshot Honcho I\t3\t2500\tNone\tEliminate 100 Enemy Players with Headshots"; +$Challenge::Challenge[3, 12] = "HSHoncho2"; +$Challenge::Info["HSHoncho2"] = "Headshot Honcho II\t3\t5000\tNone\tEliminate 200 Enemy Players with Headshots"; +$Challenge::Challenge[3, 13] = "HSHoncho3"; +$Challenge::Info["HSHoncho3"] = "Headshot Honcho III\t3\t10000\tNone\tEliminate 300 Enemy Players with Headshots"; +$Challenge::Challenge[3, 14] = "VehMans1"; +$Challenge::Info["VehMans1"] = "Vehicular Manslaughter I\t3\t2500\tNone\tEliminate 50 Enemy Players with a vehicle"; +$Challenge::Challenge[3, 15] = "VehMans2"; +$Challenge::Info["VehMans2"] = "Vehicular Manslaughter II\t3\t5000\tNone\tEliminate 100 Enemy Players with a vehicle"; +$Challenge::Challenge[3, 16] = "VehMans3"; +$Challenge::Info["VehMans3"] = "Vehicular Manslaughter III\t3\t10000\tNone\tEliminate 250 Enemy Players with a vehicle"; +$Challenge::Challenge[3, 17] = "Assassin"; +$Challenge::IsNotMultiTier["Assassin"] = true; +$Challenge::Info["Assassin"] = "Assassinator\t3\t5000\tNone\tBackstab an enemy player using the Blade of Vengeance"; +$Challenge::Challenge[3, 18] = "CompletelyUnexpected"; +$Challenge::IsNotMultiTier["CompletelyUnexpected"] = true; +$Challenge::Info["CompletelyUnexpected"] = "That Was... Unexpected\t3\t50000\tNone\tEliminate General Rog by backstabbing him with the Blade of Vengence"; +$Challenge::Challenge[3, 19] = "Uncomprehendable"; +$Challenge::IsNotMultiTier["Uncomprehendable"] = true; +$Challenge::Info["Uncomprehendable"] = "Uncomprehendable\t3\t100000\tPure shock?\tGet killed in a fighter, and have the driverless vehicle run down your killer"; //Zombie Slaying -$Challenge::Info["NormHunter1"] = "Frontline Buster I\t4\t2500\tNone"; -$Challenge::Info["NormHunter2"] = "Frontline Buster II\t4\t5000\tNone"; -$Challenge::Info["NormHunter3"] = "Frontline Buster III\t4\t10000\tNone"; -$Challenge::Info["RavHunter1"] = "Speed Kills I\t4\t2500\tNone"; -$Challenge::Info["RavHunter2"] = "Speed Kills II\t4\t5000\tNone"; -$Challenge::Info["RavHunter3"] = "Speed Kills III\t4\t10000\tNone"; -$Challenge::Info["LordHunter1"] = "The Bigger They Are I\t4\t2500\tNone"; -$Challenge::Info["LordHunter2"] = "The Bigger They Are II\t4\t5000\tNone"; -$Challenge::Info["LordHunter3"] = "The Bigger They Are III\t4\t10000\tNone"; -$Challenge::Info["DemonHunter1"] = "Fire Retardant I\t4\t2500\tNone"; -$Challenge::Info["DemonHunter2"] = "Fire Retardant II\t4\t5000\tNone"; -$Challenge::Info["DemonHunter3"] = "Fire Retardant III\t4\t10000\tNone"; -$Challenge::Info["AirRapHunter1"] = "Bat Slayer I\t4\t2500\tNone"; -$Challenge::Info["AirRapHunter2"] = "Bat Slayer II\t4\t5000\tNone"; -$Challenge::Info["AirRapHunter3"] = "Bat Slayer III\t4\t10000\tNone"; -$Challenge::Info["DLordHunter1"] = "Hellspawn Erradicator I\t4\t2500\tNone"; -$Challenge::Info["DLordHunter2"] = "Hellspawn Erradicator II\t4\t5000\tNone"; -$Challenge::Info["DLordHunter3"] = "Hellspawn Erradicator III\t4\t10000\tNone"; -$Challenge::Info["ShifterHunter1"] = "Anti-Warp I\t4\t2500\tNone"; -$Challenge::Info["ShifterHunter2"] = "Anti-Warp II\t4\t5000\tNone"; -$Challenge::Info["ShifterHunter3"] = "Anti-Warp III\t4\t10000\tNone"; -$Challenge::Info["SummonerHunter1"] = "Horde Halter I\t4\t2500\tNone"; -$Challenge::Info["SummonerHunter2"] = "Horde Halter II\t4\t5000\tNone"; -$Challenge::Info["SummonerHunter3"] = "Horde Halter III\t4\t10000\tNone"; -$Challenge::Info["SniperHunter1"] = "Scope Breaker I\t4\t2500\tNone"; -$Challenge::Info["SniperHunter2"] = "Scope Breaker II\t4\t5000\tNone"; -$Challenge::Info["SniperHunter3"] = "Scope Breaker III\t4\t10000\tNone"; -$Challenge::Info["UDemHunter1"] = "Runner Down I\t4\t2500\tNone"; -$Challenge::Info["UDemHunter2"] = "Runner Down II\t4\t5000\tNone"; -$Challenge::Info["UDemHunter3"] = "Runner Down III\t4\t10000\tNone"; -$Challenge::Info["VRavHunter1"] = "C4 Coming Through I\t4\t2500\tNone"; -$Challenge::Info["VRavHunter2"] = "C4 Coming Through II\t4\t5000\tNone"; -$Challenge::Info["VRavHunter3"] = "C4 Coming Through III\t4\t10000\tNone"; -$Challenge::Info["SSHunter1"] = "De-Flakerizer I\t4\t2500\tNone"; -$Challenge::Info["SSHunter2"] = "De-Flakerizer II\t4\t5000\tNone"; -$Challenge::Info["SSHunter3"] = "De-Flakerizer III\t4\t10000\tNone"; -$Challenge::Info["WraithHunter1"] = "Anti Spec-Ops I\t4\t2500\tNone"; -$Challenge::Info["WraithHunter2"] = "Anti Spec-Ops II\t4\t5000\tNone"; -$Challenge::Info["WraithHunter3"] = "Anti Spec-Ops III\t4\t10000\tNone"; +$Challenge::Category[4] = "Zombie Slaying Challenges\tTasks for eliminating combatants of the zombie horde\t28"; + +$Challenge::Challenge[4, 0] = "NormHunter1"; +$Challenge::Info["NormHunter1"] = "Frontline Buster I\t4\t2500\tNone\tSlay 2,500 Zombies (Normal Type)"; +$Challenge::Challenge[4, 1] = "NormHunter2"; +$Challenge::Info["NormHunter2"] = "Frontline Buster II\t4\t5000\tNone\tSlay 5,000 Zombies (Normal Type)"; +$Challenge::Challenge[4, 2] = "NormHunter3"; +$Challenge::Info["NormHunter3"] = "Frontline Buster III\t4\t10000\tNone\tSlay 10,000 Zombies (Normal Type)"; +$Challenge::Challenge[4, 3] = "RavHunter1"; +$Challenge::Info["RavHunter1"] = "Speed Kills I\t4\t2500\tNone\tSlay 1,000 Ravager Zombies"; +$Challenge::Challenge[4, 4] = "RavHunter2"; +$Challenge::Info["RavHunter2"] = "Speed Kills II\t4\t5000\tNone\tSlay 2,500 Ravager Zombies"; +$Challenge::Challenge[4, 5] = "RavHunter3"; +$Challenge::Info["RavHunter3"] = "Speed Kills III\t4\t10000\tNone\tSlay 5,000 Ravager Zombies"; +$Challenge::Challenge[4, 6] = "LordHunter1"; +$Challenge::Info["LordHunter1"] = "The Bigger They Are I\t4\t2500\tNone\tSlay 1,000 Zombie Lords"; +$Challenge::Challenge[4, 7] = "LordHunter2"; +$Challenge::Info["LordHunter2"] = "The Bigger They Are II\t4\t5000\tNone\tSlay 2,000 Zombie Lords"; +$Challenge::Challenge[4, 8] = "LordHunter3"; +$Challenge::Info["LordHunter3"] = "The Bigger They Are III\t4\t10000\tNone\tSlay 3,000 Zombie Lords"; +$Challenge::Challenge[4, 9] = "DemonHunter1"; +$Challenge::Info["DemonHunter1"] = "Fire Retardant I\t4\t2500\tNone\tSlay 1,000 Demon Zombies"; +$Challenge::Challenge[4, 10] = "DemonHunter2"; +$Challenge::Info["DemonHunter2"] = "Fire Retardant II\t4\t5000\tNone\tSlay 2,500 Demon Zombies"; +$Challenge::Challenge[4, 11] = "DemonHunter3"; +$Challenge::Info["DemonHunter3"] = "Fire Retardant III\t4\t10000\tNone\tSlay 5,000 Demon Zombies"; +$Challenge::Challenge[4, 12] = "AirRapHunter1"; +$Challenge::Info["AirRapHunter1"] = "Bat Slayer I\t4\t2500\tNone\tSlay 1,500 Air Rapier Zombies"; +$Challenge::Challenge[4, 13] = "AirRapHunter2"; +$Challenge::Info["AirRapHunter2"] = "Bat Slayer II\t4\t5000\tNone\tSlay 3,500 Air Rapier Zombies"; +$Challenge::Challenge[4, 14] = "AirRapHunter3"; +$Challenge::Info["AirRapHunter3"] = "Bat Slayer III\t4\t10000\tNone\tSlay 6,000 Air Rapier Zombies"; +$Challenge::Challenge[4, 15] = "DLordHunter1"; +$Challenge::Info["DLordHunter1"] = "Hellspawn Erradicator I\t4\t2500\tNone\tSlay 500 Demon Lord Zombies"; +$Challenge::Challenge[4, 16] = "DLordHunter2"; +$Challenge::Info["DLordHunter2"] = "Hellspawn Erradicator II\t4\t5000\tNone\tSlay 1,000 Demon Lord Zombies"; +$Challenge::Challenge[4, 17] = "DLordHunter3"; +$Challenge::Info["DLordHunter3"] = "Hellspawn Erradicator III\t4\t10000\tNone\tSlay 1,500 Demon Lord Zombies"; +$Challenge::Challenge[4, 18] = "ShifterHunter1"; +$Challenge::Info["ShifterHunter1"] = "Anti-Warp I\t4\t2500\tNone\tSlay 1,500 Shifter Zombies"; +$Challenge::Challenge[4, 19] = "ShifterHunter2"; +$Challenge::Info["ShifterHunter2"] = "Anti-Warp II\t4\t5000\tNone\tSlay 3,000 Shifter Zombies"; +$Challenge::Challenge[4, 20] = "ShifterHunter3"; +$Challenge::Info["ShifterHunter3"] = "Anti-Warp III\t4\t10000\tNone\tSlay 6,000 Shifter Zombies"; +$Challenge::Challenge[4, 21] = "SummonerHunter1"; +$Challenge::Info["SummonerHunter1"] = "Horde Halter I\t4\t2500\tNone\tSlay 1,000 Zombie Summoners"; +$Challenge::Challenge[4, 22] = "SummonerHunter2"; +$Challenge::Info["SummonerHunter2"] = "Horde Halter II\t4\t5000\tNone\tSlay 2,500 Zombie Summoners"; +$Challenge::Challenge[4, 23] = "SummonerHunter3"; +$Challenge::Info["SummonerHunter3"] = "Horde Halter III\t4\t10000\tNone\tSlay 5,000 Zombie Summoners"; +$Challenge::Challenge[4, 24] = "SniperHunter1"; +$Challenge::Info["SniperHunter1"] = "Scope Breaker I\t4\t2500\tNone\tSlay 1,000 Sniper Zombies"; +$Challenge::Challenge[4, 25] = "SniperHunter2"; +$Challenge::Info["SniperHunter2"] = "Scope Breaker II\t4\t5000\tNone\tSlay 2,500 Sniper Zombies"; +$Challenge::Challenge[4, 26] = "SniperHunter3"; +$Challenge::Info["SniperHunter3"] = "Scope Breaker III\t4\t10000\tNone\tSlay 5,000 Sniper Zombies"; +$Challenge::Challenge[4, 27] = "UDemHunter1"; +$Challenge::Info["UDemHunter1"] = "Runner Down I\t4\t2500\tNone\tSlay 1,000 Ultra Demon Zombies"; +$Challenge::Challenge[4, 28] = "UDemHunter2"; +$Challenge::Info["UDemHunter2"] = "Runner Down II\t4\t5000\tNone\tSlay 2,500 Ultra Demon Zombies"; +$Challenge::Challenge[4, 29] = "UDemHunter3"; +$Challenge::Info["UDemHunter3"] = "Runner Down III\t4\t10000\tNone\tSlay 5,000 Ultra Demon Zombies"; +$Challenge::Challenge[4, 30] = "VRavHunter1"; +$Challenge::Info["VRavHunter1"] = "C4 Coming Through I\t4\t2500\tNone\tSlay 1,000 Volatile Ravager Zombies"; +$Challenge::Challenge[4, 31] = "VRavHunter2"; +$Challenge::Info["VRavHunter2"] = "C4 Coming Through II\t4\t5000\tNone\tSlay 2,500 Volatile Ravager Zombies"; +$Challenge::Challenge[4, 32] = "VRavHunter3"; +$Challenge::Info["VRavHunter3"] = "C4 Coming Through III\t4\t10000\tNone\tSlay 5,000 Volatile Ravager Zombies"; +$Challenge::Challenge[4, 33] = "SSHunter1"; +$Challenge::Info["SSHunter1"] = "De-Flakerizer I\t4\t2500\tNone\tSlay 1,000 Slingshot Zombies"; +$Challenge::Challenge[4, 34] = "SSHunter2"; +$Challenge::Info["SSHunter2"] = "De-Flakerizer II\t4\t5000\tNone\tSlay 2,500 Slingshot Zombies"; +$Challenge::Challenge[4, 35] = "SSHunter3"; +$Challenge::Info["SSHunter3"] = "De-Flakerizer III\t4\t10000\tNone\tSlay 5,000 Slingshot Zombies"; +$Challenge::Challenge[4, 36] = "WraithHunter1"; +$Challenge::Info["WraithHunter1"] = "Anti Spec-Ops I\t4\t2500\tNone\tSlay 500 Wraith Zombies"; +$Challenge::Challenge[4, 37] = "WraithHunter2"; +$Challenge::Info["WraithHunter2"] = "Anti Spec-Ops II\t4\t5000\tNone\tSlay 750 Wraith Zombies"; +$Challenge::Challenge[4, 38] = "WraithHunter3"; +$Challenge::Info["WraithHunter3"] = "Anti Spec-Ops III\t4\t10000\tNone\tSlay 1,000 Wraith Zombies"; //Events -$Challenge::Info["NewYearsEve"] = "New Years Eve Fireworks\t5\t1500\tJavelin Hellclass"; -$Challenge::Info["NewYears"] = "New Years Fireworks\t5\t1500\tNone"; -$Challenge::Info["GunshipMall"] = "Gunship to the Mall\t5\t2500\tNone"; -$Challenge::Info["IndepRPG"] = "Independance RPG\t5\t1500\tNone"; -$Challenge::Info["SoulsticeBombard"] = "Soulstice Bombard\t5\t1500\tNone"; +$Challenge::Category[5] = "Special Event Challenges\tTasks for playing TWM2 during special events\t-1"; + +$Challenge::Challenge[5, 0] = "NewYearsEve"; +$Challenge::Info["NewYearsEve"] = "New Years Eve Fireworks\t5\t1500\tJavelin Hellclass\tGet a Javelin Kill on New Year's Eve"; +$Challenge::Challenge[5, 1] = "NewYears"; +$Challenge::Info["NewYears"] = "New Years Fireworks\t5\t1500\tNone\tCall in a Nuclear Strike on New Year's Day"; +$Challenge::Challenge[5, 2] = "GunshipMall"; +$Challenge::Info["GunshipMall"] = "Gunship to the Mall\t5\t2500\tNone\tCall in a Gunship Killstreak on Christmas Mall 2009"; +$Challenge::Challenge[5, 3] = "IndepRPG"; +$Challenge::Info["IndepRPG"] = "Independance RPG\t5\t1500\tNone\tScore an RPG Kill on the Fourth of July"; +$Challenge::Challenge[5, 4] = "SoulsticeBombard"; +$Challenge::Info["SoulsticeBombard"] = "Soulstice Bombard\t5\t1500\tNone\tCall in artillery on one of the soulstices (6/21 or 12/21)"; //Phantom Games Development //see DChalg.cs +$Challenge::Category[6] = "PGD Challenges\tDaily challenges issued by PGD\t-1"; //Sabotage -$Challenge::Info["BombDisarmed"] = "Bomb Disarmed\t7\t500\tNone"; -$Challenge::Info["BombPlanted"] = "Bomb Planted\t7\t2500\tNone"; -$Challenge::Info["BombDetonated"] = "Bomb Detonated\t7\t3000\tNone"; -$Challenge::Info["3For5Sabo"] = "Three For Five\t7\t4500\tBomb Shadower Perk"; -$Challenge::Info["BaseDestroyer"] = "Base Destroyer\t7\t5000\tNone"; +$Challenge::Category[7] = "Sabotage Challenges\tTasks related to the Sabotage game mode\t40"; + +$Challenge::Challenge[7, 0] = "BombDisarmed"; +$Challenge::IsNotMultiTier["BombDisarmed"] = true; +$Challenge::Info["BombDisarmed"] = "Bomb Disarmed\t7\t500\tNone\tDisarm an enemy bomb"; +$Challenge::Challenge[7, 1] = "BombPlanted"; +$Challenge::IsNotMultiTier["BombPlanted"] = true; +$Challenge::Info["BombPlanted"] = "Bomb Planted\t7\t2500\tNone\tArm the bomb at the objective"; +$Challenge::Challenge[7, 2] = "BombDetonated"; +$Challenge::IsNotMultiTier["BombDetonated"] = true; +$Challenge::Info["BombDetonated"] = "Bomb Detonated\t7\t3000\tNone\tWin a Round Of Sabotage"; +$Challenge::Challenge[7, 3] = "3For5Sabo"; +$Challenge::IsNotMultiTier["3For5Sabo"] = true; +$Challenge::Info["3For5Sabo"] = "Three For Five\t7\t4500\tBomb Shadower Perk\tWin 3 of the 5 rounds in a Sabotage match"; +$Challenge::Challenge[7, 4] = "BaseDestroyer"; +$Challenge::IsNotMultiTier["BaseDestroyer"] = true; +$Challenge::Info["BaseDestroyer"] = "Base Destroyer\t7\t5000\tNone\tGo Undefeated in a full game of Sabotage"; //Domination -$Challenge::Info["ZoneCapture"] = "Zone Conquerer\t8\t500\tNone"; -$Challenge::Info["ABC"] = "Alpha Bravo Charlie\t8\t2500\tNone"; -$Challenge::Info["MatchSet"] = "Match Set\t8\t3000\tNone"; -$Challenge::Info["3For5"] = "Three For Five\t8\t4500\tNone"; -$Challenge::Info["Undefeatable"] = "Undefeatable\t8\t5000\tNone"; +$Challenge::Category[8] = "Domination Challenges\tTasks related to the Domination game mode\t40"; + +$Challenge::Challenge[8, 0] = "ZoneCapture"; +$Challenge::IsNotMultiTier["ZoneCapture"] = true; +$Challenge::Info["ZoneCapture"] = "Zone Conquerer\t8\t500\tNone\tCapture a domination point"; +$Challenge::Challenge[8, 1] = "ABC"; +$Challenge::IsNotMultiTier["ABC"] = true; +$Challenge::Info["ABC"] = "Alpha Bravo Charlie\t8\t2500\tNone\tAt any point in the game, hold all three points"; +$Challenge::Challenge[8, 2] = "MatchSet"; +$Challenge::IsNotMultiTier["MatchSet"] = true; +$Challenge::Info["MatchSet"] = "Match Set\t8\t3000\tNone\tWin a Round Of Domination"; +$Challenge::Challenge[8, 3] = "3For5"; +$Challenge::IsNotMultiTier["3For5"] = true; +$Challenge::Info["3For5"] = "Three For Five\t8\t4500\tNone\tWin 3 of the 5 rounds in a Domination match"; +$Challenge::Challenge[8, 4] = "Undefeatable"; +$Challenge::IsNotMultiTier["Undefeatable"] = true; +$Challenge::Info["Undefeatable"] = "Undefeatable\t8\t5000\tNone\tGo Undefeated in a full game of Domination"; //Horde 3 -$Challenge::Info["15For15"] = "15 For 15\t9\t15000\tNone"; -$Challenge::Info["Milestone25"] = "Milestone 25\t9\t25000\tNone"; -$Challenge::Info["ArmyOf50Stopped"] = "Army Of 50 Stopped\t9\t50000\tSecond Chance Perk"; -$Challenge::Info["Angel"] = "Angel\t9\t500\tNone"; -$Challenge::Info["ZBomber"] = "Z-Bomber\t9\t2000\tNone"; -$Challenge::Info["FirstBlood"] = "First Blood\t9\t10000\tNone"; -$Challenge::Info["SpeedSlayer"] = "Speed Slayer\t9\t20000\tNone"; -$Challenge::Info["HighScorer"] = "High Scorer\t9\t25000\tNone"; +$Challenge::Category[9] = "Horde 3 Challenges\tTasks related to surviving the waves of the zombie horde\t40"; + +$Challenge::Challenge[9, 0] = "15For15"; +$Challenge::IsNotMultiTier["15For15"] = true; +$Challenge::Info["15For15"] = "15 For 15\t9\t15000\tNone\tComplete Wave 15"; +$Challenge::Challenge[9, 1] = "Milestone25"; +$Challenge::IsNotMultiTier["Milestone25"] = true; +$Challenge::Info["Milestone25"] = "Milestone 25\t9\t25000\tNone\tComplete Wave 25"; +$Challenge::Challenge[9, 2] = "ArmyOf50Stopped"; +$Challenge::IsNotMultiTier["ArmyOf50Stopped"] = true; +$Challenge::Info["ArmyOf50Stopped"] = "Army Of 50 Stopped\t9\t50000\tSecond Chance Perk\tComplete Horde 3 (All 50 Waves)"; +$Challenge::Challenge[9, 3] = "Angel"; +$Challenge::IsNotMultiTier["Angel"] = true; +$Challenge::Info["Angel"] = "Angel\t9\t500\tNone\tRevive a fallen teammate in Horde"; +$Challenge::Challenge[9, 4] = "ZBomber"; +$Challenge::IsNotMultiTier["ZBomber"] = true; +$Challenge::Info["ZBomber"] = "Z-Bomber\t9\t2000\tNone\tCall in a Z-Bomb While Playing Horde"; +$Challenge::Challenge[9, 5] = "FirstBlood"; +$Challenge::IsNotMultiTier["FirstBlood"] = true; +$Challenge::Info["FirstBlood"] = "First Blood\t9\t10000\tNone\tKill the first zombie that spawns in a Horde 3 game"; +$Challenge::Challenge[9, 6] = "SpeedSlayer"; +$Challenge::IsNotMultiTier["SpeedSlayer"] = true; +$Challenge::Info["SpeedSlayer"] = "Speed Slayer\t9\t20000\tNone\tBe the featured first killer 10 times in a single game"; +$Challenge::Challenge[9, 7] = "HighScorer"; +$Challenge::IsNotMultiTier["HighScorer"] = true; +$Challenge::Info["HighScorer"] = "High Scorer\t9\t25000\tNone\tBe the featured high scorer 10 times in a single game"; //Helljump -$Challenge::Info["GroupBuster"] = "Group Buster\t10\t5000\tNone"; -$Challenge::Info["WaveDefeater"] = "Wave Defeater\t10\t50000\tNone"; -$Challenge::Info["OneK"] = "1K Soldier\t10\t10000\tNone"; -$Challenge::Info["FiveK"] = "5K Soldier\t10\t25000\tNone"; -$Challenge::Info["TenK"] = "10K Soldier\t10\t50000\tNone"; -$Challenge::Info["PointsSurge"] = "Points Surge\t10\t25000\tNone"; -$Challenge::Info["PointsJackpot"] = "Points Jackpot\t10\t50000\tNone"; -$Challenge::Info["ThatsAHind"] = "That's a Hind\t10\t5000\tNone"; -$Challenge::Info["DownBoy"] = "Down Boy... Down\t10\t5000\tNone"; -$Challenge::Info["ClassExtravaganza"] = "Class Extravaganza\t10\t100\tNone"; -$Challenge::Info["LifeGiver"] = "Giver of Life\t10\t7500\tNone"; +$Challenge::Category[10] = "Helljump Challenges\tTasks related to performing spec-ops Helljump operations\t40"; + +$Challenge::Challenge[10, 0] = "GroupBuster"; +$Challenge::IsNotMultiTier["GroupBuster"] = true; +$Challenge::Info["GroupBuster"] = "Group Buster\t10\t5000\tNone\tComplete A Group"; +$Challenge::Challenge[10, 1] = "WaveDefeater"; +$Challenge::IsNotMultiTier["WaveDefeater"] = true; +$Challenge::Info["WaveDefeater"] = "Wave Defeater\t10\t50000\tNone\tComplete A Wave"; +$Challenge::Challenge[10, 2] = "OneK"; +$Challenge::IsNotMultiTier["OneK"] = true; +$Challenge::Info["OneK"] = "1K Soldier\t10\t10000\tNone\tEarn 1,000 Points (Solo Score)"; +$Challenge::Challenge[10, 3] = "FiveK"; +$Challenge::IsNotMultiTier["FiveK"] = true; +$Challenge::Info["FiveK"] = "5K Soldier\t10\t25000\tNone\tEarn 5,000 Points (Solo Score)"; +$Challenge::Challenge[10, 4] = "TenK"; +$Challenge::IsNotMultiTier["TenK"] = true; +$Challenge::Info["TenK"] = "10K Soldier\t10\t50000\tNone\tEarn 10,000 Points (Solo Score)"; +$Challenge::Challenge[10, 5] = "PointsSurge"; +$Challenge::IsNotMultiTier["PointsSurge"] = true; +$Challenge::Info["PointsSurge"] = "Points Surge\t10\t25000\tNone\tEarn 7,500 Points (Team Score)"; +$Challenge::Challenge[10, 6] = "PointsJackpot"; +$Challenge::IsNotMultiTier["PointsJackpot"] = true; +$Challenge::Info["PointsJackpot"] = "Points Jackpot\t10\t50000\tNone\tEarn 25,000 Points (Team Score)"; +$Challenge::Challenge[10, 7] = "DownBoy"; +$Challenge::IsNotMultiTier["DownBoy"] = true; +$Challenge::Info["DownBoy"] = "Down Boy... Down\t10\t5000\tNone\tKill the wraith zombie on Strike 5"; +$Challenge::Challenge[10, 8] = "ClassExtravaganza"; +$Challenge::IsNotMultiTier["ClassExtravaganza"] = true; +$Challenge::Info["ClassExtravaganza"] = "Class Extravaganza\t10\t100\tNone\tUse a hellclass"; +$Challenge::Challenge[10, 9] = "LifeGiver"; +$Challenge::IsNotMultiTier["LifeGiver"] = true; +$Challenge::Info["LifeGiver"] = "Giver of Life\t10\t7500\tNone\tUse a Full Team Respawn beacon"; //From The Top -$Challenge::Info["SimonSays"] = "Simon Says\t11\t1000\tNone"; -$Challenge::Info["FromTheTop"] = "From The Top\t11\t1000\tNone"; -$Challenge::Info["NaturalLeader"] = "Natural Leader\t11\t2500\tNone"; -$Challenge::Info["GoldStar"] = "Gold Star\t11\t1000\tNone"; -$Challenge::Info["Faster"] = "Faster!\t11\t250\tNone"; -$Challenge::Info["EpicFailure"] = "Epic Failure\t11\t5\tNone"; -$Challenge::Info["ExpertGunner"] = "Expert AC-130 Gunner\t11\t25000\tNone"; -$Challenge::Info["Survivalist"] = "Survivalist\t11\t25000\tNone"; -$Challenge::Info["Invisibreh"] = "Shhh.. I'm Invisibreh\t11\t25000\tNone"; -$Challenge::Info["WeakGunship"] = "I have you now!\t11\t25000\tNone"; -$Challenge::Info["InvasionBuster"] = "Invade THIS!\t11\t25000\tNone"; -$Challenge::Info["SurvivalistExtreme"] = "Extreme Survivalist\t11\t50000\tNone"; +$Challenge::Category[11] = "Operation Challenges\tTasks related to performing group operations\t49"; + +$Challenge::Challenge[11, 0] = "SimonSays"; +$Challenge::IsNotMultiTier["SimonSays"] = true; +$Challenge::Info["SimonSays"] = "Simon Says\t11\t1000\tNone\tOrder an operation"; +$Challenge::Challenge[11, 1] = "FromTheTop"; +$Challenge::IsNotMultiTier["FromTheTop"] = true; +$Challenge::Info["FromTheTop"] = "From The Top\t11\t1000\tNone\tJoin an operation fireteam"; +$Challenge::Challenge[11, 2] = "NaturalLeader"; +$Challenge::IsNotMultiTier["NaturalLeader"] = true; +$Challenge::Info["NaturalLeader"] = "Natural Leader\t11\t2500\tNone\tOrder an operation, and have another player join the fireteam"; +$Challenge::Challenge[11, 3] = "GoldStar"; +$Challenge::IsNotMultiTier["GoldStar"] = true; +$Challenge::Info["GoldStar"] = "Gold Star\t11\t1000\tNone\tComplete an operation inside the time window"; +$Challenge::Challenge[11, 4] = "Faster"; +$Challenge::IsNotMultiTier["Faster"] = true; +$Challenge::Info["Faster"] = "Faster!\t11\t250\tNone\tComplete an operation, but miss the time window"; +$Challenge::Challenge[11, 5] = "EpicFailure"; +$Challenge::IsNotMultiTier["EpicFailure"] = true; +$Challenge::Info["EpicFailure"] = "Epic Failure\t11\t5\tNone\tYou failed.... :)"; +$Challenge::Challenge[11, 6] = "ExpertGunner"; +$Challenge::IsNotMultiTier["ExpertGunner"] = true; +$Challenge::Info["ExpertGunner"] = "Expert AC-130 Gunner\t11\t25000\tNone\tComplete Operation 'Rain Down'"; +$Challenge::Challenge[11, 7] = "Survivalist"; +$Challenge::IsNotMultiTier["Survivalist"] = true; +$Challenge::Info["Survivalist"] = "Survivalist\t11\t25000\tNone\tComplete Operation 'Surrounded'"; +$Challenge::Challenge[11, 8] = "Invisibreh"; +$Challenge::IsNotMultiTier["Invisibreh"] = true; +$Challenge::Info["Invisibreh"] = "Shhh.. I'm Invisibreh\t11\t25000\tNone\tComplete 'Enemy AC-130 Above' by hiding"; +$Challenge::Challenge[11, 9] = "WeakGunship"; +$Challenge::IsNotMultiTier["WeakGunship"] = true; +$Challenge::Info["WeakGunship"] = "I have you now!\t11\t25000\tNone\tComplete 'Enemy AC-130 Above' by explosive force"; +$Challenge::Challenge[11, 10] = "InvasionBuster"; +$Challenge::IsNotMultiTier["InvasionBuster"] = true; +$Challenge::Info["InvasionBuster"] = "Invade THIS!\t11\t25000\tNone\tComplete Operation 'Invasion'"; +$Challenge::Challenge[11, 11] = "SurvivalistExtreme"; +$Challenge::IsNotMultiTier["SurvivalistExtreme"] = true; +$Challenge::Info["SurvivalistExtreme"] = "Extreme Survivalist\t11\t50000\tNone\tComplete Operation 'Surrounded 2.0'"; //Prestige -$Challenge::Info["Prestige1"] = "Instructive Officer\t12\t100\tNone"; -$Challenge::Info["Prestige2"] = "Excelling Officer\t12\t250\tNone"; -$Challenge::Info["Prestige3"] = "Champion Officer\t12\t350\tNone"; -$Challenge::Info["Prestige4"] = "Prestigious Officer\t12\t500\tNone"; -$Challenge::Info["Prestige5"] = "Supreme Officer\t12\t1000\tNone"; -$Challenge::Info["Prestige6"] = "Glorious Officer\t12\t2500\tNone"; -$Challenge::Info["Prestige7"] = "Ultimate Officer\t12\t5000\tNone"; -$Challenge::Info["Prestige8"] = "Shadowing Officer\t12\t7500\tNone"; -$Challenge::Info["Prestige9"] = "Phantom Officer\t12\t10000\tNone"; -$Challenge::Info["Prestige10"] = "Brutal Officer\t12\t10000\tNone"; -$Challenge::Info["Prestige11"] = "Vengeful Officer\t12\t10000\tNone"; -$Challenge::Info["Prestige12"] = "Spectral Officer\t12\t10000\tNone"; -$Challenge::Info["Prestige13"] = "Noble Officer\t12\t10000\tNone"; -$Challenge::Info["Prestige14"] = "Masterful Officer\t12\t10000\tNone"; -$Challenge::Info["Prestige15"] = "Rising Harbinger\t12\t10000\tNone"; -$Challenge::Info["GameEnder"] = "Game Ender\t12\t5000\tNone"; +$Challenge::Category[12] = "Officer Challenges\tTasks related to officer ranks and advanced progression\tOfficer 1"; + +$Challenge::Challenge[12, 0] = "Prestige1"; +$Challenge::SetHidden[12, 0] = true; +$Challenge::HiddenMessage[12, 0] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige1"] = true; +$Challenge::Info["Prestige1"] = "Instructive Officer\t12\t100\tNone\tReach Officer Level 1"; + +$Challenge::Challenge[12, 1] = "Prestige2"; +$Challenge::SetHidden[12, 1] = true; +$Challenge::HiddenMessage[12, 1] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige2"] = true; +$Challenge::Info["Prestige2"] = "Excelling Officer\t12\t250\tNone\tReach Officer Level 2"; + +$Challenge::Challenge[12, 2] = "Prestige3"; +$Challenge::SetHidden[12, 2] = true; +$Challenge::HiddenMessage[12, 2] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige3"] = true; +$Challenge::Info["Prestige3"] = "Champion Officer\t12\t350\tNone\tReach Officer Level 3"; + +$Challenge::Challenge[12, 3] = "Prestige4"; +$Challenge::SetHidden[12, 3] = true; +$Challenge::HiddenMessage[12, 3] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige4"] = true; +$Challenge::Info["Prestige4"] = "Prestigious Officer\t12\t500\tNone\tReach Officer Level 4"; + +$Challenge::Challenge[12, 4] = "Prestige5"; +$Challenge::SetHidden[12, 4] = true; +$Challenge::HiddenMessage[12, 4] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige5"] = true; +$Challenge::Info["Prestige5"] = "Supreme Officer\t12\t1000\tNone\tReach Officer Level 5"; + +$Challenge::Challenge[12, 5] = "Prestige6"; +$Challenge::SetHidden[12, 5] = true; +$Challenge::HiddenMessage[12, 5] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige6"] = true; +$Challenge::Info["Prestige6"] = "Glorious Officer\t12\t2500\tNone\tReach Officer Level 6"; + +$Challenge::Challenge[12, 6] = "Prestige7"; +$Challenge::SetHidden[12, 6] = true; +$Challenge::HiddenMessage[12, 6] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige7"] = true; +$Challenge::Info["Prestige7"] = "Ultimate Officer\t12\t5000\tNone\tReach Officer Level 7"; + +$Challenge::Challenge[12, 7] = "Prestige8"; +$Challenge::SetHidden[12, 7] = true; +$Challenge::HiddenMessage[12, 7] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige8"] = true; +$Challenge::Info["Prestige8"] = "Shadowing Officer\t12\t7500\tNone\tReach Officer Level 8"; + +$Challenge::Challenge[12, 8] = "Prestige9"; +$Challenge::SetHidden[12, 8] = true; +$Challenge::HiddenMessage[12, 8] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige9"] = true; +$Challenge::Info["Prestige9"] = "Phantom Officer\t12\t10000\tNone\tReach Officer Level 9"; + +$Challenge::Challenge[12, 9] = "Prestige10"; +$Challenge::SetHidden[12, 9] = true; +$Challenge::HiddenMessage[12, 9] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige10"] = true; +$Challenge::Info["Prestige10"] = "Brutal Officer\t12\t10000\tNone\tReach Officer Level 10"; + +$Challenge::Challenge[12, 10] = "Prestige11"; +$Challenge::SetHidden[12, 10] = true; +$Challenge::HiddenMessage[12, 10] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige11"] = true; +$Challenge::Info["Prestige11"] = "Vengeful Officer\t12\t10000\tNone\tReach Officer Level 11"; + +$Challenge::Challenge[12, 11] = "Prestige12"; +$Challenge::SetHidden[12, 11] = true; +$Challenge::HiddenMessage[12, 11] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige12"] = true; +$Challenge::Info["Prestige12"] = "Spectral Officer\t12\t10000\tNone\tReach Officer Level 12"; + +$Challenge::Challenge[12, 12] = "Prestige13"; +$Challenge::SetHidden[12, 12] = true; +$Challenge::HiddenMessage[12, 12] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige13"] = true; +$Challenge::Info["Prestige13"] = "Noble Officer\t12\t10000\tNone\tReach Officer Level 13"; + +$Challenge::Challenge[12, 13] = "Prestige14"; +$Challenge::SetHidden[12, 13] = true; +$Challenge::HiddenMessage[12, 13] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige14"] = true; +$Challenge::Info["Prestige14"] = "Masterful Officer\t12\t10000\tNone\tReach Officer Level 14"; + +$Challenge::Challenge[12, 14] = "Prestige15"; +$Challenge::SetHidden[12, 14] = true; +$Challenge::HiddenMessage[12, 14] = "=== CLASSIFIED: REQUIRES CLEARANCE ==="; +$Challenge::IsNotMultiTier["Prestige15"] = true; +$Challenge::Info["Prestige15"] = "Rising Harbinger\t12\t10000\tNone\tReach The Highest Officer Level (15)"; + +$Challenge::Challenge[12, 15] = "GameEnder"; +$Challenge::IsNotMultiTier["GameEnder"] = true; +$Challenge::Info["GameEnder"] = "Game Ender\t12\t5000\tNone\tUse a Fission Bomb to end a game"; //CORE @@ -256,184 +620,86 @@ $Challenge::Info["GameEnder"] = "Game Ender\t12\t5000\tNone"; //Core Functions function GameConnection::AllowedToDoNW(%client, %name) { + if($Challenge::FlagDisabled[%name]) { + return 0; + } %scriptController = %client.TWM2Core; %xp = getCurrentEXP(%client); %taskCate = getField($Challenge::Info[%name], 1); - - if(%taskCate == 5 || %taskCate == 6) { - //Special categories available for all players - return 1; + if(%taskCate $= "") { + error("AllowedToDoNW: Invalid challenge category for "@%name@", system shows: "@%taskCate@" ("@%Challenge::Info[%name]@")"); + return 0; } - - if(%taskCate == 1) { - return %xp >= $Ranks::MinPoints[13]; - } - else if(%taskCate == 2) { - return %xp >= $Ranks::MinPoints[18]; - } - else if(%taskCate == 3) { - return %xp >= $Ranks::MinPoints[23]; - } - else if(%taskCate == 4) { - return %xp >= $Ranks::MinPoints[28]; - } - else if(%taskCate == 7 || %taskCate == 8 || %taskCate == 9 || %taskCate == 10) { - return %xp >= $Ranks::MinPoints[40]; - } - else if(%taskCate == 11) { - return %xp >= $Ranks::MinPoints[59]; - } - else if(%taskCate == 12) { - return %scriptController.officer >= 1; + %categoryReq = getField($Challenge::Category[%taskCate], 2); + if(getWord(%categoryReq, 0) $= "Officer") { + return %scriptController.officer >= getWord(%categoryReq, 1); } else { - error("AllowedToDoNW: Invalid challenge category for "@%name@", system shows: "@%taskCate@" ("@%Challenge::Info[%name]@")"); + if(%categoryReq == -1) { + return 1; + } + else { + return %xp >= $Rank::MinPoints[%categoryReq]; + } } } function GameConnection::CheckNWChallengeCompletion(%client, %name) { - %scriptController = %client.TWM2Core; - if(%scriptController.challengeComplete[%name] == 1) { - return true; - } - else { - return false; - } + %scriptController = %client.TWM2Core; + if(%scriptController.challengeComplete[%name] == 1) { + return true; + } + else { + return false; + } } function CompleteNW_allPlayers(%name) { - for(%i = 0; %i < ClientGroup.getCount(); %i++) { - %client = ClientGroup.getObject(%i); - CompleteNWChallenge(%client, %name); - } + for(%i = 0; %i < ClientGroup.getCount(); %i++) { + %client = ClientGroup.getObject(%i); + CompleteNWChallenge(%client, %name); + } } function CompleteNWChallenge(%client, %name) { - if(%client $= "" || !%client) { - return; - } - if(%client.CheckNWChallengeCompletion(%name)) { - return; - } - if(!%client.AllowedToDoNW(%name)) { - return; - } - // - %scriptController = %client.TWM2Core; - %taskName = getField($Challenge::Info[%name], 0); - %taskXPGive = getField($Challenge::Info[%name], 2); - %taskReward = getField($Challenge::Info[%name], 3); - // - GainExperience(%client, %taskXPGive, "Challenge "@%taskName@" Completed "); - BottomPrint(%client, "CHALLENGE COMPLETE: "@%taskName@" \n +"@%taskXPGive@"XP, Reward: "@%taskReward@"", 2, 3); - MessageClient(%client, 'MsgSound', "~wfx/Bonuses/Nouns/General.wav"); - MessageAll('msgComplete', "\c5"@%client.namebase@" completed challenge "@%taskName@""); - // - %scriptController.challengeComplete[%name] = 1; - %file = ""@$TWM::RanksDirectory@"/"@%client.guid@"/Saved.TWMSave"; - SaveClientFile(%client); - echo("TWM2: Client "@%client@", "@%client.nambase@", Completed Challenge "@%taskname@", File Updated."); + if(%client $= "" || !%client) { + return; + } + if(%client.CheckNWChallengeCompletion(%name)) { + return; + } + if(!%client.AllowedToDoNW(%name)) { + return; + } + // + %scriptController = %client.TWM2Core; + %taskName = getField($Challenge::Info[%name], 0); + %taskXPGive = getField($Challenge::Info[%name], 2); + %taskReward = getField($Challenge::Info[%name], 3); + // + GainExperience(%client, %taskXPGive, "Challenge "@%taskName@" Completed "); + BottomPrint(%client, "CHALLENGE COMPLETE: "@%taskName@" \n +"@%taskXPGive@"XP, Reward: "@%taskReward@"", 2, 3); + MessageClient(%client, 'MsgSound', "~wfx/Bonuses/Nouns/General.wav"); + MessageAll('msgComplete', "\c5"@%client.namebase@" completed challenge "@%taskName@""); + // + %scriptController.challengeComplete[%name] = 1; + %file = ""@$TWM::RanksDirectory@"/"@%client.guid@"/Saved.TWMSave\t"; + SaveClientFile(%client); + echo("TWM2: Client "@%client@", "@%client.nambase@", Completed Challenge "@%taskname@", File Updated."); } -//Menus -function GenerateChallengesMenu(%client, %tag, %index) { - %scriptController = %client.TWM2Core; - %xp = getCurrentEXP(%client); - messageClient( %client, 'SetLineHud', "", %tag, %index, "Select a category to view challenges:"); - %index++; - // - messageClient( %client, 'SetLineHud', "", %tag, %index, "PGD Challenges (Daily/Weekly/Monthly)"); - %index++; - if(%xp >= $Ranks::MinPoints[13]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Killstreak Challenges: Tasks for calling in advanced support"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Killstreak Challenges - Reach Sergeant To Unlock"); - %index++; - } - // - if(%xp >= $Ranks::MinPoints[18]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Boss Challenges: Tasks for eliminating the toughest enemies in TWM2"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Boss Challenges - Reach Gunnary Sergeant To Unlock"); - %index++; - } - if(%xp >= $Ranks::MinPoints[23]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Wargames Challenges: Tasks for eliminating enemy players in various ways"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Wargames Challenges - Reach Lieutenant To Unlock"); - %index++; - } - // - if(%xp >= $Ranks::MinPoints[28]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Zombie Slaying Challenges: Tasks for eliminating combatants of the zombie horde"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Zombie Slaying Challenges - Reach Captain To Unlock"); - %index++; - } - // - messageClient( %client, 'SetLineHud', "", %tag, %index, "Special Event Challenges: Tasks for playing TWM2 during special events"); - %index++; - // - if(%xp >= $Ranks::MinPoints[40]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Sabotage Challenges: Tasks related to the Sabotage game mode"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Sabotage Challenges - Reach Colonel To Unlock"); - %index++; - } - // - if(%xp >= $Ranks::MinPoints[40]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Domination Challenges: Tasks related to the Domination game mode"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Domination Challenges - Reach Colonel To Unlock"); - %index++; - } - // - if(%xp >= $Ranks::MinPoints[40]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde 3 Challenges: Tasks related to surviving the waves of the zombie horde"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Horde 3 Challenges - Reach Colonel To Unlock"); - %index++; - } - // - if(%xp >= $Ranks::MinPoints[40]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helljump Challenges: Tasks related to performing spec-ops Helljump operations"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Helljump Challenges - Reach Colonel To Unlock"); - %index++; - } - // - if(%xp >= $Ranks::MinPoints[40]) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "From the top: Tasks related to ordering and completing missions"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "From the top - Reach Commading Officer To Unlock"); - %index++; - } - // - if(%scriptController.officer >= 1) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Officer Challenges: Tasks related to officer ranks and advanced progression"); - %index++; - } - else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Officer Challenges - Reach Instructive Private To Unlock"); - %index++; - } - return %index; +function fetchChallengeSubID(%name) { + %challenge = $Challenge::Info[%name]; + if(%challenge $= "") { + error("fetchChallengeSubID(): Cannot find challenge "@%name); + return -1; + } + %primaryID = getField(%challenge, 1); + for(%i = 0; $Challenge::Challenge[%primaryID, %i] !$= ""; %i++) { + if($Challenge::Challenge[%primaryID, %i] $= %name) { + return %i; + } + } + warn("fetchChallengeSubID(): There is an invalid field in the NWChallengeIndex, cannot find "@%name@" under "@%primaryID); + return -1; } \ No newline at end of file diff --git a/scripts/TWM2/Systems/scoremenucmds.cs b/scripts/TWM2/Systems/scoremenucmds.cs index fa6592f..04fbefa 100644 --- a/scripts/TWM2/Systems/scoremenucmds.cs +++ b/scripts/TWM2/Systems/scoremenucmds.cs @@ -46,13 +46,13 @@ function ConstructionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, case "OrderMisSub": %client.SCMPage = "SM"; - messageClient( %client, 'SetScoreHudSubheader', "", "Missions" ); - if(getCurrentEXP(%client) < $Ranks::MinPoints[59] && %scriptController.officer < 1) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "You must have the 'Commanding Officer' Rank To Order Missions."); + messageClient( %client, 'SetScoreHudSubheader', "", "Operations" ); + if(getCurrentEXP(%client) < $Ranks::MinPoints[49] && %scriptController.officer < 1) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "You must have the 'General' Rank To Order Operations."); %index++; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, "Order A Mission, Select a Mission"); + messageClient( %client, 'SetLineHud', "", %tag, %index, "Select an Operation"); %index++; %xI = 0; while(isSet($Mission::TWM2Mision[%xI])) { @@ -77,13 +77,13 @@ function ConstructionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %task = %arg3; switch(%task) { case 1: - messageClient( %client, 'SetLineHud', "", %tag, %index, "Mission: "@getField($Mission::VarSet[""@%mission@"", "TaskDetails"], 0)@""); + messageClient( %client, 'SetLineHud', "", %tag, %index, "Operation: "@getField($Mission::VarSet[""@%mission@"", "TaskDetails"], 0)@""); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "Details: "@getField($Mission::VarSet[""@%mission@"", "TaskDetails"], 1)@""); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "Difficulty: "@$Mission::VarSet[""@%mission@"", "Difficulty"]@""); %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, "Mission Time Window: "@$Mission::VarSet[""@%mission@"", "TimeLimit"] / 60@" Minutes"); + messageClient( %client, 'SetLineHud', "", %tag, %index, "Operation Time Window: "@$Mission::VarSet[""@%mission@"", "TimeLimit"] / 60@" Minutes"); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, "Required Players: "@$Mission::VarSet[""@%mission@"", "PlayerReq"]@""); %index++; @@ -91,9 +91,9 @@ function ConstructionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, ""); %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, "Order Mission"); + messageClient( %client, 'SetLineHud', "", %tag, %index, "Order This Operation"); %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, 'Select A Different Mission'); + messageClient( %client, 'SetLineHud', "", %tag, %index, 'Select A Different Operation'); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, 'Return To Main Menu'); %index++; @@ -110,18 +110,18 @@ function ConstructionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, case "Missions": %client.SCMPage = "SM"; - messageClient( %client, 'SetScoreHudSubheader', "", "Missions" ); - if(getCurrentEXP(%client) < $Ranks::MinPoints[59] && %scriptController.officer < 1) { - messageClient( %client, 'SetLineHud', "", %tag, %index, "You must have the 'Commanding Officer' Rank To Order Missions."); + messageClient( %client, 'SetScoreHudSubheader', "", "Operations" ); + if(getCurrentEXP(%client) < $Ranks::MinPoints[49] && %scriptController.officer < 1) { + messageClient( %client, 'SetLineHud', "", %tag, %index, "Order Operation: LOCKED, Requires 'General' Rank."); %index++; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, 'Order A Mission'); + messageClient( %client, 'SetLineHud', "", %tag, %index, 'Order An Operation'); %index++; } messageClient( %client, 'SetLineHud', "", %tag, %index, ''); %index++; - messageClient( %client, 'SetLineHud', "", %tag, %index, 'Join The Mission About To Begin'); + messageClient( %client, 'SetLineHud', "", %tag, %index, 'Join The Operation About To Begin'); %index++; messageClient( %client, 'SetLineHud', "", %tag, %index, 'Return To Main Menu'); %index++; @@ -640,7 +640,7 @@ function ConstructionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %index++; } else { - messageClient( %client, 'SetLineHud', "", %tag, %index, 'PGD Connect Status: Connected'); + messageClient( %client, 'SetLineHud', "", %tag, %index, 'PGD Connect Status: Connected'); %index++; } messageClient( %client, 'SetLineHud', "", %tag, %index, ""); diff --git a/scripts/TWM2/cmddisplaylist.txt b/scripts/TWM2/cmddisplaylist.txt index e3bfa24..68a98f1 100644 --- a/scripts/TWM2/cmddisplaylist.txt +++ b/scripts/TWM2/cmddisplaylist.txt @@ -1,7 +1,7 @@ CMD TSSF TWM 2, The Story Continues CMD MAINPAGE TWM 2 News CMD PersControl Settings -CMD Missions Missions +CMD Missions Operations CMD PC Piece Count CMD ContSave Content Saving System CMD BL15 Blacklist 15 diff --git a/scripts/chatCommands.cs b/scripts/chatCommands.cs index 2a30a72..9df59b0 100644 --- a/scripts/chatCommands.cs +++ b/scripts/chatCommands.cs @@ -247,9 +247,9 @@ function VoteBoss_StartBoss(%BossAbbr) SpawnLordRog(%pos); case "Insignia": SpawnInsignia(%pos); - case "Trebor": - %pos = VectorAdd(%pos, "0 20 0"); // so trebor doesn't land right on top of them.. - StartTrebor(%pos); // its lots of lulz though! + case "Trevor": + %pos = VectorAdd(%pos, "0 20 0"); // so trevor doesn't land right on top of them.. + StartTrevor(%pos); // its lots of lulz though! case "Vardison": StartVardison1(%pos); case "DAVardison": @@ -278,8 +278,8 @@ function BossFullname(%BossAbbr) return "Lord Rog"; case "insignia": return "Major Insignia"; - case "trebor": - return "Lordranius Trebor"; + case "trevor": + return "Lordranius Trevor"; case "stormrider": return "Commander Stormrider"; case "gof": @@ -311,7 +311,7 @@ function isBoss(%Boss) return 1; case "insignia": return 1; - case "trebor": + case "trevor": return 1; case "vardison": return 1; diff --git a/scripts/serverCommanderMap.cs b/scripts/serverCommanderMap.cs index 8430d10..d5b8098 100644 --- a/scripts/serverCommanderMap.cs +++ b/scripts/serverCommanderMap.cs @@ -370,75 +370,4 @@ function serverCmdScopeCommanderMap(%client, %scope) %client.scopeCommanderMap(%scope); commandToClient(%client, 'ScopeCommanderMap', %scope); -} - -//From Battlelord: -function GetHigherNumber(%num1, %num2) { - //Are they equal? - if(%num1 == %num2) { - return %num1; - } - else if(%num1 > %num2) { - return %num1; - } - else { - return %num2; - } -} - -//EXP -function getMaxGainedEXP(%client) { - if($MaxGainable $= "") { - %num1 = $TWM2::BossXPAward["Yvex"]; - %num2 = $TWM2::BossXPAward["CnlWindshear"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["GhostOfLightning"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Vengenor"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["LordRog"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Insignia"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Stormrider"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Trebor"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["GhostOfFire"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Vardison3"]; - %num1 = GetHigherNumber(%num1, %num2); - $MaxGainable = %num1; - } - else { - %num1 = $TWM2::BossXPAward["Yvex"]; - %num2 = $TWM2::BossXPAward["CnlWindshear"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["GhostOfLightning"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Vengenor"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["LordRog"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Insignia"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Stormrider"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Trebor"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["GhostOfFire"]; - %num1 = GetHigherNumber(%num1, %num2); - %num2 = $TWM2::BossXPAward["Vardison3"]; - %num1 = GetHigherNumber(%num1, %num2); - //Sirens!!! We have a hack in! - //Close the server and inform Phantom139 - if($MaxGainable != %num1) { - MessageAll('MsgAlert', "\c5TWM2: Server Hack-In Detected, Max EXP Has been Tampered. ~wfx/misc/red_alert.wav"); - MessageAll('MsgAlert', "\c5TWM2: This server is forced to Satellite Mode, all EXP Gain has been canceled."); - MessageAll('MsgAlert', "\c5TWM2: An E-Mail has been dispatched to \c3Phantom139\c5 Server Shutdown in 5 Seconds."); - schedule(5000, 0, "DestroyServer"); - schedule(8000, 0, "Quit"); - } - } - return %num1; -} +} \ No newline at end of file diff --git a/scripts/weapons/Pistols/GrappleHook.cs b/scripts/weapons/Pistols/GrappleHook.cs index 8337e22..32970af 100644 --- a/scripts/weapons/Pistols/GrappleHook.cs +++ b/scripts/weapons/Pistols/GrappleHook.cs @@ -112,7 +112,7 @@ datablock ShapeBaseImageData(GrappleHookImage) { stateName[3] = "Fire"; stateTransitionOnTimeout[3] = "Reload"; - stateTimeoutValue[3] = 0.5; + stateTimeoutValue[3] = 5.0; stateFire[3] = true; stateAllowImageChange[3] = false; stateSequence[3] = "Fire"; diff --git a/serverControl.cs b/serverControl.cs index 8f6f6e6..276aaab 100644 --- a/serverControl.cs +++ b/serverControl.cs @@ -157,7 +157,7 @@ $TWM2::BossName["Vegenor"] = "General Vegenor"; $TWM2::BossName["Insignia"] = "Major Insignia"; $TWM2::BossName["Vardison"] = "Lord Vardison"; $TWM2::BossName["DAVardison"] = "Dark Archmage Vardison"; -$TWM2::BossName["Trebor"] = "Lordranius Trevor"; +$TWM2::BossName["Trevor"] = "Lordranius Trevor"; $TWM2::BossName["GoF"] = CollapseEscape("\c7The Ghost Of Fire"); $TWM2::BossName["Stormrider"] = "Commander Stormrider"; @@ -168,7 +168,7 @@ $TWM2::BossName["CnlWindshear"] = "Colonel Windshear"; $TWM2::BossName["Vegenor"] = "General Vegenor"; $TWM2::BossName["Insignia"] = "Major Insignia"; $TWM2::BossName["Vardison"] = "Lord Vardison"; -$TWM2::BossName["Trebor"] = "Lordranius Trevor"; +$TWM2::BossName["Trevor"] = "Lordranius Trevor"; $TWM2::BossName["GhostOfFire"] = "The Ghost Of Fire"; $TWM2::BossName["Stormrider"] = "Commander Stormrider"; $TWM2::BossName["GhostOfLightning"] = "The Ghost Of Lightning"; @@ -198,7 +198,7 @@ $TWM2::BossXPAward["CnlWindshear"] = 12500; // 12500 $TWM2::BossXPAward["CnlWindshearAlly"] = 1000; // 1000 $TWM2::BossXPAward["GhostOfLightning"] = 20000; // 20000 $TWM2::BossXPAward["Vengenor"] = 25000; // 25000 -$TWM2::BossXPAward["Trebor"] = 25000; // 25000 +$TWM2::BossXPAward["Trevor"] = 25000; // 25000 $TWM2::BossXPAward["LordRog"] = 30000; // 30000 $TWM2::BossXPAward["Insignia"] = 35000; // 35000 $TWM2::BossXPAward["Stormrider"] = 45000; // 45000