Killstreak System Update

Nuked a ton of unnecessary code. Made a few minor adjustments.
This commit is contained in:
Robert Fritzen 2014-08-02 17:12:19 -05:00
parent 41d267c826
commit c3b830f26d
5 changed files with 795 additions and 1822 deletions

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.HasAirstrike && !%client.UnlimitedAS) {
if(%client.ksListInstance.find("Airstrike") == -1 && !%client.UnlimitedAS) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -79,7 +79,13 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
if(!%client.UnlimitedAS) {
%client.HasAirstrike = 0;
%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);
}
GainExperience(%client, 35, "Airstrike called in ");
}
bottomPrint(%client, "Coordinates Confirmed, Calling In Airstrike", 5, 2);
@ -95,7 +101,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(!%client.HasHarrier) {
if(%client.ksListInstance.find("Harrier") == -1) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -117,7 +123,13 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%client.HasHarrier = 0;
%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);
}
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);
@ -132,7 +144,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(!%client.HasNapalmHarrier) {
if(%client.ksListInstance.find("Napalm") == -1) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -154,7 +166,13 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%client.HasNapalmHarrier = 0;
%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);
}
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);
@ -169,7 +187,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(!%client.HasOLS) {
if(%client.ksListInstance.find("OLS") == -1) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -183,7 +201,13 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%client.HasOLS = 0;
%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);
}
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);
@ -198,7 +222,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(!%client.HasSlthAirstrike) {
if(%client.ksListInstance.find("Stealth") == -1) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -220,7 +244,13 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
%client.HasSlthAirstrike = 0;
%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);
}
GainExperience(%client, 150, "Stealth Bomber Airstrike called in ");
bottomPrint(%client, "Coordinates Confirmed, Calling In Stealth Bomber", 5, 2);
StealthAirstrike(%client, %position, %direction);
@ -234,7 +264,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(!%client.HasArtillery) {
if(%client.ksListInstance.find("Artillery") == -1) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -248,10 +278,14 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
//if(!%client.UnlimitedAS) {
%client.HasArtillery = 0;
GainExperience(%client, 250, "Artillery called in ");
//}
%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);
}
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);
@ -265,7 +299,7 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
//press JET
if (%trigger == 3) {
//Can we Call in this airstrike?
if(!%client.HasNuke) {
if(%client.ksListInstance.find("NukeStrike") == -1) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
@ -279,10 +313,14 @@ function TWM2ControlCamera::onTrigger(%data,%obj,%trigger,%state) {
if(isObject(%client.player)) {
%obj.schedule(1000, "delete");
%client.setControlObject(%client.player);
//if(!%client.UnlimitedAS) {
%client.HasNuke = 0;
GainExperience(%client, 500, "Nuclear Missile called in ");
//}
%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);
}
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);

View file

@ -8,6 +8,7 @@ Error("********************************************");
//Mod Systems
exec("serverControl.cs"); //Server Settings
exec("scripts/TWM2/Systems/List.cs"); //List Instance
exec("scripts/TWM2/Systems/Directorate.cs"); //Client Container Objects
exec("scripts/TWM2/Systems/AdvancedRankSystem.cs"); //Adv. Ranks
exec("scripts/TWM2/Systems/MainControl.cs"); //TWM2 Core Functions

View file

@ -295,62 +295,14 @@ function GameConnection::isActiveStreak(%client, %val) {
}
function GiveTWM2Weapons(%client) {
if(%client.HasUAV) {
%client.player.setInventory(UAVCaller, 1, true);
}
if(%client.HasAirstrike) {
%client.player.setInventory(AirstrikeCaller, 1, true);
}
if(%client.HasHeli) {
%client.player.setInventory(HeliCaller, 1, true);
}
if(%client.HasAmmoDrop) {
%client.player.setInventory(AmmoDropCaller, 1, true);
}
if(%client.HasGM) {
%client.player.setInventory(GMCaller, 1, true);
}
if(%client.HasHarbinsWrath) {
%client.player.setInventory(HarbinsWrathCaller, 1, true);
}
if(%client.HasChopperGunner) {
%client.player.setInventory(ChopperGunnerCaller, 1, true);
}
if(%client.HasSlthAirstrike) {
%client.player.setInventory(StealthAirstrikeCaller, 1, true);
}
if(%client.HasArtillery) {
%client.player.setInventory(ArtilleryCaller, 1, true);
}
if(%client.HasAcGunner) {
%client.player.setInventory(AC130Caller, 1, true);
}
if(%client.HasNuke) {
%client.player.setInventory(NukeCaller, 1, true);
}
if(%client.HasOLS) {
%client.player.setInventory(OLSCaller, 1, true);
}
if(%client.HasZBomb) {
%client.player.setInventory(ZBombCaller, 1, true);
}
if(%client.HasGunshipHeli) {
%client.player.setInventory(GunshipHeliCaller, 1, true);
}
if(%client.HasHarrier) {
%client.player.setInventory(HarrierAirstrikeCaller, 1, true);
}
if(%client.HasFission) {
%client.player.setInventory(FissionBombCaller, 1, true);
}
if(%client.HasFullTeamRespawn) {
%client.player.setInventory(FullTeamRespawnCaller, 1, true);
}
if(%client.HasMassEMP) {
%client.player.setInventory(MassEMPCaller, 1, true);
}
if(%client.HasNapalmHarrier) {
%client.player.setInventory(NapalmHarrierAirstrikeCaller, 1, true);
if(%client.ksListInstance.count() > 0) {
%client.player.setInventory(KillstreakBeacon, 1, true);
}
if(!%client.isconfiscated) {
if (%client.isAdmin) {
@ -370,75 +322,114 @@ function GameConnection::AwardKillstreak(%client, %streakVal, %plz) {
if(!%client.isActiveStreak(%streakVal) && ($Killstreak::Setting != 2) && !$TWM::PlayingHelljump) {
return;
}
if(!%client.ksListInstance) {
%client.ksListInstance = initList();
}
%client.player.setInventory(KillstreakBeacon, 1, true);
%cAmt = 0;
switch(%streakVal) {
case 1:
MessageClient(%client, 'MsgZKill', "\c5TWM2: UAV Recon at Your Disposal.");
%client.HasUAV = 1; //heh, now we can use it if we die
%client.player.setInventory(UAVCaller, 1, true);
if(%client.ksListInstance.find("UAV") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("UAV"), 0), 1);
}
%client.ksListIntance.advancedAdd("UAV", "UAV "@%cAmt+1);
case 2:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Airstrike Standing By.");
%client.HasAirstrike = 1; //heh, now we can use it if we die
%client.player.setInventory(AirstrikeCaller, 1, true);
if(%client.ksListInstance.find("Airstrike") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Airstrike"), 0), 1);
}
%client.ksListIntance.advancedAdd("Airstrike", "Airstrike "@%cAmt+1);
case 3:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Guided Missile Strike Standing By.");
%client.HasGM = 1; //heh, now we can use it if we die
%client.player.setInventory(GMCaller, 1, true);
if(%client.ksListInstance.find("GM") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("GM"), 0), 1);
}
%client.ksListIntance.advancedAdd("GM", "GM "@%cAmt+1);
case 4:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Helicopter at your disposal.");
%client.HasHeli = 1; //heh, now we can use it if we die
%client.player.setInventory(HeliCaller, 1, true);
if(%client.ksListInstance.find("AIHeli") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("AIHeli"), 0), 1);
}
%client.ksListIntance.advancedAdd("AIHeli", "AIHeli "@%cAmt+1);
case 5:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Plasma Harrier Strike at your disposal.");
%client.HasHarrier = 1; //heh, now we can use it if we die
%client.player.setInventory(HarrierAirstrikeCaller, 1, true);
if(%client.ksListInstance.find("Harrier") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Harrier"), 0), 1);
}
%client.ksListIntance.advancedAdd("Harrier", "Harrier "@%cAmt+1);
case 6:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Satellite Strike at your disposal.");
%client.HasOLS = 1; //heh, now we can use it if we die
%client.player.setInventory(OLSCaller, 1, true);
if(%client.ksListInstance.find("OLS") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("OLS"), 0), 1);
}
%client.ksListIntance.advancedAdd("OLS", "OLS "@%cAmt+1);
case 7:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Gunship Helicopter at your disposal.");
%client.HasGunshipHeli = 1; //heh, now we can use it if we die
%client.player.setInventory(GunshipHeliCaller, 1, true);
if(%client.ksListInstance.find("AIGunHeli") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("AIGunHeli"), 0), 1);
}
%client.ksListIntance.advancedAdd("AIGunHeli", "AIGunHeli "@%cAmt+1);
case 8:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Stealth Bomber at your disposal.");
%client.HasSlthAirstrike = 1; //heh, now we can use it if we die
%client.player.setInventory(StealthAirstrikeCaller, 1, true);
if(%client.ksListInstance.find("Stealth") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Stealth"), 0), 1);
}
%client.ksListIntance.advancedAdd("Stealth", "Stealth "@%cAmt+1);
case 9:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Harbinger's Wrath Standing By.");
%client.HasHarbinsWrath = 1; //heh, now we can use it if we die
%client.player.setInventory(HarbinsWrathCaller, 1, true);
if(%client.ksListInstance.find("HarbWrath") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("HarbWrath"), 0), 1);
}
%client.ksListIntance.advancedAdd("HarbWrath", "HarbWrath "@%cAmt+1);
case 10:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Apache Gunner Standing By.");
%client.HasChopperGunner = 1; //heh, now we can use it if we die
%client.player.setInventory(ChopperGunnerCaller, 1, true);
if(%client.ksListInstance.find("Apache") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Apache"), 0), 1);
}
%client.ksListIntance.advancedAdd("Apache", "Apache "@%cAmt+1);
case 11:
MessageClient(%client, 'MsgZKill', "\c5TWM2: AC-130 Gunner Standing By.");
%client.HasAcGunner = 1; //heh, now we can use it if we die
%client.player.setInventory(AC130Caller, 1, true);
if(%client.ksListInstance.find("AC130") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("AC130"), 0), 1);
}
%client.ksListIntance.advancedAdd("AC130", "AC130 "@%cAmt+1);
case 12:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Centaur Bombardment Standing By.");
%client.HasArtillery = 1; //heh, now we can use it if we die
%client.player.setInventory(ArtilleryCaller, 1, true);
if(%client.ksListInstance.find("Artillery") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Artillery"), 0), 1);
}
%client.ksListIntance.advancedAdd("Artillery", "Artillery "@%cAmt+1);
case 13:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Mass EMP Standing By.");
%client.HasMassEMP = 1; //heh, now we can use it if we die
%client.player.setInventory(MassEMPCaller, 1, true);
if(%client.ksListInstance.find("EMP") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("EMP"), 0), 1);
}
%client.ksListIntance.advancedAdd("EMP", "EMP "@%cAmt+1);
case 14:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Nuclear Strike Standing By.");
%client.HasNuke = 1; //heh, now we can use it if we die
%client.player.setInventory(NukeCaller, 1, true);
if(%client.ksListInstance.find("NukeStrike") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("NukeStrike"), 0), 1);
}
%client.ksListIntance.advancedAdd("NukeStrike", "NukeStrike "@%cAmt+1);
case 15:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Zombie Bomb Standing By... wait... holy fuck, you got "@$Killstreak::Kills["ZBomb", 1]@" zombie kills without dying!?!?");
%client.HasZBomb = 1; //heh, now we can use it if we die
%client.player.setInventory(ZBombCaller, 1, true);
MessageClient(%client, 'MsgZKill', "\c5TWM2: Zombie Bomb Standing By.");
if(%client.ksListInstance.find("ZBomb") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("ZBomb"), 0), 1);
}
%client.ksListIntance.advancedAdd("ZBomb", "ZBomb "@%cAmt+1);
case 16:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Fission Bomb Ready... Obliterate everyone!!!");
%client.HasFission = 1; //heh, now we can use it if we die
%client.player.setInventory(FissionBombCaller, 1, true);
if(%client.ksListInstance.find("FBomb") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("FBomb"), 0), 1);
}
%client.ksListIntance.advancedAdd("FBomb", "FBomb "@%cAmt+1);
case 17:
MessageClient(%client, 'MsgZKill', "\c5TWM2: Napalm Airstrike at your disposal.");
%client.HasNapalmHarrier = 1; //heh, now we can use it if we die
%client.player.setInventory(NapalmHarrierAirstrikeCaller, 1, true);
if(%client.ksListInstance.find("Napalm") != -1) {
%cAmt = getWord(getField(%client.ksListInstance.find("Napalm"), 0), 1);
}
%client.ksListIntance.advancedAdd("Napalm", "Napalm "@%cAmt+1);
}
if(%plz == 0) {
if(%client.IsHighestPLStreak(%streakVal)) {

View file

@ -0,0 +1,69 @@
// List.cs
// Phantom139
// TWM2 3.9
// Declares a simple container system for list properties.
function initList() {
%list = new ScriptObject() {
class = "ListInstance";
numberOfElements = 0;
};
return %list;
}
function ListInstance::advancedAdd(%this, %elementTxt, %newValue) {
if(%this.find(%elementTxt) == -1) {
%this.addElement(%newValue);
}
else {
%indx = getField(%this.find(%elementTxt), 1);
%this.set(%indx, %newValue);
}
}
function ListInstance::set(%this, %index, %new) {
%this.element[%index] = %new;
}
function ListInstance::addElement(%this, %element) {
%this.element[%this.numberOfElements] = %element;
%this.numberOfElements++;
}
function ListInstance::removeElement(%this, %index) {
if(%index > %this.count() || %index < 0) {
error("ListInstance::removeElements("@%index@"): Specified index is out of list bounds.");
return;
}
%this.element[%this.numberOfElements] = "";
%this.compactList();
}
function ListInstance::element(%this, %index) {
return %this.element[%index];
}
function ListInstance::count(%this) {
return %this.numberOfElements;
}
function ListInstance::find(%this, %key) {
for(%i = %this.count(); %i >= 0; %i--) {
if(strstr(%this.element[%i], %key) == 0) {
return %this.element[%i] TAB %i;
}
}
return -1;
}
function ListInstance::compactList(%this) {
for(%i = %this.count(); %i >= 0; %i--) {
if(%this.element[%i] $= "") {
//Strip item, move others forward
for(%x = %i; %x < %this.count(); %x++) {
%this.element[%x] = %this.element[%x+1];
}
%this.numberOfElements--;
}
}
}

File diff suppressed because it is too large Load diff