diff --git a/baseq3r/gfx/misc/snowpuff3.tga b/baseq3r/gfx/misc/snowpuff3.tga new file mode 100644 index 00000000..a0cb9cd8 Binary files /dev/null and b/baseq3r/gfx/misc/snowpuff3.tga differ diff --git a/baseq3r/scripts/custinfoparms.txt b/baseq3r/scripts/custinfoparms.txt index 4b5dba23..88f8887a 100644 --- a/baseq3r/scripts/custinfoparms.txt +++ b/baseq3r/scripts/custinfoparms.txt @@ -15,5 +15,6 @@ SURF_GRAVEL 0x800000 SURF_ICE 0x1000000 SURF_DIRT 0x2000000 + SURF_METAL 0x4000000 } diff --git a/baseq3r/scripts/gfx.shader b/baseq3r/scripts/gfx.shader index 0c88edb1..5ed342aa 100644 --- a/baseq3r/scripts/gfx.shader +++ b/baseq3r/scripts/gfx.shader @@ -388,6 +388,18 @@ smokePuffRagePro } } +snowPuff +{ + cull none + entityMergable // allow all the sprites to be merged together + { + map gfx/misc/snowpuff3.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbGen vertex + alphaGen vertex + } +} + shotgunSmokePuff { cull none diff --git a/baseq3r/scripts/q3r_arenas.txt b/baseq3r/scripts/q3r_arenas.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/baseq3r/scripts/q3r_surfaceparms.txt b/baseq3r/scripts/q3r_surfaceparms.txt deleted file mode 100644 index 97e901eb..00000000 --- a/baseq3r/scripts/q3r_surfaceparms.txt +++ /dev/null @@ -1,54 +0,0 @@ -// Make sure to leave a space between "name" and "{" -// and between "contents" and "}". -// Names are limited to 16 characters -// Max of 64 infoParms - -// name { clearsolid, surfaceflags, contents } -water { 1 0 32 } -slime { 1 0 16 } // mildly damaging -lava { 1 0 8 } // very damaging -playerclip { 1 0 65536 } -monsterclip { 1 0 131072 } -nodrop { 1 0 2147483648 } // don't drop items or leave bodies (death fog, lava, etc) -nonsolid { 1 16384 0 } // clears the solid flag - -// utility relevant attributes -origin { 1 0 16777216 } // center of rotating brushes -trans { 0 0 536870912 } // don't eat contained surfaces -detail { 0 0 134217728 } // don't include in structural bsp -structural { 0 0 268435456 } // force into structural bsp even if trnas -areaportal { 1 0 32768 } // divides areas -clusterportal { 1 0 1048576 } // for bots -donotenter { 1 0 2097152 } // for bots -botclipn { 1 0 4194304 } // for bots - -fog { 1 0 64 } // carves surfaces entering -sky { 0 4 0 } // emit light from an environment map -lightfilter { 0 32768 0 } // filter light going through it -alphashadow { 0 65536 0 } // test light on a per-pixel basis -hint { 0 256 0 } // use as a primary splitter - -// server attributes -slick { 0 2 0 } // ice in q3rally -noimpact { 0 16 0 } // don't make impact explosions or marks -nomarks { 0 32 0 } // don't make impact marks, but still explode -ladder { 0 8 0 } -nodamage { 0 1 0 } -metalsteps { 0 4096 0 } -flesh { 0 64 0 } -nosteps { 0 8192 0 } - -// drawsurf attributes -nodraw { 0 128 0 } // don't generate a drawsurface (or a lightmap) -pointlight { 0 2048 0 } // sample lighting at vertexes -nolightmap { 0 1024 0 } // don't generate a lightmap -nodlight { 0 131072 0 } // don't ever add dynamic lights -dust { 0 262144 0 } // leave dust trail when walking on this surface - -// extra q3rally attributes -grass { 0 524288 0 } -asphalt { 0 1048576 0 } -wet { 0 2097152 0 } -metal { 0 4096 0 } // metal -ice { 0 2 0 } // same as slick -dirt { 0 262144 0 } diff --git a/baseq3r/scripts/q3r_textures.shader b/baseq3r/scripts/q3r_textures.shader index c9857644..7cac725a 100644 --- a/baseq3r/scripts/q3r_textures.shader +++ b/baseq3r/scripts/q3r_textures.shader @@ -6219,7 +6219,7 @@ textures/q3r_ground/snowy04_slick textures/q3r_ground/snowy05_slick { qer_editorimage textures/q3r_ground/snowy05.tga - surfaceparm SURF_SLICK + surfaceparm SURF_SNOW surfaceparm nolightmap cull disable { diff --git a/baseq3r/scripts/surfaceparms.txt b/baseq3r/scripts/surfaceparms.txt deleted file mode 100644 index 2f8a209c..00000000 --- a/baseq3r/scripts/surfaceparms.txt +++ /dev/null @@ -1,46 +0,0 @@ -// Make sure to leave a space between "name" and "{" -// and between "contents" and "}". -// Names are limited to 16 characters -// Max of 64 infoParms - -// name { clearsolid, surfaceflags, contents } -water { 1 0 32 } -slime { 1 0 16 } // mildly damaging -lava { 1 0 8 } // very damaging -playerclip { 1 0 65536 } -monsterclip { 1 0 131072 } -nodrop { 1 0 2147483648 } // don't drop items or leave bodies (death fog, lava, etc) -nonsolid { 1 16384 0 } // clears the solid flag - -// utility relevant attributes -origin { 1 0 16777216 } // center of rotating brushes -trans { 0 0 536870912 } // don't eat contained surfaces -detail { 0 0 134217728 } // don't include in structural bsp -structural { 0 0 268435456 } // force into structural bsp even if trnas -areaportal { 1 0 32768 } // divides areas -clusterportal { 1 0 1048576 } // for bots -donotenter { 1 0 2097152 } // for bots -botclipn { 1 0 4194304 } // for bots - -fog { 1 0 64 } // carves surfaces entering -sky { 0 4 0 } // emit light from an environment map -lightfilter { 0 32768 0 } // filter light going through it -alphashadow { 0 65536 0 } // test light on a per-pixel basis -hint { 0 256 0 } // use as a primary splitter - -// server attributes -slick { 0 2 0 } -noimpact { 0 16 0 } // don't make impact explosions or marks -nomarks { 0 32 0 } // don't make impact marks, but still explode -ladder { 0 8 0 } -nodamage { 0 1 0 } -metalsteps { 0 4096 0 } -flesh { 0 64 0 } -nosteps { 0 8192 0 } - -// drawsurf attributes -nodraw { 0 128 0 } // don't generate a drawsurface (or a lightmap) -pointlight { 0 2048 0 } // sample lighting at vertexes -nolightmap { 0 1024 0 } // don't generate a lightmap -nodlight { 0 131072 0 } // don't ever add dynamic lights -dust { 0 262144 0 } // leave dust trail when walking on this surface \ No newline at end of file diff --git a/engine/code/cgame/cg_local.h b/engine/code/cgame/cg_local.h index ad5028a8..eb0f9b88 100644 --- a/engine/code/cgame/cg_local.h +++ b/engine/code/cgame/cg_local.h @@ -197,6 +197,7 @@ typedef struct centity_s { int trailTime; // so missile trails can handle dropped initial packets int dustTrailTime; + int snowTrailTime; int miscTime; int snapShotTime; // last time this entity was found in a snapshot @@ -387,7 +388,7 @@ typedef struct { int defendCount; int assistCount; int captures; - qboolean perfect; + qboolean perfect; int team; // Q3Rally Code Start int damageDealt; @@ -1062,6 +1063,8 @@ typedef struct { // special effects models qhandle_t teleportEffectModel; qhandle_t teleportEffectShader; + qhandle_t dustPuffShader; + qhandle_t snowPuffShader; #ifdef MISSIONPACK qhandle_t kamikazeEffectModel; qhandle_t kamikazeShockWave; @@ -1075,11 +1078,12 @@ typedef struct { qhandle_t invulnerabilityJuicedModel; qhandle_t medkitUsageModel; qhandle_t dustPuffShader; + qhandle_t snowPuffShader; qhandle_t heartShader; qhandle_t invulnerabilityPowerupModel; // Q3Rally Code Start #endif - qhandle_t dustPuffShader; + //#endif // Q3Rally Code END @@ -1344,7 +1348,7 @@ typedef struct { // Q3Rally Code END int redflag, blueflag; // flag status from configstrings int flagStatus; - int sigil[MAX_SIGILS]; + int sigil[MAX_SIGILS]; qboolean newHud; // @@ -1499,6 +1503,7 @@ extern vmCvar_t cg_oldRocket; extern vmCvar_t cg_oldPlasma; extern vmCvar_t cg_trueLightning; extern vmCvar_t cg_sigilLocator; +extern vmCvar_t cg_enableSnow; #ifdef MISSIONPACK extern vmCvar_t cg_redTeamName; extern vmCvar_t cg_blueTeamName; diff --git a/engine/code/cgame/cg_main.c b/engine/code/cgame/cg_main.c index e136f4de..ef50fd19 100644 --- a/engine/code/cgame/cg_main.c +++ b/engine/code/cgame/cg_main.c @@ -223,6 +223,7 @@ vmCvar_t cg_oldRocket; vmCvar_t cg_oldPlasma; vmCvar_t cg_trueLightning; vmCvar_t cg_sigilLocator; +vmCvar_t cg_enableSnow; #ifdef MISSIONPACK vmCvar_t cg_redTeamName; vmCvar_t cg_blueTeamName; @@ -403,6 +404,7 @@ static cvarTable_t cvarTable[] = { { &cg_currentSelectedPlayerName, "cg_currentSelectedPlayerName", "", CVAR_ARCHIVE}, { &cg_singlePlayer, "ui_singlePlayerActive", "0", CVAR_USERINFO}, { &cg_enableDust, "g_enableDust", "0", CVAR_SERVERINFO}, + { &cg_enableSnow, "g_enableSnow", "0", CVAR_SERVERINFO}, { &cg_enableBreath, "g_enableBreath", "0", CVAR_SERVERINFO}, { &cg_singlePlayerActive, "ui_singlePlayerActive", "0", CVAR_USERINFO}, { &cg_recordSPDemo, "ui_recordSPDemo", "0", CVAR_ARCHIVE}, @@ -1024,7 +1026,8 @@ static void CG_RegisterGraphics( void ) { cgs.media.scoreboardPing = trap_R_RegisterShaderNoMip( "menu/tab/ping.tga" ); cgs.media.scoreboardScore = trap_R_RegisterShaderNoMip( "menu/tab/score.tga" ); cgs.media.scoreboardTime = trap_R_RegisterShaderNoMip( "menu/tab/time.tga" ); - + cgs.media.snowPuffShader = trap_R_RegisterShader("snowPuff" ); + cgs.media.hastePuffShader = trap_R_RegisterShader("hasteSmokePuff" ); cgs.media.smokePuffShader = trap_R_RegisterShader( "smokePuff" ); cgs.media.smokePuffRageProShader = trap_R_RegisterShader( "smokePuffRagePro" ); cgs.media.shotgunSmokePuffShader = trap_R_RegisterShader( "shotgunSmokePuff" ); @@ -1074,7 +1077,6 @@ static void CG_RegisterGraphics( void ) { cgs.media.battleWeaponShader = trap_R_RegisterShader("powerups/battleWeapon" ); cgs.media.invisShader = trap_R_RegisterShader("powerups/invisibility" ); cgs.media.regenShader = trap_R_RegisterShader("powerups/regen" ); - cgs.media.hastePuffShader = trap_R_RegisterShader("hasteSmokePuff" ); #ifdef MISSIONPACK if ( cgs.gametype == GT_HARVESTER || cg_buildScript.integer ) { @@ -1142,6 +1144,7 @@ static void CG_RegisterGraphics( void ) { // Q3Rally Code Start #endif cgs.media.dustPuffShader = trap_R_RegisterShader("hasteSmokePuff" ); + cgs.media.snowPuffShader = trap_R_RegisterShader("snowPuff" ); //#endif // Q3Rally Code END diff --git a/engine/code/cgame/cg_players.c b/engine/code/cgame/cg_players.c index 991a0a4f..bf688300 100644 --- a/engine/code/cgame/cg_players.c +++ b/engine/code/cgame/cg_players.c @@ -2018,15 +2018,6 @@ static void CG_DustTrail( centity_t *cent ) { return; } -// STONELANCE - UPDATE: use this instead of my dust function? -/* - anim = cent->pe.legs.animationNumber & ~ANIM_TOGGLEBIT; - if ( anim != LEGS_LANDB && anim != LEGS_LAND ) { - return; - } -*/ -// END - cent->dustTrailTime += 40; if ( cent->dustTrailTime < cg.time ) { cent->dustTrailTime = cg.time; @@ -2055,6 +2046,51 @@ static void CG_DustTrail( centity_t *cent ) { #endif +/* +=============== +CG_SnowTrail +=============== +*/ +static void CG_SnowTrail( centity_t *cent ) { +// int anim; + vec3_t end, vel; + trace_t tr; + + if (!cg_enableSnow.integer) + return; + + if ( cent->snowTrailTime > cg.time ) { + return; + } + + cent->snowTrailTime += 40; + if ( cent->snowTrailTime < cg.time ) { + cent->snowTrailTime = cg.time; + } + + VectorCopy(cent->currentState.pos.trBase, end); + end[2] -= 64; + CG_Trace( &tr, cent->currentState.pos.trBase, NULL, NULL, end, cent->currentState.number, MASK_PLAYERSOLID ); + + if ( !(tr.surfaceFlags & SURF_SNOW) ) + return; + + VectorCopy( cent->currentState.pos.trBase, end ); + end[2] -= 16; + + VectorSet(vel, 0, 0, -30); + CG_SmokePuff( end, vel, + 24, + .8f, .8f, 0.7f, 0.33f, + 500, + cg.time, + 0, + 0, + cgs.media.snowPuffShader ); +} + +// #endif + /* =============== CG_TrailItem @@ -2891,6 +2927,10 @@ static void CG_SurfaceEffects( centity_t *cent, vec3_t curOrigin, vec3_t up, int shader = cgs.media.SMDirtShader; colorIndex = 1; } + else if (tr.surfaceFlags & SURF_SNOW){ + shader = cgs.media.SMDirtShader; + colorIndex = 1; + } else if (tr.surfaceFlags & SURF_DIRT) { shader = cgs.media.SMDirtShader; colorIndex = 1; @@ -2926,14 +2966,13 @@ static void CG_SurfaceEffects( centity_t *cent, vec3_t curOrigin, vec3_t up, int return; } -// trap_S_AddRealLoopingSound( cent->currentState.clientNum, origin, cent->currentState.pos.trDelta, trap_S_RegisterSound( "sound/rally/car/skid.wav", qfalse ) ); -/* + trap_S_AddRealLoopingSound( cent->currentState.clientNum, origin, cent->currentState.pos.trDelta, trap_S_RegisterSound( "sound/rally/car/skid.wav", qfalse ) ); + if( cent->skidSoundTime + 500 < cg.time ) { trap_S_StartSound( origin, cent->currentState.clientNum, CHAN_VOICE, trap_S_RegisterSound( "sound/rally/car/skid.wav", qfalse ) ); cent->skidSoundTime = cg.time; } -*/ VectorMA(curOrigin, 1/2.0F, delta, origin); VectorNormalize(delta); diff --git a/engine/code/game/bg_physics.h b/engine/code/game/bg_physics.h index db5fb336..74dfc057 100644 --- a/engine/code/game/bg_physics.h +++ b/engine/code/game/bg_physics.h @@ -98,10 +98,12 @@ extern float CP_GEAR_RATIOS[]; #define CP_DIRT_KCOF 0.8f #define CP_GRASS_SCOF 1.05f // short grass #define CP_GRASS_KCOF 0.7f -#define CP_GRAVEL_SCOF 1.22f // gravel -#define CP_GRAVEL_KCOF 0.85f -#define CP_SNOW_SCOF 0.7f // packed snow -#define CP_SNOW_KCOF 0.5f +#define CP_GRAVEL_SCOF 1.22f // gravel +#define CP_GRAVEL_KCOF 0.85f +#define CP_SNOW_SCOF 0.4f // packed snow +#define CP_SNOW_KCOF 0.27f +//#define CP_SNOW_SCOF 0.7f // packed snow +//#define CP_SNOW_KCOF 0.5f #define CP_OIL_SCOF 0.3f // oil #define CP_OIL_KCOF 0.2f diff --git a/engine/code/game/g_local.h b/engine/code/game/g_local.h index 2bbd41fb..27349504 100644 --- a/engine/code/game/g_local.h +++ b/engine/code/game/g_local.h @@ -956,6 +956,7 @@ extern vmCvar_t pmove_fixed; extern vmCvar_t pmove_msec; extern vmCvar_t g_rankings; extern vmCvar_t g_enableDust; +extern vmCvar_t g_enableSnow; extern vmCvar_t g_enableBreath; extern vmCvar_t g_singlePlayer; extern vmCvar_t g_proxMineTimeout; diff --git a/engine/code/game/g_main.c b/engine/code/game/g_main.c index 3bf82679..e52b2c8a 100644 --- a/engine/code/game/g_main.c +++ b/engine/code/game/g_main.c @@ -86,6 +86,7 @@ vmCvar_t pmove_msec; vmCvar_t g_rankings; vmCvar_t g_listEntity; vmCvar_t g_localTeamPref; +vmCvar_t g_enableSnow; #ifdef MISSIONPACK vmCvar_t g_obeliskHealth; vmCvar_t g_obeliskRegenPeriod; @@ -199,6 +200,7 @@ static cvarTable_t gameCvarTable[] = { { &g_allowVote, "g_allowVote", "1", CVAR_ARCHIVE, 0, qfalse }, { &g_listEntity, "g_listEntity", "0", 0, 0, qfalse }, + { &g_enableSnow, "g_enableSnow", "0", CVAR_SERVERINFO, 0, qtrue, qfalse }, #ifdef MISSIONPACK { &g_obeliskHealth, "g_obeliskHealth", "2500", 0, 0, qfalse }, diff --git a/engine/code/game/g_spawn.c b/engine/code/game/g_spawn.c index e1dfd6c6..3326898d 100644 --- a/engine/code/game/g_spawn.c +++ b/engine/code/game/g_spawn.c @@ -705,7 +705,10 @@ void SP_worldspawn( void ) { G_SpawnString( "enableDust", "0", &s ); trap_Cvar_Set( "g_enableDust", s ); - + + G_SpawnString( "enableSnow", "0", &s ); + trap_Cvar_Set( "g_enableSnow", s ); + G_SpawnString( "enableBreath", "0", &s ); trap_Cvar_Set( "g_enableBreath", s ); diff --git a/engine/code/qcommon/q_shared.h b/engine/code/qcommon/q_shared.h index e3ae2be6..2d586cb6 100644 --- a/engine/code/qcommon/q_shared.h +++ b/engine/code/qcommon/q_shared.h @@ -67,7 +67,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BASETA "missionpack" #ifndef PRODUCT_VERSION -#define PRODUCT_VERSION "v0.0.3.0_r339" +#define PRODUCT_VERSION "v0.0.3.0_r347" #endif diff --git a/engine/code/qcommon/surfaceflags.h b/engine/code/qcommon/surfaceflags.h index 12455bf4..6552faea 100644 --- a/engine/code/qcommon/surfaceflags.h +++ b/engine/code/qcommon/surfaceflags.h @@ -33,13 +33,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define CONTENTS_SLIME 16 #define CONTENTS_WATER 32 #define CONTENTS_FOG 64 - #define CONTENTS_NOTTEAM1 0x0080 #define CONTENTS_NOTTEAM2 0x0100 #define CONTENTS_NOBOTCLIP 0x0200 - #define CONTENTS_AREAPORTAL 0x8000 - #define CONTENTS_PLAYERCLIP 0x10000 #define CONTENTS_MONSTERCLIP 0x20000 //bot specific contents types @@ -49,9 +46,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define CONTENTS_DONOTENTER 0x200000 #define CONTENTS_BOTCLIP 0x400000 #define CONTENTS_MOVER 0x800000 - #define CONTENTS_ORIGIN 0x1000000 // removed before bsping an entity - #define CONTENTS_BODY 0x2000000 // should never be on a brush, only in game #define CONTENTS_CORPSE 0x4000000 #define CONTENTS_DETAIL 0x8000000 // brushes not used for the bsp @@ -79,8 +74,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define SURF_ALPHASHADOW 0x10000 // do per-pixel light shadow casting in q3map #define SURF_NODLIGHT 0x20000 // don't dlight even if solid (solid lava, skies) #define SURF_DUST 0x40000 // leave a dust trail when walking on this surface - -// STONELANCE #define SURF_GRASS 0x80000 #define SURF_ASPHALT 0x100000 #define SURF_WET 0x200000 @@ -89,5 +82,4 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define SURF_ICE 0x1000000 #define SURF_DIRT 0x2000000 #define SURF_METAL 0x4000000 -// END diff --git a/q3rallycode.ppr b/q3rallycode.ppr index e8f72cef..a359dfe7 100644 --- a/q3rallycode.ppr +++ b/q3rallycode.ppr @@ -95,7 +95,7 @@ q3rallycode engine\code\botlib\l_utils.h engine\code\botlib\lcc.mak engine\code\botlib\linux-i386.mak - -cgame + +cgame engine\code\cgame\cg_atmospheric.c engine\code\cgame\cg_consolecmds.c engine\code\cgame\cg_draw.c @@ -863,15 +863,21 @@ q3rallycode 2=engine\code\q3_ui\ui_rally_options.c 3=engine\code\cgame\cg_rally_hud.c 4=engine\code\cgame\cg_draw.c -5=engine\code\sdl\sdl_icon.h -6=engine\code\sdl\sdl_glimp.c -7=engine\code\game\bg_physics.c -8=engine\code\qcommon\surfaceflags.h +5=engine\code\game\bg_physics.c +6=engine\code\qcommon\surfaceflags.h +7=engine\code\cgame\cg_players.c +8=engine\code\cgame\cg_main.c +9=engine\code\game\g_local.h +10=engine\code\game\g_main.c +11=engine\code\game\g_spawn.c +12=engine\code\cgame\cg_event.c +13=engine\code\cgame\cg_rally_tools.c +14=engine\code\game\bg_physics.h [Selected Project Files] Main= -Selected=engine\code\qcommon\q_shared.h +Selected=engine\code\cgame\cg_main.c [engine\code\qcommon\q_shared.h] -TopLine=1073 +TopLine=52 Caret=39,70 [engine\code\q3_ui\ui_rally_controls.c] TopLine=333 @@ -885,15 +891,33 @@ Caret=108,806 [engine\code\cgame\cg_draw.c] TopLine=434 Caret=1,449 -[engine\code\sdl\sdl_icon.h] -TopLine=113 -Caret=28,137 -[engine\code\sdl\sdl_glimp.c] -TopLine=366 -Caret=38,390 [engine\code\game\bg_physics.c] -TopLine=632 -Caret=1,671 +TopLine=640 +Caret=29,655 [engine\code\qcommon\surfaceflags.h] -TopLine=13 -Caret=1,86 +TopLine=66 +Caret=1,80 +[engine\code\cgame\cg_players.c] +TopLine=2034 +Caret=1,2054 +[engine\code\cgame\cg_main.c] +TopLine=1132 +Caret=56,1147 +[engine\code\game\g_local.h] +TopLine=939 +Caret=34,959 +[engine\code\game\g_main.c] +TopLine=199 +Caret=79,203 +[engine\code\game\g_spawn.c] +TopLine=666 +Caret=39,707 +[engine\code\cgame\cg_event.c] +TopLine=830 +Caret=1,815 +[engine\code\cgame\cg_rally_tools.c] +TopLine=320 +Caret=1,324 +[engine\code\game\bg_physics.h] +TopLine=89 +Caret=27,104