diff --git a/engine/client/cl_ents.c b/engine/client/cl_ents.c index eacb718bc..b2ca8b55a 100644 --- a/engine/client/cl_ents.c +++ b/engine/client/cl_ents.c @@ -2853,7 +2853,7 @@ void CL_LinkViewModel(void) return; #endif - if (!r_drawviewmodel.value || !Cam_DrawViewModel(r_refdef.currentplayernum)) + if (r_drawviewmodel.value <= 0 || !Cam_DrawViewModel(r_refdef.currentplayernum)) return; #ifdef Q2CLIENT @@ -2864,7 +2864,7 @@ void CL_LinkViewModel(void) if (!r_drawentities.value) return; - if (cl.stats[r_refdef.currentplayernum][STAT_ITEMS] & IT_INVISIBILITY) + if ((cl.stats[r_refdef.currentplayernum][STAT_ITEMS] & IT_INVISIBILITY) && r_drawviewmodelinvis.value <= 0) return; if (cl.stats[r_refdef.currentplayernum][STAT_HEALTH] <= 0) @@ -2884,6 +2884,11 @@ void CL_LinkViewModel(void) else ent.alpha = 1; + if ((cl.stats[r_refdef.currentplayernum][STAT_ITEMS] & IT_INVISIBILITY) + && r_drawviewmodelinvis.value > 0 + && r_drawviewmodelinvis.value < 1) + ent.alpha *= r_drawviewmodelinvis.value; + ent.frame = cl.viewent[r_refdef.currentplayernum].frame; ent.oldframe = oldframe[r_refdef.currentplayernum]; diff --git a/engine/client/cl_parse.c b/engine/client/cl_parse.c index 7ef25fb00..f50c95971 100644 --- a/engine/client/cl_parse.c +++ b/engine/client/cl_parse.c @@ -2112,11 +2112,18 @@ void CLQ2_ParseConfigString (void) else if (i == Q2CS_SKYAXIS) { s = COM_Parse(s); - cl.skyaxis[0] = atof(com_token); - s = COM_Parse(s); - cl.skyaxis[1] = atof(com_token); - s = COM_Parse(s); - cl.skyaxis[2] = atof(com_token); + if (s) + { + cl.skyaxis[0] = atof(com_token); + s = COM_Parse(s); + if (s) + { + cl.skyaxis[1] = atof(com_token); + s = COM_Parse(s); + if (s) + cl.skyaxis[2] = atof(com_token); + } + } } else if (i == Q2CS_SKYROTATE) cl.skyrotate = atof(s); diff --git a/engine/client/render.h b/engine/client/render.h index c77cdc664..00c2b06de 100644 --- a/engine/client/render.h +++ b/engine/client/render.h @@ -355,6 +355,7 @@ extern cvar_t r_norefresh; extern cvar_t r_drawentities; extern cvar_t r_drawworld; extern cvar_t r_drawviewmodel; +extern cvar_t r_drawviewmodelinvis; extern cvar_t r_speeds; extern cvar_t r_waterwarp; extern cvar_t r_fullbright; diff --git a/engine/client/renderer.c b/engine/client/renderer.c index 4e509ff1e..a24a5afe8 100644 --- a/engine/client/renderer.c +++ b/engine/client/renderer.c @@ -27,6 +27,7 @@ unsigned int *d_8to32table = d_8to24bgrtable; //palette lookups while rendering // cvar_t r_drawviewmodel = {"r_drawviewmodel","1"}; +cvar_t r_drawviewmodelinvis = {"r_drawviewmodelinvis", "0"}; cvar_t r_netgraph = {"r_netgraph","0"}; cvar_t r_speeds = {"r_speeds","0", NULL, CVAR_CHEAT}; cvar_t r_waterwarp = {"r_waterwarp","1"}; @@ -501,6 +502,7 @@ void Renderer_Init(void) Cvar_Register (&r_fullbright, SCREENOPTIONS); Cvar_Register (&r_drawentities, GRAPHICALNICETIES); Cvar_Register (&r_drawviewmodel, GRAPHICALNICETIES); + Cvar_Register (&r_drawviewmodelinvis, GRAPHICALNICETIES); Cvar_Register (&r_waterwarp, GRAPHICALNICETIES); Cvar_Register (&r_speeds, SCREENOPTIONS); Cvar_Register (&r_netgraph, SCREENOPTIONS); diff --git a/engine/client/wad.c b/engine/client/wad.c index c20e82829..3bf38ddd8 100644 --- a/engine/client/wad.c +++ b/engine/client/wad.c @@ -517,16 +517,27 @@ void Mod_ParseInfoFromEntityLump(char *data) //actually, this should be in the m { Q_strncpyz(skyname, com_token, sizeof(skyname)); } - else if (!strcmp("skyrotate", key) || !strcmp("skyrotate", key)) + else if (!strcmp("skyrotate", key)) + { + skyrotate = atof(com_token); + } + else if (!strcmp("skyaxis", key)) { char *s; Q_strncpyz(key, com_token, sizeof(key)); s = COM_Parse(key); - skyaxis[0] = atof(s); - s = COM_Parse(s); - skyaxis[1] = atof(s); - COM_Parse(s); - skyaxis[2] = atof(s); + if (s) + { + skyaxis[0] = atof(s); + s = COM_Parse(s); + if (s) + { + skyaxis[1] = atof(s); + COM_Parse(s); + if (s) + skyaxis[2] = atof(s); + } + } } } diff --git a/engine/common/common.c b/engine/common/common.c index aabccad9e..fc417a1fa 100644 --- a/engine/common/common.c +++ b/engine/common/common.c @@ -3053,4 +3053,3 @@ int build_number( void ) return b; } - diff --git a/engine/common/console.h b/engine/common/console.h index 7e5acc537..5fb1adeca 100644 --- a/engine/common/console.h +++ b/engine/common/console.h @@ -74,8 +74,8 @@ extern conchar_t q3codemasks[MAXQ3COLOURS]; #define S_COLOR_GREEN "^2" #define S_COLOR_YELLOW "^3" #define S_COLOR_BLUE "^4" -#define S_COLOR_MAGENTA "^5" -#define S_COLOR_CYAN "^6" +#define S_COLOR_CYAN "^5" +#define S_COLOR_MAGENTA "^6" #define S_COLOR_WHITE "^7" #define CON_TEXTSIZE 16384