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 // Explicit card profiles
// //
// SafeMode -- forces destruction of rendering context before resolution change // SafeMode -- forces destruction of rendering context before resolution change
// LockArray -- inhibits compiled vertex arrays if available // LockArray -- inhibits compiled vertex arrays if available
// SubImage -- inhibits glTexSubImage* // SubImage -- inhibits glTexSubImage*
// FogTexture -- require bound texture for combine extension // FogTexture -- require bound texture for combine extension
// NoEnvColor -- card doesn't support texture environment color // NoEnvColor -- card doesn't support texture environment color
// ClipHigh -- clip off high resolutions (> 1152x864) // ClipHigh -- clip off high resolutions (> 1152x864)
// DeleteContext -- delete rendering context (ignored for all OSs except W2K) // DeleteContext -- delete rendering context (ignored for all OSs except W2K)
// TexCompress -- inhibits texture compression if available // TexCompress -- inhibits texture compression if available
// InteriorLock -- lock arrays rendering Interiors // InteriorLock -- lock arrays rendering Interiors
// SkipFirstFog -- skip first two-pass fog (dumb 3Dfx hack) // SkipFirstFog -- skip first two-pass fog (dumb 3Dfx hack)
// Only16 -- inhibit the 32-bit resolutions // Only16 -- inhibit the 32-bit resolutions
// NoArraysAlpha -- don't use glDrawArrays with a GL_ALPHA texture // NoArraysAlpha -- don't use glDrawArrays with a GL_ALPHA texture
// ProFile -- explicit file of graphic settings // ProFile -- explicit file of graphic settings
// //
// Vendor Renderer SafeMode LockArray SubImage FogTexture NoEnvColor ClipHigh DeleteContext TexCompress InteriorLock SkipFirstFog Only16 NoArraysAlpha ProFile // 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.", "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, "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, "Voodoo5"); 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, "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, "Rage128"); 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, "Radeon"); 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, "Matrox"); 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, "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" ProductName "Tribes2"
DisplayName "Tribes 2" DisplayName "Tribes 2"
PatchFolder .\patch PatchFolder .\patch
CurrentVersion 0.21570.0.0 CurrentVersion 0.22002.0.0
AutoStart AutoStart
MonitorPatch MonitorPatch
LaunchExe "tribes2.exe" LaunchExe "tribes2.exe"
@ -10,7 +10,7 @@ MotdTimeout 30000
VersionTimeout 45000 VersionTimeout 45000
PatchTimeout 45000 PatchTimeout 45000
ValidateVersionFile ".\zz.ini" ValidateVersionFile ".\zz.ini"
ResourceDllFile "Tribes2Res.dll" ResourceDllFile "T2Res.dll"
DirectoryServer "tribes2.west.won.net:15104" DirectoryServer "tribes2.west.won.net:15104"
DirectoryServer "tribes2.east.won.net:15104" DirectoryServer "tribes2.east.won.net:15104"
DirectoryServer "tribes2.central.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::OpenGL::mipReduction = 0;
$pref::shadows = 0.5; $pref::shadows = 0.5;
$pref::Terrain::enableDetails = 1; $pref::Terrain::enableDetails = 1;
$pref::environmentMaps = 1; $pref::environmentMaps = 0;
$pref::Interior::DynamicLights = 0; $pref::Interior::DynamicLights = 0;
$pref::Interior::ShowEnvironmentMaps = 0; $pref::Interior::ShowEnvironmentMaps = 0;
$pref::precipitationOn = 1; $pref::precipitationOn = 1;

View file

@ -34,18 +34,6 @@ if ($CmdLineBotCount !$= "")
exec("scripts/message.cs"); 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 to be called when the game exits
function onExit() function onExit()
{ {
@ -62,7 +50,6 @@ function onExit()
exec("scripts/LaunchLanGui.cs"); exec("scripts/LaunchLanGui.cs");
exec("scripts/GameGui.cs"); exec("scripts/GameGui.cs");
exec("scripts/ChooseFilterDlg.cs"); exec("scripts/ChooseFilterDlg.cs");
exec("scripts/ChatGui.cs");
exec("scripts/TrainingGui.cs"); exec("scripts/TrainingGui.cs");
exec("scripts/webstuff.cs"); exec("scripts/webstuff.cs");
exec("scripts/webforums.cs"); exec("scripts/webforums.cs");
@ -93,6 +80,7 @@ exec("scripts/targetManager.cs");
exec("scripts/gameCanvas.cs"); exec("scripts/gameCanvas.cs");
exec("scripts/centerPrint.cs"); exec("scripts/centerPrint.cs");
exec("scripts/CreditsGui.cs"); exec("scripts/CreditsGui.cs");
exec("scripts/ChatGui.cs");
// see if the mission and type are valid // see if the mission and type are valid
// if they are they will be assigned into $Host::Map and $Host::MissionType // if they are they will be assigned into $Host::Map and $Host::MissionType
@ -181,7 +169,6 @@ loadGui("CommonLoadDlg");
loadGui("CommonSaveDlg"); loadGui("CommonSaveDlg");
loadGui("FrameOverlayGui"); loadGui("FrameOverlayGui");
loadGui("TribeAdminMemberDlg"); loadGui("TribeAdminMemberDlg");
loadGui("TribeAttribDlg");
loadGui("TSShowGui"); loadGui("TSShowGui");
loadGui("TSShowLoadDlg"); loadGui("TSShowLoadDlg");
loadGui("TSShowMiscDlg"); loadGui("TSShowMiscDlg");
@ -231,6 +218,7 @@ loadGui("AdvancedHostDlg");
loadGui("NewWarriorDlg"); loadGui("NewWarriorDlg");
loadGui("JoinChatDlg"); loadGui("JoinChatDlg");
loadGui("ChannelKeyDlg"); loadGui("ChannelKeyDlg");
loadGui("ChatOptionsDlg");
loadGui("ChannelOptionsDlg"); loadGui("ChannelOptionsDlg");
loadGui("ChannelBanDlg"); loadGui("ChannelBanDlg");
loadGui("FilterEditDlg"); loadGui("FilterEditDlg");
@ -576,8 +564,9 @@ function DispatchLaunchMode()
else 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();" ); 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": case "Connect":
OnlineLogIn();
setNetPort(0); setNetPort(0);
JoinSelectedGame(); JoinGame($JoinGameAddress);
case "HostGame": case "HostGame":
$ServerName = $Host::GameName; $ServerName = $Host::GameName;
$Host::MissionType = $MissionType; $Host::MissionType = $MissionType;

View file

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

View file

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

View file

@ -34,7 +34,19 @@ new GuiControl(MainChatHud) {
position = "6 2"; position = "6 2";
extent = "244 3"; extent = "244 3";
minExtent = "2 2"; 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"; text = "CHANNEL OPTIONS";
simpleStyle = "0"; 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 --- //--- 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; $ConsoleActive = false;
if(!ConsoleDlg.mouseOn) if(!ConsoleDlg.mouseOn)
CursorOff(); CursorOff();
if ( $enableDirectInput )
activateKeyboard();
} }
else else
{ {
@ -73,6 +75,7 @@ function ToggleConsole(%make)
$ConsoleActive = true; $ConsoleActive = true;
if(!ConsoleDlg.mouseOn) if(!ConsoleDlg.mouseOn)
CursorOn(); CursorOn();
deactivateKeyboard();
} }
} }
} }

View file

@ -10,16 +10,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
variable = "$ShellBackground"; variable = "$ShellBackground";
helpTag = "0"; helpTag = "0";
useVariable = "1"; 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) { new ShellPaneCtrl(ForumShell) {
profile = "ShellPaneProfile"; profile = "ShellPaneProfile";
@ -162,12 +152,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
drawSeparators = "0"; drawSeparators = "0";
headerSort = "0"; headerSort = "0";
allowReposition = "0"; allowReposition = "0";
updateCount = "0";
key = "71";
state = "replyPost";
lastId = "16480";
highestUpdate = "16480";
bflag = "1";
}; };
}; };
new ShellScrollCtrl() { new ShellScrollCtrl() {
@ -361,7 +345,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
columns = "0"; columns = "0";
fitParentWidth = "1"; fitParentWidth = "1";
clipColumnText = "0"; clipColumnText = "0";
forum = "58";
}; };
}; };
}; };
@ -441,14 +424,6 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
drawSeparators = "0"; drawSeparators = "0";
headerSort = "1"; headerSort = "1";
allowReposition = "0"; allowReposition = "0";
key = "43";
state = "lines";
selId = "0";
count = "0";
refreshFlag = "0";
forum = "0";
autoSelect = "1";
FirstCount = "0";
}; };
}; };
new GuiTextCtrl() { new GuiTextCtrl() {

View file

@ -31,17 +31,6 @@ new GuiControl(interiorPreviewGui) {
beaconLineWidth = "2.5"; beaconLineWidth = "2.5";
beaconTextYOffset = "14"; beaconTextYOffset = "14";
showAlternateTarget = "0"; 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() { new GuiButtonCtrl() {
profile = "GuiButtonProfile"; profile = "GuiButtonProfile";

View file

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

View file

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

View file

@ -13,38 +13,40 @@ new GuiControl(LoginDlg) {
profile = "ShellDlgPaneProfile"; profile = "ShellDlgPaneProfile";
horizSizing = "center"; horizSizing = "center";
vertSizing = "center"; vertSizing = "center";
position = "90 156"; position = "72 143";
extent = "460 167"; extent = "495 194";
minExtent = "48 92"; minExtent = "48 92";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "LOGIN"; text = "LOGIN";
maxLength = "255";
noTitleBar = "0"; noTitleBar = "0";
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "30 47"; position = "37 47";
extent = "85 22"; extent = "85 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Account Name:"; text = "Account Name:";
maxLength = "255";
}; };
new ShellTextEditCtrl(LoginEditBox) { new ShellTextEditCtrl(LoginEditBox) {
profile = "NewTextEditProfile"; profile = "NewTextEditProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "111 39"; position = "118 39";
extent = "180 38"; extent = "180 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
variable = "$LoginName"; variable = "$LoginName";
altCommand = "LoginProcess();"; altCommand = "LoginProcess();";
helpTag = "0"; helpTag = "0";
historySize = "0";
maxLength = "16"; maxLength = "16";
historySize = "0";
password = "0"; password = "0";
glowOffset = "9 9"; glowOffset = "9 9";
}; };
@ -52,50 +54,39 @@ new GuiControl(LoginDlg) {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "30 77"; position = "37 77";
extent = "85 22"; extent = "85 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Password:"; text = "Password:";
maxLength = "255";
}; };
new GuiLoginPasswordCtrl(LoginPasswordBox) { new GuiLoginPasswordCtrl(LoginPasswordBox) {
profile = "NewTextEditProfile"; profile = "NewTextEditProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "111 68"; position = "118 69";
extent = "180 38"; extent = "180 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
variable = "$LoginPassword"; variable = "$LoginPassword";
altCommand = "LoginProcess();"; altCommand = "LoginProcess();";
helpTag = "0"; helpTag = "0";
historySize = "0";
maxLength = "16"; maxLength = "16";
historySize = "0";
password = "1"; password = "1";
glowOffset = "9 9"; 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() { new ShellBitmapButton() {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "291 39"; position = "300 39";
extent = "144 38"; extent = "147 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "LoginProcess();"; command = "LoginProcess(false);";
helpTag = "0"; helpTag = "0";
text = "LOG IN"; text = "LOG IN";
simpleStyle = "0"; simpleStyle = "0";
@ -104,8 +95,8 @@ new GuiControl(LoginDlg) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "291 70"; position = "300 69";
extent = "144 38"; extent = "147 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "CreateAccount();"; command = "CreateAccount();";
@ -117,27 +108,54 @@ new GuiControl(LoginDlg) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "290 102"; position = "300 99";
extent = "144 38"; extent = "147 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "EditAccount();"; command = "LoginProcess(true);";
helpTag = "0"; helpTag = "0";
text = "EDIT ACCOUNT"; text = "EDIT ACCOUNT";
simpleStyle = "0"; simpleStyle = "0";
}; };
new ShellBitmapButton(LaunchToolbarCloseButton) { new ShellBitmapButton() {
profile = "CloseButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "left"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "411 0"; position = "300 129";
extent = "33 26"; extent = "147 38";
minExtent = "33 26"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "quit();"; command = "quit();";
accelerator = "escape"; accelerator = "escape";
helpTag = "0"; 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"; maxLength = "255";
simpleStyle = "0"; simpleStyle = "0";
}; };
new ShellTabButton(OP_ControlsTab) { new ShellTabButton(OP_VoiceTab) {
profile = "ShellTabProfile"; profile = "ShellTabProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
@ -100,6 +100,20 @@ new GuiControl(OptionsDlg) {
extent = "108 38"; extent = "108 38";
minExtent = "48 38"; minExtent = "48 38";
visible = "1"; 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);"; command = "OptionsDlg.setPane(Controls);";
helpTag = "0"; helpTag = "0";
text = "CONTROLS"; text = "CONTROLS";
@ -110,7 +124,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTabProfile"; profile = "ShellTabProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "19 196"; position = "19 226";
extent = "108 38"; extent = "108 38";
minExtent = "48 38"; minExtent = "48 38";
visible = "1"; visible = "1";
@ -124,7 +138,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTabProfile"; profile = "ShellTabProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "19 226"; position = "19 256";
extent = "108 38"; extent = "108 38";
minExtent = "48 38"; minExtent = "48 38";
visible = "1"; visible = "1";
@ -154,7 +168,7 @@ new GuiControl(OptionsDlg) {
position = "138 42"; position = "138 42";
extent = "437 316"; extent = "437 316";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "0";
helpTag = "0"; helpTag = "0";
new GuiTextCtrl() { new GuiTextCtrl() {
@ -415,11 +429,65 @@ new GuiControl(OptionsDlg) {
value = "0"; value = "0";
usePlusMinus = "1"; 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() { new GuiTextCtrl() {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "79 100"; position = "79 137";
extent = "70 22"; extent = "70 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -431,7 +499,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile"; profile = "ShellPopupProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "146 91"; position = "146 128";
extent = "200 36"; extent = "200 36";
minExtent = "49 36"; minExtent = "49 36";
visible = "1"; visible = "1";
@ -448,7 +516,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "35 130"; position = "35 167";
extent = "114 22"; extent = "114 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -460,7 +528,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile"; profile = "ShellPopupProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "146 121"; position = "146 158";
extent = "200 36"; extent = "200 36";
minExtent = "49 36"; minExtent = "49 36";
visible = "1"; visible = "1";
@ -477,7 +545,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "31 165"; position = "31 196";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -490,7 +558,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "236 165"; position = "236 196";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -503,7 +571,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "31 195"; position = "31 226";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -516,7 +584,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "236 195"; position = "236 226";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -529,7 +597,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "31 225"; position = "31 256";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -542,7 +610,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "236 225"; position = "236 256";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -554,7 +622,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "31 255"; position = "133 286";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -562,33 +630,6 @@ new GuiControl(OptionsDlg) {
text = "VERTEX LIGHTING"; text = "VERTEX LIGHTING";
maxLength = "255"; 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) { new ShellFieldCtrl(OP_TexturesPane) {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
@ -678,9 +719,9 @@ new GuiControl(OptionsDlg) {
visible = "1"; visible = "1";
variable = "value"; variable = "value";
helpTag = "0"; helpTag = "0";
range = "0.000000 5.000000"; range = "0.000000 1.000000";
ticks = "6"; ticks = "6";
value = "4"; value = "1";
usePlusMinus = "1"; usePlusMinus = "1";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
@ -705,9 +746,9 @@ new GuiControl(OptionsDlg) {
visible = "1"; visible = "1";
variable = "value"; variable = "value";
helpTag = "0"; helpTag = "0";
range = "0.000000 5.000000"; range = "0.000000 1.000000";
ticks = "6"; ticks = "6";
value = "4"; value = "1";
usePlusMinus = "1"; usePlusMinus = "1";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
@ -732,9 +773,9 @@ new GuiControl(OptionsDlg) {
visible = "1"; visible = "1";
variable = "value"; variable = "value";
helpTag = "0"; helpTag = "0";
range = "0.000000 5.000000"; range = "0.000000 1.000000";
ticks = "6"; ticks = "6";
value = "4"; value = "1";
usePlusMinus = "1"; usePlusMinus = "1";
}; };
new GuiTextCtrl(OP_CompressLabel) { new GuiTextCtrl(OP_CompressLabel) {
@ -899,8 +940,8 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "252 43"; position = "249 42";
extent = "152 30"; extent = "160 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
variable = "$pref::Audio::environmentEnabled"; variable = "$pref::Audio::environmentEnabled";
@ -912,7 +953,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "10 47"; position = "10 46";
extent = "72 22"; extent = "72 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -924,7 +965,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile"; profile = "ShellPopupProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "79 38"; position = "79 37";
extent = "169 36"; extent = "169 36";
minExtent = "49 36"; minExtent = "49 36";
visible = "1"; visible = "1";
@ -937,11 +978,98 @@ new GuiControl(OptionsDlg) {
selectedBarBitmap = "gui/shll_pulldownbar_act"; selectedBarBitmap = "gui/shll_pulldownbar_act";
noButtonStyle = "0"; 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() { new GuiTextCtrl() {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "26 89"; position = "26 177";
extent = "79 22"; extent = "79 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -953,7 +1081,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "36 104"; position = "36 192";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -969,7 +1097,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 89"; position = "231 177";
extent = "79 22"; extent = "79 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -981,7 +1109,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "241 104"; position = "241 192";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -996,7 +1124,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "26 129"; position = "26 217";
extent = "60 22"; extent = "60 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1008,7 +1136,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "36 144"; position = "36 232";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1024,7 +1152,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 129"; position = "231 217";
extent = "97 22"; extent = "97 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1036,7 +1164,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "241 144"; position = "241 232";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1051,7 +1179,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "31 179"; position = "31 267";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -1064,7 +1192,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 169"; position = "231 257";
extent = "74 22"; extent = "74 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "0"; visible = "0";
@ -1076,7 +1204,7 @@ new GuiControl(OptionsDlg) {
profile = "DisabledTextProfile"; profile = "DisabledTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 169"; position = "231 257";
extent = "74 22"; extent = "74 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1088,7 +1216,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "241 184"; position = "241 272";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1100,15 +1228,26 @@ new GuiControl(OptionsDlg) {
value = "0.8"; value = "0.8";
usePlusMinus = "1"; 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) { new ShellToggleButton(OP_MicrophoneEnabledTgl) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "31 231"; position = "31 13";
extent = "170 30"; extent = "170 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
variable = "$pref::Audio::microphoneEnabled"; variable = "$pref::Audio::enableVoiceCapture";
helpTag = "0"; helpTag = "0";
text = "MICROPHONE ENABLED"; text = "MICROPHONE ENABLED";
maxLength = "255"; maxLength = "255";
@ -1117,7 +1256,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "232 226"; position = "232 8";
extent = "173 38"; extent = "173 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
@ -1130,7 +1269,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "28 261"; position = "28 43";
extent = "102 22"; extent = "102 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1142,7 +1281,7 @@ new GuiControl(OptionsDlg) {
profile = "DisabledTextProfile"; profile = "DisabledTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "28 261"; position = "28 43";
extent = "102 22"; extent = "102 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "0"; visible = "0";
@ -1154,7 +1293,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "38 276"; position = "38 58";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1169,7 +1308,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 261"; position = "231 43";
extent = "123 22"; extent = "123 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1181,7 +1320,7 @@ new GuiControl(OptionsDlg) {
profile = "DisabledTextProfile"; profile = "DisabledTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 261"; position = "231 43";
extent = "123 22"; extent = "123 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "0"; visible = "0";
@ -1193,7 +1332,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextCenterProfile"; profile = "ShellTextCenterProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "271 279"; position = "271 61";
extent = "110 22"; extent = "110 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1205,7 +1344,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "241 276"; position = "241 58";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1217,6 +1356,88 @@ new GuiControl(OptionsDlg) {
value = "4.78947"; value = "4.78947";
usePlusMinus = "1"; 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) { new ShellFieldCtrl(OP_ControlsPane) {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
@ -1232,8 +1453,8 @@ new GuiControl(OptionsDlg) {
profile = "NewScrollCtrlProfile"; profile = "NewScrollCtrlProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "2 2"; position = "2 31";
extent = "290 282"; extent = "290 253";
minExtent = "24 52"; minExtent = "24 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -1250,7 +1471,7 @@ new GuiControl(OptionsDlg) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "4 6"; position = "4 6";
extent = "266 270"; extent = "266 241";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -1290,7 +1511,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "292 46"; position = "292 38";
extent = "140 38"; extent = "140 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
@ -1303,7 +1524,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "292 84"; position = "292 68";
extent = "140 38"; extent = "140 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
@ -1312,11 +1533,24 @@ new GuiControl(OptionsDlg) {
text = "SAVE AS"; text = "SAVE AS";
simpleStyle = "0"; 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) { new ShellBitmapButton(OP_ConfigureMouseBtn) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "292 155"; position = "292 146";
extent = "140 38"; extent = "140 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
@ -1325,32 +1559,31 @@ new GuiControl(OptionsDlg) {
text = "CONFIGURE MOUSE"; text = "CONFIGURE MOUSE";
simpleStyle = "0"; 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) { new ShellToggleButton(OP_JoystickTgl) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "296 197"; position = "296 194";
extent = "126 30"; extent = "126 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "0"; visible = "1";
variable = "pref::Input::JoystickEnabled";
helpTag = "0"; helpTag = "0";
text = "ENABLE JOYSTICK"; text = "ENABLE JOYSTICK";
maxLength = "255"; 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() { new GuiTextCtrl() {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
@ -1386,6 +1619,35 @@ new GuiControl(OptionsDlg) {
text = "grave"; 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) { new ShellFieldCtrl(OP_NetworkPane) {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
@ -1397,11 +1659,62 @@ new GuiControl(OptionsDlg) {
visible = "0"; visible = "0";
helpTag = "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() { new GuiTextCtrl() {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "26 8"; position = "26 52";
extent = "65 22"; extent = "65 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1413,7 +1726,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "36 23"; position = "36 67";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1428,7 +1741,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "231 8"; position = "231 52";
extent = "62 22"; extent = "62 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1440,7 +1753,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "241 23"; position = "241 67";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1455,7 +1768,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "26 48"; position = "26 92";
extent = "99 22"; extent = "99 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1467,7 +1780,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellSliderProfile"; profile = "ShellSliderProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "36 63"; position = "36 107";
extent = "170 24"; extent = "170 24";
minExtent = "12 24"; minExtent = "12 24";
visible = "1"; visible = "1";
@ -1482,7 +1795,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "11 119"; position = "11 153";
extent = "200 22"; extent = "200 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1494,7 +1807,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile"; profile = "ShellPopupProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "208 110"; position = "208 144";
extent = "180 36"; extent = "180 36";
minExtent = "49 36"; minExtent = "49 36";
visible = "1"; visible = "1";
@ -1511,7 +1824,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellTextRightProfile"; profile = "ShellTextRightProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "67 157"; position = "67 191";
extent = "144 22"; extent = "144 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
@ -1523,7 +1836,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellPopupProfile"; profile = "ShellPopupProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "208 148"; position = "208 182";
extent = "180 36"; extent = "180 36";
minExtent = "49 36"; minExtent = "49 36";
visible = "1"; visible = "1";
@ -1540,7 +1853,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "123 208"; position = "123 233";
extent = "190 30"; extent = "190 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";
@ -1553,7 +1866,7 @@ new GuiControl(OptionsDlg) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "123 236"; position = "123 261";
extent = "190 30"; extent = "190 30";
minExtent = "26 27"; minExtent = "26 27";
visible = "1"; visible = "1";

View file

@ -28,8 +28,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellHorzTabFrameProfile"; profile = "ShellHorzTabFrameProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "bottom"; vertSizing = "bottom";
position = "28 63"; position = "22 54";
extent = "564 270"; extent = "576 254";
minExtent = "26 254"; minExtent = "26 254";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -41,8 +41,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "TabGroupProfile"; profile = "TabGroupProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "bottom"; vertSizing = "bottom";
position = "38 34"; position = "30 25";
extent = "546 29"; extent = "560 29";
minExtent = "38 29"; minExtent = "38 29";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -55,8 +55,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "39 71"; position = "33 63";
extent = "543 262"; extent = "554 270";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -66,7 +66,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "3 27"; position = "3 27";
extent = "537 231"; extent = "550 239";
minExtent = "16 18"; minExtent = "16 18";
visible = "0"; visible = "0";
helpTag = "0"; helpTag = "0";
@ -76,7 +76,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "237 20"; position = "237 20";
extent = "297 209"; extent = "310 217";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -86,7 +86,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "2 6"; position = "2 6";
extent = "293 201"; extent = "306 209";
minExtent = "24 52"; minExtent = "24 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -103,7 +103,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "bottom"; vertSizing = "bottom";
position = "9 9"; position = "9 9";
extent = "275 183"; extent = "288 191";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -113,7 +113,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "0 0"; position = "0 0";
extent = "259 16"; extent = "272 16";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -129,7 +129,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "height"; vertSizing = "height";
position = "3 3"; position = "3 3";
extent = "234 226"; extent = "234 234";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -148,11 +148,11 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
wrap = "0"; wrap = "0";
}; };
new ShellFancyArrayScrollCtrl(ML1) { new ShellFancyArrayScrollCtrl(ML1) {
profile = "clockProfile"; profile = "ShellServerBrowserProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "-2 151"; position = "-2 151";
extent = "237 77"; extent = "237 85";
minExtent = "24 52"; minExtent = "24 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -165,7 +165,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 16"; position = "0 16";
extent = "237 61"; extent = "237 69";
minExtent = "8 52"; minExtent = "8 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -181,7 +181,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "4 7"; position = "4 7";
extent = "213 47"; extent = "213 55";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -199,11 +199,11 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
}; };
}; };
new ShellFancyTextList(MemberList) { new ShellFancyTextList(MemberList) {
profile = "clockProfile"; profile = "ShellBrowserListProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "0 0"; position = "0 0";
extent = "217 73"; extent = "217 81";
minExtent = "8 20"; minExtent = "8 20";
visible = "1"; visible = "1";
altCommand = "TribePane.RosterDblClick();"; altCommand = "TribePane.RosterDblClick();";
@ -223,6 +223,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
drawSeparators = "0"; drawSeparators = "0";
headerSort = "1"; headerSort = "1";
allowReposition = "1"; allowReposition = "1";
noSelect = "0";
}; };
}; };
}; };
@ -302,7 +303,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "3 27"; position = "3 27";
extent = "537 231"; extent = "550 239";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -312,7 +313,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "237 20"; position = "237 20";
extent = "297 209"; extent = "310 217";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -322,7 +323,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "2 2"; position = "2 2";
extent = "293 205"; extent = "306 213";
minExtent = "24 52"; minExtent = "24 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -339,7 +340,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "bottom"; vertSizing = "bottom";
position = "4 4"; position = "4 4";
extent = "269 197"; extent = "298 205";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -349,7 +350,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 0"; position = "0 0";
extent = "273 204"; extent = "286 16";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -365,7 +366,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "height"; vertSizing = "height";
position = "3 3"; position = "3 3";
extent = "234 226"; extent = "234 234";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -388,7 +389,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "-2 151"; position = "-2 151";
extent = "237 75"; extent = "237 83";
minExtent = "24 52"; minExtent = "24 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -401,7 +402,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 16"; position = "0 16";
extent = "237 59"; extent = "237 67";
minExtent = "8 52"; minExtent = "8 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -417,7 +418,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "4 7"; position = "4 7";
extent = "213 45"; extent = "213 53";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -427,7 +428,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 0"; position = "0 0";
extent = "8 47"; extent = "8 8";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -435,11 +436,11 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
}; };
}; };
new ShellFancyTextList(W_MemberList) { new ShellFancyTextList(W_MemberList) {
profile = "clockProfile"; profile = "ShellBrowserListProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "0 0"; position = "0 0";
extent = "217 71"; extent = "217 79";
minExtent = "8 20"; minExtent = "8 20";
visible = "1"; visible = "1";
altCommand = "PlayerPane.DblClick();"; altCommand = "PlayerPane.DblClick();";
@ -458,6 +459,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
drawSeparators = "0"; drawSeparators = "0";
headerSort = "1"; headerSort = "1";
allowReposition = "0"; allowReposition = "0";
noSelect = "0";
}; };
}; };
}; };
@ -537,7 +539,7 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
horizSizing = "width"; horizSizing = "width";
vertSizing = "bottom"; vertSizing = "bottom";
position = "7 5"; position = "7 5";
extent = "8 26"; extent = "155 26";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -546,27 +548,27 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
name = "EAST"; name = "EAST";
OldText = "EAST"; OldText = "EAST";
}; };
new ShellBitmapButton(TWBClosePaneBtn) { };
profile = "ShellButtonProfile"; new ShellBitmapButton(TWBClosePaneBtn) {
horizSizing = "left"; profile = "ShellButtonProfile";
vertSizing = "bottom"; horizSizing = "left";
position = "506 -3"; vertSizing = "bottom";
extent = "43 38"; position = "552 60";
minExtent = "32 38"; extent = "43 38";
visible = "0"; minExtent = "32 38";
command = "TWBTabView.closeCurrentPane();"; visible = "1";
accelerator = "escape"; command = "TWBTabView.closeCurrentPane();";
helpTag = "0"; accelerator = "escape";
text = "X"; helpTag = "0";
simpleStyle = "0"; text = "X";
}; simpleStyle = "0";
}; };
new ShellBitmapButton() { new ShellBitmapButton() {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "left"; horizSizing = "left";
vertSizing = "top"; vertSizing = "top";
position = "303 330"; position = "221 335";
extent = "104 38"; extent = "128 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "CreateTribe();"; command = "CreateTribe();";
@ -578,8 +580,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "left"; horizSizing = "left";
vertSizing = "top"; vertSizing = "top";
position = "390 330"; position = "341 335";
extent = "102 38"; extent = "128 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "SearchTribes();"; command = "SearchTribes();";
@ -591,8 +593,8 @@ new GuiChunkedBitmapCtrl(TribeAndWarriorBrowserGui) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "left"; horizSizing = "left";
vertSizing = "top"; vertSizing = "top";
position = "475 330"; position = "461 335";
extent = "114 38"; extent = "128 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "SearchWarriors();"; 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"; profile = "ShellDlgProfile";
horizSizing = "center"; horizSizing = "center";
vertSizing = "center"; vertSizing = "center";
position = "113 2"; position = "116 63";
extent = "408 354"; extent = "408 354";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "TRIBE PROPERTIES"; text = "TRIBE PROPERTIES";
maxLength = "255";
new ShellFieldCtrl() { new ShellFieldCtrl() {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
@ -135,6 +136,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "ACTIONS"; text = "ACTIONS";
maxLength = "255";
}; };
new ShellRadioButton() { new ShellRadioButton() {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
@ -146,6 +148,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Admin 3 [4]"; text = "Admin 3 [4]";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
@ -158,6 +161,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Required Access Level"; text = "Required Access Level";
maxLength = "255";
}; };
new ShellRadioButton() { new ShellRadioButton() {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
@ -169,6 +173,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Admin 2 [3]"; text = "Admin 2 [3]";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
new ShellRadioButton() { new ShellRadioButton() {
@ -181,6 +186,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Admin 1 [2]"; text = "Admin 1 [2]";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
new ShellRadioButton() { new ShellRadioButton() {
@ -193,6 +199,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Member [1]"; text = "Member [1]";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
new ShellRadioButton() { new ShellRadioButton() {
@ -205,6 +212,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Public [0] "; text = "Public [0] ";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
new ShellBitmapButton(TP_UpdateSecurityBtn) { new ShellBitmapButton(TP_UpdateSecurityBtn) {
@ -277,6 +285,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "DESCRIPTION"; text = "DESCRIPTION";
maxLength = "255";
}; };
new ShellBitmapButton(TP_EditDescBtn) { new ShellBitmapButton(TP_EditDescBtn) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
@ -336,12 +345,13 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
horizSizing = "left"; horizSizing = "left";
vertSizing = "relative"; vertSizing = "relative";
position = "0 0"; position = "0 0";
extent = "249 14"; extent = "249 28";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
lineSpacing = "2"; lineSpacing = "2";
allowColorChars = "1"; allowColorChars = "1";
maxChars = "-1";
}; };
}; };
}; };
@ -376,6 +386,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "TRIBE TAG"; text = "TRIBE TAG";
maxLength = "255";
}; };
new ShellRadioButton(TP_PrePendFlagBtn) { new ShellRadioButton(TP_PrePendFlagBtn) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
@ -388,6 +399,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ToggleAppending();"; command = "TribePropertiesDlg.ToggleAppending();";
helpTag = "0"; helpTag = "0";
text = "PREPEND TAG"; text = "PREPEND TAG";
maxLength = "255";
groupNum = "8"; groupNum = "8";
}; };
new ShellRadioButton(TP_AppendFlagBtn) { new ShellRadioButton(TP_AppendFlagBtn) {
@ -401,6 +413,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ToggleAppending();"; command = "TribePropertiesDlg.ToggleAppending();";
helpTag = "0"; helpTag = "0";
text = "APPEND TAG"; text = "APPEND TAG";
maxLength = "255";
groupNum = "8"; groupNum = "8";
}; };
}; };
@ -414,8 +427,8 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
command = "TribePropertiesDlg.RefreshTag();"; command = "TribePropertiesDlg.RefreshTag();";
helpTag = "0"; helpTag = "0";
historySize = "0";
maxLength = "9"; maxLength = "9";
historySize = "0";
password = "0"; password = "0";
glowOffset = "9 9"; glowOffset = "9 9";
}; };
@ -429,6 +442,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "CURRENT:"; text = "CURRENT:";
maxLength = "255";
}; };
new GuiTextCtrl(TP_CurrentTag) { new GuiTextCtrl(TP_CurrentTag) {
profile = "GuiDefaultProfile"; profile = "GuiDefaultProfile";
@ -440,6 +454,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "TAG"; text = "TAG";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
@ -451,6 +466,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "NEW TAG:"; text = "NEW TAG:";
maxLength = "255";
}; };
new GuiTextCtrl(TP_PreviewTag) { new GuiTextCtrl(TP_PreviewTag) {
profile = "GuiDefaultProfile"; profile = "GuiDefaultProfile";
@ -462,6 +478,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "TAG"; text = "TAG";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
@ -473,6 +490,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "PREVIEW:"; text = "PREVIEW:";
maxLength = "255";
}; };
new ShellBitmapButton(TP_TribeTagBtn) { new ShellBitmapButton(TP_TribeTagBtn) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
@ -498,6 +516,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "DISBAND TRIBE"; text = "DISBAND TRIBE";
maxLength = "255";
}; };
new GuiTextCtrl(TP_RecruitingLabel) { new GuiTextCtrl(TP_RecruitingLabel) {
profile = "ShellTextProfile"; profile = "ShellTextProfile";
@ -509,6 +528,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "RECRUITING"; text = "RECRUITING";
maxLength = "255";
}; };
new ShellRadioButton(TP_RecruitFlagBtn) { new ShellRadioButton(TP_RecruitFlagBtn) {
profile = "ShellRadioProfile"; profile = "ShellRadioProfile";
@ -521,6 +541,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ChangeRecruiting();"; command = "TribePropertiesDlg.ChangeRecruiting();";
helpTag = "0"; helpTag = "0";
text = "YES"; text = "YES";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
new ShellRadioButton(TP_RecruitFlagNoBtn) { new ShellRadioButton(TP_RecruitFlagNoBtn) {
@ -534,6 +555,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
command = "TribePropertiesDlg.ChangeRecruiting();"; command = "TribePropertiesDlg.ChangeRecruiting();";
helpTag = "0"; helpTag = "0";
text = "NO"; text = "NO";
maxLength = "255";
groupNum = "7"; groupNum = "7";
}; };
}; };
@ -569,6 +591,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Current Tribe Graphic:"; text = "Current Tribe Graphic:";
maxLength = "255";
}; };
new ShellBitmapButton(TP_SubmitGraphicBtn) { new ShellBitmapButton(TP_SubmitGraphicBtn) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
@ -592,11 +615,11 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
bitmap = "texticons/twb_Lineup.jpg"; bitmap = "texticons/twb/twb_Laserrifle.jpg";
wrap = "0"; wrap = "0";
}; };
new ShellFancyArrayScrollCtrl(ML1) { new ShellFancyArrayScrollCtrl(ML1) {
profile = "clockProfile"; profile = "ShellServerBrowserProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "233 21"; position = "233 21";
@ -638,8 +661,8 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
profile = "GuiDefaultProfile"; profile = "GuiDefaultProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 -195"; position = "0 0";
extent = "8 1307"; extent = "8 962";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -647,7 +670,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
}; };
}; };
new ShellFancyTextList(TribeGraphicsList) { new ShellFancyTextList(TribeGraphicsList) {
profile = "clockProfile"; profile = "ShellBrowserListProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "0 0"; position = "0 0";
@ -671,7 +694,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
drawSeparators = "0"; drawSeparators = "0";
headerSort = "1"; headerSort = "1";
allowReposition = "1"; allowReposition = "1";
CID = "0"; noSelect = "0";
}; };
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
@ -684,6 +707,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "-------------- Graphic Requirements --------------"; text = "-------------- Graphic Requirements --------------";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "GuiTextProfile"; profile = "GuiTextProfile";
@ -695,6 +719,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Max Dimensions:"; text = "Max Dimensions:";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "GuiTextProfile"; profile = "GuiTextProfile";
@ -706,6 +731,7 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Max Size:"; text = "Max Size:";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "GuiTextProfile"; profile = "GuiTextProfile";
@ -717,39 +743,43 @@ new GuiChunkedBitmapCtrl(TribePropertiesDlg) {
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "Format:"; text = "Format:";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "BrowserFilterTextProfile"; profile = "BrowserFilterTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "131 203"; position = "131 203";
extent = "26 22"; extent = "20 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "28k"; text = "28k";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "BrowserFilterTextProfile"; profile = "BrowserFilterTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "131 216"; position = "131 216";
extent = "36 22"; extent = "27 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "JPEG"; text = "JPEG";
maxLength = "255";
}; };
new GuiTextCtrl() { new GuiTextCtrl() {
profile = "BrowserFilterTextProfile"; profile = "BrowserFilterTextProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "131 190"; position = "131 190";
extent = "93 22"; extent = "70 22";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "228w x 150h"; text = "228w x 150h";
maxLength = "255";
}; };
}; };
}; };

View file

@ -14,14 +14,230 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
profile = "ShellDlgProfile"; profile = "ShellDlgProfile";
horizSizing = "center"; horizSizing = "center";
vertSizing = "center"; vertSizing = "center";
position = "116 50"; position = "116 69";
extent = "408 380"; extent = "408 342";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
text = "WARRIOR PROPERTIES"; text = "WARRIOR PROPERTIES";
maxLength = "255"; 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() { new ShellFieldCtrl() {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
horizSizing = "right"; horizSizing = "right";
@ -40,16 +256,30 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
extent = "105 38"; extent = "105 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
command = "W_GraphicsControl.setVisible(0);W_ProfilePane.setVisible(1);";
helpTag = "0"; helpTag = "0";
text = "PROFILE"; text = "PROFILE";
simpleStyle = "0"; 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) { new ShellBitmapButton(W_OKBtn) {
profile = "ShellButtonProfile"; profile = "ShellButtonProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "312 337"; position = "312 298";
extent = "91 38"; extent = "91 38";
minExtent = "32 38"; minExtent = "32 38";
visible = "1"; visible = "1";
@ -58,22 +288,155 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
text = "CLOSE"; text = "CLOSE";
simpleStyle = "0"; simpleStyle = "0";
}; };
new ShellFieldCtrl(W_ProfilePane) { new ShellFieldCtrl(W_GraphicsControl) {
profile = "ShellFieldProfile"; profile = "ShellFieldProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "10 63"; position = "10 63";
extent = "385 277"; extent = "385 239";
minExtent = "16 18"; minExtent = "16 18";
visible = "1"; visible = "0";
helpTag = "0"; helpTag = "0";
new ShellFancyArrayScrollCtrl(WGL) { new ShellBitmapButton(TP_SubmitGraphicBtn) {
profile = "clockProfile"; 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"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "233 101"; position = "233 21";
extent = "152 148"; extent = "149 156";
minExtent = "24 52"; minExtent = "24 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -86,7 +449,7 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 16"; position = "0 16";
extent = "152 132"; extent = "149 140";
minExtent = "8 52"; minExtent = "8 52";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -97,22 +460,22 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
defaultLineHeight = "15"; defaultLineHeight = "15";
childMargin = "0 3"; childMargin = "0 3";
new VirtualScrollContentCtrl(ML3) { new VirtualScrollContentCtrl(WL3) {
profile = "GuiDefaultProfile"; profile = "GuiDefaultProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "4 7"; position = "4 7";
extent = "128 118"; extent = "125 126";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
new GuiControl(ML4) { new GuiControl(WL4) {
profile = "GuiDefaultProfile"; profile = "GuiDefaultProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "0 0"; position = "0 -212";
extent = "8 8"; extent = "8 962";
minExtent = "8 8"; minExtent = "8 8";
visible = "1"; visible = "1";
helpTag = "0"; helpTag = "0";
@ -120,11 +483,11 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
}; };
}; };
new ShellFancyTextList(WarriorGraphicsList) { new ShellFancyTextList(WarriorGraphicsList) {
profile = "clockProfile"; profile = "ShellBrowserListProfile";
horizSizing = "width"; horizSizing = "width";
vertSizing = "height"; vertSizing = "height";
position = "0 0"; position = "0 0";
extent = "132 144"; extent = "129 152";
minExtent = "8 20"; minExtent = "8 20";
visible = "1"; visible = "1";
command = "WarriorGraphicsList.onSelect();"; command = "WarriorGraphicsList.onSelect();";
@ -144,208 +507,9 @@ new GuiChunkedBitmapCtrl(WarriorPropertiesDlg) {
drawSeparators = "0"; drawSeparators = "0";
headerSort = "1"; headerSort = "1";
allowReposition = "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"; fillColor = "255 255 255";
}; };
new GuiControlProfile ("memberListProfile")
{
fontType = "Univers Condensed";
fontSize = 12;
fontColor = "255 222 0";
};
new GuiControlProfile ("clockProfile") new GuiControlProfile ("clockProfile")
{ {
fontType = "Univers Condensed"; fontType = "Univers Condensed";
@ -104,13 +97,6 @@ new GuiControlProfile ("clockProfile")
fontColor = "0 255 0"; fontColor = "0 255 0";
}; };
new GuiControlProfile ("browserListProfile")
{
fontType = "Univers Condensed";
fontSize = 14;
fontColor = "0 255 0";
};
new GuiControlProfile ("GuiContentProfileNoClear") new GuiControlProfile ("GuiContentProfileNoClear")
{ {
opaque = false; opaque = false;
@ -490,6 +476,20 @@ new GuiControlProfile ("ShellServerBrowserProfile")
canKeyFocus = true; 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") new GuiControlProfile ("LobbyPlayerListProfile")
{ {
fontType = $ShellFont; 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 // MissionTypes = DM Hunters TeamHunters
//--- MISSION QUOTE BEGIN --- //--- MISSION QUOTE BEGIN ---
//Don't fear the Reaper. Fear me. //I am of the Chainless. I am Strong. I show no mercy.
// -- Gir Draxon, Leader of the Hordes, 3941 CE //--BioDerm battle chant
//--- MISSION QUOTE END --- //--- MISSION QUOTE END ---
//--- MISSION STRING BEGIN --- //--- MISSION STRING BEGIN ---
//[Hunters TeamHunters]Nexus located atop central tower //[Hunters TeamHunters]Nexus located atop central tower
//Three satellite towers around central tower //Three satellite towers around central tower
//Inventory stations in all towers //Inventory stations in all towers
//Ideal for combined indoor/outdoor combat tactics //Ideal for combined indoor/outdoor tactics
//--- MISSION STRING END --- //--- MISSION STRING END ---
//--- OBJECT WRITE BEGIN --- //--- OBJECT WRITE BEGIN ---
new SimGroup(MissionGroup) { new SimGroup(MissionGroup) {
powerCount = "0";
DM_timeLimit = "25"; DM_timeLimit = "25";
Hunters_timeLimit = "25";
Team_Hunters_timeLimit = "25";
musicTrack = "badlands";
DM_scoreLimit = "25"; DM_scoreLimit = "25";
musicTrack = "badlands";
powerCount = "0";
Hunters_timeLimit = "25";
cdTrack = "4"; cdTrack = "4";
Team_Hunters_timeLimit = "25";
new MissionArea(MissionArea) { new MissionArea(MissionArea) {
area = "-160 -88 512 512"; area = "-160 -88 512 512";
@ -54,17 +54,17 @@ new SimGroup(MissionGroup) {
fogVolumeColor1 = "128.000000 128.000000 128.000000 nan"; fogVolumeColor1 = "128.000000 128.000000 128.000000 nan";
fogVolumeColor2 = "128.000000 128.000000 128.000000 148120713330651839000000000000000000000.000000"; fogVolumeColor2 = "128.000000 128.000000 128.000000 148120713330651839000000000000000000000.000000";
fogVolumeColor3 = "128.000000 128.000000 128.000000 nan"; fogVolumeColor3 = "128.000000 128.000000 128.000000 nan";
locked = "true";
cloudSpeed0 = "0.000000 0.000000"; cloudSpeed0 = "0.000000 0.000000";
locked = "true";
}; };
new Sun() { new Sun() {
direction = "0.57735 0.57735 -0.57735"; direction = "0.57735 0.57735 -0.57735";
color = "0.600000 0.600000 0.600000 1.000000"; color = "0.600000 0.600000 0.600000 1.000000";
ambient = "0.600000 0.600000 0.600000 1.000000"; ambient = "0.600000 0.600000 0.600000 1.000000";
position = "0 0 0"; position = "0 0 0";
locked = "true";
rotation = "1 0 0 0"; rotation = "1 0 0 0";
scale = "1 1 1"; scale = "1 1 1";
locked = "true";
}; };
new TerrainBlock(Terrain) { new TerrainBlock(Terrain) {
rotation = "1 0 0 0"; rotation = "1 0 0 0";
@ -81,17 +81,16 @@ new SimGroup(MissionGroup) {
cullDensity = "0.3"; cullDensity = "0.3";
customArea = "0 0 0 0"; customArea = "0 0 0 0";
position = "0 0 0 1"; position = "0 0 0 1";
XDimOverSize = "0";
locked = "true";
rotation = "0 0 0 0";
conjoinBowlDev = "20"; conjoinBowlDev = "20";
scale = "1 1 1";
coverage = "0";
YDimOverSize = "0";
GraphFile = "AgentsOfFortune.nav"; GraphFile = "AgentsOfFortune.nav";
rotation = "0 0 0 0";
coverage = "0";
scale = "1 1 1";
locked = "true";
YDimOverSize = "0";
XDimOverSize = "0";
}; };
new SimGroup(ObserverDropPoints) { new SimGroup(ObserverDropPoints) {
powerCount = "0";
new Camera() { new Camera() {
position = "170.145 354.633 306.299"; position = "170.145 354.633 306.299";
@ -122,13 +121,10 @@ new SimGroup(MissionGroup) {
}; };
}; };
new SimGroup(Teams) { new SimGroup(Teams) {
powerCount = "0";
new SimGroup(Team1) { new SimGroup(Team1) {
powerCount = "0";
new SimGroup(spawnspheres) { new SimGroup(spawnspheres) {
powerCount = "0";
new SpawnSphere() { new SpawnSphere() {
position = "120.543 125.555 178.74"; position = "120.543 125.555 178.74";
@ -141,12 +137,11 @@ new SimGroup(MissionGroup) {
sphereWeight = "100"; sphereWeight = "100";
indoorWeight = "0"; indoorWeight = "0";
outdoorWeight = "100"; outdoorWeight = "100";
locked = "true";
missionTypesList = "Hunters TeamHunters DM"; missionTypesList = "Hunters TeamHunters DM";
locked = "true";
}; };
}; };
new SimGroup(AIObjectives) { new SimGroup(AIObjectives) {
powerCount = "0";
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "206.155 290.506 238.077"; position = "206.155 290.506 238.077";
@ -173,9 +168,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "199.076 306.979 274.076"; position = "199.076 306.979 274.076";
@ -202,9 +196,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "-54.5328 142.977 234.564"; position = "-54.5328 142.977 234.564";
@ -231,9 +224,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "-61.6912 133.365 198.742"; position = "-61.6912 133.365 198.742";
@ -260,9 +252,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "132.621 170.206 141.512"; position = "132.621 170.206 141.512";
@ -289,9 +280,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "242.229 -55.9849 184.697"; position = "242.229 -55.9849 184.697";
@ -318,9 +308,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "132.35 81.4307 123.601"; position = "132.35 81.4307 123.601";
@ -347,9 +336,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "249.2 -47.0356 220.655"; position = "249.2 -47.0356 220.655";
@ -376,9 +364,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "132.247 133.472 42.4322"; position = "132.247 133.472 42.4322";
@ -405,9 +392,8 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
new AIObjective(AIORepairObject) { new AIObjective(AIORepairObject) {
position = "132.537 114.232 42.4282"; position = "132.537 114.232 42.4282";
@ -434,17 +420,14 @@ new SimGroup(MissionGroup) {
forceClientId = "-1"; forceClientId = "-1";
locked = "1"; locked = "1";
issuingClientId = "-1"; issuingClientId = "-1";
gameType = "all";
isInvalid = "0"; isInvalid = "0";
team = "1"; gameType = "all";
}; };
}; };
}; };
new SimGroup(Team2) { new SimGroup(Team2) {
powerCount = "0";
new SimGroup(spawnspheres) { new SimGroup(spawnspheres) {
powerCount = "0";
new SpawnSphere() { new SpawnSphere() {
position = "120.543 125.555 178.74"; position = "120.543 125.555 178.74";
@ -457,16 +440,14 @@ new SimGroup(MissionGroup) {
sphereWeight = "100"; sphereWeight = "100";
indoorWeight = "0"; indoorWeight = "0";
outdoorWeight = "100"; outdoorWeight = "100";
locked = "true";
missionTypesList = "TeamHunters"; missionTypesList = "TeamHunters";
locked = "true";
}; };
}; };
}; };
new SimGroup(team0) { new SimGroup(team0) {
powerCount = "0";
new SimGroup(base) { new SimGroup(base) {
powerCount = "1";
providesPower = "1"; providesPower = "1";
new InteriorInstance() { new InteriorInstance() {
@ -477,7 +458,6 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0"; showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1"; AudioProfile = "Universal_Base_Pulse_1";
locked = "true"; locked = "true";
team = "0";
}; };
new InteriorInstance() { new InteriorInstance() {
position = "-61.9873 145.333 208.013"; position = "-61.9873 145.333 208.013";
@ -487,7 +467,6 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0"; showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1"; AudioProfile = "Universal_Base_Pulse_1";
locked = "true"; locked = "true";
team = "0";
}; };
new InteriorInstance() { new InteriorInstance() {
position = "203.206 303.487 247.408"; position = "203.206 303.487 247.408";
@ -497,7 +476,6 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0"; showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1"; AudioProfile = "Universal_Base_Pulse_1";
locked = "true"; locked = "true";
team = "0";
}; };
new StaticShape(Team1StationInventory1) { new StaticShape(Team1StationInventory1) {
position = "203.105 290.287 236.41"; position = "203.105 290.287 236.41";
@ -509,8 +487,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "33"; Target = "33";
Trigger = "3361";
team = "0";
}; };
new StaticShape(Team1StationInventory2) { new StaticShape(Team1StationInventory2) {
position = "196.076 306.979 272.41"; position = "196.076 306.979 272.41";
@ -522,8 +498,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "34"; Target = "34";
Trigger = "3363";
team = "0";
}; };
new StaticShape(Team1StationInventory3) { new StaticShape(Team1StationInventory3) {
position = "-54.7328 141.777 233.01"; position = "-54.7328 141.777 233.01";
@ -535,8 +509,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "35"; Target = "35";
Trigger = "3365";
team = "0";
}; };
new StaticShape(Team1StationInventory4) { new StaticShape(Team1StationInventory4) {
position = "-61.8912 132.165 197.01"; position = "-61.8912 132.165 197.01";
@ -548,8 +520,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "36"; Target = "36";
Trigger = "3367";
team = "0";
}; };
new StaticShape(Team1StationInventory5) { new StaticShape(Team1StationInventory5) {
position = "131.421 170.206 139.83"; position = "131.421 170.206 139.83";
@ -561,8 +531,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "37"; Target = "37";
Trigger = "3369";
team = "0";
}; };
new StaticShape(Team1StationInventory6) { new StaticShape(Team1StationInventory6) {
position = "242.042 -53.8823 182.9"; position = "242.042 -53.8823 182.9";
@ -574,8 +542,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "38"; Target = "38";
Trigger = "3371";
team = "0";
}; };
new StaticShape(Team1StationInventory7) { new StaticShape(Team1StationInventory7) {
position = "131.15 81.4307 121.83"; position = "131.15 81.4307 121.83";
@ -587,8 +553,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "39"; Target = "39";
Trigger = "3373";
team = "0";
}; };
new StaticShape(Team1StationInventory8) { new StaticShape(Team1StationInventory8) {
position = "249.4 -44.2356 218.9"; position = "249.4 -44.2356 218.9";
@ -600,8 +564,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "40"; Target = "40";
Trigger = "3375";
team = "0";
}; };
new StaticShape(Team1StationInventory9) { new StaticShape(Team1StationInventory9) {
position = "131.047 133.472 40.825"; position = "131.047 133.472 40.825";
@ -613,8 +575,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "41"; Target = "41";
Trigger = "3377";
team = "0";
}; };
new StaticShape(Team1StationInventory10) { new StaticShape(Team1StationInventory10) {
position = "131.293 114.234 40.825"; position = "131.293 114.234 40.825";
@ -626,8 +586,6 @@ new SimGroup(MissionGroup) {
homingCount = "0"; homingCount = "0";
locked = "true"; locked = "true";
Target = "42"; Target = "42";
Trigger = "3379";
team = "0";
}; };
new InteriorInstance() { new InteriorInstance() {
position = "242.199 -41.2332 193.901"; position = "242.199 -41.2332 193.901";
@ -637,86 +595,83 @@ new SimGroup(MissionGroup) {
showTerrainInside = "0"; showTerrainInside = "0";
AudioProfile = "Universal_Base_Pulse_1"; AudioProfile = "Universal_Base_Pulse_1";
locked = "true"; 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 Trigger(NexusTrigger) {
new Item(Nexus) { position = "109.972 143.602 158.388";
position = "130.989 125.937 160.988"; rotation = "1 0 0 0";
rotation = "1 0 0 0"; scale = "41.3963 35.6001 19.8193";
scale = "1 1 1"; dataBlock = "gameTrigger";
dataBlock = "Nexus"; 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";
lockCount = "0"; missionTypesList = "Hunters TeamHunters";
homingCount = "0"; locked = "true";
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 SimGroup(RandomOrganics) { new SimGroup(RandomOrganics) {
powerCount = "0";
new SimGroup(Addition5BiodermPlant5) { new SimGroup(Addition5BiodermPlant5) {
powerCount = "0";
new TSStatic() { new TSStatic() {
position = "269.5 -33.5 187.748"; position = "269.5 -33.5 187.748";
@ -777,7 +732,6 @@ new SimGroup(MissionGroup) {
}; };
}; };
new SimGroup(ambient) { new SimGroup(ambient) {
powerCount = "0";
new TSStatic() { new TSStatic() {
position = "210.085 300.266 272.4"; position = "210.085 300.266 272.4";
@ -833,7 +787,7 @@ new SimGroup(MissionGroup) {
rotation = "0 -1 0 26.929"; rotation = "0 -1 0 26.929";
scale = "1 1 1"; scale = "1 1 1";
shapeName = "stackable1l.dts"; shapeName = "stackable1l.dts";
locked = "false"; locked = "true";
}; };
new TSStatic() { new TSStatic() {
position = "126.808 126.436 39.78"; position = "126.808 126.436 39.78";
@ -972,18 +926,20 @@ new SimGroup(MissionGroup) {
shapeName = "stackable3m.dts"; shapeName = "stackable3m.dts";
locked = "true"; locked = "true";
}; };
}; new TSStatic() {
new TSStatic() { position = "85.2228 126.233 56.31";
position = "85.2228 126.233 56.31"; rotation = "1 0 0 0";
rotation = "1 0 0 0"; scale = "1 1 1";
scale = "1 1 1"; shapeName = "stackable3s.dts";
shapeName = "stackable3s.dts"; locked = "true";
}; };
new TSStatic() { new TSStatic() {
position = "176.956 125.898 56.3"; position = "176.956 125.898 56.3";
rotation = "0 0 1 16.0428"; rotation = "0 0 1 16.0428";
scale = "1 1 1"; scale = "1 1 1";
shapeName = "stackable2l.dts"; shapeName = "stackable2l.dts";
locked = "true";
};
}; };
}; };
//--- OBJECT WRITE END --- //--- OBJECT WRITE END ---

View file

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

View file

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

View file

@ -2,7 +2,7 @@
// DisplayName = Respite // DisplayName = Respite
//--- MISSION QUOTE BEGIN --- //--- 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 // -- Anton Malderi yl-Harabec, first anointed Phoenix Prime of the Harbingers, 3941 CE
//--- MISSION QUOTE END --- //--- MISSION QUOTE END ---

View file

@ -1,7 +1,7 @@
// MissionTypes = Hunters TeamHunters // MissionTypes = Hunters TeamHunters
//--- MISSION QUOTE BEGIN --- //--- 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 // -- Jarek Redmoon, Ur-Shaman of the Starwolf, 3941 CE
//--- MISSION QUOTE END --- //--- MISSION QUOTE END ---

View file

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

View file

@ -1,5 +1,5 @@
// MissionTypes = SinglePlayer // MissionTypes = SinglePlayer
// DisplayName = Seargent // DisplayName = Sergeant
//--- MISSION BRIEFING BEGIN --- //--- 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. //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 // MissionTypes = Hunters Bounty DM
//--- MISSION QUOTE BEGIN --- //--- 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 // -- Rog Gedharhk Blood-Drinker, Horde Maul reaver
//--- MISSION QUOTE END --- //--- MISSION QUOTE END ---

View file

@ -98,4 +98,10 @@ moveMap.bind(mouse0, "yaxis", pitch);
moveMap.bind(mouse0, "button0", mouseFire); moveMap.bind(mouse0, "button0", mouseFire);
moveMap.bind(mouse0, "button1", mouseJet); moveMap.bind(mouse0, "button1", mouseJet);
moveMap.bind(mouse0, "zaxis", cycleWeaponAxis); 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++) for (%cIndex = 0; %cIndex < %numClients; %cIndex++)
{ {
%opponent = ClientGroup.getObject(%cIndex); %opponent = ClientGroup.getObject(%cIndex);
//echo ("Predator = " @ %cl @ " PossPrey = " @ %opponent); //make sure the target isn't yourself, or an observer
if (!%opponent.isNotInGame) //hasn't dropped if (%opponent != %cl && %opponent.team > 0 && !%opponent.isNotInGame)
{ {
if (%opponent != %cl) //don't add client himself to list //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 %cl.validList[%availTargets] = %opponent;
{ %availTargets++;
if (!%cl.eliminated[%opponent]) //make sure candidate for list has not already been killed by client
{
%cl.validList[%availTargets] = %opponent;
%availTargets++;
}
}
} }
} }
} }
//returns length of list (number of players eligible as targets to this client) //returns length of list (number of players eligible as targets to this client)
%game.hudUpdateObjRem(%cl, %availTargets); %game.hudUpdateObjRem(%cl, %availTargets);
if ((%availTargets <= %game.WARN_AT_NUM_OBJREM) && (%cl.hasHadTarget)) if ((%availTargets <= %game.WARN_AT_NUM_OBJREM) && (%cl.hasHadTarget))
@ -412,6 +408,7 @@ function BountyGame::gameOver(%game)
%client = ClientGroup.getObject(%i); %client = ClientGroup.getObject(%i);
%game.resetScore(%client); %game.resetScore(%client);
cancel(%client.waypointSchedule); 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); //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) function BountyGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLoc)
{ {
DefaultGame::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 // any time a person dies, the kill streak is reset
%clVictim.killStreak = 0; %clVictim.killStreak = 0;
//force the player to respawn
if (!%clVictim.isAIControlled())
%clVictim.forceRespawnThread = %game.schedule(5000, forceRespawn, %clVictim);
} }
function BountyGame::onClientLeaveGame(%game, %clientId) function BountyGame::onClientLeaveGame(%game, %clientId)
@ -476,7 +489,10 @@ function BountyGame::onClientLeaveGame(%game, %clientId)
function BountyGame::onClientEnterObserverMode(%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(); %numClients = ClientGroup.getCount();
for (%index = 0; %index < %numClients; %index++) for (%index = 0; %index < %numClients; %index++)
{ {
@ -815,7 +831,7 @@ function BountyGame::updateScoreHud(%game, %client, %tag)
for (%cIndex = 0; %cIndex < ClientGroup.getCount(); %cIndex++) for (%cIndex = 0; %cIndex < ClientGroup.getCount(); %cIndex++)
{ {
%opponent = ClientGroup.getObject(%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++; %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... //clear the rest of Hud so we don't get old lines hanging around...
messageClient(%client, 'ClearHud', "", %tag, %index); messageClient(%client, 'ClearHud', "", %tag, %index);
} }

View file

@ -10,8 +10,11 @@ $ESCAPE_SEQ = "_-_";
$IRCClient::serverList = GetIRCServerList(0); $IRCClient::serverList = GetIRCServerList(0);
$IRCClient::serverCount = getRecordCount($IRCClient::serverList); $IRCClient::serverCount = getRecordCount($IRCClient::serverList);
$IRCClient::retries = -1; $IRCClient::retries = -1;
$IRCClient::serverIndex = -1; if ($IRCClient::serverCount > 1)
$IRCClient::serverport = 6667; $IRCClient::serverIndex = getRandom($IRCClient::serverCount-1)-1;
else
$IRCClient::serverIndex = -1;
$IRCClient::serverAttempt = 0;
$AWAY_TIMEOUT = 5 * 60 * 1000; $AWAY_TIMEOUT = 5 * 60 * 1000;
$VERSION_FLOOD_TIMEOUT = 5.0; $VERSION_FLOOD_TIMEOUT = 5.0;
@ -35,6 +38,12 @@ $CHANNEL_TOPIC_LIMITED = 128;
$CHANNEL_HAS_KEY = 256; $CHANNEL_HAS_KEY = 256;
$CHANNEL_NEW = 512; $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) function JoinChatDlg::onWake(%this)
{ {
@ -53,9 +62,17 @@ function JoinChatList::onSelect(%this,%id,%text)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function JoinChatDlg::join(%this) function JoinChatDlg::join(%this)
{ {
IRCClient::join(IRCClient::channelName(JoinChatName.getValue())); if(trim(JoinChatName.getValue()) $= "")
Canvas.popDialog(JoinChatDlg); {
LaunchTabView.viewTab("CHAT",ChatGui,0); 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; ChatGui.awake = true;
ChatTabView.setSelected($IRCClient::currentChannel); ChatTabView.setSelected($IRCClient::currentChannel);
ChatGuiScroll.scrollToBottom(); ChatGuiScroll.scrollToBottom();
ChatMessageEntry.schedule(1, makeFirstResponder, true);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -105,7 +123,8 @@ function ChatGui::setKey(%this,%ignore)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function ChatTabView::onAdd(%this) 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); ChatTabFrame.setAltColor(%obj.private);
%i = %obj.findMember($IRCClient::people.getObject(0)); %i = %obj.findMember($IRCClient::people.getObject(0));
ChatEditChannelBtn.setVisible(%obj.getFlags(%i) & $PERSON_OPERATOR); 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); ChatChannelTopic.setValue(%obj.topic);
if (ChatGui.awake) if (ChatGui.awake)
{ {
@ -282,13 +306,7 @@ function ChatRoomMemberList::onRightMouseDown(%this,%column,%row,%mousePos)
// Open the action menu: // Open the action menu:
ChatMemberPopup.member = %this.getRowId(%row); ChatMemberPopup.member = %this.getRowId(%row);
ChatMemberPopup.position = %mousePos; ChatMemberPopup.position = %mousePos;
Canvas.pushDialog(ChatMemberActionDlg);
ChatMemberPopup.forceOnAction();
}
//------------------------------------------------------------------------------
function ChatMemberActionDlg::onWake(%this)
{
ChatMemberPopup.clear(); ChatMemberPopup.clear();
%nick = IRCClient::displayNick(ChatMemberPopup.member); %nick = IRCClient::displayNick(ChatMemberPopup.member);
%is = $IRCClient::currentChannel.findMember(ChatMemberPopup.member); %is = $IRCClient::currentChannel.findMember(ChatMemberPopup.member);
@ -310,7 +328,7 @@ function ChatMemberActionDlg::onWake(%this)
} }
else else
{ {
if (strcmp(ChatMemberPopup.member.getName(),$IRCClient::currentChannel.getName())) if (strcmp(ChatMemberPopup.member.displayName,$IRCClient::currentChannel.getName()))
ChatMemberPopup.add("Chat",2); ChatMemberPopup.add("Chat",2);
if ($IRCClient::currentChannel.getFlags(%im) & $PERSON_OPERATOR) 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); 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 case 1: // Set Away
IRCClient::away($pref::IRCClient::awaymsg); IRCClient::away($pref::IRCClient::awaymsg);
case 2: // Chat case 2: // Chat
%c = IRCClient::findChannel(ChatMemberPopup.member.getName(),true); %c = IRCClient::findChannel(ChatMemberPopup.member.displayName,true);
ChatTabView.setSelected(%c); ChatTabView.setSelected(%c);
case 3: // Admin case 3: // Admin
IRCClient::setOperator(ChatMemberPopup.member); IRCClient::setOperator(ChatMemberPopup.member);
@ -543,6 +564,75 @@ function AcceptChannelOptions()
IRCClient::setKey(%c,false,""); 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() function IRCClient::init()
{ {
@ -553,8 +643,9 @@ function IRCClient::init()
$IRCClient::connectwait = 0; $IRCClient::connectwait = 0;
$IRCClient::room = ""; $IRCClient::room = "";
$IRCClient::numCensorWords = 0; $IRCClient::numCensorWords = 0;
$IRCClient::previousChannelCount = 0;
$IRCClient::people.add(new SimObject("IRCMe") $IRCClient::people.add(new SimObject()
{ {
real = ""; real = "";
identity = ""; identity = "";
@ -589,9 +680,6 @@ function IRCClient::notify(%event)
MessageBoxOK("No Response","Connection failed. The IRC server did not respond.",""); MessageBoxOK("No Response","Connection failed. The IRC server did not respond.","");
case IDIRC_ERR_DROPPED: case IDIRC_ERR_DROPPED:
MessageBoxOK("Connection Dropped","You have been disconnected from IRC server " @ $IRCClient::server @ ".",""); 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_BADCHALLENGE:
case IDIRC_ERR_BADCHALRESP_REPLY: case IDIRC_ERR_BADCHALRESP_REPLY:
case IDIRC_CHANNEL_LIST: case IDIRC_CHANNEL_LIST:
@ -710,7 +798,7 @@ function IRCClient::findPerson(%nick)
for (%i = 0; %i < $IRCClient::people.getCount(); %i++) for (%i = 0; %i < $IRCClient::people.getCount(); %i++)
{ {
%person = $IRCClient::people.getObject(%i); %person = $IRCClient::people.getObject(%i);
if (%person.getName() $= %nick) if (%person.displayName $= %nick)
return %person; return %person;
} }
} }
@ -745,7 +833,7 @@ function IRCClient::findPerson2(%prefix,%create)
if (%create) if (%create)
{ {
%p = new SimObject(%nick) %p = new SimObject()
{ {
real = ""; real = "";
identity = ""; identity = "";
@ -753,9 +841,9 @@ function IRCClient::findPerson2(%prefix,%create)
flags = 0; flags = 0;
ping = 0; ping = 0;
ref = 0; ref = 0;
displayName = %nick;
}; };
if (strlen(%ident)) IRCClient::setIdentity(%p,%ident);
IRCClient::setIdentity(%p,%ident);
$IRCClient::people.add(%p); $IRCClient::people.add(%p);
%c = IRCClient::findChannel(%nick); %c = IRCClient::findChannel(%nick);
@ -769,9 +857,9 @@ function IRCClient::findPerson2(%prefix,%create)
} }
// initiate WHO do determine username // initiate WHO do determine username
if (!strlen(%ident) && %p != $IRCClient::people.getObject(1) && //if (!strlen(%ident) && %p != $IRCClient::people.getObject(1) &&
getSubStr(%nick,strlen(%nick)-1,1) $= "^") //getSubStr(%nick,strlen(%nick)-1,1) $= "^")
IRCClient::whois(%p); //IRCClient::whois(%p);
return %p; return %p;
} }
@ -817,42 +905,35 @@ function IRCClient::undoEscapes(%string)
function IRCClient::setIdentity(%p,%ident) function IRCClient::setIdentity(%p,%ident)
{ {
%p.identity = %ident; %p.identity = %ident;
%nick = %p.displayName;
if (getSubStr(%p.getName(),strlen(%p.getName())-1,1) $= "^") if (strpos(%nick, "^") != -1)
{ {
// identity is set and user is WON-authenticated %triple = IRCGetTriple(%nick);
%i = strpos(%ident,"@"); %name = getField(%triple, 0);
while ((%j = strpos(%ident,"@",%i+1)) >= 0) %tag = getField(%triple, 1);
%i = %j; %append = getField(%triple, 2);
%user = IRCToByte(getSubStr(%ident,0,%i)); %p.untagged = %name;
if (%tag $= "")
%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
{
%p.nick = %name; %p.nick = %name;
%p.tagged = "<tribe:0>" @ %name @ "</tribe>"; %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)) if (strlen(%person.nick))
return %person.nick; return %person.nick;
else else
return %person.getName(); return %person.displayName;
} }
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function IRCClient::taggedNick(%person) function IRCClient::taggedNick(%person)
{ {
//error("IRCClient::taggedNick( "@%person@" )");
// identity is set and user is WON-authenticated // identity is set and user is WON-authenticated
if (strlen(%person.nick)) if (strlen(%person.nick))
return %person.tagged; if($pref::IRCClient::hideLinks)
return %person.nick;
else
return %person.tagged;
else else
return %person.getName(); return %person.displayName;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -881,7 +967,7 @@ function IRCClient::correctNick(%p)
for (%i = 1; %i < $IRCClient::channels.getCount(); %i++) for (%i = 1; %i < $IRCClient::channels.getCount(); %i++)
{ {
%c = $IRCClient::channels.getObject(%i); %c = $IRCClient::channels.getObject(%i);
if (%c.getName() $= %p.getName()) if (%c.getName() $= %p.displayName)
{ {
ChatTabView.setTabText(%c,IRCClient::displayNick(%p)); ChatTabView.setTabText(%c,IRCClient::displayNick(%p));
%c.topic = "Private chat with" SPC 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) function IRCClient::findChannel(%name,%create)
{ {
if (%name $= "") //error("IRCClient::findChannel( "@%name@", "@%create@" )");
if(%name $= "")
return $IRCClient::currentChannel; return $IRCClient::currentChannel;
for (%i = 0; %i < $IRCClient::channels.getCount(); %i++) for (%i = 0; %i < $IRCClient::channels.getCount(); %i++)
@ -941,7 +1028,7 @@ function IRCClient::findChannel(%name,%create)
%c = new ChannelVector(%name) %c = new ChannelVector(%name)
{ {
topic = %topic; topic = %topic;
key = ""; key = $IRCClient::key;
flags = $CHANNEL_NEW; flags = $CHANNEL_NEW;
personLimit = 0; personLimit = 0;
private = %private; private = %private;
@ -959,6 +1046,17 @@ function IRCClient::findChannel(%name,%create)
$IRCClient::nextChannel = %c; $IRCClient::nextChannel = %c;
IRCClient::notify(IDIRC_ADDCHANNEL); 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; return %c;
} }
@ -1017,14 +1115,25 @@ function IRCClient::connect()
if($IRCClient::retries == -1 || $IRCClient::retries > 5) if($IRCClient::retries == -1 || $IRCClient::retries > 5)
{ {
$IRCClient::serverIndex++; $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::newMessage("","Unable to connect to IRC servers.");
IRCClient::notify(IDIRC_ERR_RECONNECT); IRCClient::notify(IDIRC_ERR_TIMEOUT);
$IRCClient::state = IDIRC_DISCONNECTED; $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; return;
} }
else
$IRCClient::retries = 0;
$IRCClient::server = getField(getRecord($IRCClient::serverList, $IRCClient::serverIndex), 0); $IRCClient::server = getField(getRecord($IRCClient::serverList, $IRCClient::serverIndex), 0);
} }
IRCClient::newMessage("","Connecting to " @ $IRCClient::server); IRCClient::newMessage("","Connecting to " @ $IRCClient::server);
@ -1075,8 +1184,9 @@ function IRCTCP::onConnectFailed(%this)
else else
{ {
IRCClient::newMessage("","Connection failed. The server did not respond."); 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) if (!$pref::IRCClient::autoreconnect)
return (false); 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::retries++;
IRCClient::newMessage("","Try " @ $IRCClient::retries @ ". Attempting to reconnect to " @ $IRCClient::server @ ".");
IRCClient::notify(IDIRC_RECONNECT);
IRCClient::connect(); IRCClient::connect();
return true; return true;
} }
@ -1112,6 +1271,13 @@ function IRCClient::disconnect()
IRCClient::reset(); IRCClient::reset();
} }
//------------------------------------------------------------------------------
function IRCClient::relogin()
{
IRCClient::newMessage("","IRCClient: Reauthentication starting");
IRCClient::send("CERT " @ WONLoginIRC());
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function IRCClient::send(%message) function IRCClient::send(%message)
{ {
@ -1163,8 +1329,8 @@ function IRCClient::processLine(%line)
if (!IRCClient::dispatch(%prefix,%command,%params)) if (!IRCClient::dispatch(%prefix,%command,%params))
{ {
echo("IRCClient: " @ %command @ " not handled by dispatch!"); //echo("IRCClient: " @ %command @ " not handled by dispatch!");
echo("(cmd:) " @ %prefix @ " " @ %command @ " " @ %params); //echo("(cmd:) " @ %prefix @ " " @ %command @ " " @ %params);
} }
} }
} }
@ -1368,10 +1534,14 @@ function IRCClient::onPrivMsg(%prefix,%params)
if (getSubStr(%msg,0,1) $= ":") if (getSubStr(%msg,0,1) $= ":")
%msg = getSubStr(%msg,1,strlen(%msg)-1); %msg = getSubStr(%msg,1,strlen(%msg)-1);
// should we highlight this message
if($pref::IRCClient::highlightOn)
%msg = IRCClient::nickHighLight(%msg);
%nick = %ch; %nick = %ch;
if (getSubStr(%ch,0,1) $= "@" || getSubStr(%ch,0,1) $= "+") if (getSubStr(%ch,0,1) $= "@" || getSubStr(%ch,0,1) $= "+")
%nick = getSubStr(%nick,1,strlen(%nick)-1); %nick = getSubStr(%nick,1,strlen(%nick)-1);
if ( %nick $= %p.getName()) if ( %nick $= %p.displayName)
nextToken(%prefix,ch," !"); nextToken(%prefix,ch," !");
if (strcmp(getSubStr(%msg,0,1),"\x01")) if (strcmp(getSubStr(%msg,0,1),"\x01"))
@ -1401,19 +1571,14 @@ function IRCClient::onNick(%prefix,%params)
if (%person) if (%person)
{ {
if (!(%person.flags & $PERSON_IGNORE)) %old = IRCClient::taggedNick(%person);
IRCClient::newMessage($IRCClient::currentChannel,%person.getName() @ " is now known as " @ %params @ ".");
%channel = IRCClient::findChannel(%person.getName()); %person.displayName = %params;
IRCClient::setIdentity(%person,%person.ident);
if (%channel) IRCClient::correctNick(%person);
%channel.setName(%params);
%person.setName(%params); if (!(%person.flags & $PERSON_IGNORE))
IRCClient::newMessage($IRCClient::currentChannel,%old @ " is now known as " @ IRCClient::taggedNick(%person) @ ".");
// If this is me, re-set the console variable
if (%person == $IRCClient::people.getObject(0))
$IRCClient::NickName = %person.getName();
} }
} }
@ -1465,7 +1630,7 @@ function IRCClient::onMOTDEnd(%prefix, %params)
// EXAMPLE :StLouis.MO.US.UnderNet.org 372 homer128 :- ==> Disclaimer/ Rules: // EXAMPLE :StLouis.MO.US.UnderNet.org 372 homer128 :- ==> Disclaimer/ Rules:
if ($IRCClient::state $= IDIRC_CONNECTING_WAITING) 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::state = IDIRC_CONNECTED;
IRCClient::notify(IDIRC_CONNECTED); IRCClient::notify(IDIRC_CONNECTED);
@ -1759,7 +1924,7 @@ function IRCClient::onMode(%prefix,%params)
IRCClient::notify(IDIRC_SORT); IRCClient::notify(IDIRC_SORT);
// only display the message if my privilages are modified. // 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; break;
nextToken(%prefix,arg,"!"); nextToken(%prefix,arg,"!");
@ -1782,7 +1947,7 @@ function IRCClient::onMode(%prefix,%params)
IRCClient::notify(IDIRC_SORT); IRCClient::notify(IDIRC_SORT);
// only display the message if my privilages are modified. // 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; break;
nextToken(%prefix,arg,"!"); nextToken(%prefix,arg,"!");
@ -2015,7 +2180,7 @@ function IRCClient::onBanListEnd(%prefix,%params)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function IRCClient::onBadNick(%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); IRCClient::notify(IDIRC_ERR_NICK_IN_USE);
} }
@ -2056,11 +2221,14 @@ function IRCClient::onAway(%prefix,%params)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function IRCClient::onAction(%prefix,%params) function IRCClient::onAction(%prefix,%params)
{ {
%msg = nextToken(%params,ch," :"); %msg = nextToken(%params,ch," :");
%c = IRCClient::findChannel(%ch,true); %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,ident," ");
%params = nextToken(%params,reply," "); %params = nextToken(%params,reply," ");
%me = $IRCClient::people.getObject(0); %me = $IRCClient::people.getObject(0);
%me.setName(%nick); %me.displayName = %nick;
IRCClient::setIdentity(%me,%ident @ "@localhost"); IRCClient::setIdentity(%me,%ident @ "@localhost");
if (WONLoginIRC(%reply) $= "OK") if (WONLoginIRC(%reply) $= "OK")
{ {
IRCClient::newMessage("","Successfully connected to " @ $IRCClient::server @ ":" @ $IRCClient::serverport); if ($IRCClient::state !$= IDIRC_CONNECTED)
$IRCClient::state = IDIRC_CONNECTED; {
IRCClient::notify(IDIRC_CONNECTED); IRCClient::newMessage("","Successfully connected to " @ $IRCClient::server);
$IRCClient::state = IDIRC_CONNECTED;
IRCClient::notify(IDIRC_CONNECTED);
if ($IRCClient::awaytimeout) if ($IRCClient::awaytimeout)
cancel($IRCClient::awaytimeout); cancel($IRCClient::awaytimeout);
$IRCClient::awaytimeout = schedule($AWAY_TIMEOUT,0,"ChatAway_Timeout"); $IRCClient::awaytimeout = schedule($AWAY_TIMEOUT,0,"ChatAway_Timeout");
// auto join a room if requested // auto join a room if requested
if (strlen($IRCClient::room)) if (strlen($IRCClient::room))
IRCClient::send("JOIN " @ $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 else
{ {
@ -2345,7 +2528,7 @@ function IRCClient::sendAction(%message)
{ {
IRCClient::send("PRIVMSG " @ $IRCClient::currentChannel.getName() @ " :\x01ACTION " @ %message @ "\x01"); IRCClient::send("PRIVMSG " @ $IRCClient::currentChannel.getName() @ " :\x01ACTION " @ %message @ "\x01");
%me = $IRCClient::people.getObject(0); %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 else
{ {
$IRCClient::key = %key;
IRCClient::send("JOIN " @ %channel @ " " @ %key); IRCClient::send("JOIN " @ %channel @ " " @ %key);
IRCClient::connecting(); IRCClient::connecting();
} }
@ -2387,14 +2572,11 @@ function IRCClient::nick(%nick)
if (($IRCClient::state $= IDIRC_CONNECTED || $IRCClient::state $= IDIRC_CONNECTING_IRC) && if (($IRCClient::state $= IDIRC_CONNECTED || $IRCClient::state $= IDIRC_CONNECTING_IRC) &&
strlen(nick)) strlen(nick))
{ {
if (stricmp(%nick, $IRCClient::people.getObject(0).getName())) if (stricmp(%nick, $IRCClient::people.getObject(0).displayName))
IRCClient::send("NICK " @ %nick); IRCClient::send("NICK " @ %nick);
} }
else else
{ $IRCClient::people.getObject(0).displayName = %nick;
$IRCClient::people.getObject(0).setName(%nick);
$IRCClient::NickName = %nick;
}
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -2403,6 +2585,27 @@ function IRCClient::name(%name)
$IRCClient::people.getObject(0).real = %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) function IRCClient::part(%params)
{ {
@ -2442,8 +2645,8 @@ function IRCClient::part(%params)
IRCClient::notify(IDIRC_DELCHANNEL); IRCClient::notify(IDIRC_DELCHANNEL);
} }
break; break;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -2500,7 +2703,7 @@ function IRCClient::ping(%params)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function IRCClient::setOperator(%p) 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) 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) function IRCClient::ban(%p,%add)
{ {
if (%add) if (%add)
IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " +b " @ %p.getName()); IRCClient::send("MODE " @ $IRCClient::currentChannel.getName() @ " +b " @ %p.displayName);
else 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) 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) function IRCClient::who(%p)
{ {
IRCClient::connecting(); IRCClient::connecting();
IRCClient::send("WHO" SPC %p.getName()); IRCClient::send("WHO" SPC %p.displayName);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function IRCClient::whois(%p) function IRCClient::whois(%p)
{ {
IRCClient::connecting(); 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) 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); IRCClient::away(%msg);
for (%i = 1; %i < $IRCClient::channels.getCount(); %i++) 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: // Add all the mission types found on this machine:
for ( %i = 0; %i < $HostTypeCount; %i++ ) 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) function Flipflop::objectiveInit(%data, %flipflop)
{ {
%flipflop.teamBonusThread = ""; %flipflop.tCapThread = "";
%flipflop.playerBonusThread = ""; %flipflop.tHoldThread = "";
%flipflop.pCapThread = "";
Parent::objectiveInit(%data, %flipflop); Parent::objectiveInit(%data, %flipflop);
} }
@ -46,9 +47,7 @@ function CnHGame::initGameVars(%game)
%game.SCORE_PER_TURRET_KILL = 1; %game.SCORE_PER_TURRET_KILL = 1;
%game.SCORE_PER_FLIPFLOP_DEFEND = 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 %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
// 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.TIME_REQ_PLYR_CAP_BONUS = 12 * 1000; //player must hold a switch 12 seconds to get a point for it. %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 %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', ""); messageAll('MsgClearObjHud', "");
for(%i = 0; %i < ClientGroup.getCount(); %i ++) for(%i = 0; %i < ClientGroup.getCount(); %i ++)
{ {
%client = %group.getObject(%i); %client = ClientGroup.getObject(%i);
%game.resetScore(%client); %game.resetScore(%client);
} }
for ( %team = 1; %team <= %game.numTeams; %team++ ) for ( %team = 1; %team <= %game.numTeams; %team++ )
{
$TeamScore[%team] = 0; $TeamScore[%team] = 0;
messageAll('MsgCnHTeamCap', "", -1, -1, -1, %team, $TeamScore[%team], %game.getScoreLimit());
}
} }
function CnHGame::stopScoreTimers(%game) function CnHGame::stopScoreTimers(%game)
@ -148,9 +150,9 @@ function CnHGame::stopScoreTimers(%game)
for(%i = 0; %i < %ffGroup.getCount(); %i++) for(%i = 0; %i < %ffGroup.getCount(); %i++)
{ {
%curFF = %ffGroup.getObject(%i); %curFF = %ffGroup.getObject(%i);
cancel(%curFF.tHoldThread);
cancel(%curFF.pCapThread); cancel(%curFF.pCapThread);
cancel(%curFF.tCapThread); cancel(%curFF.tCapThread);
cancel(%curFF.tHoldThread);
} }
} }
@ -309,7 +311,7 @@ function CnHGame::testPlayerFFDefend(%game, %victimID, %killerID)
while(%objID != 0) while(%objID != 0)
{ {
%objType = %objID.getDataBlock().getName(); %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)) if ((%objType $= "FlipFlop") && (%objID.team == %killerID.team))
return true; //found a killer's team flipflop near the point of victim's death return true; //found a killer's team flipflop near the point of victim's death
else else
@ -323,31 +325,42 @@ function CnHGame::awardScorePlayerFFDefend(%game, %cl, %this)
%cl.flipFlopDefends++; %cl.flipFlopDefends++;
//if (%game.SCORE_PER_FLIPFLOP_DEFEND != 0) //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)); //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) function CnHGame::awardScorePlayerFFCap(%game, %cl, %this)
{ {
if(!($missionRunning))
return;
%cl.flipFlopsCapped++; %cl.flipFlopsCapped++;
%game.recalcScore(%cl); %game.recalcScore(%cl);
} }
function CnHGame::awardScoreTeamFFCap(%game, %team, %this) function CnHGame::awardScoreTeamFFCap(%game, %team, %this)
{ {
cancel(%this.tCapThread); cancel(%this.tCapThread);
if(!($missionRunning))
return;
$TeamScore[%team] +=%game.SCORE_PER_TEAM_FLIPFLOP_CAP; $TeamScore[%team] +=%game.SCORE_PER_TEAM_FLIPFLOP_CAP;
%sLimit = %game.getScoreLimit(); %sLimit = %game.getScoreLimit();
if (%game.SCORE_PER_TEAM_FLIPFLOP_CAP) if (%game.SCORE_PER_TEAM_FLIPFLOP_CAP)
messageAll('MsgCnHTeamCap', "", -1, -1, -1, %team, $teamScore[%team], %sLimit); messageAll('MsgCnHTeamCap', "", -1, -1, -1, %team, $teamScore[%team], %sLimit);
if (%game.SCORE_PER_TEAM_FLIPFLOP_HOLD != 0) 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); %game.checkScoreLimit(%team);
} }
function CnHGame::awardScoreTeamFFHold(%game, %team, %this, %msg) function CnHGame::awardScoreTeamFFHold(%game, %team, %this)
{ {
cancel(%this.tHoldThread); cancel(%this.tHoldThread);
if(!($missionRunning))
return;
$TeamScore[%team] +=%game.SCORE_PER_TEAM_FLIPFLOP_HOLD; $TeamScore[%team] +=%game.SCORE_PER_TEAM_FLIPFLOP_HOLD;
%sLimit = %game.getScoreLimit(); %sLimit = %game.getScoreLimit();
if (%game.SCORE_PER_TEAM_FLIPFLOP_HOLD) if (%game.SCORE_PER_TEAM_FLIPFLOP_HOLD)
@ -360,7 +373,7 @@ function CnHGame::awardScoreTeamFFHold(%game, %team, %this, %msg)
%game.checkScoreLimit(%team); %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) 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... //clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index ); messageClient( %client, 'ClearHud', "", %tag, %index );
} }

View file

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

View file

@ -47,6 +47,13 @@ function GameGui::onSleep( %this )
%ctrl = "GM_" @ %this.pane @ "Pane"; %ctrl = "GM_" @ %this.pane @ "Pane";
if ( isObject( %ctrl ) ) if ( isObject( %ctrl ) )
%ctrl.onDeactivate(); %ctrl.onDeactivate();
// if( isObject( $dummySeq ) )
// {
// $dummySeq.delete();
// }
Canvas.popDialog(LaunchToolbarDlg);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -156,7 +163,7 @@ $BrowserColumnCount++;
$BrowserColumnName[6] = "Rules Set"; $BrowserColumnName[6] = "Rules Set";
$BrowserColumnRange[6] = "25 300"; $BrowserColumnRange[6] = "25 300";
$BrowserColumnCount++; $BrowserColumnCount++;
$BrowserColumnName[7] = "# Players"; $BrowserColumnName[7] = "# Players (Bots)";
$BrowserColumnRange[7] = "25 150"; $BrowserColumnRange[7] = "25 150";
$BrowserColumnCount++; $BrowserColumnCount++;
$BrowserColumnName[8] = "CPU"; $BrowserColumnName[8] = "CPU";
@ -533,7 +540,8 @@ function JoinSelectedGame()
%info = GMJ_Browser.getServerInfoString(); %info = GMJ_Browser.getServerInfoString();
%desc = "a" SPC getField(%info,4) @ "(" @ getField(%info,3) @ ") game on the \"" @ getField(%info,0) @ "\" server. Click here to follow"; %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); JoinGame($JoinGameAddress);
} }
@ -550,7 +558,6 @@ function JoinGame(%address)
%playerVoice = getField( %playerPref, 3 ); %playerVoice = getField( %playerPref, 3 );
%playerVoicePitch = getField( %playerPref, 4 ); %playerVoicePitch = getField( %playerPref, 4 );
connect( %address, $JoinGamePassword, %playerName, %playerRaceGender, %playerSkin, %playerVoice, %playerVoicePitch ); 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: // Select the saved-off prefs:
if ( $Host::MissionType !$= "" ) if ( $Host::MissionType !$= "" )
{ {
%selId = GMH_MissionType.findText( $Host::MissionType ); // Find the last selected type:
if ( %selId != -1 ) for ( %type = 0; %type < $HostTypeCount; %type++ )
{ {
GMH_MissionType.setSelected( %selId ); if ( $HostTypeName[%type] $= $Host::MissionType )
GMH_MissionType.onSelect( %selId, "" ); break;
}
if ( %type != $HostTypeCount )
{
GMH_MissionType.setSelected( %type );
GMH_MissionType.onSelect( %type, "" );
if ( $Host::Map !$= "" ) if ( $Host::Map !$= "" )
{ {
%index = GMH_MissionList.findTextIndex( $Host::Map ); // Find the last selected mission:
if ( %index != -1 ) for ( %index = 0; %index < $HostMissionCount[%type]; %index++ )
{ {
%selId = GMH_MissionList.getRowId( %index ); if ( $HostMissionFile[$HostMission[%type, %index]] $= $Host::Map )
GMH_MissionList.setSelectedById( %selId ); break;
} }
if ( %index != $HostMissionCount[%type] )
GMH_MissionList.setSelectedById( $HostMission[%type, %index] );
} }
} }
} }
@ -609,7 +625,31 @@ function buildMissionTypePopup( %popup )
{ {
%popup.clear(); %popup.clear();
for( %type = 0; %type < $HostTypeCount; %type++ ) 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]++; $HostMissionCount[%i]++;
} }
} }
getMissionTypeDisplayNames();
%fobject.delete(); %fobject.delete();
} }
@ -705,6 +747,8 @@ function validateMissionAndType(%misName, %misType)
return true; return true;
} }
//------------------------------------------------------------------------------
// This function returns the index of the next mission in the mission list.
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function getNextMission( %misName, %misType ) 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; return;
} }
IRCClient::onJoinGame("", "");
MessagePopup( "STARTING SERVER", "Initializing..." ); MessagePopup( "STARTING SERVER", "Initializing..." );
Canvas.repaint(); Canvas.repaint();
@ -1173,8 +1219,19 @@ function GMW_PlayerModel::update( %this )
} }
%skin = getField( $pref::Player[$pref::Player::Current], 2 ); %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 ); $pref::Player[$pref::Player::Current] = setField( $pref::Player[$pref::Player::Current], 2, %text );
// Update the player model: // Update the player model:
GMW_PlayerModel.update(); GMW_PlayerModel.update();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -1487,9 +1544,9 @@ function NW_NameEdit::checkValidPlayerName( %this )
%name = %this.getValue(); %name = %this.getValue();
%test = strToPlayerName( %name ); %test = strToPlayerName( %name );
if ( %name !$= %test ) 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); %client = ClientGroup.getObject(%i);
%game.resetScore(%client); %game.resetScore(%client);
%client.flagCount = 1; %client.flagCount = 1;
%client.trackClient = 0;
%client.trackWaypoint = ""; %client.trackWaypoint = "";
%client.playerTrackLine = -1; %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) function HuntersGame::sendFlagCountMessage(%game, %client)
{ {
//send the messages //send the messages
@ -1584,8 +1548,6 @@ function HuntersGame::updateScoreHud(%game, %client, %tag)
%col1Style = "<color:00dc00>"; %col1Style = "<color:00dc00>";
else if ( %col1Client == %client ) else if ( %col1Client == %client )
%col1Style = "<color:dcdcdc>"; %col1Style = "<color:dcdcdc>";
else if ( %col1Client == %client.trackClient )
%col1Style = "<color:dcdc00>";
//see if we have two columns //see if we have two columns
if (%numColumns == 2) if (%numColumns == 2)
@ -1608,8 +1570,6 @@ function HuntersGame::updateScoreHud(%game, %client, %tag)
%col2Style = "<color:00dc00>"; %col2Style = "<color:00dc00>";
else if ( %col2Client == %client ) else if ( %col2Client == %client )
%col2Style = "<color:dcdcdc>"; %col2Style = "<color:dcdcdc>";
else if ( %col2Client == %client.trackClient )
%col2Style = "<color:dcdc00>";
} }
} }
@ -1628,16 +1588,67 @@ function HuntersGame::updateScoreHud(%game, %client, %tag)
else else
{ {
if ( %numColumns == 2 ) 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, //this is lame, but we can only have up to %9 args
%col1Style, %col2Style, %col1Client, %col2Client); 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 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', 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 ); %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... //clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index ); messageClient( %client, 'ClearHud', "", %tag, %index );
} }

View file

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

View file

@ -53,10 +53,14 @@ function LobbyGui::onWake( %this )
moveMap.pop(); moveMap.pop();
if ( isObject( passengerkeys ) ) if ( isObject( passengerkeys ) )
passengerKeys.pop(); passengerKeys.pop();
flyingCameraMove.pop(); if ( isObject( observerBlockMap ) )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
$enableDirectInput = "0"; $enableDirectInput = "0";
disableDirectInput(); deactivateDirectInput();
LobbyMessageVector.attach(HudMessageVector); LobbyMessageVector.attach(HudMessageVector);
LobbyMessageScroll.scrollToBottom(); LobbyMessageScroll.scrollToBottom();
@ -382,7 +386,8 @@ function fillLobbyMissionMenu( %type, %typeName )
LobbyVoteMenu.key++; LobbyVoteMenu.key++;
LobbyVoteMenu.clear(); LobbyVoteMenu.clear();
LobbyVoteMenu.mode = "mission"; LobbyVoteMenu.mode = "mission";
LobbyVoteMenu.missionType = %typeName; LobbyVoteMenu.missionType = %type;
LobbyVoteMenu.typeName = %typeName;
commandToServer( 'GetMissionList', LobbyVoteMenu.key, %type ); commandToServer( 'GetMissionList', LobbyVoteMenu.key, %type );
} }
@ -547,18 +552,18 @@ function lobbyVote()
startNewVote( "VoteChangeMission", startNewVote( "VoteChangeMission",
"change the mission to", "change the mission to",
%text, // Mission display name %text, // Mission display name
LobbyVoteMenu.missionType, // Mission type display name LobbyVoteMenu.typeName, // Mission type display name
$clVoteCmd[%id], // Mission file name $clVoteCmd[%id], // Mission id
LobbyVoteMenu.missionType ); // Mission type LobbyVoteMenu.missionType ); // Mission type id
} }
else else
{ {
startNewVote( "VoteTournamentMode", startNewVote( "VoteTournamentMode",
"change the server to", "change the server to",
%text, // Mission display name %text, // Mission display name
LobbyVoteMenu.missionType, // Mission type display name LobbyVoteMenu.typeName, // Mission type display name
$clVoteCmd[%id], // Mission file name $clVoteCmd[%id], // Mission id
LobbyVoteMenu.missionType ); // Mission type LobbyVoteMenu.missionType ); // Mission type id
LobbyVoteMenu.tourneyChoose = 0; LobbyVoteMenu.tourneyChoose = 0;
} }
LobbyVoteMenu.reset(); 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") { if(%player.getState() !$= "Dead") {
%player.setDamageFlash(0.1); %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(); %prevHurt = %player.getDamageLevel();
%player.setDamageLevel(%prevHurt + 0.05); %player.setDamageLevel(%prevHurt + %damageRate);
// a little redundancy to see if the lastest damage killed the player // a little redundancy to see if the lastest damage killed the player
if(%player.getState() $= "Dead") if(%player.getState() $= "Dead")
%game.onClientKilled(%player.client, 0, $DamageType::OutOfBounds); %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... //clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index ); 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) function SiegeGame::clientMissionDropReady(%game, %client)
{ {
messageClient(%client, 'MsgClientReady', "", %game.class); messageClient(%client, 'MsgClientReady', "", %game.class);
@ -1042,6 +1006,36 @@ function SiegeGame::updateScoreHud(%game, %client, %tag)
%index++; %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... //clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index ); messageClient( %client, 'ClearHud', "", %tag, %index );
} }

View file

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

View file

@ -126,6 +126,12 @@ function TeamHuntersGame::initGameVars(%game)
%game.flagMsgDelayMS = 3000; %game.flagMsgDelayMS = 3000;
%game.oobThrowFlagsDelayMS = 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) function TeamHuntersGame::allowsProtectedStatics(%game)
@ -485,6 +491,7 @@ function TeamHuntersGame::CampingDamage(%game, %client, %firstWarning)
function TeamHuntersGame::updateScoreHud(%game, %client, %tag) function TeamHuntersGame::updateScoreHud(%game, %client, %tag)
{ {
messageClient( %client, 'ClearHud', "", %tag, 0 );
// Send header: // Send header:
messageClient( %client, 'SetScoreHudHeader', "", '<tab:15,315>\t%1<rmargin:260><just:right>%2<rmargin:560><just:left>\t%3<just:right>%4', 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] ); $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 for observers, create an anchor around the player name so they can be observed
else 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', //this is lame, but we can only have up to %9 args
%team1Client.name, %team1ClientScore, %team1ClientFlags, %team2Client.name, %team2ClientScore, %team2ClientFlags, %col1Style, %col2Style, %team1Client, %team2Client ); 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++; %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... //clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index ); messageClient( %client, 'ClearHud', "", %tag, %index );
} }

View file

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

View file

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

View file

@ -123,7 +123,7 @@ function FlipFlop::objectiveInit(%data, %flipflop)
function ClientCmdSetHudMode(%mode, %type, %node) function ClientCmdSetHudMode(%mode, %type, %node)
{ {
parent::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) function scoutFlyer::onRemove(%this, %obj)
{ {
//error("scoutFlyer::onRemove("@ %obj@") called"); error("scoutFlyer::onRemove("@ %obj@") called");
if(%obj == $Shrike) { if ( ! isObject( ServerConnection ) )
return;
if(%obj == $Shrike ) {
// we dont want the player to die hitting the ground // we dont want the player to die hitting the ground
cancel(game.pilotingTips); cancel(game.pilotingTips);
$player.player.invincible = true; $player.player.invincible = true;

View file

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

View file

@ -68,7 +68,7 @@ function toggleScoreScreen(%val)
function ClientCmdSetHudMode(%mode, %type, %node) function ClientCmdSetHudMode(%mode, %type, %node)
{ {
parent::ClientCmdSetHudMode(%mode, %type, %node); parent::ClientCmdSetHudMode(%mode, %type, %node);
TrainingMap.push(); //TrainingMap.push();
} }
// get the ball rolling // get the ball rolling
@ -187,43 +187,72 @@ function objectiveDistanceChecks()
schedule(5000, game, 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) function GeneratorLarge::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType)
{ {
//error("Generator::damageObject called. DamageType = "@%damageType); if(%targetObject == game.targetObject1 || %targetObject == game.targetObject2)
if( %targetObject == game.targetObject1 || %targetObject == game.targetObject2 && !game.detonationSequenceStarted){ %message = training5ObjectiveGenDamaged(%targetObject, %damageType);
if(%damageType && %damageType != $DamageType::SatchelCharge && %damageType != $DamageType::Explosion) { else
if(!game.tooSoonMsg) { Parent::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType);
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) {
%waypoint = new WayPoint() { if(%message)
position = nameToId(SatchelChargePack).position; training5messageDamageFailed();
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);
} }
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) function AIEngageTask::assume(%task, %client)
{ {
Parent::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) function SinglePlayerGame::equip(%game, %player, %set)
{ {
if(!isObject(%player)) if(!isObject(%player))

View file

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

View file

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

View file

@ -14,6 +14,9 @@ function BountyGame::onAIRespawn(%game, %client)
%client.addTask(AIBountyPatrolTask); %client.addTask(AIBountyPatrolTask);
%client.bountyTask = %client.addTask(AIBountyEngageTask); %client.bountyTask = %client.addTask(AIBountyEngageTask);
} }
//set the inv flag
%client.spawnUseInv = true;
} }
function BountyGame::AIInit(%game) function BountyGame::AIInit(%game)
@ -59,12 +62,14 @@ function AIBountyEngageTask::weight(%task, %client)
} }
//see if anyone has fired on us recently... //see if anyone has fired on us recently...
%mustEngage = false;
%losTimeout = 5000 + ($AIClientLOSTimeout * %client.getSkillLevel()); %losTimeout = 5000 + ($AIClientLOSTimeout * %client.getSkillLevel());
if (AIClientIsAlive(%client.lastDamageClient, %losTimeout) && getSimTime() - %client.lastDamageTime < %losTimeout) if (AIClientIsAlive(%client.lastDamageClient, %losTimeout) && getSimTime() - %client.lastDamageTime < %losTimeout)
{ {
//see if the attacker is either our target or, we are their target //see if the attacker is either our target or, we are their target
if (%client.lastDamageClient == %client.objectiveTarget || %client.lastDamageClient.objectiveTarget == %client) if (%client.lastDamageClient == %client.objectiveTarget || %client.lastDamageClient.objectiveTarget == %client)
{ {
%mustEngage = true;
%currentTarget = %client.getEngageTarget(); %currentTarget = %client.getEngageTarget();
//see if this is a new attacker //see if this is a new attacker
@ -105,7 +110,40 @@ function AIBountyEngageTask::weight(%task, %client)
//now set the weight //now set the weight
if (%client.shouldEngage > 0) 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 else
%task.setWeight(0); %task.setWeight(0);
} }

View file

@ -18,5 +18,8 @@ function DMGame::onAIRespawn(%game, %client)
%client.addtask(AIDetectMineTask); %client.addtask(AIDetectMineTask);
%client.addTask(AIPatrolTask); %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()); %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) function listInv(%client)
{ {
%player = %client.player; %player = %client.player;
@ -152,6 +162,21 @@ function listInv(%client)
%count = %player.getInventory(ShockLance); %count = %player.getInventory(ShockLance);
if (%count > 0) if (%count > 0)
echo("ShockLance: " @ %count); 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() function createAIDebugDlg()

View file

@ -27,6 +27,9 @@ $AIHuntersWeightPickupFlag = 4425;
$AIRabbitWeightDefault = 4625; $AIRabbitWeightDefault = 4625;
$AIRabbitWeightNeedInv = 4325; $AIRabbitWeightNeedInv = 4325;
//Bounty weights...
$AIBountyWeightShouldEngage = 4325;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//AIEngageTask is responsible for anything to do with engaging an enemy //AIEngageTask is responsible for anything to do with engaging an enemy
@ -292,7 +295,9 @@ function AIPickupItemTask::weight(%task, %client)
if (!%item.isHidden()) if (!%item.isHidden())
{ {
%dist = %client.getPathDistance(%item.getWorldBoxCenter()); %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) 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) if (%closestItem > 0 && %closetItemDist < %closestHealthDist - 25 && (%damage < 0.6 || %currentTarget <= 0) && %closestItemLOS)
{ {
%task.pickupItem = %closestItem; %task.pickupItem = %closestItem;
if (AIEngageOutOfAmmo(%client)) if (AIEngageWeaponRating(%client) < 20)
%task.setWeight($AIWeightNeedItemBadly); %task.setWeight($AIWeightNeedItemBadly);
else if (%closestItemDist < 10 && %closestItemLOS) else if (%closestItemDist < 10 && %closestItemLOS)
%task.setWeight($AIWeightNeedItem); %task.setWeight($AIWeightNeedItem);
@ -363,7 +368,7 @@ function AIPickupItemTask::weight(%task, %client)
else if (%closestItem > 0) else if (%closestItem > 0)
{ {
%task.pickupItem = %closestItem; %task.pickupItem = %closestItem;
if (AIEngageOutOfAmmo(%client)) if (AIEngageWeaponRating(%client) < 20)
%task.setWeight($AIWeightNeedItemBadly); %task.setWeight($AIWeightNeedItemBadly);
else if (%closestItemDist < 10 && %closestItemLOS) else if (%closestItemDist < 10 && %closestItemLOS)
%task.setWeight($AIWeightNeedItem); %task.setWeight($AIWeightNeedItem);
@ -420,6 +425,31 @@ function AIUseInventoryTask::weight(%task, %client)
%damage = %player.getDamagePercent(); %damage = %player.getDamagePercent();
%weaponry = AIEngageWeaponRating(%client); %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 //first, see if we need equipment or health
if (%damage < 0.3 && %weaponry >= 40) if (%damage < 0.3 && %weaponry >= 40)
{ {
@ -456,15 +486,12 @@ function AIUseInventoryTask::weight(%task, %client)
%task.setWeight(0); %task.setWeight(0);
return; 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... //set the weight...
%task.closestInv = %closestInv; %task.closestInv = %closestInv;
if (%damage > 0.8 || AIEngageOutOfAmmo(%client)) if (%damage > 0.8 || AIEngageOutOfAmmo(%client))
%task.setWeight($AIWeightNeedItemBadly); %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); %task.setWeight($AIWeightNeedItem);
else if (%hasLOS) else if (%hasLOS)
%task.setWeight($AIWeightFoundItem); %task.setWeight($AIWeightFoundItem);
@ -481,7 +508,7 @@ function AIUseInventoryTask::monitor(%task, %client)
%damage = %player.getDamagePercent(); %damage = %player.getDamagePercent();
%weaponry = AIEngageWeaponRating(%client); %weaponry = AIEngageWeaponRating(%client);
if (%damage < 0.3 && %weaponry >= 40) if (%damage < 0.3 && %weaponry >= 40 && !%client.spawnUseInv)
{ {
%task.buyInvTime = getSimTime(); %task.buyInvTime = getSimTime();
return; return;
@ -491,13 +518,21 @@ function AIUseInventoryTask::monitor(%task, %client)
%randNum = getRandom(); %randNum = getRandom();
if (%randNum < 0.4) if (%randNum < 0.4)
%buySet = "LightEnergyDefault MediumEnergySet HeavyEnergySet"; %buySet = "LightEnergyDefault MediumEnergySet HeavyEnergySet";
else if (%randNum < 0.7) else if (%randNum < 0.6)
%buySet = "LightShieldSet MediumShieldSet HeavyShieldSet"; %buySet = "LightShieldSet MediumShieldSet HeavyShieldSet";
else else if (%randNum < 0.8)
%buySet = "LightEnergyELF MediumRepairSet HeavyAmmoSet"; %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); %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") if (%result !$= "InProgress")
%task.buyInvTime = getSimTime(); %task.buyInvTime = getSimTime();

View file

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

View file

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

View file

@ -15,6 +15,9 @@ function RabbitGame::onAIRespawn(%game, %client)
%client.addTask(AITauntCorpseTask); %client.addTask(AITauntCorpseTask);
%client.rabbitTask = %client.addTask(AIRabbitTask); %client.rabbitTask = %client.addTask(AIRabbitTask);
} }
//set the inv flag
%client.spawnUseInv = true;
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -68,6 +71,33 @@ function AIRabbitTask::weight(%task, %client)
%task.setWeight($AIRabbitWeightDefault); %task.setWeight($AIRabbitWeightDefault);
else else
%task.setWeight($AIRabbitWeightNeedInv); %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 = "1";
enableDirectInput(); activateDirectInput();
// chat hud dialog // chat hud dialog
Canvas.pushDialog( MainChatHud ); Canvas.pushDialog( MainChatHud );
@ -246,7 +246,11 @@ function PlayGui::onSleep(%this)
moveMap.pop(); moveMap.pop();
if ( isObject( passengerKeys ) ) if ( isObject( passengerKeys ) )
passengerKeys.pop(); passengerKeys.pop();
flyingCameraMove.pop(); if ( isObject( observerBlockMap ) )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
CursorOn(); CursorOn();
} }
@ -350,16 +354,6 @@ function ClientCmdVoteSubmitted(%type)
} }
// End client voting functions. // 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() function clientCmdEndBomberSight()
{ {
PlayGui.remove($bombSightHud); PlayGui.remove($bombSightHud);
@ -1769,11 +1763,17 @@ function sceneLightingComplete()
} }
clientCmdResetHud(); clientCmdResetHud();
%numChannels = $pref::Audio::microphoneEnabled ? $pref::audio::voiceChannels : 0; commandToServer('SetVoiceInfo', $pref::Audio::voiceChannels, $pref::Audio::decodingMask, $pref::Audio::encodingLevel);
commandToServer('SetVoiceChannels', %numChannels);
commandToServer('MissionStartPhase3Done', $MSeq); commandToServer('MissionStartPhase3Done', $MSeq);
} }
function clientCmdSetVoiceInfo(%channels, %decodingMask, %encodingLevel)
{
$Audio::serverChannels = %channels;
$Audio::serverDecodingMask = %decodingMask;
$Audio::serverEncodingLevel = %encodingLevel;
}
function ClientReceivedDataBlock(%index, %total) function ClientReceivedDataBlock(%index, %total)
{ {
%pct = %index / %total; %pct = %index / %total;

View file

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

View file

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

View file

@ -180,23 +180,6 @@ moveMap.bind( keyboard, "pageUp", pageMessageHudUp );
moveMap.bind( keyboard, "pageDown", pageMessageHudDown ); 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 ) function voiceCapture( %val )
{ {
if ( %val ) if ( %val )
@ -1031,7 +1014,18 @@ moveMap.bind( keyboard, insert, voteYes );
moveMap.bind( keyboard, delete, voteNo ); 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() function clientCmdSetWeaponryVehicleKeys()
{ {
@ -1104,6 +1098,12 @@ function clientCmdSetDefaultVehicleKeys(%inVehicle)
passengerKeys.copyBind( moveMap, setZoomFOV ); passengerKeys.copyBind( moveMap, setZoomFOV );
passengerKeys.copyBind( moveMap, toggleZoom ); 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: // Bind the chat keys as well:
passengerKeys.copyBind( moveMap, ToggleMessageHud ); passengerKeys.copyBind( moveMap, ToggleMessageHud );
passengerKeys.copyBind( moveMap, TeamMessageHud ); passengerKeys.copyBind( moveMap, TeamMessageHud );
@ -1229,9 +1229,7 @@ function serverCmdSetVehicleWeapon(%client, %num)
%turret.setImageTrigger(2, false); %turret.setImageTrigger(2, false);
%turret.setImageTrigger(4, false); %turret.setImageTrigger(4, false);
} }
} }
} }
function nextVehicleWeapon(%val) function nextVehicleWeapon(%val)

View file

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

View file

@ -15,8 +15,8 @@ $DamageType::Missile = 9;
$DamageType::ShockLance = 10; $DamageType::ShockLance = 10;
$DamageType::Mine = 11; $DamageType::Mine = 11;
$DamageType::Explosion = 12; $DamageType::Explosion = 12;
$DamageType::Impact = 13; $DamageType::Impact = 13; // Object to object collisions
$DamageType::Ground = 14; $DamageType::Ground = 14; // Object to ground collisions
$DamageType::Turret = 15; $DamageType::Turret = 15;
$DamageType::PlasmaTurret = 16; $DamageType::PlasmaTurret = 16;
@ -96,7 +96,73 @@ $DamageTypeText[99] = "suicide";
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// VEHICLE DAMAGE PROFILES // 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::Blaster] = 1.0;
shieldDamageScale[$DamageType::Bullet] = 1.0; shieldDamageScale[$DamageType::Bullet] = 1.0;
@ -123,7 +189,7 @@ datablock SimDataBlock(AirVehicleDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0; shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 3.5; shieldDamageScale[$DamageType::SatchelCharge] = 3.5;
shieldDamageScale[$DamageType::Default] = 1.0; shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0; shieldDamageScale[$DamageType::Impact] = 0.8;
shieldDamageScale[$DamageType::Ground] = 1.0; shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 3.0; shieldDamageScale[$DamageType::Explosion] = 3.0;
shieldDamageScale[$DamageType::Lightning] = 10.0; shieldDamageScale[$DamageType::Lightning] = 10.0;
@ -153,13 +219,78 @@ datablock SimDataBlock(AirVehicleDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 2.0; damageScale[$DamageType::PlasmaTurret] = 2.0;
damageScale[$DamageType::SatchelCharge] = 3.5; damageScale[$DamageType::SatchelCharge] = 3.5;
damageScale[$DamageType::Default] = 1.0; damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0; damageScale[$DamageType::Impact] = 0.8;
damageScale[$DamageType::Ground] = 1.0; damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 2.0; damageScale[$DamageType::Explosion] = 2.0;
damageScale[$DamageType::Lightning] = 10.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::Blaster] = 2.0;
shieldDamageScale[$DamageType::Bullet] = 2.5; shieldDamageScale[$DamageType::Bullet] = 2.5;
@ -185,7 +316,7 @@ datablock SimDataBlock(GravCycleDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0; shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 3.0; shieldDamageScale[$DamageType::SatchelCharge] = 3.0;
shieldDamageScale[$DamageType::Default] = 1.0; shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0; shieldDamageScale[$DamageType::Impact] = 1.25;
shieldDamageScale[$DamageType::Ground] = 1.0; shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0; shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 5.0; shieldDamageScale[$DamageType::Lightning] = 5.0;
@ -214,13 +345,14 @@ datablock SimDataBlock(GravCycleDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0; damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 2.2; damageScale[$DamageType::SatchelCharge] = 2.2;
damageScale[$DamageType::Default] = 1.0; damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0; damageScale[$DamageType::Impact] = 1.25;
damageScale[$DamageType::Ground] = 1.0; damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0; damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 5.0; damageScale[$DamageType::Lightning] = 5.0;
}; };
datablock SimDataBlock(GroundVehicleDamageProfile) //**** BEOWULF TANK ****
datablock SimDataBlock(TankDamageProfile)
{ {
shieldDamageScale[$DamageType::Blaster] = 0.6; shieldDamageScale[$DamageType::Blaster] = 0.6;
shieldDamageScale[$DamageType::Bullet] = 0.75; shieldDamageScale[$DamageType::Bullet] = 0.75;
@ -246,7 +378,7 @@ datablock SimDataBlock(GroundVehicleDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 1.25; shieldDamageScale[$DamageType::PlasmaTurret] = 1.25;
shieldDamageScale[$DamageType::SatchelCharge] = 2.0; shieldDamageScale[$DamageType::SatchelCharge] = 2.0;
shieldDamageScale[$DamageType::Default] = 1.0; shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0; shieldDamageScale[$DamageType::Impact] = 0.75;
shieldDamageScale[$DamageType::Ground] = 1.0; shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0; shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 10.0; shieldDamageScale[$DamageType::Lightning] = 10.0;
@ -275,7 +407,69 @@ datablock SimDataBlock(GroundVehicleDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0; damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 2.0; damageScale[$DamageType::SatchelCharge] = 2.0;
damageScale[$DamageType::Default] = 1.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::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0; damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 10.0; damageScale[$DamageType::Lightning] = 10.0;
@ -380,7 +574,7 @@ datablock SimDataBlock(StaticShapeDamageProfile)
shieldDamageScale[$DamageType::PlasmaTurret] = 2.0; shieldDamageScale[$DamageType::PlasmaTurret] = 2.0;
shieldDamageScale[$DamageType::SatchelCharge] = 6.0; shieldDamageScale[$DamageType::SatchelCharge] = 6.0;
shieldDamageScale[$DamageType::Default] = 1.0; shieldDamageScale[$DamageType::Default] = 1.0;
shieldDamageScale[$DamageType::Impact] = 1.0; shieldDamageScale[$DamageType::Impact] = 1.25;
shieldDamageScale[$DamageType::Ground] = 1.0; shieldDamageScale[$DamageType::Ground] = 1.0;
shieldDamageScale[$DamageType::Explosion] = 2.0; shieldDamageScale[$DamageType::Explosion] = 2.0;
shieldDamageScale[$DamageType::Lightning] = 5.0; shieldDamageScale[$DamageType::Lightning] = 5.0;
@ -410,7 +604,7 @@ datablock SimDataBlock(StaticShapeDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 2.0; damageScale[$DamageType::PlasmaTurret] = 2.0;
damageScale[$DamageType::SatchelCharge] = 4.0; damageScale[$DamageType::SatchelCharge] = 4.0;
damageScale[$DamageType::Default] = 1.0; damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0; damageScale[$DamageType::Impact] = 1.25;
damageScale[$DamageType::Ground] = 1.0; damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.0; damageScale[$DamageType::Explosion] = 1.0;
damageScale[$DamageType::Lightning] = 5.0; damageScale[$DamageType::Lightning] = 5.0;
@ -447,7 +641,7 @@ datablock SimDataBlock(LightPlayerDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0; damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 3.0; damageScale[$DamageType::SatchelCharge] = 3.0;
damageScale[$DamageType::Default] = 1.0; damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0; damageScale[$DamageType::Impact] = 1.2;
damageScale[$DamageType::Ground] = 1.0; damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 1.2; damageScale[$DamageType::Explosion] = 1.2;
damageScale[$DamageType::Lightning] = 1.0; damageScale[$DamageType::Lightning] = 1.0;
@ -513,7 +707,7 @@ datablock SimDataBlock(HeavyPlayerDamageProfile)
damageScale[$DamageType::PlasmaTurret] = 1.0; damageScale[$DamageType::PlasmaTurret] = 1.0;
damageScale[$DamageType::SatchelCharge] = 3.0; damageScale[$DamageType::SatchelCharge] = 3.0;
damageScale[$DamageType::Default] = 1.0; damageScale[$DamageType::Default] = 1.0;
damageScale[$DamageType::Impact] = 1.0; damageScale[$DamageType::Impact] = 0.8;
damageScale[$DamageType::Ground] = 1.0; damageScale[$DamageType::Ground] = 1.0;
damageScale[$DamageType::Explosion] = 0.6; damageScale[$DamageType::Explosion] = 0.6;
damageScale[$DamageType::Lightning] = 1.4; damageScale[$DamageType::Lightning] = 1.4;

View file

@ -927,6 +927,9 @@ function DefaultGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %
else else
aiReleaseHumanControl(%clVictim, %clVictim.controlAI); 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... //if the death was a suicide, prevent respawning for 5 seconds...
%clVictim.lastDeathSuicide = false; %clVictim.lastDeathSuicide = false;
if (%damageType == $DamageType::Suicide) if (%damageType == $DamageType::Suicide)
@ -2305,6 +2308,9 @@ function DefaultGame::sendGamePlayerPopupMenu( %game, %client, %targetClient, %k
%outrankTarget = !%targetClient.isSuperAdmin; %outrankTarget = !%targetClient.isSuperAdmin;
else if ( %client.isAdmin ) else if ( %client.isAdmin )
%outrankTarget = !%targetClient.isAdmin; %outrankTarget = !%targetClient.isAdmin;
if( ! %targetClient.matchStartReady )
return;
//mute options //mute options
if ( !%isTargetSelf ) if ( !%isTargetSelf )
@ -2509,14 +2515,28 @@ function DefaultGame::sendTimeLimitList( %game, %client, %key )
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// all global votes here // 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) if(%admin)
{ {
messageAll('MsgAdminChangeMission', '\c2The Admin has changed the mission to %1 (%2).', %missionDisplayName, %typeDisplayName ); messageAll('MsgAdminChangeMission', '\c2The Admin has changed the mission to %1 (%2).', %missionDisplayName, %typeDisplayName );
logEcho("mission changed to "@%missionDisplayName@"/"@%typeDisplayName@" (admin)"); logEcho("mission changed to "@%missionDisplayName@"/"@%typeDisplayName@" (admin)");
%game.gameOver(); %game.gameOver();
loadMission(%mission, %missionType, false); loadMission( %mission, %missionType, false );
} }
else 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 ); messageAll('MsgVotePassed', '\c2The mission was changed to %1 (%2) by vote.', %missionDisplayName, %typeDisplayName );
logEcho("mission changed to "@%missionDisplayName@"/"@%typeDisplayName@" (vote)"); logEcho("mission changed to "@%missionDisplayName@"/"@%typeDisplayName@" (vote)");
%game.gameOver(); %game.gameOver();
loadMission(%mission, %missionType, false); loadMission( %mission, %missionType, false );
} }
else else
messageAll('MsgVoteFailed', '\c2Change mission vote did not pass: %1 percent.', mFloor(%game.totalVotesFor/(ClientGroup.getCount() - $HostGameBotCount) * 100)); 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 = ""; %cause = "";
if (%admin) if (%admin)
{ {
@ -2904,9 +2938,6 @@ function DefaultGame::updateScoreHud(%game, %client, %tag)
%index++; %index++;
} }
//clear the rest of Hud so we don't get old lines hanging around...
messageClient( %client, 'ClearHud', "", %tag, %index );
} }
else 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); 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 //AI FUNCTIONS
function DefaultGame::AIChooseGameObjective(%game, %client) function DefaultGame::AIChooseGameObjective(%game, %client)

View file

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

View file

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

View file

@ -17,13 +17,12 @@ function joystickMoveY(%val)
$mvBackwardAction = ( %val > 0.0 ); $mvBackwardAction = ( %val > 0.0 );
} }
function joystickYaw(%val) function joyYaw(%val)
{ {
// Let the mapping system do all the scaling/inversion... $mvYaw += getMouseAdjustAmount( %val );
$mvYaw += %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['shellScreen'] = "";
} }
$HudHandle['loadingScreen'] = alxPlay(LoadingScreenSound, 0, 0, 0); $HudHandle['loadingScreen'] = alxPlay(LoadingScreenSound, 0, 0, 0);
CloseMessagePopup();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -103,7 +103,7 @@ function setupObjHud(%gameType)
profile = "GuiTextObjGreenCenterProfile"; profile = "GuiTextObjGreenCenterProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "100 3"; position = "105 3";
extent = "50 16"; extent = "50 16";
visible = "1"; visible = "1";
}; };
@ -111,7 +111,7 @@ function setupObjHud(%gameType)
profile = "GuiTextObjHudCenterProfile"; profile = "GuiTextObjHudCenterProfile";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
position = "100 19"; position = "105 19";
extent = "50 16"; extent = "50 16";
visible = "1"; visible = "1";
}; };
@ -783,17 +783,6 @@ function cnhAddTeam(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6)
objectiveHud.numHeld[%teamNum].setValue(%held); 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); addMessageCallback('MsgFlipFlopsHeld', hudFlipFlopsHeld);
function hudFlipFlopsHeld(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6) function hudFlipFlopsHeld(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6)

View file

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

View file

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

View file

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

View file

@ -303,7 +303,6 @@ function ShockLanceImage::onFire(%this, %obj, %slot)
$TypeMasks::ForceFieldObjectType | $TypeMasks::ForceFieldObjectType |
$TypeMasks::StaticObjectType | $TypeMasks::StaticObjectType |
$TypeMasks::MoveableObjectType | $TypeMasks::MoveableObjectType |
$TypeMasks::PathedObjectType |
$TypeMasks::DamagableItemObjectType; $TypeMasks::DamagableItemObjectType;
// did I miss anything? players, vehicles, stations, gens, sensors, turrets // 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") if(%hitObj.getDataBlock().getClassName() $= "PlayerData")
{ {
// Now we see if we hit from behind... // 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... // 120 Deg angle test...
if (%dot > mCos(1.05)) { // 1.05 == 60 degrees in radians
if (%dot >= mCos(1.05)) {
// Rear hit // Rear hit
%damageMultiplier = 3.0; %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) function ELFProjectile::checkELFStatus(%this, %data, %target, %targeter)
{ {
if(isObject(%target)) if(isObject(%target))
{ {
if(%target.getDamageState() $= "Destroyed")
{
%data.targetDestroyedCancel(%this, %target, %targeter);
return;
}
%enLevel = %target.getEnergyLevel(); %enLevel = %target.getEnergyLevel();
if(%enLevel < 1.0) if(%enLevel < 1.0)
{ {
%dataBlock = %target.getDataBlock(); %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 else

View file

@ -49,7 +49,6 @@ function CreateServer(%mission, %missionType)
exec("scripts/station.cs"); exec("scripts/station.cs");
exec("scripts/simGroup.cs"); exec("scripts/simGroup.cs");
exec("scripts/trigger.cs"); exec("scripts/trigger.cs");
exec("scripts/pathedObject.cs");
exec("scripts/forceField.cs"); exec("scripts/forceField.cs");
exec("scripts/lightning.cs"); exec("scripts/lightning.cs");
exec("scripts/weather.cs"); exec("scripts/weather.cs");
@ -78,7 +77,7 @@ function CreateServer(%mission, %missionType)
$HostGamePlayerCount = 0; $HostGamePlayerCount = 0;
if ( $HostGameType !$= "SinglePlayer" ) if ( $HostGameType !$= "SinglePlayer" )
allowConnections(true); allowConnections(true);
new SimGroup (ServerGroup); $ServerGroup = new SimGroup (ServerGroup);
if(%mission $= "") if(%mission $= "")
{ {
%mission = $HostMissionFile[$HostMission[0,0]]; %mission = $HostMissionFile[$HostMission[0,0]];
@ -117,13 +116,48 @@ function CreateServer(%mission, %missionType)
loadMission(%mission, %missionType, true); 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() function CycleMissions()
{ {
echo( "cycling mission. " @ ClientGroup.getCount() @ " clients in game." ); echo( "cycling mission. " @ ClientGroup.getCount() @ " clients in game." );
%nextMission = getNextMission($CurrentMission, $CurrentMissionType); %nextMission = findNextCycleMission();
messageAll( 'MsgClient', 'Loading %1 (%2)...', %nextMission, $CurrentMissionType ); messageAll( 'MsgClient', 'Loading %1 (%2)...', %nextMission, $MissionTypeDisplayName );
loadMission( %nextMission, $CurrentMissionType );
loadMission(%nextMission, $CurrentMissionType);
} }
function DestroyServer() function DestroyServer()
@ -131,8 +165,8 @@ function DestroyServer()
$missionRunning = false; $missionRunning = false;
allowConnections(false); allowConnections(false);
stopHeartbeat(); stopHeartbeat();
if(isObject(ServerGroup)) if(isObject($ServerGroup))
ServerGroup.delete(); $ServerGroup.delete();
// delete all the connections: // delete all the connections:
while(ClientGroup.getCount()) while(ClientGroup.getCount())
@ -194,6 +228,8 @@ function DisconnectedCleanup()
MusicPlayer.stop(); MusicPlayer.stop();
clearTextureHolds(); clearTextureHolds();
purgeResources(); purgeResources();
IRCClient::onLeaveGame();
} }
function kick(%client, %admin) 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: // Override the connect name if this server does not allow smurfs:
%realName = getField( %authInfo, 0 ); %realName = getField( %authInfo, 0 );
if ( $Host::NoSmurfs ) if ( $PlayingOnline && $Host::NoSmurfs )
%name = %realName; %name = %realName;
if ( strcmp( %name, %realName ) == 0 ) if ( strcmp( %name, %realName ) == 0 )
@ -439,7 +475,6 @@ function GameConnection::onConnect( %client, %name, %raceGender, %skin, %voice,
// commandToClient(%client, 'getManagerID', %client); // commandToClient(%client, 'getManagerID', %client);
commandToClient(%client, 'setVoiceCodec', $Audio::voiceCodec);
commandToClient(%client, 'setBeaconNames', "Target Beacon", "Marker Beacon", "Bomb Target"); commandToClient(%client, 'setBeaconNames', "Target Beacon", "Marker Beacon", "Bomb Target");
if ( $CurrentMissionType !$= "SinglePlayer" ) if ( $CurrentMissionType !$= "SinglePlayer" )
@ -571,6 +606,8 @@ function loadMissionStage1(%missionName, %missionType, %firstMission)
MissionCleanup.delete(); MissionCleanup.delete();
Game.deactivatePackages(); Game.deactivatePackages();
Game.delete(); Game.delete();
$ServerGroup.delete();
$ServerGroup = new SimGroup(ServerGroup);
} }
$CurrentMission = %missionName; $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 ) 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 ) function serverCmdClientJoinTeam( %client, %team )
@ -1257,7 +1318,7 @@ function serverCmdGetTeamList( %client, %key )
function serverCmdGetMissionTypes( %client, %key ) function serverCmdGetMissionTypes( %client, %key )
{ {
for ( %type = 0; %type < $HostTypeCount; %type++ ) 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 ) function serverCmdGetMissionList( %client, %key, %type )
@ -1267,16 +1328,17 @@ function serverCmdGetMissionList( %client, %key, %type )
for ( %i = $HostMissionCount[%type] - 1; %i >= 0; %i-- ) 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 we have bots, don't change to a mission that doesn't support bots:
if ( $HostGameBotCount > 0 ) if ( $HostGameBotCount > 0 )
{ {
if( !$BotEnabled[$HostMission[%type,%i]] ) if( !$BotEnabled[%idx] )
continue; continue;
} }
%idx = $HostMission[%type, %i];
messageClient( %client, 'MsgVoteItem', "", %key, messageClient( %client, 'MsgVoteItem', "", %key,
$HostMissionFile[%idx], // actual filename, will be stored in $clVoteCmd %idx, // mission index, will be stored in $clVoteCmd
"", "",
$HostMissionName[%idx], $HostMissionName[%idx],
true ); true );

View file

@ -24,8 +24,7 @@ $holoName[6] = "Harbinger";
$Host::AdminList = ""; // all players that will be automatically an admin upon joining server $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::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::BindAddress = ""; // set to an ip address if the server wants to specify which NIC/IP to use
$Host::RulesSet = "Base";
$Host::Port = 28000; $Host::Port = 28000;
$Host::GameName = "Tribes 2 Server"; $Host::GameName = "Tribes 2 Server";
$Host::Password = ""; $Host::Password = "";
@ -54,4 +53,64 @@ $Host::MaxMessageLen = 120;
$MasterServerAddress = "IP:198.74.40.152:28000"; $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"); %obj.schedule(750, "playThread", $PowerThread, "Power");
else else
%obj.playThread($PowerThread,"Power"); %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 !$= "") if(%data.humSound !$= "")
%obj.playAudio($HumSound, %data.humSound); %obj.playAudio($HumSound, %data.humSound);
%obj.setPoweredState(true); %obj.setPoweredState(true);

View file

@ -332,7 +332,7 @@ function StationInventory::getSound(%data, %forward)
function StationInventory::setPlayersPosition(%data, %obj, %trigger, %colObj) function StationInventory::setPlayersPosition(%data, %obj, %trigger, %colObj)
{ {
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0"; %vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 17) && (%obj.triggeredBy != %colObj)) if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{ {
%pos = %trigger.position; %pos = %trigger.position;
%colObj.setvelocity("0 0 0"); %colObj.setvelocity("0 0 0");
@ -428,7 +428,7 @@ function StationVehicle::getSound(%data, %forward)
function StationVehicle::setPlayersPosition(%data, %obj, %trigger, %colObj) function StationVehicle::setPlayersPosition(%data, %obj, %trigger, %colObj)
{ {
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0"; %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); %posXY = getWords(%trigger.getTransform(),0 ,1);
%posZ = getWord(%trigger.getTransform(), 2); %posZ = getWord(%trigger.getTransform(), 2);
@ -473,30 +473,21 @@ function StationVehiclePad::onAdd(%this, %obj)
%sv.trigger.disableObj = %sv; %sv.trigger.disableObj = %sv;
//Remove unwanted vehicles //Remove unwanted vehicles
if(%obj.scoutVehicle $= "Removed") if(%obj.scoutVehicle !$= "Removed")
{ } %sv.vehicle[scoutvehicle] = true;
else if(%obj.assaultVehicle !$= "Removed")
%sv.vehicle[scoutvehicle] = true; %sv.vehicle[assaultVehicle] = true;
if(%obj.assaultVehicle $= "Removed") if(%obj.mobileBaseVehicle !$= "Removed")
{ } {
else %sv.vehicle[mobileBasevehicle] = true;
%sv.vehicle[assaultVehicle] = true; // createTeleporter(%sv.getDataBlock(), %sv);
if(%obj.mobileBaseVehicle $= "Removed") }
{ } if(%obj.scoutFlyer !$= "Removed")
else %sv.vehicle[scoutFlyer] = true;
%sv.vehicle[mobileBasevehicle] = true; if(%obj.bomberFlyer !$= "Removed")
if(%obj.scoutFlyer $= "Removed") %sv.vehicle[bomberFlyer] = true;
{ } if(%obj.hapcFlyer !$= "Removed")
else %sv.vehicle[hapcFlyer] = true;
%sv.vehicle[scoutFlyer] = true;
if(%obj.bomberFlyer $= "Removed")
{ }
else
%sv.vehicle[bomberFlyer] = true;
if(%obj.hapcFlyer $= "Removed")
{ }
else
%sv.vehicle[hapcFlyer] = true;
} }
function StationVehiclePad::onEndSequence(%data, %obj, %thread) function StationVehiclePad::onEndSequence(%data, %obj, %thread)
@ -606,7 +597,7 @@ function MobileInvStation::getSound(%data, %forward)
function MobileInvStation::setPlayersPosition(%data, %obj, %trigger, %colObj) function MobileInvStation::setPlayersPosition(%data, %obj, %trigger, %colObj)
{ {
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0"; %vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0";
if((VectorLen(%vel) < 17) && (%obj.triggeredBy != %colObj)) if((VectorLen(%vel) < 22) && (%obj.triggeredBy != %colObj))
{ {
%pos = %trigger.position; %pos = %trigger.position;
%colObj.setvelocity("0 0 0"); %colObj.setvelocity("0 0 0");
@ -708,8 +699,10 @@ function stationTrigger::onLeaveTrigger(%data, %obj, %colObj)
%obj.station.getDataBlock().endRepairing(%obj.station); %obj.station.getDataBlock().endRepairing(%obj.station);
%obj.station.triggeredBy = ""; %obj.station.triggeredBy = "";
%obj.station.getDataBlock().stationTriggered(%obj.station, 0); %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]) if(%colObj.inv[%colObj.lastWeapon])
%colObj.use(%colObj.lastWeapon); %colObj.use(%colObj.lastWeapon);
@ -732,30 +725,35 @@ function stationTrigger::onLeaveTrigger(%data, %obj, %colObj)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
function Station::stationTriggered(%data, %obj, %isTriggered) function Station::stationTriggered(%data, %obj, %isTriggered)
{ {
if(%isTriggered) if(%data.teleporter $= "")
{ {
%obj.setThreadDir($ActivateThread, TRUE); if(%isTriggered)
%obj.playThread($ActivateThread,"activate");
%obj.playAudio($ActivateSound, %data.getSound(true));
%obj.inUse = "Up";
}
else
{
if(%obj.getDataBlock().getName() !$= StationVehicle)
{ {
%obj.stopThread($ActivateThread); %obj.setThreadDir($ActivateThread, TRUE);
if(%obj.getObjectMount()) %obj.playThread($ActivateThread,"activate");
%obj.getObjectMount().stopThread($ActivateThread); %obj.playAudio($ActivateSound, %data.getSound(true));
%obj.inUse = "Down"; %obj.inUse = "Up";
} }
else else
{ {
%obj.setThreadDir($ActivateThread, FALSE); if(%obj.getDataBlock().getName() !$= StationVehicle)
%obj.playThread($ActivateThread,"activate"); {
%obj.playAudio($ActivateSound, %data.getSound(false)); %obj.stopThread($ActivateThread);
%obj.inUse = "Down"; 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-/////////////////////////////////////////////////////////////////// ////-Station-///////////////////////////////////////////////////////////////////
@ -899,7 +897,7 @@ function DeployedStationInventory::stationFinished(%data, %obj)
function DeployedStationInventory::setPlayersPosition(%data, %obj, %trigger, %colObj) function DeployedStationInventory::setPlayersPosition(%data, %obj, %trigger, %colObj)
{ {
%vel = getWords(%colObj.getVelocity(), 0, 1) @ " 0"; %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 // build offset for player position
%yrot = getWords(VectorOrthoBasis( getWords( %obj.getTransform(), 3, 6 ) ) ,3 ,5); %yrot = getWords(VectorOrthoBasis( getWords( %obj.getTransform(), 3, 6 ) ) ,3 ,5);
@ -943,3 +941,333 @@ function DeployedStationInventory::getSound(%data, %forward)
else else
return false; 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; seekRadius = 200;
maxSeekAngle = 6; maxSeekAngle = 6;
seekTime = 1.0; seekTime = 1.0;
minSeekHeat = 0.5; minSeekHeat = 0.7;
useTargetAudio = false; useTargetAudio = false;
// Turret parameters // Turret parameters

View file

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

View file

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

View file

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

View file

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

View file

@ -200,6 +200,7 @@ function VehicleData::onLeaveLiquid(%data, %obj, %type)
function VehicleData::onDestroyed(%data, %obj, %prevState) function VehicleData::onDestroyed(%data, %obj, %prevState)
{ {
radiusVehicleExplosion(%data, %obj);
if(%obj.turretObject) if(%obj.turretObject)
if(%obj.turretObject.getControllingClient()) if(%obj.turretObject.getControllingClient())
%obj.turretObject.getDataBlock().playerDismount(%obj.turretObject); %obj.turretObject.getDataBlock().playerDismount(%obj.turretObject);
@ -219,6 +220,79 @@ function VehicleData::onDestroyed(%data, %obj, %prevState)
%obj.schedule(300, "delete"); %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() function VehicleData::deleteAllMounted()
{ {
@ -396,6 +470,10 @@ function MobileBaseVehicle::deleteAllMounted(%data, %obj)
} }
if(isObject(%obj.shield)) if(isObject(%obj.shield))
%obj.shield.delete(); %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.open();
%obj.shield.schedule(1000,"delete"); %obj.shield.schedule(1000,"delete");
%obj.deploySchedule = ""; %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; %obj.deployed = 0;
} }
@ -634,7 +719,7 @@ function MobileBaseVehicle::vehicleDeploy(%data, %obj, %player)
%obj.station.setSelfPowered(); %obj.station.setSelfPowered();
%obj.station.playThread($PowerThread,"Power"); %obj.station.playThread($PowerThread,"Power");
%obj.station.playAudio($HumSound,StationHumSound); %obj.station.playAudio($HumSound,StationHumSound);
%obj.station.vehicle = %obj;
%obj.turret = new turret() { %obj.turret = new turret() {
scale = "1 1 1"; scale = "1 1 1";
dataBlock = "MobileTurretBase"; dataBlock = "MobileTurretBase";
@ -642,10 +727,13 @@ function MobileBaseVehicle::vehicleDeploy(%data, %obj, %player)
homingCount = "0"; homingCount = "0";
team = %obj.team; team = %obj.team;
}; };
%obj.turret.setDamageLevel(%obj.getDamageLevel());
%obj.mountObject(%obj.turret, 1); %obj.mountObject(%obj.turret, 1);
%obj.turret.setSelfPowered(); %obj.turret.setSelfPowered();
%obj.turret.playThread($PowerThread,"Power"); %obj.turret.playThread($PowerThread,"Power");
%obj.turret.mountImage(MissileBarrelLarge, 0 ,false); %obj.turret.mountImage(MissileBarrelLarge, 0 ,false);
checkSpawnPos(%obj, 20);
} }
} }
else else
@ -725,6 +813,8 @@ function MobileBaseVehicle::onEndSequence(%data, %obj, %thread)
%obj.station.goingOut = true; %obj.station.goingOut = true;
%obj.shield.setTransform(%obj.getSlotTransform(3)); %obj.shield.setTransform(%obj.getSlotTransform(3));
%obj.shield.close(); %obj.shield.close();
%obj.isDeployed = true;
%obj.noEnemyControl = 1;
} }
Parent::onEndSequence(%data, %obj, %thread); Parent::onEndSequence(%data, %obj, %thread);
@ -735,7 +825,13 @@ function MobileInvStation::onEndSequence(%data, %obj, %thread)
if(!%obj.goingOut) if(!%obj.goingOut)
%obj.startFade(0,0,true); %obj.startFade(0,0,true);
else else
{
%obj.notDeployed = 0; %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); Parent::onEndSequence(%data, %obj, %thread);
} }
@ -800,10 +896,21 @@ function MobileBaseVehicle::checkDeploy(%data, %obj)
function MobileBaseVehicle::checkTurretDistance(%data, %obj) function MobileBaseVehicle::checkTurretDistance(%data, %obj)
{ {
%pos = getWords(%obj.getTransform(), 0, 2); %pos = getWords(%obj.getTransform(), 0, 2);
InitContainerRadiusSearch(%pos, 150, $TypeMasks::TurretObjectType); InitContainerRadiusSearch(%pos, 100, $TypeMasks::TurretObjectType | $TypeMasks::InteriorObjectType);
while ((%objFound = ContainerSearchNext()) != 0) 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 ""; return "";
} }
@ -979,7 +1086,7 @@ function VehicleData::damageObject(%data, %targetObject, %sourceObject, %positio
function VehicleData::onImpact(%data, %vehicleObject, %collidedObject, %vec, %vecLen) function VehicleData::onImpact(%data, %vehicleObject, %collidedObject, %vec, %vecLen)
{ {
if(%vecLen > %data.minImpactSpeed) 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); %vecLen * %data.speedDamageScale, $DamageType::Ground);
// associated "crash" sounds // associated "crash" sounds

View file

@ -101,7 +101,7 @@ datablock AudioProfile(BomberBombIdleSound)
// VEHICLE CHARACTERISTICS // VEHICLE CHARACTERISTICS
//************************************************************** //**************************************************************
datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile datablock FlyingVehicleData(BomberFlyer) : BomberDamageProfile
{ {
spawnOffset = "0 0 2"; spawnOffset = "0 0 2";
@ -129,6 +129,8 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
cameraOffset = 5; cameraOffset = 5;
cameraLag = 1.0; cameraLag = 1.0;
explosion = LargeAirVehicleExplosion; explosion = LargeAirVehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
maxDamage = 2.80; // Total health maxDamage = 2.80; // Total health
destroyedLevel = 2.80; // Damage textures show up at this health level 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) rotationalDrag = 1800; // Angular Drag (dampens the drift after you stop moving the mouse...also tumble drag)
rechargeRate = 0.8; 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 // Auto stabilize speed
maxAutoSpeed = 15; // Autostabilizer kicks in when less than this speed. (meters/second) 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) 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 hoverHeight = 5; // Height off the ground at rest
createHoverHeight = 3; // Height off the ground when created 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; dustEmitter = LargeVehicleLiftoffDustEmitter;
triggerDustHeight = 4.0; triggerDustHeight = 4.0;
dustHeight = 2.0; dustHeight = 2.0;
@ -181,13 +183,16 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
bodyFriction = 0; // Don't mess with this. bodyFriction = 0; // Don't mess with this.
bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1) bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1)
minRollSpeed = 0; // Don't mess with this. minRollSpeed = 0; // Don't mess with this.
minImpactSpeed = 8; // If hit ground at speed above this then it's an impact. Meters/second softImpactSpeed = 20; // Sound hooks. This is the soft hit.
softImpactSpeed = 10; // Sound hooks. This is the soft hit.
hardImpactSpeed = 25; // Sound hooks. This is the hard hit. hardImpactSpeed = 25; // Sound hooks. This is the hard hit.
speedDamageScale = 0.035;
collDamageThresholdVel = 20.0; // Ground Impact Damage (uses DamageType::Ground)
collDamageMultiplier = 0.025; 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. minTrailSpeed = 15; // The speed your contrail shows up at.
@ -204,9 +209,9 @@ datablock FlyingVehicleData(BomberFlyer) : AirVehicleDamageProfile
// //
softSplashSoundVelocity = 15.0; softSplashSoundVelocity = 15.0;
mediumSplashSoundVelocity = 30.0; mediumSplashSoundVelocity = 20.0;
hardSplashSoundVelocity = 60.0; hardSplashSoundVelocity = 30.0;
exitSplashSoundVelocity = 20.0; exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterHardSound; exitingWater = VehicleExitWaterHardSound;
impactWaterEasy = VehicleImpactWaterSoftSound; impactWaterEasy = VehicleImpactWaterSoftSound;

View file

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

View file

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

View file

@ -44,7 +44,7 @@ datablock AudioProfile(ShrikeBlasterDryFireSound)
// VEHICLE CHARACTERISTICS // VEHICLE CHARACTERISTICS
//************************************************************** //**************************************************************
datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile datablock FlyingVehicleData(ScoutFlyer) : ShrikeDamageProfile
{ {
spawnOffset = "0 0 2"; spawnOffset = "0 0 2";
@ -66,6 +66,8 @@ datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
cameraOffset = 2.5; cameraOffset = 2.5;
cameraLag = 0.9; cameraLag = 0.9;
explosion = VehicleExplosion; explosion = VehicleExplosion;
explosionDamage = 0.5;
explosionRadius = 5.0;
maxDamage = 1.40; maxDamage = 1.40;
destroyedLevel = 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) rotationalDrag = 900; // Anguler Drag (dampens the drift after you stop moving the mouse...also tumble drag)
rechargeRate = 0.8; 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) 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) 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) 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 hoverHeight = 5; // Height off the ground at rest
createHoverHeight = 3; // Height off the ground when created 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 // Rigid body
mass = 150; // Mass of the vehicle mass = 150; // Mass of the vehicle
bodyFriction = 0; // Don't mess with this. bodyFriction = 0; // Don't mess with this.
bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1) bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1)
minRollSpeed = 0; // Don't mess with this. minRollSpeed = 0; // Don't mess with this.
minImpactSpeed = 8; // If hit ground at speed above this then it's an impact. Meters/second softImpactSpeed = 14; // Sound hooks. This is the soft hit.
softImpactSpeed = 10; // Sound hooks. This is the soft hit.
hardImpactSpeed = 25; // Sound hooks. This is the hard 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; collDamageMultiplier = 0.02;
// //
@ -126,10 +131,10 @@ datablock FlyingVehicleData(ScoutFlyer) : AirVehicleDamageProfile
//wheelImpactSound = WheelImpactSound; //wheelImpactSound = WheelImpactSound;
// //
softSplashSoundVelocity = 15.0; softSplashSoundVelocity = 10.0;
mediumSplashSoundVelocity = 30.0; mediumSplashSoundVelocity = 15.0;
hardSplashSoundVelocity = 60.0; hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 20.0; exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterMediumSound; exitingWater = VehicleExitWaterMediumSound;
impactWaterEasy = VehicleImpactWaterSoftSound; impactWaterEasy = VehicleImpactWaterSoftSound;

View file

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

View file

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

View file

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

View file

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

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