v22002: No patch notes.

This commit is contained in:
Robert MacGregor 2017-07-17 22:55:25 -04:00
parent adad8c0787
commit 63560d110c
110 changed files with 5518 additions and 2403 deletions

33
.gitignore vendored Normal file
View file

@ -0,0 +1,33 @@
*.exe
*.dll
*.ini
*.pub
*.asi
*.dr7
*.jpg
*.png
*.bm8
*.ico
*.vl2
*.ml
*.mp3
*.wav
*.avi
*.ifr
*.ifl
*.gft
*.ter
*.nav
*.spn
*.db*
*.dif
*.dsq
*.PNG
*.JPG
*.dml
*.dts
*.WAV
*.cfg
*EULA.txt
*UKEULA.txt
*UpdatePatch.txt

View file

@ -1,26 +1,26 @@
// Explicit card profiles
//
// SafeMode -- forces destruction of rendering context before resolution change
// LockArray -- inhibits compiled vertex arrays if available
// SubImage -- inhibits glTexSubImage*
// FogTexture -- require bound texture for combine extension
// NoEnvColor -- card doesn't support texture environment color
// ClipHigh -- clip off high resolutions (> 1152x864)
// DeleteContext -- delete rendering context (ignored for all OSs except W2K)
// TexCompress -- inhibits texture compression if available
// InteriorLock -- lock arrays rendering Interiors
// SkipFirstFog -- skip first two-pass fog (dumb 3Dfx hack)
// Only16 -- inhibit the 32-bit resolutions
// NoArraysAlpha -- don't use glDrawArrays with a GL_ALPHA texture
// ProFile -- explicit file of graphic settings
//
// Vendor Renderer SafeMode LockArray SubImage FogTexture NoEnvColor ClipHigh DeleteContext TexCompress InteriorLock SkipFirstFog Only16 NoArraysAlpha ProFile
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
addCardProfile("VA Linux Systems, Inc.", "Banshee", true, true, true, true, true, false, false, true, true, true, false, true, "Voodoo3");
addCardProfile("VA Linux Systems, Inc.", "Voodoo3", true, true, true, true, true, false, true, true, true, true, false, true, "Voodoo3");
addCardProfile("VA Linux Systems, Inc.", "Voodoo4", true, false, true, false, true, false, false, true, true, false, false, false, "Voodoo5");
addCardProfile("VA Linux Systems, Inc.", "Voodoo5", true, false, true, false, true, false, false, true, true, false, false, false, "Voodoo5");
addCardProfile("VA Linux Systems, Inc.", "Rage128", true, true, true, true, true, false, true, true, true, false, false, false, "Rage128");
addCardProfile("VA Linux Systems, Inc.", "Radeon", true, true, true, false, false, false, true, false, true, false, false, false, "Radeon");
addCardProfile("VA Linux Systems, Inc.", "G400", true, true, false, false, true, false, true, true, true, false, false, false, "Matrox");
addCardProfile("VA Linux Systems, Inc.", "G450", true, true, false, false, true, false, true, true, true, false, false, false, "Matrox");
// Explicit card profiles
//
// SafeMode -- forces destruction of rendering context before resolution change
// LockArray -- inhibits compiled vertex arrays if available
// SubImage -- inhibits glTexSubImage*
// FogTexture -- require bound texture for combine extension
// NoEnvColor -- card doesn't support texture environment color
// ClipHigh -- clip off high resolutions (> 1152x864)
// DeleteContext -- delete rendering context (ignored for all OSs except W2K)
// TexCompress -- inhibits texture compression if available
// InteriorLock -- lock arrays rendering Interiors
// SkipFirstFog -- skip first two-pass fog (dumb 3Dfx hack)
// Only16 -- inhibit the 32-bit resolutions
// NoArraysAlpha -- don't use glDrawArrays with a GL_ALPHA texture
// ProFile -- explicit file of graphic settings
//
// Vendor Renderer SafeMode LockArray SubImage FogTexture NoEnvColor ClipHigh DeleteContext TexCompress InteriorLock SkipFirstFog Only16 NoArraysAlpha ProFile
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
addCardProfile("VA Linux Systems, Inc.", "Banshee", true, true, true, true, true, false, false, true, true, true, false, true, "DRI-Voodoo3");
addCardProfile("VA Linux Systems, Inc.", "Voodoo3", true, true, true, true, true, false, true, true, true, true, false, true, "DRI-Voodoo3");
addCardProfile("VA Linux Systems, Inc.", "Voodoo4", true, false, true, false, true, false, false, true, true, false, false, false, "DRI-Voodoo5");
addCardProfile("VA Linux Systems, Inc.", "Voodoo5", true, false, true, false, true, false, false, true, true, false, false, false, "DRI-Voodoo5");
addCardProfile("VA Linux Systems, Inc.", "Rage128", true, true, true, true, true, false, true, true, true, false, false, false, "DRI-Rage128");
addCardProfile("VA Linux Systems, Inc.", "Radeon", true, true, true, false, false, false, true, false, true, false, false, false, "DRI-Radeon");
addCardProfile("VA Linux Systems, Inc.", "G400", true, true, false, false, true, false, true, true, true, false, false, false, "DRI-Matrox");
addCardProfile("VA Linux Systems, Inc.", "G450", true, true, false, false, true, false, true, true, true, false, false, false, "DRI-Matrox");

View file

@ -1,7 +1,7 @@
ProductName "Tribes2"
DisplayName "Tribes 2"
PatchFolder .\patch
CurrentVersion 0.21570.0.0
CurrentVersion 0.22002.0.0
AutoStart
MonitorPatch
LaunchExe "tribes2.exe"
@ -10,7 +10,7 @@ MotdTimeout 30000
VersionTimeout 45000
PatchTimeout 45000
ValidateVersionFile ".\zz.ini"
ResourceDllFile "Tribes2Res.dll"
ResourceDllFile "T2Res.dll"
DirectoryServer "tribes2.west.won.net:15104"
DirectoryServer "tribes2.east.won.net:15104"
DirectoryServer "tribes2.central.won.net:15104"

View file

@ -4,7 +4,7 @@ $pref::Video::resolution = "800 600 16";
$pref::OpenGL::mipReduction = 0;
$pref::shadows = 0.5;
$pref::Terrain::enableDetails = 1;
$pref::environmentMaps = 1;
$pref::environmentMaps = 0;
$pref::Interior::DynamicLights = 0;
$pref::Interior::ShowEnvironmentMaps = 0;
$pref::precipitationOn = 1;

View file

@ -34,18 +34,6 @@ if ($CmdLineBotCount !$= "")
exec("scripts/message.cs");
function repaintCanvas()
{
if ( isObject( Canvas ) )
Canvas.repaint();
}
function resetCanvas()
{
if ( isObject( Canvas ) )
Canvas.reset();
}
//function to be called when the game exits
function onExit()
{
@ -62,7 +50,6 @@ function onExit()
exec("scripts/LaunchLanGui.cs");
exec("scripts/GameGui.cs");
exec("scripts/ChooseFilterDlg.cs");
exec("scripts/ChatGui.cs");
exec("scripts/TrainingGui.cs");
exec("scripts/webstuff.cs");
exec("scripts/webforums.cs");
@ -93,6 +80,7 @@ exec("scripts/targetManager.cs");
exec("scripts/gameCanvas.cs");
exec("scripts/centerPrint.cs");
exec("scripts/CreditsGui.cs");
exec("scripts/ChatGui.cs");
// see if the mission and type are valid
// if they are they will be assigned into $Host::Map and $Host::MissionType
@ -181,7 +169,6 @@ loadGui("CommonLoadDlg");
loadGui("CommonSaveDlg");
loadGui("FrameOverlayGui");
loadGui("TribeAdminMemberDlg");
loadGui("TribeAttribDlg");
loadGui("TSShowGui");
loadGui("TSShowLoadDlg");
loadGui("TSShowMiscDlg");
@ -231,6 +218,7 @@ loadGui("AdvancedHostDlg");
loadGui("NewWarriorDlg");
loadGui("JoinChatDlg");
loadGui("ChannelKeyDlg");
loadGui("ChatOptionsDlg");
loadGui("ChannelOptionsDlg");
loadGui("ChannelBanDlg");
loadGui("FilterEditDlg");
@ -576,8 +564,9 @@ function DispatchLaunchMode()
else
MessageBoxOK( "FILE NOT FOUND", "You do not have the interior test mission in your mission folder.\nTalk to Brad or Tom to get it.", "quit();" );
case "Connect":
OnlineLogIn();
setNetPort(0);
JoinSelectedGame();
JoinGame($JoinGameAddress);
case "HostGame":
$ServerName = $Host::GameName;
$Host::MissionType = $MissionType;

View file

@ -30,7 +30,7 @@ new GuiControl(BrowserEditInfoDlg) {
extent = "128 38";
minExtent = "32 38";
visible = "1";
command = "TribePropertiesDlg.pendingChanges = \"\";Canvas.popDialog(BrowserEditInfoDlg);";
command = "TribePropertiesDlg.pendingChanges = \"\";WarriorPropertiesDlg.pendingChanges = \"\";Canvas.popDialog(BrowserEditInfoDlg);";
accelerator = "escape";
helpTag = "0";
text = "CANCEL";

View file

@ -77,6 +77,7 @@ new GuiControl(ChannelKeyDlg) {
maxLength = "255";
password = "1";
glowOffset = "9 9";
altCommand = "keyChannelJoin();";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";

View file

@ -34,7 +34,19 @@ new GuiControl(MainChatHud) {
position = "6 2";
extent = "244 3";
minExtent = "2 2";
visible = "0";
visible = "1";
};
new GuiBitmapCtrl(passHash)
{
profile = "GuiDefaultProfile";
horizSizing = "left";
vertSizing = "bottom";
position = "151 -1";
extent = "5 10";
minExtent = "1 1";
visible = "1";
bitmap = "gui/voteMeterPassBar.png";
};
};

View file

@ -215,6 +215,19 @@ new GuiChunkedBitmapCtrl(ChatGui) {
text = "CHANNEL OPTIONS";
simpleStyle = "0";
};
new ShellBitmapButton(ChatEditOptionsBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "15 -5";
extent = "128 38";
minExtent = "32 38";
visible = "0";
command = "EditChatOptions();";
helpTag = "0";
text = "CHAT OPTIONS";
simpleStyle = "0";
};
};
};
//--- OBJECT WRITE END ---

191
base/gui/ChatOptionsDlg.gui Normal file
View file

@ -0,0 +1,191 @@
//--- OBJECT WRITE BEGIN ---
new GuiControl(ChatOptionsDlg) {
profile = "DlgBackProfile";
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "640 480";
minExtent = "8 8";
visible = "1";
helpTag = "0";
new ShellPaneCtrl() {
profile = "ShellDlgPaneProfile";
horizSizing = "center";
vertSizing = "center";
position = "75 102";
extent = "490 276";
minExtent = "48 92";
visible = "1";
helpTag = "0";
text = "CHAT OPTIONS";
maxLength = "255";
noTitleBar = "0";
new ShellToggleButton(ButtonChatShowJoin) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "270 57";
extent = "177 30";
minExtent = "26 27";
visible = "1";
variable = "";
command = "ChatHideJoinMessage();";
helpTag = "0";
text = "Hide \"Join Server\" Messages";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "22 146";
extent = "88 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Away Message:";
maxLength = "255";
};
new ShellTextEditCtrl(EditChatAwayMessage) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "104 138";
extent = "366 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
maxLength = "64";
historySize = "0";
password = "0";
glowOffset = "9 9";
variable = "$tempAwayMsg";
};
new ShellToggleButton(ButtonChatHighlight) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "47 32";
extent = "150 30";
minExtent = "26 27";
visible = "1";
variable = "";
command = "ToggleChatHiglight();";
helpTag = "0";
text = "Highlight text with my nick";
maxLength = "255";
};
new ShellToggleButton(ButtonChatChannelHighlight) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "47 57";
extent = "150 30";
minExtent = "26 27";
visible = "1";
variable = "";
command = "ToggleChatHiglightChannel();";
helpTag = "0";
text = "Highlight Channel";
maxLength = "255";
};
new ShellToggleButton(ButtonChatNameLinkToggle) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "270 32";
extent = "176 30";
minExtent = "26 27";
visible = "1";
variable = "";
command = "ToggleChatLinkedNicks();";
helpTag = "0";
text = "Names are not links";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "22 174";
extent = "88 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Kick Message:";
maxLength = "255";
};
new ShellTextEditCtrl(EditChatKickMessage) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "104 166";
extent = "366 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
maxLength = "64";
historySize = "0";
password = "0";
glowOffset = "9 9";
variable = "$tempKickmsg";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "22 200";
extent = "88 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Ban Message:";
maxLength = "255";
};
new ShellTextEditCtrl(EditChatBanMessage) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "104 194";
extent = "366 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
maxLength = "64";
historySize = "0";
password = "0";
glowOffset = "9 9";
variable = "$tempBanmsg";
};
new ShellBitmapButton(ButtonChatOptionsAccept) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "284 221";
extent = "128 38";
minExtent = "32 38";
visible = "1";
command = "AcceptChatOptions();";
helpTag = "0";
text = "ACCEPT";
simpleStyle = "0";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "78 221";
extent = "128 38";
minExtent = "32 38";
visible = "1";
command = "CancelChatOptions();";
accelerator = "escape";
helpTag = "0";
text = "CANCEL";
simpleStyle = "0";
};
};
};
//--- OBJECT WRITE END ---

View file

@ -65,6 +65,8 @@ function ToggleConsole(%make)
$ConsoleActive = false;
if(!ConsoleDlg.mouseOn)
CursorOff();
if ( $enableDirectInput )
activateKeyboard();
}
else
{
@ -73,6 +75,7 @@ function ToggleConsole(%make)
$ConsoleActive = true;
if(!ConsoleDlg.mouseOn)
CursorOn();
deactivateKeyboard();
}
}
}

View file

@ -10,16 +10,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
variable = "$ShellBackground";
helpTag = "0";
useVariable = "1";
eid = "979";
key = "93";
state = "done";
ebstat = "1";
initialized = "1";
refreshTarget = "1";
TextCheck = "0";
refreshFlag = "0";
forumCount = "-1";
bflag = "4";
new ShellPaneCtrl(ForumShell) {
profile = "ShellPaneProfile";
@ -162,12 +152,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
drawSeparators = "0";
headerSort = "0";
allowReposition = "0";
updateCount = "0";
key = "71";
state = "replyPost";
lastId = "16480";
highestUpdate = "16480";
bflag = "1";
};
};
new ShellScrollCtrl() {
@ -361,7 +345,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
columns = "0";
fitParentWidth = "1";
clipColumnText = "0";
forum = "58";
};
};
};
@ -441,14 +424,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "0";
key = "43";
state = "lines";
selId = "0";
count = "0";
refreshFlag = "0";
forum = "0";
autoSelect = "1";
FirstCount = "0";
};
};
new GuiTextCtrl() {

View file

@ -31,17 +31,6 @@ new GuiControl(interiorPreviewGui) {
beaconLineWidth = "2.5";
beaconTextYOffset = "14";
showAlternateTarget = "0";
new GameOverlayCtrl() {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "640 480";
minExtent = "8 8";
visible = "1";
helpTag = "0";
};
};
new GuiButtonCtrl() {
profile = "GuiButtonProfile";

View file

@ -62,7 +62,7 @@ new GuiControl(JoystickConfigDlg) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "26 50";
position = "6 50";
extent = "60 22";
minExtent = "8 8";
visible = "1";
@ -73,8 +73,8 @@ new GuiControl(JoystickConfigDlg) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "83 41";
extent = "140 36";
position = "63 41";
extent = "200 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";

View file

@ -171,6 +171,7 @@ new GuiChunkedBitmapCtrl(LobbyGui) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "0";
noSelect = "1";
};
};
new GuiControl() {

View file

@ -13,38 +13,40 @@ new GuiControl(LoginDlg) {
profile = "ShellDlgPaneProfile";
horizSizing = "center";
vertSizing = "center";
position = "90 156";
extent = "460 167";
position = "72 143";
extent = "495 194";
minExtent = "48 92";
visible = "1";
helpTag = "0";
text = "LOGIN";
maxLength = "255";
noTitleBar = "0";
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "30 47";
position = "37 47";
extent = "85 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Account Name:";
maxLength = "255";
};
new ShellTextEditCtrl(LoginEditBox) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "111 39";
position = "118 39";
extent = "180 38";
minExtent = "32 38";
visible = "1";
variable = "$LoginName";
altCommand = "LoginProcess();";
helpTag = "0";
historySize = "0";
maxLength = "16";
historySize = "0";
password = "0";
glowOffset = "9 9";
};
@ -52,50 +54,39 @@ new GuiControl(LoginDlg) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "30 77";
position = "37 77";
extent = "85 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Password:";
maxLength = "255";
};
new GuiLoginPasswordCtrl(LoginPasswordBox) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "111 68";
position = "118 69";
extent = "180 38";
minExtent = "32 38";
visible = "1";
variable = "$LoginPassword";
altCommand = "LoginProcess();";
helpTag = "0";
historySize = "0";
maxLength = "16";
historySize = "0";
password = "1";
glowOffset = "9 9";
};
new ShellToggleButton() {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "118 106";
extent = "160 27";
minExtent = "26 27";
visible = "1";
variable = "$pref::RememberPassword";
helpTag = "0";
text = "REMEMBER PASSWORD";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "291 39";
extent = "144 38";
position = "300 39";
extent = "147 38";
minExtent = "32 38";
visible = "1";
command = "LoginProcess();";
command = "LoginProcess(false);";
helpTag = "0";
text = "LOG IN";
simpleStyle = "0";
@ -104,8 +95,8 @@ new GuiControl(LoginDlg) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "291 70";
extent = "144 38";
position = "300 69";
extent = "147 38";
minExtent = "32 38";
visible = "1";
command = "CreateAccount();";
@ -117,27 +108,54 @@ new GuiControl(LoginDlg) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "290 102";
extent = "144 38";
position = "300 99";
extent = "147 38";
minExtent = "32 38";
visible = "1";
command = "EditAccount();";
command = "LoginProcess(true);";
helpTag = "0";
text = "EDIT ACCOUNT";
simpleStyle = "0";
};
new ShellBitmapButton(LaunchToolbarCloseButton) {
profile = "CloseButtonProfile";
horizSizing = "left";
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "411 0";
extent = "33 26";
minExtent = "33 26";
position = "300 129";
extent = "147 38";
minExtent = "32 38";
visible = "1";
command = "quit();";
accelerator = "escape";
helpTag = "0";
simpleStyle = "1";
text = "QUIT";
simpleStyle = "0";
};
new ShellToggleButton() {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "122 104";
extent = "167 27";
minExtent = "26 27";
visible = "1";
variable = "$pref::RememberPassword";
helpTag = "0";
text = "REMEMBER PASSWORD";
maxLength = "255";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "118 129";
extent = "180 38";
minExtent = "32 38";
visible = "1";
command = "PasswordProcess(true);";
helpTag = "0";
text = "EMAIL ME MY PASSWORD";
simpleStyle = "0";
};
};
};

View file

@ -92,7 +92,7 @@ new GuiControl(OptionsDlg) {
maxLength = "255";
simpleStyle = "0";
};
new ShellTabButton(OP_ControlsTab) {
new ShellTabButton(OP_VoiceTab) {
profile = "ShellTabProfile";
horizSizing = "right";
vertSizing = "bottom";
@ -100,6 +100,20 @@ new GuiControl(OptionsDlg) {
extent = "108 38";
minExtent = "48 38";
visible = "1";
command = "OptionsDlg.setPane(Voice);";
helpTag = "0";
text = "VOICE";
maxLength = "255";
simpleStyle = "0";
};
new ShellTabButton(OP_ControlsTab) {
profile = "ShellTabProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "19 196";
extent = "108 38";
minExtent = "48 38";
visible = "1";
command = "OptionsDlg.setPane(Controls);";
helpTag = "0";
text = "CONTROLS";
@ -110,7 +124,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTabProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "19 196";
position = "19 226";
extent = "108 38";
minExtent = "48 38";
visible = "1";
@ -124,7 +138,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTabProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "19 226";
position = "19 256";
extent = "108 38";
minExtent = "48 38";
visible = "1";
@ -154,7 +168,7 @@ new GuiControl(OptionsDlg) {
position = "138 42";
extent = "437 316";
minExtent = "16 18";
visible = "1";
visible = "0";
helpTag = "0";
new GuiTextCtrl() {
@ -415,11 +429,65 @@ new GuiControl(OptionsDlg) {
value = "0";
usePlusMinus = "1";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "27 88";
extent = "72 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Interior Detail:";
maxLength = "255";
};
new ShellSliderCtrl(OP_InteriorDetailSlider) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "37 103";
extent = "170 24";
minExtent = "12 24";
visible = "1";
variable = "value";
helpTag = "0";
range = "0.300000 1.000000";
ticks = "1000";
value = "1";
usePlusMinus = "1";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 88";
extent = "85 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Visible Distance:";
maxLength = "255";
};
new ShellSliderCtrl(OP_VisibleDistanceSlider) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 103";
extent = "170 24";
minExtent = "12 24";
visible = "1";
variable = "value";
helpTag = "0";
range = "0.600000 1.000000";
ticks = "400";
value = "1";
usePlusMinus = "1";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "79 100";
position = "79 137";
extent = "70 22";
minExtent = "8 8";
visible = "1";
@ -431,7 +499,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "146 91";
position = "146 128";
extent = "200 36";
minExtent = "49 36";
visible = "1";
@ -448,7 +516,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "35 130";
position = "35 167";
extent = "114 22";
minExtent = "8 8";
visible = "1";
@ -460,7 +528,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "146 121";
position = "146 158";
extent = "200 36";
minExtent = "49 36";
visible = "1";
@ -477,7 +545,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "31 165";
position = "31 196";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -490,7 +558,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "236 165";
position = "236 196";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -503,7 +571,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "31 195";
position = "31 226";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -516,7 +584,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "236 195";
position = "236 226";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -529,7 +597,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "31 225";
position = "31 256";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -542,7 +610,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "236 225";
position = "236 256";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -554,7 +622,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "31 255";
position = "133 286";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -562,33 +630,6 @@ new GuiControl(OptionsDlg) {
text = "VERTEX LIGHTING";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 262";
extent = "85 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Visible Distance:";
maxLength = "255";
};
new ShellSliderCtrl(OP_VisibleDistanceSlider) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 277";
extent = "170 24";
minExtent = "12 24";
visible = "1";
variable = "value";
helpTag = "0";
range = "0.600000 1.000000";
ticks = "400";
value = "1";
usePlusMinus = "1";
};
};
new ShellFieldCtrl(OP_TexturesPane) {
profile = "ShellFieldProfile";
@ -678,9 +719,9 @@ new GuiControl(OptionsDlg) {
visible = "1";
variable = "value";
helpTag = "0";
range = "0.000000 5.000000";
range = "0.000000 1.000000";
ticks = "6";
value = "4";
value = "1";
usePlusMinus = "1";
};
new GuiTextCtrl() {
@ -705,9 +746,9 @@ new GuiControl(OptionsDlg) {
visible = "1";
variable = "value";
helpTag = "0";
range = "0.000000 5.000000";
range = "0.000000 1.000000";
ticks = "6";
value = "4";
value = "1";
usePlusMinus = "1";
};
new GuiTextCtrl() {
@ -732,9 +773,9 @@ new GuiControl(OptionsDlg) {
visible = "1";
variable = "value";
helpTag = "0";
range = "0.000000 5.000000";
range = "0.000000 1.000000";
ticks = "6";
value = "4";
value = "1";
usePlusMinus = "1";
};
new GuiTextCtrl(OP_CompressLabel) {
@ -899,8 +940,8 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "252 43";
extent = "152 30";
position = "249 42";
extent = "160 30";
minExtent = "26 27";
visible = "1";
variable = "$pref::Audio::environmentEnabled";
@ -912,7 +953,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "10 47";
position = "10 46";
extent = "72 22";
minExtent = "8 8";
visible = "1";
@ -924,7 +965,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "79 38";
position = "79 37";
extent = "169 36";
minExtent = "49 36";
visible = "1";
@ -937,11 +978,98 @@ new GuiControl(OptionsDlg) {
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "11 97";
extent = "72 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Frequency:";
maxLength = "255";
};
new ShellPopupMenu(OP_AudioFrequencyMenu) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "80 88";
extent = "169 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";
text = "Select Frequency";
maxLength = "255";
maxPopupHeight = "200";
buttonBitmap = "gui/shll_pulldown";
rolloverBarBitmap = "gui/shll_pulldownbar_rol";
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "11 127";
extent = "72 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Bit Rate:";
maxLength = "255";
};
new ShellPopupMenu(OP_AudioBitRateMenu) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "80 118";
extent = "100 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";
text = "Select Bit Rate";
maxLength = "255";
maxPopupHeight = "200";
buttonBitmap = "gui/shll_pulldown";
rolloverBarBitmap = "gui/shll_pulldownbar_rol";
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "221 127";
extent = "60 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Channels:";
maxLength = "255";
};
new ShellPopupMenu(OP_AudioChannelsMenu) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "278 118";
extent = "100 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";
text = "Select # Channels";
maxLength = "255";
maxPopupHeight = "200";
buttonBitmap = "gui/shll_pulldown";
rolloverBarBitmap = "gui/shll_pulldownbar_rol";
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "26 89";
position = "26 177";
extent = "79 22";
minExtent = "8 8";
visible = "1";
@ -953,7 +1081,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "36 104";
position = "36 192";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -969,7 +1097,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 89";
position = "231 177";
extent = "79 22";
minExtent = "8 8";
visible = "1";
@ -981,7 +1109,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 104";
position = "241 192";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -996,7 +1124,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "26 129";
position = "26 217";
extent = "60 22";
minExtent = "8 8";
visible = "1";
@ -1008,7 +1136,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "36 144";
position = "36 232";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1024,7 +1152,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 129";
position = "231 217";
extent = "97 22";
minExtent = "8 8";
visible = "1";
@ -1036,7 +1164,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 144";
position = "241 232";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1051,7 +1179,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "31 179";
position = "31 267";
extent = "170 30";
minExtent = "26 27";
visible = "1";
@ -1064,7 +1192,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 169";
position = "231 257";
extent = "74 22";
minExtent = "8 8";
visible = "0";
@ -1076,7 +1204,7 @@ new GuiControl(OptionsDlg) {
profile = "DisabledTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 169";
position = "231 257";
extent = "74 22";
minExtent = "8 8";
visible = "1";
@ -1088,7 +1216,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 184";
position = "241 272";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1100,15 +1228,26 @@ new GuiControl(OptionsDlg) {
value = "0.8";
usePlusMinus = "1";
};
};
new ShellFieldCtrl(OP_VoicePane) {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "138 42";
extent = "437 316";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new ShellToggleButton(OP_MicrophoneEnabledTgl) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "31 231";
position = "31 13";
extent = "170 30";
minExtent = "26 27";
visible = "1";
variable = "$pref::Audio::microphoneEnabled";
variable = "$pref::Audio::enableVoiceCapture";
helpTag = "0";
text = "MICROPHONE ENABLED";
maxLength = "255";
@ -1117,7 +1256,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "232 226";
position = "232 8";
extent = "173 38";
minExtent = "32 38";
visible = "1";
@ -1130,7 +1269,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "28 261";
position = "28 43";
extent = "102 22";
minExtent = "8 8";
visible = "1";
@ -1142,7 +1281,7 @@ new GuiControl(OptionsDlg) {
profile = "DisabledTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "28 261";
position = "28 43";
extent = "102 22";
minExtent = "8 8";
visible = "0";
@ -1154,7 +1293,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "38 276";
position = "38 58";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1169,7 +1308,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 261";
position = "231 43";
extent = "123 22";
minExtent = "8 8";
visible = "1";
@ -1181,7 +1320,7 @@ new GuiControl(OptionsDlg) {
profile = "DisabledTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 261";
position = "231 43";
extent = "123 22";
minExtent = "8 8";
visible = "0";
@ -1193,7 +1332,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextCenterProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "271 279";
position = "271 61";
extent = "110 22";
minExtent = "8 8";
visible = "1";
@ -1205,7 +1344,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 276";
position = "241 58";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1217,6 +1356,88 @@ new GuiControl(OptionsDlg) {
value = "4.78947";
usePlusMinus = "1";
};
new GuiTextCtrl(OP_VoiceListenLabel) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "46 96";
extent = "140 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Voice Listen Quality:";
maxLength = "255";
};
new ShellPopupMenu(OP_VoiceListenMenu) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "183 87";
extent = "169 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";
text = "Select Quality";
maxLength = "255";
maxPopupHeight = "200";
buttonBitmap = "gui/shll_pulldown";
rolloverBarBitmap = "gui/shll_pulldownbar_rol";
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
new GuiTextCtrl(OP_VoiceSendLabel) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "46 126";
extent = "140 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Voice Send Quality:";
maxLength = "255";
};
new ShellPopupMenu(OP_VoiceSendMenu) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "183 117";
extent = "169 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";
text = "Select Quality";
maxLength = "255";
maxPopupHeight = "200";
buttonBitmap = "gui/shll_pulldown";
rolloverBarBitmap = "gui/shll_pulldownbar_rol";
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
new GuiTextCtrl(OP_VoiceListenLabel_Disabled) {
profile = "DisabledTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "46 96";
extent = "140 22";
minExtent = "8 8";
visible = "0";
helpTag = "0";
text = "Voice Listen Quality:";
maxLength = "255";
};
new GuiTextCtrl(OP_VoiceSendLabel_Disabled) {
profile = "DisabledTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "46 126";
extent = "140 22";
minExtent = "8 8";
visible = "0";
helpTag = "0";
text = "Voice Send Quality:";
maxLength = "255";
};
};
new ShellFieldCtrl(OP_ControlsPane) {
profile = "ShellFieldProfile";
@ -1232,8 +1453,8 @@ new GuiControl(OptionsDlg) {
profile = "NewScrollCtrlProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "2 2";
extent = "290 282";
position = "2 31";
extent = "290 253";
minExtent = "24 52";
visible = "1";
helpTag = "0";
@ -1250,7 +1471,7 @@ new GuiControl(OptionsDlg) {
horizSizing = "right";
vertSizing = "bottom";
position = "4 6";
extent = "266 270";
extent = "266 241";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -1290,7 +1511,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "292 46";
position = "292 38";
extent = "140 38";
minExtent = "32 38";
visible = "1";
@ -1303,7 +1524,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "292 84";
position = "292 68";
extent = "140 38";
minExtent = "32 38";
visible = "1";
@ -1312,11 +1533,24 @@ new GuiControl(OptionsDlg) {
text = "SAVE AS";
simpleStyle = "0";
};
new ShellToggleButton(OP_MouseTgl) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "296 116";
extent = "126 30";
minExtent = "26 27";
visible = "0";
variable = "pref::Input::MouseEnabled";
helpTag = "0";
text = "DINPUT MOUSE";
maxLength = "255";
};
new ShellBitmapButton(OP_ConfigureMouseBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "292 155";
position = "292 146";
extent = "140 38";
minExtent = "32 38";
visible = "1";
@ -1325,32 +1559,31 @@ new GuiControl(OptionsDlg) {
text = "CONFIGURE MOUSE";
simpleStyle = "0";
};
new ShellBitmapButton(OP_ConfigureJoystickBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "292 231";
extent = "140 38";
minExtent = "32 38";
visible = "0";
command = "Canvas.pushDialog(JoystickConfigDlg);";
helpTag = "0";
text = "CONFIGURE JOYSTICK";
simpleStyle = "0";
};
new ShellToggleButton(OP_JoystickTgl) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "296 197";
position = "296 194";
extent = "126 30";
minExtent = "26 27";
visible = "0";
variable = "pref::Input::JoystickEnabled";
visible = "1";
helpTag = "0";
text = "ENABLE JOYSTICK";
maxLength = "255";
};
new ShellBitmapButton(OP_ConfigureJoystickBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "292 224";
extent = "140 38";
minExtent = "32 38";
visible = "1";
command = "Canvas.pushDialog(JoystickConfigDlg);";
helpTag = "0";
text = "CONFIGURE JOYSTICK";
simpleStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
@ -1386,6 +1619,35 @@ new GuiControl(OptionsDlg) {
text = "grave";
};
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "22 9";
extent = "100 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Control Group:";
maxLength = "255";
};
new ShellPopupMenu(OP_ControlGroupMenu) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "118 0";
extent = "180 36";
minExtent = "49 36";
visible = "1";
helpTag = "0";
text = "Select Control Group";
maxLength = "255";
maxPopupHeight = "200";
buttonBitmap = "gui/shll_pulldown";
rolloverBarBitmap = "gui/shll_pulldownbar_rol";
selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0";
};
};
new ShellFieldCtrl(OP_NetworkPane) {
profile = "ShellFieldProfile";
@ -1397,11 +1659,62 @@ new GuiControl(OptionsDlg) {
visible = "0";
helpTag = "0";
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "9 16";
extent = "60 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Presets:";
maxLength = "255";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "68 8";
extent = "110 38";
minExtent = "32 38";
visible = "1";
command = "OP_NetworkPane.applyPresets( \"modem1\" );";
helpTag = "0";
text = "28.8 MODEM";
simpleStyle = "0";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "170 8";
extent = "110 38";
minExtent = "32 38";
visible = "1";
command = "OP_NetworkPane.applyPresets( \"modem2\" );";
helpTag = "0";
text = "56K MODEM";
simpleStyle = "0";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "272 8";
extent = "110 38";
minExtent = "32 38";
visible = "1";
command = "OP_NetworkPane.applyPresets( \"lan\" );";
helpTag = "0";
text = "DSL/LAN";
simpleStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "26 8";
position = "26 52";
extent = "65 22";
minExtent = "8 8";
visible = "1";
@ -1413,7 +1726,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "36 23";
position = "36 67";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1428,7 +1741,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "231 8";
position = "231 52";
extent = "62 22";
minExtent = "8 8";
visible = "1";
@ -1440,7 +1753,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "241 23";
position = "241 67";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1455,7 +1768,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "26 48";
position = "26 92";
extent = "99 22";
minExtent = "8 8";
visible = "1";
@ -1467,7 +1780,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "36 63";
position = "36 107";
extent = "170 24";
minExtent = "12 24";
visible = "1";
@ -1482,7 +1795,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "11 119";
position = "11 153";
extent = "200 22";
minExtent = "8 8";
visible = "1";
@ -1494,7 +1807,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "208 110";
position = "208 144";
extent = "180 36";
minExtent = "49 36";
visible = "1";
@ -1511,7 +1824,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "67 157";
position = "67 191";
extent = "144 22";
minExtent = "8 8";
visible = "1";
@ -1523,7 +1836,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "208 148";
position = "208 182";
extent = "180 36";
minExtent = "49 36";
visible = "1";
@ -1540,7 +1853,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "123 208";
position = "123 233";
extent = "190 30";
minExtent = "26 27";
visible = "1";
@ -1553,7 +1866,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "123 236";
position = "123 261";
extent = "190 30";
minExtent = "26 27";
visible = "1";

View file

@ -28,8 +28,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellHorzTabFrameProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "28 63";
extent = "564 270";
position = "22 54";
extent = "576 254";
minExtent = "26 254";
visible = "1";
helpTag = "0";
@ -41,8 +41,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "TabGroupProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "38 34";
extent = "546 29";
position = "30 25";
extent = "560 29";
minExtent = "38 29";
visible = "1";
helpTag = "0";
@ -55,8 +55,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellFieldProfile";
horizSizing = "width";
vertSizing = "height";
position = "39 71";
extent = "543 262";
position = "33 63";
extent = "554 270";
minExtent = "16 18";
visible = "1";
helpTag = "0";
@ -66,7 +66,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "3 27";
extent = "537 231";
extent = "550 239";
minExtent = "16 18";
visible = "0";
helpTag = "0";
@ -76,7 +76,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "237 20";
extent = "297 209";
extent = "310 217";
minExtent = "16 18";
visible = "1";
helpTag = "0";
@ -86,7 +86,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "2 6";
extent = "293 201";
extent = "306 209";
minExtent = "24 52";
visible = "1";
helpTag = "0";
@ -103,7 +103,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "bottom";
position = "9 9";
extent = "275 183";
extent = "288 191";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -113,7 +113,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "259 16";
extent = "272 16";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -129,7 +129,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "height";
position = "3 3";
extent = "234 226";
extent = "234 234";
minExtent = "16 18";
visible = "1";
helpTag = "0";
@ -148,11 +148,11 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
wrap = "0";
};
new ShellFancyArrayScrollCtrl(ML1) {
profile = "clockProfile";
profile = "ShellServerBrowserProfile";
horizSizing = "width";
vertSizing = "height";
position = "-2 151";
extent = "237 77";
extent = "237 85";
minExtent = "24 52";
visible = "1";
helpTag = "0";
@ -165,7 +165,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "0 16";
extent = "237 61";
extent = "237 69";
minExtent = "8 52";
visible = "1";
helpTag = "0";
@ -181,7 +181,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "4 7";
extent = "213 47";
extent = "213 55";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -199,11 +199,11 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
};
};
new ShellFancyTextList(MemberList) {
profile = "clockProfile";
profile = "ShellBrowserListProfile";
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "217 73";
extent = "217 81";
minExtent = "8 20";
visible = "1";
altCommand = "TribePane.RosterDblClick();";
@ -223,6 +223,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "1";
noSelect = "0";
};
};
};
@ -302,7 +303,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "3 27";
extent = "537 231";
extent = "550 239";
minExtent = "16 18";
visible = "1";
helpTag = "0";
@ -312,7 +313,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "237 20";
extent = "297 209";
extent = "310 217";
minExtent = "16 18";
visible = "1";
helpTag = "0";
@ -322,7 +323,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "2 2";
extent = "293 205";
extent = "306 213";
minExtent = "24 52";
visible = "1";
helpTag = "0";
@ -339,7 +340,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "bottom";
position = "4 4";
extent = "269 197";
extent = "298 205";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -349,7 +350,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "bottom";
position = "0 0";
extent = "273 204";
extent = "286 16";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -365,7 +366,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "height";
position = "3 3";
extent = "234 226";
extent = "234 234";
minExtent = "16 18";
visible = "1";
helpTag = "0";
@ -388,7 +389,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "height";
position = "-2 151";
extent = "237 75";
extent = "237 83";
minExtent = "24 52";
visible = "1";
helpTag = "0";
@ -401,7 +402,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "0 16";
extent = "237 59";
extent = "237 67";
minExtent = "8 52";
visible = "1";
helpTag = "0";
@ -417,7 +418,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "4 7";
extent = "213 45";
extent = "213 53";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -427,7 +428,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "8 47";
extent = "8 8";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -435,11 +436,11 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
};
};
new ShellFancyTextList(W_MemberList) {
profile = "clockProfile";
profile = "ShellBrowserListProfile";
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "217 71";
extent = "217 79";
minExtent = "8 20";
visible = "1";
altCommand = "PlayerPane.DblClick();";
@ -458,6 +459,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "0";
noSelect = "0";
};
};
};
@ -537,7 +539,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width";
vertSizing = "bottom";
position = "7 5";
extent = "8 26";
extent = "155 26";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -546,27 +548,27 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
name = "EAST";
OldText = "EAST";
};
new ShellBitmapButton(TWBClosePaneBtn) {
profile = "ShellButtonProfile";
horizSizing = "left";
vertSizing = "bottom";
position = "506 -3";
extent = "43 38";
minExtent = "32 38";
visible = "0";
command = "TWBTabView.closeCurrentPane();";
accelerator = "escape";
helpTag = "0";
text = "X";
simpleStyle = "0";
};
};
new ShellBitmapButton(TWBClosePaneBtn) {
profile = "ShellButtonProfile";
horizSizing = "left";
vertSizing = "bottom";
position = "552 60";
extent = "43 38";
minExtent = "32 38";
visible = "1";
command = "TWBTabView.closeCurrentPane();";
accelerator = "escape";
helpTag = "0";
text = "X";
simpleStyle = "0";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "left";
vertSizing = "top";
position = "303 330";
extent = "104 38";
position = "221 335";
extent = "128 38";
minExtent = "32 38";
visible = "1";
command = "CreateTribe();";
@ -578,8 +580,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellButtonProfile";
horizSizing = "left";
vertSizing = "top";
position = "390 330";
extent = "102 38";
position = "341 335";
extent = "128 38";
minExtent = "32 38";
visible = "1";
command = "SearchTribes();";
@ -591,8 +593,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellButtonProfile";
horizSizing = "left";
vertSizing = "top";
position = "475 330";
extent = "114 38";
position = "461 335";
extent = "128 38";
minExtent = "32 38";
visible = "1";
command = "SearchWarriors();";

View file

@ -1,151 +0,0 @@
//--- OBJECT WRITE BEGIN ---
new GuiControl(TribeAttribDlg) {
profile = "DlgBackProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "640 480";
minExtent = "8 8";
visible = "1";
variable = "$NewTagAppend";
helpTag = "0";
tribename = "DEV Team";
new ShellPaneCtrl() {
profile = "ShellDlgPaneProfile";
horizSizing = "center";
vertSizing = "center";
position = "155 145";
extent = "330 190";
minExtent = "48 92";
visible = "1";
helpTag = "0";
text = "CHANGE TRIBE TAG";
noTitleBar = "0";
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "65 41";
extent = "80 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Current:";
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "151 39";
extent = "130 22";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new GuiTextCtrl(TAD_CurrentTag) {
profile = "ShellAltTextCenterProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "1 3";
extent = "124 20";
minExtent = "8 8";
visible = "1";
variable = "$CurrentTribeTag";
helpTag = "0";
text = "TAG";
};
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "65 71";
extent = "80 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "New:";
};
new ShellTextEditCtrl(TAD_NewTag) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "141 63";
extent = "148 38";
minExtent = "32 38";
visible = "1";
variable = "$NewTribeTag";
command = "updateNewTagPreview();";
helpTag = "0";
historySize = "0";
maxLength = "8";
password = "0";
glowOffset = "9 9";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "29 101";
extent = "65 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Preview:";
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "100 101";
extent = "180 22";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new GuiTextCtrl(TAD_PreviewTag) {
profile = "ShellAltTextCenterProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 3";
extent = "180 20";
minExtent = "8 8";
visible = "1";
variable = "$NewTagPreview";
helpTag = "0";
text = "PREVIEW";
};
};
new ShellBitmapButton(TAD_OKBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "187 135";
extent = "100 38";
minExtent = "32 38";
visible = "1";
command = "TribeAttribDlg.ChangeTribeTag();";
accelerator = "Enter";
helpTag = "0";
text = "OK";
simpleStyle = "0";
};
new ShellBitmapButton(TAD_CancelBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "43 135";
extent = "100 38";
minExtent = "32 38";
visible = "1";
command = "Canvas.popDialog(TribeAttribDlg);";
accelerator = "escape";
helpTag = "0";
text = "CANCEL";
simpleStyle = "0";
};
};
};
//--- OBJECT WRITE END ---

View file

@ -14,12 +14,13 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
profile = "ShellDlgProfile";
horizSizing = "center";
vertSizing = "center";
position = "113 2";
position = "116 63";
extent = "408 354";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "TRIBE PROPERTIES";
maxLength = "255";
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
@ -135,6 +136,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "ACTIONS";
maxLength = "255";
};
new ShellRadioButton() {
profile = "ShellRadioProfile";
@ -146,6 +148,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Admin 3 [4]";
maxLength = "255";
groupNum = "7";
};
new GuiTextCtrl() {
@ -158,6 +161,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Required Access Level";
maxLength = "255";
};
new ShellRadioButton() {
profile = "ShellRadioProfile";
@ -169,6 +173,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Admin 2 [3]";
maxLength = "255";
groupNum = "7";
};
new ShellRadioButton() {
@ -181,6 +186,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Admin 1 [2]";
maxLength = "255";
groupNum = "7";
};
new ShellRadioButton() {
@ -193,6 +199,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Member [1]";
maxLength = "255";
groupNum = "7";
};
new ShellRadioButton() {
@ -205,6 +212,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Public [0] ";
maxLength = "255";
groupNum = "7";
};
new ShellBitmapButton(TP_UpdateSecurityBtn) {
@ -277,6 +285,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "DESCRIPTION";
maxLength = "255";
};
new ShellBitmapButton(TP_EditDescBtn) {
profile = "ShellButtonProfile";
@ -336,12 +345,13 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
horizSizing = "left";
vertSizing = "relative";
position = "0 0";
extent = "249 14";
extent = "249 28";
minExtent = "8 8";
visible = "1";
helpTag = "0";
lineSpacing = "2";
allowColorChars = "1";
maxChars = "-1";
};
};
};
@ -376,6 +386,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "TRIBE TAG";
maxLength = "255";
};
new ShellRadioButton(TP_PrePendFlagBtn) {
profile = "ShellRadioProfile";
@ -388,6 +399,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ToggleAppending();";
helpTag = "0";
text = "PREPEND TAG";
maxLength = "255";
groupNum = "8";
};
new ShellRadioButton(TP_AppendFlagBtn) {
@ -401,6 +413,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ToggleAppending();";
helpTag = "0";
text = "APPEND TAG";
maxLength = "255";
groupNum = "8";
};
};
@ -414,8 +427,8 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
command = "TribePropertiesDlg.RefreshTag();";
helpTag = "0";
historySize = "0";
maxLength = "9";
historySize = "0";
password = "0";
glowOffset = "9 9";
};
@ -429,6 +442,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "CURRENT:";
maxLength = "255";
};
new GuiTextCtrl(TP_CurrentTag) {
profile = "GuiDefaultProfile";
@ -440,6 +454,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "TAG";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
@ -451,6 +466,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "NEW TAG:";
maxLength = "255";
};
new GuiTextCtrl(TP_PreviewTag) {
profile = "GuiDefaultProfile";
@ -462,6 +478,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "TAG";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
@ -473,6 +490,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "PREVIEW:";
maxLength = "255";
};
new ShellBitmapButton(TP_TribeTagBtn) {
profile = "ShellButtonProfile";
@ -498,6 +516,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "DISBAND TRIBE";
maxLength = "255";
};
new GuiTextCtrl(TP_RecruitingLabel) {
profile = "ShellTextProfile";
@ -509,6 +528,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "RECRUITING";
maxLength = "255";
};
new ShellRadioButton(TP_RecruitFlagBtn) {
profile = "ShellRadioProfile";
@ -521,6 +541,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ChangeRecruiting();";
helpTag = "0";
text = "YES";
maxLength = "255";
groupNum = "7";
};
new ShellRadioButton(TP_RecruitFlagNoBtn) {
@ -534,6 +555,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ChangeRecruiting();";
helpTag = "0";
text = "NO";
maxLength = "255";
groupNum = "7";
};
};
@ -569,6 +591,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Current Tribe Graphic:";
maxLength = "255";
};
new ShellBitmapButton(TP_SubmitGraphicBtn) {
profile = "ShellButtonProfile";
@ -592,11 +615,11 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
minExtent = "8 8";
visible = "1";
helpTag = "0";
bitmap = "texticons/twb_Lineup.jpg";
bitmap = "texticons/twb/twb_Laserrifle.jpg";
wrap = "0";
};
new ShellFancyArrayScrollCtrl(ML1) {
profile = "clockProfile";
profile = "ShellServerBrowserProfile";
horizSizing = "width";
vertSizing = "height";
position = "233 21";
@ -638,8 +661,8 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 -195";
extent = "8 1307";
position = "0 0";
extent = "8 962";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -647,7 +670,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
};
};
new ShellFancyTextList(TribeGraphicsList) {
profile = "clockProfile";
profile = "ShellBrowserListProfile";
horizSizing = "width";
vertSizing = "height";
position = "0 0";
@ -671,7 +694,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "1";
CID = "0";
noSelect = "0";
};
};
new GuiTextCtrl() {
@ -684,6 +707,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "-------------- Graphic Requirements --------------";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
@ -695,6 +719,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Max Dimensions:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
@ -706,6 +731,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Max Size:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
@ -717,39 +743,43 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1";
helpTag = "0";
text = "Format:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "BrowserFilterTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "131 203";
extent = "26 22";
extent = "20 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "28k";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "BrowserFilterTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "131 216";
extent = "36 22";
extent = "27 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "JPEG";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "BrowserFilterTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "131 190";
extent = "93 22";
extent = "70 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "228w x 150h";
maxLength = "255";
};
};
};

View file

@ -14,14 +14,230 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
profile = "ShellDlgProfile";
horizSizing = "center";
vertSizing = "center";
position = "116 50";
extent = "408 380";
position = "116 69";
extent = "408 342";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "WARRIOR PROPERTIES";
maxLength = "255";
new ShellFieldCtrl(W_ProfilePane) {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "10 63";
extent = "385 239";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new ShellBitmapButton(WP_EditDescriptionBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 103";
extent = "95 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.editDescription();";
helpTag = "0";
text = "EDIT";
simpleStyle = "0";
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "180 4";
extent = "201 77";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "7 14";
extent = "25 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "URL:";
maxLength = "255";
};
new ShellTextEditCtrl(UrlEdit) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "27 6";
extent = "178 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
text = "www.tribes2.com";
maxLength = "255";
historySize = "0";
password = "0";
glowOffset = "9 9";
};
new ShellBitmapButton(WP_ChangeUrl) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "-2 40";
extent = "206 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.UpdateUrl();";
helpTag = "0";
text = "CHANGE HOME ADDRESS";
simpleStyle = "0";
};
};
new ShellBitmapButton(WP_ClearDescriptionBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 128";
extent = "95 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.clearDescription();";
helpTag = "0";
text = "CLEAR";
simpleStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "10 88";
extent = "76 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "DESCRIPTION:";
maxLength = "255";
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "3 3";
extent = "175 78";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "11 4";
extent = "35 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "NAME:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "18 24";
extent = "27 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "NEW:";
maxLength = "255";
};
new ShellBitmapButton(WP_ChangeNameBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "-2 42";
extent = "179 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.ChangePlayerName();";
helpTag = "0";
text = "CHANGE NAME";
simpleStyle = "0";
};
new ShellTextEditCtrl(NewNameEdit) {
profile = "NewTextEditProfile";
horizSizing = "left";
vertSizing = "bottom";
position = "39 16";
extent = "138 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
maxLength = "16";
historySize = "0";
password = "0";
glowOffset = "9 9";
};
new GuiTextCtrl(wp_currentname) {
profile = "BrowserProgressProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "51 6";
extent = "113 17";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "EAST";
maxLength = "20";
};
};
new ShellScrollCtrl() {
profile = "NewScrollCtrlProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "87 88";
extent = "295 147";
minExtent = "24 52";
visible = "1";
helpTag = "0";
willFirstRespond = "1";
hScrollBar = "alwaysOff";
vScrollBar = "alwaysOn";
constantThumbHeight = "0";
defaultLineHeight = "15";
childMargin = "10 5";
fieldBase = "gui/shll_field";
new GuiScrollContentCtrl() {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "height";
position = "14 9";
extent = "251 129";
minExtent = "8 8";
visible = "1";
helpTag = "0";
new GuiMLTextCtrl(WP_WarriorDescription) {
profile = "GuiDefaultProfile";
horizSizing = "left";
vertSizing = "relative";
position = "0 0";
extent = "249 28";
minExtent = "8 8";
visible = "1";
helpTag = "0";
lineSpacing = "2";
allowColorChars = "1";
maxChars = "-1";
};
};
};
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
@ -40,16 +256,30 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
extent = "105 38";
minExtent = "32 38";
visible = "1";
command = "W_GraphicsControl.setVisible(0);W_ProfilePane.setVisible(1);";
helpTag = "0";
text = "PROFILE";
simpleStyle = "0";
};
new ShellBitmapButton(WP_GFXBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "82 -5";
extent = "105 38";
minExtent = "32 38";
visible = "1";
command = "W_ProfilePane.setVisible(0);W_GraphicsControl.setVisible(1);WarriorPropertiesDlg.LoadGfxPane();";
helpTag = "0";
text = "GFX";
simpleStyle = "0";
};
};
new ShellBitmapButton(W_OKBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "312 337";
position = "312 298";
extent = "91 38";
minExtent = "32 38";
visible = "1";
@ -58,22 +288,155 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
text = "CLOSE";
simpleStyle = "0";
};
new ShellFieldCtrl(W_ProfilePane) {
new ShellFieldCtrl(W_GraphicsControl) {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "10 63";
extent = "385 277";
extent = "385 239";
minExtent = "16 18";
visible = "1";
visible = "0";
helpTag = "0";
new ShellFancyArrayScrollCtrl(WGL) {
profile = "clockProfile";
new ShellBitmapButton(TP_SubmitGraphicBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "229 198";
extent = "158 38";
minExtent = "32 38";
visible = "0";
helpTag = "0";
text = "FIND NEW GRAPHIC";
simpleStyle = "0";
};
new GuiTextCtrl() {
profile = "BrowserProgressProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "9 8";
extent = "125 17";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Current Graphic:";
maxLength = "255";
};
new ShellBitmapButton(WP_SubmitGraphicBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "229 173";
extent = "158 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.SetPlayerGraphic();";
helpTag = "0";
text = "USE SELECTED GRAPHIC";
simpleStyle = "0";
};
new GuiBitmapCtrl(PlayerGraphic) {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "6 24";
extent = "228 150";
minExtent = "8 8";
visible = "1";
helpTag = "0";
bitmap = "texticons/twb/twb_Missilelauncher.jpg";
wrap = "0";
};
new GuiTextCtrl() {
profile = "BrowserFilterTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "131 190";
extent = "70 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "228w x 150h";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "BrowserProgressProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "4 177";
extent = "230 19";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "-------------- Graphic Requirements --------------";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "21 190";
extent = "102 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Max Dimensions:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "65 203";
extent = "58 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Max Size:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "77 216";
extent = "46 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Format:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "BrowserFilterTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "131 203";
extent = "20 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "28k";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "BrowserFilterTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "131 216";
extent = "27 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "JPEG";
maxLength = "255";
};
new ShellFancyArrayScrollCtrl(WL1) {
profile = "ShellServerBrowserProfile";
horizSizing = "width";
vertSizing = "height";
position = "233 101";
extent = "152 148";
position = "233 21";
extent = "149 156";
minExtent = "24 52";
visible = "1";
helpTag = "0";
@ -86,7 +449,7 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
horizSizing = "right";
vertSizing = "bottom";
position = "0 16";
extent = "152 132";
extent = "149 140";
minExtent = "8 52";
visible = "1";
helpTag = "0";
@ -97,22 +460,22 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
defaultLineHeight = "15";
childMargin = "0 3";
new VirtualScrollContentCtrl(ML3) {
new VirtualScrollContentCtrl(WL3) {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "4 7";
extent = "128 118";
extent = "125 126";
minExtent = "8 8";
visible = "1";
helpTag = "0";
new GuiControl(ML4) {
new GuiControl(WL4) {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "8 8";
position = "0 -212";
extent = "8 962";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -120,11 +483,11 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
};
};
new ShellFancyTextList(WarriorGraphicsList) {
profile = "clockProfile";
profile = "ShellBrowserListProfile";
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "132 144";
extent = "129 152";
minExtent = "8 20";
visible = "1";
command = "WarriorGraphicsList.onSelect();";
@ -144,208 +507,9 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "1";
noSelect = "0";
};
};
new ShellBitmapButton(WP_SubmitGraphicBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "229 242";
extent = "160 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.SetPlayerGraphic();";
helpTag = "0";
text = "USE SELECTED GRAPHIC";
simpleStyle = "0";
};
new GuiTextCtrl() {
profile = "BrowserProgressProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "9 104";
extent = "125 17";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Current Graphic";
maxLength = "255";
};
new GuiBitmapCtrl(PlayerGraphic) {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "6 121";
extent = "228 150";
minExtent = "8 8";
visible = "1";
helpTag = "0";
bitmap = "texticons/twb/twb_Laserrifle.jpg";
wrap = "0";
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "3 3";
extent = "175 99";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "11 11";
extent = "35 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "NAME:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "18 38";
extent = "27 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "NEW:";
maxLength = "255";
};
new ShellBitmapButton(WP_ChangeNameBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "-2 65";
extent = "179 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.ChangePlayerName();";
helpTag = "0";
text = "CHANGE NAME";
simpleStyle = "0";
};
new ShellTextEditCtrl(NewNameEdit) {
profile = "NewTextEditProfile";
horizSizing = "left";
vertSizing = "bottom";
position = "39 30";
extent = "138 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
maxLength = "16";
historySize = "0";
password = "0";
glowOffset = "9 9";
};
new GuiTextCtrl(WP_CurrentName) {
profile = "BrowserProgressProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "51 13";
extent = "113 17";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "EAST";
maxLength = "20";
};
};
new ShellFieldCtrl() {
profile = "ShellFieldProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "180 37";
extent = "201 65";
minExtent = "16 18";
visible = "1";
helpTag = "0";
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "8 9";
extent = "25 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "URL:";
maxLength = "255";
};
new ShellTextEditCtrl(UrlEdit) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "28 1";
extent = "178 38";
minExtent = "32 38";
visible = "1";
helpTag = "0";
text = "www.tribes2.com";
maxLength = "255";
historySize = "0";
password = "0";
glowOffset = "9 9";
};
new ShellBitmapButton(WP_ChangeUrl) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "-2 30";
extent = "206 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.UpdateUrl();";
helpTag = "0";
text = "CHANGE HOME ADDRESS";
simpleStyle = "0";
};
};
new ShellBitmapButton(WP_EditDescriptionBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "317 0";
extent = "73 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.editDescription();";
helpTag = "0";
text = "EDIT";
simpleStyle = "0";
};
new ShellBitmapButton(WP_ClearDescriptionBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "260 0";
extent = "72 38";
minExtent = "32 38";
visible = "1";
command = "WarriorPropertiesDlg.clearDescription();";
helpTag = "0";
text = "CLEAR";
simpleStyle = "0";
};
new GuiTextCtrl() {
profile = "ShellTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "186 8";
extent = "76 22";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "DESCRIPTION:";
maxLength = "255";
};
};
};
};

View file

@ -90,13 +90,6 @@ new GuiControlProfile ("GuiContentProfile")
fillColor = "255 255 255";
};
new GuiControlProfile ("memberListProfile")
{
fontType = "Univers Condensed";
fontSize = 12;
fontColor = "255 222 0";
};
new GuiControlProfile ("clockProfile")
{
fontType = "Univers Condensed";
@ -104,13 +97,6 @@ new GuiControlProfile ("clockProfile")
fontColor = "0 255 0";
};
new GuiControlProfile ("browserListProfile")
{
fontType = "Univers Condensed";
fontSize = 14;
fontColor = "0 255 0";
};
new GuiControlProfile ("GuiContentProfileNoClear")
{
opaque = false;
@ -490,6 +476,20 @@ new GuiControlProfile ("ShellServerBrowserProfile")
canKeyFocus = true;
};
new GuiControlProfile ("ShellBrowserListProfile")
{
fontType = $ShellFont;
fontSize = 12;
fontColor = "20 220 20";
fontColorHL = "60 250 60";
fontColorNA = "128 128 128";
fontColorSEL = "0 60 0";
soundButtonDown = sButtonDown;
soundButtonOver = sButtonOver;
tab = true;
canKeyFocus = true;
};
new GuiControlProfile ("LobbyPlayerListProfile")
{
fontType = $ShellFont;

441
base/input.log Normal file
View file

@ -0,0 +1,441 @@
Input log opened at Wed Mar 28 14:15:31 2001
Operating System:
WinNT version 5.0
Build number 2195
Service Pack 1
Enabling DirectInput...
DirectX 3 detected.
Enumerating input devices...
Keyboard detected, created as keyboard0 (asynchronous).
128 total objects detected.
128 keys.
Mouse detected, created as mouse0 (asynchronous).
6 total objects detected.
3 buttons.
1 x-axis.
1 y-axis.
1 z-axis.
--- Filling the ASCII table! ---
KC: 0X09 DK: 0X01 VK: 0X1B
LOWER- R: 1 A[0]: 0X001B A[1]: 0X0000
UPPER- R: 1 A[0]: 0X001B A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X0A DK: 0X39 VK: 0X20
LOWER- R: 1 A[0]: 0X0020 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0020 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X0B DK: 0XD1 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X0C DK: 0XC9 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X0D DK: 0XCF VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X0E DK: 0XC7 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X0F DK: 0XCB VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X10 DK: 0XC8 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X11 DK: 0XCD VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X12 DK: 0XD0 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X13 DK: 0XB7 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X14 DK: 0XD2 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X15 DK: 0XD3 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X17 DK: 0X0B VK: 0X30
LOWER- R: 1 A[0]: 0X0030 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0029 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X18 DK: 0X02 VK: 0X31
LOWER- R: 1 A[0]: 0X0031 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0021 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X19 DK: 0X03 VK: 0X32
LOWER- R: 1 A[0]: 0X0032 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0040 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X1A DK: 0X04 VK: 0X33
LOWER- R: 1 A[0]: 0X0033 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0023 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X1B DK: 0X05 VK: 0X34
LOWER- R: 1 A[0]: 0X0034 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0024 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X1C DK: 0X06 VK: 0X35
LOWER- R: 1 A[0]: 0X0035 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0025 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X1D DK: 0X07 VK: 0X36
LOWER- R: 1 A[0]: 0X0036 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X005E A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X1E DK: 0X08 VK: 0X37
LOWER- R: 1 A[0]: 0X0037 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0026 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X1F DK: 0X09 VK: 0X38
LOWER- R: 1 A[0]: 0X0038 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X002A A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X20 DK: 0X0A VK: 0X39
LOWER- R: 1 A[0]: 0X0039 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0028 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X21 DK: 0X1E VK: 0X41
LOWER- R: 1 A[0]: 0X0061 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0041 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X22 DK: 0X30 VK: 0X42
LOWER- R: 1 A[0]: 0X0062 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0042 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X23 DK: 0X2E VK: 0X43
LOWER- R: 1 A[0]: 0X0063 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0043 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X24 DK: 0X20 VK: 0X44
LOWER- R: 1 A[0]: 0X0064 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0044 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X25 DK: 0X12 VK: 0X45
LOWER- R: 1 A[0]: 0X0065 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0045 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X26 DK: 0X21 VK: 0X46
LOWER- R: 1 A[0]: 0X0066 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0046 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X27 DK: 0X22 VK: 0X47
LOWER- R: 1 A[0]: 0X0067 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0047 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X28 DK: 0X23 VK: 0X48
LOWER- R: 1 A[0]: 0X0068 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0048 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X29 DK: 0X17 VK: 0X49
LOWER- R: 1 A[0]: 0X0069 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0049 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X2A DK: 0X24 VK: 0X4A
LOWER- R: 1 A[0]: 0X006A A[1]: 0X0000
UPPER- R: 1 A[0]: 0X004A A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X2B DK: 0X25 VK: 0X4B
LOWER- R: 1 A[0]: 0X006B A[1]: 0X0000
UPPER- R: 1 A[0]: 0X004B A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X2C DK: 0X26 VK: 0X4C
LOWER- R: 1 A[0]: 0X006C A[1]: 0X0000
UPPER- R: 1 A[0]: 0X004C A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X2D DK: 0X32 VK: 0X4D
LOWER- R: 1 A[0]: 0X006D A[1]: 0X0000
UPPER- R: 1 A[0]: 0X004D A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X2E DK: 0X31 VK: 0X4E
LOWER- R: 1 A[0]: 0X006E A[1]: 0X0000
UPPER- R: 1 A[0]: 0X004E A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X2F DK: 0X18 VK: 0X4F
LOWER- R: 1 A[0]: 0X006F A[1]: 0X0000
UPPER- R: 1 A[0]: 0X004F A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X30 DK: 0X19 VK: 0X50
LOWER- R: 1 A[0]: 0X0070 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0050 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X31 DK: 0X10 VK: 0X51
LOWER- R: 1 A[0]: 0X0071 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0051 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X32 DK: 0X13 VK: 0X52
LOWER- R: 1 A[0]: 0X0072 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0052 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X33 DK: 0X1F VK: 0X53
LOWER- R: 1 A[0]: 0X0073 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0053 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X34 DK: 0X14 VK: 0X54
LOWER- R: 1 A[0]: 0X0074 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0054 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X35 DK: 0X16 VK: 0X55
LOWER- R: 1 A[0]: 0X0075 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0055 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X36 DK: 0X2F VK: 0X56
LOWER- R: 1 A[0]: 0X0076 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0056 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X37 DK: 0X11 VK: 0X57
LOWER- R: 1 A[0]: 0X0077 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0057 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X38 DK: 0X2D VK: 0X58
LOWER- R: 1 A[0]: 0X0078 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0058 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X39 DK: 0X15 VK: 0X59
LOWER- R: 1 A[0]: 0X0079 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0059 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X3A DK: 0X2C VK: 0X5A
LOWER- R: 1 A[0]: 0X007A A[1]: 0X0000
UPPER- R: 1 A[0]: 0X005A A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X3B DK: 0X29 VK: 0XC0
LOWER- R: 1 A[0]: 0X0060 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X007E A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X3C DK: 0X0C VK: 0XBD
LOWER- R: 1 A[0]: 0X002D A[1]: 0X0000
UPPER- R: 1 A[0]: 0X005F A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X3D DK: 0X0D VK: 0XBB
LOWER- R: 1 A[0]: 0X003D A[1]: 0X0000
UPPER- R: 1 A[0]: 0X002B A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X3E DK: 0X1A VK: 0XDB
LOWER- R: 1 A[0]: 0X005B A[1]: 0X0000
UPPER- R: 1 A[0]: 0X007B A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X3F DK: 0X1B VK: 0XDD
LOWER- R: 1 A[0]: 0X005D A[1]: 0X0000
UPPER- R: 1 A[0]: 0X007D A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X40 DK: 0X2B VK: 0XDC
LOWER- R: 1 A[0]: 0X005C A[1]: 0X0000
UPPER- R: 1 A[0]: 0X007C A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X41 DK: 0X27 VK: 0XBA
LOWER- R: 1 A[0]: 0X003B A[1]: 0X0000
UPPER- R: 1 A[0]: 0X003A A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X42 DK: 0X28 VK: 0XDE
LOWER- R: 1 A[0]: 0X0027 A[1]: 0X0000
UPPER- R: 1 A[0]: 0X0022 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X43 DK: 0X33 VK: 0XBC
LOWER- R: 1 A[0]: 0X002C A[1]: 0X0000
UPPER- R: 1 A[0]: 0X003C A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X44 DK: 0X34 VK: 0XBE
LOWER- R: 1 A[0]: 0X002E A[1]: 0X0000
UPPER- R: 1 A[0]: 0X003E A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X45 DK: 0X35 VK: 0XBF
LOWER- R: 1 A[0]: 0X002F A[1]: 0X0000
UPPER- R: 1 A[0]: 0X003F A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X46 DK: 0X52 VK: 0X2D
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X47 DK: 0X4F VK: 0X23
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X48 DK: 0X50 VK: 0X28
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X49 DK: 0X51 VK: 0X22
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X4A DK: 0X4B VK: 0X25
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X4B DK: 0X4C VK: 0X0C
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X4C DK: 0X4D VK: 0X27
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X4D DK: 0X47 VK: 0X24
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X4E DK: 0X48 VK: 0X26
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X4F DK: 0X49 VK: 0X21
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X50 DK: 0X37 VK: 0X6A
LOWER- R: 1 A[0]: 0X002A A[1]: 0X0000
UPPER- R: 1 A[0]: 0X002A A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X51 DK: 0X4E VK: 0X6B
LOWER- R: 1 A[0]: 0X002B A[1]: 0X0000
UPPER- R: 1 A[0]: 0X002B A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X52 DK: 0XB3 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X53 DK: 0X4A VK: 0X6D
LOWER- R: 1 A[0]: 0X002D A[1]: 0X0000
UPPER- R: 1 A[0]: 0X002D A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X54 DK: 0X53 VK: 0X2E
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X55 DK: 0XB5 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X56 DK: 0X9C VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X57 DK: 0X3B VK: 0X70
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X58 DK: 0X3C VK: 0X71
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X59 DK: 0X3D VK: 0X72
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X5A DK: 0X3E VK: 0X73
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X5B DK: 0X3F VK: 0X74
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X5C DK: 0X40 VK: 0X75
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X5D DK: 0X41 VK: 0X76
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X5E DK: 0X42 VK: 0X77
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X5F DK: 0X43 VK: 0X78
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X60 DK: 0X44 VK: 0X79
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X61 DK: 0X57 VK: 0X7A
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X62 DK: 0X58 VK: 0X7B
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X63 DK: 0X64 VK: 0X7C
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X64 DK: 0X65 VK: 0X7D
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X65 DK: 0X66 VK: 0X7E
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X6F DK: 0X45 VK: 0X90
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X70 DK: 0X46 VK: 0X91
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X71 DK: 0X1D VK: 0X11
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X72 DK: 0X9D VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X73 DK: 0X38 VK: 0X12
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X74 DK: 0XB8 VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X75 DK: 0X2A VK: 0X10
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X76 DK: 0X36 VK: 0X10
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X77 DK: 0XDB VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X78 DK: 0XDC VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X79 DK: 0XDD VK: 0X00
LOWER- R: 0 A[0]: 0X0000 A[1]: 0X0000
UPPER- R: 0 A[0]: 0X0000 A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
KC: 0X80 DK: 0X56 VK: 0XE2
LOWER- R: 1 A[0]: 0X005C A[1]: 0X0000
UPPER- R: 1 A[0]: 0X007C A[1]: 0X0000
GOOFY- R: 0 A[0]: 0X0000 A[1]: 0X0000
--- Finished filling the ASCII table! ---
*** CLOSING LOG ***

File diff suppressed because it is too large Load diff

View file

@ -2,26 +2,26 @@
// MissionTypes = DM Hunters TeamHunters
//--- MISSION QUOTE BEGIN ---
//Don't fear the Reaper. Fear me.
// -- Gir Draxon, Leader of the Hordes, 3941 CE
//I am of the Chainless. I am Strong. I show no mercy.
//--BioDerm battle chant
//--- MISSION QUOTE END ---
//--- MISSION STRING BEGIN ---
//[Hunters TeamHunters]Nexus located atop central tower
//Three satellite towers around central tower
//Inventory stations in all towers
//Ideal for combined indoor/outdoor combat tactics
//Ideal for combined indoor/outdoor tactics
//--- MISSION STRING END ---
//--- OBJECT WRITE BEGIN ---
new SimGroup(MissionGroup) {
powerCount = "0";
DM_timeLimit = "25";
Hunters_timeLimit = "25";
Team_Hunters_timeLimit = "25";
musicTrack = "badlands";
DM_scoreLimit = "25";
musicTrack = "badlands";
powerCount = "0";
Hunters_timeLimit = "25";
cdTrack = "4";
Team_Hunters_timeLimit = "25";
new MissionArea(MissionArea) {
area = "-160 -88 512 512";
@ -54,17 +54,17 @@ new SimGroup(MissionGroup) {
fogVolumeColor1 = "128.000000 128.000000 128.000000 nan";
fogVolumeColor2 = "128.000000 128.000000 128.000000 148120713330651839000000000000000000000.000000";
fogVolumeColor3 = "128.000000 128.000000 128.000000 nan";
locked = "true";
cloudSpeed0 = "0.000000 0.000000";
locked = "true";
};
new Sun() {
direction = "0.57735 0.57735 -0.57735";
color = "0.600000 0.600000 0.600000 1.000000";
ambient = "0.600000 0.600000 0.600000 1.000000";
position = "0 0 0";
locked = "true";
rotation = "1 0 0 0";
scale = "1 1 1";
locked = "true";
};
new TerrainBlock(Terrain) {
rotation = "1 0 0 0";
@ -81,17 +81,16 @@ new SimGroup(MissionGroup) {
cullDensity = "0.3";
customArea = "0 0 0 0";
position = "0 0 0 1";
XDimOverSize = "0";
locked = "true";
rotation = "0 0 0 0";
conjoinBowlDev = "20";
scale = "1 1 1";
coverage = "0";
YDimOverSize = "0";
GraphFile = "AgentsOfFortune.nav";
rotation = "0 0 0 0";
coverage = "0";
scale = "1 1 1";
locked = "true";
YDimOverSize = "0";
XDimOverSize = "0";
};
new SimGroup(ObserverDropPoints) {
powerCount = "0";
new Camera() {
position = "170.145 354.633 306.299";
@ -122,13 +121,10 @@ new SimGroup(MissionGroup) {
};
};
new SimGroup(Teams) {
powerCount = "0";
new SimGroup(Team1) {
powerCount = "0";
new SimGroup(spawnspheres) {
powerCount = "0";
new SpawnSphere() {
position = "120.543 125.555 178.74";
@ -141,12 +137,11 @@ new SimGroup(MissionGroup) {
sphereWeight = "100";
indoorWeight = "0";
outdoorWeight = "100";
locked = "true";
missionTypesList = "Hunters TeamHunters DM";
locked = "true";
};
};
new SimGroup(AIObjectives) {
powerCount = "0";
new AIObjective(AIORepairObject) {
position = "206.155 290.506 238.077";
@ -173,9 +168,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "199.076 306.979 274.076";
@ -202,9 +196,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "-54.5328 142.977 234.564";
@ -231,9 +224,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "-61.6912 133.365 198.742";
@ -260,9 +252,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "132.621 170.206 141.512";
@ -289,9 +280,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "242.229 -55.9849 184.697";
@ -318,9 +308,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "132.35 81.4307 123.601";
@ -347,9 +336,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "249.2 -47.0356 220.655";
@ -376,9 +364,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "132.247 133.472 42.4322";
@ -405,9 +392,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
new AIObjective(AIORepairObject) {
position = "132.537 114.232 42.4282";
@ -434,17 +420,14 @@ new SimGroup(MissionGroup) {
forceClientId = "-1";
locked = "1";
issuingClientId = "-1";
gameType = "all";
isInvalid = "0";
team = "1";
gameType = "all";
};
};
};
new SimGroup(Team2) {
powerCount = "0";
new SimGroup(spawnspheres) {
powerCount = "0";
new SpawnSphere() {
position = "120.543 125.555 178.74";
@ -457,16 +440,14 @@ new SimGroup(MissionGroup) {
sphereWeight = "100";
indoorWeight = "0";
outdoorWeight = "100";
locked = "true";
missionTypesList = "TeamHunters";
locked = "true";
};
};
};
new SimGroup(team0) {
powerCount = "0";
new SimGroup(base) {
powerCount = "1";
providesPower = "1";
new InteriorInstance() {
@ -477,7 +458,6 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1";
locked = "true";
team = "0";
};
new InteriorInstance() {
position = "-61.9873 145.333 208.013";
@ -487,7 +467,6 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1";
locked = "true";
team = "0";
};
new InteriorInstance() {
position = "203.206 303.487 247.408";
@ -497,7 +476,6 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1";
locked = "true";
team = "0";
};
new StaticShape(Team1StationInventory1) {
position = "203.105 290.287 236.41";
@ -509,8 +487,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "33";
Trigger = "3361";
team = "0";
};
new StaticShape(Team1StationInventory2) {
position = "196.076 306.979 272.41";
@ -522,8 +498,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "34";
Trigger = "3363";
team = "0";
};
new StaticShape(Team1StationInventory3) {
position = "-54.7328 141.777 233.01";
@ -535,8 +509,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "35";
Trigger = "3365";
team = "0";
};
new StaticShape(Team1StationInventory4) {
position = "-61.8912 132.165 197.01";
@ -548,8 +520,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "36";
Trigger = "3367";
team = "0";
};
new StaticShape(Team1StationInventory5) {
position = "131.421 170.206 139.83";
@ -561,8 +531,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "37";
Trigger = "3369";
team = "0";
};
new StaticShape(Team1StationInventory6) {
position = "242.042 -53.8823 182.9";
@ -574,8 +542,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "38";
Trigger = "3371";
team = "0";
};
new StaticShape(Team1StationInventory7) {
position = "131.15 81.4307 121.83";
@ -587,8 +553,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "39";
Trigger = "3373";
team = "0";
};
new StaticShape(Team1StationInventory8) {
position = "249.4 -44.2356 218.9";
@ -600,8 +564,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "40";
Trigger = "3375";
team = "0";
};
new StaticShape(Team1StationInventory9) {
position = "131.047 133.472 40.825";
@ -613,8 +575,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "41";
Trigger = "3377";
team = "0";
};
new StaticShape(Team1StationInventory10) {
position = "131.293 114.234 40.825";
@ -626,8 +586,6 @@ new SimGroup(MissionGroup) {
homingCount = "0";
locked = "true";
Target = "42";
Trigger = "3379";
team = "0";
};
new InteriorInstance() {
position = "242.199 -41.2332 193.901";
@ -637,86 +595,83 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1";
locked = "true";
team = "0";
};
new Item(Nexus) {
position = "130.989 125.937 160.988";
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "Nexus";
lockCount = "0";
homingCount = "0";
collideable = "0";
static = "1";
rotate = "0";
missionTypesList = "Hunters TeamHunters";
flashThreadDir = "1";
locked = "true";
Target = "43";
};
new StaticShape() {
position = "130.989 125.937 168.77";
rotation = "1 0 0 0";
scale = "0.7 0.7 1";
dataBlock = "NexusCap";
lockCount = "0";
homingCount = "0";
missionTypesList = "Hunters TeamHunters";
locked = "true";
Target = "-1";
};
new StaticShape() {
position = "130.989 125.937 162.77";
rotation = "1 0 0 0";
scale = "0.7 0.7 1";
dataBlock = "NexusBase";
lockCount = "0";
homingCount = "0";
missionTypesList = "Hunters TeamHunters";
locked = "true";
Target = "-1";
};
new WayPoint() {
position = "130.623 125.532 162.74";
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
name = "Nexus";
team = "0";
missionTypesList = "Hunters TeamHunters";
locked = "true";
};
new WayPoint() {
position = "130.623 125.532 163.74";
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
name = "Tower";
team = "0";
missionTypesList = "DM";
locked = "true";
};
};
};
};
new Item(Nexus) {
position = "130.989 125.937 160.988";
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "Nexus";
lockCount = "0";
homingCount = "0";
collideable = "0";
static = "1";
rotate = "0";
locked = "true";
missionTypesList = "Hunters TeamHunters";
Target = "43";
flashThreadDir = "1";
};
new StaticShape() {
position = "130.989 125.937 168.77";
rotation = "1 0 0 0";
scale = "0.7 0.7 1";
dataBlock = "NexusCap";
lockCount = "0";
homingCount = "0";
locked = "true";
missionTypesList = "Hunters TeamHunters";
Target = "-1";
};
new StaticShape() {
position = "130.989 125.937 162.77";
rotation = "1 0 0 0";
scale = "0.7 0.7 1";
dataBlock = "NexusBase";
lockCount = "0";
homingCount = "0";
locked = "true";
missionTypesList = "Hunters TeamHunters";
Target = "-1";
};
new WayPoint() {
position = "130.623 125.532 162.74";
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
name = "Nexus";
team = "0";
locked = "true";
missionTypesList = "Hunters TeamHunters";
};
new WayPoint() {
position = "130.623 125.532 163.74";
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
name = "Tower";
team = "0";
locked = "true";
missionTypesList = "DM";
};
new Trigger(NexusTrigger) {
position = "116.023 141.332 149.54";
rotation = "1 0 0 0";
scale = "30 30 27.2131";
dataBlock = "gameTrigger";
polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 1.0000000 -0.0000000 -1.0000000 -0.0000000";
locked = "true";
missionTypesList = "Hunters TeamHunters";
new Trigger(NexusTrigger) {
position = "109.972 143.602 158.388";
rotation = "1 0 0 0";
scale = "41.3963 35.6001 19.8193";
dataBlock = "gameTrigger";
polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 -0.0000000 -1.0000000 -0.0000000 -0.0000000 -0.0000000 1.0000000";
missionTypesList = "Hunters TeamHunters";
locked = "true";
};
};
new SimGroup(RandomOrganics) {
powerCount = "0";
new SimGroup(Addition5BiodermPlant5) {
powerCount = "0";
new TSStatic() {
position = "269.5 -33.5 187.748";
@ -777,7 +732,6 @@ new SimGroup(MissionGroup) {
};
};
new SimGroup(ambient) {
powerCount = "0";
new TSStatic() {
position = "210.085 300.266 272.4";
@ -833,7 +787,7 @@ new SimGroup(MissionGroup) {
rotation = "0 -1 0 26.929";
scale = "1 1 1";
shapeName = "stackable1l.dts";
locked = "false";
locked = "true";
};
new TSStatic() {
position = "126.808 126.436 39.78";
@ -972,18 +926,20 @@ new SimGroup(MissionGroup) {
shapeName = "stackable3m.dts";
locked = "true";
};
};
new TSStatic() {
position = "85.2228 126.233 56.31";
rotation = "1 0 0 0";
scale = "1 1 1";
shapeName = "stackable3s.dts";
};
new TSStatic() {
position = "176.956 125.898 56.3";
rotation = "0 0 1 16.0428";
scale = "1 1 1";
shapeName = "stackable2l.dts";
new TSStatic() {
position = "85.2228 126.233 56.31";
rotation = "1 0 0 0";
scale = "1 1 1";
shapeName = "stackable3s.dts";
locked = "true";
};
new TSStatic() {
position = "176.956 125.898 56.3";
rotation = "0 0 1 16.0428";
scale = "1 1 1";
shapeName = "stackable2l.dts";
locked = "true";
};
};
};
//--- OBJECT WRITE END ---

View file

@ -22,7 +22,7 @@ new SimGroup(MissionGroup) {
new MissionArea(MissionArea) {
area = "-472 -840 1152 1152";
flightCeiling = "2000";
flightCeiling = "350";
flightCeilingRange = "50";
locked = "true";
};

View file

@ -2,8 +2,7 @@
// MissionTypes = CTF
//--- MISSION QUOTE BEGIN ---
//We will not glorify ourselves, Lord Phoenix.
//Your wrath will clothe us in righteousness as we chastise the tribes with fire.
//A darkness infects the wilderzone, one that only fire can cleanse. Our fire.
// -- Anton Malderi, anointed Phoenix Prime, 3941 CE
//--- MISSION QUOTE END ---

View file

@ -2,7 +2,7 @@
// DisplayName = Respite
//--- MISSION QUOTE BEGIN ---
//Let all the Tribes of Man hear me: none shall escape the Bright Lord's mercy.
//Let all the Tribes of Man bear witness: the Phoenix rises at last to claim its own.
// -- Anton Malderi yl-Harabec, first anointed Phoenix Prime of the Harbingers, 3941 CE
//--- MISSION QUOTE END ---

View file

@ -1,7 +1,7 @@
// MissionTypes = Hunters TeamHunters
//--- MISSION QUOTE BEGIN ---
//Howl, O Wolves, howl for our dead kin scattered on the frozen seas of Ymir. Then take up your weapons. We shall hunt the Hordes until the stars grow cold.
//Forget the Blood Eagle! The Hordes killed a half million of us at Ymir. That's a lot of kin to avenge, so lock and load. This is going to take awhile.
// -- Jarek Redmoon, Ur-Shaman of the Starwolf, 3941 CE
//--- MISSION QUOTE END ---

View file

@ -19,8 +19,8 @@ new SimGroup(MissionGroup) {
new MissionArea(MissionArea) {
area = "-976 -928 1360 1424";
flightCeiling = "2000";
flightCeilingRange = "50";
flightCeiling = "400";
flightCeilingRange = "20";
};
new Sun() {
direction = "0.57735 0.57735 -0.57735";

View file

@ -1,5 +1,5 @@
// MissionTypes = SinglePlayer
// DisplayName = Seargent
// DisplayName = Sergeant
//--- MISSION BRIEFING BEGIN ---
//Welcome, Sergeant. We have another tricky assignment for you. Captain Kenzie requested you lead the field operation, and I'm sure you're the right man for the mission.

View file

@ -1,7 +1,7 @@
// MissionTypes = Hunters Bounty DM
//--- MISSION QUOTE BEGIN ---
//Fah! Humans are weak! Find me a human who can fight, and I will bring you the sun in these two hands!
//Humans are always treacherous. Their lies make them weak. The weak are our prey.
// -- Rog Gedharhk Blood-Drinker, Horde Maul reaver
//--- MISSION QUOTE END ---

View file

@ -98,4 +98,10 @@ moveMap.bind(mouse0, "yaxis", pitch);
moveMap.bind(mouse0, "button0", mouseFire);
moveMap.bind(mouse0, "button1", mouseJet);
moveMap.bind(mouse0, "zaxis", cycleWeaponAxis);
GlobalActionMap.bind(keyboard, "grave", toggleConsole);
observerMap.delete();
new ActionMap(observerMap);
observerMap.bind(keyboard, "space", jump);
observerMap.bind(keyboard, "e", moveup);
observerMap.bind(keyboard, "c", movedown);
observerMap.bind(mouse0, "button1", mouseJet);
GlobalActionMap.bind(keyboard, "grave", toggleConsole);

View file

@ -352,22 +352,18 @@ function BountyGame::buildListValidTargets(%game, %cl)
for (%cIndex = 0; %cIndex < %numClients; %cIndex++)
{
%opponent = ClientGroup.getObject(%cIndex);
//echo ("Predator = " @ %cl @ " PossPrey = " @ %opponent);
if (!%opponent.isNotInGame) //hasn't dropped
{
if (%opponent != %cl) //don't add client himself to list
//make sure the target isn't yourself, or an observer
if (%opponent != %cl && %opponent.team > 0 && !%opponent.isNotInGame)
{
//make sure candidate for list has not already been killed by client
if (!%cl.eliminated[%opponent])
{
if (%opponent.player) //make sure candidate for list has a player
{
if (!%cl.eliminated[%opponent]) //make sure candidate for list has not already been killed by client
{
%cl.validList[%availTargets] = %opponent;
%availTargets++;
}
}
%cl.validList[%availTargets] = %opponent;
%availTargets++;
}
}
}
//returns length of list (number of players eligible as targets to this client)
%game.hudUpdateObjRem(%cl, %availTargets);
if ((%availTargets <= %game.WARN_AT_NUM_OBJREM) && (%cl.hasHadTarget))
@ -412,6 +408,7 @@ function BountyGame::gameOver(%game)
%client = ClientGroup.getObject(%i);
%game.resetScore(%client);
cancel(%client.waypointSchedule);
cancel(%client.forceRespawnThread);
}
}
@ -436,6 +433,18 @@ function BountyGame::AIHasJoined(%game, %client)
//messageAllExcept(%client, -1, 'MsgClientJoinTeam', '%1 has joined the fray.', %client.name, "", %client, 1);
}
function BountyGame::forceRespawn(%game, %client)
{
//make sure the player hasn't already respawned
if (isObject(%client.player))
return;
commandToClient(%client, 'setHudMode', 'Standard');
Game.spawnPlayer( %client, true );
%client.camera.setFlyMode();
%client.setControlObject(%client.player);
}
function BountyGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLoc)
{
DefaultGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLoc);
@ -446,6 +455,10 @@ function BountyGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %i
// any time a person dies, the kill streak is reset
%clVictim.killStreak = 0;
//force the player to respawn
if (!%clVictim.isAIControlled())
%clVictim.forceRespawnThread = %game.schedule(5000, forceRespawn, %clVictim);
}
function BountyGame::onClientLeaveGame(%game, %clientId)
@ -476,7 +489,10 @@ function BountyGame::onClientLeaveGame(%game, %clientId)
function BountyGame::onClientEnterObserverMode(%game, %clientId)
{
// is this fair? go to observer mode and no one has you as a target any more
//cancel the respawn schedule
cancel(%clientId.forceRespawnThread);
//notify everyone else, and choose a new objective if required...
%numClients = ClientGroup.getCount();
for (%index = 0; %index < %numClients; %index++)
{
@ -815,7 +831,7 @@ function BountyGame::updateScoreHud(%game, %client, %tag)
for (%cIndex = 0; %cIndex < ClientGroup.getCount(); %cIndex++)
{
%opponent = ClientGroup.getObject(%cIndex);
if (!%opponent.isNotInGame && %opponent != %cl && isObject(%opponent.player) && !%cl.eliminated[%opponent])
if (!%opponent.isNotInGame && %opponent.team > 0 && %opponent != %cl && !%cl.eliminated[%opponent])
%clTargets++;
}
@ -840,6 +856,36 @@ function BountyGame::updateScoreHud(%game, %client, %tag)
}
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient(%client, 'ClearHud', "", %tag, %index);
}

View file

@ -10,8 +10,11 @@ $ESCAPE_SEQ = "_-_";
$IRCClient::serverList = GetIRCServerList(0);
$IRCClient::serverCount = getRecordCount($IRCClient::serverList);
$IRCClient::retries = -1;
$IRCClient::serverIndex = -1;
$IRCClient::serverport = 6667;
if ($IRCClient::serverCount > 1)
$IRCClient::serverIndex = getRandom($IRCClient::serverCount-1)-1;
else
$IRCClient::serverIndex = -1;
$IRCClient::serverAttempt = 0;
$AWAY_TIMEOUT = 5 * 60 * 1000;
$VERSION_FLOOD_TIMEOUT = 5.0;
@ -35,6 +38,12 @@ $CHANNEL_TOPIC_LIMITED = 128;
$CHANNEL_HAS_KEY = 256;
$CHANNEL_NEW = 512;
// Default messages (if gui is left blank)
$DefaultChatAwayMessage = "Don't be alarmed. I'm going to step away from my computer.";
$DefaultChatKickMessage = "Alright, you\'re outta here!";
$DefaultChatBanMessage = "You, and three generations of your offspring, are banned from this channel.";
//------------------------------------------------------------------------------
function JoinChatDlg::onWake(%this)
{
@ -53,9 +62,17 @@ function JoinChatList::onSelect(%this,%id,%text)
//------------------------------------------------------------------------------
function JoinChatDlg::join(%this)
{
IRCClient::join(IRCClient::channelName(JoinChatName.getValue()));
Canvas.popDialog(JoinChatDlg);
LaunchTabView.viewTab("CHAT",ChatGui,0);
if(trim(JoinChatName.getValue()) $= "")
{
messageBoxOK("ERROR", "Invalid Channel Name");
return;
}
else
{
IRCClient::join(IRCClient::channelName(trim( JoinChatName.getValue()) ));
Canvas.popDialog(JoinChatDlg);
LaunchTabView.viewTab("CHAT", ChatGui, 0);
}
}
//------------------------------------------------------------------------------
@ -95,6 +112,7 @@ function ChatGui::onWake(%this)
ChatGui.awake = true;
ChatTabView.setSelected($IRCClient::currentChannel);
ChatGuiScroll.scrollToBottom();
ChatMessageEntry.schedule(1, makeFirstResponder, true);
}
//------------------------------------------------------------------------------
@ -105,7 +123,8 @@ function ChatGui::setKey(%this,%ignore)
//------------------------------------------------------------------------------
function ChatTabView::onAdd(%this)
{
%this.addTab($IRCClient::channels.getObject(0),"STATUS");
if ($LaunchMode $= "Normal")
%this.addTab($IRCClient::channels.getObject(0),"STATUS");
}
//------------------------------------------------------------------------------
@ -114,6 +133,11 @@ function ChatTabView::onSelect(%this,%obj,%name)
ChatTabFrame.setAltColor(%obj.private);
%i = %obj.findMember($IRCClient::people.getObject(0));
ChatEditChannelBtn.setVisible(%obj.getFlags(%i) & $PERSON_OPERATOR);
//is this the status window? do we need the options button
%vis = (%name $= "STATUS" ? true : false);
ChatEditOptionsBtn.setVisible(%vis);
ChatChannelTopic.setValue(%obj.topic);
if (ChatGui.awake)
{
@ -282,13 +306,7 @@ function ChatRoomMemberList::onRightMouseDown(%this,%column,%row,%mousePos)
// Open the action menu:
ChatMemberPopup.member = %this.getRowId(%row);
ChatMemberPopup.position = %mousePos;
Canvas.pushDialog(ChatMemberActionDlg);
ChatMemberPopup.forceOnAction();
}
//------------------------------------------------------------------------------
function ChatMemberActionDlg::onWake(%this)
{
ChatMemberPopup.clear();
%nick = IRCClient::displayNick(ChatMemberPopup.member);
%is = $IRCClient::currentChannel.findMember(ChatMemberPopup.member);
@ -310,7 +328,7 @@ function ChatMemberActionDlg::onWake(%this)
}
else
{
if (strcmp(ChatMemberPopup.member.getName(),$IRCClient::currentChannel.getName()))
if (strcmp(ChatMemberPopup.member.displayName,$IRCClient::currentChannel.getName()))
ChatMemberPopup.add("Chat",2);
if ($IRCClient::currentChannel.getFlags(%im) & $PERSON_OPERATOR)
@ -338,6 +356,9 @@ function ChatMemberActionDlg::onWake(%this)
ChatMemberPopup.add("Invite to" SPC IRCClient::displayChannel(%c.getName()),%c);
}
}
Canvas.pushDialog(ChatMemberActionDlg);
ChatMemberPopup.forceOnAction();
}
//------------------------------------------------------------------------------
@ -360,7 +381,7 @@ function ChatMemberPopup::onSelect(%this,%id,%text)
case 1: // Set Away
IRCClient::away($pref::IRCClient::awaymsg);
case 2: // Chat
%c = IRCClient::findChannel(ChatMemberPopup.member.getName(),true);
%c = IRCClient::findChannel(ChatMemberPopup.member.displayName,true);
ChatTabView.setSelected(%c);
case 3: // Admin
IRCClient::setOperator(ChatMemberPopup.member);
@ -543,6 +564,75 @@ function AcceptChannelOptions()
IRCClient::setKey(%c,false,"");
}
//========================================================================
// chat options menu
//------------------------------------------------------------------------------
function EditChatOptions()
{
$tempHighlightOn = $pref::IRCClient::HightlightOn;
ButtonChatHighlight.setValue($tempHighlightOn);
$tempHideLinks = $pref::IRCClient::hideLinks;
ButtonChatNameLinkToggle.setValue($tempHideLinks);
//for now
ButtonChatShowJoin.setVisible(false);
ButtonChatChannelHighlight.setVisible(false);
EditChatAwayMessage.setValue($pref::IRCClient::awaymsg);
EditChatKickMessage.setValue($pref::IRCClient::kickmsg);
EditChatBanMessage.setValue($pref::IRCClient::banmsg);
Canvas.pushDialog(ChatOptionsDlg);
}
//------------------------------------------------------------------------------
function acceptChatOptions()
{
//error("Accepting Chat Options....");
$pref::IRCClient::HighlightOn = $tempHighlightOn;
$pref::IRCClient::hideLinks = $tempHideLinks;
if($tempAwayMsg !$= "")
$pref::IRCClient::awaymsg = $tempAwayMsg;
else
$pref::IRCClient::awaymsg = $DefaultChatAwayMessage;
if($tempkickmsg !$= "")
$pref::IRCClient::kickmsg = $tempkickmsg;
else
$pref::IRCClient::kickmsg = $DefaultChatKickMessage;
if($tempbanmsg !$= "")
$pref::IRCClient::banmsg = $tempbanmsg;
else
$pref::IRCClient::banmsg = $DefaultChatBanMessage;
canvas.popDialog(ChatOptionsDlg);
}
//------------------------------------------------------------------------------
function CancelChatOptions()
{
canvas.popDialog(ChatOptionsDlg);
}
//------------------------------------------------------------------------------
function ToggleChatHiglight()
{
$tempHighlightOn = !$tempHighlightOn;
ButtonChatHighlight.setValue($tempHighlightOn);
}
//------------------------------------------------------------------------------
function ToggleChatLinkedNicks()
{
$tempHideLinks = !$tempHideLinks;
ButtonChatNameLinkToggle.setValue($tempHideLinks);
}
//------------------------------------------------------------------------------
function IRCClient::init()
{
@ -553,8 +643,9 @@ function IRCClient::init()
$IRCClient::connectwait = 0;
$IRCClient::room = "";
$IRCClient::numCensorWords = 0;
$IRCClient::previousChannelCount = 0;
$IRCClient::people.add(new SimObject("IRCMe")
$IRCClient::people.add(new SimObject()
{
real = "";
identity = "";
@ -589,9 +680,6 @@ function IRCClient::notify(%event)
MessageBoxOK("No Response","Connection failed. The IRC server did not respond.","");
case IDIRC_ERR_DROPPED:
MessageBoxOK("Connection Dropped","You have been disconnected from IRC server " @ $IRCClient::server @ ".","");
case IDIRC_RECONNECT:
case IDIRC_ERR_RECONNECT:
MessageBoxOK("No Reconnect","Unable to reconnect to IRC server " @ $IRCClient::server @ ".","");
case IDIRC_ERR_BADCHALLENGE:
case IDIRC_ERR_BADCHALRESP_REPLY:
case IDIRC_CHANNEL_LIST:
@ -710,7 +798,7 @@ function IRCClient::findPerson(%nick)
for (%i = 0; %i < $IRCClient::people.getCount(); %i++)
{
%person = $IRCClient::people.getObject(%i);
if (%person.getName() $= %nick)
if (%person.displayName $= %nick)
return %person;
}
}
@ -745,7 +833,7 @@ function IRCClient::findPerson2(%prefix,%create)
if (%create)
{
%p = new SimObject(%nick)
%p = new SimObject()
{
real = "";
identity = "";
@ -753,9 +841,9 @@ function IRCClient::findPerson2(%prefix,%create)
flags = 0;
ping = 0;
ref = 0;
displayName = %nick;
};
if (strlen(%ident))
IRCClient::setIdentity(%p,%ident);
IRCClient::setIdentity(%p,%ident);
$IRCClient::people.add(%p);
%c = IRCClient::findChannel(%nick);
@ -769,9 +857,9 @@ function IRCClient::findPerson2(%prefix,%create)
}
// initiate WHO do determine username
if (!strlen(%ident) && %p != $IRCClient::people.getObject(1) &&
getSubStr(%nick,strlen(%nick)-1,1) $= "^")
IRCClient::whois(%p);
//if (!strlen(%ident) && %p != $IRCClient::people.getObject(1) &&
//getSubStr(%nick,strlen(%nick)-1,1) $= "^")
//IRCClient::whois(%p);
return %p;
}
@ -817,42 +905,35 @@ function IRCClient::undoEscapes(%string)
function IRCClient::setIdentity(%p,%ident)
{
%p.identity = %ident;
if (getSubStr(%p.getName(),strlen(%p.getName())-1,1) $= "^")
{
// identity is set and user is WON-authenticated
%i = strpos(%ident,"@");
while ((%j = strpos(%ident,"@",%i+1)) >= 0)
%i = %j;
%user = IRCToByte(getSubStr(%ident,0,%i));
%delimeter = $ESCAPE_SEQ @ "00";
%delimlen = strlen(%delimeter);
%i = strpos(%user,%delimeter);
%name = getSubStr(%user,0,%i);
%user = getSubStr(%user,%i+%delimlen,
strlen(%user)-(%i+%delimlen));
%i = strpos(%user,%delimeter);
%tag = getSubStr(%user,0,%i);
%append = getSubStr(%user,%i+%delimlen,1);
if (strlen(%tag))
if (%append)
{
%p.nick = %name @ %tag;
%p.tagged = "<tribe:0>" @ %name @ "</tribe><tribe:1>" @ %tag @ "</tribe>";
}
else
{
%p.nick = %tag @ %name;
%p.tagged = "<tribe:1>" @ %tag @ "</tribe><tribe:0>" @ %name @ "</tribe>";
}
else
{
%nick = %p.displayName;
if (strpos(%nick, "^") != -1)
{
%triple = IRCGetTriple(%nick);
%name = getField(%triple, 0);
%tag = getField(%triple, 1);
%append = getField(%triple, 2);
%p.untagged = %name;
if (%tag $= "")
{
%p.nick = %name;
%p.tagged = "<tribe:0>" @ %name @ "</tribe>";
}
}
}
else
if(%append)
{
%p.nick = %name @ %tag;
%p.tagged = "<tribe:0>" @ %name @ "</tribe><tribe:1>" @ %tag @ "</tribe>";
}
else
{
%p.nick = %tag @ %name;
%p.tagged = "<tribe:1>" @ %tag @ "</tribe><tribe:0>" @ %name @ "</tribe>";
}
}
else
{
%p.tagged = %nick;
}
}
//------------------------------------------------------------------------------
@ -862,17 +943,22 @@ function IRCClient::displayNick(%person)
if (strlen(%person.nick))
return %person.nick;
else
return %person.getName();
return %person.displayName;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function IRCClient::taggedNick(%person)
{
//error("IRCClient::taggedNick( "@%person@" )");
// identity is set and user is WON-authenticated
if (strlen(%person.nick))
return %person.tagged;
if($pref::IRCClient::hideLinks)
return %person.nick;
else
return %person.tagged;
else
return %person.getName();
return %person.displayName;
}
//------------------------------------------------------------------------------
@ -881,7 +967,7 @@ function IRCClient::correctNick(%p)
for (%i = 1; %i < $IRCClient::channels.getCount(); %i++)
{
%c = $IRCClient::channels.getObject(%i);
if (%c.getName() $= %p.getName())
if (%c.getName() $= %p.displayName)
{
ChatTabView.setTabText(%c,IRCClient::displayNick(%p));
%c.topic = "Private chat with" SPC IRCClient::displayNick(%p);
@ -906,7 +992,8 @@ function IRCClient::correctNick(%p)
//------------------------------------------------------------------------------
function IRCClient::findChannel(%name,%create)
{
if (%name $= "")
//error("IRCClient::findChannel( "@%name@", "@%create@" )");
if(%name $= "")
return $IRCClient::currentChannel;
for (%i = 0; %i < $IRCClient::channels.getCount(); %i++)
@ -941,7 +1028,7 @@ function IRCClient::findChannel(%name,%create)
%c = new ChannelVector(%name)
{
topic = %topic;
key = "";
key = $IRCClient::key;
flags = $CHANNEL_NEW;
personLimit = 0;
private = %private;
@ -959,6 +1046,17 @@ function IRCClient::findChannel(%name,%create)
$IRCClient::nextChannel = %c;
IRCClient::notify(IDIRC_ADDCHANNEL);
}
else
{
%messages = %name @ "_messages";
if (isobject(%messages))
{
for (%i = 0; %i < %messages.getNumLines(); %i++)
%c.pushBackLine(%messages.getLineText(%i));
%messages.delete();
}
}
return %c;
}
@ -1017,14 +1115,25 @@ function IRCClient::connect()
if($IRCClient::retries == -1 || $IRCClient::retries > 5)
{
$IRCClient::serverIndex++;
$IRCClient::retries = 0;
if($IRCClient::serverIndex >= $IRCClient::serverCount)
if ($IRCClient::serverIndex >= $IRCClient::serverCount)
$IRCClient::serverIndex = 0;
$IRCClient::serverAttempt++;
if ($IRCClient::serverCount == 0 || $IRCClient::serverAttempt > $IRCClient::serverCount)
{
IRCClient::newMessage("","Unable to connect to IRC servers.");
IRCClient::notify(IDIRC_ERR_RECONNECT);
IRCClient::notify(IDIRC_ERR_TIMEOUT);
$IRCClient::state = IDIRC_DISCONNECTED;
$IRCClient::retries = -1;
if($IRCClient::serverCount > 1)
$IRCClient::serverIndex = getRandom($IRCClient::serverCount-1)-1;
else
$IRCClient::serverIndex = -1;
$IRCClient::serverAttempt = 0;
return;
}
else
$IRCClient::retries = 0;
$IRCClient::server = getField(getRecord($IRCClient::serverList, $IRCClient::serverIndex), 0);
}
IRCClient::newMessage("","Connecting to " @ $IRCClient::server);
@ -1075,8 +1184,9 @@ function IRCTCP::onConnectFailed(%this)
else
{
IRCClient::newMessage("","Connection failed. The server did not respond.");
IRCClient::disconnect();
IRCClient::notify(IDIRC_ERR_TIMEOUT);
$IRCClient::retries++;
IRCClient::connect();
}
}
@ -1085,11 +1195,60 @@ function IRCClient::reconnect()
{
if (!$pref::IRCClient::autoreconnect)
return (false);
%i = 0;
while ($IRCClient::channels.getCount() > 1)
{
%c = $IRCClient::channels.getObject(1);
if (%c.private)
{
%c.delete();
$IRCClient::deletedChannel = %c;
if ($IRCClient::currentChannel == %c)
$IRCClient::nextChannel = $IRCClient::channels.getObject(0);
IRCClient::notify(IDIRC_DELCHANNEL);
continue;
}
$IRCClient::previousChannel[%i] = %c.getName();
$IRCClient::previousKey[%i] = %c.key;
%messages = $IRCClient::previousChannel[%i] @ "_messages";
if (isobject(%messages))
%messages.delete();
%m = new MessageVector(%messages);
for (%j = 0; %j < %c.getNumLines(); %j++)
%m.pushBackLine(%c.getLineText(%j));
$IRCClient::channels.remove(%c);
for (%j = 0; %j < %c.numMembers(); %j++)
{
%m = %c.getMemberId(%j);
%m.ref--;
if (%m.ref == 0)
{
$IRCClient::people.remove(%m);
%m.delete();
}
}
%c.delete();
$IRCClient::deletedChannel = %c;
if ($IRCClient::currentChannel == %c)
$IRCClient::nextChannel = $IRCClient::channels.getObject(0);
IRCClient::notify(IDIRC_DELCHANNEL);
%i++;
}
$IRCClient::previousChannelCount = %i;
IRCClient::newMessage("","Attempting to reconnect.");
$IRCClient::retries++;
IRCClient::newMessage("","Try " @ $IRCClient::retries @ ". Attempting to reconnect to " @ $IRCClient::server @ ".");
IRCClient::notify(IDIRC_RECONNECT);
IRCClient::connect();
return true;
}
@ -1112,6 +1271,13 @@ function IRCClient::disconnect()
IRCClient::reset();
}
//------------------------------------------------------------------------------
function IRCClient::relogin()
{
IRCClient::newMessage("","IRCClient: Reauthentication starting");
IRCClient::send("CERT " @ WONLoginIRC());
}
//------------------------------------------------------------------------------
function IRCClient::send(%message)
{
@ -1163,8 +1329,8 @@ function IRCClient::processLine(%line)
if (!IRCClient::dispatch(%prefix,%command,%params))
{
echo("IRCClient: " @ %command @ " not handled by dispatch!");
echo("(cmd:) " @ %prefix @ " " @ %command @ " " @ %params);
//echo("IRCClient: " @ %command @ " not handled by dispatch!");
//echo("(cmd:) " @ %prefix @ " " @ %command @ " " @ %params);
}
}
}
@ -1368,10 +1534,14 @@ function IRCClient::onPrivMsg(%prefix,%params)
if (getSubStr(%msg,0,1) $= ":")
%msg = getSubStr(%msg,1,strlen(%msg)-1);
// should we highlight this message
if($pref::IRCClient::highlightOn)
%msg = IRCClient::nickHighLight(%msg);
%nick = %ch;
if (getSubStr(%ch,0,1) $= "@" || getSubStr(%ch,0,1) $= "+")
%nick = getSubStr(%nick,1,strlen(%nick)-1);
if ( %nick $= %p.getName())
if ( %nick $= %p.displayName)
nextToken(%prefix,ch," !");
if (strcmp(getSubStr(%msg,0,1),"\x01"))
@ -1401,19 +1571,14 @@ function IRCClient::onNick(%prefix,%params)
if (%person)
{
if (!(%person.flags & $PERSON_IGNORE))
IRCClient::newMessage($IRCClient::currentChannel,%person.getName() @ " is now known as " @ %params @ ".");
%old = IRCClient::taggedNick(%person);
%channel = IRCClient::findChannel(%person.getName());
if (%channel)
%channel.setName(%params);
%person.displayName = %params;
IRCClient::setIdentity(%person,%person.ident);
IRCClient::correctNick(%person);
%person.setName(%params);
// If this is me, re-set the console variable
if (%person == $IRCClient::people.getObject(0))
$IRCClient::NickName = %person.getName();
if (!(%person.flags & $PERSON_IGNORE))
IRCClient::newMessage($IRCClient::currentChannel,%old @ " is now known as " @ IRCClient::taggedNick(%person) @ ".");
}
}
@ -1465,7 +1630,7 @@ function IRCClient::onMOTDEnd(%prefix, %params)
// EXAMPLE :StLouis.MO.US.UnderNet.org 372 homer128 :- ==> Disclaimer/ Rules:
if ($IRCClient::state $= IDIRC_CONNECTING_WAITING)
{
IRCClient::newMessage("","Successfully connected to " @ $IRCClient::server @ ":" @ $IRCClient::serverport);
IRCClient::newMessage("","Successfully connected to " @ $IRCClient::server);
$IRCClient::state = IDIRC_CONNECTED;
IRCClient::notify(IDIRC_CONNECTED);
@ -1759,7 +1924,7 @@ function IRCClient::onMode(%prefix,%params)
IRCClient::notify(IDIRC_SORT);
// only display the message if my privilages are modified.
if (strcmp(%arg,$IRCClient::people.getObject(0).getName()))
if (strcmp(%arg,$IRCClient::people.getObject(0).displayName))
break;
nextToken(%prefix,arg,"!");
@ -1782,7 +1947,7 @@ function IRCClient::onMode(%prefix,%params)
IRCClient::notify(IDIRC_SORT);
// only display the message if my privilages are modified.
if (strcmp(%arg,$IRCClient::people.getObject(0).getName()))
if (strcmp(%arg,$IRCClient::people.getObject(0).displayName))
break;
nextToken(%prefix,arg,"!");
@ -2015,7 +2180,7 @@ function IRCClient::onBanListEnd(%prefix,%params)
//------------------------------------------------------------------------------
function IRCClient::onBadNick(%prefix,%params)
{
IRCClient::newMessage("","NOTICE: Nickname (" @ $IRCClient::people.getObject(0).getName() @ ") is already in use.");
IRCClient::newMessage("","NOTICE: Nickname (" @ $IRCClient::people.getObject(0).displayName @ ") is already in use.");
IRCClient::notify(IDIRC_ERR_NICK_IN_USE);
}
@ -2056,11 +2221,14 @@ function IRCClient::onAway(%prefix,%params)
//------------------------------------------------------------------------------
function IRCClient::onAction(%prefix,%params)
{
{
%msg = nextToken(%params,ch," :");
%c = IRCClient::findChannel(%ch,true);
%person = IRCClient::findPerson2(%prefix,true);
%name = IRCClient::taggedNick(%person);
IRCClient::newMessage(%c,%prefix @ " " @ %msg);
IRCClient::newMessage(%c, %name @ " " @ %msg);
}
//------------------------------------------------------------------------------
@ -2254,20 +2422,35 @@ function IRCClient::onChalRespReply(%prefix,%params)
%params = nextToken(%params,ident," ");
%params = nextToken(%params,reply," ");
%me = $IRCClient::people.getObject(0);
%me.setName(%nick);
%me.displayName = %nick;
IRCClient::setIdentity(%me,%ident @ "@localhost");
if (WONLoginIRC(%reply) $= "OK")
{
IRCClient::newMessage("","Successfully connected to " @ $IRCClient::server @ ":" @ $IRCClient::serverport);
$IRCClient::state = IDIRC_CONNECTED;
IRCClient::notify(IDIRC_CONNECTED);
if ($IRCClient::state !$= IDIRC_CONNECTED)
{
IRCClient::newMessage("","Successfully connected to " @ $IRCClient::server);
$IRCClient::state = IDIRC_CONNECTED;
IRCClient::notify(IDIRC_CONNECTED);
if ($IRCClient::awaytimeout)
cancel($IRCClient::awaytimeout);
$IRCClient::awaytimeout = schedule($AWAY_TIMEOUT,0,"ChatAway_Timeout");
// auto join a room if requested
if (strlen($IRCClient::room))
IRCClient::send("JOIN " @ $IRCClient::room);
if ($IRCClient::awaytimeout)
cancel($IRCClient::awaytimeout);
$IRCClient::awaytimeout = schedule($AWAY_TIMEOUT,0,"ChatAway_Timeout");
// auto join a room if requested
if (strlen($IRCClient::room))
IRCClient::send("JOIN " @ $IRCClient::room);
if ($IRCClient::previousChannelCount > 0)
{
for (%i = 0; %i < $IRCClient::previousChannelCount; %i++)
IRCClient::join($IRCClient::previousChannel[%i] @ " " @ $IRCClient::previousKey[%i]);
$IRCClient::previousChannelCount = 0;
}
}
else
{
IRCClient::newMessage("","Successfully reauthenticated with " @ $IRCClient::server);
IRCClient::correctNick($IRCClient::people.getObject(0));
}
}
else
{
@ -2345,7 +2528,7 @@ function IRCClient::sendAction(%message)
{
IRCClient::send("PRIVMSG " @ $IRCClient::currentChannel.getName() @ " :\x01ACTION " @ %message @ "\x01");
%me = $IRCClient::people.getObject(0);
IRCClient::newMessage($IRCClient::currentChannel,%me.getName() @ " " @ %message);
IRCClient::newMessage($IRCClient::currentChannel,IRCClient::taggedNick(%me) @ " " @ %message);
}
}
@ -2368,6 +2551,8 @@ function IRCClient::join(%params)
}
else
{
$IRCClient::key = %key;
IRCClient::send("JOIN " @ %channel @ " " @ %key);
IRCClient::connecting();
}
@ -2387,14 +2572,11 @@ function IRCClient::nick(%nick)
if (($IRCClient::state $= IDIRC_CONNECTED || $IRCClient::state $= IDIRC_CONNECTING_IRC) &&
strlen(nick))
{
if (stricmp(%nick, $IRCClient::people.getObject(0).getName()))
if (stricmp(%nick, $IRCClient::people.getObject(0).displayName))
IRCClient::send("NICK " @ %nick);
}
else
{
$IRCClient::people.getObject(0).setName(%nick);
$IRCClient::NickName = %nick;
}
$IRCClient::people.getObject(0).displayName = %nick;
}
//------------------------------------------------------------------------------
@ -2403,6 +2585,27 @@ function IRCClient::name(%name)
$IRCClient::people.getObject(0).real = %name;
}
//----------------------------------------------------------------------
function IRCClient::nickHighLight(%message)
{
//error("IRCClient::nickHighLight( "@%message@" )");
%nick = $IRCClient::people.getObject(0).untagged;
//%nickLen = strLen(%nick);
// swap in for multiple nick options here
%wordCount = getWordCount(%message);
for(%i = 0; %i < %wordCount; %i++)
{
%word = getWord(%message, %i);
if(%word $= %nick)
{
%message = "\c2" @ %message;
}
}
return %message;
}
//------------------------------------------------------------------------------
function IRCClient::part(%params)
{
@ -2442,8 +2645,8 @@ function IRCClient::part(%params)
IRCClient::notify(IDIRC_DELCHANNEL);
}
break;
}
break;
}
}
//------------------------------------------------------------------------------
@ -2500,7 +2703,7 @@ function IRCClient::ping(%params)
//------------------------------------------------------------------------------
function IRCClient::setOperator(%p)
{
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " +o " @ %p.getName());
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " +o " @ %p.displayName);
}
//------------------------------------------------------------------------------
@ -2540,16 +2743,16 @@ function IRCClient::setSpectator(%nick)
//------------------------------------------------------------------------------
function IRCClient::kick(%p,%msg)
{
IRCClient::send("KICK" SPC $IRCClient::currentChannel.getName() SPC %p.getName() @ " :" @ %msg);
IRCClient::send("KICK" SPC $IRCClient::currentChannel.getName() SPC %p.displayName @ " :" @ %msg);
}
//------------------------------------------------------------------------------
function IRCClient::ban(%p,%add)
{
if (%add)
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " +b " @ %p.getName());
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " +b " @ %p.displayName);
else
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " -b " @ %p.getName());
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " -b " @ %p.displayName);
}
//------------------------------------------------------------------------------
@ -2581,21 +2784,21 @@ function IRCClient::ignore(%p,%tf)
//------------------------------------------------------------------------------
function IRCClient::invite(%p,%c)
{
IRCClient::send("INVITE" SPC %p.getName() SPC %c.getName());
IRCClient::send("INVITE" SPC %p.displayName SPC %c.getName());
}
//------------------------------------------------------------------------------
function IRCClient::who(%p)
{
IRCClient::connecting();
IRCClient::send("WHO" SPC %p.getName());
IRCClient::send("WHO" SPC %p.displayName);
}
//------------------------------------------------------------------------------
function IRCClient::whois(%p)
{
IRCClient::connecting();
IRCClient::send("WHOIS" SPC %p.getName());
IRCClient::send("WHOIS" SPC %p.displayName);
}
//------------------------------------------------------------------------------
@ -2680,7 +2883,10 @@ function IRCClient::onJoinServer(%mission,%server,%address,%mayprequire,%prequir
//------------------------------------------------------------------------------
function IRCClient::onJoinGame(%address,%desc)
{
%msg = "launched into <t2server:" @ %address @ ">" @ %desc @ "</t2server>.";
if (%address $= "")
%msg = $pref::IRCClient::hostMsg;
else
%msg = "launched into <t2server:" @ %address @ ">" @ %desc @ "</t2server>.";
IRCClient::away(%msg);
for (%i = 1; %i < $IRCClient::channels.getCount(); %i++)
{
@ -2690,5 +2896,14 @@ function IRCClient::onJoinGame(%address,%desc)
}
}
IRCClient::init();
IRCClient::connect();
//------------------------------------------------------------------------------
function IRCClient::onLeaveGame()
{
IRCClient::away("");
}
if ($LaunchMode $= "Normal")
{
IRCClient::init();
IRCClient::connect();
}

View file

@ -264,7 +264,7 @@ function clearMissionTypes()
// Add all the mission types found on this machine:
for ( %i = 0; %i < $HostTypeCount; %i++ )
FilterEditMissionType.add( $HostTypeName[%i], %i );
FilterEditMissionType.add( $HostTypeDisplayName[%i], %i );
}
//------------------------------------------------------------------------------

View file

@ -24,8 +24,9 @@ function FlipFlop::playerTouch(%data, %flipflop, %player)
function Flipflop::objectiveInit(%data, %flipflop)
{
%flipflop.teamBonusThread = "";
%flipflop.playerBonusThread = "";
%flipflop.tCapThread = "";
%flipflop.tHoldThread = "";
%flipflop.pCapThread = "";
Parent::objectiveInit(%data, %flipflop);
}
@ -46,9 +47,7 @@ function CnHGame::initGameVars(%game)
%game.SCORE_PER_TURRET_KILL = 1;
%game.SCORE_PER_FLIPFLOP_DEFEND = 1;
%game.SCORE_LIMIT_PER_TOWER = 1200; //default of 1500 points per tower required to win @ 1 pt per %game.TIME_REQ_TEAM_HOLD_BONUS milliseconds
// default of 1500 per switch if not defined in mission file specifically. 2 pts per sec per switch = 10 minute min & 20 minute max mission length
// not counting time spent waiting for first point(s). Should be 15-30ish minute missions depending on turnovers
%game.SCORE_LIMIT_PER_TOWER = 1200; //default of 1200 points per tower required to win @ 1 pt per %game.TIME_REQ_TEAM_HOLD_BONUS milliseconds
%game.TIME_REQ_PLYR_CAP_BONUS = 12 * 1000; //player must hold a switch 12 seconds to get a point for it.
%game.TIME_REQ_TEAM_CAP_BONUS = 12 * 1000; //time after touching it takes for team to get a point
@ -131,11 +130,14 @@ function CnHGame::gameOver(%game)
messageAll('MsgClearObjHud', "");
for(%i = 0; %i < ClientGroup.getCount(); %i ++)
{
%client = %group.getObject(%i);
%client = ClientGroup.getObject(%i);
%game.resetScore(%client);
}
for ( %team = 1; %team <= %game.numTeams; %team++ )
{
$TeamScore[%team] = 0;
messageAll('MsgCnHTeamCap', "", -1, -1, -1, %team, $TeamScore[%team], %game.getScoreLimit());
}
}
function CnHGame::stopScoreTimers(%game)
@ -148,9 +150,9 @@ function CnHGame::stopScoreTimers(%game)
for(%i = 0; %i < %ffGroup.getCount(); %i++)
{
%curFF = %ffGroup.getObject(%i);
cancel(%curFF.tHoldThread);
cancel(%curFF.pCapThread);
cancel(%curFF.tCapThread);
cancel(%curFF.tHoldThread);
}
}
@ -309,7 +311,7 @@ function CnHGame::testPlayerFFDefend(%game, %victimID, %killerID)
while(%objID != 0)
{
%objType = %objID.getDataBlock().getName();
echo("tFD found " @ %objType @ " belonging to team " @ %objID.team);
//echo("tFD found " @ %objType @ " belonging to team " @ %objID.team);
if ((%objType $= "FlipFlop") && (%objID.team == %killerID.team))
return true; //found a killer's team flipflop near the point of victim's death
else
@ -323,31 +325,42 @@ function CnHGame::awardScorePlayerFFDefend(%game, %cl, %this)
%cl.flipFlopDefends++;
//if (%game.SCORE_PER_FLIPFLOP_DEFEND != 0)
//messageClient(%cl, $scoreFliDefMsg, 'You receive a %1 point bonus for defending the %2.', %game.SCORE_PER_FLIPFLOP_DEFEND, %game.cleanWord(%this.name));
%game.recalcScore(%cl);
%game.recalcScore(%cl);
}
function CnHGame::awardScorePlayerFFCap(%game, %cl, %this)
{
if(!($missionRunning))
return;
%cl.flipFlopsCapped++;
%game.recalcScore(%cl);
%game.recalcScore(%cl);
}
function CnHGame::awardScoreTeamFFCap(%game, %team, %this)
{
cancel(%this.tCapThread);
if(!($missionRunning))
return;
$TeamScore[%team] +=%game.SCORE_PER_TEAM_FLIPFLOP_CAP;
%sLimit = %game.getScoreLimit();
if (%game.SCORE_PER_TEAM_FLIPFLOP_CAP)
messageAll('MsgCnHTeamCap', "", -1, -1, -1, %team, $teamScore[%team], %sLimit);
if (%game.SCORE_PER_TEAM_FLIPFLOP_HOLD != 0)
%this.tHoldThread = %game.schedule(%game.TIME_REQ_TEAM_HOLD_BONUS, "awardScoreTeamFFHold", %team, %this, true);
%this.tHoldThread = %game.schedule(%game.TIME_REQ_TEAM_HOLD_BONUS, "awardScoreTeamFFHold", %team, %this);
%game.checkScoreLimit(%team);
}
function CnHGame::awardScoreTeamFFHold(%game, %team, %this, %msg)
function CnHGame::awardScoreTeamFFHold(%game, %team, %this)
{
cancel(%this.tHoldThread);
if(!($missionRunning))
return;
$TeamScore[%team] +=%game.SCORE_PER_TEAM_FLIPFLOP_HOLD;
%sLimit = %game.getScoreLimit();
if (%game.SCORE_PER_TEAM_FLIPFLOP_HOLD)
@ -360,7 +373,7 @@ function CnHGame::awardScoreTeamFFHold(%game, %team, %this, %msg)
%game.checkScoreLimit(%team);
%this.tHoldThread = %game.schedule(%game.TIME_REQ_TEAM_HOLD_BONUS, "awardScoreTeamFFHold", %team, %this, false);
%this.tHoldThread = %game.schedule(%game.TIME_REQ_TEAM_HOLD_BONUS, "awardScoreTeamFFHold", %team, %this);
}
function CnHGame::testValidRepair(%game, %obj)

View file

@ -349,6 +349,36 @@ function DMGame::updateScoreHud(%game, %client, %tag)
}
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}

View file

@ -10,7 +10,11 @@ function DebriefGui::onWake( %this )
moveMap.pop();
if ( isObject( passengerKeys ) )
passengerKeys.pop();
flyingCameraMove.pop();
if ( isObject( observerBlockMap ) )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
if ( isObject( debriefMap ) )
{

View file

@ -47,6 +47,13 @@ function GameGui::onSleep( %this )
%ctrl = "GM_" @ %this.pane @ "Pane";
if ( isObject( %ctrl ) )
%ctrl.onDeactivate();
// if( isObject( $dummySeq ) )
// {
// $dummySeq.delete();
// }
Canvas.popDialog(LaunchToolbarDlg);
}
//------------------------------------------------------------------------------
@ -156,7 +163,7 @@ $BrowserColumnCount++;
$BrowserColumnName[6] = "Rules Set";
$BrowserColumnRange[6] = "25 300";
$BrowserColumnCount++;
$BrowserColumnName[7] = "# Players";
$BrowserColumnName[7] = "# Players (Bots)";
$BrowserColumnRange[7] = "25 150";
$BrowserColumnCount++;
$BrowserColumnName[8] = "CPU";
@ -533,7 +540,8 @@ function JoinSelectedGame()
%info = GMJ_Browser.getServerInfoString();
%desc = "a" SPC getField(%info,4) @ "(" @ getField(%info,3) @ ") game on the \"" @ getField(%info,0) @ "\" server. Click here to follow";
IRCClient::onJoinGame($JoinGameAddress,%desc);
IRCClient::onJoinGame($JoinGameAddress,%desc);
JoinGame($JoinGameAddress);
}
@ -550,7 +558,6 @@ function JoinGame(%address)
%playerVoice = getField( %playerPref, 3 );
%playerVoicePitch = getField( %playerPref, 4 );
connect( %address, $JoinGamePassword, %playerName, %playerRaceGender, %playerSkin, %playerVoice, %playerVoicePitch );
ServerConnection.setSimulatedNetParams(0.1, 10);
}
//------------------------------------------------------------------------------
@ -574,19 +581,28 @@ function GM_HostPane::onActivate( %this )
// Select the saved-off prefs:
if ( $Host::MissionType !$= "" )
{
%selId = GMH_MissionType.findText( $Host::MissionType );
if ( %selId != -1 )
// Find the last selected type:
for ( %type = 0; %type < $HostTypeCount; %type++ )
{
GMH_MissionType.setSelected( %selId );
GMH_MissionType.onSelect( %selId, "" );
if ( $HostTypeName[%type] $= $Host::MissionType )
break;
}
if ( %type != $HostTypeCount )
{
GMH_MissionType.setSelected( %type );
GMH_MissionType.onSelect( %type, "" );
if ( $Host::Map !$= "" )
{
%index = GMH_MissionList.findTextIndex( $Host::Map );
if ( %index != -1 )
// Find the last selected mission:
for ( %index = 0; %index < $HostMissionCount[%type]; %index++ )
{
%selId = GMH_MissionList.getRowId( %index );
GMH_MissionList.setSelectedById( %selId );
if ( $HostMissionFile[$HostMission[%type, %index]] $= $Host::Map )
break;
}
if ( %index != $HostMissionCount[%type] )
GMH_MissionList.setSelectedById( $HostMission[%type, %index] );
}
}
}
@ -609,7 +625,31 @@ function buildMissionTypePopup( %popup )
{
%popup.clear();
for( %type = 0; %type < $HostTypeCount; %type++ )
%popup.add( $HostTypeName[%type], %type );
%popup.add( $HostTypeDisplayName[%type], %type );
}
//------------------------------------------------------------------------------
function getMissionTypeDisplayNames()
{
%file = new FileObject();
for ( %type = 0; %type < $HostTypeCount; %type++ )
{
$HostTypeDisplayName[%type] = $HostTypeName[%type];
if ( %file.openForRead( "scripts/" @ $HostTypeName[%type] @ "Game.cs" ) )
{
while ( !%file.isEOF() )
{
%line = %file.readLine();
if ( getSubStr( %line, 0, 17 ) $= "// DisplayName = " )
{
$HostTypeDisplayName[%type] = getSubStr( %line, 17, 1000 );
break;
}
}
}
}
%file.delete();
}
//------------------------------------------------------------------------------
@ -679,6 +719,8 @@ function buildMissionList()
$HostMissionCount[%i]++;
}
}
getMissionTypeDisplayNames();
%fobject.delete();
}
@ -705,6 +747,8 @@ function validateMissionAndType(%misName, %misType)
return true;
}
//------------------------------------------------------------------------------
// This function returns the index of the next mission in the mission list.
//------------------------------------------------------------------------------
function getNextMission( %misName, %misType )
{
@ -749,7 +793,7 @@ function getNextMission( %misName, %misType )
}
}
return $HostMissionFile[$HostMission[%type, %i]];
return $HostMission[%type, %i];
}
//------------------------------------------------------------------------------
@ -823,6 +867,8 @@ function StartHostedGame()
return;
}
IRCClient::onJoinGame("", "");
MessagePopup( "STARTING SERVER", "Initializing..." );
Canvas.repaint();
@ -1173,8 +1219,19 @@ function GMW_PlayerModel::update( %this )
}
%skin = getField( $pref::Player[$pref::Player::Current], 2 );
%this.setModel( %shape @ ".dts", %skin );
// if( isObject( $dummySeq ) )
// {
// $dummySeq.delete();
// }
//
// $dummySeq = new TSShapeConstructor()
// {
// baseShape = %shape @ ".dts";
// sequence0 = %shape @ "_forward.dsq dummyRun";
// };
%this.setModel( %shape, %skin );
}
//------------------------------------------------------------------------------
@ -1344,7 +1401,7 @@ function GMW_SkinPopup::onSelect( %this, %id, %text )
$pref::Player[$pref::Player::Current] = setField( $pref::Player[$pref::Player::Current], 2, %text );
// Update the player model:
GMW_PlayerModel.update();
GMW_PlayerModel.update();
}
//------------------------------------------------------------------------------
@ -1487,9 +1544,9 @@ function NW_NameEdit::checkValidPlayerName( %this )
%name = %this.getValue();
%test = strToPlayerName( %name );
if ( %name !$= %test )
%this.setValue( %name );
%this.setValue( %test );
NW_DoneBtn.setActive( strlen( stripTrailingSpaces( %name ) ) > 2 );
NW_DoneBtn.setActive( strlen( stripTrailingSpaces( %test ) ) > 2 );
}
//------------------------------------------------------------------------------

View file

@ -145,7 +145,6 @@ function HuntersGame::missionLoadDone(%game)
%client = ClientGroup.getObject(%i);
%game.resetScore(%client);
%client.flagCount = 1;
%client.trackClient = 0;
%client.trackWaypoint = "";
%client.playerTrackLine = -1;
}
@ -555,41 +554,6 @@ function HuntersGame::updateFlagHoarder(%game)
}
}
function HuntersGame::updateTrackers(%game, %client)
{
//update anyone who is tracking this player
%count = ClientGroup.getCount();
for (%i = 0; %i < %count; %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.trackClient == %client)
{
//see if the tracker has a waypoint already
if (!isObject(%cl.trackWaypoint))
{
//create a waypoint at player's location...
%cl.trackWaypoint = new WayPoint()
{
position = %player.position;
rotation = "1 0 0 0";
scale = "1 1 1";
name = "Tracking" SPC getTaggedString(%client.name);
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
team = %client.team;
};
//add the waypoint to the cleanup group
MissionCleanup.add(%cl.trackWaypoint);
}
//set the position
%cl.trackWaypoint.setTransform(%player.getWorldBoxCenter() SPC "0 0 1 0");
}
}
}
function HuntersGame::sendFlagCountMessage(%game, %client)
{
//send the messages
@ -1584,8 +1548,6 @@ function HuntersGame::updateScoreHud(%game, %client, %tag)
%col1Style = "<color:00dc00>";
else if ( %col1Client == %client )
%col1Style = "<color:dcdcdc>";
else if ( %col1Client == %client.trackClient )
%col1Style = "<color:dcdc00>";
//see if we have two columns
if (%numColumns == 2)
@ -1608,8 +1570,6 @@ function HuntersGame::updateScoreHud(%game, %client, %tag)
%col2Style = "<color:00dc00>";
else if ( %col2Client == %client )
%col2Style = "<color:dcdcdc>";
else if ( %col2Client == %client.trackClient )
%col2Style = "<color:dcdc00>";
}
}
@ -1628,16 +1588,67 @@ function HuntersGame::updateScoreHud(%game, %client, %tag)
else
{
if ( %numColumns == 2 )
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:205><just:right>%2<rmargin:270><just:right>%3<spop><rmargin:505><lmargin:310><just:left>%8<clip:150><a:gamelink\t%9>%4</a></clip><rmargin:505><just:right>%5<rmargin:570><just:right>%6',
%col1Client.name, %col1ClientScore, %col1ClientFlags,
%col2Client.name, %col2ClientScore, %col2ClientFlags,
%col1Style, %col2Style, %col1Client, %col2Client);
{
//this is lame, but we can only have up to %9 args
if ( %col2Client == %maxFlagsClient )
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:205><just:right>%2<rmargin:270><just:right>%3<spop><rmargin:505><lmargin:310><just:left><color:00dc00><clip:150><a:gamelink\t%9>%4</a></clip><rmargin:505><just:right>%5<rmargin:570><just:right>%6',
%col1Client.name, %col1ClientScore, %col1ClientFlags,
%col2Client.name, %col2ClientScore, %col2ClientFlags,
%col1Style, %col1Client, %col2Client);
}
else if ( %col2Client == %client )
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:205><just:right>%2<rmargin:270><just:right>%3<spop><rmargin:505><lmargin:310><just:left><color:dcdcdc><clip:150><a:gamelink\t%9>%4</a></clip><rmargin:505><just:right>%5<rmargin:570><just:right>%6',
%col1Client.name, %col1ClientScore, %col1ClientFlags,
%col2Client.name, %col2ClientScore, %col2ClientFlags,
%col1Style, %col1Client, %col2Client);
}
else
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:205><just:right>%2<rmargin:270><just:right>%3<spop><rmargin:505><lmargin:310><just:left><clip:150><a:gamelink\t%9>%4</a></clip><rmargin:505><just:right>%5<rmargin:570><just:right>%6',
%col1Client.name, %col1ClientScore, %col1ClientFlags,
%col2Client.name, %col2ClientScore, %col2ClientFlags,
%col1Style, %col1Client, %col2Client);
}
}
else
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20>%4\t<clip:200><a:gamelink\t%5>%1</a></clip><rmargin:280><just:right>%2<rmargin:380><just:right>%3',
%col1Client.name, %col1ClientScore, %col1ClientFlags, %col1Style, %col1Client );
}
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}

View file

@ -269,7 +269,7 @@ function LaunchGui::onWake(%this)
if ( !Canvas.isCursorOn() )
CursorOn();
$enableDirectInput = "0";
disableDirectInput();
deactivateDirectInput();
Canvas.pushDialog(LaunchToolbarDlg);
if ( !$FirstLaunch )
LaunchTabView.viewLastTab();

View file

@ -53,10 +53,14 @@ function LobbyGui::onWake( %this )
moveMap.pop();
if ( isObject( passengerkeys ) )
passengerKeys.pop();
flyingCameraMove.pop();
if ( isObject( observerBlockMap ) )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
$enableDirectInput = "0";
disableDirectInput();
deactivateDirectInput();
LobbyMessageVector.attach(HudMessageVector);
LobbyMessageScroll.scrollToBottom();
@ -382,7 +386,8 @@ function fillLobbyMissionMenu( %type, %typeName )
LobbyVoteMenu.key++;
LobbyVoteMenu.clear();
LobbyVoteMenu.mode = "mission";
LobbyVoteMenu.missionType = %typeName;
LobbyVoteMenu.missionType = %type;
LobbyVoteMenu.typeName = %typeName;
commandToServer( 'GetMissionList', LobbyVoteMenu.key, %type );
}
@ -547,18 +552,18 @@ function lobbyVote()
startNewVote( "VoteChangeMission",
"change the mission to",
%text, // Mission display name
LobbyVoteMenu.missionType, // Mission type display name
$clVoteCmd[%id], // Mission file name
LobbyVoteMenu.missionType ); // Mission type
LobbyVoteMenu.typeName, // Mission type display name
$clVoteCmd[%id], // Mission id
LobbyVoteMenu.missionType ); // Mission type id
}
else
{
startNewVote( "VoteTournamentMode",
"change the server to",
%text, // Mission display name
LobbyVoteMenu.missionType, // Mission type display name
$clVoteCmd[%id], // Mission file name
LobbyVoteMenu.missionType ); // Mission type
LobbyVoteMenu.typeName, // Mission type display name
$clVoteCmd[%id], // Mission id
LobbyVoteMenu.missionType ); // Mission type id
LobbyVoteMenu.tourneyChoose = 0;
}
LobbyVoteMenu.reset();

File diff suppressed because it is too large Load diff

View file

@ -386,8 +386,13 @@ function RabbitGame::MissionAreaDamage(%game, %player)
{
if(%player.getState() !$= "Dead") {
%player.setDamageFlash(0.1);
%damageRate = 0.05;
%pack = %player.getMountedImage($BackpackSlot);
if(%pack.getName() $= "RepairPackImage")
if(%player.getMountedImage($WeaponSlot).getName() $= "RepairGunImage")
%damageRate = 0.15;
%prevHurt = %player.getDamageLevel();
%player.setDamageLevel(%prevHurt + 0.05);
%player.setDamageLevel(%prevHurt + %damageRate);
// a little redundancy to see if the lastest damage killed the player
if(%player.getState() $= "Dead")
%game.onClientKilled(%player.client, 0, $DamageType::OutOfBounds);
@ -555,6 +560,36 @@ function RabbitGame::updateScoreHud(%game, %client, %tag)
}
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}

View file

@ -775,42 +775,6 @@ function SiegeGame::sendDebriefing( %game, %client )
}
}
function SiegeGame::formatTime(%game, %tStr, %includeHundredths)
{
%timeInSeconds = %tStr / 1000;
%mins = mFloor(%timeInSeconds / 60);
if(%mins < 1)
%timeString = "00:";
else if(%mins < 10)
%timeString = "0" @ %mins @ ":";
else
%timeString = %mins @ ":";
%timeInSeconds -= (%mins * 60);
%secs = mFloor(%timeInSeconds);
if(%secs < 1)
%timeString = %timeString @ "00";
else if(%secs < 10)
%timeString = %timeString @ "0" @ %secs;
else
%timeString = %timeString @ %secs;
if (%includeHundredths)
{
%timeString = %timeString @ ".";
%timeInSeconds -= %secs;
%hSecs = mFloor(%timeInSeconds * 100); // will be between 0 and 999
if(%hSecs < 1)
%timeString = %timeString @ "00";
else if(%hSecs < 10)
%timeString = %timeString @ "0" @ %hSecs;
else
%timeString = %timeString @ %hSecs;
}
return %timeString;
}
function SiegeGame::clientMissionDropReady(%game, %client)
{
messageClient(%client, 'MsgClientReady', "", %game.class);
@ -1042,6 +1006,36 @@ function SiegeGame::updateScoreHud(%game, %client, %tag)
%index++;
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}

View file

@ -337,8 +337,8 @@ function SinglePlayerGame::onClientKilled(%game, %clVictim, %clKiller, %damageTy
if(%num == 1)
%textNum = "one life";
else %textNum = %num SPC "lives";
messageBoxOk("Restart", "You have" SPC %textNum SPC "remaining.", "canvas.cursorOff(); spawnSinglePlayer();");
canvas.cursorOn();
messageBoxOk("Restart", "You have" SPC %textNum SPC "remaining.", "CursorOff(); spawnSinglePlayer();");
//canvas.cursorOn();
}
else schedule(3000, $player.player, singlePlayerDead);
}
@ -371,6 +371,11 @@ function singlePlayerGame::AIHasJoined()
// lets get rid of this mundane console spam
}
function SinglePlayerGame::updateKillScores()
{
// Do nothing other than get rid of the console warning...
}
function singlePlayerGame::biodermAssume(%game, %client)
{
//error(%client SPC "might talk.");
@ -413,7 +418,7 @@ function trainingBiodermSpeaks(%client)
function singlePlayerDead()
{
missionFailed($player.miscMsg[trainingDeathLoss]);
canvas.cursorOn();
CursorOn();
AIMissionEnd();
$objectiveQ[$enemyTeam].clear();
cancel($player.distanceCheckSchedule);
@ -468,6 +473,11 @@ function SinglePlayerGame::clientMissionDropReady(%game, %client)
AISystemEnabled(true);
$player.setControlObject( $player.player );
$player.camera = new Camera()
{
dataBlock = Observer;
};
startCurrentMission(%game);
}
@ -555,7 +565,7 @@ function singlePlayerGame::gameOver(%game)
deactivatepackage(Training6);
deactivatePackage(singlePlayerMissionAreaEnforce);
if($player.currentWaypoint)
if(isObject( $player.currentWaypoint ))
$player.currentWaypoint.delete();
if($player.OOB)
@ -821,7 +831,7 @@ function missionComplete(%text)
$player.endMission = schedule(15000, game, forceFinish);
messageBoxOk("Victory", %text, "forceFinish();");
canvas.cursorOn();
//canvas.cursorOn();
//AI stop
clearQueue();
@ -840,9 +850,6 @@ function forceFinish()
//immediately disconnect - bringing us back to the main menu...
Disconnect();
//we need to get the singlePlayer dialog after leaving
canvas.schedule(1000, "pushDialog", singlePlayerDlg);
}
function missionFailed(%text)
@ -862,6 +869,7 @@ function reloadMission()
{
cancel($player.endMission);
Game.gameOver();
CursorOn();
loadMission($currentMission, singlePlayer);
debriefContinue();
}
@ -890,7 +898,7 @@ function firstPersonQuickPan()
toggleFirstPerson($player);
schedule(4000, $player.player, toggleFirstPerson, $player);
}
}
@ -967,8 +975,8 @@ function singleplayerGame::pickTeamSpawn(%game, %client, %respawn)
function SinglePlayerGame::createCustomKeymap(%game)
{
new ActionMap(TrainingMap);
TrainingMap.bindCmd( keyboard, "escape", escapeFromGame );
// new ActionMap(TrainingMap);
// TrainingMap.bindCmd( keyboard, "escape", "escapeFromGame();", "" );
}
//=======================================================================================
@ -983,9 +991,9 @@ function SinglePlayerEscapeDlg::onWake( %this )
$timeScale = 0;
if( OptionsDlg.isAwake())
{
{
Canvas.popDialog( OptionsDlg );
}
}
}
function SinglePlayerEscapeDlg::onSleep( %this )
@ -1000,14 +1008,14 @@ function SinglePlayerEscapeDlg::leaveGame( %this )
Canvas.popDialog( SinglePlayerEscapeDlg );
if ( !%this.wasCursorOn )
CursorOff();
MessageBoxYesNo( "LEAVE GAME", $player.miscMsg[LeaveGame], "forceFinish();", "$timeScale = 1;" );
MessageBoxYesNo( "LEAVE GAME", $player.miscMsg[LeaveGame], "forceFinish();", "CursorOff(); $timeScale = 1;" );
}
function SinglePlayerEscapeDlg::gotoSettings( %this )
{
Canvas.popDialog( SinglePlayerEscapeDlg );
if ( !%this.wasCursorOn )
CursorOff();
//if ( !%this.wasCursorOn )
// CursorOff();
Canvas.pushDialog( OptionsDlg );
}
@ -1018,10 +1026,8 @@ function SinglePlayerEscapeDlg::returnToGame( %this )
Canvas.popDialog( SinglePlayerEscapeDlg );
CursorOff();
//moveMap.bindCmd( keyboard, "escape", "", "escapeFromGame();" );
movemap.push();
trainingmap.push();
//trainingmap.push();
}

View file

@ -126,6 +126,12 @@ function TeamHuntersGame::initGameVars(%game)
%game.flagMsgDelayMS = 3000;
%game.oobThrowFlagsDelayMS = 3000;
// targets for each of the flag types (except for base which is properly skinned already)
HuntersFlag1.target = -1; // red
HuntersFlag2.target = allocTarget("", 'Blue', "", "", 0, "", "");
HuntersFlag4.target = allocTarget("", 'Yellow', "", "", 0, "", "");
HuntersFlag8.target = allocTarget("", 'Green', "", "", 0, "", "");
}
function TeamHuntersGame::allowsProtectedStatics(%game)
@ -485,6 +491,7 @@ function TeamHuntersGame::CampingDamage(%game, %client, %firstWarning)
function TeamHuntersGame::updateScoreHud(%game, %client, %tag)
{
messageClient( %client, 'ClearHud', "", %tag, 0 );
// Send header:
messageClient( %client, 'SetScoreHudHeader', "", '<tab:15,315>\t%1<rmargin:260><just:right>%2<rmargin:560><just:left>\t%3<just:right>%4',
$teamName[1], $teamScore[1], $teamName[2], $teamScore[2] );
@ -574,13 +581,57 @@ function TeamHuntersGame::updateScoreHud(%game, %client, %tag)
//else for observers, create an anchor around the player name so they can be observed
else
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:200><just:right>%2<rmargin:260><just:right>%3<spop><rmargin:500><just:left>\t%8<clip:150><a:gamelink\t%9>%4</a></clip><just:right>%5<rmargin:560><just:right>%6',
%team1Client.name, %team1ClientScore, %team1ClientFlags, %team2Client.name, %team2ClientScore, %team2ClientFlags, %col1Style, %col2Style, %team1Client, %team2Client );
//this is lame, but we can only have up to %9 args
if (%team2Client == %team2ClientMostFlags)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:200><just:right>%2<rmargin:260><just:right>%3<spop><rmargin:500><just:left>\t<color:00dc00><clip:150><a:gamelink\t%9>%4</a></clip><just:right>%5<rmargin:560><just:right>%6',
%team1Client.name, %team1ClientScore, %team1ClientFlags, %team2Client.name, %team2ClientScore, %team2ClientFlags, %col1Style, %team1Client, %team2Client );
}
else if (%team2Client == %client)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:200><just:right>%2<rmargin:260><just:right>%3<spop><rmargin:500><just:left>\t<color:dcdcdc><clip:150><a:gamelink\t%9>%4</a></clip><just:right>%5<rmargin:560><just:right>%6',
%team1Client.name, %team1ClientScore, %team1ClientFlags, %team2Client.name, %team2ClientScore, %team2ClientFlags, %col1Style, %team1Client, %team2Client );
}
else
{
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush>%7\t<clip:150><a:gamelink\t%8>%1</a></clip><rmargin:200><just:right>%2<rmargin:260><just:right>%3<spop><rmargin:500><just:left>\t<clip:150><a:gamelink\t%9>%4</a></clip><just:right>%5<rmargin:560><just:right>%6',
%team1Client.name, %team1ClientScore, %team1ClientFlags, %team2Client.name, %team2ClientScore, %team2ClientFlags, %col1Style, %team1Client, %team2Client );
}
}
%index++;
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}

View file

@ -121,10 +121,6 @@ function startCurrentMission()
$teammate1.player.invincible = true;
resetWildcat();
$player.camera = new Camera()
{
dataBlock = Observer;
};
}
//------------------------------------------------------------------------------
@ -1002,7 +998,7 @@ function trainingIntroFlightEnd()
function ClientCmdSetHudMode(%mode, %type, %node)
{
parent::ClientCmdSetHudMode(%mode, %type, %node);
TrainingMap.push();
//TrainingMap.push();
getTrainingPacifistMap();
if(game.trainingIntro)
trainingPacifistMap.push();
@ -1315,6 +1311,13 @@ function serverCmdBuildClientTask(%client, %task, %team)
// player shouldnt be able to use the voice commands to do anything
}
function SinglePlayerEscapeDlg::returnToGame( %this )
{
parent::returnToGame( %this );
if(game.trainingIntro)
trainingPacifistMap.push();
}
//END TRAINING1 PACKAGE=======================================================================
};

View file

@ -125,8 +125,7 @@ function ClientCmdSetHudMode(%mode, %type, %node)
parent::ClientCmdSetHudMode(%mode, %type, %node);
movemap.push(); // hopefully this works
TrainingMap.push();
//TrainingMap.push();
}
function AIEngageTask::assume(%task, %client)

View file

@ -123,7 +123,7 @@ function FlipFlop::objectiveInit(%data, %flipflop)
function ClientCmdSetHudMode(%mode, %type, %node)
{
parent::ClientCmdSetHudMode(%mode, %type, %node);
TrainingMap.push();
//TrainingMap.push();
}
@ -299,8 +299,10 @@ function FlipFlop::playerTouch(%data, %flipFlop, %player )
function scoutFlyer::onRemove(%this, %obj)
{
//error("scoutFlyer::onRemove("@ %obj@") called");
if(%obj == $Shrike) {
error("scoutFlyer::onRemove("@ %obj@") called");
if ( ! isObject( ServerConnection ) )
return;
if(%obj == $Shrike ) {
// we dont want the player to die hitting the ground
cancel(game.pilotingTips);
$player.player.invincible = true;

View file

@ -65,7 +65,7 @@ function MP3Audio::play(%this)
function ClientCmdSetHudMode(%mode, %type, %node)
{
parent::ClientCmdSetHudMode(%mode, %type, %node);
TrainingMap.push();
//TrainingMap.push();
}
// get the ball rolling

View file

@ -68,7 +68,7 @@ function toggleScoreScreen(%val)
function ClientCmdSetHudMode(%mode, %type, %node)
{
parent::ClientCmdSetHudMode(%mode, %type, %node);
TrainingMap.push();
//TrainingMap.push();
}
// get the ball rolling
@ -187,43 +187,72 @@ function objectiveDistanceChecks()
schedule(5000, game, objectiveDistanceChecks);
}
// cant blow up the gens except with the satchel charge
//======================================================================================
// Objective Generators
//======================================================================================
function GeneratorLarge::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType)
{
//error("Generator::damageObject called. DamageType = "@%damageType);
if( %targetObject == game.targetObject1 || %targetObject == game.targetObject2 && !game.detonationSequenceStarted){
if(%damageType && %damageType != $DamageType::SatchelCharge && %damageType != $DamageType::Explosion) {
if(!game.tooSoonMsg) {
game.tooSoonMsg = true;
schedule(15000, game, eval, "game.tooSoonMsg = false;");
messageClient($player, 0, $player.miscMsg[genAttackNoSatchel]);
// and a little bonus for easy players
if($pref::trainingDifficulty == 1 &&
$player.player.getMountedImage($backPackSlot).getName() !$= "SatchelChargeImage" && !game.satchelWaypointSet) {
if(%targetObject == game.targetObject1 || %targetObject == game.targetObject2)
%message = training5ObjectiveGenDamaged(%targetObject, %damageType);
else
Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType);
%waypoint = new WayPoint() {
position = nameToId(SatchelChargePack).position;
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
name = "Satchel Charge";
team = 1;
locked = "true";
};
$player.satchelWaypoint = %waypoint;
game.satchelWaypointSet = true;
}
}
error("undestroyed gen failed damage type = "@ %damageType);
return;
}
else %targetObject.applyDamage(%targetObject.getDataBlock().maxDamage);
}
Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType);
if(%message)
training5messageDamageFailed();
}
function training5ObjectiveGenDamaged(%targetObject, %damageType)
{
//error("training5ObjectiveGenDamaged("@%targetObject@", "@%damageType@")");
if(game.genDestroyed[%targetObject])
return false;
if(%damageType != $DamageType::SatchelCharge)
{
return true;
}
game.objectiveDestroyed = true;
%targetObject.applyDamage(%targetObject.getDataBlock().maxDamage);
return false;
}
function training5messageDamageFailed()
{
if(!game.tooSoonMsg && !game.objectiveDestroyed) {
game.tooSoonMsg = true;
schedule(15000, game, eval, "game.tooSoonMsg = false;");
messageClient($player, 0, $player.miscMsg[genAttackNoSatchel]);
training5easySatchelWaypoint();
}
}
function training5easySatchelWaypoint()
{
if($pref::trainingDifficulty == 1 &&
$player.player.getMountedImage($backPackSlot).getName() !$= "SatchelChargeImage" && !game.satchelWaypointSet) {
%waypoint = new WayPoint() {
position = nameToId(SatchelChargePack).position;
rotation = "1 0 0 0";
scale = "1 1 1";
dataBlock = "WayPointMarker";
lockCount = "0";
homingCount = "0";
name = "Satchel Charge";
team = 1;
locked = "true";
};
$player.satchelWaypoint = %waypoint;
game.satchelWaypointSet = true;
}
}
//======================================================================================
function AIEngageTask::assume(%task, %client)
{
Parent::assume(%task, %client);
@ -272,6 +301,14 @@ function singlePlayerGame::onAIKilled(%game, %clVictim, %clAttacker, %damageType
}
function singleplayerGame::pickTeamSpawn(%game, %client, %respawn)
{
if(%client.useSpawnSphere)
DefaultGame::pickTeamSpawn(%game, %client.team);
else
parent::pickTeamSpawn(%game, %client, %respawn);
}
function SinglePlayerGame::equip(%game, %player, %set)
{
if(!isObject(%player))

View file

@ -77,6 +77,8 @@ function TrainingGui::onWake( %this )
function TrainingGui::onSleep( %this )
{
%this.stopBriefing();
Canvas.popDialog(LaunchToolbarDlg);
}
//------------------------------------------------------------------------------

View file

@ -264,25 +264,24 @@ function AIMissionEnd()
%client = ClientGroup.getObject(%i);
if (%client.isAIControlled())
{
//cancel the respawn thread
if (%client.respawnThread > 0)
{
cancel(%client.respawnThread);
%client.respawnThread = "";
}
//cancel the respawn thread and the objective thread...
cancel(%client.respawnThread);
cancel(%client.objectiveThread);
//cancel the objective reassessment thread
if (%client.objectiveThread > 0)
{
cancel(%client.objectiveThread);
%client.objectiveThread = "";
}
AIUnassignClient(%client);
//reset the clients tasks, variables, etc...
AIUnassignClient(%client);
%client.stop();
%client.clearTasks();
%client.clearStep();
%client.defaultTasksAdded = false;
%client.missionCycleCleanup();
%client.clearStep();
%client.lastDamageClient = -1;
%client.lastDamageTurret = -1;
%client.setEngageTarget(-1);
%client.setTargetObject(-1);
%client.pilotVehicle = false;
%client.defaultTasksAdded = false;
//do the nav graph cleanup
%client.missionCycleCleanup();
}
}
@ -398,6 +397,15 @@ function AIVehicleMounted(%vehicle)
$AIVehicleSet.add(%vehicle);
}
function AICorpseAdded(%corpse)
{
if (isObject(%corpse))
{
%corpse.isCorpse = true;
$AIItemSet.add(%corpse);
}
}
//OTHER UTILITY FUNCTIONS
function AIConnection::onAIDrop(%client)
@ -439,6 +447,7 @@ function AIConnection::startMission(%client)
//sends a message so everyone know the bot is in the game...
Game.AIHasJoined(%client);
%client.matchStartReady = true;
//spawn the bot...
onAIRespawn(%client);
@ -522,7 +531,7 @@ function AIReassessObjective(%client)
{
ProfilePatch1(patchForTimeTest, %client);
// Game.AIChooseGameObjective(%client);
schedule(5000, %client, "AIReassessObjective", %client);
%client.objectiveThread = schedule(5000, %client, "AIReassessObjective", %client);
}
function onAIRespawn(%client)
@ -552,7 +561,7 @@ function onAIRespawn(%client)
%client.respawnThread = "";
//timeslice the objective reassessment for the bots
if (%client.objectiveThread <= 0)
if (!isEventPending(%client.objectiveThread))
{
%curTime = getSimTime();
%remainder = %curTime % 5000;

View file

@ -14,6 +14,9 @@ function BountyGame::onAIRespawn(%game, %client)
%client.addTask(AIBountyPatrolTask);
%client.bountyTask = %client.addTask(AIBountyEngageTask);
}
//set the inv flag
%client.spawnUseInv = true;
}
function BountyGame::AIInit(%game)
@ -59,12 +62,14 @@ function AIBountyEngageTask::weight(%task, %client)
}
//see if anyone has fired on us recently...
%mustEngage = false;
%losTimeout = 5000 + ($AIClientLOSTimeout * %client.getSkillLevel());
if (AIClientIsAlive(%client.lastDamageClient, %losTimeout) && getSimTime() - %client.lastDamageTime < %losTimeout)
{
//see if the attacker is either our target or, we are their target
if (%client.lastDamageClient == %client.objectiveTarget || %client.lastDamageClient.objectiveTarget == %client)
{
%mustEngage = true;
%currentTarget = %client.getEngageTarget();
//see if this is a new attacker
@ -105,7 +110,40 @@ function AIBountyEngageTask::weight(%task, %client)
//now set the weight
if (%client.shouldEngage > 0)
%task.setWeight($AIWeightReturnFire);
{
//if we've been fired upon...
if (%mustEngage)
%task.setWeight($AIWeightReturnFire);
//see if we can allow the bot to use an inv station...
else if (%client.spawnUseInv)
{
//see if there's an available inv station
%result = AIFindClosestInventory(%client, false);
%closestInv = getWord(%result, 0);
%closestDist = getWord(%result, 1);
if (isObject(%closestInv))
{
if (isObject(%client.shouldEngage.player))
{
%dist = %client.getPathDistance(%client.shouldEngage.player.position);
if (%dist < 70 || %closestDist > 200)
%task.setWeight($AIWeightReturnFire);
else
%task.setWeight($AIBountyWeightShouldEngage);
}
else
%task.setWeight($AIBountyWeightShouldEngage);
}
else
{
%client.spawnUseInv = false;
%task.setWeight($AIWeightReturnFire);
}
}
else
%task.setWeight($AIWeightReturnFire);
}
else
%task.setWeight(0);
}

View file

@ -18,5 +18,8 @@ function DMGame::onAIRespawn(%game, %client)
%client.addtask(AIDetectMineTask);
%client.addTask(AIPatrolTask);
}
//set the inv flag
%client.spawnUseInv = true;
}

View file

@ -68,6 +68,16 @@ function aiCome(%from, %to)
%from.player.setTransform(%to.player.getTransform());
}
function findBotWithInv(%item)
{
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (isObject(%cl.player) && %cl.player.getInventory(%item))
echo(%cl @ ":" SPC getTaggedString(%cl.name) SPC "has item" SPC %item);
}
}
function listInv(%client)
{
%player = %client.player;
@ -152,6 +162,21 @@ function listInv(%client)
%count = %player.getInventory(ShockLance);
if (%count > 0)
echo("ShockLance: " @ %count);
%count = %player.getInventory(RepairPack);
if (%count > 0)
echo("RepairPack: " @ %count);
%count = %player.getInventory(EnergyPack);
if (%count > 0)
echo("EnergyPack: " @ %count);
%count = %player.getInventory(ShieldPack);
if (%count > 0)
echo("ShieldPack: " @ %count);
%count = %player.getInventory(CloakingPack);
if (%count > 0)
echo("CloakingPack: " @ %count);
%count = %player.getInventory(SensorJammerPack);
if (%count > 0)
echo("SensorJammerPack: " @ %count);
}
function createAIDebugDlg()

View file

@ -27,6 +27,9 @@ $AIHuntersWeightPickupFlag = 4425;
$AIRabbitWeightDefault = 4625;
$AIRabbitWeightNeedInv = 4325;
//Bounty weights...
$AIBountyWeightShouldEngage = 4325;
//-----------------------------------------------------------------------------
//AIEngageTask is responsible for anything to do with engaging an enemy
@ -292,7 +295,9 @@ function AIPickupItemTask::weight(%task, %client)
if (!%item.isHidden())
{
%dist = %client.getPathDistance(%item.getWorldBoxCenter());
if ((%item.getDataBlock().getName() $= "RepairKit" || %item.getDataBlock().getName() $= "RepairPatch") && %damage > 0.3)
if (((%item.getDataBlock().getName() $= "RepairKit" || %item.getDataBlock().getName() $= "RepairPatch") ||
(%item.isCorpse && %item.getInventory("RepairKit") > 0)) &&
%player.getInventory("RepairKit") <= 0 && %damage > 0.3)
{
if (%dist > 0 && %dist < %closestHealthDist)
{
@ -335,7 +340,7 @@ function AIPickupItemTask::weight(%task, %client)
if (%closestItem > 0 && %closetItemDist < %closestHealthDist - 25 && (%damage < 0.6 || %currentTarget <= 0) && %closestItemLOS)
{
%task.pickupItem = %closestItem;
if (AIEngageOutOfAmmo(%client))
if (AIEngageWeaponRating(%client) < 20)
%task.setWeight($AIWeightNeedItemBadly);
else if (%closestItemDist < 10 && %closestItemLOS)
%task.setWeight($AIWeightNeedItem);
@ -363,7 +368,7 @@ function AIPickupItemTask::weight(%task, %client)
else if (%closestItem > 0)
{
%task.pickupItem = %closestItem;
if (AIEngageOutOfAmmo(%client))
if (AIEngageWeaponRating(%client) < 20)
%task.setWeight($AIWeightNeedItemBadly);
else if (%closestItemDist < 10 && %closestItemLOS)
%task.setWeight($AIWeightNeedItem);
@ -420,6 +425,31 @@ function AIUseInventoryTask::weight(%task, %client)
%damage = %player.getDamagePercent();
%weaponry = AIEngageWeaponRating(%client);
//if there's an inv station, and we haven't used an inv station since we
//spawned, the bot should use an inv once regardless
if (%client.spawnUseInv)
{
//see if we're already heading there
if (%client.buyInvTime != %task.buyInvTime)
{
//see if there's an inventory we can use
%result = AIFindClosestInventory(%client, false);
%closestInv = getWord(%result, 0);
if (isObject(%closestInv))
{
%task.setWeight($AIWeightNeedItem);
return;
}
else
%client.spawnUseInv = false;
}
else
{
%task.setWeight($AIWeightNeedItem);
return;
}
}
//first, see if we need equipment or health
if (%damage < 0.3 && %weaponry >= 40)
{
@ -456,15 +486,12 @@ function AIUseInventoryTask::weight(%task, %client)
%task.setWeight(0);
return;
}
//If they don't have LOS to the inv station, they should only use it if they need something badly
%mask = $TypeMasks::TerrainObjectType | $TypeMasks::InteriorObjectType;
%hasLOS = !containerRayCast(%client.player.getWorldBoxCenter(), %closestInv.getWorldBoxCenter(), %mask, 0);
//set the weight...
%task.closestInv = %closestInv;
if (%damage > 0.8 || AIEngageOutOfAmmo(%client))
%task.setWeight($AIWeightNeedItemBadly);
else if (%closestDist < 20 && %hasLOS && (AIEngageWeaponRating(%client) <= 30 || %damage > 0.4))
else if (%closestDist < 20 && (AIEngageWeaponRating(%client) <= 30 || %damage > 0.4))
%task.setWeight($AIWeightNeedItem);
else if (%hasLOS)
%task.setWeight($AIWeightFoundItem);
@ -481,7 +508,7 @@ function AIUseInventoryTask::monitor(%task, %client)
%damage = %player.getDamagePercent();
%weaponry = AIEngageWeaponRating(%client);
if (%damage < 0.3 && %weaponry >= 40)
if (%damage < 0.3 && %weaponry >= 40 && !%client.spawnUseInv)
{
%task.buyInvTime = getSimTime();
return;
@ -491,13 +518,21 @@ function AIUseInventoryTask::monitor(%task, %client)
%randNum = getRandom();
if (%randNum < 0.4)
%buySet = "LightEnergyDefault MediumEnergySet HeavyEnergySet";
else if (%randNum < 0.7)
else if (%randNum < 0.6)
%buySet = "LightShieldSet MediumShieldSet HeavyShieldSet";
else
else if (%randNum < 0.8)
%buySet = "LightEnergyELF MediumRepairSet HeavyAmmoSet";
else
%buySet = "LightEnergySniper MediumEnergySet HeavyEnergySet";
//reset the simTime if we're not still in progress
//process the inv buying state machine
%result = AIBuyInventory(%client, "", %buySet, %task.buyInvTime);
//if we succeeded, reset the spawn flag
if (%result $= "Finished")
%client.spawnUseInv = false;
//if we succeeded or failed, reset the state machine...
if (%result !$= "InProgress")
%task.buyInvTime = getSimTime();

View file

@ -25,6 +25,9 @@ function HuntersGame::onAIRespawn(%game, %client)
%client.addTask(AIPatrolTask);
%client.huntersTask = %client.addTask(AIHuntersTask);
}
//set the inv flag
%client.spawnUseInv = true;
}
//---------------------------------------------------------------------------

View file

@ -342,29 +342,47 @@ function AICouldUseItem(%client, %item)
return false;
}
//check ammo
%quantity = mFloor(%playerDataBlock.max[%type] * 0.7);
if (%player.getInventory(%type) < %quantity)
{
if (%type $= "ChainGunAmmo" && %player.getInventory("ChainGun") > 0)
return true;
if (%type $= "PlasmaAmmo" && %player.getInventory("Plasma") > 0)
return true;
if (%type $= "DiscAmmo" && %player.getInventory("Disc") > 0)
return true;
if (%type $= "GrenadeLauncher" && %player.getInventory("GrenadeLauncherAmmo") > 0)
return true;
if (%type $= "MortarAmmo" && %player.getInventory("Mortar") > 0)
return true;
//if the item is acutally, a corpse, check the corpse inventory...
if (%item.isCorpse)
{
%corpse = %item;
if (%corpse.getInventory("ChainGunAmmo") > 0 && %player.getInventory(%type) < %playerDataBlock.max[ChainGunAmmo])
return true;
if (%corpse.getInventory("PlasmaAmmo") > 0 && %player.getInventory(%type) < %playerDataBlock.max[PlasmaAmmo])
return true;
if (%corpse.getInventory("DiscAmmo") > 0 && %player.getInventory(%type) < %playerDataBlock.max[DiscAmmo])
return true;
if (%corpse.getInventory("GrenadeLauncher") > 0 && %player.getInventory(%type) < %playerDataBlock.max[GrenadeLauncher])
return true;
if (%corpse.getInventory("MortarAmmo") > 0 && %player.getInventory(%type) < %playerDataBlock.max[MortarAmmo] && %player.getInventory("Mortar") > 0)
return true;
}
else
{
//check ammo
%quantity = mFloor(%playerDataBlock.max[%type]);
if (%player.getInventory(%type) < %quantity)
{
if (%type $= "ChainGunAmmo")
return true;
if (%type $= "PlasmaAmmo")
return true;
if (%type $= "DiscAmmo")
return true;
if (%type $= "GrenadeLauncher")
return true;
if (%type $= "MortarAmmo" && %player.getInventory("Mortar") > 0)
return true;
//check mines and grenades as well
if (%type $= "Grenade" || %type $= "FlashGrenade" || %type $= "ConcussionGrenade")
return true;
}
//check mines and grenades as well
if (%type $= "Grenade" || %type $= "FlashGrenade" || %type $= "ConcussionGrenade")
return true;
}
//see if we can carry another weapon...
if (AICanPickupWeapon(%client, %type))
return true;
//see if we can carry another weapon...
if (AICanPickupWeapon(%client, %type))
return true;
}
//guess we didn't find anything useful... (should still check for mines and grenades)
return false;
@ -391,8 +409,9 @@ function AIEngageOutofAmmo(%client)
%hasELF = (%player.getInventory("ELFGun") > 0);
%hasMortar = (%player.getInventory("Mortar") > 0);
%hasMissile = (%player.getInventory("MissileLauncher") > 0);
%hasLance = (%player.getInventory("ShockLance") > 0);
if(%hasBlaster || %hasSniper || %hasElf)
if (%hasBlaster || %hasSniper || %hasElf || %hasLance)
return false;
else
{
@ -422,7 +441,7 @@ function AICanPickupWeapon(%client, %weapon)
//make sure the %weapon given is a weapon they can use for engagement
if (%weapon !$= "Blaster" && %weapon !$= "Plasma" && %weapon !$= "Chaingun" && %weapon !$= "Disc" &&
%weapon !$= "GrenadeLauncher" && %weapon !$= "SniperRifle" && %weapon !$= "ELFGun")
%weapon !$= "GrenadeLauncher" && %weapon !$= "SniperRifle" && %weapon !$= "ELFGun" && %weapon !$= "ShockLance")
{
return false;
}

View file

@ -15,6 +15,9 @@ function RabbitGame::onAIRespawn(%game, %client)
%client.addTask(AITauntCorpseTask);
%client.rabbitTask = %client.addTask(AIRabbitTask);
}
//set the inv flag
%client.spawnUseInv = true;
}
//---------------------------------------------------------------------------
@ -68,6 +71,33 @@ function AIRabbitTask::weight(%task, %client)
%task.setWeight($AIRabbitWeightDefault);
else
%task.setWeight($AIRabbitWeightNeedInv);
//see if the spawnUseInv flag should be reset
if (%client.spawnUseInv)
{
if (!isObject($AIRabbitFlag.carrier))
{
//see if there are any bots closer to a dropped flag
%found = false;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl != %client && %cl.isAIControlled() && isObject(%cl.player))
{
%dist = VectorDist(%cl.player.position, $AIRabbitFlag.position);
if (%dist < %distToFlag)
{
%found = true;
break;
}
}
}
//reset the spawnUseInv flag if we're the closest
if (!%found)
%client.spawnUsInv = false;
}
}
}
}

View file

@ -212,7 +212,7 @@ function PlayGui::onWake(%this)
}
$enableDirectInput = "1";
enableDirectInput();
activateDirectInput();
// chat hud dialog
Canvas.pushDialog( MainChatHud );
@ -246,7 +246,11 @@ function PlayGui::onSleep(%this)
moveMap.pop();
if ( isObject( passengerKeys ) )
passengerKeys.pop();
flyingCameraMove.pop();
if ( isObject( observerBlockMap ) )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
CursorOn();
}
@ -350,16 +354,6 @@ function ClientCmdVoteSubmitted(%type)
}
// End client voting functions.
function clientCmdSetVoiceCodec(%codec)
{
if (%codec $= ".v12" || %codec $= ".v24" || %codec $= ".v29")
$Audio::voiceCodec = %codec;
else
$Audio::voiceCodec = "";
echo("Got setVoiceCodec: " @ %codec);
alxCaptureInit();
}
function clientCmdEndBomberSight()
{
PlayGui.remove($bombSightHud);
@ -1769,11 +1763,17 @@ function sceneLightingComplete()
}
clientCmdResetHud();
%numChannels = $pref::Audio::microphoneEnabled ? $pref::audio::voiceChannels : 0;
commandToServer('SetVoiceChannels', %numChannels);
commandToServer('SetVoiceInfo', $pref::Audio::voiceChannels, $pref::Audio::decodingMask, $pref::Audio::encodingLevel);
commandToServer('MissionStartPhase3Done', $MSeq);
}
function clientCmdSetVoiceInfo(%channels, %decodingMask, %encodingLevel)
{
$Audio::serverChannels = %channels;
$Audio::serverDecodingMask = %decodingMask;
$Audio::serverEncodingLevel = %encodingLevel;
}
function ClientReceivedDataBlock(%index, %total)
{
%pct = %index / %total;

View file

@ -22,7 +22,6 @@ $AudioProviders[3, isHardware] = false;
$AudioProviders[3, enableEvironment] = false;
// defaults
$Audio::voiceCodec = ".v12";
$Audio::defaultDriver = "miles";
$Audio::innerFalloffScale = "1.0";
$Audio::dynamicMemorySize = (1 << 20);

View file

@ -1,11 +1,15 @@
$JoinGamePort = 28000;
$pref::Audio::drivers = "Miles";
$pref::Audio::enableVoiceCapture = 1;
$pref::Audio::forceMaxDistanceUpdate = 0;
$pref::Audio::voiceChannels = 2;
$pref::Audio::activeDriver = "default";
$pref::Audio::drivers = "Miles";
$pref::Audio::frequency = 22100;
$pref::Audio::sampleBits = 16;
$pref::Audio::channels = 2;
$pref::Audio::enableVoiceCapture = 1;
$pref::Audio::voiceChannels = 2;
$pref::Audio::encodingLevel = 0;
$pref::Audio::decodingMask = 1;
$pref::Audio::forceMaxDistanceUpdate = 0;
$pref::Audio::environmentEnabled = 0;
$pref::Audio::microphoneEnabled = 1;
$pref::Audio::musicEnabled = 1;
$pref::Audio::musicVolume = 0.8;
$pref::Audio::masterVolume = 0.8;
@ -69,17 +73,14 @@ $pref::Forum::CacheSize = 100;
$pref::HudMessageLogSize = 40;
$pref::Input::ActiveConfig = "MyConfig";
$pref::Input::LinkMouseSensitivity = 1;
$pref::Input::MouseEnabled = 0;
$pref::Input::JoystickEnabled = 0;
$pref::Input::KeyboardTurnSpeed = 0.1;
$pref::Interior::TexturedFog = 0;
$pref::IRCClient::server = "198.74.38.141";
$pref::IRCClient::serverport = 6668;
$pref::IRCClient::autoreconnect = 1;
$pref::IRCClient::showjoinleave = 1;
$pref::IRCClient::awaymsg = "Don't be alarmed. I'm going to step away from my computer.";
$pref::IRCClient::banmsg = "You, and three generations of your offspring, are banned from this channel.";
$pref::IRCClient::kickmsg = "Alright, you're outta here!";
$pref::IRCClient::hostmsg = "left to host a game.";
$pref::Lobby::Column1 = 120;
$pref::Lobby::Column2 = 120;
$pref::Lobby::Column3 = 50;
@ -143,3 +144,4 @@ $pref::VisibleDistanceMod = 1.0;
$pref::OpenGL::force16BitTexture = "0";
$pref::OpenGL::forcePalettedTexture = "1";
$pref::OpenGL::maxHardwareLights = 3;
$pref::OpenGL::allowTexGen = "1";

View file

@ -180,23 +180,6 @@ moveMap.bind( keyboard, "pageUp", pageMessageHudUp );
moveMap.bind( keyboard, "pageDown", pageMessageHudDown );
//------------------------------------------------------------------------------
// VOICE CAPTURE FUNCTIONS:
function voiceCapStart()
{
vcRecordingHud.setVisible(true);
voiceCommHud.setVisible(true);
resizeVoiceCommWindow();
alxCaptureStart();
}
function voiceCapStop()
{
vcRecordingHud.setVisible(false);
if($numTalking < 1)
voiceCommHud.setVisible(false);
alxCaptureStop();
}
function voiceCapture( %val )
{
if ( %val )
@ -1031,7 +1014,18 @@ moveMap.bind( keyboard, insert, voteYes );
moveMap.bind( keyboard, delete, voteNo );
///////////////////////
//Vehicle Keys
// Observer Keys
///////////////////////
if ( isObject( observerMap ) )
observerMap.delete();
new ActionMap( observerMap );
observerMap.bind( keyboard, t, moveup );
observerMap.bind( keyboard, b, movedown );
observerMap.bind( keyboard, space, jump );
observerMap.bind( mouse, button1, mouseJet );
///////////////////////
// Vehicle Keys
///////////////////////
function clientCmdSetWeaponryVehicleKeys()
{
@ -1104,6 +1098,12 @@ function clientCmdSetDefaultVehicleKeys(%inVehicle)
passengerKeys.copyBind( moveMap, setZoomFOV );
passengerKeys.copyBind( moveMap, toggleZoom );
// Copy the joystick binds as well:
passengerKeys.copyBind( moveMap, joyPitch );
passengerKeys.copyBind( moveMap, joyYaw );
passengerKeys.copyBind( moveMap, joystickMoveX );
passengerKeys.copyBind( moveMap, joystickMoveY );
// Bind the chat keys as well:
passengerKeys.copyBind( moveMap, ToggleMessageHud );
passengerKeys.copyBind( moveMap, TeamMessageHud );
@ -1229,9 +1229,7 @@ function serverCmdSetVehicleWeapon(%client, %num)
%turret.setImageTrigger(2, false);
%turret.setImageTrigger(4, false);
}
}
}
function nextVehicleWeapon(%val)

View file

@ -349,7 +349,7 @@ addCreditsLine("Daniel \"Emp\" Arnold");
addCreditsLine("Daniel \"Snaggs\" Soderstrom");
addCreditsLine("Daniel \"Trebz\" Nolan");
addCreditsLine("Daniel \"Wizard_TPG\" Neilsen");
addCreditsLine("Daniel \"Zero\" Nichols");
addCreditsLine("Daniel \"Shadow Mage\" Nichols");
addCreditsLine("Daniel \"Spooger\" Patton");
addCreditsLine("Danny \"OmegaRed\" Cotton");
addCreditsLine("Darion \"Shadower\" Lowenstein");
@ -383,7 +383,7 @@ addCreditsLine("Jeremy \"Xevious\" Burke");
addCreditsLine("Jerry \"Tycho Brahe\" Holkins");
addCreditsLine("Joe \"Quadrature\" Downs");
addCreditsLine("Joe Bell Grant");
addCreditsLine("Joern \"[TD] Pangur\" Schnautz");
addCreditsLine("Joern \"Pangur\" Schnautz");
addCreditsLine("John \"Dr.Jones\" Burnett");
addCreditsLine("Jon \"Ratorasniki\" Naiman");
addCreditsLine("Jonathan \"Chaser\" Bale");
@ -420,7 +420,7 @@ addCreditsLine("Nathan \"[HvC]NaTeDoGG\" Sweet");
addCreditsLine("Nick \"Enhanced Panda\" Orlich");
addCreditsLine("Nick \"Leb\" Petska");
addCreditsLine("Nick S. \"Enlightened One\" Pasto");
addCreditsLine("Nickita \"FSB-SPY\" Bogolyubov");
addCreditsLine("Nikita \"FSB-SPY\" Bogolyubov");
addCreditsLine("Olivier \"[cf] OroX\" Roulx");
addCreditsLine("Omar Yehia");
addCreditsLine("Pamela A. \"Diva\" Holmberg");
@ -1166,7 +1166,7 @@ addCreditsLine("Michael van Huystee");
addCreditsLine("Michael Voigt");
addCreditsLine("Michael Waldvogle");
addCreditsLine("Michael Wichter");
addCreditsLine("micheal thornton");
addCreditsLine("Michael Thornton");
addCreditsLine("Mickey Borchardt");
addCreditsLine("Miguel Schneeberger");
addCreditsLine("Mika Hyvonen");
@ -1289,7 +1289,7 @@ addCreditsLine("Phill Curiale");
addCreditsLine("Phillip Ervin");
addCreditsLine("Phillip Kono");
addCreditsLine("Phillip Ploesser");
addCreditsLine("phillip stewart");
addCreditsLine("Phillip Stewart");
addCreditsLine("Pöchhacker Lee");
addCreditsLine("Prasad Galpoththawela");
addCreditsLine("Radu Lucian");

View file

@ -15,8 +15,8 @@ $DamageType::Missile = 9;
$DamageType::ShockLance = 10;
$DamageType::Mine = 11;
$DamageType::Explosion = 12;
$DamageType::Impact = 13;
$DamageType::Ground = 14;
$DamageType::Impact = 13; // Object to object collisions
$DamageType::Ground = 14; // Object to ground collisions
$DamageType::Turret = 15;
$DamageType::PlasmaTurret = 16;
@ -96,7 +96,73 @@ $DamageTypeText[99] = "suicide";
//----------------------------------------------------------------------------
// VEHICLE DAMAGE PROFILES
//----------------------------------------------------------------------------
datablock SimDataBlock(AirVehicleDamageProfile)
//**** SHRIKE SCOUT FIGHTER ****
datablock SimDataBlock(ShrikeDamageProfile)
{
shieldDamageScale[$DamageType::Blaster] = 1.0;
shieldDamageScale[$DamageType::Bullet] = 1.75;
shieldDamageScale[$DamageType::ELF] = 1.0;
shieldDamageScale[$DamageType::ShockLance] = 0.5;
shieldDamageScale[$DamageType::Laser] = 1.0;
shieldDamageScale[$DamageType::ShrikeBlaster] = 4.0;
shieldDamageScale[$DamageType::BellyTurret] = 2.0;
shieldDamageScale[$DamageType::AATurret] = 3.0;
shieldDamageScale[$DamageType::IndoorDepTurret] = 2.25;
shieldDamageScale[$DamageType::OutdoorDepTurret] = 2.25;
shieldDamageScale[$DamageType::SentryTurret] = 2.25;
shieldDamageScale[$DamageType::Disc] = 1.0;
shieldDamageScale[$DamageType::Grenade] = 1.0;
shieldDamageScale[$DamageType::Mine] = 3.0;
shieldDamageScale[$DamageType::Missile] = 3.0;
shieldDamageScale[$DamageType::Mortar] = 2.0;
shieldDamageScale[$DamageType::Plasma] = 1.0;
shieldDamageScale[$DamageType::BomberBombs] = 3.0;
shieldDamageScale[$DamageType::TankChaingun] = 3.0;
shieldDamageScale[$DamageType::TankMortar] = 2.0;
shieldDamageScale[$DamageType::MissileTurret] = 3.0;
shieldDamageScale[$DamageType::MortarTurret] = 2.0;
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 3.5;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.1;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 3.0;
shieldDamageScale[$DamageType::Lightning] = 10.0;
damageScale[$DamageType::Blaster] = 1.0;
damageScale[$DamageType::Bullet] = 1.0;
damageScale[$DamageType::ELF] = 0.0;
damageScale[$DamageType::ShockLance] = 0.50;
damageScale[$DamageType::Laser] = 1.0;
damageScale[$DamageType::ShrikeBlaster] = 3.5;
damageScale[$DamageType::BellyTurret] = 1.2;
damageScale[$DamageType::AATurret] = 1.5;
damageScale[$DamageType::IndoorDepTurret] = 1.25;
damageScale[$DamageType::OutdoorDepTurret] = 1.25;
damageScale[$DamageType::SentryTurret] = 1.25;
damageScale[$DamageType::Disc] = 1.0;
damageScale[$DamageType::Grenade] = 0.75;
damageScale[$DamageType::Mine] = 4.0;
damageScale[$DamageType::Missile] = 1.5;
damageScale[$DamageType::Mortar] = 2.0;
damageScale[$DamageType::Plasma] = 0.5;
damageScale[$DamageType::BomberBombs] = 2.0;
damageScale[$DamageType::TankChaingun] = 2.0;
damageScale[$DamageType::TankMortar] = 2.0;
damageScale[$DamageType::MissileTurret] = 1.5;
damageScale[$DamageType::MortarTurret] = 2.0;
damageScale[$DamageType::PlasmaTurret] = 2.0;
damageScale[$DamageType::SatchelCharge] = 3.5;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.1;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 2.0;
damageScale[$DamageType::Lightning] = 10.0;
};
//**** THUNDERSWORD BOMBER ****
datablock SimDataBlock(BomberDamageProfile)
{
shieldDamageScale[$DamageType::Blaster] = 1.0;
shieldDamageScale[$DamageType::Bullet] = 1.0;
@ -123,7 +189,7 @@ datablock SimDataBlock(AirVehicleDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 3.5;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0;
shieldDamageScale[$DamageType::Impact] = 0.8;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 3.0;
shieldDamageScale[$DamageType::Lightning] = 10.0;
@ -153,13 +219,78 @@ datablock SimDataBlock(AirVehicleDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 2.0;
damageScale[$DamageType::SatchelCharge] = 3.5;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0;
damageScale[$DamageType::Impact] = 0.8;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 2.0;
damageScale[$DamageType::Lightning] = 10.0;
};
datablock SimDataBlock(GravCycleDamageProfile)
//**** HAVOC TRANSPORT ****
datablock SimDataBlock(HavocDamageProfile)
{
shieldDamageScale[$DamageType::Blaster] = 1.0;
shieldDamageScale[$DamageType::Bullet] = 1.0;
shieldDamageScale[$DamageType::ELF] = 1.0;
shieldDamageScale[$DamageType::ShockLance] = 0.5;
shieldDamageScale[$DamageType::Laser] = 1.0;
shieldDamageScale[$DamageType::ShrikeBlaster] = 3.5;
shieldDamageScale[$DamageType::BellyTurret] = 2.0;
shieldDamageScale[$DamageType::AATurret] = 3.0;
shieldDamageScale[$DamageType::IndoorDepTurret] = 2.25;
shieldDamageScale[$DamageType::OutdoorDepTurret] = 2.25;
shieldDamageScale[$DamageType::SentryTurret] = 2.25;
shieldDamageScale[$DamageType::Disc] = 1.0;
shieldDamageScale[$DamageType::Grenade] = 1.0;
shieldDamageScale[$DamageType::Mine] = 3.0;
shieldDamageScale[$DamageType::Missile] = 3.0;
shieldDamageScale[$DamageType::Mortar] = 2.0;
shieldDamageScale[$DamageType::Plasma] = 1.0;
shieldDamageScale[$DamageType::BomberBombs] = 3.0;
shieldDamageScale[$DamageType::TankChaingun] = 3.0;
shieldDamageScale[$DamageType::TankMortar] = 2.0;
shieldDamageScale[$DamageType::MissileTurret] = 3.0;
shieldDamageScale[$DamageType::MortarTurret] = 2.0;
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 3.5;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 0.5;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 3.0;
shieldDamageScale[$DamageType::Lightning] = 10.0;
damageScale[$DamageType::Blaster] = 0.75;
damageScale[$DamageType::Bullet] = 0.75;
damageScale[$DamageType::ELF] = 0.0;
damageScale[$DamageType::ShockLance] = 0.50;
damageScale[$DamageType::Laser] = 1.0;
damageScale[$DamageType::ShrikeBlaster] = 2.5;
damageScale[$DamageType::BellyTurret] = 1.2;
damageScale[$DamageType::AATurret] = 1.5;
damageScale[$DamageType::IndoorDepTurret] = 1.25;
damageScale[$DamageType::OutdoorDepTurret] = 1.25;
damageScale[$DamageType::SentryTurret] = 1.25;
damageScale[$DamageType::Disc] = 1.0;
damageScale[$DamageType::Grenade] = 0.75;
damageScale[$DamageType::Mine] = 4.0;
damageScale[$DamageType::Missile] = 1.5;
damageScale[$DamageType::Mortar] = 2.0;
damageScale[$DamageType::Plasma] = 0.5;
damageScale[$DamageType::BomberBombs] = 2.0;
damageScale[$DamageType::TankChaingun] = 2.0;
damageScale[$DamageType::TankMortar] = 2.0;
damageScale[$DamageType::MissileTurret] = 1.5;
damageScale[$DamageType::MortarTurret] = 2.0;
damageScale[$DamageType::PlasmaTurret] = 2.0;
damageScale[$DamageType::SatchelCharge] = 3.5;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 0.5;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 2.0;
damageScale[$DamageType::Lightning] = 10.0;
};
//**** WILDCAT GRAV CYCLE ****
datablock SimDataBlock(WildcatDamageProfile)
{
shieldDamageScale[$DamageType::Blaster] = 2.0;
shieldDamageScale[$DamageType::Bullet] = 2.5;
@ -185,7 +316,7 @@ datablock SimDataBlock(GravCycleDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 3.0;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.25;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 5.0;
@ -214,13 +345,14 @@ datablock SimDataBlock(GravCycleDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 2.2;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0;
damageScale[$DamageType::Impact] = 1.25;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 5.0;
};
datablock SimDataBlock(GroundVehicleDamageProfile)
//**** BEOWULF TANK ****
datablock SimDataBlock(TankDamageProfile)
{
shieldDamageScale[$DamageType::Blaster] = 0.6;
shieldDamageScale[$DamageType::Bullet] = 0.75;
@ -246,7 +378,7 @@ datablock SimDataBlock(GroundVehicleDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 1.25;
shieldDamageScale[$DamageType::SatchelCharge] = 2.0;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0;
shieldDamageScale[$DamageType::Impact] = 0.75;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 10.0;
@ -275,7 +407,69 @@ datablock SimDataBlock(GroundVehicleDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 2.0;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0;
damageScale[$DamageType::Impact] = 0.75;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 10.0;
};
//**** JERICHO MPB ****
datablock SimDataBlock(MPBDamageProfile)
{
shieldDamageScale[$DamageType::Blaster] = 0.6;
shieldDamageScale[$DamageType::Bullet] = 0.75;
shieldDamageScale[$DamageType::ELF] = 1.0;
shieldDamageScale[$DamageType::ShockLance] = 0.5;
shieldDamageScale[$DamageType::Laser] = 1.0;
shieldDamageScale[$DamageType::ShrikeBlaster] = 1.75;
shieldDamageScale[$DamageType::BellyTurret] = 1.25;
shieldDamageScale[$DamageType::AATurret] = 0.8;
shieldDamageScale[$DamageType::IndoorDepTurret] = 1.0;
shieldDamageScale[$DamageType::OutdoorDepTurret] = 1.0;
shieldDamageScale[$DamageType::Disc] = 0.8;
shieldDamageScale[$DamageType::Grenade] = 0.8;
shieldDamageScale[$DamageType::Mine] = 3.25;
shieldDamageScale[$DamageType::Missile] = 2.0;
shieldDamageScale[$DamageType::Mortar] = 0.8;
shieldDamageScale[$DamageType::Plasma] = 1.0;
shieldDamageScale[$DamageType::BomberBombs] = 1.5;
shieldDamageScale[$DamageType::TankChaingun] = 1.5;
shieldDamageScale[$DamageType::TankMortar] = 1.4;
shieldDamageScale[$DamageType::MissileTurret] = 1.25;
shieldDamageScale[$DamageType::MortarTurret] = 1.0;
shieldDamageScale[$DamageType::PlasmaTurret] = 1.25;
shieldDamageScale[$DamageType::SatchelCharge] = 2.0;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 0.5;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 10.0;
damageScale[$DamageType::Blaster] = 0.75;
damageScale[$DamageType::Bullet] = 0.75;
damageScale[$DamageType::ELF] = 0.0;
damageScale[$DamageType::ShockLance] = 0.50;
damageScale[$DamageType::Laser] = 1.0;
damageScale[$DamageType::ShrikeBlaster] = 2.0;
damageScale[$DamageType::BellyTurret] = 1.0;
damageScale[$DamageType::AATurret] = 1.0;
damageScale[$DamageType::IndoorDepTurret] = 1.0;
damageScale[$DamageType::OutdoorDepTurret] = 1.0;
damageScale[$DamageType::Disc] = 1.0;
damageScale[$DamageType::Grenade] = 1.0;
damageScale[$DamageType::Mine] = 2.25;
damageScale[$DamageType::Missile] = 1.25;
damageScale[$DamageType::Mortar] = 1.0;
damageScale[$DamageType::Plasma] = 0.5;
damageScale[$DamageType::BomberBombs] = 1.0;
damageScale[$DamageType::TankChaingun] = 0.75;
damageScale[$DamageType::TankMortar] = 1.0;
damageScale[$DamageType::MissileTurret] = 1.25;
damageScale[$DamageType::MortarTurret] = 1.0;
damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 2.0;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 0.5;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 10.0;
@ -380,7 +574,7 @@ datablock SimDataBlock(StaticShapeDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 6.0;
shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.25;
shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 5.0;
@ -410,7 +604,7 @@ datablock SimDataBlock(StaticShapeDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 2.0;
damageScale[$DamageType::SatchelCharge] = 4.0;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0;
damageScale[$DamageType::Impact] = 1.25;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 5.0;
@ -447,7 +641,7 @@ datablock SimDataBlock(LightPlayerDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 3.0;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0;
damageScale[$DamageType::Impact] = 1.2;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.2;
damageScale[$DamageType::Lightning] = 1.0;
@ -513,7 +707,7 @@ datablock SimDataBlock(HeavyPlayerDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 3.0;
damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0;
damageScale[$DamageType::Impact] = 0.8;
damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 0.6;
damageScale[$DamageType::Lightning] = 1.4;

View file

@ -927,6 +927,9 @@ function DefaultGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %
else
aiReleaseHumanControl(%clVictim, %clVictim.controlAI);
//used to track corpses so the AI can get ammo, etc...
AICorpseAdded(%plVictim);
//if the death was a suicide, prevent respawning for 5 seconds...
%clVictim.lastDeathSuicide = false;
if (%damageType == $DamageType::Suicide)
@ -2305,6 +2308,9 @@ function DefaultGame::sendGamePlayerPopupMenu( %game, %client, %targetClient, %k
%outrankTarget = !%targetClient.isSuperAdmin;
else if ( %client.isAdmin )
%outrankTarget = !%targetClient.isAdmin;
if( ! %targetClient.matchStartReady )
return;
//mute options
if ( !%isTargetSelf )
@ -2509,14 +2515,28 @@ function DefaultGame::sendTimeLimitList( %game, %client, %key )
//------------------------------------------------------------------------------
// all global votes here
function DefaultGame::voteChangeMission(%game, %admin, %missionDisplayName, %typeDisplayName, %mission, %missionType)
function DefaultGame::voteChangeMission(%game, %admin, %missionDisplayName, %typeDisplayName, %missionId, %missionTypeId)
{
%mission = $HostMissionFile[%missionId];
if ( %mission $= "" )
{
error( "Invalid mission index passed to DefaultGame::voteChangeMission!" );
return;
}
%missionType = $HostTypeName[%missionTypeId];
if ( %missionType $= "" )
{
error( "Invalid mission type id passed to DefaultGame::voteChangeMission!" );
return;
}
if(%admin)
{
messageAll('MsgAdminChangeMission', '\c2The Admin has changed the mission to %1 (%2).', %missionDisplayName, %typeDisplayName );
logEcho("mission changed to "@%missionDisplayName@"/"@%typeDisplayName@" (admin)");
%game.gameOver();
loadMission(%mission, %missionType, false);
loadMission( %mission, %missionType, false );
}
else
{
@ -2526,7 +2546,7 @@ function DefaultGame::voteChangeMission(%game, %admin, %missionDisplayName, %typ
messageAll('MsgVotePassed', '\c2The mission was changed to %1 (%2) by vote.', %missionDisplayName, %typeDisplayName );
logEcho("mission changed to "@%missionDisplayName@"/"@%typeDisplayName@" (vote)");
%game.gameOver();
loadMission(%mission, %missionType, false);
loadMission( %mission, %missionType, false );
}
else
messageAll('MsgVoteFailed', '\c2Change mission vote did not pass: %1 percent.', mFloor(%game.totalVotesFor/(ClientGroup.getCount() - $HostGameBotCount) * 100));
@ -2586,8 +2606,22 @@ function DefaultGame::voteTeamDamage(%game, %admin)
}
//------------------------------------------------------------------------------
function DefaultGame::voteTournamentMode( %game, %admin, %missionDisplayName, %typeDisplayName, %mission, %missionType )
function DefaultGame::voteTournamentMode( %game, %admin, %missionDisplayName, %typeDisplayName, %missionId, %missionTypeId )
{
%mission = $HostMissionFile[%missionId];
if ( %mission $= "" )
{
error( "Invalid mission index passed to DefaultGame::voteTournamentMode!" );
return;
}
%missionType = $HostTypeName[%missionTypeId];
if ( %missionType $= "" )
{
error( "Invalid mission type id passed to DefaultGame::voteTournamentMode!" );
return;
}
%cause = "";
if (%admin)
{
@ -2904,9 +2938,6 @@ function DefaultGame::updateScoreHud(%game, %client, %tag)
%index++;
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}
else
{
@ -2980,9 +3011,40 @@ function DefaultGame::updateScoreHud(%game, %client, %tag)
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}
// Tack on the list of observers:
%observerCount = 0;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.team == 0)
%observerCount++;
}
if (%observerCount > 0)
{
messageClient( %client, 'SetLineHud', "", %tag, %index, "");
%index++;
messageClient(%client, 'SetLineHud', "", %tag, %index, '<tab:10, 310><spush><font:Univers Condensed:22>\tOBSERVERS (%1)<rmargin:260><just:right>TIME<spop>', %observerCount);
%index++;
for (%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
//if this is an observer
if (%cl.team == 0)
{
%obsTime = getSimTime() - %cl.observerStartTime;
%obsTimeStr = %game.formatTime(%obsTime, false);
messageClient( %client, 'SetLineHud', "", %tag, %index, '<tab:20, 310>\t<clip:150>%1</clip><rmargin:260><just:right>%2',
%cl.name, %obsTimeStr );
%index++;
}
}
}
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
}
//------------------------------------------------------------------------------
@ -3016,6 +3078,42 @@ function notifyMatchEnd(%time)
UpdateClientTimes(%time);
}
function DefaultGame::formatTime(%game, %tStr, %includeHundredths)
{
%timeInSeconds = %tStr / 1000;
%mins = mFloor(%timeInSeconds / 60);
if(%mins < 1)
%timeString = "00:";
else if(%mins < 10)
%timeString = "0" @ %mins @ ":";
else
%timeString = %mins @ ":";
%timeInSeconds -= (%mins * 60);
%secs = mFloor(%timeInSeconds);
if(%secs < 1)
%timeString = %timeString @ "00";
else if(%secs < 10)
%timeString = %timeString @ "0" @ %secs;
else
%timeString = %timeString @ %secs;
if (%includeHundredths)
{
%timeString = %timeString @ ".";
%timeInSeconds -= %secs;
%hSecs = mFloor(%timeInSeconds * 100); // will be between 0 and 999
if(%hSecs < 1)
%timeString = %timeString @ "00";
else if(%hSecs < 10)
%timeString = %timeString @ "0" @ %hSecs;
else
%timeString = %timeString @ %hSecs;
}
return %timeString;
}
//------------------------------------------------------------------------------
//AI FUNCTIONS
function DefaultGame::AIChooseGameObjective(%game, %client)

View file

@ -118,6 +118,8 @@ datablock StaticShapeData(DeployedStationInventory) : StaticShapeDamageProfile
renderWhenDestroyed = false;
doesRepair = true;
deployedObject = true;
cmdCategory = "DSupport";
cmdIcon = CMDStationIcon;
cmdMiniIconName = "commander/MiniIcons/com_inventory_grey";
@ -126,6 +128,7 @@ datablock StaticShapeData(DeployedStationInventory) : StaticShapeDamageProfile
debrisShapeName = "debris_generic_small.dts";
debris = DeployableDebris;
heatSignature = 0;
};
datablock ShapeBaseImageData(InventoryDeployableImage)
@ -138,6 +141,7 @@ datablock ShapeBaseImageData(InventoryDeployableImage)
mountPoint = 1;
offset = "0 0 0";
deployed = DeployedStationInventory;
heatSignature = 0;
stateName[0] = "Idle";
stateTransitionOnTriggerDown[0] = "Activate";
@ -163,6 +167,7 @@ datablock ItemData(InventoryDeployable)
rotate = false;
image = "InventoryDeployableImage";
pickUpName = "an inventory pack";
heatSignature = 0;
computeCRC = true;
emap = true;
@ -194,6 +199,8 @@ datablock StaticShapeData(DeployedMotionSensor) : StaticShapeDamageProfile
explosion = DeployablesExplosion;
dynamicType = $TypeMasks::SensorObjectType;
deployedObject = true;
cmdCategory = "DSupport";
cmdIcon = CMDSensorIcon;
cmdMiniIconName = "commander/MiniIcons/com_deploymotionsensor";
@ -206,6 +213,7 @@ datablock StaticShapeData(DeployedMotionSensor) : StaticShapeDamageProfile
debrisShapeName = "debris_generic_small.dts";
debris = DeployableDebris;
heatSignature = 0;
};
datablock ShapeBaseImageData(MotionSensorDeployableImage)
@ -226,6 +234,7 @@ datablock ShapeBaseImageData(MotionSensorDeployableImage)
maxDepSlope = 360;
deploySound = MotionSensorDeploySound;
emap = true;
heatSignature = 1;
};
datablock ItemData(MotionSensorDeployable)
@ -243,6 +252,7 @@ datablock ItemData(MotionSensorDeployable)
computeCRC = true;
emap = true;
heatSignature = 0;
//maxSensors = 3;
maxSensors = 2;
@ -271,6 +281,8 @@ datablock StaticShapeData(DeployedPulseSensor) : StaticShapeDamageProfile
explosion = DeployablesExplosion;
dynamicType = $TypeMasks::SensorObjectType;
deployedObject = true;
cmdCategory = "DSupport";
cmdIcon = CMDSensorIcon;
cmdMiniIconName = "commander/MiniIcons/com_deploypulsesensor";
@ -283,6 +295,7 @@ datablock StaticShapeData(DeployedPulseSensor) : StaticShapeDamageProfile
debrisShapeName = "debris_generic_small.dts";
debris = DeployableDebris;
heatSignature = 0;
};
datablock ShapeBaseImageData(PulseSensorDeployableImage)
@ -303,6 +316,7 @@ datablock ShapeBaseImageData(PulseSensorDeployableImage)
maxDepSlope = 40;
emap = true;
heatSignature = 0;
};
datablock ItemData(PulseSensorDeployable)
@ -366,7 +380,7 @@ datablock ItemData(TurretOutdoorDeployable)
pickupRadius = 1;
rotate = false;
image = "TurretOutdoorDeployableImage";
pickUpName = "an outdoor turret pack";
pickUpName = "a landspike turret pack";
computeCRC = true;
emap = true;
@ -410,7 +424,7 @@ datablock ItemData(TurretIndoorDeployable)
pickupRadius = 1;
rotate = false;
image = "TurretIndoorDeployableImage";
pickUpName = "an indoor turret pack";
pickUpName = "a spider clamp turret pack";
computeCRC = true;
emap = true;
@ -889,6 +903,10 @@ function ShapeBaseImageData::onDeploy(%item, %plyr, %slot)
%deplObj.setDeployRotation(%item.surfacePt, %item.surfaceNrm);
else
%deplObj.setTransform(%item.surfacePt SPC %rot);
// set the recharge rate right away
if(%deplObj.getDatablock().rechargeRate)
%deplObj.setRechargeRate(%deplObj.getDatablock().rechargeRate);
// set team, owner, and handle
%deplObj.team = %plyr.client.Team;

View file

@ -1,83 +1,83 @@
function createObserverMoveMap()
{
if ( isObject( flyingCameraMove ) )
flyingCameraMove.delete();
new ActionMap( flyingCameraMove );
flyingCameraMove.bind( keyboard, s, moveleft );
flyingCameraMove.bind( keyboard, f, moveright );
flyingCameraMove.bind( keyboard, e, moveforward );
flyingCameraMove.bind( keyboard, d, movebackward );
flyingCameraMove.bind( keyboard, t, moveup );
flyingCameraMove.bind( keyboard, b, movedown );
// allow hud activation
flyingCameraMove.copyBind( moveMap, toggleScoreScreen );
flyingCameraMove.copyBind( moveMap, toggleCommanderMap );
flyingCameraMove.copyBind( moveMap, TeamMessageHud );
flyingCameraMove.copyBind( moveMap, toggleMessageHud );
flyingCameraMove.copyBind( moveMap, toggleInventoryHud );
flyingCameraMove.copyBind( moveMap, voteYes );
flyingCameraMove.copyBind( moveMap, voteNo );
flyingCameraMove.copyBind( moveMap, activateChatMenuHud );
// Bind the command assignment/response keys as well:
flyingCameraMove.copyBind( moveMap, toggleTaskListDlg );
flyingCameraMove.copyBind( moveMap, fnAcceptTask );
flyingCameraMove.copyBind( moveMap, fnDeclineTask );
flyingCameraMove.copyBind( moveMap, fnTaskCompleted );
flyingCameraMove.copyBind( moveMap, fnResetTaskList );
// misc
flyingCameraMove.copyBind( moveMap, voiceCapture );
// inventory binds
flyingCameraMove.copyBind( moveMap, toggleInventoryHud );
flyingCameraMove.copyBind( moveMap, selectFavorite1 );
flyingCameraMove.copyBind( moveMap, selectFavorite2 );
flyingCameraMove.copyBind( moveMap, selectFavorite3 );
flyingCameraMove.copyBind( moveMap, selectFavorite4 );
flyingCameraMove.copyBind( moveMap, selectFavorite5 );
flyingCameraMove.copyBind( moveMap, selectFavorite6 );
flyingCameraMove.copyBind( moveMap, selectFavorite7 );
flyingCameraMove.copyBind( moveMap, selectFavorite8 );
flyingCameraMove.copyBind( moveMap, selectFavorite9 );
flyingCameraMove.copyBind( moveMap, selectFavorite10 );
flyingCameraMove.copyBind( moveMap, selectFavorite11 );
flyingCameraMove.copyBind( moveMap, selectFavorite12 );
flyingCameraMove.copyBind( moveMap, selectFavorite13 );
flyingCameraMove.copyBind( moveMap, selectFavorite14 );
flyingCameraMove.copyBind( moveMap, selectFavorite15 );
flyingCameraMove.copyBind( moveMap, selectFavorite16 );
flyingCameraMove.copyBind( moveMap, selectFavorite17 );
flyingCameraMove.copyBind( moveMap, selectFavorite18 );
flyingCameraMove.copyBind( moveMap, selectFavorite19 );
flyingCameraMove.copyBind( moveMap, selectFavorite20 );
flyingCameraMove.copyBind( moveMap, quickPackEnergyPack );
flyingCameraMove.copyBind( moveMap, quickPackRepairPack );
flyingCameraMove.copyBind( moveMap, quickPackShieldPack );
flyingCameraMove.copyBind( moveMap, quickPackCloakPack );
flyingCameraMove.copyBind( moveMap, quickPackJammerPack );
flyingCameraMove.copyBind( moveMap, quickPackAmmoPack );
flyingCameraMove.copyBind( moveMap, quickPackSatchelCharge );
flyingCameraMove.copyBind( moveMap, quickPackDeployableStation );
flyingCameraMove.copyBind( moveMap, quickPackIndoorTurret );
flyingCameraMove.copyBind( moveMap, quickPackOutdoorTurret );
flyingCameraMove.copyBind( moveMap, quickPackMotionSensor );
flyingCameraMove.copyBind( moveMap, quickPackPulse );
//preserve the fire, jump, and jet buttons
flyingCameraMove.copyBind( moveMap, mouseFire );
flyingCameraMove.copyBind( moveMap, mouseJet );
flyingCameraMove.copyBind( moveMap, jump );
flyingCameraMove.copyBind( moveMap, yaw );
flyingCameraMove.copyBind( moveMap, pitch );
flyingCameraMove.bindCmd( keyboard, escape, "", "escapeFromGame();" );
}
createObserverMoveMap();
// function createObserverMoveMap()
// {
// if ( isObject( flyingCameraMove ) )
// flyingCameraMove.delete();
//
// new ActionMap( flyingCameraMove );
// flyingCameraMove.bind( keyboard, s, moveleft );
// flyingCameraMove.bind( keyboard, f, moveright );
// flyingCameraMove.bind( keyboard, e, moveforward );
// flyingCameraMove.bind( keyboard, d, movebackward );
// flyingCameraMove.bind( keyboard, t, moveup );
// flyingCameraMove.bind( keyboard, b, movedown );
//
// // allow hud activation
// flyingCameraMove.copyBind( moveMap, toggleScoreScreen );
// flyingCameraMove.copyBind( moveMap, toggleCommanderMap );
// flyingCameraMove.copyBind( moveMap, TeamMessageHud );
// flyingCameraMove.copyBind( moveMap, toggleMessageHud );
// flyingCameraMove.copyBind( moveMap, toggleInventoryHud );
// flyingCameraMove.copyBind( moveMap, voteYes );
// flyingCameraMove.copyBind( moveMap, voteNo );
// flyingCameraMove.copyBind( moveMap, activateChatMenuHud );
//
// // Bind the command assignment/response keys as well:
// flyingCameraMove.copyBind( moveMap, toggleTaskListDlg );
// flyingCameraMove.copyBind( moveMap, fnAcceptTask );
// flyingCameraMove.copyBind( moveMap, fnDeclineTask );
// flyingCameraMove.copyBind( moveMap, fnTaskCompleted );
// flyingCameraMove.copyBind( moveMap, fnResetTaskList );
//
// // misc
// flyingCameraMove.copyBind( moveMap, voiceCapture );
//
// // inventory binds
// flyingCameraMove.copyBind( moveMap, toggleInventoryHud );
// flyingCameraMove.copyBind( moveMap, selectFavorite1 );
// flyingCameraMove.copyBind( moveMap, selectFavorite2 );
// flyingCameraMove.copyBind( moveMap, selectFavorite3 );
// flyingCameraMove.copyBind( moveMap, selectFavorite4 );
// flyingCameraMove.copyBind( moveMap, selectFavorite5 );
// flyingCameraMove.copyBind( moveMap, selectFavorite6 );
// flyingCameraMove.copyBind( moveMap, selectFavorite7 );
// flyingCameraMove.copyBind( moveMap, selectFavorite8 );
// flyingCameraMove.copyBind( moveMap, selectFavorite9 );
// flyingCameraMove.copyBind( moveMap, selectFavorite10 );
//
// flyingCameraMove.copyBind( moveMap, selectFavorite11 );
// flyingCameraMove.copyBind( moveMap, selectFavorite12 );
// flyingCameraMove.copyBind( moveMap, selectFavorite13 );
// flyingCameraMove.copyBind( moveMap, selectFavorite14 );
// flyingCameraMove.copyBind( moveMap, selectFavorite15 );
// flyingCameraMove.copyBind( moveMap, selectFavorite16 );
// flyingCameraMove.copyBind( moveMap, selectFavorite17 );
// flyingCameraMove.copyBind( moveMap, selectFavorite18 );
// flyingCameraMove.copyBind( moveMap, selectFavorite19 );
// flyingCameraMove.copyBind( moveMap, selectFavorite20 );
//
// flyingCameraMove.copyBind( moveMap, quickPackEnergyPack );
// flyingCameraMove.copyBind( moveMap, quickPackRepairPack );
// flyingCameraMove.copyBind( moveMap, quickPackShieldPack );
// flyingCameraMove.copyBind( moveMap, quickPackCloakPack );
// flyingCameraMove.copyBind( moveMap, quickPackJammerPack );
// flyingCameraMove.copyBind( moveMap, quickPackAmmoPack );
// flyingCameraMove.copyBind( moveMap, quickPackSatchelCharge );
// flyingCameraMove.copyBind( moveMap, quickPackDeployableStation );
// flyingCameraMove.copyBind( moveMap, quickPackIndoorTurret );
// flyingCameraMove.copyBind( moveMap, quickPackOutdoorTurret );
// flyingCameraMove.copyBind( moveMap, quickPackMotionSensor );
// flyingCameraMove.copyBind( moveMap, quickPackPulse );
//
// //preserve the fire, jump, and jet buttons
// flyingCameraMove.copyBind( moveMap, mouseFire );
// flyingCameraMove.copyBind( moveMap, mouseJet );
// flyingCameraMove.copyBind( moveMap, jump );
// flyingCameraMove.copyBind( moveMap, yaw );
// flyingCameraMove.copyBind( moveMap, pitch );
//
// flyingCameraMove.bindCmd( keyboard, escape, "", "escapeFromGame();" );
// }
// createObserverMoveMap();
//--------------------------------------------------------------------------
function GameConnection::sensorPing(%this, %ping)
@ -652,6 +652,7 @@ function MessageHud::open(%this)
MessageHud_Edit.extent = setWord(MessageHud_Edit.extent, 0, %ctrlExtent - %textExtent - (2 * %offset));
%this.setVisible(true);
deactivateKeyboard();
MessageHud_Edit.makeFirstResponder(true);
}
@ -677,6 +678,8 @@ function MessageHud::close(%this)
Canvas.popDialog(%this);
%this.setVisible(false);
if ( $enableDirectInput )
activateKeyboard();
MessageHud_Edit.setValue("");
}
@ -716,7 +719,7 @@ function MainChatHud::onWake( %this )
{
// set the chat hud to the users pref
%this.setChatHudLength( $Pref::ChatHudLength );
}
}
// chat hud sizes
$outerChatLenY[1] = 72;
@ -934,8 +937,12 @@ function updateActionMaps()
moveMap.pop();
if (isObject(passengerKeys))
passengerKeys.pop();
if (isObject(flyingCameraMove))
flyingCameraMove.pop();
if ( isObject( observerBlockMap ) )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//if (isObject(flyingCameraMove))
// flyingCameraMove.pop();
if (isObject(ControlActionMap))
ControlActionMap.pop();
@ -953,7 +960,18 @@ function updateActionMaps()
ControlActionMap.push();
case "Observer":
flyingCameraMove.push();
moveMap.push();
if ( isObject( observerBlockMap ) )
observerBlockMap.delete();
// Create an action map just to block unwanted parts of the move map:
new ActionMap( observerBlockMap );
observerBlockMap.blockBind( moveMap, jump );
observerBlockMap.blockBind( moveMap, mouseJet );
observerBlockMap.blockBind( moveMap, toggleZoom );
observerBlockMap.blockBind( moveMap, setZoomFOV );
observerBlockMap.push();
observerMap.push();
//flyingCameraMove.push();
case "PickTeam":
// no mapping
@ -1237,19 +1255,33 @@ function clearHud(%msgType, %msgString, %tag, %a0)
{
for(%i = 0; %i < $Hud[%tag].numCol; %i++)
{
$Hud[%tag].childGui.remove($Hud[%tag].data[%startingLine, %i]);
$Hud[%tag].data[%startingLine, %i] = "";
}
//don't forget to resize
if (%tag $= 'scoreScreen')
{
%prevExtent = $Hud[%tag].childGui.extent;
$Hud[%tag].childGui.extent = firstWord(%prevExtent) SPC (getWord(%prevExtent, 1) - 24);
//remove and delete the hud line
%obj = $Hud[%tag].data[%startingLine, %i];
$Hud[%tag].childGui.remove(%obj);
$Hud[%tag].data[%startingLine, %i] = "";
%obj.delete();
}
%startingLine++;
}
//don't forget to adjust the size accordingly...
if (%tag $= 'scoreScreen')
{
%height = 0;
%guiCtrl = $Hud[%tag].childGui;
//set the new extent to be the position + extent of the last element...
%height = 0;
if (%guiCtrl.getCount() > 0)
{
%lastCtrl = %guiCtrl.getObject(%guiCtrl.getCount() - 1);
%height = getWord(%lastCtrl.position, 1) + getWord(%lastCtrl.extent, 1);
}
//now reset the extent
%guiCtrl.resize(getWord(%guiCtrl.position, 0), getWord(%guiCtrl.position, 1), getWord(%guiCtrl.extent, 0), %height);
}
}
//------------------------------------------------------------------------------
@ -1264,11 +1296,22 @@ function removeLineHud(%msgType, %msgString, %hudName, %lineNumber, %a0, %a1, %a
$Hud[%tag].data[%lineNum, %i] = "";
}
//don't forget to resize
//don't forget to adjust the size accordingly...
if (%tag $= 'scoreScreen')
{
%prevExtent = $Hud[%tag].childGui.extent;
$Hud[%tag].childGui.extent = firstWord(%prevExtent) SPC (getWord(%prevExtent, 1) - 24);
%height = 0;
%guiCtrl = $Hud[%tag].childGui;
//set the new extent to be the position + extent of the last element...
%height = 0;
if (%guiCtrl.getCount() > 0)
{
%lastCtrl = %guiCtrl.getObject(%guiCtrl.getCount() - 1);
%height = getWord(%lastCtrl.position, 1) + getWord(%lastCtrl.extent, 1);
}
//now reset the extent
%guiCtrl.resize(getWord(%guiCtrl.position, 0), getWord(%guiCtrl.position, 1), getWord(%guiCtrl.extent, 0), %height);
}
}
@ -1287,6 +1330,24 @@ function setLineHud(%msgType, %msgString, %hudName, %lineNumber, %a0, %a1, %a2,
for(%i = 0; %i < $Hud[%tag].numCol; %i++)
$Hud[%tag].data[%lineNum, %i].hudSetValue(detag(%a[%i]),detag(%a4));
//don't forget to adjust the size accordingly...
if (%tag $= 'scoreScreen')
{
%height = 0;
%guiCtrl = $Hud[%tag].childGui;
//set the new extent to be the position + extent of the last element...
%height = 0;
if (%guiCtrl.getCount() > 0)
{
%lastCtrl = %guiCtrl.getObject(%guiCtrl.getCount() - 1);
%height = getWord(%lastCtrl.position, 1) + getWord(%lastCtrl.extent, 1);
}
//now reset the extent
%guiCtrl.resize(getWord(%guiCtrl.position, 0), getWord(%guiCtrl.position, 1), getWord(%guiCtrl.extent, 0), %height);
}
}
//------------------------------------------------------------------------------

View file

@ -333,6 +333,14 @@ function Flag::onAdd(%this, %obj)
// make sure flags play "flapping" ambient thread
Parent::onAdd(%this, %obj);
%obj.playThread($AmbientThread, "ambient");
%blocker = new VehicleBlocker()
{
position = %obj.position;
rotation = %obj.rotation;
dimensions = "2 2 4";
};
MissionCleanup.add(%blocker);
}
function Flag::onCollision(%data,%obj,%col)

View file

@ -17,13 +17,12 @@ function joystickMoveY(%val)
$mvBackwardAction = ( %val > 0.0 );
}
function joystickYaw(%val)
function joyYaw(%val)
{
// Let the mapping system do all the scaling/inversion...
$mvYaw += %val;
$mvYaw += getMouseAdjustAmount( %val );
}
function joystickPitch(%val)
function joyPitch(%val)
{
$mvPitch += %val;
}
$mvPitch += getMouseAdjustAmount( %val );
}

View file

@ -19,6 +19,8 @@ function LoadingGui::onWake(%this)
$HudHandle['shellScreen'] = "";
}
$HudHandle['loadingScreen'] = alxPlay(LoadingScreenSound, 0, 0, 0);
CloseMessagePopup();
}
//------------------------------------------------------------------------------

View file

@ -103,7 +103,7 @@ function setupObjHud(%gameType)
profile = "GuiTextObjGreenCenterProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "100 3";
position = "105 3";
extent = "50 16";
visible = "1";
};
@ -111,7 +111,7 @@ function setupObjHud(%gameType)
profile = "GuiTextObjHudCenterProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "100 19";
position = "105 19";
extent = "50 16";
visible = "1";
};
@ -783,17 +783,6 @@ function cnhAddTeam(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6)
objectiveHud.numHeld[%teamNum].setValue(%held);
}
//addMessageCallback('MsgFlipFlopInit', hudFlipFlopInit);
//function hudFlipFlopInit(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6)
//{
// %flipNum = detag(%a1);
// %flipName = Game.cleanWord(detag(%a2));
// %status = detag(%a3);
// if(%flipName $= "")
// %flipname = "FlipFlop " @ %flipNum;
//}
addMessageCallback('MsgFlipFlopsHeld', hudFlipFlopsHeld);
function hudFlipFlopsHeld(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6)

View file

@ -83,6 +83,12 @@ datablock ItemData(RepairPack)
image = "RepairPackImage";
pickUpName = "a repair pack";
lightOnlyStatic = true;
lightType = "PulsingLight";
lightColor = "1 0 0 1";
lightTime = 1200;
lightRadius = 4;
computeCRC = true;
emap = true;
};

View file

@ -413,16 +413,18 @@ function SatchelChargeThrown::onDestroyed(%this, %object, %lastState)
%dmgRadius = 10;
%dmgMod = 0.3;
%expImpulse = 1000;
%dmgType = $DamageType::Explosion;
}
else
{
messageClient(%object.sourceObject.client, 'msgSatchelChargeDetonate', "\c2Satchel Charge Detonated!");
messageClient(%object.sourceObject.client, 'msgSatchelChargeDetonate', "\c2Satchel charge detonated!");
%dmgRadius = 20;
%dmgMod = 1.0;
%expImpulse = 2500;
%dmgType = $DamageType::SatchelCharge;
}
RadiusExplosion(%object, %object.getPosition(), %dmgRadius, %dmgMod, %expImpulse, %object.sourceObject, $DamageType::SatchelCharge);
RadiusExplosion(%object, %object.getPosition(), %dmgRadius, %dmgMod, %expImpulse, %object.sourceObject, %dmgType);
%object.schedule(500, "delete");
}

View file

@ -1,78 +0,0 @@
//--------------------------------------------------------------------------
// Pathed objects:
//
// accept the following commands:
// goForward()
// goBackward()
// goToWaypoint(waypoint)
// doCollideReverse()
//
// respond to the following queries
// getNumWaypoints()
//
// generate the following events
// onTriggerTick
// onStop
// onCollide (For non-displacing objects only)
//
//--------------------------------------------------------------------------
datablock PathedObjectData(defaultPathFollow)
{
displaceObjects = "false";
reversalPauseMS = 1000;
};
datablock PathedObjectData(displaceOnCollision)
{
displaceObjects = "true";
reversalPauseMS = 1000;
};
function PathedObject::onTrigger(%this, %triggerId, %on)
{
// Default behavior for a door:
// if triggered: go to open state (last waypoint)
// if untriggered: go to closed state (first waypoint)
if (%on $= "true") {
%this.triggerCount++;
} else {
if (%this.triggerCount > 0)
%this.triggerCount--;
}
if (%this.triggerCount > 0)
%this.goForward();
else
%this.goBackward();
}
// Commented out functions are implemented in code for efficiency, placed here for
// parameter description...
//
//function PathedObject::onTriggerTick(%this, %triggerId)
//{
// // Do nothing
//}
//
//function PathedObject::onStop(%this, %position)
//{
// // Do nothing by default.
// // Possible values for %position:
// // Start
// // End
// // # (Waypoint number)
//}
//
//function PathedObject::onCollide(%this, %position)
//{
// %myBlock = %this.getDataBlock();
//
// if (%myBlock.displaceObjects) {
// error(%this @ ": displacing pathed objects should never call onCollide");
// return;
// }
//
// %this.doCollideReverse();
//}\

View file

@ -1,4 +1,4 @@
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
$InvincibleTime = 6;
@ -949,11 +949,11 @@ datablock SplashData(PlayerSplash)
datablock ParticleData(HumanArmorJetParticle)
{
dragCoefficient = 1.5;
dragCoefficient = 0.0;
gravityCoefficient = 0;
inheritedVelFactor = 0.2;
constantAcceleration = 0.0;
lifetimeMS = 150;
lifetimeMS = 50;
lifetimeVarianceMS = 0;
textureName = "particleTest";
colors[0] = "0.32 0.47 0.47 1.0";
@ -1160,7 +1160,10 @@ datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
rechargeRate = 0.256;
jetForce = 26.2 * 90;
underwaterJetForce = 26.2 * 90 * 2.0;
underwaterVertJetFactor = 1.5;
jetEnergyDrain = 0.8;
underwaterJetEnergyDrain = 0.5;
minJetEnergy = 1;
maxJetHorizontalPercentage = 0.8;
@ -1171,6 +1174,11 @@ datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
maxBackwardSpeed = 13;
maxSideSpeed = 13;
maxUnderwaterForwardSpeed = 8.4;
maxUnderwaterBackwardSpeed = 7.8;
maxUnderwaterSideSpeed = 7.8;
jumpForce = 8.3 * 90;
jumpEnergyDrain = 0;
minJumpEnergy = 0;
@ -1217,9 +1225,9 @@ datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
splashEmitter[0] = PlayerFoamDropletsEmitter;
splashEmitter[1] = PlayerFoamEmitter;
splashEmitter[2] = PlayerBubbleEmitter;
mediumSplashSoundVelocity = 25.0;
hardSplashSoundVelocity = 35.0;
exitSplashSoundVelocity = 12.0;
mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 5.0;
// Controls over slope of runnable/jumpable surfaces
runSurfaceAngle = 70;
@ -1238,8 +1246,8 @@ datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
upResistFactor = 0.3;
// heat inc'ers and dec'ers
heatDecayPerSec = 1.0 / 6.0; // takes 6 seconds to clear heat sig.
heatIncreasePerSec = 1.0 / 3.0; // takes 3 seconds of constant jet to get full heat sig.
heatDecayPerSec = 1.0 / 3.0; // takes 3 seconds to clear heat sig.
heatIncreasePerSec = 1.0 / 3.0; // takes 3.0 seconds of constant jet to get full heat sig.
footstepSplashHeight = 0.35;
//Footstep Sounds
@ -1406,7 +1414,10 @@ datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
rechargeRate = 0.256;
jetForce = 24.6 * 130;
underwaterJetForce = 24.6 * 130 * 2.0;
underwaterVertJetFactor = 1.5;
jetEnergyDrain = 1.0;
underwaterJetEnergyDrain = 0.5;
minJetEnergy = 1;
maxJetHorizontalPercentage = 0.8;
@ -1417,12 +1428,16 @@ datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
maxBackwardSpeed = 10;
maxSideSpeed = 10;
maxUnderwaterForwardSpeed = 6.6;
maxUnderwaterBackwardSpeed = 6;
maxUnderwaterSideSpeed = 6;
recoverDelay = 9;
recoverRunForceScale = 1.2;
// heat inc'ers and dec'ers
heatDecayPerSec = 1.0 / 6.0; // takes 6 seconds to clear heat sig.
heatIncreasePerSec = 1.0 / 3.0; // takes 3 seconds of constant jet to get full heat sig.
heatDecayPerSec = 1.0 / 3.0; // takes 3 seconds to clear heat sig.
heatIncreasePerSec = 1.0 / 3.0; // takes 3.0 seconds of constant jet to get full heat sig.
jumpForce = 8.4 * 130;
jumpEnergyDrain = 0;
@ -1484,9 +1499,9 @@ datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
splashEmitter[0] = PlayerFoamDropletsEmitter;
splashEmitter[1] = PlayerFoamEmitter;
splashEmitter[2] = PlayerBubbleEmitter;
mediumSplashSoundVelocity = 25.0;
hardSplashSoundVelocity = 35.0;
exitSplashSoundVelocity = 12.0;
mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 5.0;
footstepSplashHeight = 0.35;
//Footstep Sounds
@ -1652,7 +1667,10 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
rechargeRate = 0.256;
jetForce = 21.4 * 180;
underwaterJetForce = 21.4 * 180 * 2.0;
underwaterVertJetFactor = 1.5;
jetEnergyDrain = 1.1;
underwaterJetEnergyDrain = 0.55;
minJetEnergy = 1;
maxJetHorizontalPercentage = 0.8;
@ -1663,6 +1681,10 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
maxBackwardSpeed = 5;
maxSideSpeed = 5;
maxUnderwaterForwardSpeed = 3.9;
maxUnderwaterBackwardSpeed = 3;
maxUnderwaterSideSpeed = 3;
recoverDelay = 9;
recoverRunForceScale = 1.2;
@ -1672,8 +1694,8 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
jumpDelay = 0;
// heat inc'ers and dec'ers
heatDecayPerSec = 1.0 / 6.0; // takes 6 seconds to clear heat sig.
heatIncreasePerSec = 1.0 / 3.0; // takes 3 seconds of constant jet to get full heat sig.
heatDecayPerSec = 1.0 / 3.0; // takes 3 seconds to clear heat sig.
heatIncreasePerSec = 1.0 / 3.0; // takes 3.0 seconds of constant jet to get full heat sig.
// Controls over slope of runnable/jumpable surfaces
runSurfaceAngle = 70;
@ -1728,9 +1750,9 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
splashEmitter[0] = PlayerFoamDropletsEmitter;
splashEmitter[1] = PlayerFoamEmitter;
splashEmitter[2] = PlayerBubbleEmitter;
mediumSplashSoundVelocity = 25.0;
hardSplashSoundVelocity = 35.0;
exitSplashSoundVelocity = 12.0;
mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 5.0;
footstepSplashHeight = 0.35;
//Footstep Sounds
@ -2107,7 +2129,7 @@ function Armor::onCollision(%this,%obj,%col)
return;
}
}
if(%col.getDataBlock().noEnemyControl && %obj.team != %col.team)
if(%col.noEnemyControl && %obj.team != %col.team)
return;
commandToClient(%obj.client,'SetDefaultVehicleKeys', true);
@ -2455,7 +2477,17 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
else if(isObject(%sourceObject) && %sourceObject.getClassName() $= "Turret")
%sourceTeam = getTargetSensorGroup(%sourceObject.getTarget());
else
%sourceTeam = %sourceObject ? getTargetSensorGroup(%sourceObject.getTarget()) : -1;
{
if (%sourceObject && %sourceObject.getTarget() >= 0 )
{
%sourceTeam = getTargetSensorGroup(%sourceObject.getTarget());
}
else
{
%sourceTeam = -1;
}
}
// if teamdamage is off, and both parties are on the same team
// (but are not the same person), apply no damage
if(!$teamDamage && (%targetClient != %sourceClient) && (%targetTeam == %sourceTeam))

View file

@ -6,6 +6,8 @@ $DeployThread = 3;
$HumSound = 0;
$ActivateSound = 1;
$DeploySound = 2;
$PlaySound = 3;
//******************************************************************************
//* Power -Audio- Data Blocks *
//******************************************************************************
@ -157,6 +159,8 @@ function GameBase::setSelfPowered(%this)
if(!%this.isPowered())
{
%this.selfPower = true;
if(%this.getDatablock().deployedObject)
%this.initDeploy = true;
%this.getDataBlock().gainPower(%this);
}
else

View file

@ -303,7 +303,6 @@ function ShockLanceImage::onFire(%this, %obj, %slot)
$TypeMasks::ForceFieldObjectType |
$TypeMasks::StaticObjectType |
$TypeMasks::MoveableObjectType |
$TypeMasks::PathedObjectType |
$TypeMasks::DamagableItemObjectType;
// did I miss anything? players, vehicles, stations, gens, sensors, turrets
@ -339,18 +338,17 @@ function ShockLanceImage::onFire(%this, %obj, %slot)
if(%hitObj.getDataBlock().getClassName() $= "PlayerData")
{
// Now we see if we hit from behind...
%eyeVector = %hitobj.getEyeVector();
%forwardVec = %hitobj.getForwardVector();
%objDir2D = getWord(%forwardVec, 0) @ " " @ getWord(%forwardVec,1) @ " " @ "0.0";
%objPos = %hitObj.getPosition();
%dif = VectorSub(%objPos, %muzzlePos);
%dif = getWord(%dif, 0) @ " " @ getWord(%dif, 1) @ " 0";
%dif = VectorNormalize(%dif);
%dot = VectorDot(%dif, %objDir2D);
%eyeXForm = %hitobj.getEyeTransform();
%eyePos = getWord(%eyeXForm, 0) @ " " @ getWord(%eyeXForm, 1) @ " " @ getWord(%eyeXForm, 2);
%dif = VectorSub(%eyePos, %muzzlePos);
%dif = getWord(%dif, 0) @ " " @ getWord(%dif, 1) @ " 0";
%dif = VectorNormalize(%dif);
%eyeVector = getWord(%eyeVector, 0) @ " " @ getWord(%eyeVector, 1) @ " 0";
%dot = VectorDot(%dif, %eyeVector);
// 120 Deg angle test...
if (%dot > mCos(1.05)) {
// 1.05 == 60 degrees in radians
if (%dot >= mCos(1.05)) {
// Rear hit
%damageMultiplier = 3.0;
}
@ -405,15 +403,31 @@ function ELFProjectileData::unzapTarget(%data, %projectile, %target, %targeter)
}
}
function ELFProjectileData::targetDestroyedCancel(%data, %projectile, %target, %targeter)
{
cancel(%projectile.ELFrecur);
%target.stopAudio($ELFZapSound);
%targeter.stopAudio($ELFFireSound);
%target.zapSound = false;
%targeter.zappingSound = false;
%projectile.delete();
}
function ELFProjectile::checkELFStatus(%this, %data, %target, %targeter)
{
if(isObject(%target))
{
if(%target.getDamageState() $= "Destroyed")
{
%data.targetDestroyedCancel(%this, %target, %targeter);
return;
}
%enLevel = %target.getEnergyLevel();
if(%enLevel < 1.0)
{
%dataBlock = %target.getDataBlock();
%dataBlock.damageObject(%target, %this.sourceObject, %target.getPosition(), %data.drainHealth, %data.directDamageType);
%dataBlock.damageObject(%target, %this.sourceObject, %target.getPosition(), %data.drainHealth, %data.directDamageType);
}
else

View file

@ -49,7 +49,6 @@ function CreateServer(%mission, %missionType)
exec("scripts/station.cs");
exec("scripts/simGroup.cs");
exec("scripts/trigger.cs");
exec("scripts/pathedObject.cs");
exec("scripts/forceField.cs");
exec("scripts/lightning.cs");
exec("scripts/weather.cs");
@ -78,7 +77,7 @@ function CreateServer(%mission, %missionType)
$HostGamePlayerCount = 0;
if ( $HostGameType !$= "SinglePlayer" )
allowConnections(true);
new SimGroup (ServerGroup);
$ServerGroup = new SimGroup (ServerGroup);
if(%mission $= "")
{
%mission = $HostMissionFile[$HostMission[0,0]];
@ -117,13 +116,48 @@ function CreateServer(%mission, %missionType)
loadMission(%mission, %missionType, true);
}
function findNextCycleMission()
{
%numPlayers = ClientGroup.getCount();
%tempMission = $CurrentMission;
%failsafe = 0;
while (1)
{
%nextMissionIndex = getNextMission(%tempMission, $CurrentMissionType);
%nextPotentialMission = $HostMissionFile[%nextMissionIndex];
//just cycle to the next if we've gone all the way around...
if (%nextPotentialMission $= $CurrentMission || %failsafe >= 1000)
{
%nextMissionIndex = getNextMission($CurrentMission, $CurrentMissionType);
return $HostMissionName[%nextMissionIndex];
}
//get the player count limits for this mission
%limits = $Host::MapPlayerLimits[%nextPotentialMission, $CurrentMissionType];
if (%limits $= "")
return %nextPotentialMission;
else
{
%minPlayers = getWord(%limits, 0);
%maxPlayers = getWord(%limits, 1);
if ((%minPlayers < 0 || %numPlayers >= %minPlayers) && (%maxPlayers < 0 || %numPlayers <= %maxPlayers))
return %nextPotentialMission;
}
//since we didn't return the mission, we must not have an acceptable number of players - check the next
%tempMission = %nextPotentialMission;
%failsafe++;
}
}
function CycleMissions()
{
echo( "cycling mission. " @ ClientGroup.getCount() @ " clients in game." );
%nextMission = getNextMission($CurrentMission, $CurrentMissionType);
messageAll( 'MsgClient', 'Loading %1 (%2)...', %nextMission, $CurrentMissionType );
loadMission(%nextMission, $CurrentMissionType);
%nextMission = findNextCycleMission();
messageAll( 'MsgClient', 'Loading %1 (%2)...', %nextMission, $MissionTypeDisplayName );
loadMission( %nextMission, $CurrentMissionType );
}
function DestroyServer()
@ -131,8 +165,8 @@ function DestroyServer()
$missionRunning = false;
allowConnections(false);
stopHeartbeat();
if(isObject(ServerGroup))
ServerGroup.delete();
if(isObject($ServerGroup))
$ServerGroup.delete();
// delete all the connections:
while(ClientGroup.getCount())
@ -194,6 +228,8 @@ function DisconnectedCleanup()
MusicPlayer.stop();
clearTextureHolds();
purgeResources();
IRCClient::onLeaveGame();
}
function kick(%client, %admin)
@ -310,7 +346,7 @@ function GameConnection::onConnect( %client, %name, %raceGender, %skin, %voice,
// Override the connect name if this server does not allow smurfs:
%realName = getField( %authInfo, 0 );
if ( $Host::NoSmurfs )
if ( $PlayingOnline && $Host::NoSmurfs )
%name = %realName;
if ( strcmp( %name, %realName ) == 0 )
@ -439,7 +475,6 @@ function GameConnection::onConnect( %client, %name, %raceGender, %skin, %voice,
// commandToClient(%client, 'getManagerID', %client);
commandToClient(%client, 'setVoiceCodec', $Audio::voiceCodec);
commandToClient(%client, 'setBeaconNames', "Target Beacon", "Marker Beacon", "Bomb Target");
if ( $CurrentMissionType !$= "SinglePlayer" )
@ -571,6 +606,8 @@ function loadMissionStage1(%missionName, %missionType, %firstMission)
MissionCleanup.delete();
Game.deactivatePackages();
Game.delete();
$ServerGroup.delete();
$ServerGroup = new SimGroup(ServerGroup);
}
$CurrentMission = %missionName;
@ -1109,9 +1146,33 @@ function serverCmdClientTeamChange( %client )
}
}
function serverCanAddBot()
{
//find out how many bots are already playing
%botCount = 0;
%numClients = ClientGroup.getCount();
for (%i = 0; %i < %numClients; %i++)
{
%cl = ClientGroup.getObject(%i);
if (%cl.isAIcontrolled())
%botCount++;
}
//add only if we have less bots than the bot count, and if there would still be room for a
if ($HostGameBotCount > 0 && %botCount < $Host::botCount && %numClients < $Host::maxPlayers - 1)
return true;
else
return false;
}
function serverCmdAddBot( %client )
{
aiConnectMultiple( 1, $Host::MinBotDifficulty, $Host::MaxBotDifficulty, -1 );
//only admins can add bots...
if (%client.isAdmin)
{
if (serverCanAddBot())
aiConnectMultiple( 1, $Host::MinBotDifficulty, $Host::MaxBotDifficulty, -1 );
}
}
function serverCmdClientJoinTeam( %client, %team )
@ -1257,7 +1318,7 @@ function serverCmdGetTeamList( %client, %key )
function serverCmdGetMissionTypes( %client, %key )
{
for ( %type = 0; %type < $HostTypeCount; %type++ )
messageClient( %client, 'MsgVoteItem', "", %key, %type, "", $HostTypeName[%type], true );
messageClient( %client, 'MsgVoteItem', "", %key, %type, "", $HostTypeDisplayName[%type], true );
}
function serverCmdGetMissionList( %client, %key, %type )
@ -1267,16 +1328,17 @@ function serverCmdGetMissionList( %client, %key, %type )
for ( %i = $HostMissionCount[%type] - 1; %i >= 0; %i-- )
{
%idx = $HostMission[%type, %i];
// If we have bots, don't change to a mission that doesn't support bots:
if ( $HostGameBotCount > 0 )
{
if( !$BotEnabled[$HostMission[%type,%i]] )
if( !$BotEnabled[%idx] )
continue;
}
%idx = $HostMission[%type, %i];
messageClient( %client, 'MsgVoteItem', "", %key,
$HostMissionFile[%idx], // actual filename, will be stored in $clVoteCmd
%idx, // mission index, will be stored in $clVoteCmd
"",
$HostMissionName[%idx],
true );

View file

@ -24,8 +24,7 @@ $holoName[6] = "Harbinger";
$Host::AdminList = ""; // all players that will be automatically an admin upon joining server
$Host::SuperAdminList = ""; // all players that will be automatically a super admin upon joining server
$Host::BindAddress = ""; // set to an ip address if the server wants to specify which NIC/IP to use
$Host::RulesSet = "Base";
$Host::BindAddress = ""; // set to an ip address if the server wants to specify which NIC/IP to use
$Host::Port = 28000;
$Host::GameName = "Tribes 2 Server";
$Host::Password = "";
@ -54,4 +53,64 @@ $Host::MaxMessageLen = 120;
$MasterServerAddress = "IP:198.74.40.152:28000";
$Audio::voiceCodec = ".v12"; // .v12 (1.2 kbits/sec), .v24 (2.4 kbits/sec), .v29 (2.9kbits/sec)
// 0: .v12 (1.2 kbits/sec), 1: .v24 (2.4 kbits/sec), 2: .v29 (2.9kbits/sec)
$Audio::maxEncodingLevel = 2;
$Audio::maxVoiceChannels = 2;
$Host::MapPlayerLimits["Abominable", "CnH"] = "-1 32";
$Host::MapPlayerLimits["AgentsOfFortune", "TeamHunters"] = "-1 32";
$Host::MapPlayerLimits["Archipelago", "CTF"] = "16 -1";
$Host::MapPlayerLimits["AshesToAshes", "CnH"] = "16 -1";
$Host::MapPlayerLimits["BeggarsRun", "CTF"] = "-1 16";
$Host::MapPlayerLimits["CasernCavite", "Hunters"] = "-1 32";
$Host::MapPlayerLimits["CasernCavite", "DM"] = "-1 32";
$Host::MapPlayerLimits["CasernCavite", "Bounty"] = "-1 24";
$Host::MapPlayerLimits["Damnation", "CTF"] = "-1 32";
$Host::MapPlayerLimits["DeathBirdsFly", "CTF"] = "32 -1";
$Host::MapPlayerLimits["Desiccator", "CTF"] = "16 -1";
$Host::MapPlayerLimits["DustToDust", "CTF"] = "-1 24";
$Host::MapPlayerLimits["DustToDust", "Hunters"] = "-1 32";
$Host::MapPlayerLimits["DustToDust", "TeamHunters"] = "-1 32";
$Host::MapPlayerLimits["Equinox", "CnH"] = "-1 32";
$Host::MapPlayerLimits["Equinox", "DM"] = "-1 32";
$Host::MapPlayerLimits["Escalade", "Hunters"] = "16 -1";
$Host::MapPlayerLimits["Escalade", "TeamHunters"] = "16 -1";
$Host::MapPlayerLimits["Escalade", "DM"] = "16 -1";
$Host::MapPlayerLimits["Escalade", "Bounty"] = "16 32";
$Host::MapPlayerLimits["Escalade", "Rabbit"] = "16 -1";
$Host::MapPlayerLimits["Firestorm", "CTF"] = "-1 24";
$Host::MapPlayerLimits["Firestorm", "CnH"] = "-1 24";
$Host::MapPlayerLimits["Flashpoint", "CnH"] = "16 -1";
$Host::MapPlayerLimits["Gehenna", "Hunters"] = "16 -1";
$Host::MapPlayerLimits["Gehenna", "TeamHunters"] = "16 -1";
$Host::MapPlayerLimits["Insalubria", "CnH"] = "-1 32";
$Host::MapPlayerLimits["JacobsLadder", "CnH"] = "-1 32";
$Host::MapPlayerLimits["Katabatic", "CTF"] = "-1 24";
$Host::MapPlayerLimits["Masada", "Siege"] = "-1 16";
$Host::MapPlayerLimits["Minotaur", "CTF"] = "-1 24";
$Host::MapPlayerLimits["Myrkwood", "Hunters"] = "-1 16";
$Host::MapPlayerLimits["Myrkwood", "DM"] = "-1 16";
$Host::MapPlayerLimits["Myrkwood", "Rabbit"] = "-1 24";
$Host::MapPlayerLimits["Oasis", "DM"] = "-1 16";
$Host::MapPlayerLimits["Overreach", "CnH"] = "16 -1";
$Host::MapPlayerLimits["Quagmire", "CTF"] = "16 -1";
$Host::MapPlayerLimits["Rasp", "TeamHunters"] = "-1 32";
$Host::MapPlayerLimits["Rasp", "Bounty"] = "-1 24";
$Host::MapPlayerLimits["Recalescence", "CTF"] = "16 -1";
$Host::MapPlayerLimits["Reversion", "CTF"] = "-1 32";
$Host::MapPlayerLimits["Rimehold", "Hunters"] = "16 -1";
$Host::MapPlayerLimits["Rimehold", "Hunters"] = "16 -1";
$Host::MapPlayerLimits["Riverdance", "CTF"] = "8 32";
$Host::MapPlayerLimits["Sanctuary", "CTF"] = "-1 32";
$Host::MapPlayerLimits["Sirocco", "CnH"] = "16 -1";
$Host::MapPlayerLimits["Slapdash", "CTF"] = "16 -1";
$Host::MapPlayerLimits["SunDried", "DM"] = "16 -1";
$Host::MapPlayerLimits["SunDried", "Bounty"] = "16 -1";
$Host::MapPlayerLimits["Talus", "Bounty"] = "-1 24";
$Host::MapPlayerLimits["ThinIce", "CTF"] = "-1 32";
$Host::MapPlayerLimits["Tombstone", "CTF"] = "8 32";
$Host::MapPlayerLimits["UltimaThule", "CTF"] = "-1 -1";
$Host::MapPlayerLimits["Underhill", "DM"] = "16 -1";
$Host::MapPlayerLimits["Underhill", "Bounty"] = "-1 24";
$Host::MapPlayerLimits["Whiteout", "DM"] = "16 -1";
$Host::MapPlayerLimits["Whiteout", "Bounty"] = "16 -1";

View file

@ -11,7 +11,18 @@ function StaticShapeData::onGainPowerEnabled(%data, %obj)
%obj.schedule(750, "playThread", $PowerThread, "Power");
else
%obj.playThread($PowerThread,"Power");
%obj.setRechargeRate(%data.rechargeRate);
// deployable objects get their recharge rate set right away -- don't set it again unless
// the object has just been re-enabled
if(%obj.initDeploy)
%obj.initDeploy = false;
else
{
if(%obj.getRechargeRate() <= 0)
{
%oldERate = %obj.getRechargeRate();
%obj.setRechargeRate(%oldERate + %data.rechargeRate);
}
}
if(%data.humSound !$= "")
%obj.playAudio($HumSound, %data.humSound);
%obj.setPoweredState(true);

View file

@ -332,7 +332,7 @@ function StationInventory::getSound(%data, %forward)
function StationInventory::setPlayersPosition(%data, %obj, %trigger, %colObj)
{
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 17) && (%obj.triggeredBy != %colObj))
if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{
%pos = %trigger.position;
%colObj.setvelocity("0 0 0");
@ -428,7 +428,7 @@ function StationVehicle::getSound(%data, %forward)
function StationVehicle::setPlayersPosition(%data, %obj, %trigger, %colObj)
{
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 17) && (%obj.triggeredBy != %colObj))
if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{
%posXY = getWords(%trigger.getTransform(),0 ,1);
%posZ = getWord(%trigger.getTransform(), 2);
@ -473,30 +473,21 @@ function StationVehiclePad::onAdd(%this, %obj)
%sv.trigger.disableObj = %sv;
//Remove unwanted vehicles
if(%obj.scoutVehicle $= "Removed")
{ }
else
%sv.vehicle[scoutvehicle] = true;
if(%obj.assaultVehicle $= "Removed")
{ }
else
%sv.vehicle[assaultVehicle] = true;
if(%obj.mobileBaseVehicle $= "Removed")
{ }
else
%sv.vehicle[mobileBasevehicle] = true;
if(%obj.scoutFlyer $= "Removed")
{ }
else
%sv.vehicle[scoutFlyer] = true;
if(%obj.bomberFlyer $= "Removed")
{ }
else
%sv.vehicle[bomberFlyer] = true;
if(%obj.hapcFlyer $= "Removed")
{ }
else
%sv.vehicle[hapcFlyer] = true;
if(%obj.scoutVehicle !$= "Removed")
%sv.vehicle[scoutvehicle] = true;
if(%obj.assaultVehicle !$= "Removed")
%sv.vehicle[assaultVehicle] = true;
if(%obj.mobileBaseVehicle !$= "Removed")
{
%sv.vehicle[mobileBasevehicle] = true;
// createTeleporter(%sv.getDataBlock(), %sv);
}
if(%obj.scoutFlyer !$= "Removed")
%sv.vehicle[scoutFlyer] = true;
if(%obj.bomberFlyer !$= "Removed")
%sv.vehicle[bomberFlyer] = true;
if(%obj.hapcFlyer !$= "Removed")
%sv.vehicle[hapcFlyer] = true;
}
function StationVehiclePad::onEndSequence(%data, %obj, %thread)
@ -606,7 +597,7 @@ function MobileInvStation::getSound(%data, %forward)
function MobileInvStation::setPlayersPosition(%data, %obj, %trigger, %colObj)
{
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 17) && (%obj.triggeredBy != %colObj))
if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{
%pos = %trigger.position;
%colObj.setvelocity("0 0 0");
@ -708,8 +699,10 @@ function stationTrigger::onLeaveTrigger(%data, %obj, %colObj)
%obj.station.getDataBlock().endRepairing(%obj.station);
%obj.station.triggeredBy = "";
%obj.station.getDataBlock().stationTriggered(%obj.station, 0);
%colObj.station = "";
if(%colObj.getMountedImage($WeaponSlot) == 0)
if(!%colObj.teleporting)
%colObj.station = "";
if(%colObj.getMountedImage($WeaponSlot) == 0 && !%colObj.teleporting)
{
if(%colObj.inv[%colObj.lastWeapon])
%colObj.use(%colObj.lastWeapon);
@ -732,30 +725,35 @@ function stationTrigger::onLeaveTrigger(%data, %obj, %colObj)
////////////////////////////////////////////////////////////////////////////////
function Station::stationTriggered(%data, %obj, %isTriggered)
{
if(%isTriggered)
{
%obj.setThreadDir($ActivateThread, TRUE);
%obj.playThread($ActivateThread,"activate");
%obj.playAudio($ActivateSound, %data.getSound(true));
%obj.inUse = "Up";
}
else
{
if(%obj.getDataBlock().getName() !$= StationVehicle)
if(%data.teleporter $= "")
{
if(%isTriggered)
{
%obj.stopThread($ActivateThread);
if(%obj.getObjectMount())
%obj.getObjectMount().stopThread($ActivateThread);
%obj.inUse = "Down";
%obj.setThreadDir($ActivateThread, TRUE);
%obj.playThread($ActivateThread,"activate");
%obj.playAudio($ActivateSound, %data.getSound(true));
%obj.inUse = "Up";
}
else
{
%obj.setThreadDir($ActivateThread, FALSE);
%obj.playThread($ActivateThread,"activate");
%obj.playAudio($ActivateSound, %data.getSound(false));
%obj.inUse = "Down";
}
if(%obj.getDataBlock().getName() !$= StationVehicle)
{
%obj.stopThread($ActivateThread);
if(%obj.getObjectMount())
%obj.getObjectMount().stopThread($ActivateThread);
%obj.inUse = "Down";
}
else
{
%obj.setThreadDir($ActivateThread, FALSE);
%obj.playThread($ActivateThread,"activate");
%obj.playAudio($ActivateSound, %data.getSound(false));
%obj.inUse = "Down";
}
}
}
else
%data.tryTeleport(%obj);
}
////-Station-///////////////////////////////////////////////////////////////////
@ -899,7 +897,7 @@ function DeployedStationInventory::stationFinished(%data, %obj)
function DeployedStationInventory::setPlayersPosition(%data, %obj, %trigger, %colObj)
{
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 17) && (%obj.triggeredBy != %colObj))
if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{
// build offset for player position
%yrot = getWords(VectorOrthoBasis( getWords( %obj.getTransform(), 3, 6 ) ) ,3 ,5);
@ -943,3 +941,333 @@ function DeployedStationInventory::getSound(%data, %forward)
else
return false;
}
////////////////////////////////////////////////////////////////////////////////
/// -Mobile Base Teleporter DATA- //////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
datablock AudioProfile(StationTeleportAcitvateSound)
{
filename = "fx/powered/vehicle_screen_on2.wav";
description = AudioClosest3d;
preload = true;
effect = StationVehicleAcitvateEffect;
};
datablock AudioProfile(StationTeleportHumSound)
{
filename = "fx/powered/station_hum.wav";
description = CloseLooping3d;
preload = true;
};
datablock AudioProfile(StationTeleportDeactivateSound)
{
filename = "fx/powered/vehicle_screen_off.wav";
description = AudioClose3d;
preload = true;
effect = StationVehicleDeactivateEffect;
};
datablock AudioProfile(TeleportSound)
{
filename = "fx/powered/vehicle_screen_on2.wav";
description = AudioClosest3d;
preload = true;
effect = StationVehicleAcitvateEffect;
};
datablock AudioProfile(UnTeleportSound)
{
filename = "fx/powered/vehicle_screen_off.wav";
description = AudioClose3d;
preload = true;
effect = StationVehicleDeactivateEffect;
};
datablock StaticShapeData(MPBTeleporter) : StaticShapeDamageProfile
{
className = Station;
catagory = "Stations";
shapeFile = "station_teleport.dts";
maxDamage = 1.20;
destroyedLevel = 1.20;
disabledLevel = 0.84;
explosion = ShapeExplosion;
expDmgRadius = 10.0;
expDamage = 0.4;
expImpulse = 1500.0;
dynamicType = $TypeMasks::StationObjectType;
isShielded = true;
energyPerDamagePoint = 33;
maxEnergy = 250;
rechargeRate = 0.31;
humSound = StationTeleportHumSound;
// don't let these be damaged in Siege missions
noDamageInSiege = true;
cmdCategory = "Support";
cmdIcon = CMDVehicleStationIcon;
cmdMiniIconName = "commander/MiniIcons/com_vehicle_pad_inventory";
targetTypeTag = 'Teleport Station';
teleporter = 1;
};
////////////////////////////////////////////////////////////////////////////////
/// -Mobile Base Teleport- /////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// -Mobile Base- //////////////////////////////////////////////////////////////
//Function -- onAdd (%this, %obj)
// %this = Object data block
// %obj = Object being added
//Decription -- Called when the object is added to the mission
////////////////////////////////////////////////////////////////////////////////
function MPBTeleporter::onAdd(%this, %obj)
{
Parent::onAdd(%this, %obj);
}
function MPBTeleporter::createTrigger(%this, %obj)
{
// createTarget(%obj, 'Inventory Station', "", "", 'Station', 0, 0);
%obj.setRechargeRate(%obj.getDatablock().rechargeRate);
%trigger = new Trigger()
{
dataBlock = stationTrigger;
polyhedron = "-0.75 0.75 0.1 1.5 0.0 0.0 0.0 -1.5 0.0 0.0 0.0 2.3";
};
MissionCleanup.add(%trigger);
%trigger.setTransform(%obj.getTransform());
%trigger.station = %obj;
%trigger.mainObj = %obj.vStation;
%trigger.disableObj = %obj;
%obj.trigger = %trigger;
}
/// -Mobile Base- //////////////////////////////////////////////////////////////
//Function -- stationReady(%data, %obj)
// %data = Station Data Block
// %obj = Station Object
//Decription -- Called when station has been triggered and animation is
// completed
////////////////////////////////////////////////////////////////////////////////
function MPBTeleporter::stationReady(%data, %obj)
{
//Display the Inventory Station GUI here
%obj.notReady = 1;
%obj.inUse = "Down";
%obj.schedule(200,"playThread",$ActivateThread,"activate1");
%obj.getObjectMount().playThread($ActivateThread,"Activate");
%player = %obj.triggeredBy;
%energy = %player.getEnergyLevel();
%player.setCloaked(true);
%player.schedule(900, "setCloaked", false);
if (!%player.client.isAIControlled())
buyFavorites(%player.client);
%player.setEnergyLevel(%energy);
}
/// -Mobile Base- //////////////////////////////////////////////////////////////
//Function -- stationFinished(%data, %obj)
// %data = Station Data Block
// %obj = Station Object
//Decription -- Called when player has left the station
////////////////////////////////////////////////////////////////////////////////
function MPBTeleporter::stationFinished(%data, %obj)
{
//Hide the Inventory Station GUI
}
/// -Mobile Base- //////////////////////////////////////////////////////////////
//Function -- getSound(%data, %forward)
// %data = Station Data Block
// %forward = direction the animation is playing
//Decription -- This sound will be played at the same time as the activate
// animation.
////////////////////////////////////////////////////////////////////////////////
function MPBTeleporter::getSound(%data, %forward)
{
if(%forward)
return "MobileBaseInventoryActivateSound";
else
return false;
}
/// -Mobile Base- //////////////////////////////////////////////////////////////
//Function -- setPlayerPosition(%data, %obj, %trigger, %colObj)
// %data = Station Data Block
// %obj = Station Object
// %trigger = Stations trigger
// %colObj = Object that is at the station
//Decription -- Called when player enters the trigger. Used to set the player
// in the center of the station.
////////////////////////////////////////////////////////////////////////////////
function MPBTeleporter::setPlayersPosition(%data, %obj, %trigger, %colObj)
{
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{
%pos = %trigger.position;
%colObj.setvelocity("0 0 0");
%rot = getWords(%colObj.getTransform(),3, 6);
%colObj.setTransform(getWord(%pos,0) @ " " @ getWord(%pos,1) @ " " @ getWord(%pos,2)+0.8 @ " " @ %rot);//center player on object
%colObj.setvelocity("0 0 0");
return true;
}
return false;
}
function MPBTeleporter::tryTeleport(%data, %obj)
{
if(isObject(%obj.MPB) && %obj.MPB.fullyDeployed && %obj.triggeredBy !$= "")
{
%trans = %obj.MPB.getTransform();
%vX = getWord(%trans, 0);
%vY = getWord(%trans, 1);
%vZ = getWord(%trans, 2);
%rot= getWords(%trans, 3,6);
%obj.triggeredBy.teleporting = 1;
%obj.triggeredBy.startFade( 1000, 0, true );
%obj.triggeredBy.playAudio($PlaySound, TeleportSound);
%obj.triggeredBy.setMoveState(true);
%data.schedule(4500,"teleportingDone", %obj.triggeredBy);
%data.schedule(2000, "teleportout", %obj, %obj.triggeredBy, %vX @ " " @ %vY @ " " @ %vZ + 3 @ " " @ %rot);
}
else if(%obj.triggeredBy !$= "")
MessageClient(%obj.triggeredBy.client, "", 'MPB is not deployed.');
}
function MPBTeleporter::onEndSequence(%data, %obj, %thread)
{
}
function MPBTeleporter::teleportOut(%data, %obj, %player, %trans)
{
if(isObject(%obj.MPB))
{
%index = -1;
for(%x=0; %x < %obj.MPB.spawnPosCount; %x++)
{
%index = mFloor(getRandom() * %obj.MPB.spawnPosCount);
InitContainerRadiusSearch(%MPB.spawnPos[%index], 2, $TypeMasks::MoveableObjectType);
if(ContainerSearchNext() == 0)
break;
else
%index = -1;
}
if(%index >= 0)
%player.setTransform(%obj.MPB.spawnPos[%index] @ " " @ getWords(%obj.MPB.getTransform(), 3, 6));
else
{
messageClient(%player.client, "", 'No Valid teleporting positions.');
%player.teleporting = 0;
}
}
else
{
messageClient(%player.client, "", 'No Valid teleporting positions because MPB was destroyed');
%player.teleporting = 0;
}
%data.schedule(1000, "teleportIn", %player);
}
function MPBTeleporter::teleportIn(%data, %player, %trans)
{
%player.startFade(1000, 0, false );
%player.playAudio($PlaySound, UnTeleportSound);
}
function MPBTeleporter::teleportingDone(%data, %player)
{
%player.setMoveState(false);
%player.teleporting = 0;
%player.station = "";
if(%player.getMountedImage($WeaponSlot) == 0)
{
if(%player.inv[%player.lastWeapon])
%player.use(%player.lastWeapon);
if(%player.getMountedImage($WeaponSlot) == 0)
%player.selectWeaponSlot( 0 );
}
}
for(%y = -1; %y < 1; %y += 0.25)
{
%xCount=0;
for(%x = -1; %x < 1; %x += 0.25)
{
$MPBSpawnPos[(%yCount * 8) + %xCount] = %x @ " " @ %y;
%xCount++;
}
%yCount++;
}
function checkSpawnPos(%MPB, %radius)
{
%count = -1;
for(%x = 0; %x < 64; %x++)
{
%pPos = getWords(%MPB.getTransform(), 0, 2);
%pPosX = getWord(%pPos, 0);
%pPosY = getWord(%pPos, 1);
%pPosZ = getWord(%pPos, 2);
%posX = %pPosX + ( getWord($MPBSpawnPos[%x],0) * %radius);
%posY = %pPosY + (getWord($MPBSpawnPos[%x],1) * %radius);
%terrHeight = getTerrainHeight(%posX @ " " @ %posY);
if(abs(%terrHeight - %pPosZ) < %radius )
{
%mask = $TypeMasks::VehicleObjectType | $TypeMasks::MoveableObjectType |
$TypeMasks::StaticShapeObjectType | $TypeMasks::StaticTSObjectType |
$TypeMasks::ForceFieldObjectType | $TypeMasks::ItemObjectType |
$TypeMasks::PlayerObjectType | $TypeMasks::TurretObjectType |
$TypeMasks::InteriorObjectType;
InitContainerRadiusSearch(%posX @ " " @ %posY @ " " @ %terrHeight, 2, %mask);
if(ContainerSearchNext() == 0)
%MPB.spawnPos[%count++] = %posX @ " " @ %posY @ " " @ %terrHeight;
}
}
%MPB.spawnPosCount = %count;
}
function createTeleporter(%data, %obj)
{
%Teleporter = new StaticShape() {
scale = "1 1 1";
dataBlock = "MPBTeleporter";
lockCount = "0";
homingCount = "0";
team = %obj.team;
};
%obj.teleporter = %Teleporter;
%Teleporter.vStation = %obj.pad;
MissionCleanup.add(%Teleporter);
%trans = %obj.getTransform();
%vSPos = getWords(%trans,0,2);
%vRot = getWords(%trans,3,5);
%vAngle = getWord(%trans,6);
%matrix = VectorOrthoBasis(%vRot @ " " @ %vAngle + 0.36);
%yRot = getWords(%matrix, 3, 5);
%pos = vectorAdd(%vSPos, vectorScale(%yRot, -31.5));
%Teleporter.setTransform(%pos @ " " @ %vRot @ " " @ %vAngle);
%Teleporter.getDataBlock().createTrigger(%Teleporter);
}

View file

@ -164,7 +164,7 @@ datablock TurretImageData(AABarrelLarge)
seekRadius = 200;
maxSeekAngle = 6;
seekTime = 1.0;
minSeekHeat = 0.5;
minSeekHeat = 0.7;
useTargetAudio = false;
// Turret parameters

View file

@ -65,6 +65,8 @@ datablock TurretData(TurretDeployedFloorIndoor) : TurretDamageProfile
heatSignature = 0.0;
explosion = SmallTurretExplosion;
deployedObject = true;
thetaMin = 5;
thetaMax = 145;
thetaNull = 90;

View file

@ -60,15 +60,15 @@ datablock SeekerProjectileData(TurretMissile)
puffEmitter = MissilePuffEmitter;
lifetimeMS = 20000;
muzzleVelocity = 65.0;
turningSpeed = 40.0;
muzzleVelocity = 80.0;
turningSpeed = 90.0;
proximityRadius = 4;
terrainAvoidanceSpeed = 140;
terrainScanAhead = 30;
terrainHeightFail = 18;
terrainAvoidanceRadius = 60;
terrainAvoidanceSpeed = 180;
terrainScanAhead = 25;
terrainHeightFail = 12;
terrainAvoidanceRadius = 100;
useFlechette = true;
flechetteDelayMs = 550;
@ -93,14 +93,14 @@ datablock TurretImageData(MissileBarrelLarge)
isSeeker = true;
seekRadius = 300;
maxSeekAngle = 30;
seekTime = 1.5;
seekTime = 1.0;
minSeekHeat = 0.7;
emap = true;
minTargetingDistance = 40;
// Turret parameters
activationMS = 3000;
deactivateDelayMS = 2500;
activationMS = 500;
deactivateDelayMS = 1000;
thinkTimeMS = 200;
degPerSecTheta = 580;
degPerSecPhi = 1080;

View file

@ -112,7 +112,7 @@ datablock TurretData(TurretDeployedOutdoor) : TurretDamageProfile
className = DeployedTurret;
shapeFile = "turret_outdoor_deploy.dts";
rechargeRate = 0.05;
rechargeRate = 0.15;
mass = 5.0;
maxDamage = 0.80;
@ -120,6 +120,8 @@ datablock TurretData(TurretDeployedOutdoor) : TurretDamageProfile
disabledLevel = 0.35;
repairRate = 0;
explosion = HandGrenadeExplosion;
deployedObject = true;
thetaMin = 0;
thetaMax = 145;
@ -130,7 +132,6 @@ datablock TurretData(TurretDeployedOutdoor) : TurretDamageProfile
maxEnergy = 60;
renderWhenDestroyed = false;
barrel = DeployableOutdoorBarrel;
rechargeRate = 0.25;
heatSignature = 0;
canControl = true;

View file

@ -121,6 +121,12 @@ function createVehicle(%client, %station, %blockName, %team , %pos, %rot, %angle
%obj = %blockName.create(%team);
if(%obj)
{
if ( %blockName $= "MobileBaseVehicle" )
{
%station.station.teleporter.MPB = %obj;
%obj.teleporter = %station.station.teleporter;
}
%station.ready = false;
%obj.team = %team;
%obj.useCreateHeight(true);

View file

@ -200,6 +200,7 @@ function VehicleData::onLeaveLiquid(%data, %obj, %type)
function VehicleData::onDestroyed(%data, %obj, %prevState)
{
radiusVehicleExplosion(%data, %obj);
if(%obj.turretObject)
if(%obj.turretObject.getControllingClient())
%obj.turretObject.getDataBlock().playerDismount(%obj.turretObject);
@ -219,6 +220,79 @@ function VehicleData::onDestroyed(%data, %obj, %prevState)
%obj.schedule(300, "delete");
}
function radiusVehicleExplosion(%data, %vehicle)
{
// this is a modified version of RadiusExplosion() from projectiles.cs
%position = %vehicle.getPosition();
InitContainerRadiusSearch(%position, %data.explosionRadius, $TypeMasks::PlayerObjectType |
$TypeMasks::VehicleObjectType |
$TypeMasks::MoveableObjectType |
$TypeMasks::StaticShapeObjectType |
$TypeMasks::ForceFieldObjectType |
$TypeMasks::TurretObjectType |
$TypeMasks::ItemObjectType);
%numTargets = 0;
while ((%targetObject = containerSearchNext()) != 0)
{
if(%targetObject == %vehicle)
continue;
%dist = containerSearchCurrRadDamageDist();
if (%dist > %data.explosionRadius)
continue;
if (%targetObject.isMounted())
{
%mount = %targetObject.getObjectMount();
if(%mount == %vehicle)
continue;
%found = -1;
for (%i = 0; %i < %mount.getDataBlock().numMountPoints; %i++)
{
if (%mount.getMountNodeObject(%i) == %targetObject)
{
%found = %i;
break;
}
}
if (%found != -1)
{
if (%mount.getDataBlock().isProtectedMountPoint[%found] && (%mount != %vehicle))
continue;
}
}
%targets[%numTargets] = %targetObject;
%targetDists[%numTargets] = %dist;
%numTargets++;
}
for (%i = 0; %i < %numTargets; %i++)
{
%targetObject = %targets[%i];
%dist = %targetDists[%i];
%coverage = calcExplosionCoverage(%position, %targetObject,
($TypeMasks::InteriorObjectType |
$TypeMasks::TerrainObjectType |
$TypeMasks::ForceFieldObjectType));
if (%coverage == 0)
continue;
%amount = (1.0 - (%dist / %data.explosionRadius)) * %coverage * %data.explosionDamage;
%targetData = %targetObject.getDataBlock();
%momVec = "0 0 1";
if(%amount > 0)
%targetData.damageObject(%targetObject, %sourceObject, %position, %amount, $DamageType::Explosion, %momVec);
}
}
function VehicleData::deleteAllMounted()
{
@ -396,6 +470,10 @@ function MobileBaseVehicle::deleteAllMounted(%data, %obj)
}
if(isObject(%obj.shield))
%obj.shield.delete();
%obj.teleporter.setThreadDir($ActivateThread, FALSE);
%obj.teleporter.playThread($ActivateThread,"activate");
%obj.teleporter.playAudio($ActivateSound, StationTeleportDeacitvateSound);
}
//**************************************************************
@ -576,6 +654,13 @@ function MobileBaseVehicle::playerMounted(%data, %obj, %player, %node)
%obj.shield.open();
%obj.shield.schedule(1000,"delete");
%obj.deploySchedule = "";
%obj.teleporter.setThreadDir($ActivateThread, FALSE);
%obj.teleporter.playThread($ActivateThread,"activate");
%obj.teleporter.playAudio($ActivateSound, StationTeleportDeacitvateSound);
%obj.fullyDeployed = 0;
%obj.noEnemyControl = 0;
}
%obj.deployed = 0;
}
@ -634,7 +719,7 @@ function MobileBaseVehicle::vehicleDeploy(%data, %obj, %player)
%obj.station.setSelfPowered();
%obj.station.playThread($PowerThread,"Power");
%obj.station.playAudio($HumSound,StationHumSound);
%obj.station.vehicle = %obj;
%obj.turret = new turret() {
scale = "1 1 1";
dataBlock = "MobileTurretBase";
@ -642,10 +727,13 @@ function MobileBaseVehicle::vehicleDeploy(%data, %obj, %player)
homingCount = "0";
team = %obj.team;
};
%obj.turret.setDamageLevel(%obj.getDamageLevel());
%obj.mountObject(%obj.turret, 1);
%obj.turret.setSelfPowered();
%obj.turret.playThread($PowerThread,"Power");
%obj.turret.mountImage(MissileBarrelLarge, 0 ,false);
checkSpawnPos(%obj, 20);
}
}
else
@ -725,6 +813,8 @@ function MobileBaseVehicle::onEndSequence(%data, %obj, %thread)
%obj.station.goingOut = true;
%obj.shield.setTransform(%obj.getSlotTransform(3));
%obj.shield.close();
%obj.isDeployed = true;
%obj.noEnemyControl = 1;
}
Parent::onEndSequence(%data, %obj, %thread);
@ -735,7 +825,13 @@ function MobileInvStation::onEndSequence(%data, %obj, %thread)
if(!%obj.goingOut)
%obj.startFade(0,0,true);
else
{
%obj.notDeployed = 0;
%obj.vehicle.fullyDeployed = 1;
%obj.vehicle.teleporter.setThreadDir($ActivateThread, TRUE);
%obj.vehicle.teleporter.playThread($ActivateThread,"activate");
%obj.vehicle.teleporter.playAudio($ActivateSound, StationTeleportAcitvateSound);
}
Parent::onEndSequence(%data, %obj, %thread);
}
@ -800,10 +896,21 @@ function MobileBaseVehicle::checkDeploy(%data, %obj)
function MobileBaseVehicle::checkTurretDistance(%data, %obj)
{
%pos = getWords(%obj.getTransform(), 0, 2);
InitContainerRadiusSearch(%pos, 150, $TypeMasks::TurretObjectType);
InitContainerRadiusSearch(%pos, 100, $TypeMasks::TurretObjectType | $TypeMasks::InteriorObjectType);
while ((%objFound = ContainerSearchNext()) != 0)
if(%objFound.getDataBlock().ClassName $= "TurretBase")
return "Turret Base in area. Unable to deploy.";
{
if(%objFound.getType() & $TypeMasks::TurretObjectType)
{
if(%objFound.getDataBlock().ClassName $= "TurretBase")
return "Turret Base is in the area. Unable to deploy.";
}
else
{
%subStr = getSubStr(%objFound.interiorFile, 1, 4);
if(%subStr !$= "rock" && %subStr !$= "spir" && %subStr !$= "misc")
return "Building is in the area. Unable to deploy.";
}
}
return "";
}
@ -979,7 +1086,7 @@ function VehicleData::damageObject(%data, %targetObject, %sourceObject, %positio
function VehicleData::onImpact(%data, %vehicleObject, %collidedObject, %vec, %vecLen)
{
if(%vecLen > %data.minImpactSpeed)
%data.damageObject(%vehicleObject, 0, VectorAdd(%vec, %vehicleObject.getPosition),
%data.damageObject(%vehicleObject, 0, VectorAdd(%vec, %vehicleObject.getPosition()),
%vecLen * %data.speedDamageScale, $DamageType::Ground);
// associated "crash" sounds

View file

@ -101,7 +101,7 @@ datablock AudioProfile(BomberBombIdleSound)
// VEHICLE CHARACTERISTICS
//**************************************************************
datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
datablock FlyingVehicleData(BomberFlyer) : BomberDamageProfile
{
spawnOffset = "0 0 2";
@ -129,6 +129,8 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
cameraOffset = 5;
cameraLag = 1.0;
explosion = LargeAirVehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
maxDamage = 2.80; // Total health
destroyedLevel = 2.80; // Damage textures show up at this health level
@ -140,12 +142,6 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
rotationalDrag = 1800; // Angular Drag (dampens the drift after you stop moving the mouse...also tumble drag)
rechargeRate = 0.8;
// Turbo Jet
jetForce = 5000; // Afterburner thrust (this is in addition to normal thrust)
minJetEnergy = 40.0; // Afterburner can't be used if below this threshhold.
jetEnergyDrain = 2.0; // Energy use of the afterburners (low number is less drain...can be fractional)
vertThrustMultiple = 2.0;
// Auto stabilize speed
maxAutoSpeed = 15; // Autostabilizer kicks in when less than this speed. (meters/second)
autoAngularForce = 1500; // Angular stabilizer force (this force levels you out when autostabilizer kicks in)
@ -163,6 +159,12 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
hoverHeight = 5; // Height off the ground at rest
createHoverHeight = 3; // Height off the ground when created
// Turbo Jet
jetForce = 3000; // Afterburner thrust (this is in addition to normal thrust)
minJetEnergy = 40.0; // Afterburner can't be used if below this threshhold.
jetEnergyDrain = 3.0; // Energy use of the afterburners (low number is less drain...can be fractional)
vertThrustMultiple = 2.0;
dustEmitter = LargeVehicleLiftoffDustEmitter;
triggerDustHeight = 4.0;
dustHeight = 2.0;
@ -181,13 +183,16 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
bodyFriction = 0; // Don't mess with this.
bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1)
minRollSpeed = 0; // Don't mess with this.
minImpactSpeed = 8; // If hit ground at speed above this then it's an impact. Meters/second
softImpactSpeed = 10; // Sound hooks. This is the soft hit.
softImpactSpeed = 20; // Sound hooks. This is the soft hit.
hardImpactSpeed = 25; // Sound hooks. This is the hard hit.
speedDamageScale = 0.035;
collDamageThresholdVel = 20.0;
collDamageMultiplier = 0.025;
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 20; // If hit ground at speed above this then it's an impact. Meters/second
speedDamageScale = 0.150;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 25;
collDamageMultiplier = 0.030;
//
minTrailSpeed = 15; // The speed your contrail shows up at.
@ -204,9 +209,9 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
//
softSplashSoundVelocity = 15.0;
mediumSplashSoundVelocity = 30.0;
hardSplashSoundVelocity = 60.0;
exitSplashSoundVelocity = 20.0;
mediumSplashSoundVelocity = 20.0;
hardSplashSoundVelocity = 30.0;
exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterHardSound;
impactWaterEasy = VehicleImpactWaterSoftSound;

View file

@ -21,7 +21,7 @@ datablock AudioProfile(HAPCFlyerThrustSound)
// VEHICLE CHARACTERISTICS
//**************************************************************
datablock FlyingVehicleData(HAPCFlyer) : AirVehicleDamageProfile
datablock FlyingVehicleData(HAPCFlyer) : HavocDamageProfile
{
spawnOffset = "0 0 6";
@ -51,6 +51,8 @@ datablock FlyingVehicleData(HAPCFlyer) : AirVehicleDamageProfile
cameraOffset = 2;
cameraLag = 8.5;
explosion = LargeAirVehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
maxDamage = 3.50;
destroyedLevel = 3.50;
@ -82,7 +84,7 @@ datablock FlyingVehicleData(HAPCFlyer) : AirVehicleDamageProfile
// Turbo Jet
jetForce = 5000;
minJetEnergy = 55;
jetEnergyDrain = 2.8;
jetEnergyDrain = 3.6;
vertThrustMultiple = 2.0;
@ -104,13 +106,16 @@ datablock FlyingVehicleData(HAPCFlyer) : AirVehicleDamageProfile
bodyFriction = 0;
bodyRestitution = 0.3;
minRollSpeed = 0;
minImpactSpeed = 8; // If hit ground at speed above this then it's an impact. Meters/second
softImpactSpeed = 10; // Sound hooks. This is the soft hit.
hardImpactSpeed = 25; // Sound hooks. This is the hard hit.
speedDamageScale = 0.03;
softImpactSpeed = 12; // Sound hooks. This is the soft hit.
hardImpactSpeed = 15; // Sound hooks. This is the hard hit.
collDamageThresholdVel = 20.0;
collDamageMultiplier = 0.03;
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 12; // If hit ground at speed above this then it's an impact. Meters/second
speedDamageScale = 0.060;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 12;
collDamageMultiplier = 0.080;
//
minTrailSpeed = 15;
@ -126,10 +131,10 @@ datablock FlyingVehicleData(HAPCFlyer) : AirVehicleDamageProfile
//wheelImpactSound = WheelImpactSound;
//
softSplashSoundVelocity = 15.0;
mediumSplashSoundVelocity = 30.0;
hardSplashSoundVelocity = 60.0;
exitSplashSoundVelocity = 20.0;
softSplashSoundVelocity = 5.0;
mediumSplashSoundVelocity = 8.0;
hardSplashSoundVelocity = 12.0;
exitSplashSoundVelocity = 8.0;
exitingWater = VehicleExitWaterHardSound;
impactWaterEasy = VehicleImpactWaterSoftSound;

View file

@ -72,7 +72,7 @@ datablock SensorData(MPBDeployedSensor) : VehiclePulseSensor
jamRadius = 50;
};
datablock WheeledVehicleData(MobileBaseVehicle) : GroundVehicleDamageProfile
datablock WheeledVehicleData(MobileBaseVehicle) : MPBDamageProfile
{
spawnOffset = "0 0 1.0";
@ -98,9 +98,9 @@ datablock WheeledVehicleData(MobileBaseVehicle) : GroundVehicleDamageProfile
cameraOffset = 6;
cameraLag = 1.5;
explosion = LargeGroundVehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
noEnemyControl = 1;
maxSteeringAngle = 0.3; // 20 deg.
// Used to test if the station can deploy
@ -111,9 +111,6 @@ datablock WheeledVehicleData(MobileBaseVehicle) : GroundVehicleDamageProfile
stationPoints[5] = "2.3 -7.38703 -0.65";
stationPoints[6] = "2.3 -11.8 -0.65";
collDamageThresholdVel = 10.0;
collDamageMultiplier = 0.025;
// Rigid Body
mass = 2000;
bodyFriction = 0.8;
@ -123,10 +120,16 @@ datablock WheeledVehicleData(MobileBaseVehicle) : GroundVehicleDamageProfile
gyroDamping = 0.3;
stabilizerForce = 10;
minDrag = 10;
minImpactSpeed = 5;
softImpactSpeed = 13; // Play SoftImpact Sound
hardImpactSpeed = 20; // Play HardImpact Sound
speedDamageScale = 0.06;
softImpactSpeed = 20; // Play SoftImpact Sound
hardImpactSpeed = 25; // Play HardImpact Sound
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 25;
speedDamageScale = 0.220;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 28;
collDamageMultiplier = 0.040;
// Engine
engineTorque = 4.5 * 745;
@ -171,10 +174,10 @@ datablock WheeledVehicleData(MobileBaseVehicle) : GroundVehicleDamageProfile
wheelImpactSound = WheelImpactSound;
//
softSplashSoundVelocity = 15.0;
mediumSplashSoundVelocity = 30.0;
hardSplashSoundVelocity = 60.0;
exitSplashSoundVelocity = 20.0;
softSplashSoundVelocity = 5.0;
mediumSplashSoundVelocity = 8.0;
hardSplashSoundVelocity = 12.0;
exitSplashSoundVelocity = 8.0;
exitingWater = VehicleExitWaterSoftSound;
impactWaterEasy = VehicleImpactWaterSoftSound;

View file

@ -44,7 +44,7 @@ datablock AudioProfile(ShrikeBlasterDryFireSound)
// VEHICLE CHARACTERISTICS
//**************************************************************
datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
datablock FlyingVehicleData(ScoutFlyer) : ShrikeDamageProfile
{
spawnOffset = "0 0 2";
@ -66,6 +66,8 @@ datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
cameraOffset = 2.5;
cameraLag = 0.9;
explosion = VehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
maxDamage = 1.40;
destroyedLevel = 1.40;
@ -77,12 +79,6 @@ datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
rotationalDrag = 900; // Anguler Drag (dampens the drift after you stop moving the mouse...also tumble drag)
rechargeRate = 0.8;
// Turbo Jet
jetForce = 2000; // Afterburner thrust (this is in addition to normal thrust)
minJetEnergy = 28; // Afterburner can't be used if below this threshhold.
vertThrustMultiple = 2.0;
jetEnergyDrain = 2.8; // Energy use of the afterburners (low number is less drain...can be fractional) // Auto stabilize speed
maxAutoSpeed = 15; // Autostabilizer kicks in when less than this speed. (meters/second)
autoAngularForce = 400; // Angular stabilizer force (this force levels you out when autostabilizer kicks in)
autoLinearForce = 300; // Linear stabilzer force (this slows you down when autostabilizer kicks in)
@ -99,17 +95,26 @@ datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
hoverHeight = 5; // Height off the ground at rest
createHoverHeight = 3; // Height off the ground when created
// Turbo Jet
jetForce = 2000; // Afterburner thrust (this is in addition to normal thrust)
minJetEnergy = 28; // Afterburner can't be used if below this threshhold.
jetEnergyDrain = 2.8; // Energy use of the afterburners (low number is less drain...can be fractional) // Auto stabilize speed
vertThrustMultiple = 2.0;
// Rigid body
mass = 150; // Mass of the vehicle
bodyFriction = 0; // Don't mess with this.
bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1)
minRollSpeed = 0; // Don't mess with this.
minImpactSpeed = 8; // If hit ground at speed above this then it's an impact. Meters/second
softImpactSpeed = 10; // Sound hooks. This is the soft hit.
softImpactSpeed = 14; // Sound hooks. This is the soft hit.
hardImpactSpeed = 25; // Sound hooks. This is the hard hit.
speedDamageScale = 0.04;
collDamageThresholdVel = 20.0;
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 23; // If hit ground at speed above this then it's an impact. Meters/second
speedDamageScale = 0.06;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 23.0;
collDamageMultiplier = 0.02;
//
@ -126,10 +131,10 @@ datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
//wheelImpactSound = WheelImpactSound;
//
softSplashSoundVelocity = 15.0;
mediumSplashSoundVelocity = 30.0;
hardSplashSoundVelocity = 60.0;
exitSplashSoundVelocity = 20.0;
softSplashSoundVelocity = 10.0;
mediumSplashSoundVelocity = 15.0;
hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterMediumSound;
impactWaterEasy = VehicleImpactWaterSoftSound;

View file

@ -100,7 +100,7 @@ datablock AudioProfile(AssaultMortarIdleSound)
// VEHICLE CHARACTERISTICS
//**************************************************************
datablock HoverVehicleData(AssaultVehicle) : GroundVehicleDamageProfile
datablock HoverVehicleData(AssaultVehicle) : TankDamageProfile
{
spawnOffset = "0 0 4";
@ -129,15 +129,14 @@ datablock HoverVehicleData(AssaultVehicle) : GroundVehicleDamageProfile
cameraOffset = 3;
cameraLag = 1.5;
explosion = LargeGroundVehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
maxSteeringAngle = 0.5; // 20 deg.
maxDamage = 3.15;
destroyedLevel = 3.15;
collDamageThresholdVel = 20.0;
collDamageMultiplier = 0.03;
isShielded = true;
rechargeRate = 1.0;
energyPerDamagePoint = 135;
@ -154,10 +153,16 @@ datablock HoverVehicleData(AssaultVehicle) : GroundVehicleDamageProfile
gyroDamping = 0.3;
stabilizerForce = 20;
minDrag = 10;
minImpactSpeed = 5;
softImpactSpeed = 5; // Play SoftImpact Sound
hardImpactSpeed = 15; // Play HardImpact Sound
speedDamageScale = 0.06;
softImpactSpeed = 15; // Play SoftImpact Sound
hardImpactSpeed = 18; // Play HardImpact Sound
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 17;
speedDamageScale = 0.060;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 17;
collDamageMultiplier = 0.070;
dragForce = 40 / 20;
vertFactor = 0.0;
@ -201,10 +206,10 @@ datablock HoverVehicleData(AssaultVehicle) : GroundVehicleDamageProfile
forwardJetEmitter = TankJetEmitter;
//
softSplashSoundVelocity = 15.0;
mediumSplashSoundVelocity = 30.0;
hardSplashSoundVelocity = 60.0;
exitSplashSoundVelocity = 20.0;
softSplashSoundVelocity = 5.0;
mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 15.0;
exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterMediumSound;
impactWaterEasy = VehicleImpactWaterSoftSound;
@ -346,7 +351,7 @@ datablock TurretImageData(AssaultPlasmaTurretBarrel)
usesEnergy = true;
useMountEnergy = true;
fireEnergy = 3.75;
minEnergy = 3.75;
minEnergy = 20.0;
// Turret parameters
activationMS = 4000;
@ -398,9 +403,10 @@ datablock TurretImageData(AssaultPlasmaTurretBarrel)
stateName[5] = "Deactivate";
stateSequence[5] = "Activate";
stateDirection[5] = false;
stateTimeoutValue[5] = 1;
stateTransitionOnLoaded[5] = "ActivateReady";
stateTransitionOnTimeout[5] = "Dead";
stateTimeoutValue[5] = 30;
// stateTransitionOnLoaded[5] = "ActivateReady";
// stateTransitionOnTimeout[5] = "Dead";
stateTransitionOnTimeout[5] = "ActivateReady";
stateName[6] = "Dead";
stateTransitionOnLoaded[6] = "ActivateReady";

View file

@ -31,7 +31,7 @@ datablock AudioProfile(ScoutThrustSound)
// VEHICLE CHARACTERISTICS
//**************************************************************
datablock HoverVehicleData(ScoutVehicle) : GravCycleDamageProfile
datablock HoverVehicleData(ScoutVehicle) : WildcatDamageProfile
{
spawnOffset = "0 0 1";
@ -54,6 +54,8 @@ datablock HoverVehicleData(ScoutVehicle) : GravCycleDamageProfile
numMountPoints = 1;
isProtectedMountPoint[0] = true;
explosion = VehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
lightOnly = 1;
@ -67,17 +69,20 @@ datablock HoverVehicleData(ScoutVehicle) : GravCycleDamageProfile
minJetEnergy = 15;
jetEnergyDrain = 1.3;
collDamageThresholdVel = 20.0;
collDamageMultiplier = 0.01;
// Rigid Body
mass = 400;
bodyFriction = 0.1;
bodyRestitution = 0.5;
minImpactSpeed = 10;
softImpactSpeed = 10; // Play SoftImpact Sound
hardImpactSpeed = 25; // Play HardImpact Sound
speedDamageScale = 0.008;
softImpactSpeed = 20; // Play SoftImpact Sound
hardImpactSpeed = 28; // Play HardImpact Sound
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 29;
speedDamageScale = 0.010;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 23;
collDamageMultiplier = 0.040;
dragForce = 25 / 45.0;
vertFactor = 0.0;
@ -119,10 +124,10 @@ datablock HoverVehicleData(ScoutVehicle) : GravCycleDamageProfile
wheelImpactSound = WheelImpactSound;
//
softSplashSoundVelocity = 20.0;
mediumSplashSoundVelocity = 50.0;
hardSplashSoundVelocity = 100.0;
exitSplashSoundVelocity = 20.0;
softSplashSoundVelocity = 10.0;
mediumSplashSoundVelocity = 20.0;
hardSplashSoundVelocity = 30.0;
exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterSoftSound;
impactWaterEasy = VehicleImpactWaterSoftSound;

View file

@ -23,7 +23,7 @@ startChatMenu( "G Global" );
addChat( "S Great shot!", 'ChatGreatShot' );
endChatMenu();
startChatMenu( "R Respond" );
addChat( "A Any time", 'ChatAnyTime' );
addChat( "A Anytime", 'ChatAnyTime' );
addChat( "D Don't know", 'ChatDontKnow' );
addChat( "T Thanks", 'ChatThanks' );
addChat( "W Wait", 'ChatWait' );
@ -193,10 +193,10 @@ startChatMenu( "W Warning" );
addChat( "W Watch your shooting", 'ChatWarnShoot' );
endChatMenu();
startChatMenu( "V Very quick" );
startChatMenu( "V Very Quick" );
addChat( "Y Yes", 'ChatTeamYes' );
addChat( "N No", 'ChatTeamNo' );
addChat( "A Any time", 'ChatWelcome' );
addChat( "A Anytime", 'ChatWelcome' );
addChat( "B Base secure?", 'ChatIsBaseSecure' );
addChat( "C Cease fire", 'ChatCeaseFire' );
addChat( "D Don't know", 'ChatDunno' );

View file

@ -218,12 +218,74 @@ function serverCmdListenToNone(%client)
}
//------------------------------------------------------------------------------
function serverCmdSetVoiceChannels(%client, %number)
// Client bind functions:
//------------------------------------------------------------------------------
function voiceCapStart()
{
$voiceCaptureStarted = true;
// client can send voice? (dont bother recording.. server will reject it anyway)
if(($Audio::serverChannels == 0) || ($Audio::serverEncodingLevel < $pref::Audio::encodingLevel))
{
if($Audio::serverChannels == 0)
addMessageHudLine("\c2System:\cr server has disabled voice communication.");
else
{
switch($Audio::serverEncodingLevel)
{
case 0: %level = "Low";
case 1: %level = "Medium";
default: %level = "High";
}
addMessageHudLine("\c2System:\cr server has voice level capped at [\c1" @ %level @ "\cr].");
}
$voiceCaptureStarted = false;
return;
}
vcRecordingHud.setVisible(true);
voiceCommHud.setVisible(true);
resizeVoiceCommWindow();
alxCaptureStart();
}
function voiceCapStop()
{
if(!$voiceCaptureStarted)
return;
vcRecordingHud.setVisible(false);
if($numTalking < 1)
voiceCommHud.setVisible(false);
alxCaptureStop();
}
//------------------------------------------------------------------------------
function serverCmdSetVoiceInfo(%client, %channels, %decodingMask, %encodingLevel)
{
%wasEnabled = %client.listenEnabled();
%client.setVoiceChannels(%number);
if ( %wasEnabled != ( %number > 0 ) )
// server has voice comm turned off?
if($Audio::maxVoiceChannels == 0)
%decodingMask = 0;
else
%decodingMask &= (1 << ($Audio::maxEncodingLevel + 1)) - 1;
if($Audio::maxEncodingLevel < %encodingLevel)
%encodingLevel = $Audio::maxEncodingLevel;
if($Audio::maxVoiceChannels < %channels)
%channels = $Audio::maxVoiceChannels;
%client.setVoiceChannels(%channels);
%client.setVoiceDecodingMask(%decodingMask);
%client.setVoiceEncodingLevel(%encodingLevel);
commandToClient(%client, 'SetVoiceInfo', %channels, %decodingMask, %encodingLevel);
if ( %wasEnabled != ( %channels > 0 ) )
updateCanListenState( %client );
}

View file

@ -111,6 +111,7 @@ function TurretDeployedCamera::onAdd(%this, %obj)
{
Parent::onAdd(%this, %obj);
%obj.mountImage(DeployableCameraBarrel, 0, true);
%obj.setRechargeRate(%this.rechargeRate);
}
function TurretDeployedCamera::onDestroyed(%this, %obj, %prevState)
@ -397,8 +398,9 @@ function MobileTurretBase::onDamage()
function MobileTurretBase::damageObject(%this, %targetObject, %sourceObject, %position, %amount, %damageType)
{
//If vehicle turret is hit then apply damage to the vehicle
%vehicle = %damageObj.getObjectMount();
%vehicle.getDataBlock().damageObject(%vehicle, %sourceObject, %position, %amount, %damageType);
%vehicle = %targetObject.getObjectMount();
if(%vehicle)
%vehicle.getDataBlock().damageObject(%vehicle, %sourceObject, %position, %amount, %damageType);
}
function MobileTurretBase::onEndSequence(%data, %obj, %thread)

Some files were not shown because too many files have changed in this diff Show more