mirror of
https://github.com/Ragora/T2-BoL.git
synced 2026-01-19 19:14:45 +00:00
Did stuff.
This commit is contained in:
parent
09f43122e6
commit
8c96cba3e1
3564
T2ScriptFunctionList.txt
Normal file
3564
T2ScriptFunctionList.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -88,9 +88,10 @@ exec("scripts/gameCanvas.cs");
|
|||
exec("scripts/centerPrint.cs");
|
||||
exec("scripts/CreditsGui.cs");
|
||||
exec("serverControl.cs");
|
||||
|
||||
//Init Shared & Client scripts
|
||||
exec("scripts/modScripts/shared/initialize.cs");
|
||||
exec("scripts/modScripts/client/initialize.cs");
|
||||
exec("scripts/modScripts/shared/initialise.cs");
|
||||
exec("scripts/modScripts/client/initialise.cs");
|
||||
if (isDemo())
|
||||
exec("scripts/DemoEndGui.cs");
|
||||
exec("scripts/ChatGui.cs");
|
||||
|
|
@ -129,14 +130,14 @@ else if($LaunchMode $= "NavBuild")
|
|||
}
|
||||
else if($LaunchMode $= "SpnBuild")
|
||||
{
|
||||
enableWinConsole(true);
|
||||
enableWinConsole(true);
|
||||
$Host::Dedicated = true;
|
||||
$ServerName = $Host::GameName;
|
||||
$Host::MissionType = $missionType;
|
||||
$Host::Map = $Mission;
|
||||
setNetPort($Host::Port);
|
||||
CreateServer($Mission, $missionType);
|
||||
return;
|
||||
$ServerName = $Host::GameName;
|
||||
$Host::MissionType = $missionType;
|
||||
$Host::Map = $Mission;
|
||||
setNetPort($Host::Port);
|
||||
CreateServer($Mission, $missionType);
|
||||
return;
|
||||
}
|
||||
|
||||
function recordMovie(%movieName, %fps)
|
||||
|
|
@ -668,18 +669,18 @@ function DispatchLaunchMode()
|
|||
if ($Host::Dedicated) //Server doesn't need to initialize client Startup
|
||||
return;
|
||||
|
||||
//If we're offline, check if the user has a LAN account setup..
|
||||
if (!$PlayingOnline && $Pref::LANAccount::Name $= "" || $Pref::LANAccount::PassWord $= "" && $Pref::FirstRan)
|
||||
canvas.pushDialog(LANAccountCreationDLG);
|
||||
//If we're offline, check if the user has a LAN account setup..
|
||||
if (!$PlayingOnline && $Pref::LANAccount::Name $= "" || $Pref::LANAccount::PassWord $= "" && $Pref::FirstRan)
|
||||
canvas.pushDialog(LANAccountCreationDLG);
|
||||
|
||||
if (!$Pref::FirstRan) //Technically the gameMode is included, but the BETA maps are not there
|
||||
{
|
||||
$Pref::FirstRan = true;
|
||||
if (!$PlayingOnline && $Pref::LANAccount::Name $= "" || $Pref::LANAccount::PassWord $= "")
|
||||
messageBoxOk("WARNING","This version of T2Bol ("@$ModVersionText@") does not include the RPG gamemode. If possible, please update the mod.",canvas.pushDialog(LANAccountCreationDLG));
|
||||
else
|
||||
messageBoxOk("WARNING","This version of T2Bol ("@$ModVersionText@") does not include the RPG gamemode. If possible, please update the mod.");
|
||||
}
|
||||
if (!$Pref::FirstRan) //Technically the gameMode is included, but the BETA maps are not there
|
||||
{
|
||||
$Pref::FirstRan = true;
|
||||
if (!$PlayingOnline && $Pref::LANAccount::Name $= "" || $Pref::LANAccount::PassWord $= "")
|
||||
messageBoxOk("WARNING","This version of T2Bol ("@$ModVersionText@") does not include the RPG gamemode. If possible, please update the mod.",canvas.pushDialog(LANAccountCreationDLG));
|
||||
else
|
||||
messageBoxOk("WARNING","This version of T2Bol ("@$ModVersionText@") does not include the RPG gamemode. If possible, please update the mod.");
|
||||
}
|
||||
}
|
||||
|
||||
// if($LaunchMode !$= "Demo")
|
||||
|
|
|
|||
8
data/Info.dat
Normal file
8
data/Info.dat
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
Info.dat
|
||||
Information about this version of BoL used by servers and clients (pretty much compatability checks and updates)
|
||||
Copyright (c) 2012 The DarkDragonDX
|
||||
|
||||
[Version]
|
||||
Major = 1;
|
||||
Minor = 1;
|
||||
Codename = Ragora;
|
||||
|
|
@ -2,6 +2,9 @@
|
|||
keepCorpses = true;
|
||||
maxCorpses = 6;
|
||||
|
||||
[PawsAreNice]
|
||||
Indeed = true;
|
||||
|
||||
[Server]
|
||||
SpaceServer = "192.168.1.5";
|
||||
EarthServer = "192.168.1.5";
|
||||
|
|
@ -3,7 +3,9 @@ $Data::Ammo1836101295_0_Earth = "100";
|
|||
$Data::Ammo1836101295_1_AlphaSector = "15";
|
||||
$Data::Ammo1836101295_1_Earth = "15";
|
||||
$Data::Ammo2003098_1_Earth = "15";
|
||||
$Data::Ammo2003098_1_rpg_new = "17";
|
||||
$Data::Ammo2003098_2_Earth = "100";
|
||||
$Data::Ammo2003098_2_rpg_new = "100";
|
||||
$Data::Ammo427694980_1_AlphaSector = "15";
|
||||
$Data::Ammo427694980_1_Earth = "12";
|
||||
$Data::Ammo427694980_2_AlphaSector = "100";
|
||||
|
|
@ -11,13 +13,16 @@ $Data::Ammo427694980_2_Earth = "0";
|
|||
$Data::Armor1836101295_AlphaSector = "Light";
|
||||
$Data::Armor1836101295_Earth = "Light";
|
||||
$Data::Armor2003098_Earth = "LIGHT";
|
||||
$Data::Armor2003098_rpg_new = "LIGHT";
|
||||
$Data::Armor427694980_AlphaSector = "LIGHT";
|
||||
$Data::Armor427694980_Earth = "LIGHT";
|
||||
$Data::Caps = 0;
|
||||
$Data::Caps = 3;
|
||||
$Data::Caps0 = 0;
|
||||
$Data::Caps1682851961 = 0;
|
||||
$Data::Caps1836101295 = 0;
|
||||
$Data::Caps2003098 = 0;
|
||||
$Data::Caps2003098 = 5;
|
||||
$Data::Caps2485526 = 0;
|
||||
$Data::Caps3738647 = 0;
|
||||
$Data::Caps427694980 = 2;
|
||||
$Data::Caps960691562 = 0;
|
||||
$Data::ClanCount = 3;
|
||||
|
|
@ -42,24 +47,37 @@ $Data::ClanTag0 = "|-{DRK}-|";
|
|||
$Data::ClanTag1 = "|-{DRK}-|";
|
||||
$Data::ClanTag2 = "-|{VPR}|-";
|
||||
$Data::Client0 = "427694980";
|
||||
$Data::ClientCount = 3;
|
||||
$Data::ClientCount = 4;
|
||||
$Data::ClientGUID1 = "2003098";
|
||||
$Data::ClientGUID2 = "2485526";
|
||||
$Data::ClientGUID3 = "0";
|
||||
$Data::ClientName0 = "Dark Dragon DX";
|
||||
$Data::ClientName1 = "DarkDragonDX";
|
||||
$Data::ClientName2 = "Dayuppy";
|
||||
$Data::ClientName3 = "DarkDragonDX";
|
||||
$Data::DamageFlash1836101295_AlphaSector = "0";
|
||||
$Data::DamageFlash1836101295_Earth = "0";
|
||||
$Data::DamageFlash2003098_Earth = "0";
|
||||
$Data::DamageFlash2003098_rpg_new = "0";
|
||||
$Data::DamageFlash427694980_AlphaSector = "0";
|
||||
$Data::DamageFlash427694980_Earth = "0";
|
||||
$Data::Deaths = 371;
|
||||
$Data::Deaths = 10262;
|
||||
$Data::Deaths0 = 0;
|
||||
$Data::Deaths1682851961 = 4;
|
||||
$Data::Deaths1836101295 = 16;
|
||||
$Data::Deaths2003098 = 3;
|
||||
$Data::Deaths2003098 = 276;
|
||||
$Data::Deaths2139104 = 1;
|
||||
$Data::Deaths2450675 = 3;
|
||||
$Data::Deaths2485526 = 4;
|
||||
$Data::Deaths2544511 = 1;
|
||||
$Data::Deaths3119044 = 5;
|
||||
$Data::Deaths3392146 = 38;
|
||||
$Data::Deaths3637691 = 4;
|
||||
$Data::Deaths3738647 = 11;
|
||||
$Data::Deaths3819266 = 9;
|
||||
$Data::Deaths427694980 = 12;
|
||||
$Data::Deaths960691562 = 1;
|
||||
$Data::EMail::Contents0_1 = "Welcome to T2Bol, try not to die.";
|
||||
$Data::EMail::Contents2003098_1 = "Welcome to T2Bol, try not to die.";
|
||||
$Data::EMail::Contents2485526_1 = "Welcome to T2Bol, try not to die.";
|
||||
$Data::Email::Contents427694980_ = "Hey.. does it work?";
|
||||
|
|
@ -84,10 +102,13 @@ $Data::Email::Contents427694980_9 = "blah";
|
|||
$Data::EMail::Contents_ = "Hey, this is awesome, right?";
|
||||
$Data::EMail::Contents_1 = "Wootage Test. Fantastic email system ya\t got here.";
|
||||
$Data::EMail::Contents_2 = "Works?";
|
||||
$Data::EMail::Count = 3;
|
||||
$Data::EMail::Contents_3 = "Free stuff! o-o";
|
||||
$Data::EMail::Count = 4;
|
||||
$Data::EMail::Count0 = 1;
|
||||
$Data::EMail::Count2003098 = 1;
|
||||
$Data::EMail::Count2485526 = 1;
|
||||
$Data::Email::Count427694980 = 19;
|
||||
$Data::EMail::Date0_1 = "Saturday, July 28, 2012 @ 08:32 PM";
|
||||
$Data::EMail::Date2003098_1 = "Monday, March 29, 2010 @ 03:42 PM";
|
||||
$Data::EMail::Date2485526_1 = "Tuesday, October 26, 2010 @ 03:25 AM";
|
||||
$Data::Email::Date427694980_ = "Wednesday, March 24, 2010 amt 12:43 AM";
|
||||
|
|
@ -112,6 +133,8 @@ $Data::Email::Date427694980_9 = "Wednesday, March 24, 2010 @ 10:50 PM";
|
|||
$Data::EMail::Date_ = "Tuesday, October 26, 2010 @ 03:30 AM";
|
||||
$Data::EMail::Date_1 = "Tuesday, October 26, 2010 @ 03:33 AM";
|
||||
$Data::EMail::Date_2 = "Tuesday, October 26, 2010 @ 04:01 AM";
|
||||
$Data::EMail::Date_3 = "Thursday, August 02, 2012 @ 10:08 PM";
|
||||
$Data::EMail::Sender0_1 = "The Comittee";
|
||||
$Data::EMail::Sender2003098_1 = "The Comittee";
|
||||
$Data::EMail::Sender2485526_1 = "The Comittee";
|
||||
$Data::Email::Sender427694980_ = "\x10\c7DRK\c6Dark Dragon DX\x11";
|
||||
|
|
@ -136,113 +159,169 @@ $Data::Email::Sender427694980_9 = "\x10\c7|-{DRK}-|\c6Dark Dragon DX\x11";
|
|||
$Data::EMail::Sender_ = "DarkDragonDX";
|
||||
$Data::EMail::Sender_1 = "Dayuppy";
|
||||
$Data::EMail::Sender_2 = "\x10\c7-|{VPR}|-\c6DarkDragonDX\x11";
|
||||
$Data::EMail::Sender_3 = "\x10\c7-|{VPR}|-\c6DarkDragonDX\x11";
|
||||
$Data::EMail::Title0_1 = "Welcome";
|
||||
$Data::EMail::Title2003098_1 = "Welcome";
|
||||
$Data::EMail::Title2485526_1 = "Welcome";
|
||||
$Data::Email::Title427694980_ = "Test";
|
||||
$Data::EMail::Title_ = "Hey";
|
||||
$Data::EMail::Title_1 = "Woot";
|
||||
$Data::EMail::Title_2 = "Test";
|
||||
$Data::EMail::Title_3 = "Paws";
|
||||
$Data::EMailCount427694980 = 10;
|
||||
$Data::Energy1836101295_AlphaSector = "34.2759";
|
||||
$Data::Energy1836101295_Earth = "60";
|
||||
$Data::Energy2003098_Earth = "49.6121";
|
||||
$Data::Energy2003098_Earth = "60";
|
||||
$Data::Energy2003098_rpg_new = "46.552";
|
||||
$Data::Energy427694980_AlphaSector = "60";
|
||||
$Data::Energy427694980_Earth = "60";
|
||||
$Data::FlagReturns = 19;
|
||||
$Data::FlagReturns = 42;
|
||||
$Data::FlagReturns0 = 0;
|
||||
$Data::FlagReturns1682851961 = 0;
|
||||
$Data::FlagReturns1836101295 = 0;
|
||||
$Data::FlagReturns2003098 = 0;
|
||||
$Data::FlagReturns2003098 = 5;
|
||||
$Data::FlagReturns2485526 = 0;
|
||||
$Data::FlagReturns3738647 = 0;
|
||||
$Data::FlagReturns427694980 = 0;
|
||||
$Data::FlagReturns960691562 = 0;
|
||||
$Data::Headshots = 0;
|
||||
$Data::Headshots0 = 0;
|
||||
$Data::Headshots1682851961 = 0;
|
||||
$Data::Headshots1836101295 = 0;
|
||||
$Data::Headshots2003098 = 0;
|
||||
$Data::Headshots2485526 = 0;
|
||||
$Data::Headshots3738647 = 0;
|
||||
$Data::Headshots427694980 = 0;
|
||||
$Data::Headshots960691562 = 0;
|
||||
$Data::Health1836101295_AlphaSector = "0";
|
||||
$Data::Health1836101295_Earth = "0.0139489";
|
||||
$Data::Health2003098_Earth = "0.133059";
|
||||
$Data::Health2003098_Earth = "0.499071";
|
||||
$Data::Health2003098_rpg_new = "0.617923";
|
||||
$Data::Health427694980_AlphaSector = "0";
|
||||
$Data::Health427694980_Earth = "0.645";
|
||||
$Data::Hits = 13299;
|
||||
$Data::Hits = 133656;
|
||||
$Data::Hits0 = 0;
|
||||
$Data::Hits1682851961 = 1122;
|
||||
$Data::Hits1836101295 = 652;
|
||||
$Data::Hits2003098 = 147;
|
||||
$Data::Hits2003098 = 4572;
|
||||
$Data::Hits2139104 = 23;
|
||||
$Data::Hits2450675 = 30;
|
||||
$Data::Hits2485526 = 327;
|
||||
$Data::Hits2544511 = 227;
|
||||
$Data::Hits2886178 = 13;
|
||||
$Data::Hits3119044 = 271;
|
||||
$Data::Hits3392146 = 395;
|
||||
$Data::Hits3637691 = 112;
|
||||
$Data::Hits3738647 = 75;
|
||||
$Data::Hits3819266 = 63;
|
||||
$Data::Hits427694980 = 867;
|
||||
$Data::Hits960691562 = 33;
|
||||
$Data::IsInClan1836101295 = 1;
|
||||
$Data::IsInClan2003098 = 1;
|
||||
$Data::IsInClan427694980 = 1;
|
||||
$Data::IsRegistered = 1;
|
||||
$Data::IsRegistered0 = 1;
|
||||
$Data::IsRegistered1682851961 = 1;
|
||||
$Data::IsRegistered1836101295 = 1;
|
||||
$Data::IsRegistered2003098 = 1;
|
||||
$Data::IsRegistered2485526 = 1;
|
||||
$Data::IsRegistered3738647 = 1;
|
||||
$Data::IsRegistered427694980 = 1;
|
||||
$Data::IsRegistered960691562 = 1;
|
||||
$Data::IsRPGReady0 = 1;
|
||||
$Data::IsRPGReady1836101295 = 1;
|
||||
$Data::IsRPGReady2003098 = 1;
|
||||
$Data::IsRPGReady2485526 = 1;
|
||||
$Data::IsRPGReady427694980 = 1;
|
||||
$Data::Kills = 235;
|
||||
$Data::Kills = 9706;
|
||||
$Data::Kills0 = 0;
|
||||
$Data::Kills1682851961 = 30;
|
||||
$Data::Kills1836101295 = 54;
|
||||
$Data::Kills2003098 = 23;
|
||||
$Data::Kills2003098 = 636;
|
||||
$Data::Kills2139104 = 1;
|
||||
$Data::Kills2450675 = 1;
|
||||
$Data::Kills2485526 = 18;
|
||||
$Data::Kills2544511 = 13;
|
||||
$Data::Kills3119044 = 84;
|
||||
$Data::Kills3392146 = 32;
|
||||
$Data::Kills3637691 = 12;
|
||||
$Data::Kills3738647 = 5;
|
||||
$Data::Kills3819266 = 5;
|
||||
$Data::Kills427694980 = 76;
|
||||
$Data::Kills960691562 = 13;
|
||||
$Data::Lost = 0;
|
||||
$Data::Lost0 = 0;
|
||||
$Data::Lost1682851961 = 0;
|
||||
$Data::Lost1836101295 = 1;
|
||||
$Data::Lost2003098 = 0;
|
||||
$Data::Lost2485526 = 0;
|
||||
$Data::Lost3738647 = 0;
|
||||
$Data::Lost427694980 = 0;
|
||||
$Data::Lost960691562 = 0;
|
||||
$Data::Misses = 0;
|
||||
$Data::Misses0 = 0;
|
||||
$Data::Misses1682851961 = 0;
|
||||
$Data::Misses1836101295 = 0;
|
||||
$Data::Misses2003098 = 0;
|
||||
$Data::Misses2485526 = 0;
|
||||
$Data::Misses3738647 = 0;
|
||||
$Data::Misses427694980 = 0;
|
||||
$Data::Misses960691562 = 0;
|
||||
$Data::Money0_Earth = 0;
|
||||
$Data::Money1836101295_AlphaSector = "800";
|
||||
$Data::Money2003098_Earth = "0";
|
||||
$Data::Money2485526_Earth = 0;
|
||||
$Data::Money427694980_Earth = "0";
|
||||
$Data::Pack1836101295_AlphaSector = "EnergyPack";
|
||||
$Data::Pack1836101295_Earth = "MiningTool";
|
||||
$Data::Pack2003098_Earth = "MiningTool";
|
||||
$Data::Pack427694980_Earth = "MiningTool";
|
||||
$Data::Race0 = "Draakan";
|
||||
$Data::Race1836101295 = "Draakan";
|
||||
$Data::Race2003098 = "Draakan";
|
||||
$Data::Race2485526 = "Draakan";
|
||||
$Data::Race427694980 = "Draakan";
|
||||
$Data::RepairKits1836101295_AlphaSector = "1";
|
||||
$Data::RepairKits1836101295_Earth = "1";
|
||||
$Data::RepairKits2003098_Earth = "1";
|
||||
$Data::RepairKits2003098_Earth = "0";
|
||||
$Data::RepairKits2003098_rpg_new = "0";
|
||||
$Data::RepairKits427694980_AlphaSector = "1";
|
||||
$Data::RepairKits427694980_Earth = "0";
|
||||
$Data::Rounds1682851961_SlapDashSV = 3;
|
||||
$Data::Rounds1836101295_SlapDashSV = 1;
|
||||
$Data::Rounds2003098_SlapDashSV = 3;
|
||||
$Data::Rounds2003098_KatabaticSV = 6;
|
||||
$Data::Rounds2003098_SlapDashSV = 6;
|
||||
$Data::Rounds2485526_SlapDashSV = 3;
|
||||
$Data::Rounds2544511_SlapDashSV = 3;
|
||||
$Data::Rounds3119044_SlapDashSV = 3;
|
||||
$Data::Rounds3392146_SlapDashSV = 1;
|
||||
$Data::Rounds3637691_SlapDashSV = 4;
|
||||
$Data::Rounds427694980_KatabaticSV = 1;
|
||||
$Data::Rounds427694980_SlapdashSV = 2;
|
||||
$Data::Rounds960691562_KatabaticSV = 1;
|
||||
$Data::Rounds960691562_SlapDashSV = 2;
|
||||
$Data::Rounds_KatabaticSV = 5;
|
||||
$Data::Rounds_SlapDashSV = 1;
|
||||
$Data::Sex0 = "A";
|
||||
$Data::Sex1836101295 = "A";
|
||||
$Data::Sex2003098 = "A";
|
||||
$Data::Sex2485526 = "A";
|
||||
$Data::Sex427694980 = "A";
|
||||
$Data::Shots = 17476;
|
||||
$Data::Shots = 167489;
|
||||
$Data::Shots0 = 0;
|
||||
$Data::Shots1682851961 = 1744;
|
||||
$Data::Shots1836101295 = 780;
|
||||
$Data::Shots2003098 = 161;
|
||||
$Data::Shots2003098 = 5964;
|
||||
$Data::Shots2139104 = 24;
|
||||
$Data::Shots2450675 = 36;
|
||||
$Data::Shots2485526 = 450;
|
||||
$Data::Shots2544511 = 293;
|
||||
$Data::Shots2886178 = 15;
|
||||
$Data::Shots3119044 = 471;
|
||||
$Data::Shots3392146 = 476;
|
||||
$Data::Shots3637691 = 161;
|
||||
$Data::Shots3738647 = 99;
|
||||
$Data::Shots3819266 = 63;
|
||||
$Data::Shots427694980 = 1258;
|
||||
$Data::Shots960691562 = 37;
|
||||
$Data::ShouldApply = 0;
|
||||
|
|
@ -251,33 +330,47 @@ $Data::ShouldApply1836101295_AlphaSector = 1;
|
|||
$Data::ShouldApply1836101295_Earth = 1;
|
||||
$Data::ShouldApply2003098 = 0;
|
||||
$Data::ShouldApply2003098_Earth = 1;
|
||||
$Data::ShouldApply2003098_rpg_new = 1;
|
||||
$Data::ShouldApply2485526 = 0;
|
||||
$Data::ShouldApply2886178 = 0;
|
||||
$Data::ShouldApply3119044 = 0;
|
||||
$Data::ShouldApply3392146 = 0;
|
||||
$Data::ShouldApply3434461 = 0;
|
||||
$Data::ShouldApply427694980 = 0;
|
||||
$Data::ShouldApply427694980_AlphaSector = 1;
|
||||
$Data::ShouldApply427694980_Earth = 1;
|
||||
$Data::Steel0_Earth = 0;
|
||||
$Data::Steel1836101295_AlphaSector = "0.182";
|
||||
$Data::Steel1836101295_Earth = "0.044";
|
||||
$Data::Steel2485526_Earth = 0;
|
||||
$Data::Suicides = 29;
|
||||
$Data::Suicides = 1205;
|
||||
$Data::Suicides0 = 0;
|
||||
$Data::Suicides1682851961 = 0;
|
||||
$Data::Suicides1836101295 = 1;
|
||||
$Data::Suicides2003098 = 0;
|
||||
$Data::Suicides2003098 = 27;
|
||||
$Data::Suicides2450675 = 2;
|
||||
$Data::Suicides2485526 = 1;
|
||||
$Data::Suicides3119044 = 3;
|
||||
$Data::Suicides3392146 = 9;
|
||||
$Data::Suicides3738647 = 1;
|
||||
$Data::Suicides427694980 = 8;
|
||||
$Data::Suicides960691562 = 0;
|
||||
$Data::Transform1836101295_AlphaSector = "-309.232 334.187 309.913 0 0 1 0.667341";
|
||||
$Data::Transform1836101295_Earth = "-370.341 851.922 68.7601 0 0 1 1.14368";
|
||||
$Data::Transform2003098_Earth = "-154.193 368.528 78.6733 0 0 -1 0.509952";
|
||||
$Data::Transform2003098_Earth = "-1060.18 469.128 92.4371 0 0 -0.99993 0.0256617";
|
||||
$Data::Transform2003098_rpg_new = "-32.9661 334.381 93.2455 0 0 1 3.65726";
|
||||
$Data::Transform427694980_AlphaSector = "82.863 -653.983 186.762 0 0 -1 0.916839";
|
||||
$Data::Transform427694980_Earth = "-1023.9 512.742 92.3865 0 0 1 2.39569";
|
||||
$Data::Velocity1836101295_AlphaSector = "15.4637 13.9548 3.02164";
|
||||
$Data::Velocity1836101295_Earth = "0 0 0";
|
||||
$Data::Velocity2003098_Earth = "0 0 0";
|
||||
$Data::Velocity2003098_rpg_new = "12.4202 -23.2183 1.94154";
|
||||
$Data::Velocity427694980_AlphaSector = "0.82034 0.175601 -33.5394";
|
||||
$Data::Velocity427694980_Earth = "0 0 0";
|
||||
$Data::WasInVehicle1836101295_AlphaSector = 0;
|
||||
$Data::WasInVehicle1836101295_Earth = 0;
|
||||
$Data::WasInVehicle2003098_Earth = 0;
|
||||
$Data::WasInVehicle2003098_rpg_new = 0;
|
||||
$Data::WasInVehicle427694980_AlphaSector = 0;
|
||||
$Data::WasInVehicle427694980_Earth = 0;
|
||||
$Data::Weapon1836101295_0_AlphaSector = "Chaingun";
|
||||
|
|
@ -290,9 +383,14 @@ $Data::Weapon1836101295_3_AlphaSector = "TargetingLaser";
|
|||
$Data::Weapon1836101295_3_Earth = "TargetingLaser";
|
||||
$Data::Weapon1836101295_4_AlphaSector = "TargetingLaser";
|
||||
$Data::Weapon2003098_0_Earth = "Blaster";
|
||||
$Data::Weapon2003098_0_rpg_new = "Blaster";
|
||||
$Data::Weapon2003098_1_Earth = "Disc";
|
||||
$Data::Weapon2003098_1_rpg_new = "Disc";
|
||||
$Data::Weapon2003098_2_Earth = "Chaingun";
|
||||
$Data::Weapon2003098_2_rpg_new = "Chaingun";
|
||||
$Data::Weapon2003098_3_Earth = "TargetingLaser";
|
||||
$Data::Weapon2003098_4_Earth = "TargetingLaser";
|
||||
$Data::Weapon2003098_4_rpg_new = "TargetingLaser";
|
||||
$Data::Weapon427694980_0_AlphaSector = "Blaster";
|
||||
$Data::Weapon427694980_0_Earth = "Blaster";
|
||||
$Data::Weapon427694980_1_AlphaSector = "Disc";
|
||||
|
|
@ -304,12 +402,15 @@ $Data::Weapon427694980_4_Earth = "TargetingLaser";
|
|||
$Data::Whiteout1836101295_AlphaSector = "0";
|
||||
$Data::Whiteout1836101295_Earth = "0";
|
||||
$Data::Whiteout2003098_Earth = "0";
|
||||
$Data::Whiteout2003098_rpg_new = "0";
|
||||
$Data::Whiteout427694980_AlphaSector = "0";
|
||||
$Data::Whiteout427694980_Earth = "0";
|
||||
$Data::Won = 0;
|
||||
$Data::Won0 = 0;
|
||||
$Data::Won1682851961 = 0;
|
||||
$Data::Won1836101295 = 0;
|
||||
$Data::Won2003098 = 0;
|
||||
$Data::Won2485526 = 0;
|
||||
$Data::Won3738647 = 0;
|
||||
$Data::Won427694980 = 0;
|
||||
$Data::Won960691562 = 0;
|
||||
|
|
|
|||
15
data/bolContent/pdaApplications/Clan Management.cs
Normal file
15
data/bolContent/pdaApplications/Clan Management.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// Clan Management.cs
|
||||
// The clan management system for BoL RPg Mod.
|
||||
// Copyright (c) 2012 The DarkDragonDX
|
||||
//==============================================================================
|
||||
|
||||
// Entry Point (called when the client first clicks it)
|
||||
function EMailClient::main(%this, %client)
|
||||
{
|
||||
}
|
||||
|
||||
// action function, it's called when the client navigates.
|
||||
function EMailClient::action(%this, %client, %page)
|
||||
{
|
||||
}
|
||||
8
data/bolContent/pdaApplications/Clan Management.dat
Normal file
8
data/bolContent/pdaApplications/Clan Management.dat
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
; Clan Management.dat
|
||||
; Configuration file for the clan management application
|
||||
; Copyright (c) 2012 The DarkDragonDX
|
||||
|
||||
[Application]
|
||||
Name = "Clan Management";
|
||||
ApplicationInstance = "ClanManagement"; Should not be duplicated; even if the mod could resolve duplication issues in realtime.
|
||||
Description = "The clan management system for BoL RPg Mod.";
|
||||
15
data/bolContent/pdaApplications/EMail.cs
Normal file
15
data/bolContent/pdaApplications/EMail.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// EMail.cs
|
||||
// An E-Mail client for the Birth of Legend RPG Mod.
|
||||
// Copyright (c) 2012 The DarkDragonDX
|
||||
//==============================================================================
|
||||
|
||||
// Entry Point (called when the client first clicks it)
|
||||
function EMailClient::main(%this, %client)
|
||||
{
|
||||
}
|
||||
|
||||
// action function, it's called when the client navigates.
|
||||
function EMailClient::action(%this, %client, %page)
|
||||
{
|
||||
}
|
||||
8
data/bolContent/pdaApplications/EMail.dat
Normal file
8
data/bolContent/pdaApplications/EMail.dat
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
; Email.dat
|
||||
; Configuration file for the BoL E-Mail client
|
||||
; Copyright (c) 2012 The DarkDragonDX
|
||||
|
||||
[Application]
|
||||
Name = "E-Mail";
|
||||
ApplicationInstance = "EMailClient"; Should not be duplicated; even if the mod could resolve duplication issues in realtime.
|
||||
Description = "An E-Mail client for the Birth of Legend RPG Mod.";
|
||||
20
data/bolContent/pdaApplications/Save.cs
Normal file
20
data/bolContent/pdaApplications/Save.cs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// Save.cs
|
||||
// The PDA Save function for BoL RPG mod.
|
||||
// Copyright (c) 2012 The DarkDragonDX
|
||||
//==============================================================================
|
||||
|
||||
// Entry Point (called when the client first clicks it)
|
||||
function EMailClient::main(%this, %client)
|
||||
{
|
||||
}
|
||||
|
||||
// action function, it's called when the client navigates.
|
||||
function EMailClient::action(%this, %client, %page)
|
||||
{
|
||||
}
|
||||
|
||||
// exit function, it's called when the client exits (returns to PDAMain)
|
||||
function EMailClient::exit(%this, %client, %page)
|
||||
{
|
||||
}
|
||||
9
data/bolContent/pdaApplications/Save.dat
Normal file
9
data/bolContent/pdaApplications/Save.dat
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
; Save.dat
|
||||
; The PDA Save function for BoL RPG mod.
|
||||
; Copyright (c) 2012 The DarkDragonDX
|
||||
|
||||
[Application]
|
||||
Name = "Save";
|
||||
ForceInstall = true; Determines if this is in the PDA by default and cannot be removed.
|
||||
ApplicationInstance = "ClanManagement"; Should not be duplicated; even if the mod could resolve duplication issues in realtime.
|
||||
Description = "The PDA Save function for BoL RPG mod.";
|
||||
33
data/campaigns/Tribes 2.dat
Normal file
33
data/campaigns/Tribes 2.dat
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
Tribes 2.dat
|
||||
Tribes 2 Campaign Configuration
|
||||
Copyright (c) 2012 The DarkDragonDX
|
||||
|
||||
[Campaign]
|
||||
Training = Training;
|
||||
Mission1 = Training1;
|
||||
MissionText1 = Charybdis;
|
||||
Mission2 = Training2;
|
||||
MissionText2 = Sehrganda Prime;
|
||||
Mission3 = Training3;
|
||||
MissionText3 = Ymir;
|
||||
Mission4 = Training4;
|
||||
MissionText4 = Bloodjewel;
|
||||
Mission5 = Training5;
|
||||
MissionText5 = Shi-Draconis Alpha;
|
||||
MissionCount = 5;
|
||||
Name = Tribes 2;
|
||||
|
||||
[Settings]
|
||||
Name = Lone Wolf;
|
||||
TeamName = Star Wolf;
|
||||
Race = Human;
|
||||
Sex = Male;
|
||||
Voice = Male1;
|
||||
VoicePitch = 1;
|
||||
Skin = SWolf;
|
||||
EnemySkin = Horde;
|
||||
EnemyName = Horde;
|
||||
PlayerTeam = 1;
|
||||
EnemyTeam = 2;
|
||||
StartLives = 3;
|
||||
EnemyRace = BioDerm;
|
||||
11
data/encyclopedia/Encyclopedia.conf
Normal file
11
data/encyclopedia/Encyclopedia.conf
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
Encyclopedia.conf
|
||||
Configurations for the Encyclopedia
|
||||
Copyright (c) 2012 The DarkDragonDX
|
||||
|
||||
[Config]
|
||||
Entry0 = "Races";
|
||||
Entry1 = "Vehicles";
|
||||
Entry2 = "Packs";
|
||||
Entry3 = "Factions";
|
||||
Entry4 = "Weapons";
|
||||
EncryCount = 5;
|
||||
5
data/encyclopedia/characters/Beast.txt
Normal file
5
data/encyclopedia/characters/Beast.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Beast
|
||||
<font:univers condensed:23>Race: <a:select-Races-BioDerm>BioDerm</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Beast supervises the BioDerm genetics engineering process.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Cobra.txt
Normal file
5
data/encyclopedia/characters/Cobra.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Commander Jackson.txt
Normal file
5
data/encyclopedia/characters/Commander Jackson.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Corperal Jones.txt
Normal file
5
data/encyclopedia/characters/Corperal Jones.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Cynthia Fisher.txt
Normal file
5
data/encyclopedia/characters/Cynthia Fisher.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Dalaila Hayes.txt
Normal file
5
data/encyclopedia/characters/Dalaila Hayes.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Diamond Back.txt
Normal file
5
data/encyclopedia/characters/Diamond Back.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Dolosus.txt
Normal file
5
data/encyclopedia/characters/Dolosus.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Eva.txt
Normal file
5
data/encyclopedia/characters/Eva.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Gecko.txt
Normal file
5
data/encyclopedia/characters/Gecko.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Gerex Chol.txt
Normal file
5
data/encyclopedia/characters/Gerex Chol.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Gila.txt
Normal file
5
data/encyclopedia/characters/Gila.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Iguana.txt
Normal file
5
data/encyclopedia/characters/Iguana.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
1
data/encyclopedia/characters/Index.txt
Normal file
1
data/encyclopedia/characters/Index.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Hey.
|
||||
5
data/encyclopedia/characters/Lore.txt
Normal file
5
data/encyclopedia/characters/Lore.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Raptor.txt
Normal file
5
data/encyclopedia/characters/Raptor.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Rex.txt
Normal file
5
data/encyclopedia/characters/Rex.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Rragh Zhek.txt
Normal file
5
data/encyclopedia/characters/Rragh Zhek.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Sharp Tooth.txt
Normal file
5
data/encyclopedia/characters/Sharp Tooth.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Snake.txt
Normal file
5
data/encyclopedia/characters/Snake.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
5
data/encyclopedia/characters/Viper.txt
Normal file
5
data/encyclopedia/characters/Viper.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Character: Cobra
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Alchaldes is considered the smartest being alive.
|
||||
<spop>
|
||||
9
data/encyclopedia/factions/Alpha Viper.txt
Normal file
9
data/encyclopedia/factions/Alpha Viper.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Alpha Viper
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Draakan>Draakan</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
In the event of a close encounter: cook em'.
|
||||
-- Alpha Viper saying
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:drakelogo_full><sbreak>
|
||||
9
data/encyclopedia/factions/Blood Eagle.txt
Normal file
9
data/encyclopedia/factions/Blood Eagle.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Blood Eagle
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Human>Human</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
I got a plascannon that says no one's immortal.
|
||||
-- Blood Eagle saying
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Flag_Beagle><sbreak>
|
||||
9
data/encyclopedia/factions/Diamond Sword.txt
Normal file
9
data/encyclopedia/factions/Diamond Sword.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Diamond Sword
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Human>Human</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Be patient and the enemy shall consume himself.
|
||||
-- Diamond Sword saying
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Flag_DSword><sbreak>
|
||||
9
data/encyclopedia/factions/Horde.txt
Normal file
9
data/encyclopedia/factions/Horde.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Horde
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Bioderm>Bioderm</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
I am of the Chainless. I am Strong. I show no mercy.
|
||||
--BioDerm battle chant
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Flag_Bioderm><sbreak>
|
||||
1
data/encyclopedia/factions/Index.txt
Normal file
1
data/encyclopedia/factions/Index.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
<just:center>This is the 'Military Branches' section. Any important military branches in T2Bol will be listed here.
|
||||
9
data/encyclopedia/factions/Phoenix.txt
Normal file
9
data/encyclopedia/factions/Phoenix.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Phoenix
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Human>Human</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Fire only burns the faithless.
|
||||
-- Harbingers of Phoenix saying
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Flag_Phoenix><sbreak>
|
||||
11
data/encyclopedia/factions/Star Wolf.txt
Normal file
11
data/encyclopedia/factions/Star Wolf.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Star Wolf
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Human>Human</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
Silent as the mouths of the dead.
|
||||
-- Starwolf saying
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Flag_StarWolf><sbreak>
|
||||
|
||||
In 3941 CE, the BioDerm Hordes crushed the Starwolf tribe at the star system of Ymir. Many Starwolf merceneries now serve in the armies of other tribes.
|
||||
9
data/encyclopedia/factions/Storm.txt
Normal file
9
data/encyclopedia/factions/Storm.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Faction: Storm
|
||||
<font:univers condensed:23>Specialty: Accuracy
|
||||
<font:univers condensed:23>Race: <a:select-Races-Human>Human</a><spop>
|
||||
<spush><font:Univers:15>
|
||||
In the eye of your enemy, you look like an easy kill. Prove them wrong.
|
||||
<spop>
|
||||
|
||||
|
||||
<just:center><bitmap:Flag_T2><sbreak>
|
||||
8
data/encyclopedia/packs/Dampening Field.txt
Normal file
8
data/encyclopedia/packs/Dampening Field.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Pack: Dampening Field<spop>
|
||||
<spush><font:Univers:15>
|
||||
Blind them.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Fusionmortar><sbreak>
|
||||
|
||||
The dampening field comes as a base asset and a pack. When activated, the dampening field produces an electromagnetic field that prevents unauthorized signals from entering or exiting. Basically, it disables all sensor and radio activity. A special armor addon is required to detect dampening fields.
|
||||
1
data/encyclopedia/packs/Energy Pack.txt
Normal file
1
data/encyclopedia/packs/Energy Pack.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Energy pack.
|
||||
1
data/encyclopedia/packs/Index.txt
Normal file
1
data/encyclopedia/packs/Index.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Energy pack.
|
||||
8
data/encyclopedia/packs/Mining Tool.txt
Normal file
8
data/encyclopedia/packs/Mining Tool.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Pack: Mining Tool<spop>
|
||||
<spush><font:Univers:15>
|
||||
Warning: Aim away from face.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Fusionmortar><sbreak>
|
||||
|
||||
Neutrons are fired at the rock to break it apart molecule by molecule, then a tractor beam brings the segments in.
|
||||
6
data/encyclopedia/planets/Earth.txt
Normal file
6
data/encyclopedia/planets/Earth.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Planet: Earth<spop>
|
||||
<spush><font:Univers:15>
|
||||
Considered the 'celestial' planet, Earth is great place for vacations.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Earth><sbreak>
|
||||
1
data/encyclopedia/planets/Index.txt
Normal file
1
data/encyclopedia/planets/Index.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
<just:center>This is the 'planets' section. All planets that can be visited in T2Bol will be listed here.
|
||||
6
data/encyclopedia/planets/Xeron.txt
Normal file
6
data/encyclopedia/planets/Xeron.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Planet: Xeron<spop>
|
||||
<spush><font:Univers:15>
|
||||
Xeron looks a lot hotter than it actually is from space.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:Xeron><sbreak>
|
||||
10
data/encyclopedia/races/BioDerm.txt
Normal file
10
data/encyclopedia/races/BioDerm.txt
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Race: BioDerm<spop>
|
||||
<spush><font:Univers:15>
|
||||
These humans are hard to catch off-guard. Rrrh, so be it! We’ll crush them the old-fashioned way -- brute force!
|
||||
-- from a Horde Maul tactical briefing
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_bioderm_light><sbreak>
|
||||
|
||||
The Bioderms are an artificially created workrace. Sometimes used in combat, a great number of Derms rebelled against the Human race.
|
||||
But in 3956 CE, six years after the turning point of the war, the BioDerms were given the right to be considered their own race.
|
||||
9
data/encyclopedia/races/Criollos.txt
Normal file
9
data/encyclopedia/races/Criollos.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Race: Criollos<spop>
|
||||
<spush><font:Univers:15>
|
||||
Could we really rip a hole in the universe?
|
||||
-- Hammurabi
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:logo_small_storm><sbreak>
|
||||
|
||||
The Criollos are smart bastards, their leader Alchaldes beat the best Super Computer at Chess.
|
||||
24
data/encyclopedia/races/Draakan.txt
Normal file
24
data/encyclopedia/races/Draakan.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Race: Draakan<spop>
|
||||
<spush><font:Univers:15>
|
||||
What is the point of our existance?
|
||||
-- Dolosus, after finding the truth
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:draakan_full><sbreak>
|
||||
|
||||
The Draakans have the same origin as the Bioderms: Once a genetic experiment, early Draakans escaped from their testing facilities on Xeron. They were originially very basic lifeforms, but after many years of evolving and evading the <a:select-Races-Criollos>Criollos</a>, the Draakans became the sophisticated creatures they are today. The <a:select-Races-Criollos>Criollos</a> eventually left the Draakans alone after their most recent evolution; happy with how advanced their creations have become. Today, the <a:select-Races-Criollos>Criollos</a> are mindful to not let the Draakans know they created them.
|
||||
|
||||
The Draakans (or for short, "Drakes") are considered to be direct descendants of velociraptors. They resemble raptors in almost every way possible, except eye color. Most Draakans have yellow eyes that are described as "bright as the sun". However, in rare cases, a Draakan may be born with red eyes.
|
||||
|
||||
Draakans have an extraordinary ability to spew & resist fire. Said fire is produced in 'sacs' just below the lungs. The fire produced was meant to be an emergency backup for body heat. However, a simple surgery allows this fire to be diverted to the mouth, ready to be expelled at will.
|
||||
|
||||
There is a largely spread rumor that the Drakaans are of <a:select-Races-Criollos>Creole</a> creation. Once a genetic experiment, early Draakans escaped from their testing facility on Xeron and then on evolved into the sophisticated creatures that they are now.
|
||||
|
||||
Pros:
|
||||
*Faster running speed
|
||||
*Flame breath ability
|
||||
*Advanced understanding of robotic technology (faster leveling on robotics)
|
||||
*Fire & lava resistance
|
||||
|
||||
Cons:
|
||||
*Takes less damage before death
|
||||
9
data/encyclopedia/races/Human.txt
Normal file
9
data/encyclopedia/races/Human.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Race: Human<spop>
|
||||
<spush><font:Univers:15>
|
||||
One small step for man. One giant leap for mankind.
|
||||
-- Louis Armstrong, the Moon Landing
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_BE_MLight><sbreak>
|
||||
|
||||
The Humans have tried to find extraterrestial life since their Modern ages, but with no luck. However in 2578 CE, the song "Accross the Universe" that is broadcasted as far into space as possible by NASA was heard and interpreted as an SOS signal. A large battleShip then landed on Earth, carrying a large amount of <a:select-Races-Draakan>Draakan</a> footsoldiers. The misunderstanding was then worked out. Before the <a:select-Races-Draakan>Draakans</a> left, they helped the Humans upgrade their technology.
|
||||
1
data/encyclopedia/races/Index.txt
Normal file
1
data/encyclopedia/races/Index.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
<just:center>This is the 'races' section. Any playable races in T2Bol will be listed here.
|
||||
8
data/encyclopedia/vehicles/Shrike.txt
Normal file
8
data/encyclopedia/vehicles/Shrike.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Vehicle: Shrike<spop>
|
||||
<spush><font:Univers:15>
|
||||
The Shrike is your basic turbograb fighter.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_shrike><sbreak>
|
||||
|
||||
With dual mounted blasters & 2000 CC engine, the Shrike is best for light air support & escort. A 280W shield protects the shrike from most damage, and recharages at 0.8W a second.
|
||||
8
data/encyclopedia/weapons/ELF Projector.txt
Normal file
8
data/encyclopedia/weapons/ELF Projector.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: ELF Projector<spop>
|
||||
<spush><font:Univers:15>
|
||||
Shoot em' down.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Elfprojector><sbreak>
|
||||
|
||||
A heat seeking missile is fired from this launcher which can track both vehicles and infantry.
|
||||
8
data/encyclopedia/weapons/Grenade Launcher.txt
Normal file
8
data/encyclopedia/weapons/Grenade Launcher.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Grenade Launcher<spop>
|
||||
<spush><font:Univers:15>
|
||||
Shoot em' down.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Grenadelauncher><sbreak>
|
||||
|
||||
Fires small explosive grenades.
|
||||
1
data/encyclopedia/weapons/Index.txt
Normal file
1
data/encyclopedia/weapons/Index.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
<just:center>This is the 'weapons' section. Any weapons in T2Bol will be listed here.
|
||||
8
data/encyclopedia/weapons/Laser Rifle.txt
Normal file
8
data/encyclopedia/weapons/Laser Rifle.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Mortar<spop>
|
||||
<spush><font:Univers:15>
|
||||
Pop your enemys' head.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Laserrifle><sbreak>
|
||||
|
||||
The Laser Rifle fires concentrated laser beams that reach it's target at lightspeed.
|
||||
8
data/encyclopedia/weapons/Missile Launcher.txt
Normal file
8
data/encyclopedia/weapons/Missile Launcher.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Mortar<spop>
|
||||
<spush><font:Univers:15>
|
||||
Shoot em' down.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Missilelauncher><sbreak>
|
||||
|
||||
A heat seeking missile is fired from this launcher which can track both vehicles and infantry.
|
||||
8
data/encyclopedia/weapons/Mortar.txt
Normal file
8
data/encyclopedia/weapons/Mortar.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Mortar<spop>
|
||||
<spush><font:Univers:15>
|
||||
The mortar has been built to destroy.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Fusionmortar><sbreak>
|
||||
|
||||
The fusion mortar fires small uranium rounds, creating a powerful explosion.
|
||||
8
data/encyclopedia/weapons/Plasma Rifle.txt
Normal file
8
data/encyclopedia/weapons/Plasma Rifle.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Mortar<spop>
|
||||
<spush><font:Univers:15>
|
||||
Aim away from face.
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Plasmarifle><sbreak>
|
||||
|
||||
Capable of melting flesh, the Plasmarifle fires balls of plasma.
|
||||
8
data/encyclopedia/weapons/Shock Lance.txt
Normal file
8
data/encyclopedia/weapons/Shock Lance.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Mortar<spop>
|
||||
<spush><font:Univers:15>
|
||||
Go shove 10,000 volts of electricity up your enemys' ass!
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Shocklance><sbreak>
|
||||
|
||||
The shocklance fires beams of concentrated electricity at close range.
|
||||
9
data/encyclopedia/weapons/Spinfusor.txt
Normal file
9
data/encyclopedia/weapons/Spinfusor.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<spush><just:center><color:00dc00><font:univers condensed:25>Weapon: Mortar<spop>
|
||||
<spush><font:Univers:15>
|
||||
The Spinfusor is your bread and butter weapon.
|
||||
-- Lieutenant Kenzie
|
||||
<spop>
|
||||
|
||||
<just:center><bitmap:twb/twb_Spinfusor><sbreak>
|
||||
|
||||
The Spinfusor fires small explosive discs.
|
||||
9
data/http/templates/403.html
Normal file
9
data/http/templates/403.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<HTML>
|
||||
<header>
|
||||
<title>403 - Forbidden</title>
|
||||
</header>
|
||||
<body>
|
||||
<h1>403 - Forbidden</h1>
|
||||
VGS! You're not allowed here.
|
||||
</body>
|
||||
</HTML>
|
||||
9
data/http/templates/404.html
Normal file
9
data/http/templates/404.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<HTML>
|
||||
<header>
|
||||
<title>404 - Not Found</title>
|
||||
</header>
|
||||
<body>
|
||||
<h1>404 - Not Found</h1>
|
||||
VGS! The requested document "#DOC#" was not found.
|
||||
</body>
|
||||
</HTML>
|
||||
9
data/http/templates/Copy of 404.html
Normal file
9
data/http/templates/Copy of 404.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<HTML>
|
||||
<header>
|
||||
<title>405 - Not Allowed</title>
|
||||
</header>
|
||||
<body>
|
||||
<h1>405 - Not Allowed</h1>
|
||||
The method #METHOD# is not allowed for this document.
|
||||
</body>
|
||||
</HTML>
|
||||
10
data/http/templates/Directory.html
Normal file
10
data/http/templates/Directory.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<HTML>
|
||||
<header>
|
||||
<title>Index of #DIR#</title>
|
||||
</header>
|
||||
<body>
|
||||
<h1>Index of #DIR#</h1>
|
||||
#CONTENT#
|
||||
<address>#APPLICATION# #OS# Server at #HOSTNAME# Port #PORT#</address>
|
||||
</body>
|
||||
</HTML>
|
||||
8
data/http/test.cs
Normal file
8
data/http/test.cs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
|
||||
function ServerApp::execute(%this,%data)
|
||||
{
|
||||
%data = strReplace(%data,"#TIME#",formatTimeString("hh:nn:ss A"));
|
||||
%data = strReplace(%data,"#DATE#",formatTimeString("mm/dd/yy"));
|
||||
return %data;
|
||||
}
|
||||
10
data/http/test.html
Normal file
10
data/http/test.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<HTML>
|
||||
<header>
|
||||
<title>Time</title>
|
||||
</header>
|
||||
<body bgcolor="#00FF00">
|
||||
Time: #TIME#<br>
|
||||
Date: #DATE#<br>
|
||||
This is a test.
|
||||
</body>
|
||||
</HTML>
|
||||
6
doc/Compiled list of Required Staff.txt
Normal file
6
doc/Compiled list of Required Staff.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Modeler (Players, Items, interactible stuff)
|
||||
Modeler (For interiors)
|
||||
Texture Artist (Stuff used in GUI's)
|
||||
Skin Artist (Person who makes textures for objects)
|
||||
Animator (For the modelers)
|
||||
Sound Artist (Maybe?)
|
||||
8
doc/Dev Notes.txt
Normal file
8
doc/Dev Notes.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
-Clan Listings-
|
||||
Group: 1-5 Players
|
||||
Clan: 5-10 Players
|
||||
Guild: 10-15 players
|
||||
Tribe: 15-20 players
|
||||
Corperation: 20-25 Players
|
||||
|
||||
|
||||
39
doc/Development Map.txt
Normal file
39
doc/Development Map.txt
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
T2Bol development roadmap.
|
||||
|
||||
MULTIPLAYER TODO-
|
||||
Add News Browser
|
||||
Add Auto Update
|
||||
Add Economical System
|
||||
Add Special Key Bindings
|
||||
Make Sure Global Chat (In RPG) can be enabled/Disabled
|
||||
Make sure Languages can be enabled/Disabled
|
||||
Implement modified startup video
|
||||
Modify Credits (Won't be completed untill mod is done)
|
||||
Add Land Ownership
|
||||
Add a system in which clan leaders can assign clan members jobs
|
||||
Make Corpses Drop Baggies of Items
|
||||
Make sure corpses can be eaten by Draakans (for health)
|
||||
Implement 'Virtual Items' and combo system
|
||||
Add an arena, or an area of land where players can fight without worrying of death
|
||||
Add Adrupt disconnection messages
|
||||
Implement jet malfunctions that are caused by electrical disturbances
|
||||
MAKE SURE MOD HAS SMOOTH TRANSITIONS BETWEEN GAMEMODES
|
||||
Make a little special loading icon for maps without one.
|
||||
|
||||
SINGLEPLAYER TODO-
|
||||
Upgrade T2's AI system for certain circumstances
|
||||
|
||||
|
||||
Completed Stuff (Multiplayer)--
|
||||
Add Account Handling for Local Area Networks (Monday, January 4th, 2009)
|
||||
Add Reference Center (Monday, January 4th, 2009)
|
||||
Add Player Armors & Draakan Flamer (Monday, January 4th, 2009)
|
||||
Add Blood Effects (Monday, January 4th, 2009)
|
||||
Add Clan Handling (Tuesday, January 11th, 2009)
|
||||
Implement .TXT Basic Language Processor (Saturday, July 3rd, 2010)
|
||||
Implement PDA Basics (Saturday, July 3rd, 2010)
|
||||
|
||||
Completed Stuff (SinglePlayer)--
|
||||
Add a Campaign Switch API (Saturday, July 3rd, 2010)
|
||||
|
||||
|
||||
4
doc/HighLights.txt
Normal file
4
doc/HighLights.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
1. Encyclopedia
|
||||
2. Several New Gamemodes
|
||||
3. LAN Account Handling (I should intergrate this to work with TC's LAN GUID system)
|
||||
4. Multiple Campaign handling API
|
||||
45546
doc/Manual.rtf
Normal file
45546
doc/Manual.rtf
Normal file
File diff suppressed because it is too large
Load diff
136
doc/Manual.txt
Normal file
136
doc/Manual.txt
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
Tribes 2: Birth Of Legend Version 'Development'
|
||||
By Dark Dragon DX & Alviss ("EmperorsChamp")
|
||||
|
||||
--- Developing Team / Contributors ---
|
||||
|
||||
- Coders & Script Sources
|
||||
Dark Dragon DX
|
||||
Alviss (EmperorsChamp)
|
||||
UberGuy
|
||||
|
||||
- Modelers & model Sources
|
||||
Netmanx
|
||||
Velo
|
||||
Low Poly Cooperative
|
||||
Iron Sphere Development Team
|
||||
UrbanAssault
|
||||
|
||||
- Mappers
|
||||
Blnukem
|
||||
|
||||
- Skinners
|
||||
Numbuh 178
|
||||
Blnukem
|
||||
|
||||
- Music/Audio Mixers & Music/Audio Sources
|
||||
Blnukem
|
||||
Josef Jahn
|
||||
|
||||
- General Support
|
||||
Naosyth (special thanks for helping me get started on Torque scripting)
|
||||
Castiger (Lyra)
|
||||
DeathBorn (Tigr0nix)
|
||||
Zaxxman
|
||||
Mentulmhat
|
||||
DS=DragonStalker
|
||||
DeadSoldier
|
||||
NiniN
|
||||
The-Construct.net Forums
|
||||
|
||||
--- Weapons ---
|
||||
|
||||
- Draakan Flame Breath (A Draakan-only weapon)
|
||||
All Draakans are born with the ability to 'breathe' fire.
|
||||
The Draakans use this as a lethal weapon of firery doom.
|
||||
|
||||
|
||||
--- AI Characters ---
|
||||
|
||||
- Dolosus (Do-Loh-Sus)
|
||||
The fearless leader of the Draakan race.
|
||||
|
||||
- Diamond Back
|
||||
Dolosus' "Right Hand Man", he is Dolosus'
|
||||
|
||||
- SharpTooth
|
||||
One of Dolosus' guards, he loves to eliminate enemies in the bloodiest and most painful manner possible.
|
||||
|
||||
- Iguana
|
||||
One of Dolosus' guards. His favorite pack is the Cloaking Pack, thus earning him the nickname "Iguana".
|
||||
|
||||
- Snake
|
||||
One of Dolosus' soldiers.
|
||||
|
||||
- Raptor
|
||||
The fastest, but also the weakest of all Draakans, earning him the nickname "Raptor".
|
||||
|
||||
- Rex
|
||||
Though his intelligance only allows him to use grunts and roars as words, he is quite grusume in battle.
|
||||
He is one of Dolosus' soldiers.
|
||||
|
||||
- Denier Of Soup
|
||||
Blank
|
||||
|
||||
- Warg
|
||||
Blank
|
||||
|
||||
--- PDA Help ---
|
||||
|
||||
The Score Menu (Default Bind is F2) has been replaced by a PDA that you will use in the mod.
|
||||
It can download programs, run a self-statistics check, and save.
|
||||
|
||||
- Download Programs
|
||||
You can use this to download programs to your PDA, your range from the transmitter will affect how long it will take to download.
|
||||
If you're too far however, it won't download at all.
|
||||
|
||||
- Self-Statistics
|
||||
Tells you your current stats, such as cash and your relationship with other races.
|
||||
|
||||
- Inventory
|
||||
Shows your inventory.
|
||||
|
||||
- Clan Management
|
||||
Use this to manage or create your own clan. You can edit your clan's name, tag, and short description at any time.
|
||||
|
||||
--- TroubleShooting ---
|
||||
|
||||
Q: Tribes 2 becomes a non-active window everytime I click something in the PDA, why?
|
||||
A: Opening the mission editor appears to cause this.
|
||||
S: The only solution that seems to work is restarting Tribes 2 or avoid use of the mission editor.
|
||||
|
||||
Q: My game crashes when I host non-dedicated servers.
|
||||
A: Older versions of Structural Infinity (SI) cause crashes on non-dedicated servers.
|
||||
S: Uninstall SI, attempt to host again.
|
||||
|
||||
Q: My game crashes when I run Tribes 2 in offline mode without an internet connection. OR my dedicated Offline or LAN server crashes on startup.
|
||||
A: Tribes 2 has buggy TCPObjects and HTTPObjects that crash when there's no internet connection.
|
||||
S: Uninstall all scripts that require an internet connection. (Including TribesNext's main VL2, tscsri.vl2)
|
||||
|
||||
Q: My game crahes when I run Tribes 2 on Linux via WINE.
|
||||
A: The TCPObject code in older versions of the TribesNext patch is incompatible with WINE.
|
||||
S: Upgrade TribesNext to the latest version.
|
||||
|
||||
Q: The game distorts my MP3 music by turning the pitch up or down.
|
||||
A: I'm not sure what causes this, T2 has a buggy MP3 player.
|
||||
S: None.
|
||||
|
||||
Q: My game crashes or screws up horribly when I spawn in RPG.
|
||||
A: I'm not sure what causes this,
|
||||
S: Delete data/savedData.cs and report the error to a developer.
|
||||
|
||||
Q: My dedicated server doesn't load the correct mod! And that mod doesn't even function properly.
|
||||
A: Tribes 2 cannot function with multiple mods installed to gameData/.
|
||||
S: Move all other mods (except classic) somewhere else.
|
||||
|
||||
Q: My game is all screwed up when I launch the mod.
|
||||
A: Tribes 2 generates caches (.DSOs) of Tribes 2 scripts for faster loading. But these caches screw up the game.
|
||||
S: Run JTLdelDSO (in the mod folder) to remove the cached files.
|
||||
|
||||
Q: My game crashes from none of the causes above. Why?
|
||||
A: Tribes 2 sometimes conflicts with itself when there are multiple mods installed.
|
||||
S: Remove all mods from Gamedata/ except T2Bol. (don't delete them)
|
||||
|
||||
Sierra On-Line, Inc. owns the copyright to Tribes2.
|
||||
Dark Dragon DX, DEV Team, and any associates claim the copyright
|
||||
to this Modification (the "mod"), and any derivative works of this mod.
|
||||
By using this mod you must agree with the end user license agreement ("EULA.txt").
|
||||
46
doc/RTS Notes.txt
Normal file
46
doc/RTS Notes.txt
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
If I can manage to make a 2D to 3D vector conversion on the RTS gameMode, this is what will happen:
|
||||
Don't bother reading this right now; it's my file to jot down ideas.
|
||||
|
||||
Each race will have a trio of leaders each with their own special abilities and units.
|
||||
|
||||
The Leaders, Abilities, and Units
|
||||
Dolosus (Draakan) -- Sterylization -- Pyromaniacs
|
||||
Alchaldes (Criollos) -- Research happens in half the time -- Do This
|
||||
Hammurabi (Criollos) --
|
||||
Beast (BioDerm) -- Buildings Construct in half the time, Units Train in half the time -- None
|
||||
Commander Jackson (Human) -- Bomber Strike -- Elite Drop Pods (Drops any sort of infantry anywhere on the map)
|
||||
Cynthia Fisher (Human) -- Poison Gas Strike (Any infantry caught in the radius will die slowly, lasts longer than Pyro Strike) --
|
||||
Corperal Jones (Human) -- Units have more training (More training, same build time) --
|
||||
|
||||
Each race will have a set of their own buildings (basically the same buildings for each, just different name and produces different units)
|
||||
|
||||
The Buildings, Upgrades, and Units (Infantry)
|
||||
Cloning Center (Bioderm) -- None -- Bioderm Sniper (Light, Laser Rifle, Plasma Rifle, Grenade Launcher, Energy Pack), Bioderm Clone (Light Derm, Chaingun, Disc, Shocklance, Ammo), Bioderm Assault (Assault, Chaingun, Disc, Shocklance, Missile Launcher, Ammo), Bioderm Reaver (Juggie, Chaingun, Disc, Shocklance, Missile Launcher, Mortar)
|
||||
Barracks (Human) -- Adreniline (Infantry moves faster) --
|
||||
(Criollos)
|
||||
Egg Nurtering Center (Draakan) -- Growth Hormones (Draakans grow in half the time), -- Draakan (Once produced, their tiny and feeble -- after a minute or two, they'll grow to be full size & given armor)
|
||||
|
||||
The Buildings, Upgrades, and Units (Factory)
|
||||
Human --
|
||||
Bioderm --
|
||||
Draakan --
|
||||
Criollos --
|
||||
|
||||
General Upgrades:
|
||||
Reflex Training (Units in vehicles will survive vehicle explosion with half health)
|
||||
|
||||
General Pros and Cons of races:
|
||||
Draakan (Cons) -- Infantry takes a minute to mature, Infantry takes more damage than any other (they do not have as much fat & muscle to protect them),
|
||||
Draakan (Pros) -- All infantry can act as anti-infantry too (except Special units for Dolosus, their flame is better PERIOD),
|
||||
Human (Cons) -- Burns,
|
||||
Human (Pros) -- Can Train both Human & BioDerm Infantry (T2 fans better know the Humans created the Derms),
|
||||
Criollos (Cons) -- Infantry is slightly weaker than the rest,
|
||||
Criollos (Pros) -- Can Upgrade infantry with flame retardant armor, Can Train both Criollos and Draakan Units (They created the Drakes o_o),
|
||||
Bioderm (Cons) -- Burns, Tribal (Derms start with lowest Tech, but once upgraded, they can do major damage),
|
||||
Bioderm (Pros) -- ,
|
||||
|
||||
Special Unit Upgrades
|
||||
Dolosus (Draakan, Pyromaniacs) -- Unstable Sacs (Lvl. 1, Pyromaniacs explode on Death, ignititing any nearby infantry),
|
||||
|
||||
|
||||
|
||||
161
doc/Updates.txt
Normal file
161
doc/Updates.txt
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
This file contains technical data.
|
||||
Try not to fry your brain.
|
||||
|
||||
*******************************************
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Tuesday, September 7th, 2010
|
||||
Scripts: scripts/creditsGUI.cs, creditsText.cs, creditsText_default.cs, data/creditsText.txt
|
||||
Changes:
|
||||
-Tribes 2's original credits are now accessable at their original location
|
||||
-Added a creditsText.txt for easy modifcation to the credits scroller for the BOL team
|
||||
Description:
|
||||
-You can now access both the mod's and game's credits. (For Tribes 2, go under "START". For BOL, it is currently under the browser)
|
||||
-It is now easier to modify the credits for the BOL mod
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Monday, August 27th, 2010
|
||||
Script: data/
|
||||
Changes:
|
||||
-Organized mod Data
|
||||
-Fixed odd Encyclopedia Bug
|
||||
Description:
|
||||
-Modification data is now more ... organized
|
||||
-The Encyclopedia and other interactive GUI's will not attempt to open internet Explorer for some users anymore (but breaks some mods)
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Tuesday, August 17th, 2010
|
||||
Script: scripts/modScripts/
|
||||
Changes:
|
||||
-Organized custom mod scripts
|
||||
Description:
|
||||
-All custom mod script files are now located under scripts/modScripts/
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Wednesday, March 17th, 2010
|
||||
Script: scripts/beginning.cs
|
||||
Changes:
|
||||
-Started "Dolosus' Memories"
|
||||
Description:
|
||||
-A lil' Campaign used to describe the origin of the Draakans
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Wednesday, March 3rd, 2010
|
||||
Script: scripts/RPGGame.cs, defaultGame.cs
|
||||
Changes:
|
||||
-Condensed game code, removed CTF code from RPG
|
||||
Description:
|
||||
-Game Code is more organized.
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Friday, Feburary 26th, 2010
|
||||
Script: scripts/SVGame.cs, defaultGame.cs, admin.cs, SNDGame.cs
|
||||
Changes:
|
||||
-Survival Game now has BETA progressive mode
|
||||
Description:
|
||||
-There are no rounds.. bots spawn every 30 seconds. It is VERY buggy at the time, it's best you don't use it.
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Saturday, Feburary 12h, 2010
|
||||
Script: scripts/RPGBrowserGUI.cs
|
||||
Changes:
|
||||
-Browser now converts files properly.
|
||||
Description:
|
||||
-The browser has full functionality in file converting. Multiple <select> tags are handled properly now.
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Saturday, Feburary 11h, 2010
|
||||
Script: scripts/SVGame.cs
|
||||
Changes:
|
||||
-Survival Game is now fully functional
|
||||
Description:
|
||||
-How long will you last against growing waves of bots?
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Saturday, Feburary 8h, 2010
|
||||
Script: scripts/RPGBrowserGUI.cs
|
||||
Changes:
|
||||
-Upgraded Browser converter
|
||||
-Modfied JTLDelDSO.bat
|
||||
Description:
|
||||
-The file converter for the browser now ignores blank lines and attempts to space out sentences.
|
||||
-The DSO remover now removes files from editor/ and fonts/ to conserve space. (T2 is a bit old, so somebody may have a 1 gig HDD or something)
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Saturday, Feburary 7th, 2010
|
||||
Script: scripts/SVGame.cs, scripts/aiSurvival.cs
|
||||
Changes:
|
||||
-Added onto Survival GameMode
|
||||
Description:
|
||||
-The Survival Gamemode now has a map and a semi-playable BETA
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Saturday, Feburary 6th, 2010
|
||||
Script: scripts/server.cs, scripts/RPGGame.cs, scripts/weapons/drakeFlame.cs
|
||||
Changes:
|
||||
-Fixed Draakan flame breath not being given to Draakans at times
|
||||
-Started the property script
|
||||
-Modified the inventory station script
|
||||
-Upgraded clan handling
|
||||
-Upgraded Encyclopedia
|
||||
Description:
|
||||
-The player gets that special ability.
|
||||
-The property script has been configured to work with bbunk2.dif.
|
||||
(Beagle tower), but it does not take rotation into consideration yet.
|
||||
-The inventory Station in RPG gamemodes now asks for money when you enter the trigger. Also updates your money count.
|
||||
-The clan system now allows for short descriptions and there is a button to edit the clan now.
|
||||
-The encyclopedia reference function is now dynamic.
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Thursday, January 29th, 2010
|
||||
Script: scripts/server.cs
|
||||
Changes:
|
||||
-Fixed (hopefully) save File corruption bug
|
||||
Description:
|
||||
-A rare save file corruption bug seems to have been resolved.
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Thursday, January 28th, 2010
|
||||
Scripts: scripts/RPGBrowserGUI.cs, scripts/lib/
|
||||
Changes:
|
||||
-Removed lib/ folder
|
||||
-Encyclopedia is now Dynamic
|
||||
-Organized code
|
||||
Description:
|
||||
-Removed the annoying lib/ folder
|
||||
-The Encyclopedia now picks up all entries automatically for convenience.
|
||||
-The code has been attached directly to the functions (originally was hooks in lib/client.cs)
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Monday, January 12th, 2010
|
||||
Scripts: RPGGame.cs, lib/server.cs, inputDLG.gui, lib/client.cs
|
||||
Changes:
|
||||
-Started clan System
|
||||
-Started location system
|
||||
Description:
|
||||
-Start a clan!
|
||||
-ObjectiveHUD (bottom left corner in RPG Gamemode) now tells you the name of the territory you are in.
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Monday, January 11th, 2010
|
||||
Scripts: SVGame.cs, safeMode.vl2
|
||||
Changes:
|
||||
-Started Survival Gamemode
|
||||
-Added safeMode
|
||||
-Started client Save system
|
||||
Description:
|
||||
-Survive against waves of bots.
|
||||
-Disables use of HTTP and TCPObjects when totally running offline. (command arg: -safeMode)
|
||||
-Save the game! Function: saveGame();
|
||||
|
||||
[Dark Dragon DX]
|
||||
Date: Thursday, January 7th, 2009
|
||||
Scripts: server.cs, lib/server.cs, lib/client.cs
|
||||
Changes:
|
||||
-Fixed client verification system
|
||||
-Server & client share all files
|
||||
-Stripped unused server options
|
||||
Description:
|
||||
-Client verification system now works in listen and dedicated servers.
|
||||
-Server and client share all files in lib/
|
||||
-Stripped lobby Menu options that the server does not use in RPG gamemodes.
|
||||
|
|
@ -340,8 +340,4 @@ new GuiChunkedBitmapCtrl(RPGBrowserGui) {
|
|||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
|
||||
exec("scripts/RPGBrowserGui.cs");
|
||||
|
||||
|
||||
//--- OBJECT WRITE END ---
|
||||
BIN
interiors.7z
Normal file
BIN
interiors.7z
Normal file
Binary file not shown.
|
|
@ -1,5 +1,5 @@
|
|||
// MissionTypes = RPG
|
||||
// DisplayName = Earth
|
||||
// MissionTypes = RPG
|
||||
|
||||
//--- OBJECT WRITE BEGIN ---
|
||||
new SimGroup(MissionGroup) {
|
||||
|
|
|
|||
627
scripts/NSGame.cs
Normal file
627
scripts/NSGame.cs
Normal file
|
|
@ -0,0 +1,627 @@
|
|||
// DisplayName = Natural Selection
|
||||
|
||||
//--- GAME RULES BEGIN ---
|
||||
// Destroy the other team.
|
||||
//--- GAME RULES END ---
|
||||
|
||||
//exec the AI scripts
|
||||
exec("scripts/aiNS.cs");
|
||||
|
||||
$RequiresClient[NS] = false;
|
||||
$InvBanList[NS, "C4Charge"] = 1;
|
||||
|
||||
//-- tracking ---
|
||||
function NSGame::initGameVars(%game)
|
||||
{
|
||||
//%game. = ""; //I guess I'll eventually set some, but most are loaded via BASIC files
|
||||
}
|
||||
|
||||
package NSGame
|
||||
{
|
||||
function blah(){} //Eh..
|
||||
};
|
||||
|
||||
function NSGame::setUpTeams(%game)
|
||||
{
|
||||
defaultGame::setUpTeams(%game);
|
||||
%game.numTeams = 1;
|
||||
setSensorGroupCount(4);
|
||||
$TeamDamage = true; //Allow team Damage
|
||||
}
|
||||
|
||||
function NSGame::getTeamSkin(%game, %team)
|
||||
{
|
||||
if($host::tournamentMode) // z0dd - ZOD, 9/29/02. Removed T2 demo code from here
|
||||
{
|
||||
return $teamSkin[%team];
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
//error("CTFGame::getTeamSkin");
|
||||
if(!$host::useCustomSkins)
|
||||
{
|
||||
%terrain = MissionGroup.musicTrack;
|
||||
//error("Terrain type is: " SPC %terrain);
|
||||
switch$(%terrain)
|
||||
{
|
||||
case "lush":
|
||||
if(%team == 1)
|
||||
%skin = 'beagle';
|
||||
else if(%team == 2)
|
||||
%skin = 'dsword';
|
||||
else %skin = 'base';
|
||||
|
||||
case "badlands":
|
||||
if(%team == 1)
|
||||
%skin = 'swolf';
|
||||
else if(%team == 2)
|
||||
%skin = 'dsword';
|
||||
else %skin = 'base';
|
||||
|
||||
case "ice":
|
||||
if(%team == 1)
|
||||
%skin = 'swolf';
|
||||
else if(%team == 2)
|
||||
%skin = 'beagle';
|
||||
else %skin = 'base';
|
||||
|
||||
case "desert":
|
||||
if(%team == 1)
|
||||
%skin = 'cotp';
|
||||
else if(%team == 2)
|
||||
%skin = 'beagle';
|
||||
else %skin = 'base';
|
||||
|
||||
case "Volcanic":
|
||||
if(%team == 1)
|
||||
%skin = 'dsword';
|
||||
else if(%team == 2)
|
||||
%skin = 'cotp';
|
||||
else %skin = 'base';
|
||||
|
||||
default:
|
||||
if(%team == 2)
|
||||
%skin = 'baseb';
|
||||
else %skin = 'base';
|
||||
}
|
||||
}
|
||||
else %skin = $teamSkin[%team];
|
||||
|
||||
//error("%skin = " SPC getTaggedString(%skin));
|
||||
return %skin;
|
||||
}
|
||||
}
|
||||
|
||||
function NSGame::getTeamName(%game, %team)
|
||||
{
|
||||
// ---------------------------------------------------
|
||||
// z0dd - ZOD 3/30/02. Only display default team names
|
||||
//if ( isDemo() || $host::tournamentMode)
|
||||
return $TeamName[%team];
|
||||
// ---------------------------------------------------
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
function NSGame::missionLoadDone(%game)
|
||||
{
|
||||
//default version sets up teams - must be called first...
|
||||
DefaultGame::missionLoadDone(%game);
|
||||
}
|
||||
|
||||
function NSGame::showStalemateTargets(%game)
|
||||
{
|
||||
cancel(%game.stalemateSchedule);
|
||||
|
||||
//show the targets
|
||||
for (%i = 1; %i <= 2; %i++)
|
||||
{
|
||||
%flag = $TeamFlag[%i];
|
||||
|
||||
//find the object to scope/waypoint....
|
||||
//render the target hud icon for slot 1 (a centermass flag)
|
||||
//if we just set him as always sensor vis, it'll work fine.
|
||||
if (isObject(%flag.carrier))
|
||||
setTargetAlwaysVisMask(%flag.carrier.getTarget(), 0x7);
|
||||
}
|
||||
//schedule the targets to hide
|
||||
%game.stalemateObjsVisible = true;
|
||||
%game.stalemateSchedule = %game.schedule(%game.stalemateDurationMS, hideStalemateTargets);
|
||||
}
|
||||
|
||||
function NSGame::timeLimitReached(%game)
|
||||
{
|
||||
logEcho("game over (timelimit)");
|
||||
%game.gameOver();
|
||||
cycleMissions();
|
||||
}
|
||||
|
||||
function NSGame::scoreLimitReached(%game)
|
||||
{
|
||||
logEcho("game over (scorelimit)");
|
||||
%game.gameOver();
|
||||
cycleMissions();
|
||||
}
|
||||
|
||||
function NSGame::gameOver(%game)
|
||||
{
|
||||
//call the default
|
||||
DefaultGame::gameOver(%game);
|
||||
messageAll('MsgClearObjHud', "");
|
||||
}
|
||||
|
||||
function NSGame::onClientDamaged(%game, %clVictim, %clAttacker, %damageType, %implement, %damageLoc)
|
||||
{
|
||||
if(%clVictim.headshot && %damageType == $DamageType::Laser && %clVictim.team != %clAttacker.team)
|
||||
{
|
||||
%clAttacker.scoreHeadshot++;
|
||||
if (%game.SCORE_PER_HEADSHOT != 0)
|
||||
{
|
||||
messageClient(%clAttacker, 'msgHeadshot', '\c0You received a %1 point bonus for a successful headshot.', %game.SCORE_PER_HEADSHOT);
|
||||
messageTeamExcept(%clAttacker, 'msgHeadshot', '\c5%1 hit a sniper rifle headshot.', %clAttacker.name); // z0dd - ZOD, 8/15/02. Tell team
|
||||
}
|
||||
%game.recalcScore(%clAttacker);
|
||||
}
|
||||
|
||||
// -----------------------------------------------
|
||||
// z0dd - ZOD, 8/25/02. Rear Lance hits
|
||||
if(%clVictim.rearshot && %damageType == $DamageType::ShockLance && %clVictim.team != %clAttacker.team)
|
||||
{
|
||||
%clAttacker.scoreRearshot++;
|
||||
if (%game.SCORE_PER_REARSHOT != 0)
|
||||
{
|
||||
messageClient(%clAttacker, 'msgRearshot', '\c0You received a %1 point bonus for a successful rearshot.', %game.SCORE_PER_REARSHOT);
|
||||
messageTeamExcept(%clAttacker, 'msgRearshot', '\c5%1 hit a shocklance rearshot.', %clAttacker.name);
|
||||
}
|
||||
%game.recalcScore(%clAttacker);
|
||||
}
|
||||
// -----------------------------------------------
|
||||
|
||||
//the DefaultGame will set some vars
|
||||
DefaultGame::onClientDamaged(%game, %clVictim, %clAttacker, %damageType, %implement, %damageLoc);
|
||||
|
||||
//if victim is carrying a flag and is not on the attackers team, mark the attacker as a threat for x seconds(for scoring purposes)
|
||||
if ((%clVictim.holdingFlag !$= "") && (%clVictim.team != %clAttacker.team))
|
||||
{
|
||||
%clAttacker.dmgdFlagCarrier = true;
|
||||
cancel(%clAttacker.threatTimer); //restart timer
|
||||
%clAttacker.threatTimer = schedule(%game.TIME_CONSIDERED_FLAGCARRIER_THREAT, %clAttacker.dmgdFlagCarrier = false);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
function NSGame::clientMissionDropReady(%game, %client)
|
||||
{
|
||||
messageClient(%client, 'MsgClientReady',"", "SinglePlayerGame"); //Force the SP game objective hud to setup
|
||||
%game.resetScore(%client);
|
||||
|
||||
messageClient(%client, 'MsgMissionDropInfo', '\c0You are in mission %1 (%2).', $MissionDisplayName, $MissionTypeDisplayName, $ServerName );
|
||||
|
||||
DefaultGame::clientMissionDropReady(%game, %client);
|
||||
|
||||
//Force client Spawn since we're ready now
|
||||
schedule(1000,0,"forceClientSpawn",%client,true);
|
||||
|
||||
%client.setControlObject(%client.player);
|
||||
commandToClient(%client,'bottomPrint',"Try not to die.",3);
|
||||
|
||||
//Since this is an RPG gamemode, be sure some things are correct. (May have been a mission switch from CTF or some other gamemode)
|
||||
commandToClient(%client,'SetScoreText',"PDA - Personal Data Assistant");
|
||||
//Make sure the data hud is working.
|
||||
messageClient(%client,'MsgSPCurrentObjective1',"",'Location: Unknown.');
|
||||
messageClient(%client,'MsgSPCurrentObjective2',"",'Money: $%1.',%client.money);
|
||||
}
|
||||
|
||||
function NSGame::assignClientTeam(%game, %client, %respawn)
|
||||
{
|
||||
DefaultGame::assignClientTeam(%game, %client, %respawn);
|
||||
// if player's team is not on top of objective hud, switch lines
|
||||
messageClient(%client, 'MsgCheckTeamLines', "", %client.team);
|
||||
}
|
||||
|
||||
function NSGame::applyConcussion(%game, %player)
|
||||
{
|
||||
}
|
||||
|
||||
function NSGame::vehicleDestroyed(%game, %vehicle, %destroyer)
|
||||
{
|
||||
}
|
||||
|
||||
function NSGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation)
|
||||
{
|
||||
defaultGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation);
|
||||
commandToClient(%clVictim,'HandleScriptedCommand',2);
|
||||
//commandToClient(%clVictim,'alxPlayMusic',"T2BOL/Music/TribesHymn.mp3"); //Add a little music that becomes audible if the player idles in death for a bit..
|
||||
//No, play this epic audio:
|
||||
schedule(2000,0,"messageClient",%clVictim,'MsgDeath',"~wfx/Lose.wav");
|
||||
forceScoreScreenOpen(%clVictim,"DEATH");
|
||||
$Data::ShouldApply[%clVictim.GUID] = false;
|
||||
|
||||
if (%clVictim.isAIControlled())
|
||||
%clVictim.drop();
|
||||
}
|
||||
|
||||
//...very very messy PDA code below!!
|
||||
|
||||
function NSGame::updateScoreHud(%game, %client, %tag) //This is just here for when the PDA is first opened.
|
||||
{
|
||||
if (%client.PDAPage $= "")
|
||||
{
|
||||
messageClient( %client, 'ClearHud', "", 'scoreScreen', 0 );
|
||||
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Main Page');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Please select a command.");
|
||||
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center>Command List:");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tSLFSTS\t1>-Self Statistics</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tEMAIL\t1>-Electronic Mail</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tINVENTORY\t1>-View Inventory</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tCLNMG\t1>-Clan Management</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tSAVE\t1>-Save Game</a>");
|
||||
|
||||
%client.PDAPage = "MAIN";
|
||||
}
|
||||
}
|
||||
function NSGame::createPlayer(%game, %client, %spawnLoc, %respawn)
|
||||
{
|
||||
DefaultGame::createPlayer(%game, %client, %spawnLoc, %respawn);
|
||||
commandToClient(%client,'HandleScriptedCommand',9,formatTimeString("HHnn") SPC "Hrs.");
|
||||
}
|
||||
|
||||
function NSGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %arg4, %arg5)
|
||||
{
|
||||
messageClient( %client, 'ClearHud', "", 'scoreScreen', 0 );
|
||||
|
||||
//Special handles here..
|
||||
if (getSubStr(%arg1,0,5) $= "EMAIL" && getSubStr(%arg1,5,1) !$= "" && isNumber(getSubStr(%arg1,5,1)))
|
||||
{
|
||||
%id = getSubStr(%arg1,5,strLen(%arg1));
|
||||
%client.email = %id;
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Electronic Mail<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:left><a:gamelink\tDELETE\t1>Delete E-Mail</a> "@$Data::EMail::Date[%client.GUID,%i]@"<just:right><a:gamelink\tREPLY\t1>Reply</a>");
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>From %1:',$Data::EMail::Sender[%client.GUID,%i]);
|
||||
%index++;
|
||||
%count = getSubStrOccurance($Data::EMail::Content[%client.GUID,%id],"\t");
|
||||
echo(%count);
|
||||
|
||||
if (%count != 0)
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>%1',getField($Data::EMail::Contents[%client.GUID,%id],%i));
|
||||
%index++;
|
||||
}
|
||||
else
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>%1',$Data::EMail::Contents[%client.GUID,%id]);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tEMAIL\t1>Back To Listing</a>");
|
||||
return;
|
||||
}
|
||||
else if (getSubStr(%arg1,0,7) $= "EMAILID" && isNumber(getSubStr(%arg1,7,strLen(%arg1))))
|
||||
{
|
||||
%id = getSubStr(%arg1,7,strLen(%arg1));
|
||||
%guid = $Data::Client[%id];
|
||||
%count = $Data::EMail::Count[%guid];
|
||||
%name = $Data::ClientName[%id];
|
||||
%clid = plNameToCid(%name);
|
||||
if (checkEmails(%guid,%client.emailTitle))
|
||||
return;
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Electronic Mail<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", '<just:center>E-Mail sent to %1.',%name);
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', 1, '<just:center><a:gamelink\tEMAIL\t1>Back to Listing</a>');
|
||||
$Data::EMail::Title[%guid,%count] = %client.emailTitle;
|
||||
$Data::EMail::Sender[%guid,%count] = %client.namebase;
|
||||
$Data::EMail::Contents[%guid,%count] = %client.emailCont;
|
||||
$Data::EMail::Date[%guid,%count] = formatTimeString("DD, MM dd, yy @ hh:nn A");
|
||||
$Data::EMail::Count[%guid]++;
|
||||
if (IsObject(%clid))
|
||||
messageClient(%clid,'msgClient','\c3Received an E-Mail from %1. ~wfx/misc/warning_beep.wav',%client.namebase);
|
||||
return;
|
||||
}
|
||||
|
||||
switch$ (%arg1)
|
||||
{
|
||||
case "CLOSE":
|
||||
closeScoreScreen(%client);
|
||||
case "BACK": //Resets you to the main menu
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Main Page<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Please select a command.");
|
||||
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center>Command List:");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tSLFSTS\t1>-Self Statistics</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tEMAIL\t1>-Electronic Mail</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tINVENTORY\t1>-View Inventory</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tCLNMG\t1>-Clan Management</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tSAVE\t1>-Save Game</a>");
|
||||
|
||||
%client.PDAPage = "MAIN";
|
||||
|
||||
case "CLNSTP":
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Clan Management<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing clan setup.");
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Clan Name: %1 <a:input\tClanN\tClan Name\tClan Name>[Change]</a>',%client.clanN);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Clan Tag: %1 <a:input\tClanT\tClan Tag\tClan Tag>[Change]</a>',%client.clanT);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Short Description: %1 <a:input\tDesc\tShort Description\tDescription>[Change]</a>',%client.description);
|
||||
%index++;
|
||||
|
||||
if (%client.clanN !$= "" && %client.clanT !$= "")
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tCLNFN>Done</a>');
|
||||
%index++;
|
||||
|
||||
%client.PDAPage = "CLNSTP";
|
||||
|
||||
case "EMAIL":
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Electronic Mail<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing E-Mails in sequential order.");
|
||||
|
||||
%index = 0;
|
||||
%count = $Data::EMail::Count[%client.GUID];
|
||||
for (%i = 0; %i <= %count; %i++)
|
||||
{
|
||||
if ($Data::EMail::Title[%client.GUID,%i] !$= "")
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tEMAIL%1\t1>%2 - %3</a>',%i,$Data::EMail::Sender[%client.GUID,%i],$Data::EMail::Title[%client.GUID,%i]);
|
||||
%index++;
|
||||
}
|
||||
}
|
||||
|
||||
if (%index == 0)
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center>There are no E-Mails to show.");
|
||||
%index++;
|
||||
}
|
||||
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tEMAILSEND\t1>[Compose an E-Mail]</a>");
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tBACK\t1>Back To Main Menu</a>");
|
||||
%index++;
|
||||
|
||||
case "EMAILSEND":
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Electronic Mail<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>New E-Mail");
|
||||
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Title: %1 <a:input\temailTitle\tTitle\tE-Mail Title>[Change]</a>',%client.emailTitle);
|
||||
%index++;
|
||||
|
||||
%count = getSubStrOccurance(%client.emailCont,"\t");
|
||||
|
||||
if (%count != 0)
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Contents: %1 <a:input\temailCont\tContents\tContents>[Change]</a>',%client.emailCont);
|
||||
}
|
||||
else
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Contents: %1 <a:input\temailCont\tContents\tContents>[Change]</a>',%client.emailCont);
|
||||
%index++;
|
||||
if (%client.emailTitle !$= "" && %client.emailcont !$= "")
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tRECPT>Select Receptiant</a>');
|
||||
|
||||
case "RECPT":
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Electronic Mail<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Select Receptiant");
|
||||
|
||||
%count = $Data::ClientCount;
|
||||
%index = 0;
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tEMAILID%1\t1>%2</a>',%i,$Data::ClientName[%i]);
|
||||
%index++;
|
||||
}
|
||||
|
||||
case "CLNFN":
|
||||
if ($Data::IsInClan[%client.GUID])
|
||||
{
|
||||
%ID = $Data::ClanID[%client.GUID];
|
||||
if ($Data::ClanLeaderGUID[%ID] == %client.GUID)
|
||||
{
|
||||
$Data::ClanName[%ID] = %client.clanN;
|
||||
$Data::ClanTag[%ID] = %client.clanT;
|
||||
$Data::ClanDesc[%ID] = %client.description;
|
||||
forceScoreScreenOpen(%client,"CLNMG");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$Data::IsInCLan[%client.GUID] = true;
|
||||
|
||||
if ($Data::ClanCount $= "")
|
||||
$Data::ClanCount = 0;
|
||||
|
||||
$Data::ClanName[$Data::ClanCount] = %client.clanN;
|
||||
$Data::ClanTag[$Data::ClanCount] = %client.clanT;
|
||||
$Data::ClanDesc[$Data::ClanCount] = %client.desc;
|
||||
$Data::ClanLeader[$Data::ClanCount] = %client.namebase;
|
||||
$Data::ClanLeaderGUID[$Data::ClanCount] = %client.GUID;
|
||||
$Data::ClanMember[$Data::ClanCount, 0] = %client.GUID;
|
||||
$Data::ClanID[%client.GUID] = $Data::ClanCount;
|
||||
$Data::ClanCount++;
|
||||
setName(%client,"\cp\c7" @ %client.clanT @ "\c6" @ %client.namebase @ "\co");
|
||||
saveGame();
|
||||
forceScoreScreenOpen(%client,"CLNMG");
|
||||
}
|
||||
|
||||
%client.PDAPage = "MAIN";
|
||||
|
||||
case "CLNMG":
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Clan Management<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing clan management.");
|
||||
%index = 0;
|
||||
|
||||
if (!$Data::IsInClan[%client.GUID])
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>You are not in a clan. Try creating a <a:gamelink\tCLNSTP>[New Clan]</a>.');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Or view the <a:gamelink\tCLNLST>[List]</a> of clans.');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tBACK\t1>Back To Main Menu</a>");
|
||||
}
|
||||
else
|
||||
{
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Clan Name: %1',$Data::ClanName[$Data::ClanID[%client.GUID]]);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Clan Tag: %1', $Data::ClanTag[$Data::ClanID[%client.GUID]]);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Short Description: %1',%client.description);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tCLNMBR>[View]</a> member list.');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tCLNLST>[View]</a> other clans.');
|
||||
if ($Data::IsInClan[%client.GUID] && $Data::ClanLeaderGUID[$Data::ClanID[%client.GUID]] == %client.GUID)
|
||||
{
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tCLNSTP>[Edit]</a> Clan.');
|
||||
}
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tBACK\t1>Back To Main Menu</a>");
|
||||
}
|
||||
|
||||
%client.PDAPage = "CLNMG";
|
||||
|
||||
case "CLNMBR":
|
||||
%client.PDAPage = "CLNMBR";
|
||||
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Clan Management<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing member list.");
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Name: %1',%client.namebase);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tBACK\t1>Back To Previous Page</a>');
|
||||
%index++;
|
||||
|
||||
|
||||
case "SLFSTS": //Self Statistics
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Self Statistics<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing your stats.");
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Name: %1',%client.namebase);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Race: %1',%client.race);
|
||||
%index++;
|
||||
|
||||
if (%client.money $= "")
|
||||
%client.money = 0; //You got zilch.
|
||||
|
||||
%trans = %client.player.getTransform();
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Cash: $%1',%client.money);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>GPS Coordinates: %1 %2 %3',getWord(%trans,0),getWord(%trans,1),getWord(%trans,2));
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '');
|
||||
%index++;
|
||||
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tSLFSTS\t1>Refresh</a>');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tBACK\t1>Back To Main Menu</a>");
|
||||
%client.PDAPage = "SLFSTS";
|
||||
|
||||
case "INVENTORY": //View Inventory
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Show Inventory<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing your inventory.");
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, 'Minerals--');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, 'Steel: %1 units.', %client.units["Steel"]);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tBACK\t1>Back To Main Menu</a>");
|
||||
%client.PDAPage = "INVENTORY";
|
||||
|
||||
case "DEATH":
|
||||
if (isObject(%client.player) && %client.player.getState() $= "Move")
|
||||
return;
|
||||
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Death<just:right>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>You have died.");
|
||||
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', 0, "<just:center><a:gamelink\tRESPAWN\t1>Respawn</a>");
|
||||
%client.PDAPage = "DEATH";
|
||||
|
||||
case "DELETE":
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Electronic Mail<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>E-Mail deleted.");
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', 0, '<just:center><a:gamelink\tEMAIL\t1>Back to Listing</a>');
|
||||
$Data::EMail::Title[%client.GUID,%client.email] = "";
|
||||
|
||||
case "SAVE":
|
||||
saveGame();
|
||||
closeScoreScreen(%client);
|
||||
messageClient(%client,'msgSaveSuccess',"\c3Game successfully saved.");
|
||||
|
||||
case "RESPAWN":
|
||||
if (isObject(%client.player) && %client.player.getState() $= "Move")
|
||||
return;
|
||||
|
||||
%client.PDAPage = "MAIN";
|
||||
forceClientSpawn(%client);
|
||||
|
||||
case "SLFSTS": //Self Statistics
|
||||
messageClient( %client, 'SetScoreHudHeader', "", '<just:center>Self Statistics<just:right><a:gamelink\tCLOSE\t1>Close</a>');
|
||||
messageClient( %client, 'SetScoreHudSubheader', "", "<just:center>Showing your stats.");
|
||||
%index = 0;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Name: %1',%client.namebase);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Race: %1',%client.race);
|
||||
%index++;
|
||||
|
||||
if (%client.race $= "Draakan")
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Type: %1',%client.sex);
|
||||
else
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Sex: %1',%client.sex);
|
||||
%index++;
|
||||
|
||||
if (%client.money $= "")
|
||||
%client.money = 0; //You got zilch.
|
||||
|
||||
%trans = %client.player.getTransform();
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Cash: $%1',%client.money);
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>GPS Coordinates: %1 %2 %3',getWord(%trans,0),getWord(%trans,1),getWord(%trans,2));
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '');
|
||||
%index++;
|
||||
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tSLFSTS\t1>Refresh</a>');
|
||||
%index++;
|
||||
messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "<just:center><a:gamelink\tBACK\t1>Back To Main Menu</a>");
|
||||
%client.PDAPage = "SLFSTS";
|
||||
|
||||
default: //If something fails, return to the main menu.
|
||||
serverCmdProcessGameLink(%client,"BACK");
|
||||
}
|
||||
}
|
||||
|
||||
function serverCmdShowHud(%client, %tag)
|
||||
{
|
||||
%tagName = getWord(%tag, 1);
|
||||
%tag = getWord(%tag, 0);
|
||||
|
||||
if (%tag $= 'scoreScreen')
|
||||
serverCmdProcessGameLink(%client,%client.PDAPage);
|
||||
|
||||
messageClient(%client, 'OpenHud', "", %tag);
|
||||
switch$ (%tagname)
|
||||
{
|
||||
case "vehicleHud":
|
||||
vehicleHud::updateHud(1,%client,%tag);
|
||||
case "scoreScreen":
|
||||
updateScoreHudThread(%client, %tag);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -20,9 +20,9 @@ function TrainingGui::onWake( %this )
|
|||
TrainingMissionList.clear();
|
||||
|
||||
if ($Pref::Campaign !$= "")
|
||||
TrainingSelectMenu.onSelect(TrainingSelectMenu.findText($Pref::Campaign),$Pref::Campaign);
|
||||
TrainingSelectMenu.onSelect(TrainingSelectMenu.findText($Pref::Campaign),$Pref::Campaign);
|
||||
else
|
||||
TrainingSelectMenu.onSelect(0,TrainingSelectMenu.getText(0));
|
||||
TrainingSelectMenu.onSelect(0,TrainingSelectMenu.getText());
|
||||
TrainingMissionList.sort( 1 );
|
||||
TrainingMissionList.setSelectedRow( 0 );
|
||||
if ( $pref::TrainingDifficulty > 0 && $pref::TrainingDifficulty < 4 )
|
||||
|
|
@ -42,64 +42,53 @@ function TrainingGui::onSleep( %this )
|
|||
//------------------------------------------------------------------------------
|
||||
function TrainingGui::updateList( %this )
|
||||
{
|
||||
%cam = $Pref::Campaign;
|
||||
%dir = "Data/Campaigns/";
|
||||
%file = %dir @ %cam @ ".txt";
|
||||
%cam = $Pref::Campaign;
|
||||
%dir = "Data/Campaigns/";
|
||||
%file = %dir @ %cam @ ".txt";
|
||||
|
||||
if (!IsFile(%file))
|
||||
return false;
|
||||
if (!IsFile(%file))
|
||||
return false;
|
||||
|
||||
TrainingMissionList.clear();
|
||||
TrainingBriefingText.setValue( "" );
|
||||
TrainingPic.setBitmap( "" );
|
||||
TrainingPicFrame.setVisible( false );
|
||||
%count = getBlockData(%file,"Campaign",1,"MissionCount");
|
||||
TrainingMissionList.clear();
|
||||
TrainingBriefingText.setValue( "" );
|
||||
TrainingPic.setBitmap( "" );
|
||||
TrainingPicFrame.setVisible( false );
|
||||
|
||||
if (!IsObject(CampaignLoader))
|
||||
new ScriptObject(CampaignLoader) { class = "BasicDataParser"; };
|
||||
CampaignLoader.empty();
|
||||
CampaignLoader.load(%file);
|
||||
|
||||
%campaign = CampainLoader.get("Campaign",0);
|
||||
%count = %campaign.element("MissionCount");
|
||||
|
||||
//Before we do the loopy stuff, we should check if there's a specific training mission first
|
||||
%mission = getBlockData(%file,"Campaign",1,"Practice");
|
||||
%text = getBlockData(%file,"Campaign",1,"PracticeText");
|
||||
//Before we do the loopy stuff, we should check if there's a specific training mission first
|
||||
%mission = %campaign.element("Practice");
|
||||
%text = %campaign.element("PracticeText");
|
||||
|
||||
if (%text != -1 && %mission != -1)
|
||||
TrainingMissionList.addRow( 0, %text TAB %mission );
|
||||
if (%text != -1 && %mission != -1)
|
||||
TrainingMissionList.addRow( 0, %text TAB %mission );
|
||||
|
||||
for (%i = 1; %i <= %count; %i++)
|
||||
{
|
||||
%mission = getBlockData(%file,"Campaign",1,"Mission" @ %i);
|
||||
%text = getBlockData(%file,"Campaign",1,"MissionText" @ %i);
|
||||
TrainingMissionList.addRow( %i, %text TAB %mission );
|
||||
|
||||
//Now the mission list is where we need it, find the player settings..
|
||||
if (getBlockCount(%file,%mission) != 0)
|
||||
{
|
||||
$Training::Name[%Mission] = getBlockData(%file,%mission,1,"Name");
|
||||
$Training::Race[%Mission] = getBlockData(%file,%mission,1,"Race");
|
||||
$Training::Sex[%Mission] = getBlockData(%file,%mission,1,"Sex");
|
||||
$Training::Voice[%Mission] = getBlockData(%file,%mission,1,"Voice");
|
||||
$Training::VoicePitch[%Mission] = getBlockData(%file,%mission,1,"VoicePitch");
|
||||
$Training::Skin[%Mission] = getBlockData(%file,%mission,1,"Skin");
|
||||
$Training::EnemySkin[%Mission] = getBlockData(%file,%mission,1,"EnemySkin");
|
||||
$Training::EnemyName[%Mission] = getBlockData(%file,%mission,1,"EnemyName");
|
||||
$Training::EnemyTeam[%Mission] = getBlockData(%file,%mission,1,"EnemyTeam");
|
||||
$Training::PlayerTeam[%Mission] = getBlockData(%file,%mission,1,"PlayerTeam");
|
||||
$Training::StartLives[%Mission] = getBlockData(%file,%mission,1,"StartLives");
|
||||
$Training::EnemyRace[%Mission] = getBlockData(%file,%mission,1,"EnemyRace");
|
||||
}
|
||||
else
|
||||
{
|
||||
$Training::Name[%Mission] = getBlockData(%file,"Settings",1,"Name");
|
||||
$Training::Race[%Mission] = getBlockData(%file,"Settings",1,"Race");
|
||||
$Training::Sex[%Mission] = getBlockData(%file,"Settings",1,"Sex");
|
||||
$Training::Voice[%Mission] = getBlockData(%file,"Settings",1,"Voice");
|
||||
$Training::VoicePitch[%Mission] = getBlockData(%file,"Settings",1,"VoicePitch");
|
||||
$Training::Skin[%Mission] = getBlockData(%file,"Settings",1,"Skin");
|
||||
$Training::EnemySkin[%Mission] = getBlockData(%file,"Settings",1,"EnemySkin");
|
||||
$Training::EnemyName[%Mission] = getBlockData(%file,"Settings",1,"EnemyName");
|
||||
$Training::EnemyTeam[%Mission] = getBlockData(%file,"Settings",1,"EnemyTeam");
|
||||
$Training::PlayerTeam[%Mission] = getBlockData(%file,"Settings",1,"PlayerTeam");
|
||||
$Training::StartLives[%Mission] = getBlockData(%file,"Settings",1,"StartLives");
|
||||
$Training::EnemyRace[%Mission] = getBlockData(%file,"Settings",1,"EnemyRace");
|
||||
}
|
||||
}
|
||||
%settings = CampainLoader.get("Settings",0);
|
||||
for (%i = 1; %i <= %count; %i++)
|
||||
{
|
||||
%mission = %campain.element("Mission" @ %i);
|
||||
%text = %campaign.element("MissionText" @ %i);
|
||||
TrainingMissionList.addRow( %i, %text TAB %mission );
|
||||
//Now the mission list is where we need it, find the player settings..
|
||||
$Training::Name[%Mission] = %settings.element("Name");
|
||||
$Training::Race[%Mission] = %settings.element("Race");
|
||||
$Training::Sex[%Mission] = %settings.element("Sex");
|
||||
$Training::Voice[%Mission] = %settings.element("Voice");
|
||||
$Training::VoicePitch[%Mission] = %settings.element("VoicePitch");
|
||||
$Training::Skin[%Mission] = %settings.element("Skin");
|
||||
$Training::EnemySkin[%Mission] = %settings.element("EnemySkin");
|
||||
$Training::EnemyName[%Mission] = %settings.element("EnemyName");
|
||||
$Training::EnemyTeam[%Mission] = %settings.element("EnemyTeam");
|
||||
$Training::PlayerTeam[%Mission] = %settings.element("PlayerTeam");
|
||||
$Training::StartLives[%Mission] = %settings.element("StartLives");
|
||||
$Training::EnemyRace[%Mission] = %settings.element("EnemyRace");
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
|
@ -115,9 +104,9 @@ function TrainingGui::onClose( %this )
|
|||
//------------------------------------------------------------------------------
|
||||
function TrainingDifficultyMenu::onAdd( %this )
|
||||
{
|
||||
%this.add( "Easy", 1 );
|
||||
%this.add( "Medium", 2 );
|
||||
%this.add( "Hard", 3 );
|
||||
%this.add( "Easy", 1 );
|
||||
%this.add( "Medium", 2 );
|
||||
%this.add( "Hard", 3 );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
|
@ -130,83 +119,88 @@ function TrainingDifficultyMenu::onSelect( %this, %id, %text )
|
|||
function TrainingSelectMenu::onAdd( %this )
|
||||
{
|
||||
|
||||
//Uber Dynamic Campaign Listing :)
|
||||
%path = "Data/Campaigns/*.txt";
|
||||
%count = 0;
|
||||
for( %file = findFirstFile( %path ); %file !$= ""; %file = findNextFile( %path ) )
|
||||
{
|
||||
%this.add( getBlockData(%file,"Campaign",1,"Name"), %count);
|
||||
%count++;
|
||||
}
|
||||
//Uber Dynamic Campaign Listing :)
|
||||
%path = "Data/Campaigns/*.dat";
|
||||
%count = 0;
|
||||
|
||||
if (!IsObject(CampaignLoader))
|
||||
new ScriptObject(CampaignLoader) { class = "BasicDataParser"; };
|
||||
CampaignLoader.empty();
|
||||
CampaignLoader.load(%file);
|
||||
|
||||
for( %file = findFirstFile( %path ); %file !$= ""; %file = findNextFile( %path ) )
|
||||
{
|
||||
CampaignLoader.load(%file);
|
||||
%this.add( CampaignLoader.get("Campaign",%count).element("Name"), %count);
|
||||
%count++;
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function TrainingSelectMenu::onSelect( %this, %id, %text )
|
||||
{
|
||||
$Pref::Campaign = %text;
|
||||
$Pref::Campaign = %text;
|
||||
|
||||
%row = TrainingMissionList.getSelectedID() - 1;
|
||||
TrainingGui.updateList();
|
||||
TrainingGui.stopBriefing();
|
||||
TrainingSelectMenu.setText(%text); //Make sure our text is assigned..
|
||||
%row = TrainingMissionList.getSelectedID() - 1;
|
||||
TrainingGui.updateList();
|
||||
TrainingGui.stopBriefing();
|
||||
TrainingSelectMenu.setText(%text); //Make sure our text is assigned..
|
||||
|
||||
if ($Pref::Campaign $= %text)
|
||||
TrainingMissionList.setSelectedRow(%row);
|
||||
else
|
||||
TrainingMissionList.setSelectedRow(0);
|
||||
|
||||
if ($Pref::Campaign $= %text)
|
||||
TrainingMissionList.setSelectedRow(%row);
|
||||
else
|
||||
TrainingMissionList.setSelectedRow(0);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function TrainingMissionList::onSelect( %this, %id, %text )
|
||||
{
|
||||
TrainingGui.stopBriefing();
|
||||
%fileName = "missions/" @ getField( %text, 1 ) @ ".mis";
|
||||
%file = new FileObject();
|
||||
%state = 0;
|
||||
if ( %file.openForRead( %fileName ) )
|
||||
{
|
||||
%fileName = "missions/" @ getField( %text, 1 ) @ ".mis";
|
||||
%file = new FileObject();
|
||||
%state = 0;
|
||||
if ( %file.openForRead( %fileName ) )
|
||||
{
|
||||
// Get the mission briefing text:
|
||||
while ( !%file.isEOF() )
|
||||
{
|
||||
%line = %file.readLine();
|
||||
if ( %state == 0 && %line $= "//--- MISSION BRIEFING BEGIN ---" )
|
||||
%state = 1;
|
||||
else if ( %state > 0 && %line $= "//--- MISSION BRIEFING END ---" )
|
||||
break;
|
||||
else if ( %state == 1 )
|
||||
while ( !%file.isEOF() )
|
||||
{
|
||||
%line = %file.readLine();
|
||||
if ( %state == 0 && %line $= "//--- MISSION BRIEFING BEGIN ---" )
|
||||
%state = 1;
|
||||
else if ( %state > 0 && %line $= "//--- MISSION BRIEFING END ---" )
|
||||
break;
|
||||
else if ( %state == 1 )
|
||||
{
|
||||
%briefText = %briefText @ getSubStr( %line, 2, 1000 );
|
||||
%briefText = %briefText @ getSubStr( %line, 2, 1000 );
|
||||
%state = 2;
|
||||
}
|
||||
else if ( %state == 2 )
|
||||
%briefText = %briefText NL getSubStr( %line, 2, 1000 );
|
||||
}
|
||||
else if ( %state == 2 )
|
||||
%briefText = %briefText NL getSubStr( %line, 2, 1000 );
|
||||
}
|
||||
|
||||
// Get the mission briefing WAV file:
|
||||
while ( !%file.isEOF() )
|
||||
{
|
||||
%line = %file.readLine();
|
||||
%line = %file.readLine();
|
||||
if ( getSubStr( %line, 0, 17 ) $= "// BriefingWAV = " )
|
||||
{
|
||||
{
|
||||
%briefWAV = getSubStr( %line, 17, 1000 );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the bitmap name:
|
||||
while ( !%file.isEOF() )
|
||||
{
|
||||
%line = %file.readLine();
|
||||
%line = %file.readLine();
|
||||
if ( getSubStr( %line, 0, 12 ) $= "// Bitmap = " )
|
||||
{
|
||||
{
|
||||
%briefPic = getSubStr( %line, 12, 1000 );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
%file.close();
|
||||
}
|
||||
}
|
||||
else
|
||||
error( "Failed to open Single Player mission file " @ %fileName @ "!" );
|
||||
|
||||
|
|
@ -227,14 +221,12 @@ function TrainingMissionList::onSelect( %this, %id, %text )
|
|||
}
|
||||
|
||||
TrainingPlayBtn.setActive( %briefWAV !$= "" );
|
||||
TrainingBriefingText.setValue( %briefText );
|
||||
TrainingBriefingText.setValue( %briefText );
|
||||
TrainingBriefingScroll.scrollToTop();
|
||||
TrainingGui.WAVBase = firstWord( %briefWAV );
|
||||
TrainingGui.WAVCount = restWords( %briefWAV );
|
||||
%file.delete();
|
||||
|
||||
//if ( TrainingPlayTgl.getValue() )
|
||||
// TrainingGui.startBriefing();
|
||||
%file.delete();
|
||||
return true;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -472,8 +472,10 @@ function AIConnection::onAIConnect(%client, %name, %team, %skill, %offense, %voi
|
|||
|
||||
echo(%client.name);
|
||||
echo("CADD: " @ %client @ " " @ %client.getAddress());
|
||||
if ($CurrentMissionType !$= "RPG") //If it's RPG, don't increment the count
|
||||
$HostGamePlayerCount++;
|
||||
|
||||
// DDDX: Don't increment player count in RPG/Survival Games
|
||||
if ($CurrentMissionType !$= "RPG" && $CurrentMissionType !$= "SV")
|
||||
$HostGamePlayerCount++;
|
||||
|
||||
//set the initial team - Game.assignClientTeam() should be called later on...
|
||||
%client.team = %team;
|
||||
|
|
@ -908,5 +910,3 @@ function AIPilotVehicle(%client)
|
|||
{
|
||||
//this is not very well supported, but someone will find a use for this function...
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,11 +16,13 @@ function aiConnectByIndex(%index, %team)
|
|||
if ($BotProfile[%index, Voice] $= "")
|
||||
$BotProfile[%index, Voice] = "Bot1";
|
||||
|
||||
%skin[0] = 'BaseBot';
|
||||
%skin[1] = 'BaseBBot';
|
||||
%skin[0] = "BaseBot";
|
||||
%skin[1] = "BaseBBot";
|
||||
|
||||
if ($BotProfile[%index, Skin] $= '')
|
||||
$BotProfile[%index, Skin] = %skin[getRandom(0,1)];
|
||||
$BotProfile[%index, Skin] = addTaggedString($BotProfile[%index, Skin]);
|
||||
//$BotProfile[%index, Voice] = addTaggedString($BotProfile[%index, Voice]);
|
||||
|
||||
%client = aiConnect($BotProfile[%index, name], %team, $BotProfile[%index, skill], $BotProfile[%index, offense], $BotProfile[%index, voice], $BotProfile[%index, voicePitch]);
|
||||
%client.skin = $BotProfile[%index, skin];
|
||||
|
|
@ -251,304 +253,27 @@ function aiConnectMultiple(%numToConnect, %minSkill, %maxSkill, %team)
|
|||
}
|
||||
}
|
||||
|
||||
//Notes:
|
||||
//Ai Bot profiles: Balance out difficulties and settings.
|
||||
//Draakans and Derms make up most of the AI list
|
||||
//Human
|
||||
$BotProfile[0, name] = "Dalaila Hayes";
|
||||
$BotProfile[0, skill] = 0.95;
|
||||
$BotProfile[0, offense] = true;
|
||||
$BotProfile[0, voicePitch] = 0.875;
|
||||
$BotProfile[0, race] = "Human";
|
||||
$BotProfile[0, skin] = 'Swolf';
|
||||
$BotProfile[0, voice] = "Fem3";
|
||||
$BotProfile[0, sex] = "Female";
|
||||
|
||||
$BotProfile[1, name] = "Cynthia Fisher";
|
||||
$BotProfile[1, skill] = 0.95;
|
||||
$BotProfile[1, offense] = true;
|
||||
$BotProfile[1, voicePitch] = 0.875;
|
||||
$BotProfile[1, race] = "Human";
|
||||
$BotProfile[1, skin] = "Swolf";
|
||||
$BotProfile[1, voice] = "Fem3";
|
||||
$BotProfile[1, sex] = "Female";
|
||||
|
||||
$BotProfile[2, name] = "Commander Jackson";
|
||||
$BotProfile[2, skill] = 0.95;
|
||||
$BotProfile[2, offense] = true;
|
||||
$BotProfile[2, voicePitch] = 0.875;
|
||||
$BotProfile[2, race] = "Human";
|
||||
$BotProfile[2, skin] = 'Beagle';
|
||||
$BotProfile[2, voice] = "Male5";
|
||||
$BotProfile[2, sex] = "Male";
|
||||
|
||||
$BotProfile[3, name] = "Corperal Jones";
|
||||
$BotProfile[3, skill] = 0.95;
|
||||
$BotProfile[3, offense] = true;
|
||||
$BotProfile[3, voicePitch] = 0.875;
|
||||
$BotProfile[3, race] = "Human";
|
||||
$BotProfile[3, skin] = 'Beagle';
|
||||
$BotProfile[3, voice] = "Male5";
|
||||
$BotProfile[3, sex] = "Male";
|
||||
|
||||
//BioDerm
|
||||
$BotProfile[4, name] = "Beast";
|
||||
$BotProfile[4, skill] = 0.95;
|
||||
$BotProfile[4, offense] = true;
|
||||
$BotProfile[4, voicePitch] = 0.875;
|
||||
$BotProfile[4, race] = "Bioderm";
|
||||
$BotProfile[4, skin] = 'Horde';
|
||||
$BotProfile[4, voice] = "Derm3";
|
||||
$BotProfile[4, sex] = "Male";
|
||||
|
||||
$BotProfile[5, name] = "Retch";
|
||||
$BotProfile[5, skill] = 0.78;
|
||||
$BotProfile[5, offense] = false;
|
||||
$BotProfile[5, voicePitch] = 0.789;
|
||||
$BotProfile[5, race] = "Bioderm";
|
||||
$BotProfile[5, skin] = 'Horde';
|
||||
$BotProfile[5, voice] = "Derm2";
|
||||
|
||||
$BotProfile[6, name] = "Hagstomper";
|
||||
$BotProfile[6, skill] = 0.78;
|
||||
$BotProfile[6, offense] = false;
|
||||
$BotProfile[6, voicePitch] = 0.789;
|
||||
$BotProfile[6, race] = "Bioderm";
|
||||
$BotProfile[6, skin] = 'Horde';
|
||||
$BotProfile[6, voice] = "Derm2";
|
||||
|
||||
$BotProfile[6, name] = "Doormat";
|
||||
$BotProfile[6, skill] = 0.78;
|
||||
$BotProfile[6, offense] = false;
|
||||
$BotProfile[6, voicePitch] = 0.789;
|
||||
$BotProfile[6, race] = "Bioderm";
|
||||
$BotProfile[6, skin] = 'Horde';
|
||||
$BotProfile[6, voice] = "Derm2";
|
||||
|
||||
$BotProfile[7, name] = "Evenkill";
|
||||
$BotProfile[7, skill] = 0.78;
|
||||
$BotProfile[7, offense] = false;
|
||||
$BotProfile[7, voicePitch] = 0.789;
|
||||
$BotProfile[7, race] = "Bioderm";
|
||||
$BotProfile[7, skin] = 'Horde';
|
||||
$BotProfile[7, voice] = "Derm2";
|
||||
|
||||
$BotProfile[8, name] = "Heart Eater";
|
||||
$BotProfile[8, skill] = 0.78;
|
||||
$BotProfile[8, offense] = false;
|
||||
$BotProfile[8, voicePitch] = 0.789;
|
||||
$BotProfile[8, race] = "Bioderm";
|
||||
$BotProfile[8, skin] = 'Horde';
|
||||
$BotProfile[8, voice] = "Derm2";
|
||||
|
||||
$BotProfile[9, name] = "Torox the Backbreaker";
|
||||
$BotProfile[9, skill] = 0.78;
|
||||
$BotProfile[9, offense] = false;
|
||||
$BotProfile[9, voicePitch] = 0.789;
|
||||
$BotProfile[9, race] = "Bioderm";
|
||||
$BotProfile[9, skin] = 'Horde';
|
||||
$BotProfile[9, voice] = "Derm2";
|
||||
|
||||
$BotProfile[10, name] = "Face Breaker";
|
||||
$BotProfile[10, skill] = 0.78;
|
||||
$BotProfile[10, offense] = false;
|
||||
$BotProfile[10, voicePitch] = 0.789;
|
||||
$BotProfile[10, race] = "Bioderm";
|
||||
$BotProfile[10, skin] = 'Horde';
|
||||
$BotProfile[10, voice] = "Derm2";
|
||||
|
||||
$BotProfile[11, name] = "Monkey Bones";
|
||||
$BotProfile[11, skill] = 0.78;
|
||||
$BotProfile[11, offense] = false;
|
||||
$BotProfile[11, voicePitch] = 0.789;
|
||||
$BotProfile[11, race] = "Bioderm";
|
||||
$BotProfile[11, skin] = 'Horde';
|
||||
$BotProfile[11, voice] = "Derm2";
|
||||
|
||||
$BotProfile[12, name] = "Breath of Fear";
|
||||
$BotProfile[12, skill] = 0.78;
|
||||
$BotProfile[12, offense] = false;
|
||||
$BotProfile[12, voicePitch] = 0.789;
|
||||
$BotProfile[12, race] = "Bioderm";
|
||||
$BotProfile[12, skin] = 'Horde';
|
||||
$BotProfile[12, voice] = "Derm2";
|
||||
|
||||
$BotProfile[13, name] = "Devours-All";
|
||||
$BotProfile[13, skill] = 0.78;
|
||||
$BotProfile[13, offense] = false;
|
||||
$BotProfile[13, voicePitch] = 0.789;
|
||||
$BotProfile[13, race] = "Bioderm";
|
||||
$BotProfile[13, skin] = 'Horde';
|
||||
$BotProfile[13, voice] = "Derm2";
|
||||
|
||||
$BotProfile[14, name] = "Skullcrusher";
|
||||
$BotProfile[14, skill] = 0.78;
|
||||
$BotProfile[14, offense] = false;
|
||||
$BotProfile[15, voicePitch] = 0.789;
|
||||
$BotProfile[16, race] = "Bioderm";
|
||||
$BotProfile[17, skin] = 'Horde';
|
||||
$BotProfile[18, voice] = "Derm2";
|
||||
|
||||
//Draakan (Eh.. their real names use the derms' from SPDialog.cs) -- Most have their own backStory, but some are just here to take up room
|
||||
//My personal picks: Dolosus (duh?), Sharp Tooth, and Iguana
|
||||
$BotProfile[19, name] = "Dolosus"; //Dolosus Irokhirr Zhor
|
||||
$BotProfile[19, skill] = 0.95;
|
||||
$BotProfile[19, offense] = true;
|
||||
$BotProfile[19, voicePitch] = 0.875;
|
||||
$BotProfile[19, race] = "Draakan";
|
||||
$BotProfile[19, skin] = 'Gecko';
|
||||
$BotProfile[19, voice] = "Derm3";
|
||||
$BotProfile[19, sex] = "A";
|
||||
|
||||
$BotProfile[20, name] = "Rex"; //#367378 (Genetic failure)
|
||||
$BotProfile[20, skill] = 0.89;
|
||||
$BotProfile[20, offense] = true;
|
||||
$BotProfile[20, voicePitch] = 0.781;
|
||||
$BotProfile[20, race] = "Draakan";
|
||||
$BotProfile[20, skin] = 'Gecko';
|
||||
$BotProfile[20, voice] = "Derm2";
|
||||
$BotProfile[20, sex] = "A";
|
||||
|
||||
$BotProfile[21, name] = "Raptor"; //Hrreshig "Raptor" Kolkhris
|
||||
$BotProfile[21, skill] = 0.88;
|
||||
$BotProfile[21, offense] = true;
|
||||
$BotProfile[21, voicePitch] = 0.972;
|
||||
$BotProfile[21, race] = "Draakan";
|
||||
$BotProfile[21, skin] = 'Gecko';
|
||||
$BotProfile[21, voice] = "Derm2";
|
||||
$BotProfile[21, sex] = "A";
|
||||
|
||||
$BotProfile[22, name] = "Iguana"; //Marakh "Iguana" Azarok
|
||||
$BotProfile[22, skill] = 0.45;
|
||||
$BotProfile[22, offense] = false;
|
||||
$BotProfile[22, voicePitch] = 0.673;
|
||||
$BotProfile[22, race] = "Draakan";
|
||||
$BotProfile[22, skin] = 'Gecko';
|
||||
$BotProfile[22, voice] = "Derm1";
|
||||
$BotProfile[22, sex] = "A";
|
||||
|
||||
$BotProfile[23, name] = "Sharp Tooth"; //Murkhofud "Sharp Tooth" Khel
|
||||
$BotProfile[23, skill] = 0.89;
|
||||
$BotProfile[23, offense] = true;
|
||||
$BotProfile[23, voicePitch] = 0.875;
|
||||
$BotProfile[23, race] = "Draakan";
|
||||
$BotProfile[23, skin] = 'Gecko';
|
||||
$BotProfile[23, voice] = "Derm1";
|
||||
$BotProfile[23, sex] = "A";
|
||||
|
||||
$BotProfile[24, name] = "Snake"; //Morax "Snake" Serexhar
|
||||
$BotProfile[24, skill] = 0.78;
|
||||
$BotProfile[24, offense] = false;
|
||||
$BotProfile[24, voicePitch] = 1;
|
||||
$BotProfile[24, race] = "Draakan";
|
||||
$BotProfile[24, skin] = 'Gecko';
|
||||
$BotProfile[24, voice] = "Derm2";
|
||||
$BotProfile[24, sex] = "A";
|
||||
|
||||
$BotProfile[25, name] = "Gila"; //Gorog "Gila" Jok
|
||||
$BotProfile[25, skill] = 0.80;
|
||||
$BotProfile[25, offense] = true;
|
||||
$BotProfile[25, voicePitch] = 0.578;
|
||||
$BotProfile[25, race] = "Draakan";
|
||||
$BotProfile[25, skin] = 'Gecko';
|
||||
$BotProfile[25, voice] = "Derm1";
|
||||
$BotProfile[25, sex] = "B";
|
||||
|
||||
$BotProfile[26, name] = "Cobra"; //Karghaz "Cobra" Tumoz
|
||||
$BotProfile[26, skill] = 0.80;
|
||||
$BotProfile[26, offense] = true;
|
||||
$BotProfile[26, voicePitch] = 0.578;
|
||||
$BotProfile[26, race] = "Draakan";
|
||||
$BotProfile[26, skin] = 'Gecko';
|
||||
$BotProfile[26, voice] = "Derm1";
|
||||
$BotProfile[26, sex] = "C";
|
||||
|
||||
$BotProfile[27, name] = "Viper"; //Malevolox "Viper" Zon
|
||||
$BotProfile[27, skill] = 0.80;
|
||||
$BotProfile[27, offense] = true;
|
||||
$BotProfile[27, voicePitch] = 0.578;
|
||||
$BotProfile[27, race] = "Draakan";
|
||||
$BotProfile[27, skin] = 'Gecko';
|
||||
$BotProfile[27, voice] = "Derm1";
|
||||
$BotProfile[27, sex] = "A";
|
||||
|
||||
$BotProfile[27, name] = "Komodo Dragon";
|
||||
$BotProfile[27, skill] = 0.80;
|
||||
$BotProfile[27, offense] = true;
|
||||
$BotProfile[27, voicePitch] = 0.578;
|
||||
$BotProfile[27, race] = "Draakan";
|
||||
$BotProfile[27, skin] = 'Gecko';
|
||||
$BotProfile[27, voice] = "Derm1";
|
||||
$BotProfile[27, sex] = "C";
|
||||
|
||||
$BotProfile[27, name] = "Red Dragon";
|
||||
$BotProfile[27, skill] = 0.78;
|
||||
$BotProfile[27, offense] = false;
|
||||
$BotProfile[27, voicePitch] = 0.789;
|
||||
$BotProfile[27, race] = "Draakan";
|
||||
$BotProfile[27, skin] = 'Gecko';
|
||||
$BotProfile[27, voice] = "Derm2";
|
||||
$BotProfile[27, sex] = "A";
|
||||
|
||||
$BotProfile[29, name] = "Torus";
|
||||
$BotProfile[29, skill] = 0.78;
|
||||
$BotProfile[29, offense] = false;
|
||||
$BotProfile[29, voicePitch] = 0.789;
|
||||
$BotProfile[29, race] = "Draakan";
|
||||
$BotProfile[29, skin] = 'Gecko';
|
||||
$BotProfile[29, voice] = "Derm2";
|
||||
$BotProfile[29, sex] = "A";
|
||||
|
||||
$BotProfile[30, name] = "Slicer";
|
||||
$BotProfile[30, skill] = 0.78;
|
||||
$BotProfile[30, offense] = false;
|
||||
$BotProfile[30, voicePitch] = 0.789;
|
||||
$BotProfile[30, race] = "Draakan";
|
||||
$BotProfile[30, skin] = 'Gecko';
|
||||
$BotProfile[30, voice] = "Derm3";
|
||||
$BotProfile[30, sex] = "C";
|
||||
|
||||
$BotProfile[31, name] = "Achilles";
|
||||
$BotProfile[31, skill] = 0.78;
|
||||
$BotProfile[31, offense] = false;
|
||||
$BotProfile[31, voicePitch] = 0.789;
|
||||
$BotProfile[31, race] = "Criollos";
|
||||
$BotProfile[31, skin] = 'HALO_SKIN';
|
||||
$BotProfile[31, voice] = "Derm2";
|
||||
|
||||
$BotProfile[32, name] = "King Snake";
|
||||
$BotProfile[32, skill] = 0.78;
|
||||
$BotProfile[32, offense] = false;
|
||||
$BotProfile[32, voicePitch] = 0.789;
|
||||
$BotProfile[32, race] = "Draakan";
|
||||
$BotProfile[32, skin] = 'Gecko';
|
||||
$BotProfile[32, voice] = "Derm2";
|
||||
$BotProfile[32, sex] = "A";
|
||||
|
||||
$BotProfile[33, name] = "Troglodyte";
|
||||
$BotProfile[33, skill] = 0.78;
|
||||
$BotProfile[33, offense] = false;
|
||||
$BotProfile[33, voicePitch] = 0.789;
|
||||
$BotProfile[33, race] = "Draakan";
|
||||
$BotProfile[33, skin] = 'Gecko';
|
||||
$BotProfile[33, voice] = "Derm2";
|
||||
$BotProfile[33, sex] = "A";
|
||||
|
||||
//Criollos (Wow.. only two of them)
|
||||
$BotProfile[34, name] = "Alchaldes";
|
||||
$BotProfile[34, skill] = 0.78;
|
||||
$BotProfile[34, offense] = false;
|
||||
$BotProfile[34, voicePitch] = 0.789;
|
||||
$BotProfile[34, race] = "Criollos";
|
||||
$BotProfile[34, skin] = 'HALO_SKIN';
|
||||
$BotProfile[34, voice] = "Derm2";
|
||||
|
||||
$BotProfile[35, name] = "Hammurabi";
|
||||
$BotProfile[35, skill] = 0.78;
|
||||
$BotProfile[35, offense] = false;
|
||||
$BotProfile[35, voicePitch] = 0.789;
|
||||
$BotProfile[35, race] = "Criollos";
|
||||
$BotProfile[35, skin] = 'HALO_SKIN';
|
||||
$BotProfile[35, voice] = "Derm2";
|
||||
|
||||
$BotProfile::Count = 35;
|
||||
function aiReloadProfiles()
|
||||
{
|
||||
if (!IsObject(BotProfiles))
|
||||
new ScriptObject(BotProfiles) { class = "BasicDataParser"; };
|
||||
BotProfiles.empty();
|
||||
BotProfiles.load("prefs/Bot Profiles.conf");
|
||||
%count = BotProfiles.count("Bot");
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
%Entry = BotProfiles.get("Bot",%i);
|
||||
$BotProfile[%i, name] = %Entry.element("Name");
|
||||
$BotProfile[%i, skill] = %Entry.element("skill");
|
||||
$BotProfile[%i, offense] = %Entry.element("offense");
|
||||
$BotProfile[%i, voicePitch] = %Entry.element("voicePitch");
|
||||
$BotProfile[%i, race] = %Entry.element("race");
|
||||
$BotProfile[%i, skin] = %Entry.element("skin");
|
||||
$BotProfile[%i, voice] = %Entry.element("voice");
|
||||
$BotProfile[%i, sex] = %Entry.element("sex");
|
||||
}
|
||||
$BotProfile::Count = %count;
|
||||
warn("scripts/aiBotProfiles.cs: Loaded" SPC %count SPC "bot profiles.");
|
||||
return true;
|
||||
}
|
||||
aiReloadProfiles();
|
||||
26
scripts/aiNS.cs
Normal file
26
scripts/aiNS.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
function BOLGame::AIInit(%game)
|
||||
{
|
||||
//call the default AIInit() function
|
||||
AIInit();
|
||||
}
|
||||
|
||||
function BOLGame::onAIRespawn(%game, %client)
|
||||
{
|
||||
//add the default task
|
||||
if (! %client.defaultTasksAdded)
|
||||
{
|
||||
%client.defaultTasksAdded = true;
|
||||
%client.addTask(AIEngageTask);
|
||||
%client.addTask(AIPickupItemTask);
|
||||
// %client.addTask(AIUseInventoryTask); They spawn with the stuff they need
|
||||
%client.addTask(AITauntCorpseTask);
|
||||
%client.addTask(AIEngageTurretTask);
|
||||
%client.addtask(AIDetectMineTask);
|
||||
// %client.addTask(AIPatrolTask); They don't move unless told to
|
||||
}
|
||||
|
||||
//set the inv flag
|
||||
%client.spawnUseInv = true;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -338,9 +338,11 @@ function AIUnassignClient(%client)
|
|||
%client.objective.clientLevel[%client.objectiveLevel] = "";
|
||||
}
|
||||
}
|
||||
%client.objective.unassignClient(%client);
|
||||
%client.objective = "";
|
||||
%client.objectiveWeight = 0;
|
||||
// DDDX: Fixes some console spamming is all
|
||||
if (isObject(%client.objective))
|
||||
%client.objective.unassignClient(%client);
|
||||
%client.objective = "";
|
||||
%client.objectiveWeight = 0;
|
||||
}
|
||||
|
||||
//debuging - refresh aidebugq() if required
|
||||
|
|
|
|||
|
|
@ -1,50 +1,44 @@
|
|||
// --------------------------------------------------------
|
||||
// aiSurvival.cs
|
||||
// AI scripts for bots in the Survival gamemode
|
||||
// Copyright (c) 2012 The DarkDragonDX
|
||||
// ========================================================
|
||||
|
||||
function SVGame::AIInit(%game)
|
||||
{
|
||||
//call the default AIInit() function
|
||||
AIInit();
|
||||
//call the default AIInit() function
|
||||
AIInit();
|
||||
return true;
|
||||
}
|
||||
|
||||
function SVGame::onAIRespawn(%game, %client)
|
||||
{
|
||||
//add the default task
|
||||
//add the default task
|
||||
if (! %client.defaultTasksAdded)
|
||||
{
|
||||
%client.defaultTasksAdded = true;
|
||||
%client.addTask(AIEngageTask);
|
||||
%client.addTask(AIPickupItemTask);
|
||||
%client.addTask(AITauntCorpseTask);
|
||||
%client.addTask(AIEngageTask);
|
||||
%client.addTask(AIPickupItemTask);
|
||||
// %client.addTask(AITauntCorpseTask);
|
||||
%client.addTask(AIEngageTurretTask);
|
||||
%client.addtask(AIDetectMineTask);
|
||||
%client.addTask(AIPatrolTask);
|
||||
// %client.addtask(AIDetectMineTask);
|
||||
%client.addTask(AIPatrolTask);
|
||||
}
|
||||
%client.setSkillLevel(99);
|
||||
%client.hide();
|
||||
%client.hideClientInList();
|
||||
|
||||
//Now, force the bot to choose a player
|
||||
%count = clientGroup.getCount();
|
||||
%rnd = getRandom(0,%count);
|
||||
%rndcl = clientGroup.getObject(%rnd);
|
||||
|
||||
%newObjective = new AIObjective(AIOAttackPlayer)
|
||||
{
|
||||
dataBlock = "AIObjectiveMarker";
|
||||
weightLevel1 = 10000;
|
||||
description = "Attack Player";
|
||||
targetClient = %rndcl;
|
||||
offense = true;
|
||||
};
|
||||
//echo(%newObjective);
|
||||
MissionCleanup.add(%newObjective);
|
||||
$ObjectiveQ[%client.team].add(%newObjective);
|
||||
%client.objectiveTask = %newObjective;
|
||||
|
||||
%client.addTask(AIAttackPlayer);
|
||||
%client.bountyTask = %client.addTask(AIBountyEngageTask);
|
||||
|
||||
Game.aiCount++;
|
||||
//set the inv flag
|
||||
%client.spawnUseInv = true;
|
||||
}
|
||||
|
||||
|
||||
//Now, force the bot to choose a player
|
||||
%count = clientGroup.getCount();
|
||||
%rnd = getRandom(0,%count);
|
||||
%rndcl = clientGroup.getObject(%rnd);
|
||||
|
||||
%client.stepEngage(%rndcl);
|
||||
|
||||
Game.aiCount++;
|
||||
//set the inv flag
|
||||
%client.spawnUseInv = true;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
30
scripts/autoexec/GUIMLWorkaround.cs
Normal file
30
scripts/autoexec/GUIMLWorkaround.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// #autoload
|
||||
// #name = GUIML Workaround
|
||||
// #version = 2.0
|
||||
// #date = March 1st, 2010
|
||||
// #category = Fix
|
||||
// #author = Dark Dragon DX
|
||||
// #warrior = DarkDragonDX
|
||||
// #email = DarkDragonDX@Hotmail.com
|
||||
// #description = Adds a failSafe for the <a:command> tag. Mainly for players that use mods with interactive GUIML elements.
|
||||
|
||||
package GUIMLPackage
|
||||
{
|
||||
function toggleEditor(%make)
|
||||
{
|
||||
parent::toggleEditor(%make); //Call parent function
|
||||
if (!isActivePackage(GUIMLWorkaround))
|
||||
activatePackage(GUIMLWorkaround);
|
||||
}
|
||||
};
|
||||
activatePackage(GUIMLPackage);
|
||||
|
||||
//Seperate package to activate our new code
|
||||
package GUIMLWorkaround
|
||||
{
|
||||
function GuiMLTextCtrl::onURL(%this, %url)
|
||||
{
|
||||
//parent::onURL(%this, %url);
|
||||
commandToServer('ProcessGameLink',getField(%url,1));
|
||||
}
|
||||
};
|
||||
1052
scripts/autoexec/TCmini-client.cs
Normal file
1052
scripts/autoexec/TCmini-client.cs
Normal file
File diff suppressed because it is too large
Load diff
33
scripts/autoexec/TerrainUEPrevent.cs
Normal file
33
scripts/autoexec/TerrainUEPrevent.cs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// #autoload
|
||||
// #name = Terrain UE Prevent
|
||||
// #version = 1.0
|
||||
// #date = Saturday, July 25, 2009
|
||||
// #category = Fix
|
||||
// #author = Dark Dragon DX
|
||||
// #warrior = DarkDragonDX
|
||||
// #email = DarkDragonDX@Hotmail.com
|
||||
// #description = A "prevention" for when you open the command Circuit on a map without terrain and UE. (Like ANTS)
|
||||
|
||||
package TerrainFix
|
||||
{
|
||||
function toggleCommanderMap(%val)
|
||||
{
|
||||
%count = ServerConnection.getCount();
|
||||
|
||||
for (%i = 0; %i < %count; %i++) //Search for my terrain..
|
||||
{
|
||||
%obj = ServerConnection.getObject(%i); //Get the object
|
||||
|
||||
if (%obj != -1) //No console spam
|
||||
if (%obj.getClassName() $= "TerrainBlock") //Is it terrain?
|
||||
{
|
||||
parent::toggleCommanderMap(%val); //Win
|
||||
return true;
|
||||
}
|
||||
}
|
||||
messageBoxOk("Error","Unable to open command circuit, no terrain exists."); //Tell me
|
||||
return false;
|
||||
}
|
||||
};
|
||||
activatePackage(TerrainFix);
|
||||
|
||||
67
scripts/autoexec/debugLog.cs
Normal file
67
scripts/autoexec/debugLog.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
// #autoload
|
||||
// #name = Debug Log
|
||||
// #version = 1.0
|
||||
// #category = Utility
|
||||
// #warrior = DarkDragonDX
|
||||
// #description = Adds a debug log.
|
||||
|
||||
package debugLog
|
||||
{
|
||||
function echo(%arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10)
|
||||
{
|
||||
if (!IsObject(DebugLogger))
|
||||
{
|
||||
new FileObject(DebugLogger);
|
||||
DebugLogger.lineCount = 0;
|
||||
DebugLogger.openForWrite("debugLog.txt");
|
||||
}
|
||||
if (DebugLogger.lineCount >= 10)
|
||||
{
|
||||
DebugLogger.close();
|
||||
DebugLogger.openForAppend("debugLog.txt");
|
||||
}
|
||||
DebugLogger.writeLine(%arg1 @ %arg2 @ %arg3 @ %arg4 @ %arg5 @ %arg6 @ %arg7 @ %arg8 @ %arg9 @ %arg10);
|
||||
DebugLogger.lineCount++;
|
||||
parent::echo(%arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10);
|
||||
return true;
|
||||
}
|
||||
|
||||
function error(%arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10)
|
||||
{
|
||||
if (!IsObject(DebugLogger))
|
||||
{
|
||||
new FileObject(DebugLogger);
|
||||
DebugLogger.lineCount = 0;
|
||||
DebugLogger.openForWrite("debugLog.txt");
|
||||
}
|
||||
if (DebugLogger.lineCount >= 10)
|
||||
{
|
||||
DebugLogger.close();
|
||||
DebugLogger.openForAppend("debugLog.txt");
|
||||
}
|
||||
DebugLogger.writeLine("Error: " @ %arg1 @ %arg2 @ %arg3 @ %arg4 @ %arg5 @ %arg6 @ %arg7 @ %arg8 @ %arg9 @ %arg10);
|
||||
DebugLogger.lineCount++;
|
||||
parent::error(%arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10);
|
||||
return true;
|
||||
}
|
||||
|
||||
function warning(%arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10)
|
||||
{
|
||||
if (!IsObject(DebugLogger))
|
||||
{
|
||||
new FileObject(DebugLogger);
|
||||
DebugLogger.lineCount = 0;
|
||||
DebugLogger.openForWrite("debugLog.txt");
|
||||
}
|
||||
if (DebugLogger.lineCount >= 10)
|
||||
{
|
||||
DebugLogger.close();
|
||||
DebugLogger.openForAppend("debugLog.txt");
|
||||
}
|
||||
DebugLogger.writeLine("Warning: " @ %arg1 @ %arg2 @ %arg3 @ %arg4 @ %arg5 @ %arg6 @ %arg7 @ %arg8 @ %arg9 @ %arg10);
|
||||
DebugLogger.lineCount++;
|
||||
parent::warning(%arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
activatePackage(debugLog);
|
||||
|
|
@ -9,24 +9,45 @@
|
|||
// #description = Adds a new command-line to Tribes 2 for shortcuts: -safeMode
|
||||
// #status = Release
|
||||
|
||||
package SafeMode{
|
||||
function DispatchLaunchMode()
|
||||
package SafeModeOverrides
|
||||
{
|
||||
parent::DispatchLaunchMode();
|
||||
function TCPObject::onLine(){ return true;}
|
||||
function TCPObject::connect(){ return true; }
|
||||
function TCPObject::disconnect(){ return true; }
|
||||
function TCPObject::listen(){ return true; }
|
||||
function TCPObject::send(){ return true; }
|
||||
|
||||
// check T2 command line arguments
|
||||
for(%i = 1; %i < $Game::argc ; %i++)
|
||||
{
|
||||
%arg = $Game::argv[%i];
|
||||
%nextArg = $Game::argv[%i+1];
|
||||
%hasNextArg = $Game::argc - %i > 1;
|
||||
function HTTPObject::onLine(){ return true; }
|
||||
function HTTPObject::connect(){ return true; }
|
||||
function HTTPObject::disconnect(){ return true; }
|
||||
function HTTPObject::listen(){ return true; }
|
||||
function HTTPObject::send(){ return true;}
|
||||
function HTTPObject::post(){ return true; }
|
||||
|
||||
if( !stricmp(%arg, "-Safemode")) //If enabled, cuts off all TCP & HTTP object connections, preventing UE's when running T2 without internet
|
||||
{
|
||||
exec("scripts/Safemode.cs");
|
||||
}
|
||||
}
|
||||
}
|
||||
function SecureHTTPObject::onLine(){ return true; }
|
||||
function SecureHTTPObject::connect(){ return true; }
|
||||
function SecureHTTPObject::disconnect(){ return true; }
|
||||
function SecureHTTPObject::listen(){ return true; }
|
||||
function SecureHTTPObject::send(){ return true; }
|
||||
function SecureHTTPObject::post(){ return true; }
|
||||
};
|
||||
activatePackage(SafeMode);
|
||||
|
||||
package SafeMode
|
||||
{
|
||||
function DispatchLaunchMode()
|
||||
{
|
||||
parent::DispatchLaunchMode();
|
||||
|
||||
// check T2 command line arguments
|
||||
for(%i = 1; %i < $Game::argc ; %i++)
|
||||
{
|
||||
%arg = $Game::argv[%i];
|
||||
%nextArg = $Game::argv[%i+1];
|
||||
%hasNextArg = $Game::argc - %i > 1;
|
||||
|
||||
if( !stricmp(%arg, "-Safemode")) //If enabled, cuts off all TCP & HTTP object connections, preventing UE's when running T2 without internet
|
||||
activatePackage(SafeModeOverrides);
|
||||
}
|
||||
}
|
||||
};
|
||||
activatePackage(SafeMode);
|
||||
|
|
@ -2178,5 +2178,5 @@ function SiegeHalftimeHeaderText::onResize( %this, %width, %height )
|
|||
|
||||
//Was moved to client.cs from console_end.cs because alxPlayMusic didn't want to work from console_end.cs for some odd reason ...
|
||||
if ($pref::Audio::musicEnabled)
|
||||
alxPlayMusic("T2BOL/Music/Menu.mp3");
|
||||
alxPlayMusic("T2BOL/Music/Menu.mp3");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
//Parse our file blahha!
|
||||
// Replacement code for the original T2 credits?
|
||||
if (!isFile("data/creditsText.txt"))
|
||||
{
|
||||
exec("scripts/creditsText_default.cs");
|
||||
}
|
||||
exec("scripts/creditsText_default.cs");
|
||||
else
|
||||
{
|
||||
%read = new fileObject();
|
||||
%read.openForRead("data/creditsText.txt");
|
||||
%read = new fileObject();
|
||||
%read.openForRead("data/creditsText.txt");
|
||||
|
||||
while (!%read.isEOF())
|
||||
{
|
||||
%line = %read.readline();
|
||||
addCreditsLine(%line);
|
||||
}
|
||||
%read.detach();
|
||||
}
|
||||
while (!%read.isEOF())
|
||||
{
|
||||
%line = %read.readline();
|
||||
addCreditsLine(%line);
|
||||
}
|
||||
%read.detach();
|
||||
}
|
||||
|
|
@ -14,8 +14,9 @@ $DeathMessageCampingCount = 1;
|
|||
$DeathMessageCamping[0] = '\c0%1 was killed for camping near the Nexus.';
|
||||
|
||||
//Out of Bounds deaths
|
||||
$DeathMessageOOBCount = 1;
|
||||
$DeathMessageOOBCount = 2;
|
||||
$DeathMessageOOB[0] = '\c0%1 was killed for loitering outside the mission area.';
|
||||
$DeathMessageOOB[1] = '\c0%1 was eaten by a Grue.';
|
||||
|
||||
$DeathMessageLavaCount = 4;
|
||||
$DeathMessageLava[0] = '\c0%1\'s last thought before falling into the lava : \'Oops\'.';
|
||||
|
|
|
|||
|
|
@ -1118,6 +1118,9 @@ function DefaultGame::forceObserver( %game, %client, %reason )
|
|||
}
|
||||
|
||||
case "spawnTimeout":
|
||||
// DDDX: Fix for AI's derping this up
|
||||
if (!IsObject(%client))
|
||||
return;
|
||||
%client.camera.getDataBlock().setMode( %client.camera, "observerTimeout" );
|
||||
messageClient(%client, 'MsgClientJoinTeam', '\c2You have been placed in observer mode due to delay in respawning.', %client.name, %game.getTeamName(0), %client, 0 );
|
||||
logEcho(%client.nameBase@" (cl "@%client@") was placed in observer mode due to spawn delay");
|
||||
|
|
@ -1158,8 +1161,13 @@ function DefaultGame::displayDeathMessages(%game, %clVictim, %clKiller, %damageT
|
|||
// z0dd - ZOD, 6/18/02. From Panama Jack, send the damageTypeText as the last varible
|
||||
// in each death message so client knows what weapon it was that killed them.
|
||||
|
||||
%victimGender = (%clVictim.sex $= "Male" ? 'him' : 'her');
|
||||
%victimPoss = (%clVictim.sex $= "Male" ? 'his' : 'her');
|
||||
// Handle Draakan genders
|
||||
%victimSex = %clVictim.sex;
|
||||
if (%victimSex $= "A" || %victimSex $= "B" || %victimSex $= "C")
|
||||
%victimSex = "Male";
|
||||
%victimGender = (%victimSex $= "Male" ? 'him' : 'her');
|
||||
%victimPoss = (%victimSex $= "Male" ? 'his' : 'her');
|
||||
|
||||
%killerGender = (%clKiller.sex $= "Male" ? 'him' : 'her');
|
||||
%killerPoss = (%clKiller.sex $= "Male" ? 'his' : 'her');
|
||||
%victimGenderPoss = (%clVictim.sex $= "Male" ? 'he' : 'she');
|
||||
|
|
@ -3429,7 +3437,8 @@ function DefaultGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %arg4
|
|||
{
|
||||
messageClient( %client, 'ClearHud', "", 'scoreScreen', 0 );
|
||||
%client.isViewingStatistics = false;
|
||||
CTFGame::updateScoreHud(%game,%client,'scoreHud');
|
||||
//CTFGame:updateScoreHud:(%game,%client,'scoreHud');
|
||||
Game.updateScoreHud(%game,%client,'scoreHud');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
2
scripts/modScripts/Note.txt
Normal file
2
scripts/modScripts/Note.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
These scripts are the internal functioning of the T2BoL mod. It is recommended you don't touch these and just use the BASIC API
|
||||
to make your changes to the game.
|
||||
334
scripts/modScripts/client/RPGBrowserGui.cs
Normal file
334
scripts/modScripts/client/RPGBrowserGui.cs
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// Scripts/RPGBrowserGUI.cs
|
||||
// One of the highlights of T2Bol.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPGBrowserGui::onWake(%this)
|
||||
{
|
||||
if (RPGBrowserGui.pane $= "")
|
||||
RPG_NewsPane.onActivate();
|
||||
|
||||
LaunchTabView.viewTab( "MOD BROWSER", RPGBrowserGui, 0 );
|
||||
Canvas.pushDialog( LaunchToolbarDlg );
|
||||
|
||||
// This is essentially an "isInitialized" flag...
|
||||
if ( RPG_TabView.tabCount() == 0 )
|
||||
{
|
||||
RPG_TabView.addSet(1, "gui/shll_horztabbuttonB", "5 5 5", "50 50 0", "5 5 5" );
|
||||
RPG_TabView.addTab(1,"NEWS",1);
|
||||
RPG_TabView.setSelected( 1 );
|
||||
RPG_TabView.addTab(2,"ENCYCLOPEDIA");
|
||||
RPG_TabView.addTab(3,"DOWNLOADS");
|
||||
RPG_TabView.setTabActive(3,0);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPGBrowserGui::onSleep(%this)
|
||||
{
|
||||
%ctrl = "RPG_" @ %this.pane @ "Pane";
|
||||
if ( isObject( %ctrl ) )
|
||||
%ctrl.onDeactivate();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function BrowserDoSave() //A good ol' converter for browser files. Should work on ANY browser file. Including ones that you insert yourself.
|
||||
{
|
||||
%file = new fileObject();
|
||||
%item = RPG_ItemList.getValue();
|
||||
%category = RPG_Category.getValue();
|
||||
%file.openForWrite("savedDocs/" @ %item @ ".txt");
|
||||
%read = new fileObject();
|
||||
%read.openForRead("Data/Browser/" @ %category @ "/" @ %item @ ".txt");
|
||||
|
||||
%skip = false;
|
||||
while (!%read.isEOF())
|
||||
{
|
||||
%line = %read.readLine();
|
||||
%lineTest = strLwr(strReplace(%line," ","")); //strip spaces to test for tags to skip
|
||||
%spush = getSubStr(%lineTest,0,7);
|
||||
%just = getSubStr(%lineTest,0,6);
|
||||
|
||||
//Ok.. we need to cipher out some useless information before we're through
|
||||
if (%just !$= "<just:")
|
||||
{
|
||||
if (%spush $= "<spush>")
|
||||
%skip = true;
|
||||
|
||||
if (%skip == true) //Try to find our <spop> tag
|
||||
{
|
||||
%search = strStr(%lineTest,"<spop>");
|
||||
if (%search != -1)
|
||||
%skip = false; //We found our <spop> tag, set %skip to false for the next turn
|
||||
}
|
||||
else //Otherwise the data is safe -- but we still got to look for my special <a:select> tag
|
||||
{
|
||||
%select = strStr(%lineTest,"<a:select");
|
||||
if (%select != -1) //It exists -- we must convert it
|
||||
{
|
||||
%line = strReplace(%line,"-","\t"); //Apparently special tags don't work when read from a file, so the negative sign represents \t
|
||||
%tag = strStr(%line,"<a:select"); //Find the position of my select tag
|
||||
if (%tag != -1) //Ok, it exists. We need to grab our entire tag as a string
|
||||
{
|
||||
%start = strStr(%line,"<");
|
||||
|
||||
for (%i = 0; %i < strLen(%line); %i++)
|
||||
{
|
||||
%testC = getSubStr(%line, %i + %start, 3);
|
||||
if (%testC $= "</a")
|
||||
{
|
||||
%end = %i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (%line !$= "") //If the line is totally blank, don't do shit. Otherwise, attempt to space out the file (for easier read)
|
||||
{
|
||||
for (%i = 0; %i < strLen(%line); %i++) //Was up a little higher in the function; figured it should be moved down here
|
||||
{
|
||||
%test = getSubStr(%line,%i,9);
|
||||
if (%test $= "<a:select") //We found a select tag.
|
||||
{
|
||||
%start = %i;
|
||||
%end = strLen(%line) - strStr(%line,"</a>") - 3;
|
||||
%test = getSubStr(%line,%start,%end);
|
||||
%str = getWord(%test,0);
|
||||
%line = strReplace(%line,%str,getNameFromSelectTag(%str));
|
||||
}
|
||||
}
|
||||
for (%i = 0; %i < strLen(%line); %i++)
|
||||
{
|
||||
%sub = getSubStr(%line, %i, 1);
|
||||
if (%sub $= ".") //Ok, we found a period. %i is where we are in the string. So we grab everything up until this period and move on
|
||||
{
|
||||
%file.writeLine(getSubStr(%line, 0, %i+1));
|
||||
%line = getSubStr(%line, %i+1, strLen(%line));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Detach our file objects (scripts/fileProcessing.cs)
|
||||
%file.detach();
|
||||
%read.detach();
|
||||
|
||||
messageBoxOk("SUCCESS","The contents of item "@%item@" in category "@%category@" have been saved. Check your mod Directory's sub-dir, /savedDocs for "@%item@".txt."); //YES! After all that the file should be good.
|
||||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function getNameFromSelectTag(%string) //Since the tag should be directly inserted, there is no start.
|
||||
{
|
||||
%len = strLen(%string);
|
||||
|
||||
%start = strStr(%string,">");
|
||||
%end = strStr(%string,"</a>");
|
||||
%sub = getSubStr(%string,%start,%end);
|
||||
%sub = stripTrailingSpaces(stripChars(strReplace(%sub,"</a>",""),">"));
|
||||
return %sub;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPGBrowserGui::setKey( %this, %key )
|
||||
{
|
||||
// To avoid console error
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPGBrowserGui::onClose( %this, %key )
|
||||
{
|
||||
// To avoid console error
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// News pane:
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function RPG_NewsPane::onActivate(%this)
|
||||
{
|
||||
RPGBrowserGui.pane = "News";
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_NewsPane::onDeactivate(%this)
|
||||
{
|
||||
//RPGBrowserGui.pane = "News";
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Browser pane:
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function RPG_BrowserPane::onActivate(%this)
|
||||
{
|
||||
RPGBrowserGui.pane = "Browser";
|
||||
RPG_Category.PopulateList();
|
||||
|
||||
//Make sure our DL button is properly placed (resolution may have changed)
|
||||
RPG_DownloadButton.setPosition("5", getWord(Canvas.getExtent(), 1) - 163);
|
||||
|
||||
RPG_BrowserPane.refresh();
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function RPG_BrowserPane::Refresh(%this,%val)
|
||||
{
|
||||
//Ok, we must make the browser dynamic for convenience.
|
||||
%text = RPG_Category.getText();
|
||||
|
||||
if (%text $= "Select Category" || %text $= "")
|
||||
return RPG_Text.readFromFile("Data/Browser/Introduction.txt");
|
||||
|
||||
RPG_ItemList.clear();
|
||||
|
||||
%path = "Data/Game/" @ %text @ "/*.des";
|
||||
%count = 0;
|
||||
for( %file = findFirstFile( %path ); %file !$= ""; %file = findNextFile( %path ) )
|
||||
{
|
||||
%name = getFileNameFromString(strReplace(%file,".des","")); //Get the fileName from our string (used in the item List)
|
||||
if (%name !$= "Introduction")
|
||||
{
|
||||
RPG_ItemList.addRow(%count, %name);
|
||||
%count++;
|
||||
}
|
||||
}
|
||||
RPG_ItemList.sortNumerical(0,0); //Sort the items from A-Z
|
||||
//RPG_ItemList.setSelectedRow(RPG_ItemList.findTextIndex($Browser::SelectedText));
|
||||
RPG_ItemList.setSelectedRow(RPGBrowserGUI.selectedID[%text]);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_BrowserPane::onDeactivate(%this)
|
||||
{
|
||||
//RPGBrowserGui.pane = "Browser";
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Downloads pane:
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function RPG_DownloadsPane::onActivate(%this)
|
||||
{
|
||||
RPGBrowserGui.pane = "Downloads";
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function RPG_DownloadsPane::onDeactivate(%this)
|
||||
{
|
||||
//RPGBrowserGui.pane = "Downloads";
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_TabView::onSelect( %this, %id, %text )
|
||||
{
|
||||
RPG_BrowserPane.setVisible( %id == 2 );
|
||||
RPG_NewsPane.setVisible( %id == 1 );
|
||||
|
||||
%ctrl = "RPG_" @ RPGBrowserGui.pane @ "Pane";
|
||||
if ( isObject( %ctrl ) )
|
||||
%ctrl.onDeactivate();
|
||||
|
||||
switch ( %id )
|
||||
{
|
||||
case 1: // News
|
||||
RPG_NewsPane.onActivate();
|
||||
case 2: // Encyclopedia
|
||||
RPG_BrowserPane.onActivate();
|
||||
case 3: // Downloads
|
||||
RPG_DownloadsPane.onActivate();
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_Category::PopulateList() //Listing is now alphabatized
|
||||
{
|
||||
RPG_Category.clear();
|
||||
|
||||
%file = "Data/Game/encyclopediaData.txt";
|
||||
|
||||
%count = getBlockData(%file,"Encyclopedia",1,"categoryCount");
|
||||
RPG_Category.count = %count;
|
||||
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
%category = getBlockData(%file,"Encyclopedia",1,"category" @ %i);
|
||||
RPG_Category.add(%category,%i);
|
||||
}
|
||||
|
||||
if (RPG_Category.selected !$= "") //Fixes the category dropdown resetting
|
||||
RPG_Category.setSelected(RPG_Category.selected);
|
||||
else
|
||||
RPG_Category.setValue("Select Category");
|
||||
//Force the browser to have an introduction.
|
||||
RPG_Text.readFromFile("Data/Game/Encyclopedia_Intro.des");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_Category::onSelect(%this, %id, %text)
|
||||
{
|
||||
RPG_ItemList.clear();
|
||||
RPG_Text.setValue("");
|
||||
RPG_Category.selected = %id;
|
||||
RPG_Text.readFromFile("Data/Game/" @ %text @ "/Introduction.des"); //Display the intro for the category we selected
|
||||
RPG_BrowserPane.refresh();
|
||||
if (RPG_ItemList.getSelectedID() == -1) //Does our button really need to be inactive?
|
||||
RPG_DownloadButton.setActive(false); //YES!
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_ItemList::onSelect(%this, %id, %text)
|
||||
{
|
||||
$Browser::SelectedText = %text;
|
||||
RPG_DownloadButton.setActive(true);
|
||||
%category = RPG_Category.getvalue();
|
||||
RPGBrowserGUI.selectedID[%category] = %id;
|
||||
RPG_Text.readFromFile("Data/Game/" @ %category @ "/" @ %text @ ".des");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function RPG_Text::readFromFile(%this,%file)
|
||||
{
|
||||
RPG_Text.setValue(""); //Clear the info, for some odd reason .clear() won't work..
|
||||
|
||||
if (!IsFile(%file))
|
||||
return -1;
|
||||
|
||||
%fileobj = new FileObject();
|
||||
%fileobj.openForRead(%file);
|
||||
|
||||
while (!%fileobj.isEOF())
|
||||
{
|
||||
%line = %fileobj.readLine() @ "\n";
|
||||
RPG_Text.addText(%line,1);
|
||||
}
|
||||
%fileobj.detach();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
RPG_DownloadButton.setActive(false); //Eh.. for some reason setting isActive in the GUI file isn't working
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue