Fixed up the killstreaks

This commit is contained in:
Robert Fritzen 2014-08-12 16:16:58 -05:00
parent 6541acbd7c
commit e80004bbd8
6 changed files with 190 additions and 284 deletions

View file

@ -275,89 +275,89 @@ function parseSuperAdminCommands(%sender, %command, %args) {
}
%cAmt = 0;
%sw = getWord(%args,1);
%sw = strlwr(getWord(%args,1));
switch$(%sw) {
case "UAV":
case "uav":
%target.AwardKillstreak(1, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a UAV Recon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a UAV Beacon.");
case "Airstrike":
case "airstrike":
%target.AwardKillstreak(2, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" an airstrike beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you an airstrike.");
case "UAMS":
case "uams":
%target.AwardKillstreak(3, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a UAMS beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a UAMS Strike.");
case "UnlimUAMS":
case "unlimuams":
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a fully loaded UAMS.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a fully loaded UAMS.");
CreateMissileSat(%target, 1);
case "Helicopter":
case "helicopter":
%target.AwardKillstreak(4, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Helicopter beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Helicopter beacon.");
case "HeliGunner":
case "heligunner":
MakeTheHeli(%target, 1);
messageClient(%sender, 'MsgClient', "\c2You made "@%target.namebase@" a chopper gunner.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" has granted you Helicopter Gunner Access.");
case "Harbingers":
case "harbingers":
%target.AwardKillstreak(9, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Harbinger's Wrath beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Harbinger's Wrath beacon.");
case "UnlimHarbin":
case "unlimharbin":
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" gunship support.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you gunship support.");
startHarbingersWrath(%target, 1, 1);
case "UnlimAC130":
case "unlimac130":
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" AC-130 gunship support.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you AC-130 gunship support.");
startAC130(%target, 1, 1);
case "GunHeli":
case "gunheli":
%target.AwardKillstreak(7, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Gunship Helicopter beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Gunship Helicopter beacon.");
case "Apache":
case "apache":
%target.AwardKillstreak(10, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" an Apache Gunner beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you an Apache Gunner beacon.");
case "Artillery":
case "artillery":
%target.AwardKillstreak(12, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Centaur Artillery beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Centaur Artillery beacon.");
case "Nuke":
case "nuke":
%target.AwardKillstreak(14, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Nuclear Strike beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Nuclear Strike beacon.");
case "ZBomb":
case "zbomb":
%target.AwardKillstreak(15, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Zombie-Bomb beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Zombie-Bomb beacon.");
case "Harrier":
case "harrier":
%target.AwardKillstreak(5, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Harrier Airstrike beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Harrier Airstrike beacon.");
case "Stealth":
case "stealth":
%target.AwardKillstreak(8, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Stealth Airstrike beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Stealth Airstrike beacon.");
case "AC130":
case "ac130":
%target.AwardKillstreak(11, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" an AC-130 beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you an AC-130 beacon.");
case "SatNuke":
case "satnuke":
%target.AwardKillstreak(6, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Orbital Laser Strike beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Orbital Laser Strike beacon.");
case "Fission":
case "fission":
%target.AwardKillstreak(16, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Fission Bomb :D.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Fission Bomb :D.");
case "EMP":
case "emp":
%target.AwardKillstreak(13, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Mass EMP Beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Mass EMP Beacon.");
case "Napalm":
case "napalm":
%target.AwardKillstreak(17, -1);
messageClient(%sender, 'MsgClient', "\c2You gave "@%target.namebase@" a Napalm Airstrike beacon.");
messageClient(%target, 'MsgClient', "\c2"@%sender.namebase@" gave you a Napalm Airstrike beacon.");

View file

@ -54,7 +54,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("Airstrike") == -1 && !%client.UnlimitedAS) {
if(%client.streakCount[2] <= 0 && !%client.UnlimitedAS) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -79,18 +79,19 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
if(!%client.UnlimitedAS) {
%newCt = getField(%client.ksListInstance.find("Airstrike"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("Airstrike"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("Airstrike"), 1), "Airstrike" SPC %newCt);
}
%client.streakCount[2]--;
GainExperience(%client, 35, "Airstrike called in ");
}
bottomPrint(%client, "Coordinates Confirmed, Calling In Airstrike", 5, 2);
messageTeam(%client.team, 'MsgAirstrike', "\c5TWM2: Airstrike Called In From "@%client.namebase@"");
Airstrike(%client, %position, %direction);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0 && !%client.UnlimitedAS) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);
@ -101,7 +102,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("Harrier") == -1) {
if(%client.streakCount[5] <= 0) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -123,17 +124,18 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%newCt = getField(%client.ksListInstance.find("Harrier"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("Harrier"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("Harrier"), 1), "Harrier" SPC %newCt);
}
%client.streakCount[5]--;
GainExperience(%client, 150, "Harrier Airstrike called in ");
messageTeam(%client.team, 'MsgAirstrike', "\c5TWM2: "@%client.namebase@"'s Harrier Airstrike is Approaching.");
bottomPrint(%client, "Coordinates Confirmed, Calling In Harriers", 5, 2);
HarrierAirstrike(%client, %position, %direction);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);
@ -144,7 +146,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("Napalm") == -1) {
if(%client.streakCount[17] <= 0) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -166,17 +168,18 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%newCt = getField(%client.ksListInstance.find("Napalm"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("Napalm"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("Napalm"), 1), "Napalm" SPC %newCt);
}
%client.streakCount[17]--;
GainExperience(%client, 350, "Napalm Airstrike called in ");
messageTeam(%client.team, 'MsgAirstrike', "\c5TWM2: "@%client.namebase@"'s Napalm Airstrike is coming in hot.");
bottomPrint(%client, "Coordinates Confirmed, Calling In Strike Fighters", 5, 2);
NapalmHarrierAirstrike(%client, %position, %direction);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);
@ -187,7 +190,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("OLS") == -1) {
if(%client.streakCount[6] <= 0) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -201,17 +204,18 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%newCt = getField(%client.ksListInstance.find("OLS"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("OLS"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("OLS"), 1), "OLS" SPC %newCt);
}
%client.streakCount[6]--;
GainExperience(%client, 350, "Orbital Laser Strike Called In ");
messageTeam(%client.team, 'MsgAirstrike', "\c5TWM2: "@%client.namebase@"'s Laser Strike is Incoming.");
bottomPrint(%client, "Coordinates Confirmed, Spinning Laser Cannon", 5, 2);
OrbitalLaserStrike(%client, %position);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);
@ -222,7 +226,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("Stealth") == -1) {
if(%client.streakCount[8] <= 0) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -244,16 +248,17 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%newCt = getField(%client.ksListInstance.find("Stealth"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("Stealth"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("Stealth"), 1), "Stealth" SPC %newCt);
}
%client.streakCount[8]--;
GainExperience(%client, 150, "Stealth Bomber Airstrike called in ");
bottomPrint(%client, "Coordinates Confirmed, Calling In Stealth Bomber", 5, 2);
StealthAirstrike(%client, %position, %direction);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);
@ -264,7 +269,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("Artillery") == -1) {
if(%client.streakCount[12] <= 0) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -278,17 +283,18 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%newCt = getField(%client.ksListInstance.find("Artillery"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("Artillery"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("Artillery"), 1), "Artillery" SPC %newCt);
}
%client.streakCount[12]--;
GainExperience(%client, 250, "Artillery called in ");
bottomPrint(%client, "Coordinates Confirmed, Calling In Artillery", 5, 2);
messageTeam(%client.team, 'MsgAirstrike', "\c5TWM2: Artillery Called In From "@%client.namebase@"");
Artillery(%client, %position);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);
@ -299,7 +305,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(%client.ksListInstance.find("NukeStrike") == -1) {
if(%client.streakCount[14] <= 0) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -313,17 +319,18 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%newCt = getField(%client.ksListInstance.find("NukeStrike"), 1) - 1;
if(%newCt == 0) {
%client.ksListInstance.removeElement(getField(%client.ksListInstance.find("NukeStrike"), 1));
}
else {
%client.ksListInstance.set(getField(%client.ksListInstance.find("NukeStrike"), 1), "NukeStrike" SPC %newCt);
}
%client.streakCount[14]--;
GainExperience(%client, 500, "Nuclear Missile called in ");
bottomPrint(%client, "Coordinates Confirmed, Launching Missile", 5, 2);
messageAll('msgDanger', "\c5TWM2 ALERT: "@%client.namebase@" has activated a nuclear missile!!! ~wfx/misc/red_alert.wav");
Nuke(%client, %position);
//Post-Fire Checks
if(getWordCount(%client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
}
}
else {
bottomPrint(%client, "Player Object Required", 5, 2);

View file

@ -155,3 +155,6 @@ Error("********************************************");
Error("************* EXECUTE COMPLETE *************");
Error("********************************************");
Error("********************************************");
//POST LOAD TASKS.....
//OrderStreaks();

View file

@ -18,6 +18,31 @@ $Killstreak[15] = "Z-Bomb\t-1\t"@$Killstreak::Kills["ZBomb", 1]@"\tWipe out all
$Killstreak[16] = "Fission Bomb\t"@$Killstreak::Kills["Fission", 0]@"\t-1\t(Matches) End the game with an explosive bang.";
$Killstreak[17] = "Napalm Airstrike\t"@$Killstreak::Kills["Napalm", 0]@"\t"@$Killstreak::Kills["Napalm", 1]@"\tQuick destructive airstrike with remaining fire.";
//Phantom: V3.9: Order the streaks based on killcounts...
function OrderStreaks() {
echo("Ordering Killstreak List...");
for(%i = 1; %i <= $KillstreakCount; %i++) {
%cur = getField($Killstreak[%i], 1);
%temp = $Killstreak[%i];
$OrderedKillstreak[%i] = $Killstreak[%i];
for(%x = 1; %x <= %i; %x++) {
%mine = getField($Killstreak[%x], 1);
//This streak has a lower count, sift it down
if(%mine < %cur) {
$OrderedKillstreak[%i] = $Killstreak[%x];
$OrderedKillstreak_CONVINDX[%i] = %x;
$OrderedKillstreak[%x] = %temp;
$OrderedKillstreak_CONVINDX[%x] = %i;
}
}
}
echo("Complete...");
for(%r = 1; %r <= $KillstreakCount; %r++) {
echo(""@%r@": "@$OrderedKillstreak[%r]@" => "@$OrderedKillstreak_CONVINDX[%r]);
}
}
function GetStreakDescrip(%val) {
%desc = getField($Killstreak[%val], 3);
@ -301,7 +326,7 @@ function GiveTWM2Weapons(%client) {
if(%client.HasFullTeamRespawn) {
%client.player.setInventory(FullTeamRespawnCaller, 1, true);
}
if(%client.ksListInstance.count() > 0) {
if(getWordCount(%client.streakList()) > 0) {
%client.player.setInventory(KillstreakBeacon, 1, true);
}
if(!%client.isconfiscated) {
@ -311,6 +336,21 @@ function GiveTWM2Weapons(%client) {
}
}
function GameConnection::streakList(%client) {
%total = "";
for(%i = 1; %i <= $KillstreakCount; %i++) {
if(%client.streakCount[%i] > 0) {
if(%total $= "") {
%total = %i;
}
else {
%total = %total @ " " @ %i;
}
}
}
return %total;
}
function GameConnection::AwardKillstreak(%client, %streakVal, %plz) {
if(%plz $= "") {
%plz = 1;
@ -319,117 +359,46 @@ function GameConnection::AwardKillstreak(%client, %streakVal, %plz) {
if($Killstreak::Setting == 4) {
return;
}
if(!%client.isActiveStreak(%streakVal) && ($Killstreak::Setting != 2) && !$TWM::PlayingHelljump) {
if(%plz != -1 && (!%client.isActiveStreak(%streakVal) && ($Killstreak::Setting != 2) && !$TWM::PlayingHelljump)) {
return;
}
if(!isSet(%client.ksListInstance)) {
%client.ksListInstance = initList();
}
%cAmt = 0;
switch(%streakVal) {
case 1:
MessageClient(%client, 'MsgZKill', "\c5TWM2: UAV Recon at Your Disposal.");
if(%client.ksListInstance.find("UAV") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("UAV"), 0), 1);
}
%client.ksListInstance.advancedAdd("UAV", "UAV "@%cAmt+1);
case 2:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Airstrike Standing By.");
if(%client.ksListInstance.find("Airstrike") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Airstrike"), 0), 1);
}
%client.ksListInstance.advancedAdd("Airstrike", "Airstrike "@%cAmt+1);
case 3:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Guided Missile Strike Standing By.");
if(%client.ksListInstance.find("GM") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("GM"), 0), 1);
}
%client.ksListInstance.advancedAdd("GM", "GM "@%cAmt+1);
case 4:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Helicopter at your disposal.");
if(%client.ksListInstance.find("AIHeli") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("AIHeli"), 0), 1);
}
%client.ksListInstance.advancedAdd("AIHeli", "AIHeli "@%cAmt+1);
case 5:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Plasma Harrier Strike at your disposal.");
if(%client.ksListInstance.find("Harrier") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Harrier"), 0), 1);
}
%client.ksListInstance.advancedAdd("Harrier", "Harrier "@%cAmt+1);
case 6:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Satellite Strike at your disposal.");
if(%client.ksListInstance.find("OLS") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("OLS"), 0), 1);
}
%client.ksListInstance.advancedAdd("OLS", "OLS "@%cAmt+1);
case 7:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Gunship Helicopter at your disposal.");
if(%client.ksListInstance.find("AIGunHeli") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("AIGunHeli"), 0), 1);
}
%client.ksListInstance.advancedAdd("AIGunHeli", "AIGunHeli "@%cAmt+1);
case 8:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Stealth Bomber at your disposal.");
if(%client.ksListInstance.find("Stealth") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Stealth"), 0), 1);
}
%client.ksListInstance.advancedAdd("Stealth", "Stealth "@%cAmt+1);
case 9:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Harbinger's Wrath Standing By.");
if(%client.ksListInstance.find("HarbWrath") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("HarbWrath"), 0), 1);
}
%client.ksListInstance.advancedAdd("HarbWrath", "HarbWrath "@%cAmt+1);
case 10:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Apache Gunner Standing By.");
if(%client.ksListInstance.find("Apache") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Apache"), 0), 1);
}
%client.ksListInstance.advancedAdd("Apache", "Apache "@%cAmt+1);
case 11:
MessageClient(%client, 'MsgZKill', "\c5TWM2: AC-130 Gunner Standing By.");
if(%client.ksListInstance.find("AC130") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("AC130"), 0), 1);
}
%client.ksListInstance.advancedAdd("AC130", "AC130 "@%cAmt+1);
case 12:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Centaur Bombardment Standing By.");
if(%client.ksListInstance.find("Artillery") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Artillery"), 0), 1);
}
%client.ksListInstance.advancedAdd("Artillery", "Artillery "@%cAmt+1);
case 13:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Mass EMP Standing By.");
if(%client.ksListInstance.find("EMP") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("EMP"), 0), 1);
}
%client.ksListInstance.advancedAdd("EMP", "EMP "@%cAmt+1);
case 14:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Nuclear Strike Standing By.");
if(%client.ksListInstance.find("NukeStrike") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("NukeStrike"), 0), 1);
}
%client.ksListInstance.advancedAdd("NukeStrike", "NukeStrike "@%cAmt+1);
case 15:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Zombie Bomb Standing By.");
if(%client.ksListInstance.find("ZBomb") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("ZBomb"), 0), 1);
}
%client.ksListInstance.advancedAdd("ZBomb", "ZBomb "@%cAmt+1);
case 16:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Fission Bomb Ready... Obliterate everyone!!!");
if(%client.ksListInstance.find("FBomb") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("FBomb"), 0), 1);
}
%client.ksListInstance.advancedAdd("FBomb", "FBomb "@%cAmt+1);
case 17:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Napalm Airstrike at your disposal.");
if(%client.ksListInstance.find("Napalm") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Napalm"), 0), 1);
}
%client.ksListInstance.advancedAdd("Napalm", "Napalm "@%cAmt+1);
}
%client.streakCount[%streakVal]++;
if(%plz == 0) {
if(%client.IsHighestPLStreak(%streakVal)) {
%client.player.killsinarow = 0; //reset for moar killstreaks!

View file

@ -12,10 +12,13 @@ function initList() {
}
function ListInstance::advancedAdd(%this, %elementTxt, %newValue) {
echo("AdvancedAdd("@%this@", "@%elementTxt@", "@%newValue@")");
if(%this.find(%elementTxt) == -1) {
echo("AdvancedAdd: Add New");
%this.addElement(%newValue);
}
else {
echo("AdvancedAdd: Replace Old");
%indx = getField(%this.find(%elementTxt), 1);
%this.set(%indx, %newValue);
}
@ -26,6 +29,7 @@ function ListInstance::set(%this, %index, %new) {
}
function ListInstance::addElement(%this, %element) {
echo("Add "@%element@" => "@%this.numberOfElements);
%this.element[%this.numberOfElements] = %element;
%this.numberOfElements++;
}
@ -35,7 +39,8 @@ function ListInstance::removeElement(%this, %index) {
error("ListInstance::removeElements("@%index@"): Specified index is out of list bounds.");
return;
}
%this.element[%this.numberOfElements] = "";
echo(%this@".removeElement("@%index@"): Strip "@%this.element[%index]);
%this.element[%index] = "";
%this.compactList();
}
@ -57,12 +62,19 @@ function ListInstance::find(%this, %key) {
}
function ListInstance::compactList(%this) {
echo("Compact "@%this@", "@%this.count());
for(%i = %this.count(); %i >= 0; %i--) {
echo("Test "@%i@": "@%this.element[%i]);
if(%this.element[%i] $= "") {
echo("Remove Element "@%i);
//Strip item, move others forward
for(%x = %i; %x < %this.count(); %x++) {
echo(%x@" Is Now: "@%this.element[%x+1]);
%this.element[%x] = %this.element[%x+1];
}
//Remove the last item....
%this.element[%this.numberOfElements] = "";
echo("Subduct "@%this.numberOfElements);
%this.numberOfElements--;
}
}

View file

@ -73,10 +73,7 @@ datablock ShapeBaseImageData(KillstreakBeaconImage) {
};
function KillstreakBeaconImage::onMount(%this, %obj, %slot) {
if(!isSet(%obj.client.ksListInstance)) {
%obj.client.ksListInstance = initList();
}
if(%obj.client.ksListInstance.count() <= 0) {
if(getWordCount(%obj.client.streakList()) == 0) {
%obj.throwWeapon(1);
%obj.throwWeapon(0);
%obj.setInventory(KillstreakBeacon, 0, true);
@ -103,74 +100,41 @@ function KillstreakBeaconImage::changeMode(%this, %obj, %key) {
case 1:
//Mine Modes
%obj.KSSetMode++;
if(%obj.KSSetMode >= %obj.client.ksListInstance.count()) {
if(%obj.KSSetMode >= getWordCount(%obj.client.streakList())) {
%obj.KSSetMode = 0;
}
case 2:
//Grenade Modes
%obj.KSSetMode--;
if(%obj.KSSetMode < 0) {
%obj.KSSetMode = %obj.client.ksListInstance.count() - 1;
%obj.KSSetMode = getWordCount(%obj.client.streakList());
}
}
DisplayKillstreakInfo(%obj);
}
function DisplayKillstreakInfo(%obj) {
%currentStreak = %obj.client.ksListInstance.element(%obj.KSSetMode);
%strkName = getWord(%currentStreak, 0);
%strkCnt = getWord(%currentStreak, 1);
%streakList = %obj.client.streakList();
%currentStreak = getWord(%streakList, %obj.KSSetMode);
%strkName = getField($Killstreak[%currentStreak], 0);
%strkCnt = %obj.client.streakCount[%currentStreak];
switch$(%strkName) {
case "UAV":
%msg = "UAV Recon";
case "Airstrike":
%msg = "Thundersword Airstrike";
case "GM":
%msg = "UAMS Assault Drone";
case "AIHeli":
%msg = "Support Helicopter";
case "Harrier":
%msg = "Plasma Harrier Airstrike";
case "OLS":
%msg = "Orbital Laser Strike";
case "AIGunHeli":
%msg = "Gunship Helicopter Support";
case "Stealth":
%msg = "Stealth Bomber Airstrike";
case "HarbWrath":
%msg = "Harbinger's Wrath";
case "Apache":
%msg = "Apache Gunner";
case "AC130":
%msg = "AC-130 Gunner";
case "Artillery":
%msg = "Centaur Artillery Bombardment";
case "EMP":
%msg = "EMP Strike";
case "NukeStrike":
%msg = "Tactical Nuke Strike";
case "ZBomb":
%msg = "Anti-Zombie Bomb";
case "FBomb":
%msg = "Fission Bomb Strike";
case "Napalm":
%msg = "Napalm Airstrike";
}
commandToClient(%obj.client, 'BottomPrint', "<font:Sui Generis:14>>>>Killstreak Beacon<<<\n<font:Arial:14>"@%msg@" ["@%strkCnt@" Available]\n<font:Arial:12>Press Mine to select next streak, Grenade to select previous streak.", 3, 3);
commandToClient(%obj.client, 'BottomPrint', "<font:Sui Generis:14>>>>Killstreak Beacon<<<\n<font:Arial:14>"@%strkName@" ["@%strkCnt@" Available]\n<font:Arial:12>Press Mine to select next streak, Grenade to select previous streak.", 3, 3);
}
function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
%currentStreak = %obj.client.ksListInstance.element(%obj.KSSetMode);
%strkName = getWord(%currentStreak, 0);
%strkCnt = getWord(%currentStreak, 1);
%streakList = %obj.client.streakList();
%currentStreak = getWord(%streakList, %obj.KSSetMode);
%strkName = getField($Killstreak[%currentStreak], 0);
%strkCnt = %obj.client.streakCount[%currentStreak];
%newCt = %strkCnt - 1;
echo("KSBeacon::Fire("@%data@", "@%obj@", "@%slot@"): "@%strkName@" "@%strkCnt@" => "@%newCt);
if(%strkCnt <= 0) {
//Oops...
messageClient(%obj.client, 'msgError', "\c5TWM2: Nice Try...");
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
if(%obj.client.ksListInstance.count() <= 0) {
//%obj.client.streakCount[%currentStreak]--;
if(getWordCount(%obj.client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);
@ -179,24 +143,19 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
return;
}
switch$(%strkName) {
switch(%currentStreak) {
//
//
// UAV
//
//
case "UAV":
case 1:
GainExperience(%obj.client, 25, "UAV Called in ");
%obj.client.TWM2Core.UAVCalls++;
UpdateSWBeaconFile(%obj.client, "UAV");
%obj.client.OnUseKillstreak(1);
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
%count = 0;
if(!$TWM2::FFAMode) {
%obj.team.UAVLoop = UAVLoop(%obj, %obj.client.team, %count);
@ -228,7 +187,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Airstrike
//
//
case "Airstrike":
case 2:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -244,7 +203,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// UAMS
//
//
case "GM":
case 3:
GainExperience(%obj.client, 50, "UAMS Called in ");
%obj.client.TWM2Core.GMCalls++;
%obj.client.OnUseKillstreak(3);
@ -259,19 +218,15 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
}
}
CreateMissileSat(%obj.client);
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
//
//
// Helicopter
//
//
case "AIHeli":
case 4:
if(Game.CheckModifier("Scrambler") == 1) {
for(%i = 0; %i < MissionCleanup.getCount(); %i++) {
%obj = MissionCleanup.getObject(%i);
@ -298,12 +253,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
messageClient(%cl, 'msgHeliComing', "\c5TWM2: Enemy Helicopter Inbound");
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
MakeTheHeli(%obj.client);
//
@ -311,7 +261,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Harrier
//
//
case "Harrier":
case 5:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -327,7 +277,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// OLS
//
//
case "OLS":
case 6:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -343,7 +293,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Gunship Helicopter
//
//
case "AIGunHeli":
case 7:
if(Game.CheckModifier("Scrambler") == 1) {
for(%i = 0; %i < MissionCleanup.getCount(); %i++) {
%obj = MissionCleanup.getObject(%i);
@ -370,12 +320,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
messageClient(%cl, 'msgHeliComing', "\c5TWM2: Enemy Gunship Helicopter Inbound!!!");
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
MakeTheHeli2(%obj.client, 0);
//
@ -383,7 +328,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Stealth Airstrike
//
//
case "Stealth":
case 8:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -399,7 +344,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Harbinger Gunship
//
//
case "HarbWrath":
case 9:
GainExperience(%obj.client, 100, "Harbinger Gunship Called In ");
if($CurrentMission $= "ChristmasMall09") {
CompleteNWChallenge(%CallerClient, "GunshipMall");
@ -416,12 +361,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
messageClient(%cl, 'msgHeliComing', "\c5TWM2: Enemy Gunship... INCOMING!!!");
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
if($TWM2::UnmannedGunship) {
StartHarbingersWrath(%obj.client, 1);
}
@ -434,7 +374,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Apache
//
//
case "Apache":
case 10:
GainExperience(%obj.client, 100, "Apache Gunner Called in ");
%obj.client.OnUseKillstreak(10);
%obj.client.TWM2Core.CGCalls++;
@ -448,12 +388,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
messageClient(%cl, 'msgHeliComing', "\c5TWM2: Enemy Apache... INCOMING!!!");
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
MakeTheHeli(%obj.client, 1);
//
@ -461,7 +396,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// AC130
//
//
case "AC130":
case 11:
GainExperience(%obj.client, 100, "AC130 Called in ");
if($CurrentMission $= "ChristmasMall09") {
CompleteNWChallenge(%CallerClient, "GunshipMall");
@ -478,12 +413,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
messageClient(%cl, 'msgHeliComing', "\c5TWM2: Enemy AC130 ABOVE!!!");
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
if($TWM2::UnmannedGunship) {
StartAC130(%obj.client, 1);
}
@ -496,7 +426,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// Artillery
//
//
case "Artillery":
case 12:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -512,7 +442,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// EMP
//
//
case "EMP":
case 13:
%obj.client.TWM2Core.EMPCalls++;
UpdateSWBeaconFile(%obj.client, "EMP");
GainExperience(%obj.client, 1000, "Mass EMP Called in ");
@ -540,19 +470,14 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
}
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
//
//
// Nuke
//
//
case "NukeStrike":
case 14:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -568,7 +493,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
// ZBomb
//
//
case "ZBomb":
case 15:
GainExperience(%obj.client, 1000, "Zombie Annihilation Bomb Activated ");
MessageAll('msgWohoo', "\c5TWM2: "@%obj.client.namebase@" has activated a Z-Bomb, eliminating all zombies");
%obj.client.OnUseKillstreak(15);
@ -595,19 +520,14 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
%flcl.player.setWhiteout(1.8);
}
}
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
//
//
// Fission
//
//
case "FBomb":
case 16:
%obj.client.HasFission = 0;
GainExperience(%obj.client, 25000, "Anti-Matter Based Fission Bomb Activated ");
%obj.client.OnUseKillstreak(16);
@ -616,19 +536,14 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
CompleteNWChallenge(%obj.client, "GameEnder");
MessageAll('msgItsOva', "\c5COMMAND: FISSION BOMB!!! IT'S OVER!! RUN!!!!!! ~wfx/misc/red_alert_short.wav");
FissionBombLoop(%obj.client, %obj, %obj.getPosition(), 30);
if(%newCt == 0) {
%obj.client.ksListInstance.removeElement(getField(%obj.client.ksListInstance.find(%strkName), 1));
}
else {
%obj.client.ksListInstance.set(getField(%obj.client.ksListInstance.find(%strkName), 1), %strkName SPC %newCt);
}
%obj.client.streakCount[%currentStreak]--;
//
//
// Napalm
//
//
case "Napalm":
case 17:
%ASCam = new Camera() {
dataBlock = TWM2ControlCamera;
};
@ -640,7 +555,7 @@ function KillstreakBeaconImage::OnFire(%data, %obj, %slot) {
CameraMessageLoop(%obj.client, %ASCam, %ASCam.mode);
}
//Post-Fire Checks
if(%obj.client.ksListInstance.count() <= 0) {
if(getWordCount(%obj.client.streakList()) == 0) {
//No more streaks in the list...
%obj.throwWeapon(1);
%obj.throwWeapon(0);