summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Millwood <thebenmachine@gmail.com>2009-10-03 12:16:21 +0000
committerTim Angus <tim@ngus.net>2013-01-03 00:15:48 +0000
commit8d809caefb16b15cb5d5631992dcbc6f1929dce3 (patch)
tree83e911f0bca388d9ea32427eddac4b13a61d79e0 /src
parentccbc1b2f5a63cdf5545390d35bf0364a1073d395 (diff)
* Fix compiler warning about G_FindOvermind
* Random fixes/rearrangements in deconstruct and PM_Weapon * Merge tremulous r1137 - noclipping specs - other noclip stuff - fix ammo check - maprotation fixes - no taunting when dead - code-level crap
Diffstat (limited to 'src')
-rw-r--r--src/cgame/cg_servercmds.c5
-rw-r--r--src/game/bg_pmove.c28
-rw-r--r--src/game/bg_public.h3
-rw-r--r--src/game/g_cmds.c38
-rw-r--r--src/game/g_local.h2
-rw-r--r--src/game/g_weapon.c3
6 files changed, 43 insertions, 36 deletions
diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c
index f95d18b7..8de4e198 100644
--- a/src/cgame/cg_servercmds.c
+++ b/src/cgame/cg_servercmds.c
@@ -548,6 +548,11 @@ void CG_Menu( int menu, int arg )
type = DT_COMMAND;
break;
+ case MN_CMD_CHEAT_TEAM:
+ shortMsg = "You may not use this command while on a team";
+ type = DT_COMMAND;
+ break;
+
case MN_CMD_TEAM:
//longMsg = "You must be on a team to perform this action. Join the alien"
// "or human team and try again.";
diff --git a/src/game/bg_pmove.c b/src/game/bg_pmove.c
index 6f15674c..7f62fd14 100644
--- a/src/game/bg_pmove.c
+++ b/src/game/bg_pmove.c
@@ -2835,9 +2835,9 @@ static void PM_Weapon( void )
{
int addTime = 200; //default addTime - should never be used
int maxClips;
- qboolean attack1 = qfalse;
- qboolean attack2 = qfalse;
- qboolean attack3 = qfalse;
+ qboolean attack1 = pm->cmd.buttons & BUTTON_ATTACK;
+ qboolean attack2 = pm->cmd.buttons & BUTTON_ATTACK2;
+ qboolean attack3 = pm->cmd.buttons & BUTTON_USE_HOLDABLE;
// Ignore weapons in some cases
if( pm->ps->persistant[ PERS_SPECSTATE ] != SPECTATOR_NOT ||
@@ -3054,11 +3054,9 @@ static void PM_Weapon( void )
// check for out of ammo
if( !pm->ps->ammo && !pm->ps->clips && !BG_Weapon( pm->ps->weapon )->infiniteAmmo )
{
- if( ( pm->cmd.buttons & BUTTON_ATTACK ) ||
- ( BG_Weapon( pm->ps->weapon )->hasAltMode &&
- ( pm->cmd.buttons & BUTTON_ATTACK2 ) ) ||
- ( BG_Weapon( pm->ps->weapon )->hasThirdMode &&
- ( pm->cmd.buttons & BUTTON_USE_HOLDABLE ) ) )
+ if( attack1 ||
+ ( BG_Weapon( pm->ps->weapon )->hasAltMode && attack2 ) ||
+ ( BG_Weapon( pm->ps->weapon )->hasThirdMode && attack3 ) )
{
PM_AddEvent( EV_NOAMMO );
pm->ps->weaponTime += 500;
@@ -3115,18 +3113,13 @@ static void PM_Weapon( void )
case WP_ALEVEL3:
case WP_ALEVEL3_UPG:
//pouncing has primary secondary AND autohit procedures
- attack1 = pm->cmd.buttons & BUTTON_ATTACK;
- attack2 = pm->cmd.buttons & BUTTON_ATTACK2;
- attack3 = pm->cmd.buttons & BUTTON_USE_HOLDABLE;
-
// pounce is autohit
if( !attack1 && !attack2 && !attack3 )
return;
break;
case WP_LUCIFER_CANNON:
- attack1 = pm->cmd.buttons & BUTTON_ATTACK;
- attack2 = pm->cmd.buttons & BUTTON_ATTACK2;
+ attack3 = qfalse;
// Prevent firing of the Lucifer Cannon after an overcharge
if( pm->ps->weaponstate == WEAPON_NEEDS_RESET )
@@ -3179,7 +3172,7 @@ static void PM_Weapon( void )
break;
case WP_MASS_DRIVER:
- attack1 = pm->cmd.buttons & BUTTON_ATTACK;
+ attack2 = attack3 = qfalse;
// attack2 is handled on the client for zooming (cg_view.c)
if( !attack1 )
@@ -3191,11 +3184,6 @@ static void PM_Weapon( void )
break;
default:
- //by default primary and secondary attacks are allowed
- attack1 = pm->cmd.buttons & BUTTON_ATTACK;
- attack2 = pm->cmd.buttons & BUTTON_ATTACK2;
- attack3 = pm->cmd.buttons & BUTTON_USE_HOLDABLE;
-
if( !attack1 && !attack2 && !attack3 )
{
pm->ps->weaponTime = 0;
diff --git a/src/game/bg_public.h b/src/game/bg_public.h
index 5763c658..a08b8cdd 100644
--- a/src/game/bg_public.h
+++ b/src/game/bg_public.h
@@ -113,7 +113,7 @@ typedef enum
PM_GRABBED, // like dead, but for when the player is still live
PM_DEAD, // no acceleration or turning, but free falling
PM_FREEZE, // stuck in place with no control
- PM_INTERMISSION, // no movement or status bar
+ PM_INTERMISSION // no movement or status bar
} pmtype_t;
// pmtype_t categories
@@ -554,6 +554,7 @@ typedef enum
// cmd stuff
MN_CMD_CHEAT,
+ MN_CMD_CHEAT_TEAM,
MN_CMD_TEAM,
MN_CMD_SPEC,
MN_CMD_ALIEN,
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index 06d2ed81..c12afd4a 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -1760,12 +1760,12 @@ void Cmd_Destroy_f( gentity_t *ent )
( ( ent->client->ps.weapon >= WP_ABUILD ) &&
( ent->client->ps.weapon <= WP_HBUILD ) ) )
{
- // Always let the builder prevent the explosion
- if( traceEnt->health <= 0 )
- {
- G_FreeEntity( traceEnt );
- return;
- }
+ // Always let the builder prevent the explosion
+ if( traceEnt->health <= 0 )
+ {
+ G_FreeEntity( traceEnt );
+ return;
+ }
// Cancel deconstruction
if( g_markDeconstruct.integer && traceEnt->deconstruct )
@@ -1781,19 +1781,19 @@ void Cmd_Destroy_f( gentity_t *ent )
traceEnt->s.modelindex == BA_A_SPAWN )
{
if( level.numAlienSpawns <= 1 )
- {
- G_TriggerMenu( ent->client->ps.clientNum, MN_B_LASTSPAWN );
+ {
+ G_TriggerMenu( ent->client->ps.clientNum, MN_B_LASTSPAWN );
return;
- }
+ }
}
else if( ent->client->pers.teamSelection == TEAM_HUMANS &&
traceEnt->s.modelindex == BA_H_SPAWN )
{
if( level.numHumanSpawns <= 1 )
- {
- G_TriggerMenu( ent->client->ps.clientNum, MN_B_LASTSPAWN );
+ {
+ G_TriggerMenu( ent->client->ps.clientNum, MN_B_LASTSPAWN );
return;
- }
+ }
}
}
@@ -1811,10 +1811,13 @@ void Cmd_Destroy_f( gentity_t *ent )
return;
}
- if( g_markDeconstruct.integer )
+ if( traceEnt->health > 0 )
{
if( !deconstruct )
- G_Damage( traceEnt, ent, ent, forward, tr.endpos, ent->health, 0, MOD_SUICIDE );
+ {
+ G_Damage( traceEnt, ent, ent, forward, tr.endpos,
+ traceEnt->health, 0, MOD_SUICIDE );
+ }
else if( g_markDeconstruct.integer )
{
traceEnt->deconstruct = qtrue; // Mark buildable for deconstruction
@@ -3061,6 +3064,13 @@ void ClientCommand( int clientNum )
return;
}
+ if( cmds[ i ].cmdFlags & CMD_CHEAT_TEAM && !g_cheats.integer &&
+ ent->client->pers.teamSelection != TEAM_NONE )
+ {
+ G_TriggerMenu( clientNum, MN_CMD_CHEAT_TEAM );
+ return;
+ }
+
if( cmds[ i ].cmdFlags & CMD_SPEC &&
ent->client->sess.spectatorState == SPECTATOR_NOT )
{
diff --git a/src/game/g_local.h b/src/game/g_local.h
index f1fa6b11..56985299 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -642,7 +642,7 @@ typedef struct
#define CMD_CHEAT_TEAM 0x0002 // is a cheat when used on a team
#define CMD_MESSAGE 0x0004 // sends message to others (skip when muted)
#define CMD_TEAM 0x0008 // must be on a team
-#define CMD_SPEC 0x0010 // must be in spectator mode
+#define CMD_SPEC 0x0010 // must be a spectator
#define CMD_ALIEN 0x0020
#define CMD_HUMAN 0x0040
#define CMD_LIVING 0x0080
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index 13648267..d5eda5ab 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -923,6 +923,9 @@ qboolean CheckVenomAttack( gentity_t *ent )
if( traceEnt->health <= 0 )
return qfalse;
+ if( traceEnt->health <= 0 )
+ return qfalse;
+
if( !traceEnt->client && !traceEnt->s.eType == ET_BUILDABLE )
return qfalse;