This was somewhat popular in RTCW, so here it is for ET:
diff -c ../../WET_Source1.02_orig/src/game/g_combat.c game/g_combat.c
*** ../../WET_Source1.02_orig/src/game/g_combat.c Tue Jul 22 18:05:56 2003
--- game/g_combat.c Fri Jan 30 17:11:54 2004
***************
*** 1460,1465 ****
--- 1460,1503 ----
trap_SendServerCommand( attacker-g_entities, "print \"Body Shot
\"
");
}
}
+ //-- reyalP
+ // headshot mode. If not headshot, and both sides are players and the target is
+ // not down waiting for a med
+ // simple version
+ /*
+ if ( rmg_headShot.integer &&
+ !headShot &&
+ attacker->client &&
+ targ->client &&
+ targ->client->ps.pm_type != PM_DEAD) {
+ take = 0;
+ }
+ */
+ //-- reyalP
+ // headshot mode enabled
+ if ( rmg_headShot.integer & RMOD_HS_ENABLE) {
+ // if not a headshot, we might still want to hurt some things
+ if( !headShot) {
+ // if the attacker is not a player, check if it should be able to give damage
+ if( !attacker->client && (rmg_headShot.integer & RMOD_HS_NPENOGIVEDAM)) {
+ take = 0;
+ }
+ // if the victim is not a player, check if it should be able to take damage
+ if( !targ->client && (rmg_headShot.integer & RMOD_HS_NPENOTAKEDAM)) {
+ take = 0;
+ }
+ // if the attacker and victim are a players, only damage them if they are dead,
+ // so we can send them on to limbo. Note this means that if NPENOGIVE is on then
+ // falling corpses never gib
+ if ( attacker->client && targ->client && targ->client->ps.pm_type != PM_DEAD) {
+ take = 0;
+ }
+ }
+ // if this is a headshot, see if we should really really hurt them
+ else if (rmg_headShot.integer & RMOD_HS_INSTAGIB) {
+ take = 200;
+ }
+ }
#ifndef DEBUG_STATS
if ( g_debugDamage.integer )
diff -c ../../WET_Source1.02_orig/src/game/g_local.h game/g_local.h
*** ../../WET_Source1.02_orig/src/game/g_local.h Tue Sep 2 16:50:26 2003
--- game/g_local.h Fri Jan 30 16:21:02 2004
***************
*** 12,18 ****
// the "gameversion" client command will print this plus compile date
#ifndef PRE_RELEASE_DEMO
! #define GAMEVERSION "etmain"
#else
//#define GAMEVERSION "You look like you need a monkey!"
#define GAMEVERSION "ettest"
--- 12,20 ----
// the "gameversion" client command will print this plus compile date
#ifndef PRE_RELEASE_DEMO
! // -- reyalp mod
! #define GAMEVERSION "rmod"
! #define RMODVERSION "0.1 alpha"
#else
//#define GAMEVERSION "You look like you need a monkey!"
#define GAMEVERSION "ettest"
***************
*** 1777,1782 ****
--- 1779,1787 ----
extern vmCvar_t g_disableComplaints;
+ // -- reyalP
+ extern vmCvar_t rmg_headShot;
+
extern vmCvar_t bot_debug; // if set, draw "thought bubbles" for crosshair-selected bot
extern vmCvar_t bot_debug_curAINode; // the text of the current ainode for the bot begin debugged
extern vmCvar_t bot_debug_alertState; // alert state of the bot being debugged
***************
*** 2246,2251 ****
--- 2251,2266 ----
#define AA_STATSTEAM 0x02 // Client AutoAction: Dump TEAM player stats
+ // --reyalP
+ // headshot mode flags
+ #define RMOD_HS_ENABLE 0x1
+ // non player entities don't give damage
+ #define RMOD_HS_NPENOGIVEDAM 0x2
+ // non player entities take damage
+ #define RMOD_HS_NPENOTAKEDAM 0x4
+ // headshots instagib
+ #define RMOD_HS_INSTAGIB 0x8
+
// "Delayed Print" ent enumerations
typedef enum {
DP_PAUSEINFO, // Print current pause info
diff -c ../../WET_Source1.02_orig/src/game/g_main.c game/g_main.c
*** ../../WET_Source1.02_orig/src/game/g_main.c Tue Sep 2 16:50:26 2003
--- game/g_main.c Fri Jan 30 16:20:57 2004
***************
*** 203,208 ****
--- 203,210 ----
vmCvar_t g_disableComplaints;
+ // -- reyalP
+ vmCvar_t rmg_headShot;
cvarTable_t gameCvarTable[] = {
// don't override the cheat state set by the system
***************
*** 422,427 ****
--- 424,437 ----
{ &g_nextcampaign, "nextcampaign", "", CVAR_TEMP },
{ &g_disableComplaints, "g_disableComplaints", "0", CVAR_ARCHIVE },
+ // -- reyalP headshot mod. Should be SERVERINFO, but there are if there are too many SERVERINFOs
+ // enable change announcement
+ // 1: headshot mode
+ // + 2: non-players do not give damage (falling, barbwire)
+ // + 4: non-players do not take damage (tanks, bridges, doesn't include primary objectives)
+ // + 8: headshots instagib
+ { &rmg_headShot, "rmg_headShot", "0", CVAR_SERVERINFO , 0, qtrue },
+ { NULL, "rmodversion", RMODVERSION , CVAR_SERVERINFO | CVAR_ROM },
};
// bk001129 - made static to avoid aliasing



