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