mirror of
https://github.com/PhantomGamesDevelopment/TWM2.git
synced 2026-02-05 11:41:01 +00:00
Prep for July 4th
Added in the necessary hooks to the daily challenge system for the July 4th event.
This commit is contained in:
parent
04f85e58a6
commit
66218bf83b
2
JTLdelDSO.bat
Normal file
2
JTLdelDSO.bat
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
del /s /q "..\base\*.dso"
|
||||
del /s /q "*.dso"
|
||||
|
|
@ -427,6 +427,12 @@ function HordeNextWave(%game, %wave) {
|
|||
$HordeGame::RevivesLeft++;
|
||||
}
|
||||
$HordeGame::CurrentWave = %wave;
|
||||
for(%i = 0; %i < ClientGroup.getCount(); %i++) {
|
||||
%cl = ClientGroup.getObject(%i);
|
||||
if(%wave != 1) {
|
||||
recordAction(%cl, "HORDEWAVE", %wave-1);
|
||||
}
|
||||
}
|
||||
HordeKillAllZombies(); //Cleans up the server
|
||||
if($HordeGame::CurrentWave == 51) { //Victory
|
||||
for (%i = 0; %i < ClientGroup.getCount(); %i++) {
|
||||
|
|
|
|||
|
|
@ -127,80 +127,86 @@ function doChallengeKillRecording(%sourceObject, %targetObject) {
|
|||
}
|
||||
|
||||
function recordAction(%client, %action, %variables) {
|
||||
%ymd = formattimestring("yymmdd");
|
||||
%so = %client.TWM2Controller;
|
||||
//echo(""@%client@" - "@%action@" - "@%variables@"");
|
||||
//
|
||||
switch$(%action) {
|
||||
case "CCMP":
|
||||
%so.completed[getField(%variables, 0), %ymd] = getField(%variables, 1);
|
||||
case "BOSS":
|
||||
%so.bossSlayCount[getField(%variables, 0), %ymd] += 1;
|
||||
case "PKC":
|
||||
//player kill count
|
||||
if(getField(%variables, 0) $= "total") {
|
||||
%so.totalPlayerKillCount[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
else {
|
||||
%so.PlayerKillCount[%ymd, getField(%variables, 1)] += getField(%variables, 2);
|
||||
}
|
||||
case "ZKC":
|
||||
if(getField(%variables, 0) $= "total") {
|
||||
%so.totalZombieKillCount[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
else {
|
||||
//a 3-case would have all of these filed
|
||||
if(!isSet(getField(%variables, 3))) {
|
||||
%so.ZombieKillCount[%ymd, 0, getField(%variables, 1)] += getField(%variables, 2);
|
||||
}
|
||||
else {
|
||||
%so.ZombieKillCount[%ymd, getField(%variables, 1), getField(%variables, 2)] += getField(%variables, 3);
|
||||
}
|
||||
}
|
||||
case "HSC":
|
||||
if(getField(%variables, 0) !$= "zombie") {
|
||||
%so.playerHeadshots[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
else {
|
||||
%so.zombieHeadshots[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
case "KSCC":
|
||||
%so.killstreakCalls[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "KSKC":
|
||||
%so.killstreakKills[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "SKC":
|
||||
%so.successiveSolo[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "SKSC":
|
||||
%so.successiveStreak[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "BOMBARM":
|
||||
%so.bombArm[%ymd, $CurrentMission] += 1;
|
||||
%so.bombArmTotal[%ymd] += 1;
|
||||
case "BOMBDIS":
|
||||
%so.bombDisarm[%ymd, $CurrentMission] += 1;
|
||||
%so.bombDisarmTotal[%ymd] += 1;
|
||||
case "SABWIN":
|
||||
%so.sabotageRoundWins[%ymd, $CurrentMission] += 1;
|
||||
%so.sabotageRoundWinTotal[%ymd] += 1;
|
||||
case "AREACAP":
|
||||
%so.areaCapture[%ymd, $CurrentMission] += 1;
|
||||
%so.areaCaptureTotal[%ymd] += 1;
|
||||
case "DOMWIN":
|
||||
%so.dominationRoundWins[%ymd, $CurrentMission] += 1;
|
||||
%so.dominationRoundWinTotal[%ymd] += 1;
|
||||
case "EXPGAIN":
|
||||
%so.dailyEXPGain[%ymd] += getField(%variables, 0);
|
||||
case "BACK":
|
||||
if(getField(%variables, 0) $= "zombie") {
|
||||
%so.zombieBackstabs[%ymd] += 1;
|
||||
}
|
||||
else {
|
||||
%so.playerBackstabs[%ymd] += 1;
|
||||
}
|
||||
default:
|
||||
//no action recorded
|
||||
}
|
||||
allCheckCompletion(%client);
|
||||
updateChallengeFile(%client);
|
||||
%ymd = formattimestring("yymmdd");
|
||||
%so = %client.TWM2Controller;
|
||||
//echo(""@%client@" - "@%action@" - "@%variables@"");
|
||||
//
|
||||
switch$(%action) {
|
||||
case "CCMP":
|
||||
%so.completed[getField(%variables, 0), %ymd] = getField(%variables, 1);
|
||||
case "BOSS":
|
||||
%so.bossSlayCount[getField(%variables, 0), %ymd] += 1;
|
||||
case "PKC":
|
||||
//player kill count
|
||||
if(getField(%variables, 0) $= "total") {
|
||||
%so.totalPlayerKillCount[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
else {
|
||||
%so.PlayerKillCount[%ymd, getField(%variables, 1)] += getField(%variables, 2);
|
||||
}
|
||||
case "ZKC":
|
||||
if(getField(%variables, 0) $= "total") {
|
||||
%so.totalZombieKillCount[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
else {
|
||||
//a 3-case would have all of these filed
|
||||
if(!isSet(getField(%variables, 3))) {
|
||||
%so.ZombieKillCount[%ymd, 0, getField(%variables, 1)] += getField(%variables, 2);
|
||||
}
|
||||
else {
|
||||
%so.ZombieKillCount[%ymd, getField(%variables, 1), getField(%variables, 2)] += getField(%variables, 3);
|
||||
}
|
||||
}
|
||||
case "HSC":
|
||||
if(getField(%variables, 0) !$= "zombie") {
|
||||
%so.playerHeadshots[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
else {
|
||||
%so.zombieHeadshots[%ymd] += getField(%variables, 1);
|
||||
}
|
||||
case "KSCC":
|
||||
%so.killstreakCalls[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "KSKC":
|
||||
%so.killstreakKills[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "SKC":
|
||||
%so.successiveSolo[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "SKSC":
|
||||
%so.successiveStreak[%ymd, getField(%variables, 0)] += getField(%variables, 1);
|
||||
case "BOMBARM":
|
||||
%so.bombArm[%ymd, $CurrentMission] += 1;
|
||||
%so.bombArmTotal[%ymd] += 1;
|
||||
case "BOMBDIS":
|
||||
%so.bombDisarm[%ymd, $CurrentMission] += 1;
|
||||
%so.bombDisarmTotal[%ymd] += 1;
|
||||
case "SABWIN":
|
||||
%so.sabotageRoundWins[%ymd, $CurrentMission] += 1;
|
||||
%so.sabotageRoundWinTotal[%ymd] += 1;
|
||||
case "AREACAP":
|
||||
%so.areaCapture[%ymd, $CurrentMission] += 1;
|
||||
%so.areaCaptureTotal[%ymd] += 1;
|
||||
case "HORDEWAVE":
|
||||
%so.totalHordeWavesCompleted[%ymd] += 1;
|
||||
%cWave = getField(%variables, 0);
|
||||
if(%cWave > %so.highestHordeWave[%ymd]) {
|
||||
%so.highestHordeWave[%ymd] = %cWave;
|
||||
}
|
||||
case "DOMWIN":
|
||||
%so.dominationRoundWins[%ymd, $CurrentMission] += 1;
|
||||
%so.dominationRoundWinTotal[%ymd] += 1;
|
||||
case "EXPGAIN":
|
||||
%so.dailyEXPGain[%ymd] += getField(%variables, 0);
|
||||
case "BACK":
|
||||
if(getField(%variables, 0) $= "zombie") {
|
||||
%so.zombieBackstabs[%ymd] += 1;
|
||||
}
|
||||
else {
|
||||
%so.playerBackstabs[%ymd] += 1;
|
||||
}
|
||||
default:
|
||||
//no action recorded
|
||||
}
|
||||
allCheckCompletion(%client);
|
||||
updateChallengeFile(%client);
|
||||
}
|
||||
|
||||
function cleanChallenges() {
|
||||
|
|
@ -239,129 +245,139 @@ function allCheckCompletion(%client) {
|
|||
}
|
||||
|
||||
function checkCompletion(%client, %cID) {
|
||||
%challenge = $Challenges::Challenge[%cID];
|
||||
%cType = trim(getField(%challenge, 0));
|
||||
%cCond = getsubstr(getField(%challenge, 3), 1, strlen(getField(%challenge, 3)));
|
||||
%so = %client.TWM2Controller;
|
||||
%dateStr = formattimestring("yymmdd");
|
||||
//cannot complete the same one twice :P
|
||||
if(%so.completed[%cid, %dateStr]) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
switch$(getWord(%cCond, 0)) {
|
||||
case "E":
|
||||
%killCount = getWord(%cCond, 1);
|
||||
%killDB = getWord(%cCond, 2) $= "A" ? 0 : getWord(%cCond, 2);
|
||||
if(%killDB != 0) {
|
||||
if(%so.PlayerKillCount[%dateStr, %killDB] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.totalPlayerKillCount[%dateStr] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
case "Z":
|
||||
%killCount = getWord(%cCond, 1);
|
||||
%killedType = getWord(%cCond, 2) $= "A" ? -1 : getWord(%cCond, 2);
|
||||
%killDB = getWord(%cCond, 3) $= "A" ? 0 : getWord(%cCond, 3);
|
||||
if(%killDB != 0) {
|
||||
if(%killedType != -1) {
|
||||
if(%so.ZombieKillCount[%dateStr, %killDB, %killedType] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.ZombieKillCount[%dateStr, %killDB, ""] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%killedType != -1) {
|
||||
if(%so.ZombieKillCount[%dateStr, 0, %killedType] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.totalZombieKillCount[%dateStr] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
case "HS":
|
||||
%counter = getWord(%cCond, 1);
|
||||
%type = getWord(%cCond, 2) $= "E" ? "E" : "Z";
|
||||
if(%type $= "E") {
|
||||
if(%so.playerHeadshots[%dateStr] >= %counter) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.zombieHeadshots[%dateStr] >= %counter) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
case "KS":
|
||||
%type = getWord(%cCond, 1);
|
||||
%ammount = getWord(%cCond, 2);
|
||||
if(%so.killstreakCalls[%dateStr, %type] >= %ammount) {
|
||||
%done = true;
|
||||
}
|
||||
case "KSK":
|
||||
%type = getWord(%cCond, 1);
|
||||
%ammount = getWord(%cCond, 2);
|
||||
if(%so.killstreakKills[%dateStr, %type] >= %ammount) {
|
||||
%done = true;
|
||||
}
|
||||
case "SK":
|
||||
%soloType = getWord(%cCond, 1);
|
||||
%ammount = getWord(%cCond, 2);
|
||||
if(%so.successiveSolo[%dateStr, %soloType] >= %ammount) {
|
||||
%done = true;
|
||||
}
|
||||
case "SKS":
|
||||
%streakType = getWord(%cCond, 1);
|
||||
%ammount = getWord(%cCond, 2);
|
||||
if(%so.successiveStreak[%dateStr, %streakType] >= %ammount) {
|
||||
%done = true;
|
||||
}
|
||||
case "Prestige":
|
||||
%level = getWord(%cCond, 1);
|
||||
if(%client.TWM2Core.officer >= %level) {
|
||||
%done = true;
|
||||
}
|
||||
case "Boss":
|
||||
%name = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%so.bossSlayCount[%name, %dateStr] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
case "Back":
|
||||
%zOrA = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%zOrA $= "Z") {
|
||||
if(%so.zombieBackstabs[%dateStr] >= %amount) {
|
||||
%done = true;
|
||||
%challenge = $Challenges::Challenge[%cID];
|
||||
%cType = trim(getField(%challenge, 0));
|
||||
%cCond = getsubstr(getField(%challenge, 3), 1, strlen(getField(%challenge, 3)));
|
||||
%so = %client.TWM2Controller;
|
||||
%dateStr = formattimestring("yymmdd");
|
||||
//cannot complete the same one twice :P
|
||||
if(%so.completed[%cid, %dateStr]) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
switch$(getWord(%cCond, 0)) {
|
||||
case "E":
|
||||
%killCount = getWord(%cCond, 1);
|
||||
%killDB = getWord(%cCond, 2) $= "A" ? 0 : getWord(%cCond, 2);
|
||||
if(%killDB != 0) {
|
||||
if(%so.PlayerKillCount[%dateStr, %killDB] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.playerBackstabs[%dateStr] >= %amount) {
|
||||
%done = true;
|
||||
else {
|
||||
if(%so.totalPlayerKillCount[%dateStr] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
error("Unknown challenge in parser...");
|
||||
}
|
||||
if(%done) {
|
||||
%cName = getField(%challenge, 1);
|
||||
%CRewd = getField(%challenge, 4);
|
||||
CenterPrint(%client, "CHALLENGE COMPLETED\n"@%cName@"", 3, 3);
|
||||
GainExperience(%client, %cRewd, %cName@" Challenge Completed");
|
||||
recordAction(%client, "CCMP", ""@%cid@"\t1");
|
||||
}
|
||||
case "Z":
|
||||
%killCount = getWord(%cCond, 1);
|
||||
%killedType = getWord(%cCond, 2) $= "A" ? -1 : getWord(%cCond, 2);
|
||||
%killDB = getWord(%cCond, 3) $= "A" ? 0 : getWord(%cCond, 3);
|
||||
if(%killDB != 0) {
|
||||
if(%killedType != -1) {
|
||||
if(%so.ZombieKillCount[%dateStr, %killDB, %killedType] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.ZombieKillCount[%dateStr, %killDB, ""] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%killedType != -1) {
|
||||
if(%so.ZombieKillCount[%dateStr, 0, %killedType] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.totalZombieKillCount[%dateStr] >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
case "HS":
|
||||
%counter = getWord(%cCond, 1);
|
||||
%type = getWord(%cCond, 2) $= "E" ? "E" : "Z";
|
||||
if(%type $= "E") {
|
||||
if(%so.playerHeadshots[%dateStr] >= %counter) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.zombieHeadshots[%dateStr] >= %counter) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
case "KS":
|
||||
%type = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%so.killstreakCalls[%dateStr, %type] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
case "KSK":
|
||||
%type = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%so.killstreakKills[%dateStr, %type] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
case "SK":
|
||||
%soloType = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%so.successiveSolo[%dateStr, %soloType] >= %ammount) {
|
||||
%done = true;
|
||||
}
|
||||
case "SKS":
|
||||
%streakType = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%so.successiveStreak[%dateStr, %streakType] >= %ammount) {
|
||||
%done = true;
|
||||
}
|
||||
case "Horde":
|
||||
%waveNum = getWord(%cCond, 1);
|
||||
if(%so.highestHordeWave[%dateStr] >= %waveNum) {
|
||||
%done = true;
|
||||
}
|
||||
case "HordeWaves":
|
||||
%amount = getWord(%cCond, 1);
|
||||
if(%so.totalHordeWavesCompleted[%dateStr] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
case "Prestige":
|
||||
%level = getWord(%cCond, 1);
|
||||
if(%client.TWM2Core.officer >= %level) {
|
||||
%done = true;
|
||||
}
|
||||
case "Boss":
|
||||
%name = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%so.bossSlayCount[%name, %dateStr] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
case "Back":
|
||||
%zOrA = getWord(%cCond, 1);
|
||||
%amount = getWord(%cCond, 2);
|
||||
if(%zOrA $= "Z") {
|
||||
if(%so.zombieBackstabs[%dateStr] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(%so.playerBackstabs[%dateStr] >= %amount) {
|
||||
%done = true;
|
||||
}
|
||||
}
|
||||
default:
|
||||
error("Unknown challenge in parser...");
|
||||
}
|
||||
if(%done) {
|
||||
%cName = getField(%challenge, 1);
|
||||
%CRewd = getField(%challenge, 4);
|
||||
CenterPrint(%client, "CHALLENGE COMPLETED\n"@%cName@"", 3, 3);
|
||||
GainExperience(%client, %cRewd, %cName@" Challenge Completed");
|
||||
recordAction(%client, "CCMP", ""@%cid@"\t1");
|
||||
}
|
||||
}
|
||||
|
||||
//Check Multi-Completion (handles weekly & monthly challenges)
|
||||
|
|
@ -441,7 +457,7 @@ function checkMultiCompletion(%client, %cID) {
|
|||
%done = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
else {
|
||||
if(getCurrentMonthTotal(%client, ZombieKillCount, 0 SPC %killedType) >= %killCount) {
|
||||
%done = true;
|
||||
}
|
||||
|
|
@ -459,7 +475,7 @@ function checkMultiCompletion(%client, %cID) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case "HS":
|
||||
%counter = getWord(%cCond, 1);
|
||||
%type = getWord(%cCond, 2) $= "E" ? "E" : "Z";
|
||||
|
|
|
|||
|
|
@ -690,18 +690,25 @@ function TWM2Damage(%projectile, %target, %amount, %dType, %damLoc, %type) {
|
|||
if(strStr(%SDB.getClassName(), "Turret") != -1) {
|
||||
if(%SDB.getName() $= "HarbingerGunshipTurret") {
|
||||
%projectile.sourceObject = %projectile.sourceObject.mountobj;
|
||||
%sourceObject = %projectile.sourceObject;
|
||||
%SDB = %sourceObject.getDataBlock();
|
||||
}
|
||||
else if(%SDB.getName() $= "AC130GunshipTurret") {
|
||||
%projectile.sourceObject = %projectile.sourceObject.mountobj;
|
||||
%sourceObject = %projectile.sourceObject;
|
||||
%SDB = %sourceObject.getDataBlock();
|
||||
}
|
||||
else if(%SDB.getName() $= "CentaurTurret") {
|
||||
%projectile.sourceObject = %projectile.sourceObject.source;
|
||||
%sourceObject = %projectile.sourceObject;
|
||||
%SDB = %sourceObject.getDataBlock();
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------
|
||||
//vehicle kill checking
|
||||
//NOTE: THIS DOESN'T GO HERE!!!
|
||||
if(strStr(%SDB.getClassName(), "Vehicle") != -1) {
|
||||
if(%target.isPlayer() && %target.getState() $= "dead") {
|
||||
if((%target.getType() & ($TypeMasks::PlayerObjectType)) && %target.getState() $= "dead") {
|
||||
%pl = %sourceObject.getMountNodeObject(0); //the pilot
|
||||
%cl = %pl.client;
|
||||
if(%cl !$= "") {
|
||||
|
|
@ -717,9 +724,7 @@ function TWM2Damage(%projectile, %target, %amount, %dType, %damLoc, %type) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if(!%target.isAllyBot) {
|
||||
UpdateVehicleKillFile(%cl, %SDB.getName());
|
||||
}
|
||||
UpdateVehicleKillFile(%cl, %SDB.getName());
|
||||
//
|
||||
if(%TDB $= "DemonMotherZombieArmor" && %SDB $= "CentaurVehicle") {
|
||||
%cl.CDLKills++;
|
||||
|
|
|
|||
|
|
@ -14,11 +14,9 @@ function GetWeaponChallenges(%Image, %number) {
|
|||
|
||||
function UpdateVehicleKillFile(%client, %VDB) {
|
||||
if(%VDB $= "") { //Phantom139: Ha!! No more invalid Files!!!
|
||||
//echo("No Vehicle Datablock");
|
||||
return;
|
||||
}
|
||||
if(%client $= "") { //Phantom139: Ha! No More UE on Invalid File
|
||||
//echo("No Client");
|
||||
return;
|
||||
}
|
||||
%file = ""@$TWM::RanksDirectory@"/"@%client.guid@"/Saved.TWMSave";
|
||||
|
|
|
|||
Loading…
Reference in a new issue