summaryrefslogtreecommitdiff
path: root/src/game/g_weapon.c
diff options
context:
space:
mode:
authorPetr Pudlak <petr.mvd@gmail.com>2014-08-16 14:26:16 +0200
committerPetr Pudlak <petr.mvd@gmail.com>2014-08-16 14:26:16 +0200
commit8816244ec329acdd5eb64e0518e69ae77df1cd75 (patch)
treec7a7614c537a79b29452695c94ee7597b69e7993 /src/game/g_weapon.c
parentfc765f5f146627d282b4374dd0c575895d64a900 (diff)
Add the ability for humans to heal their team members
The medkit handling is moved to a new function G_UseMedkit. If there is a human within a given range that is either more wounded than the player, or poisoned, the medkit is applied to him (see G_NeedsMedkit). The range and the breadth of the action is configurable by cvars. The original patch was used on a server, but this port wasn't tested (only that it compiles).
Diffstat (limited to 'src/game/g_weapon.c')
-rw-r--r--src/game/g_weapon.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index a64f0f8..feee414 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -1454,6 +1454,37 @@ void G_ClearPlayerZapEffects( gentity_t *player )
}
}
+
+/*
+===============
+G_MedkitTarget
+
+Look for a possible healing target (a client) in the front.
+===============
+*/
+gentity_t *G_MedkitTarget( gentity_t *ent )
+{
+ trace_t tr;
+ gentity_t *targetEnt = NULL;
+
+ if( g_humanMedkitRange.value <= 0 ||
+ g_humanMedkitWidth.value <= 0 )
+ return NULL;
+
+ // Calculate muzzle point
+ AngleVectors( ent->client->ps.viewangles, forward, right, up );
+ CalcMuzzlePoint( ent, forward, right, up, muzzle );
+
+ G_WideTrace( &tr, ent, g_humanMedkitRange.value,
+ g_humanMedkitWidth.value, g_humanMedkitWidth.value, &targetEnt );
+
+ if( ( targetEnt != NULL ) &&
+ ( targetEnt->client != NULL ) )
+ return targetEnt;
+ else
+ return NULL;
+}
+
/*
===============
areaZapFire