diff --git a/main/alienofficial.cfg b/main/alienofficial.cfg
new file mode 100644
index 00000000..ebe0382a
--- /dev/null
+++ b/main/alienofficial.cfg
@@ -0,0 +1,5 @@
+//Alien cfg that is part of a default installation on the NS Launcher
+//Activated by pressing F2 (which also is used to join aliens)
+
+//bind "mouse2" "+movement"
+//psoff
\ No newline at end of file
diff --git a/main/cl_dlls/client.dll b/main/cl_dlls/client.dll
index 6b1fe1c5..08d0f97e 100644
Binary files a/main/cl_dlls/client.dll and b/main/cl_dlls/client.dll differ
diff --git a/main/config.cfg b/main/config.cfg
index 9cb24302..8cb7a17b 100644
--- a/main/config.cfg
+++ b/main/config.cfg
@@ -6,10 +6,7 @@ bind "TAB" "+showscores"
bind "ENTER" "messagemode"
bind "ESCAPE" "cancelselect"
bind "SPACE" "+jump"
-bind "'" "+moveup"
-bind "+" "sizeup"
bind "," "impulse 123"
-bind "-" "sizedown"
bind "." "impulse 124"
bind "/" "impulse 125"
bind "0" "slot10"
@@ -22,10 +19,6 @@ bind "6" "slot6"
bind "7" "slot7"
bind "8" "slot8"
bind "9" "slot9"
-bind ";" "+mlook"
-bind "=" "sizeup"
-bind "[" "invprev"
-bind "]" "invnext"
bind "`" "toggleconsole"
bind "a" "+moveleft"
bind "c" "+showmap"
@@ -35,13 +28,14 @@ bind "f" "impulse 100"
bind "g" "impulse 3"
bind "l" "impulse 105"
bind "q" "lastinv"
-bind "r" "+reload"
+bind "r" "+movement"
bind "s" "+back"
-bind "t" "impulse 201"
+bind "b" "impulse 11"
+bind "t" "+popupmenu"
bind "u" "messagemode2"
-bind "v" "impulse 9"
+bind "v" "impulse 10"
bind "w" "+forward"
-bind "x" "impulse 81"
+bind "x" "impulse 14"
bind "y" "messagemode"
bind "z" "impulse 80"
bind "~" "toggleconsole"
@@ -52,47 +46,50 @@ bind "RIGHTARROW" "+right"
bind "ALT" "+voicerecord"
bind "CTRL" "+duck"
bind "SHIFT" "+speed"
-bind "F1" "jointeamone"
-bind "F2" "jointeamtwo"
+alias "marinecfg" "exec marineofficial.cfg"
+alias "aliencfg" "exec alienofficial.cfg"
+bind "F1" "jointeamone;marinecfg"
+bind "F2" "jointeamtwo;aliencfg"
bind "F3" "autoassign"
bind "F4" "readyroom"
bind "F5" "snapshot"
-bind "F6" "save quick"
-bind "F7" "load quick"
-bind "F10" "quit prompt"
-bind "INS" "+klook"
bind "PGDN" "+lookdown"
bind "PGUP" "+lookup"
bind "END" "centerview"
bind "MWHEELDOWN" "invnext"
bind "MWHEELUP" "invprev"
bind "MOUSE1" "+attack"
-bind "MOUSE2" "+popupmenu"
+bind "MOUSE2" "+movement"
bind "MOUSE3" "+popupmenu"
bind "MOUSE4" "lastinv"
bind "PAUSE" "pause"
_snd_mixahead "0.1"
-ati_npatch "1.0"
-ati_subdiv "2.0"
+ati_npatch "0"
+ati_subdiv "0"
bgmvolume "1.000000"
bottomcolor "144.889999"
-brightness "1.000000"
+brightness "5"
cl_allowdownload "1"
cl_allowupload "1"
cl_autohelp "1.0"
cl_buildmessages "1"
cl_centerentityid "0.0"
cl_cmdbackup "2"
-cl_cmdrate "30"
+cl_cmdrate "100"
cl_cmhotkeys "qwerasdfzxcv"
+cl_customcrosshair "0"
cl_dlmax "128"
cl_download_ingame "1"
-cl_dynamiclights "1"
+cl_dynamiclights "0"
cl_forcedefaultfov "0"
-cl_gammaramp "1"
+cl_gammaramp "0"
cl_highdetail "1"
cl_himodels "0"
+cl_iconb "221"
+cl_icong "149"
+cl_iconr "0"
cl_idealpitchscale "0.8"
+cl_labelhivesight "1"
cl_labelmaps "1"
cl_lc "1"
cl_logocolor "#Valve_Orange"
@@ -100,24 +97,26 @@ cl_logofile "lambda"
cl_lw "1"
cl_musicdelay "90"
cl_musicdirectory ""
-cl_musicenabled "1.0"
cl_musicvolume "155"
+cl_musicenabled "0"
cl_particleinfo "0"
cl_quickselecttime ".15"
cl_timeout "60"
-cl_updaterate "20"
+cl_updaterate "100"
cl_vsmoothing "0.05"
con_color "255 180 30"
console "1.000000"
-crosshair "1.000000"
-fps_max "72.0"
+crosshair "0"
+fps_max "250"
+fps_override "1"
fps_modem "0.0"
-gamma "2.500000"
+gamma "3"
+gl_vsync "0"
gl_dither "1"
gl_flipmatrix "0"
gl_fog "1"
gl_monolights "0"
-gl_overbright "0"
+gl_overbright "1"
gl_polyoffset "0.1"
hisound "1"
hpk_maxsize "4"
@@ -125,7 +124,7 @@ hud_capturemouse "1"
hud_centerid "0"
hud_classautokill "1"
hud_draw "1"
-hud_fastswitch "0"
+hud_fastswitch "1"
hud_takesshots "0"
joystick "0"
lookspring "0.000000"
@@ -137,7 +136,7 @@ m_side "0.8"
m_yaw "0.022"
model "barney"
MP3FadeTime "2.0"
-MP3Volume "0.8"
+MP3Volume "0"
mp_decals "300"
name "NSPlayer"
net_graph "0"
@@ -162,7 +161,7 @@ s_refdelay "4"
s_refgain "0.4"
s_rolloff "1.0"
s_verbwet "0.25"
-sensitivity "4.960000"
+sensitivity "2"
skin ""
suitvolume "0.250000"
sv_aim "0"
@@ -174,7 +173,14 @@ voice_enable "1"
voice_forcemicrecord "1"
voice_modenable "1"
voice_scale "1"
-volume "0.800000"
+volume "0.500000"
+m_rawinput "1"
+zoom_sensitivity_ratio "1"
+lightgamma "2"
+ex_interp "0.05"
+cl_cross "1"
+rate "30000"
+cl_bob "0"
+
+mlook
-+jlook
exec userconfig.cfg
diff --git a/main/dlls/ns.dll b/main/dlls/ns.dll
index 940d35e1..99a8c6ea 100644
Binary files a/main/dlls/ns.dll and b/main/dlls/ns.dll differ
diff --git a/main/gfx/vgui/640_checkset.tga b/main/gfx/vgui/640_checkset.tga
index f8df2b7e..372fb992 100644
Binary files a/main/gfx/vgui/640_checkset.tga and b/main/gfx/vgui/640_checkset.tga differ
diff --git a/main/gfx/vgui/640_checkunset.tga b/main/gfx/vgui/640_checkunset.tga
index 87b380ff..0c43f607 100644
Binary files a/main/gfx/vgui/640_checkunset.tga and b/main/gfx/vgui/640_checkunset.tga differ
diff --git a/main/marineofficial.cfg b/main/marineofficial.cfg
new file mode 100644
index 00000000..eed112f7
--- /dev/null
+++ b/main/marineofficial.cfg
@@ -0,0 +1,6 @@
+//Marine cfg that is part of a default installation on the NS Launcher
+//Activated by pressing F1 (which also is used to join marines)
+
+
+//bind "mouse2" "impulse 10"
+//pson
\ No newline at end of file
diff --git a/main/oldbinds.cfg b/main/oldbinds.cfg
new file mode 100644
index 00000000..630567ab
--- /dev/null
+++ b/main/oldbinds.cfg
@@ -0,0 +1,71 @@
+writecfg b4oldbinds
+unbindall
+bind "TAB" "+showscores"
+bind "ENTER" "messagemode"
+bind "ESCAPE" "cancelselect"
+bind "SPACE" "+jump"
+bind "'" "+moveup"
+bind "+" "sizeup"
+bind "," "impulse 123"
+bind "-" "sizedown"
+bind "." "impulse 124"
+bind "/" "impulse 125"
+bind "0" "slot10"
+bind "1" "slot1"
+bind "2" "slot2"
+bind "3" "slot3"
+bind "4" "slot4"
+bind "5" "slot5"
+bind "6" "slot6"
+bind "7" "slot7"
+bind "8" "slot8"
+bind "9" "slot9"
+bind ";" "+mlook"
+bind "=" "sizeup"
+bind "[" "invprev"
+bind "]" "invnext"
+bind "`" "toggleconsole"
+bind "a" "+moveleft"
+bind "c" "+showmap"
+bind "d" "+moveright"
+bind "e" "+use"
+bind "f" "impulse 100"
+bind "g" "impulse 3"
+bind "l" "impulse 105"
+bind "q" "lastinv"
+bind "r" "+movement"
+bind "s" "+back"
+bind "t" "impulse 201"
+bind "u" "messagemode2"
+bind "v" "impulse 9"
+bind "w" "+forward"
+bind "x" "impulse 14"
+bind "y" "messagemode"
+bind "z" "impulse 7"
+bind "~" "toggleconsole"
+bind "UPARROW" "+forward"
+bind "DOWNARROW" "+back"
+bind "LEFTARROW" "+left"
+bind "RIGHTARROW" "+right"
+bind "ALT" "+voicerecord"
+bind "CTRL" "+duck"
+bind "SHIFT" "+speed"
+bind "F1" "jointeamone"
+bind "F2" "jointeamtwo"
+bind "F3" "autoassign"
+bind "F4" "readyroom"
+bind "F5" "snapshot"
+bind "F6" "save quick"
+bind "F7" "load quick"
+bind "F10" "quit prompt"
+bind "INS" "+klook"
+bind "PGDN" "+lookdown"
+bind "PGUP" "+lookup"
+bind "END" "centerview"
+bind "MWHEELDOWN" "invnext"
+bind "MWHEELUP" "invprev"
+bind "MOUSE1" "+attack"
+bind "MOUSE2" "+popupmenu"
+bind "MOUSE3" "+popupmenu"
+bind "MOUSE4" "lastinv"
+bind "PAUSE" "pause"
\ No newline at end of file
diff --git a/main/olddefaults.cfg b/main/olddefaults.cfg
new file mode 100644
index 00000000..43254673
--- /dev/null
+++ b/main/olddefaults.cfg
@@ -0,0 +1,189 @@
+// This file is overwritten whenever you change your user settings in the game.
+// Add custom configurations to the file "userconfig.cfg".
+
+//Backs up current cfg before proceeding.
+writecfg "backupb4old"
+
+//NS 3.2 official config.cfg
+unbindall
+bind "TAB" "+showscores"
+bind "ENTER" "messagemode"
+bind "ESCAPE" "cancelselect"
+bind "SPACE" "+jump"
+bind "'" "+moveup"
+bind "+" "sizeup"
+bind "," "impulse 123"
+bind "-" "sizedown"
+bind "." "impulse 124"
+bind "/" "impulse 125"
+bind "0" "slot10"
+bind "1" "slot1"
+bind "2" "slot2"
+bind "3" "slot3"
+bind "4" "slot4"
+bind "5" "slot5"
+bind "6" "slot6"
+bind "7" "slot7"
+bind "8" "slot8"
+bind "9" "slot9"
+bind ";" "+mlook"
+bind "=" "sizeup"
+bind "[" "invprev"
+bind "]" "invnext"
+bind "`" "toggleconsole"
+bind "a" "+moveleft"
+bind "c" "+showmap"
+bind "d" "+moveright"
+bind "e" "+use"
+bind "f" "impulse 100"
+bind "g" "impulse 3"
+bind "l" "impulse 105"
+bind "q" "lastinv"
+bind "r" "+movement"
+bind "s" "+back"
+bind "t" "impulse 201"
+bind "u" "messagemode2"
+bind "v" "impulse 9"
+bind "w" "+forward"
+bind "x" "impulse 14"
+bind "y" "messagemode"
+bind "z" "impulse 7"
+bind "~" "toggleconsole"
+bind "UPARROW" "+forward"
+bind "DOWNARROW" "+back"
+bind "LEFTARROW" "+left"
+bind "RIGHTARROW" "+right"
+bind "ALT" "+voicerecord"
+bind "CTRL" "+duck"
+bind "SHIFT" "+speed"
+bind "F1" "jointeamone"
+bind "F2" "jointeamtwo"
+bind "F3" "autoassign"
+bind "F4" "readyroom"
+bind "F5" "snapshot"
+bind "F6" "save quick"
+bind "F7" "load quick"
+bind "F10" "quit prompt"
+bind "INS" "+klook"
+bind "PGDN" "+lookdown"
+bind "PGUP" "+lookup"
+bind "END" "centerview"
+bind "MWHEELDOWN" "invnext"
+bind "MWHEELUP" "invprev"
+bind "MOUSE1" "+attack"
+bind "MOUSE2" "+popupmenu"
+bind "MOUSE3" "+popupmenu"
+bind "MOUSE4" "lastinv"
+bind "PAUSE" "pause"
+_snd_mixahead "0.1"
+ati_npatch "1.0"
+ati_subdiv "2.0"
+bgmvolume "1.000000"
+bottomcolor "144.889999"
+brightness "1.000000"
+cl_allowdownload "1"
+cl_allowupload "1"
+cl_autohelp "1.0"
+cl_buildmessages "1"
+cl_centerentityid "0.0"
+cl_cmdbackup "2"
+cl_cmdrate "30"
+cl_cmhotkeys "qwerasdfzxcv"
+cl_customcrosshair "1"
+cl_dlmax "128"
+cl_download_ingame "1"
+cl_dynamiclights "1"
+cl_forcedefaultfov "0"
+cl_gammaramp "1"
+cl_highdetail "1"
+cl_himodels "0"
+cl_iconb "221"
+cl_icong "149"
+cl_iconr "0"
+cl_idealpitchscale "0.8"
+cl_labelhivesight "1"
+cl_labelmaps "1"
+cl_lc "1"
+cl_logocolor "#Valve_Orange"
+cl_logofile "lambda"
+cl_lw "1"
+cl_musicdelay "90"
+cl_musicdirectory ""
+cl_musicenabled "1.0"
+cl_musicvolume "155"
+cl_particleinfo "0"
+cl_quickselecttime ".15"
+cl_timeout "60"
+cl_updaterate "20"
+cl_vsmoothing "0.05"
+con_color "255 180 30"
+console "1.000000"
+crosshair "1.000000"
+fps_max "72.0"
+fps_modem "0.0"
+gamma "2.500000"
+gl_dither "1"
+gl_flipmatrix "0"
+gl_fog "1"
+gl_monolights "0"
+gl_overbright "0"
+gl_polyoffset "0.1"
+hisound "1"
+hpk_maxsize "4"
+hud_capturemouse "1"
+hud_centerid "0"
+hud_classautokill "1"
+hud_draw "1"
+hud_fastswitch "0"
+hud_takesshots "0"
+joystick "0"
+lookspring "0.000000"
+lookstrafe "0.000000"
+m_filter "0"
+m_forward "1"
+m_pitch "0.022000"
+m_side "0.8"
+m_yaw "0.022"
+model "barney"
+MP3FadeTime "2.0"
+MP3Volume "0.8"
+mp_decals "300"
+name "NSPlayer"
+net_graph "0"
+net_graphpos "1"
+net_scale "5"
+r_bmodelhighfrac "5.0"
+r_detailtextures "0"
+s_a3d "0.0"
+s_automax_distance "30.0"
+s_automin_distance "2.0"
+s_bloat "2.0"
+s_distance "60"
+s_doppler "0.0"
+s_eax "0.0"
+s_leafnum "0"
+s_max_distance "1000.0"
+s_min_distance "8.0"
+s_numpolys "200"
+s_polykeep "1000000000"
+s_polysize "10000000"
+s_refdelay "4"
+s_refgain "0.4"
+s_rolloff "1.0"
+s_verbwet "0.25"
+sensitivity "4.960000"
+skin ""
+suitvolume "0.250000"
+sv_aim "0"
+sv_voiceenable "1"
+team ""
+topcolor "151.169998"
+viewsize "120.000000"
+voice_enable "1"
+voice_forcemicrecord "1"
+voice_modenable "1"
+voice_scale "1"
+volume "0.800000"
++mlook
++jlook
+exec userconfig.cfg
\ No newline at end of file
diff --git a/main/source/cl_dll/chud.h b/main/source/cl_dll/chud.h
index 85609c29..a3e5cde5 100644
--- a/main/source/cl_dll/chud.h
+++ b/main/source/cl_dll/chud.h
@@ -4,6 +4,7 @@
#include "chudmisc.h"
#include "hud_spectator.h"
#include "AvHFont.h"
+#include "hud_crosshairs.h"
class CHud
@@ -82,7 +83,8 @@ public:
CHudAmmoSecondary m_AmmoSecondary;
CHudTextMessage m_TextMessage;
CHudStatusIcons m_StatusIcons;
-
+ CHudCrosshairs m_Crosshairs;
+
AvHFont mFont;
AvHFont mSmallFont;
diff --git a/main/source/cl_dll/cl_dll.vcxproj b/main/source/cl_dll/cl_dll.vcxproj
index d56c8780..6ac6a83a 100644
--- a/main/source/cl_dll/cl_dll.vcxproj
+++ b/main/source/cl_dll/cl_dll.vcxproj
@@ -72,7 +72,7 @@
false
- particles.lib;vgui.lib;zlib.lib;libpng.lib;wsock32.lib;sdl2.lib;%(AdditionalDependencies)
+ particles.lib;vgui.lib;zlib.lib;libpng.lib;wsock32.lib;sdl2.lib;opengl32.lib;%(AdditionalDependencies)
true
$(SolutionDir)\particles\Release;$(SolutionDir)\includes\lpng1251;$(SolutionDir)\includes\zlib-1.2.8;$(SolutionDir)\includes\vgui\lib\win32_vc6;$(SolutionDir)\lib\public;%(AdditionalLibraryDirectories)
@@ -170,6 +170,10 @@
MaxSpeed
%(AdditionalIncludeDirectories)
+
+ MaxSpeed
+ %(AdditionalIncludeDirectories)
+
MaxSpeed
%(AdditionalIncludeDirectories)
@@ -190,6 +194,10 @@
MaxSpeed
%(AdditionalIncludeDirectories)
+
+ MaxSpeed
+ %(AdditionalIncludeDirectories)
+
MaxSpeed
%(AdditionalIncludeDirectories)
@@ -805,6 +813,8 @@
+
+
diff --git a/main/source/cl_dll/cl_dll.vcxproj.filters b/main/source/cl_dll/cl_dll.vcxproj.filters
index 4bc1e2e5..63cc5236 100644
--- a/main/source/cl_dll/cl_dll.vcxproj.filters
+++ b/main/source/cl_dll/cl_dll.vcxproj.filters
@@ -594,6 +594,12 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
@@ -1040,6 +1046,12 @@
textrep
+
+ Header Files
+
+
+ Header Files
+
diff --git a/main/source/cl_dll/hud.cpp b/main/source/cl_dll/hud.cpp
index 88c98d0c..191894fc 100644
--- a/main/source/cl_dll/hud.cpp
+++ b/main/source/cl_dll/hud.cpp
@@ -203,15 +203,15 @@ void CHud :: Init( void )
g_bDuckToggled = false;
// :
- CVAR_CREATE( "zoom_sensitivity_ratio", "1.2", 0 );
+ CVAR_CREATE( "zoom_sensitivity_ratio", "1", 0 );
default_fov = CVAR_CREATE( "default_fov", "90", 0 );
m_pCvarStealMouse = CVAR_CREATE( "hud_capturemouse", "1", FCVAR_ARCHIVE );
m_pCvarDraw = CVAR_CREATE( "hud_draw", "1", FCVAR_ARCHIVE );
cl_lw = gEngfuncs.pfnGetCvarPointer( "cl_lw" );
CVAR_CREATE( "cl_showspeed", "0", 0);
- CVAR_CREATE( kvLabelMaps, "1", FCVAR_ARCHIVE);
- CVAR_CREATE( kvGammaRamp, "1", FCVAR_ARCHIVE);
+ CVAR_CREATE( kvLabelMaps, "3", FCVAR_ARCHIVE);
+ CVAR_CREATE( kvGammaRamp, "0", FCVAR_ARCHIVE);
CVAR_CREATE( kvCustomCrosshair, "1", FCVAR_ARCHIVE);
CVAR_CREATE( kvHudMapZoom, "3", FCVAR_ARCHIVE);
CVAR_CREATE( kvLabelHivesight, "1", FCVAR_ARCHIVE);
@@ -251,6 +251,7 @@ void CHud :: Init( void )
m_AmmoSecondary.Init();
m_TextMessage.Init();
m_StatusIcons.Init();
+ m_Crosshairs.Init();
m_Spectator.m_chatEnabled = (m_SayText.m_HUD_saytext->value!=0);
@@ -315,8 +316,16 @@ void CHud :: VidInit( void )
gHUD.SetViewport(theViewPort);
- mFont.Load("sprites/font_arial");
- mSmallFont.Load("sprites/font_arialsmall");
+ if (CVAR_GET_FLOAT("hud_style") == 2.0f)
+ {
+ mFont.Load("sprites/nl/font_arial");
+ mSmallFont.Load("sprites/nl/font_arialsmall");
+ }
+ else
+ {
+ mFont.Load("sprites/font_arial");
+ mSmallFont.Load("sprites/font_arialsmall");
+ }
// ----------
// Load Sprites
@@ -335,6 +344,9 @@ void CHud :: VidInit( void )
if ( !m_pSpriteList )
{
// we need to load the hud.txt, and all sprites within
+ if (CVAR_GET_FLOAT("hud_style") == 2.0f)
+ m_pSpriteList = SPR_GetList("sprites/hudnl.txt", &m_iSpriteCountAllRes);
+ else
m_pSpriteList = SPR_GetList("sprites/hud.txt", &m_iSpriteCountAllRes);
if (m_pSpriteList)
@@ -414,6 +426,7 @@ void CHud :: VidInit( void )
m_AmmoSecondary.VidInit();
m_TextMessage.VidInit();
m_StatusIcons.VidInit();
+ m_Crosshairs.VidInit();
GetClientVoiceMgr()->VidInit();
}
@@ -535,7 +548,7 @@ int CHud::MsgFunc_SetFOV(const char *pszName, int iSize, void *pbuf)
// the clients fov is actually set in the client data update section of the hud
// Set a new sensitivity
- if ( m_iFOV == def_fov )
+ if ( m_iFOV == def_fov || CVAR_GET_FLOAT("senslock") == 1.0f)
{
// reset to saved sensitivity
m_flMouseSensitivity = 0;
diff --git a/main/source/cl_dll/hud_crosshairs.cpp b/main/source/cl_dll/hud_crosshairs.cpp
new file mode 100644
index 00000000..adcfd396
--- /dev/null
+++ b/main/source/cl_dll/hud_crosshairs.cpp
@@ -0,0 +1,219 @@
+#include "hud.h"
+#include "cl_util.h"
+#include "parsemsg.h"
+#include "hudgl.h"
+
+// Crosshair system based on OpenAG
+// https://github.com/YaLTeR/OpenAG
+
+int CHudCrosshairs::Init()
+{
+ m_iFlags = HUD_ACTIVE;
+
+ cl_cross = CVAR_CREATE("cl_cross", "0", FCVAR_ARCHIVE);
+ cl_cross_color = CVAR_CREATE("cl_cross_color", "255 255 255", FCVAR_ARCHIVE);
+ cl_cross_alpha = CVAR_CREATE("cl_cross_alpha", "255", FCVAR_ARCHIVE);
+ cl_cross_thickness = CVAR_CREATE("cl_cross_thickness", "2", FCVAR_ARCHIVE);
+ cl_cross_size = CVAR_CREATE("cl_cross_size", "6", FCVAR_ARCHIVE);
+ cl_cross_gap = CVAR_CREATE("cl_cross_gap", "3", FCVAR_ARCHIVE);
+ cl_cross_outline = CVAR_CREATE("cl_cross_outline", "2", FCVAR_ARCHIVE);
+ cl_cross_outline_alpha = CVAR_CREATE("cl_cross_outline_alpha", "255", FCVAR_ARCHIVE);
+ cl_cross_outline_inner = CVAR_CREATE("cl_cross_outline_inner", "0", FCVAR_ARCHIVE);
+ cl_cross_circle_radius = CVAR_CREATE("cl_cross_circle_radius", "0", FCVAR_ARCHIVE);
+ cl_cross_dot_size = CVAR_CREATE("cl_cross_dot_size", "0", FCVAR_ARCHIVE);
+ cl_cross_dot_color = CVAR_CREATE("cl_cross_dot_color", "", FCVAR_ARCHIVE);
+ cl_cross_dot_outline = CVAR_CREATE("cl_cross_dot_outline", "0", FCVAR_ARCHIVE);
+ cl_cross_line_top = CVAR_CREATE("cl_cross_line_top", "1", FCVAR_ARCHIVE);
+ cl_cross_line_bottom = CVAR_CREATE("cl_cross_line_bottom", "1", FCVAR_ARCHIVE);
+ cl_cross_line_left = CVAR_CREATE("cl_cross_line_left", "1", FCVAR_ARCHIVE);
+ cl_cross_line_right = CVAR_CREATE("cl_cross_line_right", "1", FCVAR_ARCHIVE);
+
+ gHUD.AddHudElem(this);
+ return 0;
+}
+
+int CHudCrosshairs::VidInit()
+{
+ return 1;
+}
+
+int CHudCrosshairs::Draw(float time)
+{
+ if (cl_cross->value == 0.0f)
+ return 0;
+
+ unsigned char alpha;
+ if (sscanf(cl_cross_alpha->string, "%hhu", &alpha) != 1)
+ alpha = 255;
+
+ if (alpha == 0)
+ return 0;
+
+ if (gHUD.GetInTopDownMode())
+ return 0;
+
+ // outline alpha perhaps unnecessary since odd numbered thicknesses feather the outline edges
+ unsigned char outalpha;
+ if (sscanf(cl_cross_outline_alpha->string, "%hhu", &outalpha) != 1)
+ outalpha = 255;
+
+ if (outalpha == 0)
+ return 0;
+
+ unsigned char r, g, b;
+ if (sscanf(cl_cross_color->string, "%hhu %hhu %hhu", &r, &g, &b) != 3) {
+ r = 0;
+ g = 255;
+ b = 0;
+ }
+
+
+ Vector2D center(ScreenWidth() / 2.0f, ScreenHeight() / 2.0f);
+
+ HudGL gl;
+
+ // Draw the outline.
+ // TODO: this contains a terrible amount of repeating complex code.
+ //
+ // Possible solution: can be changed to this with the one downside being in rare cases where cl_cross_thickness is high AND its alpha is <255, the center of each line will be slightly darker.
+ // Example below is for bottom line. Would also cause certain crosshairs that have outlines on invisible cross lines to not look right.
+ // gl.rectangle(Vector2D(center.x + offset, center.y + gap - half_width), Vector2D(center.x - offset, center.y + gap + size + half_width));
+ if (cl_cross_outline->value > 0.0f) {
+ //gl.color(0, 0, 0, alpha);
+ gl.color(0, 0, 0, outalpha);
+ gl.line_width(cl_cross_outline->value);
+
+ float size = cl_cross_size->value;
+ float gap = cl_cross_gap->value;
+ float half_thickness = cl_cross_thickness->value / 2.0f;
+ float half_width = cl_cross_outline->value / 2.0f;
+ float offset = half_thickness + half_width;
+
+ // Top line
+ if (cl_cross_line_top->value) {
+ gl.line(Vector2D(center.x - offset, center.y - gap - size), Vector2D(center.x + offset, center.y - gap - size));
+ if (cl_cross_outline_inner->value == 0.0f)
+ {
+ gl.line(Vector2D(center.x + half_thickness, center.y - gap - size + half_width), Vector2D(center.x + half_thickness, center.y - gap));
+ gl.line(Vector2D(center.x - half_thickness, center.y - gap), Vector2D(center.x - half_thickness, center.y - gap - size + half_width));
+ }
+ else
+ {
+ gl.line(Vector2D(center.x + half_thickness, center.y - gap - size + half_width), Vector2D(center.x + half_thickness, center.y - gap - half_width));
+ gl.line(Vector2D(center.x + offset, center.y - gap), Vector2D(center.x - offset, center.y - gap));
+ gl.line(Vector2D(center.x - half_thickness, center.y - gap - half_width), Vector2D(center.x - half_thickness, center.y - gap - size + half_width));
+ }
+ }
+
+ // Bottom line
+ if (cl_cross_line_bottom->value) {
+ gl.line(Vector2D(center.x - offset, center.y + gap + size), Vector2D(center.x + offset, center.y + gap + size));
+ if (cl_cross_outline_inner->value == 0.0f)
+ {
+ gl.line(Vector2D(center.x + half_thickness, center.y + gap + size - half_width), Vector2D(center.x + half_thickness, center.y + gap));
+ gl.line(Vector2D(center.x - half_thickness, center.y + gap), Vector2D(center.x - half_thickness, center.y + gap + size - half_width));
+ }
+ else
+ {
+ gl.line(Vector2D(center.x + half_thickness, center.y + gap + size - half_width), Vector2D(center.x + half_thickness, center.y + gap + half_width));
+ gl.line(Vector2D(center.x + offset, center.y + gap), Vector2D(center.x - offset, center.y + gap));
+ gl.line(Vector2D(center.x - half_thickness, center.y + gap + half_width), Vector2D(center.x - half_thickness, center.y + gap + size - half_width));
+ }
+ }
+
+ // Left line
+ if (cl_cross_line_left->value) {
+ gl.line(Vector2D(center.x - gap - size, center.y - offset), Vector2D(center.x - gap - size, center.y + offset));
+ if (cl_cross_outline_inner->value == 0.0f)
+ {
+ gl.line(Vector2D(center.x - gap - size + half_width, center.y + half_thickness), Vector2D(center.x - gap, center.y + half_thickness));
+ gl.line(Vector2D(center.x - gap, center.y - half_thickness), Vector2D(center.x - gap - size + half_width, center.y - half_thickness));
+ }
+ else
+ {
+ gl.line(Vector2D(center.x - gap - size + half_width, center.y + half_thickness), Vector2D(center.x - gap - half_width, center.y + half_thickness));
+ gl.line(Vector2D(center.x - gap, center.y + offset), Vector2D(center.x - gap, center.y - offset));
+ gl.line(Vector2D(center.x - gap - half_width, center.y - half_thickness), Vector2D(center.x - gap - size + half_width, center.y - half_thickness));
+ }
+ }
+
+ // Right line
+ if (cl_cross_line_right->value) {
+ gl.line(Vector2D(center.x + gap + size, center.y - offset), Vector2D(center.x + gap + size, center.y + offset));
+ if (cl_cross_outline_inner->value == 0.0f)
+ {
+ gl.line(Vector2D(center.x + gap + size - half_width, center.y + half_thickness), Vector2D(center.x + gap, center.y + half_thickness));
+ gl.line(Vector2D(center.x + gap, center.y - half_thickness), Vector2D(center.x + gap + size - half_width, center.y - half_thickness));
+ }
+ else
+ {
+ gl.line(Vector2D(center.x + gap + size - half_width, center.y + half_thickness), Vector2D(center.x + gap + half_width, center.y + half_thickness));
+ gl.line(Vector2D(center.x + gap, center.y + offset), Vector2D(center.x + gap, center.y - offset));
+ gl.line(Vector2D(center.x + gap + half_width, center.y - half_thickness), Vector2D(center.x + gap + size - half_width, center.y - half_thickness));
+ }
+ }
+
+ // Dot
+ if (cl_cross_dot_size->value > 0.0f && cl_cross_dot_outline->value > 0.0f) {
+ float size = cl_cross_dot_size->value;
+ Vector2D offset = Vector2D(size / 2.0f, size / 2.0f);
+ float dot_half_width = cl_cross_dot_outline->value / 2.0f;
+
+ gl.line(Vector2D(center.x - offset.x - dot_half_width, center.y - offset.y), Vector2D(center.x + offset.x + dot_half_width, center.y - offset.y));
+ gl.line(Vector2D(center.x + offset.x, center.y - offset.y + dot_half_width), Vector2D(center.x + offset.x, center.y + offset.y - dot_half_width));
+ gl.line(Vector2D(center.x - offset.x, center.y - offset.y + dot_half_width), Vector2D(center.x - offset.x, center.y + offset.y - dot_half_width));
+ gl.line(Vector2D(center.x - offset.x - dot_half_width, center.y + offset.y), Vector2D(center.x + offset.x + dot_half_width, center.y + offset.y));
+ }
+ }
+
+ gl.color(r, g, b, alpha);
+
+ // Draw the crosshairs.
+ if (cl_cross_thickness->value > 0.0f) {
+ gl.line_width(cl_cross_thickness->value);
+
+ float size = cl_cross_size->value;
+ float gap = cl_cross_gap->value;
+
+ if (cl_cross_line_top->value)
+ gl.line(Vector2D(center.x, center.y - gap - size), Vector2D(center.x, center.y - gap));
+ if (cl_cross_line_bottom->value)
+ gl.line(Vector2D(center.x, center.y + gap + size), Vector2D(center.x, center.y + gap));
+ if (cl_cross_line_left->value)
+ gl.line(Vector2D(center.x - gap - size, center.y), Vector2D(center.x - gap, center.y));
+ if (cl_cross_line_right->value)
+ gl.line(Vector2D(center.x + gap + size, center.y), Vector2D(center.x + gap, center.y));
+ }
+
+#ifdef __APPLE__
+ //Remove when OSX builds with c++11
+#else
+ // Draw the circle.
+ if (cl_cross_circle_radius->value > 0.0f) {
+ gl.line_width(1.0f);
+
+ float radius = cl_cross_circle_radius->value;
+ if (old_circle_radius != radius) {
+ // Recompute the circle points.
+ circle_points = HudGL::compute_circle(radius);
+ old_circle_radius = radius;
+ }
+
+ gl.circle(center, circle_points);
+ }
+#endif
+
+ // Draw the dot.
+ if (cl_cross_dot_size->value > 0.0f) {
+ unsigned char r, g, b;
+ if (sscanf(cl_cross_dot_color->string, "%hhu %hhu %hhu", &r, &g, &b) == 3)
+ gl.color(r, g, b, alpha);
+
+ float size = cl_cross_dot_size->value;
+ Vector2D offset = Vector2D(size / 2.0f, size / 2.0f);
+
+ gl.rectangle(center - offset, center + offset);
+ }
+
+ return 0;
+}
diff --git a/main/source/cl_dll/hud_crosshairs.h b/main/source/cl_dll/hud_crosshairs.h
new file mode 100644
index 00000000..a313ddb4
--- /dev/null
+++ b/main/source/cl_dll/hud_crosshairs.h
@@ -0,0 +1,38 @@
+#pragma once
+#include
+
+// Crosshair system based on OpenAG
+// https://github.com/YaLTeR/OpenAG
+
+class CHudCrosshairs : public CHudBase
+{
+ cvar_t* cl_cross;
+ cvar_t* cl_cross_color;
+ cvar_t* cl_cross_alpha;
+ cvar_t* cl_cross_thickness;
+ cvar_t* cl_cross_size;
+ cvar_t* cl_cross_gap;
+ cvar_t* cl_cross_outline;
+ cvar_t* cl_cross_outline_alpha;
+ cvar_t* cl_cross_outline_inner;
+ cvar_t* cl_cross_circle_radius;
+ cvar_t* cl_cross_dot_size;
+ cvar_t* cl_cross_dot_color;
+ cvar_t* cl_cross_dot_outline;
+ cvar_t* cl_cross_line_top;
+ cvar_t* cl_cross_line_bottom;
+ cvar_t* cl_cross_line_left;
+ cvar_t* cl_cross_line_right;
+
+#ifdef __APPLE__
+ //Remove when OSX builds with c++11
+#else
+ float old_circle_radius;
+ std::vector circle_points;
+#endif
+
+public:
+ virtual int Init();
+ virtual int VidInit();
+ virtual int Draw(float time);
+};
diff --git a/main/source/cl_dll/hud_redraw.cpp b/main/source/cl_dll/hud_redraw.cpp
index db8cf6c7..6adfce21 100644
--- a/main/source/cl_dll/hud_redraw.cpp
+++ b/main/source/cl_dll/hud_redraw.cpp
@@ -70,7 +70,7 @@ void CHud::Think(void)
// the clients fov is actually set in the client data update section of the hud
// Set a new sensitivity
- if ( m_iFOV == default_fov->value )
+ if ( m_iFOV == default_fov->value || CVAR_GET_FLOAT("senslock") == 1.0f)
{
// reset to saved sensitivity
m_flMouseSensitivity = 0;
diff --git a/main/source/cl_dll/hudgl.cpp b/main/source/cl_dll/hudgl.cpp
new file mode 100644
index 00000000..2b43e27e
--- /dev/null
+++ b/main/source/cl_dll/hudgl.cpp
@@ -0,0 +1,97 @@
+#define _USE_MATH_DEFINES
+#include "util_vector.h"
+#include "hudgl.h"
+
+#include
+#include
+
+#ifdef _WIN32
+#include
+#endif
+
+#ifdef __APPLE__
+#include
+#else
+#include
+#endif
+
+HudGL::HudGL() {
+ // Same steps as FillRGBA does.
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+}
+
+HudGL::~HudGL() {
+ // Reset the line width in case we changed it.
+ glLineWidth(1.0f);
+
+ // Same steps as FillRGBA does.
+ glColor3f(1.0f, 1.0f, 1.0f);
+ glDisable(GL_BLEND);
+ glEnable(GL_TEXTURE_2D);
+}
+
+void HudGL::color(float r, float g, float b, float a) const {
+ glColor4f(r, g, b, a);
+}
+
+void HudGL::color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) const {
+ glColor4ub(r, g, b, a);
+}
+
+void HudGL::line_width(float width) const {
+ glLineWidth(width);
+}
+
+void HudGL::line(const Vector2D& start, const Vector2D& end) const {
+ glBegin(GL_LINES);
+ glVertex2f(start.x, start.y);
+ glVertex2f(end.x, end.y);
+ glEnd();
+}
+
+#ifdef __APPLE__
+//Remove when OSX builds with c++11
+#else
+void HudGL::circle(const Vector2D& center, const std::vector& points) const {
+ glBegin(GL_LINE_STRIP);
+
+ for (const Vector2D& point : points)
+ glVertex2f(center.x + point.x, center.y + point.y);
+
+ glVertex2f(center.x + points[0].x, center.y + points[0].y);
+ glEnd();
+}
+#endif
+
+void HudGL::rectangle(const Vector2D& corner_a, const Vector2D& corner_b) const {
+ glBegin(GL_QUADS);
+ glVertex2f(corner_a.x, corner_a.y);
+ glVertex2f(corner_a.x, corner_b.y);
+ glVertex2f(corner_b.x, corner_b.y);
+ glVertex2f(corner_b.x, corner_a.y);
+ glEnd();
+}
+
+#ifdef __APPLE__
+//Remove when OSX builds with c++11
+#else
+std::vector HudGL::compute_circle(float radius) {
+ // Maximum allowed distance between the circle and the rendered line segment.
+ const float MAX_ERROR = 0.1f;
+ const unsigned segment_count =
+ static_cast(std::ceil(M_PI / std::acos((radius - MAX_ERROR) / radius)));
+
+ std::vector points;
+ points.reserve(segment_count);
+
+ for (unsigned i = 0; i < segment_count; ++i) {
+ float angle = static_cast(M_PI * 2 * i / segment_count);
+ points.emplace_back(radius * std::cos(angle), radius * std::sin(angle));
+ }
+
+ return points;
+}
+#endif
\ No newline at end of file
diff --git a/main/source/cl_dll/hudgl.h b/main/source/cl_dll/hudgl.h
new file mode 100644
index 00000000..49ad88cc
--- /dev/null
+++ b/main/source/cl_dll/hudgl.h
@@ -0,0 +1,24 @@
+#include
+
+class HudGL {
+public:
+ HudGL();
+ ~HudGL();
+
+ void color(float r, float g, float b, float a) const;
+ void color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) const;
+ void line_width(float width) const;
+ void line(const Vector2D& start, const Vector2D& end) const;
+#ifdef __APPLE__
+ //Remove when OSX builds with c++11
+#else
+ void circle(const Vector2D& center, const std::vector& points) const;
+#endif
+ void rectangle(const Vector2D& corner_a, const Vector2D& corner_b) const;
+
+#ifdef __APPLE__
+ //Remove when OSX builds with c++11
+#else
+ static std::vector compute_circle(float radius);
+#endif
+};
diff --git a/main/source/cl_dll/input.cpp b/main/source/cl_dll/input.cpp
index 28ea4073..dcfb233a 100644
--- a/main/source/cl_dll/input.cpp
+++ b/main/source/cl_dll/input.cpp
@@ -138,6 +138,9 @@ cvar_t *cl_dynamiclights;
cvar_t *cl_buildmessages;
cvar_t *cl_particleinfo;
cvar_t *cl_widescreen;
+cvar_t *cl_ambientsound;
+cvar_t *senslock;
+cvar_t *hud_style;
/*
===============================================================================
@@ -1533,7 +1536,7 @@ void InitInput (void)
cl_autohelp = gEngfuncs.pfnRegisterVariable ( kvAutoHelp, "1.0", FCVAR_ARCHIVE );
cl_centerentityid = gEngfuncs.pfnRegisterVariable ( kvCenterEntityID, "0.0", FCVAR_ARCHIVE );
- cl_musicenabled = gEngfuncs.pfnRegisterVariable ( kvMusicEnabled, "1.0", FCVAR_ARCHIVE );
+ cl_musicenabled = gEngfuncs.pfnRegisterVariable ( kvMusicEnabled, "0", FCVAR_ARCHIVE );
cl_musicvolume = gEngfuncs.pfnRegisterVariable ( kvMusicVolume, "155", FCVAR_ARCHIVE );
cl_musicdir = gEngfuncs.pfnRegisterVariable ( kvMusicDirectory, "", FCVAR_ARCHIVE);
cl_musicdelay = gEngfuncs.pfnRegisterVariable ( kvMusicDelay, "90", FCVAR_ARCHIVE);
@@ -1546,6 +1549,9 @@ void InitInput (void)
cl_forcedefaultfov = gEngfuncs.pfnRegisterVariable ( kvForceDefaultFOV, "0", FCVAR_ARCHIVE );
cl_particleinfo = gEngfuncs.pfnRegisterVariable ( kvParticleInfo, "0", FCVAR_ARCHIVE );
cl_widescreen = gEngfuncs.pfnRegisterVariable ( kvWidescreen, "1", FCVAR_ARCHIVE );
+ cl_ambientsound = gEngfuncs.pfnRegisterVariable ( kvAmbientSound, "2", FCVAR_ARCHIVE);
+ senslock = gEngfuncs.pfnRegisterVariable ("senslock", "0", FCVAR_ARCHIVE);
+ hud_style = gEngfuncs.pfnRegisterVariable ("hud_style", "1", FCVAR_ARCHIVE);
// Initialize third person camera controls.
CAM_Init();
diff --git a/main/source/cl_dll/vgui_SpectatorPanel.cpp b/main/source/cl_dll/vgui_SpectatorPanel.cpp
index 625a8fcd..e42662d1 100644
--- a/main/source/cl_dll/vgui_SpectatorPanel.cpp
+++ b/main/source/cl_dll/vgui_SpectatorPanel.cpp
@@ -161,10 +161,10 @@ void SpectatorPanel::Initialize()
Font* font = pSchemes->getFont(hSmallScheme);
//m_TopBorder = new CTransparentPanel(64, 0, 0, ScreenWidth, YRES(PANEL_HEIGHT));
- m_TopBorder = new CTransparentPanel(1, 0, ScreenHeight() - YRES(32), ScreenWidth(), YRES(SPECTATOR_PANEL_HEIGHT));
+ m_TopBorder = new CTransparentPanel(128, 0, ScreenHeight() - YRES(32), ScreenWidth(), YRES(SPECTATOR_PANEL_HEIGHT));
m_TopBorder->setParent(this);
- m_BottomBorder = new CTransparentPanel(1, 0, ScreenHeight() - YRES(32), ScreenWidth(), YRES(SPECTATOR_PANEL_HEIGHT));
+ m_BottomBorder = new CTransparentPanel(128, 0, ScreenHeight() - YRES(32), ScreenWidth(), YRES(SPECTATOR_PANEL_HEIGHT));
m_BottomBorder->setParent(this);
setPaintBackgroundEnabled(false);
@@ -259,8 +259,8 @@ void SpectatorPanel::Initialize()
m_overviewButton->setFont(font);
m_overviewButton->setParent( m_BottomBorder );
m_overviewButton->SetText("Overview");
- m_overviewButton->setPos(XRES(10), YRES(6));
- m_overviewButton->setSize(XRES(100), YRES(20));
+ m_overviewButton->setPos(XRES(150), YRES(6));
+ m_overviewButton->setSize(XRES(50), YRES(20));
m_overviewButton->SetImages("gfx/vgui/640_checkset.tga", "gfx/vgui/640_checkunset.tga");
m_overviewButton->SetHandler(new Spectator_CheckButtonHandler(this));
m_overviewButton->SetTextColor(colorR, colorG, colorB, 0);
@@ -269,8 +269,8 @@ void SpectatorPanel::Initialize()
m_firstPersonButton->setFont(font);
m_firstPersonButton->setParent( m_BottomBorder );
m_firstPersonButton->SetText("First person");
- m_firstPersonButton->setPos(XRES(10 + 100), YRES(6));
- m_firstPersonButton->setSize(XRES(100), YRES(20));
+ m_firstPersonButton->setPos(XRES(150 + 50), YRES(6));
+ m_firstPersonButton->setSize(XRES(50), YRES(20));
m_firstPersonButton->SetImages("gfx/vgui/640_checkset.tga", "gfx/vgui/640_checkunset.tga");
m_firstPersonButton->SetHandler(new Spectator_CheckButtonHandler(this));
m_firstPersonButton->SetTextColor(colorR, colorG, colorB, 0);
@@ -279,8 +279,8 @@ void SpectatorPanel::Initialize()
m_autoDirectorButton->setFont(font);
m_autoDirectorButton->setParent( m_BottomBorder );
m_autoDirectorButton->SetText("Auto-director");
- m_autoDirectorButton->setPos(XRES(10 + 200), YRES(6));
- m_autoDirectorButton->setSize(XRES(100), YRES(20));
+ m_autoDirectorButton->setPos(XRES(150 + 100), YRES(6));
+ m_autoDirectorButton->setSize(XRES(50), YRES(20));
m_autoDirectorButton->SetImages("gfx/vgui/640_checkset.tga", "gfx/vgui/640_checkunset.tga");
m_autoDirectorButton->SetHandler(new Spectator_CheckButtonHandler(this));
m_autoDirectorButton->SetTextColor(colorR, colorG, colorB, 0);
diff --git a/main/source/cl_dll/view.cpp b/main/source/cl_dll/view.cpp
index ece19769..4c83e970 100644
--- a/main/source/cl_dll/view.cpp
+++ b/main/source/cl_dll/view.cpp
@@ -1913,16 +1913,16 @@ void V_CalcSpectatorRefdef ( struct ref_params_s * pparams )
}
*/
- if (g_iUser1)
- {
+ // if (g_iUser1)
+ // {
- // Adjust the viewport so that the letterbox spectator mode
- // doesn't cut anything off.
-
- pparams->viewport[1] += YRES(32);
- pparams->viewport[3] -= YRES(32 * 2);
-
- }
+ // // Adjust the viewport so that the letterbox spectator mode
+ // // doesn't cut anything off.
+ //
+ // pparams->viewport[1] += YRES(32);
+ //pparams->viewport[3] -= YRES(32 * 2);
+ //
+ // }
if ( gHUD.m_Spectator.IsInOverviewMode())
{
diff --git a/main/source/common/const.h b/main/source/common/const.h
index c44a3d39..281aaf0f 100644
--- a/main/source/common/const.h
+++ b/main/source/common/const.h
@@ -40,7 +40,8 @@
// UNDONE: Do we need these?
#define FL_IMMUNE_WATER (1<<17)
-#define FL_IMMUNE_SLIME (1<<18)
+//#define FL_IMMUNE_SLIME (1<<18)
+#define FL_JUMPHELD (1<<18) // Tracks if player is still holding +jump from a previous jump in sv_jumpmode 1
#define FL_IMMUNE_LAVA (1<<19)
#define FL_PROXY (1<<20) // This is a spectator proxy
@@ -67,7 +68,7 @@
// edict->movetype values
#define MOVETYPE_NONE 0 // never moves
//#define MOVETYPE_ANGLENOCLIP 1
-//#define MOVETYPE_ANGLECLIP 2
+//#define MOVETYPE_JUMPHELD 2
#define MOVETYPE_WALK 3 // Player only - moving on the ground
#define MOVETYPE_STEP 4 // gravity, special edge handling -- monsters use this
#define MOVETYPE_FLY 5 // No gravity, but still collides with stuff
diff --git a/main/source/dlls/game.cpp b/main/source/dlls/game.cpp
index b6d76dd5..32fa9196 100644
--- a/main/source/dlls/game.cpp
+++ b/main/source/dlls/game.cpp
@@ -121,6 +121,7 @@ cvar_t avh_autoconcede = {kvAutoConcede, "4", FCVAR_SERVER};
cvar_t avh_combattime = {kvCombatTime, "10", FCVAR_SERVER};
cvar_t avh_mapvoteratio = {kvMapVoteRatio, ".6", FCVAR_SERVER};
cvar_t avh_blockscripts = {kvBlockScripts, "1", FCVAR_SERVER};
+cvar_t avh_jumpmode = {kvJumpMode, "1", FCVAR_SERVER};
#ifdef DEBUG
cvar_t avh_testing = {kvTesting, "0", FCVAR_SERVER};
#endif
@@ -230,6 +231,7 @@ void GameDLLInit( void )
CVAR_REGISTER (&avh_combattime);
CVAR_REGISTER (&avh_mapvoteratio);
CVAR_REGISTER (&avh_blockscripts);
+ CVAR_REGISTER (&avh_jumpmode);
// TODO: Remove
CVAR_REGISTER (&avh_ironman);
diff --git a/main/source/dlls/player.cpp b/main/source/dlls/player.cpp
index e4d31498..6d533e0e 100644
--- a/main/source/dlls/player.cpp
+++ b/main/source/dlls/player.cpp
@@ -3156,6 +3156,16 @@ void CBasePlayer::Spawn( void )
g_engfuncs.pfnSetPhysicsKeyValue( edict(), "slj", "0" );
g_engfuncs.pfnSetPhysicsKeyValue( edict(), "hl", "1" );
+ if (avh_jumpmode.value == 2)
+ g_engfuncs.pfnSetPhysicsKeyValue(edict(), "jm2", "1");
+ else
+ g_engfuncs.pfnSetPhysicsKeyValue(edict(), "jm2", "0");
+
+ if (avh_jumpmode.value == 1)
+ g_engfuncs.pfnSetPhysicsKeyValue(edict(), "jm1", "1");
+ else
+ g_engfuncs.pfnSetPhysicsKeyValue(edict(), "jm1", "0");
+
pev->fov = m_iFOV = 0;// init field of view.
m_iClientFOV = -1; // make sure fov reset is sent
diff --git a/main/source/dlls/sound.cpp b/main/source/dlls/sound.cpp
index 9645b765..e631da80 100644
--- a/main/source/dlls/sound.cpp
+++ b/main/source/dlls/sound.cpp
@@ -240,8 +240,17 @@ void CAmbientGeneric :: Precache( void )
}
if ( m_fActive )
{
- UTIL_EmitAmbientSound ( ENT(pev), pev->origin, szSoundFile,
+
+ if (CVAR_GET_FLOAT("cl_ambientsound") == 0.0f)
+ {
+ UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
+ 0, m_flAttenuation, SND_SPAWNING, m_dpv.pitch);
+ }
+ else if (CVAR_GET_FLOAT("cl_ambientsound") == 2.0f)
+ {
+ UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
(m_dpv.vol * 0.01), m_flAttenuation, SND_SPAWNING, m_dpv.pitch);
+ }
pev->nextthink = gpGlobals->time + 0.1;
}
@@ -433,8 +442,18 @@ void CAmbientGeneric :: RampThink( void )
if (pitch == PITCH_NORM)
pitch = PITCH_NORM + 1; // don't send 'no pitch' !
- UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
+ //bool ambtoggle = CVAR_GET_FLOAT("cl_ambientsound") == 0.0f;
+ if (CVAR_GET_FLOAT("cl_ambientsound") == 0.0f)
+ {
+ UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
+ 0, m_flAttenuation, flags, pitch);
+ }
+ else if (CVAR_GET_FLOAT("cl_ambientsound") == 2.0f)
+ {
+ UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
(vol * 0.01), m_flAttenuation, flags, pitch);
+ }
+
}
// update ramps at 5hz
@@ -631,8 +650,17 @@ void CAmbientGeneric :: ToggleUse ( CBaseEntity *pActivator, CBaseEntity *pCalle
InitModulationParms();
- UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
+ //bool ambtoggle = CVAR_GET_FLOAT("cl_ambientsound") == 0.0f;
+ if (CVAR_GET_FLOAT("cl_ambientsound") == 0.0f)
+ {
+ UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
+ 0, m_flAttenuation, 0, m_dpv.pitch);
+ }
+ else if (CVAR_GET_FLOAT("cl_ambientsound") == 2.0f)
+ {
+ UTIL_EmitAmbientSound(ENT(pev), pev->origin, szSoundFile,
(m_dpv.vol * 0.01), m_flAttenuation, 0, m_dpv.pitch);
+ }
pev->nextthink = gpGlobals->time + 0.1;
diff --git a/main/source/linux/Makefile b/main/source/linux/Makefile
index fd3bf4e3..eee80f55 100644
--- a/main/source/linux/Makefile
+++ b/main/source/linux/Makefile
@@ -31,7 +31,7 @@ ELF-GC-DYNSTR=./elf-gc-dynstr
ifeq ($(OS),Linux)
CC="gcc -m32"
- CPLUS="g++ -m32"
+ CPLUS="g++ -m32 -std=c++11"
CPP_LIB:=-L$(shell g++ -m32 -print-file-name=libstdc++.so | xargs dirname) -lstdc++ -ldl -lpthread
endif
diff --git a/main/source/linux/Makefile.hl_cdll b/main/source/linux/Makefile.hl_cdll
index c4418764..d49acfd3 100644
--- a/main/source/linux/Makefile.hl_cdll
+++ b/main/source/linux/Makefile.hl_cdll
@@ -31,7 +31,7 @@ CFLAGS=$(BASE_CFLAGS) $(ARCH_CFLAGS) -DCLIENT_DLL -I/usr/include/malloc -D_snwpr
INCLUDEDIRS= -I$(HL_SRC_DIR) -I$(NS_MOD_SRC_DIR) -I$(COMMON_SRC_DIR) -I$(PUBLIC_SRC_DIR) -I$(PM_SHARED_SRC_DIR) -I../engine -I$(GAME_SHARED_SRC_DIR) -I../external/ -I../particles -I../includes/fmodapi375linux/api/inc -I$(HL_SERVER_SRC_DIR) -I$(HL_SRC_DIR)/cl_dll -I$(VGUI_INCLUDE_DIR) -I$(UI_INCLUDE_DIR) -I$(UTIL_SRC_DIR) -I../ -I../includes/fmodapi375linux/api -I../includes/lpng1251
ifeq ($(OS),Darwin)
-LDFLAGS=$(SHLIBLDFLAGS) $(CPP_LIB) -L. libpng12.dylib -lz -framework Carbon vgui.dylib -L. -lSDL2-2.0.0 -L. libparticleMP.a
+LDFLAGS=$(SHLIBLDFLAGS) $(CPP_LIB) -L. libpng12.dylib -lz -framework Carbon -framework OpenGL vgui.dylib -L. -lSDL2-2.0.0 -L. libparticleMP.a
else
LDFLAGS=$(SHLIBLDFLAGS) $(CPP_LIB) -lpng -lz -lfmod-3.75 -L$(CFG) vgui.so -L. libSDL2-2.0.so.0 -L. libparticleMP.a
endif
@@ -60,11 +60,13 @@ HL1_OBJS = \
$(HL1_OBJ_DIR)/GameStudioModelRenderer.o \
$(HL1_OBJ_DIR)/geiger.o \
$(HL1_OBJ_DIR)/hud.o \
+ $(HL1_OBJ_DIR)/hud_crosshairs.o \
$(HL1_OBJ_DIR)/hud_msg.o \
$(HL1_OBJ_DIR)/hud_redraw.o \
$(HL1_OBJ_DIR)/hud_servers.o \
$(HL1_OBJ_DIR)/hud_spectator.o \
$(HL1_OBJ_DIR)/hud_update.o \
+ $(HL1_OBJ_DIR)/hudgl.o \
$(HL1_OBJ_DIR)/in_camera.o \
$(HL1_OBJ_DIR)/input.o \
$(HL1_OBJ_DIR)/inputw32.o \
diff --git a/main/source/mod/AvHClientVariables.h b/main/source/mod/AvHClientVariables.h
index b20f79cf..91954c35 100644
--- a/main/source/mod/AvHClientVariables.h
+++ b/main/source/mod/AvHClientVariables.h
@@ -36,7 +36,7 @@ extern cvar_t* cl_musicdir;
// Variables
#define kvAutoHelp "cl_autohelp"
// : 1064 The cl var that controls the display of labelled minimaps
-#define kvLabelMaps "cl_labelmaps"
+#define kvLabelMaps "hud_mapstyle"
// :
// : 0001070 - enables forced gamma ramp loading
#define kvGammaRamp "cl_gammaramp"
@@ -48,6 +48,7 @@ extern cvar_t* cl_musicdir;
#define kvCMHotKeys "cl_cmhotkeys"
#define kvForceDefaultFOV "cl_forcedefaultfov"
#define kvWidescreen "cl_widescreen"
+#define kvAmbientSound "cl_ambientsound"
#define kvCenterEntityID "cl_centerentityid"
#define kvHighDetail "cl_highdetail"
#define kvCMHotkeys "cl_cmhotkeys"
diff --git a/main/source/mod/AvHConstants.h b/main/source/mod/AvHConstants.h
index f5543f83..13653842 100644
--- a/main/source/mod/AvHConstants.h
+++ b/main/source/mod/AvHConstants.h
@@ -428,6 +428,7 @@ extern const char* getModName(void);
#define kSpriteDirectory "sprites"
#define kMiniMapSpritesDirectory "sprites/minimaps"
#define kTechTreeSpriteDirectory "sprites/techtree"
+#define kTechTreeSpriteDirectoryNL "sprites/nl/techtree"
#define kTechTreeSpritePrefix "tech"
#define kScriptsDirectory "scripts"
#define kSoundDirectory "sound"
diff --git a/main/source/mod/AvHEntities.cpp b/main/source/mod/AvHEntities.cpp
index 36c19e9d..af907870 100644
--- a/main/source/mod/AvHEntities.cpp
+++ b/main/source/mod/AvHEntities.cpp
@@ -684,11 +684,18 @@ void AvHNoBuild::Spawn()
-
AvHMP3Audio::AvHMP3Audio()
{
this->mUseState = false;
- this->mSoundVolume = 255;
+ //bool ambtoggle = CVAR_GET_FLOAT("cl_ambientsound") != 1;
+ //if (ambtoggle)
+ //{
+ // this->mSoundVolume = 0;
+ //}
+ //else
+ //{
+ this->mSoundVolume = 255;
+// }
this->mLooping = false;
}
@@ -706,7 +713,16 @@ void AvHMP3Audio::KeyValue( KeyValueData* pkvd )
}
else if(FStrEq(pkvd->szKeyName, "soundvolume"))
{
- this->mSoundVolume = atoi(pkvd->szValue);
+ bool ambtoggle = CVAR_GET_FLOAT("cl_ambientsound") != 1;
+ if (ambtoggle)
+ {
+ this->mSoundVolume = 0;
+ }
+ else
+ {
+ this->mSoundVolume = atoi(pkvd->szValue);
+ }
+
pkvd->fHandled = TRUE;
}
else if(FStrEq(pkvd->szKeyName, "fadedistance"))
diff --git a/main/source/mod/AvHGamerules.cpp b/main/source/mod/AvHGamerules.cpp
index 72e96dd2..a6a64211 100644
--- a/main/source/mod/AvHGamerules.cpp
+++ b/main/source/mod/AvHGamerules.cpp
@@ -328,6 +328,7 @@ AvHGamerules::AvHGamerules() : mTeamA(TEAM_ONE), mTeamB(TEAM_TWO)
this->mSpawnEntity = NULL;
RegisterServerVariable(&avh_blockscripts);
+ RegisterServerVariable(&avh_jumpmode);
RegisterServerVariable(&avh_tournamentmode);
RegisterServerVariable(&avh_team1damagepercent);
RegisterServerVariable(&avh_team2damagepercent);
diff --git a/main/source/mod/AvHHudConstants.h b/main/source/mod/AvHHudConstants.h
index 3e903ca7..5c9137a9 100644
--- a/main/source/mod/AvHHudConstants.h
+++ b/main/source/mod/AvHHudConstants.h
@@ -36,7 +36,7 @@ const float kPlayerStatusStatusSpacing = .02f;
// health armor inset (it is inset by the alien energy indicator for aliens)
const float kHealthLeftInset = .05f;
-const float kArmorLeftInset = .2f;
+const float kArmorLeftInset = .1f;
// blip size
const float kWorldBlipScale = 100;
diff --git a/main/source/mod/AvHHudRender.cpp b/main/source/mod/AvHHudRender.cpp
index b7daefb9..cd626d82 100644
--- a/main/source/mod/AvHHudRender.cpp
+++ b/main/source/mod/AvHHudRender.cpp
@@ -2192,7 +2192,11 @@ AVHHSPRITE AvHHud::GetTechTreeSprite(AvHMessageID inMessageID)
char theMessageNumberString[16];
sprintf(theMessageNumberString, "%d", (int)theMessageNumber);
//string theSpriteName = kTechTreeSpriteDirectory + string("/") + kTechTreeSpritePrefix + string(theMessageIDString) + string(".spr");
- string theSpriteName = kTechTreeSpriteDirectory + string("/") + kTechTreeSpritePrefix + string(theMessageNumberString) + string("s.spr");
+ string theSpriteName;
+ if (CVAR_GET_FLOAT("hud_style") == 2.0f)
+ theSpriteName = kTechTreeSpriteDirectoryNL + string("/") + kTechTreeSpritePrefix + string(theMessageNumberString) + string("s.spr");
+ else
+ theSpriteName = kTechTreeSpriteDirectory + string("/") + kTechTreeSpritePrefix + string(theMessageNumberString) + string("s.spr");
AVHHSPRITE theSpriteHandle = SPR_Load(theSpriteName.c_str());
// Sprite handle can be 0, as I don't have sprites for all tech yet
@@ -4371,12 +4375,92 @@ void AvHHud::VidInit(void)
// string theSpriteName = "sprites/level1_hud.spr";//UINameToSprite(theBaseName, theScreenWidth, true);
// this->mAlienUILifeforms[i] = SPR_Load(theSpriteName.c_str());
// }
+
+ if (CVAR_GET_FLOAT("hud_style") == 2.0f)
+ {
+ this->mAlienUIUpgrades = SPR_Load(kAlienUpgradeSpriteNL);
+ this->mAlienUIEnergySprite = SPR_Load(kAlienEnergySpriteNL);
+ this->mAlienUICloakSprite = SPR_Load(kAlienCloakSpriteNL);
+ this->mBackgroundSprite = SPR_Load(kTopDownBGSpriteNL);
+ this->mTopDownTopSprite = SPR_Load(kTopDownTopHUDSpriteNL);
+ this->mTopDownBottomSprite = SPR_Load(kTopDownBottomHUDSpriteNL);
+ this->mMarineTopSprite = SPR_Load(kMarineTopHUDSpriteNL);
+ this->mLogoutSprite = SPR_Load(kLogoutSpriteNL);
+ this->mCommandButtonSprite = SPR_Load(kCommandButtonSpriteNL);
+ this->mCommandStatusSprite = SPR_Load(kCommandStatusSpriteNL);
+ this->mSelectAllSprite = SPR_Load(kSelectAllSpriteNL);
+ this->mOrderSprite = SPR_Load(kOrdersSpriteNL);
+ this->mHiveInfoSprite = SPR_Load(kHiveInfoSpriteNL);
+ this->mHiveHealthSprite = SPR_Load(kHiveHealthSpriteNL);
+ this->mMarineOrderIndicator = SPR_Load(kMarineOrderSpriteNL);
+ this->mMarineUpgradesSprite = SPR_Load(kMarineUpgradesSpriteNL);
+ }
+ else if (CVAR_GET_FLOAT("hud_style") == 1.0f)
+ {
+ char theBaseName[128];
+ sprintf(theBaseName, "%s", kAlienUpgradeSprite);
+ theSpriteName = UINameToSprite(theBaseName, theScreenWidth);
+ this->mAlienUIUpgrades = SPR_Load(theSpriteName.c_str());
+
+ // Load alien energy sprite
+ theSpriteName = UINameToSprite(kAlienEnergySprite, theScreenWidth);
+ this->mAlienUIEnergySprite = SPR_Load(theSpriteName.c_str());
+ theSpriteName = UINameToSprite(kAlienCloakSprite, theScreenWidth);
+
+ this->mAlienUICloakSprite = SPR_Load(theSpriteName.c_str());
+ this->mBackgroundSprite = SPR_Load(kTopDownBGSprite);
+ this->mTopDownTopSprite = SPR_Load(kTopDownTopHUDSpriteMin);
+ this->mTopDownBottomSprite = SPR_Load(kTopDownBottomHUDSpriteMin);
+ this->mMarineTopSprite = SPR_Load(kMarineTopHUDSpriteMin);
+ this->mLogoutSprite = SPR_Load(kLogoutSprite);
+ this->mCommandButtonSprite = SPR_Load(kCommandButtonSprite);
+ this->mCommandStatusSprite = SPR_Load(kCommandStatusSpriteMin);
+ this->mSelectAllSprite = SPR_Load(kSelectAllSpriteMin);
+ // Load order sprite
+ theSpriteName = UINameToSprite(kOrdersSprite, theScreenWidth);
+ this->mOrderSprite = SPR_Load(theSpriteName.c_str());
+ this->mHiveInfoSprite = SPR_Load(kHiveInfoSprite);
+ this->mHiveHealthSprite = SPR_Load(kHiveHealthSprite);
+ this->mMarineOrderIndicator = SPR_Load(kMarineOrderSprite);
+ this->mMarineUpgradesSprite = SPR_Load(kMarineUpgradesSprite);
+ }
+ else
+ {
+ char theBaseName[128];
+ sprintf(theBaseName, "%s", kAlienUpgradeSprite);
+ theSpriteName = UINameToSprite(theBaseName, theScreenWidth);
+ this->mAlienUIUpgrades = SPR_Load(theSpriteName.c_str());
+
+ // Load alien energy sprite
+ theSpriteName = UINameToSprite(kAlienEnergySprite, theScreenWidth);
+ this->mAlienUIEnergySprite = SPR_Load(theSpriteName.c_str());
+ theSpriteName = UINameToSprite(kAlienCloakSprite, theScreenWidth);
+ this->mAlienUICloakSprite = SPR_Load(theSpriteName.c_str());
+
+ // Load background for topdown mode
+ this->mBackgroundSprite = SPR_Load(kTopDownBGSprite);
+
+ // Load HUD
+ this->mTopDownTopSprite = SPR_Load(kTopDownTopHUDSprite);
+ this->mTopDownBottomSprite = SPR_Load(kTopDownBottomHUDSprite);
+ this->mMarineTopSprite = SPR_Load(kMarineTopHUDSprite);
+
+ this->mLogoutSprite = SPR_Load(kLogoutSprite);
+ this->mCommandButtonSprite = SPR_Load(kCommandButtonSprite);
+ this->mCommandStatusSprite = SPR_Load(kCommandStatusSprite);
+ this->mSelectAllSprite = SPR_Load(kSelectAllSprite);
+
+ // Load order sprite
+ theSpriteName = UINameToSprite(kOrdersSprite, theScreenWidth);
+ this->mOrderSprite = SPR_Load(theSpriteName.c_str());
+ this->mHiveInfoSprite = SPR_Load(kHiveInfoSprite);
+ this->mHiveHealthSprite = SPR_Load(kHiveHealthSprite);
+
+ this->mMarineOrderIndicator = SPR_Load(kMarineOrderSprite);
+ this->mMarineUpgradesSprite = SPR_Load(kMarineUpgradesSprite);
+ }
char theBaseName[128];
- sprintf(theBaseName, "%s", kAlienUpgradeSprite);
- theSpriteName = UINameToSprite(theBaseName, theScreenWidth);
- this->mAlienUIUpgrades = SPR_Load(theSpriteName.c_str());
-
sprintf(theBaseName, "%s", kAlienUpgradeCategory);
theSpriteName = UINameToSprite(theBaseName, theScreenWidth);
this->mAlienUIUpgradeCategories = SPR_Load(theSpriteName.c_str());
@@ -4385,25 +4469,6 @@ void AvHHud::VidInit(void)
theSpriteName = UINameToSprite(kJetpackSprite, theScreenWidth);
this->mMarineUIJetpackSprite = SPR_Load(theSpriteName.c_str());
- // Load alien energy sprite
- theSpriteName = UINameToSprite(kAlienEnergySprite, theScreenWidth);
- this->mAlienUIEnergySprite = SPR_Load(theSpriteName.c_str());
- theSpriteName = UINameToSprite(kAlienCloakSprite, theScreenWidth);
- this->mAlienUICloakSprite = SPR_Load(theSpriteName.c_str());
-
- // Load background for topdown mode
- this->mBackgroundSprite = SPR_Load(kTopDownBGSprite);
-
- // Load HUD
- this->mTopDownTopSprite = SPR_Load(kTopDownTopHUDSprite);
- this->mTopDownBottomSprite = SPR_Load(kTopDownBottomHUDSprite);
- this->mMarineTopSprite = SPR_Load(kMarineTopHUDSprite);
-
- this->mLogoutSprite = SPR_Load(kLogoutSprite);
- this->mCommandButtonSprite = SPR_Load(kCommandButtonSprite);
- this->mCommandStatusSprite = SPR_Load(kCommandStatusSprite);
- this->mSelectAllSprite = SPR_Load(kSelectAllSprite);
-
//this->mTopDownBottomSprite = SPR_Load("sprites/distorttest.spr");
//this->mTopDownBottomSprite = SPR_Load("sprites/ns.spr");
//this->mTopDownBottomSprite = SPR_Load("sprites/distorttest.spr");
@@ -4412,17 +4477,9 @@ void AvHHud::VidInit(void)
this->mMembraneSprite = SPR_Load(kMembraneSprite);
this->mDigestingSprite = SPR_Load(kDigestingSprite);
- // Load order sprite
- theSpriteName = UINameToSprite(kOrdersSprite, theScreenWidth);
- this->mOrderSprite = SPR_Load(theSpriteName.c_str());
- this->mHiveInfoSprite = SPR_Load(kHiveInfoSprite);
- this->mHiveHealthSprite = SPR_Load(kHiveHealthSprite);
-
// Load cursor sprite
this->mMarineCursor = SPR_Load(kCursorsSprite);
this->mAlienCursor = SPR_Load(kAlienCursorSprite);
- this->mMarineOrderIndicator = SPR_Load(kMarineOrderSprite);
- this->mMarineUpgradesSprite = SPR_Load(kMarineUpgradesSprite);
//this->mMappingTechSprite = SPR_Load("sprites/ns.spr");
this->mAlienBuildSprite = SPR_Load(kAlienBuildSprite);
diff --git a/main/source/mod/AvHMiniMap.cpp b/main/source/mod/AvHMiniMap.cpp
index a02ed148..783eec1e 100644
--- a/main/source/mod/AvHMiniMap.cpp
+++ b/main/source/mod/AvHMiniMap.cpp
@@ -224,23 +224,28 @@ string AvHMiniMap::GetSpriteNameFromMap(int inSpriteWidth, const string& inMapNa
sprintf(theWidthString, "%d", inSpriteWidth);
// : 1064
// insert _labelled into the filename before ".spr"
- string extraname="";
- switch ( useLabels ) {
- case 1:
- extraname="_1";
- break;
- case 2:
- extraname="_2";
- break;
- case 3:
- extraname="_3";
- break;
- default:
- break;
+ string extraname = "";
+ switch (useLabels) {
+ case 1:
+ extraname = "_1";
+ break;
+ case 2:
+ extraname = "_2";
+ break;
+ case 3:
+ extraname = "_3";
+ break;
+ case 4:
+ extraname = "_4";
+ break;
+ case 5:
+ extraname = "_5";
+ break;
+ default:
+ break;
}
- string theMiniMapName = kMiniMapSpritesDirectory + string("/") /*+ string(theWidthString)*/ + inMapName + extraname + string(".spr");
- // :
- return theMiniMapName;
+ string theMiniMapName = kMiniMapSpritesDirectory + string("/") /*+ string(theWidthString)*/ + inMapName + extraname + string(".spr");
+ return theMiniMapName;
}
void AvHMiniMap::InitializePalette()
diff --git a/main/source/mod/AvHPieMenuHandler.cpp b/main/source/mod/AvHPieMenuHandler.cpp
index 00f7da84..e98c4223 100644
--- a/main/source/mod/AvHPieMenuHandler.cpp
+++ b/main/source/mod/AvHPieMenuHandler.cpp
@@ -44,6 +44,7 @@
#include "AvHCommandConstants.h"
#include "../engine/cdll_int.h"
#include "../types.h"
+#include
#include
using std::string;
@@ -118,7 +119,7 @@ void AvHPieMenuHandler::ClosePieMenu(void)
// Reset the mouse cursor to the center of the screen so
// that the view doesn't jog once the pie menu is closed.
-
+
IN_ResetMouse();
gHUD.ShowCrosshair();
@@ -136,6 +137,10 @@ void AvHPieMenuHandler::InternalClosePieMenu(void)
if(!gHUD.GetInTopDownMode())
{
gHUD.GetManager().SetMouseVisibility(false);
+ //attempt at fixing OS cursor appearing over game's cursor
+ #ifdef WIN32
+ ShowCursor(TRUE);
+ #endif
}
theMarineMenu->SetFadeState(false);
@@ -145,6 +150,11 @@ void AvHPieMenuHandler::InternalClosePieMenu(void)
}
sLastNodeHighlighted = NULL;
+ if (CVAR_GET_FLOAT("m_rawinput") != 0)
+ {
+ SDL_SetRelativeMouseMode(SDL_TRUE);
+ }
+
// if(sTheDebugBool)
// {
// AvHTeamHierarchy* theHierarchyComponent = NULL;
@@ -175,10 +185,23 @@ void AvHPieMenuHandler::OpenPieMenu(void)
if(!gHUD.GetInTopDownMode())
{
gHUD.GetManager().SetMouseVisibility(true);
+ //attempt at fixing OS cursor appearing over game's cursor
+ #ifdef WIN32
+ ShowCursor(FALSE);
+ #endif
}
gHUD.HideCrosshair();
-
+
+ if (CVAR_GET_FLOAT("m_rawinput") != 0)
+ {
+ SDL_SetRelativeMouseMode(SDL_FALSE);
+ gEngfuncs.pfnSetMousePos(gEngfuncs.GetWindowCenterX(), gEngfuncs.GetWindowCenterY());
+ }
+ //App::getInstance()->setCursorOveride(App::getInstance()->getScheme()->getCursor(Scheme::scu_none));
+ //App::getInstance()->setCursorOveride(gHUD.GetManager().mBlankCursor);
+
+
// Only do this when in full screen
//App::getInstance()->setCursorPos(ScreenWidth/2, ScreenHeight/2);
@@ -189,7 +212,7 @@ void AvHPieMenuHandler::OpenPieMenu(void)
sTimeLastNodeHighlighted = sTimeMenuOpened;
sPieMenuOpen = true;
-
+
// if(sTheDebugBool)
// {
// AvHTeamHierarchy* theHierarchyComponent = NULL;
diff --git a/main/source/mod/AvHPlayer.cpp b/main/source/mod/AvHPlayer.cpp
index 78b770b8..458e31e8 100644
--- a/main/source/mod/AvHPlayer.cpp
+++ b/main/source/mod/AvHPlayer.cpp
@@ -9329,8 +9329,8 @@ void AvHPlayer::UpdateAmbientSounds()
int theBaseSpeed, theMaxSpeed;
this->GetSpeeds(theBaseSpeed, theMaxSpeed);
- float theAlienSoundFreq = 0.003f;
- float theChanceOfPlayingSound = theAlienSoundFreq*(theVelocity/((float)theMaxSpeed));
+ float theAlienSoundFreq = 0.3f;
+ float theChanceOfPlayingSound = gpGlobals->frametime*theAlienSoundFreq*(theVelocity/((float)theMaxSpeed));
if(RANDOM_FLOAT(0, 1) < theChanceOfPlayingSound)
{
float theVolume = RANDOM_FLOAT(.5, 1.0)*theSilenceVolumeFactor;
diff --git a/main/source/mod/AvHServerVariables.h b/main/source/mod/AvHServerVariables.h
index 173871f9..3ae78529 100644
--- a/main/source/mod/AvHServerVariables.h
+++ b/main/source/mod/AvHServerVariables.h
@@ -67,6 +67,7 @@
#include "../common/cvardef.h"
extern cvar_t avh_blockscripts;
+extern cvar_t avh_jumpmode;
extern cvar_t avh_combattime;
extern cvar_t *avh_cheats;
extern cvar_t avh_defaultteam;
@@ -143,5 +144,6 @@ float ns_cvar_float(const cvar_t *cvar);
#define kvMapVoteRatio "mp_mapvoteratio"
#define kvBlockScripts "mp_blockscripts"
+#define kvJumpMode "sv_jumpmode"
#endif
diff --git a/main/source/mod/AvHSprites.h b/main/source/mod/AvHSprites.h
index d50d4319..7ba6a7ef 100644
--- a/main/source/mod/AvHSprites.h
+++ b/main/source/mod/AvHSprites.h
@@ -50,7 +50,9 @@
#define kJetpackSprite "jetpack"
#define kAlienEnergySprite "a-energy"
+#define kAlienEnergySpriteNL "sprites/nl/640a-energy.spr"
#define kAlienCloakSprite "a-cloak"
+#define kAlienCloakSpriteNL "sprites/nl/640a-cloak.spr"
#define kAlienResourceSprite "a-resources"
#define kCombatExperienceSprite "experience"
@@ -60,27 +62,46 @@
//#define kHiveSprite "hive"
//#define kLifeformSprite "alien"
#define kAlienUpgradeSprite "alienupgrades"
+#define kAlienUpgradeSpriteNL "sprites/nl/640alienupgrades.spr"
#define kAlienUpgradeCategory "alienupgradecategories"
#define kOrdersSprite "order"
+#define kOrdersSpriteNL "sprites/nl/640order.spr"
#define kAlienCursorSprite "sprites/aliencursor.spr"
#define kTopDownBGSprite "sprites/topdownbg.spr"
+#define kTopDownBGSpriteNL "sprites/nl/topdownbg.spr"
#define kTopDownTopHUDSprite "sprites/topdowntop.spr"
+#define kTopDownTopHUDSpriteNL "sprites/nl/topdowntop.spr"
+#define kTopDownTopHUDSpriteMin "sprites/minimal/topdowntop.spr"
#define kTopDownBottomHUDSprite "sprites/topdownbottom.spr"
+#define kTopDownBottomHUDSpriteNL "sprites/nl/topdownbottom.spr"
+#define kTopDownBottomHUDSpriteMin "sprites/minimal/topdownbottom.spr"
#define kMarineTopHUDSprite "sprites/mainhud.spr"
+#define kMarineTopHUDSpriteNL "sprites/nl/mainhud.spr"
+#define kMarineTopHUDSpriteMin "sprites/minimal/mainhud.spr"
#define kLogoutSprite "sprites/logout.spr"
+#define kLogoutSpriteNL "sprites/nl/logout.spr"
#define kHiveInfoSprite "sprites/hiveinfo.spr"
+#define kHiveInfoSpriteNL "sprites/nl/hiveinfo.spr"
#define kHiveHealthSprite "sprites/hivehealth.spr"
+#define kHiveHealthSpriteNL "sprites/nl/hivehealth.spr"
#define kCursorsSprite "sprites/cursors.spr"
#define kCommandButtonSprite "sprites/commandbutton.spr"
+#define kCommandButtonSpriteNL "sprites/nl/commandbutton.spr"
#define kCommandStatusSprite "sprites/commandstatus.spr"
#define kCommandStatusSprite "sprites/commandstatus.spr"
+#define kCommandStatusSpriteNL "sprites/nl/commandstatus.spr"
+#define kCommandStatusSpriteMin "sprites/minimal/commandstatus.spr"
#define kSelectAllSprite "sprites/selectall.spr"
+#define kSelectAllSpriteNL "sprites/nl/selectall.spr"
+#define kSelectAllSpriteMin "sprites/minimal/selectall.spr"
#define kMarineOrderSprite "sprites/hudorder.spr"
+#define kMarineOrderSpriteNL "sprites/nl/hudorder.spr"
#define kMarineUpgradesSprite "sprites/upgrades.spr"
+#define kMarineUpgradesSpriteNL "sprites/nl/upgrades.spr"
#define kAlienBuildSprite "sprites/ba-build.spr"
#define kMarineBuildSprite "sprites/b-build.spr"
@@ -116,6 +137,7 @@
#define kOverwatchCenterSprite "sprites/overwatch-center.spr"
#define kReticleSprite "sprites/reticle.spr"
+#define kReticleSpriteNL "sprites/nl/reticle.spr"
#define kMarinePlayersSprite "sprites/iplayerm.spr"
#define kAlienPlayersSprite "sprites/iplayera.spr"
#define kStructuresSprite "sprites/itech.spr"
diff --git a/main/source/pm_shared/pm_shared.cpp b/main/source/pm_shared/pm_shared.cpp
index 841c9ee6..929768d9 100644
--- a/main/source/pm_shared/pm_shared.cpp
+++ b/main/source/pm_shared/pm_shared.cpp
@@ -159,6 +159,7 @@ extern int gBlinkEffectSuccessEventID;
#include "../mod/AvHSelectionHelper.h"
int gHeightLevel = 0;
+int JpEventTimer = 0;
const float kMarineBackpedalSpeedScalar = .4f;
const float kMarineSidestepSpeedScalar = 1.0f;
@@ -5334,12 +5335,13 @@ void PM_Jump (void)
{
int i;
qboolean tfc = false;
-
+ qboolean autojump = false;
+ qboolean queuedjump = false;
qboolean cansuperjump = false;
if (pmove->dead || GetHasUpgrade(pmove->iuser4, MASK_ENSNARED))
{
- pmove->oldbuttons |= IN_JUMP ; // don't jump again until released
+ pmove->flags |= FL_JUMPHELD;
return;
}
@@ -5449,7 +5451,7 @@ void PM_Jump (void)
// Flag that we jumped.
// HACK HACK HACK
// Remove this when the game .dll no longer does physics code!!!!
- pmove->oldbuttons |= IN_JUMP; // don't jump again until released
+ //pmove->oldbuttons |= IN_JUMP; // don't jump again until released
return; // in air, so no effect
}
@@ -5459,8 +5461,20 @@ void PM_Jump (void)
// if ( pmove->oldbuttons & IN_JUMP && (pmove->velocity[0] == 0 || !theIsAlien || pmove->iuser3 == AVH_USER3_ALIEN_PLAYER3) )
//return; // don't pogo stick
- if ( pmove->oldbuttons & IN_JUMP )
+ autojump = atoi(pmove->PM_Info_ValueForKey(pmove->physinfo, "jm2"));
+ queuedjump = atoi(pmove->PM_Info_ValueForKey(pmove->physinfo, "jm1"));
+
+ if ((!autojump && !queuedjump) || pmove->iuser3 == AVH_USER3_ALIEN_PLAYER3)
+ {
+ if (pmove->oldbuttons & IN_JUMP)
return; // don't pogo stick
+ }
+
+ if (queuedjump)
+ {
+ if (pmove->flags & FL_JUMPHELD)
+ return;
+ }
// In the air now.
pmove->onground = -1;
@@ -5513,7 +5527,8 @@ void PM_Jump (void)
PM_FixupGravityVelocity();
// Flag that we jumped.
- pmove->oldbuttons |= IN_JUMP; // don't jump again until released
+ //pmove->oldbuttons |= IN_JUMP; // don't jump again until released
+ pmove->flags |= FL_JUMPHELD;
}
/*
@@ -6364,11 +6379,17 @@ void PM_Jetpack()
pmove->velocity[1] += (theWishVelocity[1] / pmove->clientmaxspeed) * (theTimePassed * theWeightScalar*kJetpackForce);
pmove->velocity[2] += theTimePassed*theWeightScalar*kJetpackForce;
- // Play an event every so often
- if(pmove->runfuncs /*&& (pmove->RandomLong(0, 2) == 0)*/)
- {
- pmove->PM_PlaybackEventFull(0, pmove->player_index, gJetpackEventID, 0, (float *)pmove->origin, (float *)pmove->origin, 0.0, 0.0, /*theWeaponIndex*/ 0, 0, 0, 0 );
- }
+ //FPS independent jetpack event. Scales with FPS without timer.
+ JpEventTimer += pmove->cmd.msec;
+ if (JpEventTimer > 7)
+ {
+ // Play an event every so often
+ if (pmove->runfuncs /*&& (pmove->RandomLong(0, 2) == 0)*/)
+ {
+ pmove->PM_PlaybackEventFull(0, pmove->player_index, gJetpackEventID, 0, (float *)pmove->origin, (float *)pmove->origin, 0.0, 0.0, /*theWeaponIndex*/ 0, 0, 0, 0);
+ }
+ JpEventTimer = 0;
+ }
}
float theJetpackEnergy = pmove->fuser3/kNormalizationNetworkFactor;
@@ -6678,6 +6699,7 @@ void PM_PlayerMove ( qboolean server )
else
{
pmove->oldbuttons &= ~IN_JUMP;
+ pmove->flags &= ~FL_JUMPHELD;
}
// Fricion is handled before we add in any base velocity. That way, if we are on a conveyor,
diff --git a/main/source/util/Balance.txt b/main/source/util/Balance.txt
index 88271db8..df0b22de 100644
--- a/main/source/util/Balance.txt
+++ b/main/source/util/Balance.txt
@@ -121,7 +121,7 @@
#define kGameHDSpaceNeeded 300
#define kGameVersionMajor 3
#define kGameVersionMinor 2
-#define kGameVersionRevision 1
+#define kGameVersionRevision 2
#define kGestateBaseArmor 150
#define kGestateHealth 200
#define kGorgeArmorUpgrade 50
diff --git a/main/sprites/640nlhud7.spr b/main/sprites/640nlhud7.spr
new file mode 100644
index 00000000..abff1df9
Binary files /dev/null and b/main/sprites/640nlhud7.spr differ
diff --git a/main/sprites/hudnl.txt b/main/sprites/hudnl.txt
new file mode 100644
index 00000000..754b3853
--- /dev/null
+++ b/main/sprites/hudnl.txt
@@ -0,0 +1,149 @@
+148
+selection 320 320hud1 160 220 80 20
+bucket1 320 320hud2 108 16 12 12
+bucket2 320 320hud2 108 28 12 12
+bucket3 320 320hud2 108 40 12 12
+bucket4 320 320hud2 108 52 12 12
+bucket5 320 320hud2 108 64 12 12
+bucket0 320 320hud2 108 76 12 12
+dmg_bio 320 320hud4 0 0 32 32
+dmg_poison 320 320hud4 0 0 32 32
+dmg_chem 320 320hud4 32 0 32 32
+dmg_cold 320 320hud4 64 0 32 32
+dmg_drown 320 320hud4 96 0 32 32
+dmg_heat 320 320hud4 128 0 32 32
+dmg_gas 320 320hud4 160 0 32 32
+dmg_rad 320 320hud4 192 0 32 32
+dmg_shock 320 320hud4 224 0 32 32
+number_0 320 320hud2 0 0 12 16
+number_1 320 320hud2 12 0 12 16
+number_2 320 320hud2 24 0 12 16
+number_3 320 320hud2 36 0 12 16
+number_4 320 320hud2 48 0 12 16
+number_5 320 320hud2 60 0 12 16
+number_6 320 320hud2 72 0 12 16
+number_7 320 320hud2 84 0 12 16
+number_8 320 320hud2 96 0 12 16
+number_9 320 320hud2 108 0 12 16
+divider 320 320hud2 120 0 1 20
+cross 320 320hud2 0 72 16 16
+d_skull 320 640hud7 72 25 12 12
+flash_full 320 320hud2 16 72 18 16
+flash_empty 320 320hud2 34 72 18 16
+flash_beam 320 320hud2 52 72 6 16
+title_half 320 320hud3 0 48 128 16
+title_life 320 320hud3 128 48 116 16
+d_knife 320 640aw3-s 100 232 64 24
+d_handgrenade 320 640aw1 192 231 64 24
+d_grenade 320 640aw3-s 192 192 64 24
+d_grenadegun 320 640aw3-s 192 192 64 24
+d_machinegun 320 640aw3-s 192 96 64 24
+d_pistol 320 640aw3-s 192 168 64 24
+d_heavymachinegun 320 640aw3-s 0 230 101 26
+d_shotgun 320 640aw3-s 164 231 80 26
+d_tripmine 320 640aw3-s 192 145 64 24
+d_item_mine 320 640aw3-s 192 145 64 24
+d_welder 320 640aw3-s 192 120 64 24
+d_turret 320 640aw3-s 172 0 18 32
+d_offensechamber 320 640aw3-s 192 24 64 24
+d_sporegunprojectile 320 640aw3-s 192 0 64 24
+d_healingspray 320 640aw3-s 192 72 64 24
+d_parasite 320 640aw3-s 192 48 64 24
+d_siegeturret 320 640aw3 143 224 48 32
+d_spitgunspit 320 640aw3 192 102 64 24
+d_claws 320 640aw3 176 48 80 32
+d_bitegun 320 640aw3 192 0 64 24
+d_bite2gun 320 640aw3 192 24 64 24
+d_spikegun 320 640aw3 192 183 64 24
+d_spikeprojectile 320 640aw3 192 183 64 24
+d_swipe 320 640aw3 0 225 64 24
+d_divinewind 320 640aw3 192 127 64 24
+d_bilebomb 320 640aw3 192 207 64 24
+d_acidrocket 320 640aw3 61 225 64 24
+d_leap 320 640aw3 192 80 64 24
+d_charge 320 640aw3 176 151 80 32
+d_babblerprojectile 320 640aw3 192 231 64 24
+d_devour 320 640aw3 192 231 64 24
+d_nuke 320 320w-s 80 160 32 32
+d_tracktrain 320 320w-s 112 160 32 16
+d_team_advturretfactory 320 320w-s 80 240 32 16
+d_team_turretfactory 320 320w-s 80 240 32 16
+d_resourcetower 320 320w-s 80 240 32 16
+suit_full 320 320hud2 0 88 16 16
+suit_empty 320 320hud2 16 88 16 16
+
+//===========================================
+
+selection 640 640hud3 0 180 170 45
+bucket1 640 640nlhud7 168 72 20 20
+bucket2 640 640nlhud7 188 72 20 20
+bucket3 640 640nlhud7 208 72 20 20
+bucket4 640 640nlhud7 168 92 20 20
+bucket5 640 640nlhud7 188 92 20 20
+bucket0 640 640nlhud7 208 92 20 20
+dmg_poison 640 640hud8 128 0 64 64
+dmg_bio 640 640hud8 128 0 64 64
+dmg_chem 640 640hud8 0 0 64 64
+dmg_drown 640 640hud8 64 0 64 64
+dmg_gas 640 640hud9 0 0 64 64
+dmg_cold 640 640hud9 64 0 64 64
+dmg_heat 640 640hud9 128 0 64 64
+dmg_rad 640 640hud9 192 0 64 64
+dmg_shock 640 640hud8 192 0 64 64
+number_0 640 640nlhud7 0 0 24 25
+number_1 640 640nlhud7 24 0 24 25
+number_2 640 640nlhud7 48 0 24 25
+number_3 640 640nlhud7 72 0 24 25
+number_4 640 640nlhud7 96 0 24 25
+number_5 640 640nlhud7 120 0 24 25
+number_6 640 640nlhud7 144 0 24 25
+number_7 640 640nlhud7 168 0 24 25
+number_8 640 640nlhud7 192 0 24 25
+number_9 640 640nlhud7 216 0 24 25
+divider 640 640nlhud7 240 0 2 40
+cross 640 640nlhud7 48 25 24 24
+d_skull 640 640nlhud7 72 25 12 12
+flash_full 640 640nlhud7 160 25 32 32
+flash_empty 640 640nlhud7 112 25 32 32
+flash_beam 640 640nlhud7 144 25 16 32
+title_half 640 640hud4 0 226 256 30
+title_life 640 640hud5 0 226 220 30
+d_knife 640 640aw3-s 100 232 64 24
+d_handgrenade 640 640aw1 192 231 64 24
+d_grenade 640 640aw3-s 192 192 64 24
+d_grenadegun 640 640aw3-s 192 192 64 24
+d_machinegun 640 640aw3-s 192 96 64 24
+d_pistol 640 640aw3-s 192 168 64 24
+d_heavymachinegun 640 640aw3-s 0 230 101 26
+d_shotgun 640 640aw3-s 164 231 80 26
+d_tripmine 640 640aw3-s 192 145 64 24
+d_item_mine 640 640aw3-s 192 145 64 24
+d_welder 640 640aw3-s 192 120 64 24
+d_turret 640 640aw3-s 172 0 18 32
+d_offensechamber 640 640aw3-s 192 24 64 24
+d_sporegunprojectile 640 640aw3-s 192 0 64 24
+d_healingspray 640 640aw3-s 192 72 64 24
+d_parasite 640 640aw3-s 192 48 64 24
+d_siegeturret 640 640aw3 143 224 48 32
+d_spitgunspit 640 640aw3 192 102 64 24
+d_claws 640 640aw3 176 48 80 32
+d_bitegun 640 640aw3 192 0 64 24
+d_bite2gun 640 640aw3 192 24 64 24
+d_spikegun 640 640aw3 192 183 64 17
+d_spikeprojectile 640 640aw3 192 183 64 17
+d_swipe 640 640aw3 0 225 64 24
+d_divinewind 640 640aw3 192 127 64 24
+d_bilebomb 640 640aw3 192 200 64 25
+d_acidrocket 640 640aw3 61 225 64 24
+d_leap 640 640aw3 192 80 64 24
+d_charge 640 640aw3 176 151 80 32
+d_babblerprojectile 640 640aw3 192 231 64 24
+d_devour 640 640aw3 192 224 64 32
+d_nuke 640 320w-s 80 160 32 32
+d_tracktrain 640 640hud1 192 240 32 16
+d_team_advturretfactory 640 320w-s 80 240 32 16
+d_team_turretfactory 640 320w-s 80 240 32 16
+d_resourcetower 640 320w-s 80 240 32 16
+suit_full 640 640nlhud7 0 25 24 24
+suit_empty 640 640nlhud7 24 25 24 24
+
diff --git a/main/sprites/minimal/commandstatus.spr b/main/sprites/minimal/commandstatus.spr
new file mode 100644
index 00000000..0f4e57c1
Binary files /dev/null and b/main/sprites/minimal/commandstatus.spr differ
diff --git a/main/sprites/minimal/mainhud.spr b/main/sprites/minimal/mainhud.spr
new file mode 100644
index 00000000..8695df60
Binary files /dev/null and b/main/sprites/minimal/mainhud.spr differ
diff --git a/main/sprites/minimal/selectall.spr b/main/sprites/minimal/selectall.spr
new file mode 100644
index 00000000..c172fbf5
Binary files /dev/null and b/main/sprites/minimal/selectall.spr differ
diff --git a/main/sprites/minimal/topdownbottom.spr b/main/sprites/minimal/topdownbottom.spr
new file mode 100644
index 00000000..5bf638b9
Binary files /dev/null and b/main/sprites/minimal/topdownbottom.spr differ
diff --git a/main/sprites/minimal/topdowntop.spr b/main/sprites/minimal/topdowntop.spr
new file mode 100644
index 00000000..bc6f850f
Binary files /dev/null and b/main/sprites/minimal/topdowntop.spr differ
diff --git a/main/sprites/minimaps/ns_altair_4.spr b/main/sprites/minimaps/ns_altair_4.spr
new file mode 100644
index 00000000..0a3f114f
Binary files /dev/null and b/main/sprites/minimaps/ns_altair_4.spr differ
diff --git a/main/sprites/minimaps/ns_altair_5.spr b/main/sprites/minimaps/ns_altair_5.spr
new file mode 100644
index 00000000..0934d3be
Binary files /dev/null and b/main/sprites/minimaps/ns_altair_5.spr differ
diff --git a/main/sprites/minimaps/ns_ayumi_4.spr b/main/sprites/minimaps/ns_ayumi_4.spr
new file mode 100644
index 00000000..bc785eb9
Binary files /dev/null and b/main/sprites/minimaps/ns_ayumi_4.spr differ
diff --git a/main/sprites/minimaps/ns_ayumi_5.spr b/main/sprites/minimaps/ns_ayumi_5.spr
new file mode 100644
index 00000000..4ac96270
Binary files /dev/null and b/main/sprites/minimaps/ns_ayumi_5.spr differ
diff --git a/main/sprites/minimaps/ns_bast_4.spr b/main/sprites/minimaps/ns_bast_4.spr
new file mode 100644
index 00000000..b6705662
Binary files /dev/null and b/main/sprites/minimaps/ns_bast_4.spr differ
diff --git a/main/sprites/minimaps/ns_bast_5.spr b/main/sprites/minimaps/ns_bast_5.spr
new file mode 100644
index 00000000..061c7a69
Binary files /dev/null and b/main/sprites/minimaps/ns_bast_5.spr differ
diff --git a/main/sprites/minimaps/ns_caged_4.spr b/main/sprites/minimaps/ns_caged_4.spr
new file mode 100644
index 00000000..8d25eb79
Binary files /dev/null and b/main/sprites/minimaps/ns_caged_4.spr differ
diff --git a/main/sprites/minimaps/ns_caged_5.spr b/main/sprites/minimaps/ns_caged_5.spr
new file mode 100644
index 00000000..e7d8bd22
Binary files /dev/null and b/main/sprites/minimaps/ns_caged_5.spr differ
diff --git a/main/sprites/minimaps/ns_eclipse_4.spr b/main/sprites/minimaps/ns_eclipse_4.spr
new file mode 100644
index 00000000..6fbd1737
Binary files /dev/null and b/main/sprites/minimaps/ns_eclipse_4.spr differ
diff --git a/main/sprites/minimaps/ns_eclipse_5.spr b/main/sprites/minimaps/ns_eclipse_5.spr
new file mode 100644
index 00000000..20c2e114
Binary files /dev/null and b/main/sprites/minimaps/ns_eclipse_5.spr differ
diff --git a/main/sprites/minimaps/ns_eon_4.spr b/main/sprites/minimaps/ns_eon_4.spr
new file mode 100644
index 00000000..40b208a7
Binary files /dev/null and b/main/sprites/minimaps/ns_eon_4.spr differ
diff --git a/main/sprites/minimaps/ns_eon_5.spr b/main/sprites/minimaps/ns_eon_5.spr
new file mode 100644
index 00000000..8d8b5bb0
Binary files /dev/null and b/main/sprites/minimaps/ns_eon_5.spr differ
diff --git a/main/sprites/minimaps/ns_hera_4.spr b/main/sprites/minimaps/ns_hera_4.spr
new file mode 100644
index 00000000..a3ab3dfe
Binary files /dev/null and b/main/sprites/minimaps/ns_hera_4.spr differ
diff --git a/main/sprites/minimaps/ns_hera_5.spr b/main/sprites/minimaps/ns_hera_5.spr
new file mode 100644
index 00000000..e0f0c21a
Binary files /dev/null and b/main/sprites/minimaps/ns_hera_5.spr differ
diff --git a/main/sprites/minimaps/ns_lost_4.spr b/main/sprites/minimaps/ns_lost_4.spr
new file mode 100644
index 00000000..cbfc5e47
Binary files /dev/null and b/main/sprites/minimaps/ns_lost_4.spr differ
diff --git a/main/sprites/minimaps/ns_lost_5.spr b/main/sprites/minimaps/ns_lost_5.spr
new file mode 100644
index 00000000..0e3c702a
Binary files /dev/null and b/main/sprites/minimaps/ns_lost_5.spr differ
diff --git a/main/sprites/minimaps/ns_lucid_4.spr b/main/sprites/minimaps/ns_lucid_4.spr
new file mode 100644
index 00000000..15413189
Binary files /dev/null and b/main/sprites/minimaps/ns_lucid_4.spr differ
diff --git a/main/sprites/minimaps/ns_lucid_5.spr b/main/sprites/minimaps/ns_lucid_5.spr
new file mode 100644
index 00000000..44b05be1
Binary files /dev/null and b/main/sprites/minimaps/ns_lucid_5.spr differ
diff --git a/main/sprites/minimaps/ns_machina_4.spr b/main/sprites/minimaps/ns_machina_4.spr
new file mode 100644
index 00000000..6fea6a68
Binary files /dev/null and b/main/sprites/minimaps/ns_machina_4.spr differ
diff --git a/main/sprites/minimaps/ns_machina_5.spr b/main/sprites/minimaps/ns_machina_5.spr
new file mode 100644
index 00000000..dba671f9
Binary files /dev/null and b/main/sprites/minimaps/ns_machina_5.spr differ
diff --git a/main/sprites/minimaps/ns_metal_4.spr b/main/sprites/minimaps/ns_metal_4.spr
new file mode 100644
index 00000000..71da0772
Binary files /dev/null and b/main/sprites/minimaps/ns_metal_4.spr differ
diff --git a/main/sprites/minimaps/ns_metal_5.spr b/main/sprites/minimaps/ns_metal_5.spr
new file mode 100644
index 00000000..be9bc139
Binary files /dev/null and b/main/sprites/minimaps/ns_metal_5.spr differ
diff --git a/main/sprites/minimaps/ns_nancy_4.spr b/main/sprites/minimaps/ns_nancy_4.spr
new file mode 100644
index 00000000..904820b0
Binary files /dev/null and b/main/sprites/minimaps/ns_nancy_4.spr differ
diff --git a/main/sprites/minimaps/ns_nancy_5.spr b/main/sprites/minimaps/ns_nancy_5.spr
new file mode 100644
index 00000000..a38eaeba
Binary files /dev/null and b/main/sprites/minimaps/ns_nancy_5.spr differ
diff --git a/main/sprites/minimaps/ns_nothing_4.spr b/main/sprites/minimaps/ns_nothing_4.spr
new file mode 100644
index 00000000..eb254cc8
Binary files /dev/null and b/main/sprites/minimaps/ns_nothing_4.spr differ
diff --git a/main/sprites/minimaps/ns_nothing_5.spr b/main/sprites/minimaps/ns_nothing_5.spr
new file mode 100644
index 00000000..c1ebc236
Binary files /dev/null and b/main/sprites/minimaps/ns_nothing_5.spr differ
diff --git a/main/sprites/minimaps/ns_orbital_cal_4.spr b/main/sprites/minimaps/ns_orbital_cal_4.spr
new file mode 100644
index 00000000..0c574e66
Binary files /dev/null and b/main/sprites/minimaps/ns_orbital_cal_4.spr differ
diff --git a/main/sprites/minimaps/ns_orbital_cal_5.spr b/main/sprites/minimaps/ns_orbital_cal_5.spr
new file mode 100644
index 00000000..392a2373
Binary files /dev/null and b/main/sprites/minimaps/ns_orbital_cal_5.spr differ
diff --git a/main/sprites/minimaps/ns_origin_4.spr b/main/sprites/minimaps/ns_origin_4.spr
new file mode 100644
index 00000000..f90c8279
Binary files /dev/null and b/main/sprites/minimaps/ns_origin_4.spr differ
diff --git a/main/sprites/minimaps/ns_origin_5.spr b/main/sprites/minimaps/ns_origin_5.spr
new file mode 100644
index 00000000..890c7753
Binary files /dev/null and b/main/sprites/minimaps/ns_origin_5.spr differ
diff --git a/main/sprites/minimaps/ns_shiva_4.spr b/main/sprites/minimaps/ns_shiva_4.spr
new file mode 100644
index 00000000..12220209
Binary files /dev/null and b/main/sprites/minimaps/ns_shiva_4.spr differ
diff --git a/main/sprites/minimaps/ns_shiva_5.spr b/main/sprites/minimaps/ns_shiva_5.spr
new file mode 100644
index 00000000..64ce274e
Binary files /dev/null and b/main/sprites/minimaps/ns_shiva_5.spr differ
diff --git a/main/sprites/minimaps/ns_tanith_4.spr b/main/sprites/minimaps/ns_tanith_4.spr
new file mode 100644
index 00000000..786861c8
Binary files /dev/null and b/main/sprites/minimaps/ns_tanith_4.spr differ
diff --git a/main/sprites/minimaps/ns_tanith_5.spr b/main/sprites/minimaps/ns_tanith_5.spr
new file mode 100644
index 00000000..f6ebea3c
Binary files /dev/null and b/main/sprites/minimaps/ns_tanith_5.spr differ
diff --git a/main/sprites/minimaps/ns_veil_4.spr b/main/sprites/minimaps/ns_veil_4.spr
new file mode 100644
index 00000000..fe34a9f9
Binary files /dev/null and b/main/sprites/minimaps/ns_veil_4.spr differ
diff --git a/main/sprites/minimaps/ns_veil_5.spr b/main/sprites/minimaps/ns_veil_5.spr
new file mode 100644
index 00000000..d0cc0df7
Binary files /dev/null and b/main/sprites/minimaps/ns_veil_5.spr differ
diff --git a/main/sprites/nl/640a-cloak.spr b/main/sprites/nl/640a-cloak.spr
new file mode 100644
index 00000000..f363c52a
Binary files /dev/null and b/main/sprites/nl/640a-cloak.spr differ
diff --git a/main/sprites/nl/640a-energy.spr b/main/sprites/nl/640a-energy.spr
new file mode 100644
index 00000000..cb6d875e
Binary files /dev/null and b/main/sprites/nl/640a-energy.spr differ
diff --git a/main/sprites/nl/640alienupgrades.spr b/main/sprites/nl/640alienupgrades.spr
new file mode 100644
index 00000000..c1dd32ed
Binary files /dev/null and b/main/sprites/nl/640alienupgrades.spr differ
diff --git a/main/sprites/nl/640order.spr b/main/sprites/nl/640order.spr
new file mode 100644
index 00000000..22a63b16
Binary files /dev/null and b/main/sprites/nl/640order.spr differ
diff --git a/main/sprites/nl/commandbutton.spr b/main/sprites/nl/commandbutton.spr
new file mode 100644
index 00000000..085d98da
Binary files /dev/null and b/main/sprites/nl/commandbutton.spr differ
diff --git a/main/sprites/nl/commandstatus.spr b/main/sprites/nl/commandstatus.spr
new file mode 100644
index 00000000..0f4e57c1
Binary files /dev/null and b/main/sprites/nl/commandstatus.spr differ
diff --git a/main/sprites/nl/font_arial.dat b/main/sprites/nl/font_arial.dat
new file mode 100644
index 00000000..fd4486f3
Binary files /dev/null and b/main/sprites/nl/font_arial.dat differ
diff --git a/main/sprites/nl/font_arial.spr b/main/sprites/nl/font_arial.spr
new file mode 100644
index 00000000..88afd0dd
Binary files /dev/null and b/main/sprites/nl/font_arial.spr differ
diff --git a/main/sprites/nl/font_arialsmall.dat b/main/sprites/nl/font_arialsmall.dat
new file mode 100644
index 00000000..fd4486f3
Binary files /dev/null and b/main/sprites/nl/font_arialsmall.dat differ
diff --git a/main/sprites/nl/font_arialsmall.spr b/main/sprites/nl/font_arialsmall.spr
new file mode 100644
index 00000000..88afd0dd
Binary files /dev/null and b/main/sprites/nl/font_arialsmall.spr differ
diff --git a/main/sprites/nl/hivehealth.spr b/main/sprites/nl/hivehealth.spr
new file mode 100644
index 00000000..21c04475
Binary files /dev/null and b/main/sprites/nl/hivehealth.spr differ
diff --git a/main/sprites/nl/hiveinfo.spr b/main/sprites/nl/hiveinfo.spr
new file mode 100644
index 00000000..fdb6db67
Binary files /dev/null and b/main/sprites/nl/hiveinfo.spr differ
diff --git a/main/sprites/nl/hudorder.spr b/main/sprites/nl/hudorder.spr
new file mode 100644
index 00000000..22a63b16
Binary files /dev/null and b/main/sprites/nl/hudorder.spr differ
diff --git a/main/sprites/nl/logout.spr b/main/sprites/nl/logout.spr
new file mode 100644
index 00000000..a5b4ecab
Binary files /dev/null and b/main/sprites/nl/logout.spr differ
diff --git a/main/sprites/nl/mainhud.spr b/main/sprites/nl/mainhud.spr
new file mode 100644
index 00000000..e36f91f5
Binary files /dev/null and b/main/sprites/nl/mainhud.spr differ
diff --git a/main/sprites/nl/reticle.spr b/main/sprites/nl/reticle.spr
new file mode 100644
index 00000000..e0632d64
Binary files /dev/null and b/main/sprites/nl/reticle.spr differ
diff --git a/main/sprites/nl/selectall.spr b/main/sprites/nl/selectall.spr
new file mode 100644
index 00000000..6175e718
Binary files /dev/null and b/main/sprites/nl/selectall.spr differ
diff --git a/main/sprites/nl/techtree/tech0s.spr b/main/sprites/nl/techtree/tech0s.spr
new file mode 100644
index 00000000..52aba559
Binary files /dev/null and b/main/sprites/nl/techtree/tech0s.spr differ
diff --git a/main/sprites/nl/techtree/tech20s.spr b/main/sprites/nl/techtree/tech20s.spr
new file mode 100644
index 00000000..2e85784d
Binary files /dev/null and b/main/sprites/nl/techtree/tech20s.spr differ
diff --git a/main/sprites/nl/techtree/tech30s.spr b/main/sprites/nl/techtree/tech30s.spr
new file mode 100644
index 00000000..4ece6d17
Binary files /dev/null and b/main/sprites/nl/techtree/tech30s.spr differ
diff --git a/main/sprites/nl/techtree/tech40s.spr b/main/sprites/nl/techtree/tech40s.spr
new file mode 100644
index 00000000..ccc5e9ce
Binary files /dev/null and b/main/sprites/nl/techtree/tech40s.spr differ
diff --git a/main/sprites/nl/techtree/tech50s.spr b/main/sprites/nl/techtree/tech50s.spr
new file mode 100644
index 00000000..46f222a5
Binary files /dev/null and b/main/sprites/nl/techtree/tech50s.spr differ
diff --git a/main/sprites/nl/techtree/tech60s.spr b/main/sprites/nl/techtree/tech60s.spr
new file mode 100644
index 00000000..fc41cbc1
Binary files /dev/null and b/main/sprites/nl/techtree/tech60s.spr differ
diff --git a/main/sprites/nl/techtree/tech80s.spr b/main/sprites/nl/techtree/tech80s.spr
new file mode 100644
index 00000000..b5dc6394
Binary files /dev/null and b/main/sprites/nl/techtree/tech80s.spr differ
diff --git a/main/sprites/nl/topdownbg.spr b/main/sprites/nl/topdownbg.spr
new file mode 100644
index 00000000..24c6897a
Binary files /dev/null and b/main/sprites/nl/topdownbg.spr differ
diff --git a/main/sprites/nl/topdownbottom.spr b/main/sprites/nl/topdownbottom.spr
new file mode 100644
index 00000000..ca6b5a19
Binary files /dev/null and b/main/sprites/nl/topdownbottom.spr differ
diff --git a/main/sprites/nl/topdowntop.spr b/main/sprites/nl/topdowntop.spr
new file mode 100644
index 00000000..774365bc
Binary files /dev/null and b/main/sprites/nl/topdowntop.spr differ
diff --git a/main/sprites/nl/upgrades.spr b/main/sprites/nl/upgrades.spr
new file mode 100644
index 00000000..02ac1d97
Binary files /dev/null and b/main/sprites/nl/upgrades.spr differ
diff --git a/main/sprites/nl_crosshairs.spr b/main/sprites/nl_crosshairs.spr
new file mode 100644
index 00000000..cdedc434
Binary files /dev/null and b/main/sprites/nl_crosshairs.spr differ
diff --git a/main/updatesettings.cfg b/main/updatesettings.cfg
new file mode 100644
index 00000000..c2d19ac8
--- /dev/null
+++ b/main/updatesettings.cfg
@@ -0,0 +1,10 @@
+writecfg "backupb4update"
+m_rawinput "1"
+fps_max "250"
+fps_override "1"
+gl_vsync "0"
+developer "0"
+rate "30000"
+cl_updaterate "100"
+cl_cmdrate "100"
+ex_interp "0.05"
\ No newline at end of file
diff --git a/main/user.scr b/main/user.scr
index 39909725..4c2587eb 100644
--- a/main/user.scr
+++ b/main/user.scr
@@ -32,7 +32,7 @@
// Half-Life User Info Configuration Layout Script (stores last settings chosen, too)
-// File generated: Wed Jun 22 14:28:14 AM
+// File generated: Sun Aug 12 07:21:40 AM
//
//
// Cvar - Setting
@@ -45,17 +45,187 @@ DESCRIPTION INFO_OPTIONS
{
"Show hints"
{ BOOL }
- { "1" }
- SetInfo
+ { "0" }
}
- "cl_labelmaps"
+ "hud_style"
{
- "Draw location names"
+ "HUD style (requires map reload)"
+ {
+ LIST
+ "Original" "0"
+ "Minimal" "1"
+ "Competitive - Nine Legends" "2"
+ }
+ { "1.000000" }
+ }
+
+ "hud_mapstyle"
+ {
+ "Map style"
+ {
+ LIST
+ "Opaque Unlabeled" "0"
+ "Opaque Labeled" "1"
+ "Semi-transparent Unlabeled" "2"
+ "Semi-transparent Labeled" "3"
+ "Transparent Unlabeled" "4"
+ "Transparent Labeled" "5"
+ }
+ { "3.000000" }
+ }
+
+ "cl_hudmapzoom"
+ {
+ "Marine minimap zoom level"
+ {
+ LIST
+ "No map" "0"
+ "No Zoom (X1)" "1"
+ "Medium Zoom (2X)" "2"
+ "Full Zoom (3X) " "3"
+ }
+ { "3.000000" }
+ }
+
+ "cl_cross"
+ {
+ "New crosshair system"
{ BOOL }
{ "1" }
}
+ "cl_cross_color"
+ {
+ "Crosshair color (R G B)"
+ { STRING }
+ { "255 255 255" }
+ }
+
+ "cl_cross_alpha"
+ {
+ "Crosshair transparency (0-255)"
+ { NUMBER 0.000000 255.000000 }
+ { "255.000000" }
+ }
+
+ "cl_cross_size"
+ {
+ "Crosshair length"
+ { NUMBER -1.000000 -1.000000 }
+ { "6.000000" }
+ }
+
+ "cl_cross_gap"
+ {
+ "Crosshair gap"
+ { NUMBER -1.000000 -1.000000 }
+ { "3.000000" }
+ }
+
+ "cl_cross_thickness"
+ {
+ "Crosshair thickness"
+ { NUMBER -1.000000 -1.000000 }
+ { "2.000000" }
+ }
+
+ "cl_cross_outline"
+ {
+ "Crosshair outline thickness"
+ { NUMBER -1.000000 -1.000000 }
+ { "2.000000" }
+ }
+
+ "cl_cross_outline_alpha"
+ {
+ "Crosshair outline transparency (0-255)"
+ { NUMBER 0.000000 255.000000 }
+ { "255.000000" }
+ }
+
+ "cl_cross_outline_inner"
+ {
+ "Outline inside of cross"
+ { BOOL }
+ { "0" }
+ }
+
+ "cl_cross_dot_size"
+ {
+ "Crosshair dot size"
+ { NUMBER -1.000000 -1.000000 }
+ { "0.000000" }
+ }
+
+ "cl_cross_dot_outline"
+ {
+ "Crosshair dot outline thickness"
+ { NUMBER -1.000000 -1.000000 }
+ { "0.000000" }
+ }
+
+ "cl_cross_circle_radius"
+ {
+ "Crosshair circle size"
+ { NUMBER 0.000000 255.000000 }
+ { "0.000000" }
+ }
+
+ "crosshair"
+ {
+ "Legacy crosshair system"
+ { BOOL }
+ { "0" }
+ }
+
+ "cl_customcrosshair"
+ {
+ "Legacy crosshair selection"
+ {
+ LIST
+ "Classic Crosshairs" "0"
+ "Custom 1" "1"
+ "Custom 2" "2"
+ "Custom 3" "3"
+ "Custom 4" "4"
+ }
+ { "0.000000" }
+ }
+
+ "cl_ambientsound"
+ {
+ "Ambient sound (requies map reload)"
+ {
+ LIST
+ "None" "0"
+ "All - Original" "1"
+ "Selective" "2"
+ }
+ { "2.000000" }
+ }
+
+ "senslock"
+ {
+ "Don't scale sensitivity with FOV (Skulk/Gorge)"
+ { BOOL }
+ { "0" }
+ }
+
+ "zoom_sensitivity_ratio"
+ {
+ "Zoom sensitivity ratio (skulk/gorge)"
+ { NUMBER 0.000000 5.000000 }
+ { "1.000000" }
+ }
+
+ "cl_cmhotkeys"
+ {
+ "Commander hotkeys"
+ { STRING }
+ { "qwerasdfzxcv" }
+ }
+
"cl_centerentityid"
{
"Center player names"
@@ -67,13 +237,6 @@ DESCRIPTION INFO_OPTIONS
{
"High detail particle systems"
{ BOOL }
- { "1" }
- }
-
- "cl_forcedefaultfov"
- {
- "Force 90 degree FOV"
- { BOOL }
{ "0" }
}
@@ -84,25 +247,25 @@ DESCRIPTION INFO_OPTIONS
{ "1" }
}
- "cl_dynamiclights"
+ "cl_labelhivesight"
{
- "Dynamic lights"
+ "Show alien hivesight text"
{ BOOL }
{ "1" }
}
- "cl_gammaramp"
+ "cl_dynamiclights"
{
- "Enable gamma ramp"
+ "Dynamic lights"
{ BOOL }
- { "1" }
+ { "0" }
}
"hud_fastswitch"
{
"Weapon fast-switch"
{ BOOL }
- { "0" }
+ { "1" }
}
"cl_musicenabled"
@@ -116,7 +279,7 @@ DESCRIPTION INFO_OPTIONS
{
"Music volume (0-255)"
{ NUMBER 0.000000 255.000000 }
- { "155.000000" }
+ { "100.000000" }
}
"cl_musicdirectory"
@@ -133,13 +296,6 @@ DESCRIPTION INFO_OPTIONS
{ "90.000000" }
}
- "cl_cmhotkeys"
- {
- "Commander hotkeys"
- { STRING }
- { "qwerasdfzxcv" }
- }
-
"r_decals"
{
"Decal limit"
diff --git a/main/userconfig.cfg b/main/userconfig.cfg
index 1c7ee3aa..e500df81 100644
--- a/main/userconfig.cfg
+++ b/main/userconfig.cfg
@@ -1,2 +1,35 @@
// Add your own configuration options in this file
// This file will not be rewritten as config.cfg will
+
+//Some commands placed here as default via NS Launcher installation because they are deleted/overwritten in config.cfg otherwise
+
+//Brighter lighting
+lightgamma "2"
+//brightness "5" //part of new default config
+//gamma "3" //part of new default config
+
+//Allow FPS above 100
+fps_override "1"
+gl_vsync "0"
+
+//View and weapon bob off
+cl_bob "0"
+
+//Execute marine and alien cfgs on F1/F2 press
+alias marinecfg "exec marineofficial.cfg;echo marine config loaded"
+alias aliencfg "exec alienofficial.cfg;echo alien config loaded"
+bind "F1" "jointeamone;marinecfg"
+bind "F2" "jointeamtwo;aliencfg"
+
+//Network rates for the 21st century
+rate "30000"
+cl_updaterate "100"
+cl_cmdrate "100"
+ex_interp "0.05"
+
+//Pistol script - toggled with P key
+alias "+pscript" "+attack"
+alias "-pscript" "-attack;wait;+attack;wait;wait;-attack"
+alias pson "bind mouse1 +pscript;bind p psoff"
+alias psoff "bind mouse1 +attack;bind p pson"
+bind p "pson"
\ No newline at end of file