Fixed Trevor's Internal Tags, Implemented New Challenge Menu Code

Fixed the internal tags for Lordranius Trevor, Grapple Hook balance,
round 2, implemented automenu system for challenges (No more mega files,
yay!)
This commit is contained in:
Robert Fritzen 2017-06-30 13:24:52 -05:00
parent fee3eb044b
commit b316f2fdbe
16 changed files with 1031 additions and 2211 deletions

View file

@ -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;

View file

@ -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 {

View file

@ -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;

View file

@ -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");
}

View file

@ -35,7 +35,7 @@ function InitiateBoss(%Boss, %name) {
%print = "<color:FF0000>BOSS ALERT \n LORD VARDISON HAS ENTERED HIS SECOND FORM";
case "Vardison3":
%print = "<color:FF0000>BOSS ALERT \n LORD VARDISON HAS ENTERED HIS FINAL FORM";
case "Trebor":
case "Trevor":
%print = "<color:FF0000>BOSS BATTLE \n LORDRANIUS TREVOR";
case "Stormrider":
%print = "<color:FF0000>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");

File diff suppressed because it is too large Load diff

View file

@ -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);

View file

@ -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.");

View file

@ -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)) {

File diff suppressed because it is too large Load diff

View file

@ -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, "<a:gamelink\tOrderMis\t"@%mission@"\t2>Order Mission</a>");
messageClient( %client, 'SetLineHud', "", %tag, %index, "<a:gamelink\tOrderMis\t"@%mission@"\t2>Order This Operation</a>");
%index++;
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tOrderMisSub\t1>Select A Different Mission</a>');
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tOrderMisSub\t1>Select A Different Operation</a>');
%index++;
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tGTP\t1>Return To Main Menu</a>');
%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, '<a:gamelink\tOrderMisSub\t1>Order A Mission</a>');
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tOrderMisSub\t1>Order An Operation</a>');
%index++;
}
messageClient( %client, 'SetLineHud', "", %tag, %index, '');
%index++;
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tJoinMis\t1>Join The Mission About To Begin</a>');
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tJoinMis\t1>Join The Operation About To Begin</a>');
%index++;
messageClient( %client, 'SetLineHud', "", %tag, %index, '<a:gamelink\tGTP\t1>Return To Main Menu</a>');
%index++;
@ -640,7 +640,7 @@ function ConstructionGame::processGameLink(%game, %client, %arg1, %arg2, %arg3,
%index++;
}
else {
messageClient( %client, 'SetLineHud', "", %tag, %index, 'PGD Connect Status: <color:33FF00>Connected</color>');
messageClient( %client, 'SetLineHud', "", %tag, %index, 'PGD Connect Status: <color:33FF00>Connected');
%index++;
}
messageClient( %client, 'SetLineHud', "", %tag, %index, "");

View file

@ -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

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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";

View file

@ -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