[iortcw] 356/497: All: Fix CG_WaterLevel() checks

Simon McVittie smcv at debian.org
Fri Sep 8 10:37:27 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.42d
in repository iortcw.

commit dfbbf3d63b5cd9a6b5d8c3b6fb25dadb0ca616de
Author: Donny <M4N4T4RMS at gmail.com>
Date:   Wed Jul 8 11:39:44 2015 -0400

    All: Fix CG_WaterLevel() checks
---
 MP/code/cgame/cg_event.c | 23 ++++++++++++++---------
 SP/code/cgame/cg_event.c | 22 +++++++++++++---------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/MP/code/cgame/cg_event.c b/MP/code/cgame/cg_event.c
index eb3b459..b8b8af4 100644
--- a/MP/code/cgame/cg_event.c
+++ b/MP/code/cgame/cg_event.c
@@ -588,23 +588,28 @@ Returns waterlevel for entity origin
 int CG_WaterLevel(centity_t *cent) {
 	vec3_t point;
 	int contents, sample1, sample2, anim, waterlevel;
+	int viewheight;
 
-	// get waterlevel, accounting for ducking
-	waterlevel = 0;
-	VectorCopy(cent->lerpOrigin, point);
-	point[2] += MINS_Z + 1;
 	anim = cent->currentState.legsAnim & ~ANIM_TOGGLEBIT;
 
 	if (anim == LEGS_WALKCR || anim == LEGS_IDLECR) {
-		point[2] += CROUCH_VIEWHEIGHT;
+		viewheight = CROUCH_VIEWHEIGHT;
 	} else {
-		point[2] += DEFAULT_VIEWHEIGHT;
+		viewheight = DEFAULT_VIEWHEIGHT;
 	}
 
+	//
+	// get waterlevel, accounting for ducking
+	//
+	waterlevel = 0;
+
+	point[0] = cent->lerpOrigin[0];
+	point[1] = cent->lerpOrigin[1];
+	point[2] = cent->lerpOrigin[2] + MINS_Z + 1;
 	contents = CG_PointContents(point, -1);
 
 	if (contents & MASK_WATER) {
-		sample2 = point[2] - MINS_Z;
+		sample2 = viewheight - MINS_Z;
 		sample1 = sample2 / 2;
 		waterlevel = 1;
 		point[2] = cent->lerpOrigin[2] + MINS_Z + sample1;
@@ -744,7 +749,7 @@ void CG_PainEvent( centity_t *cent, int health, qboolean crouching ) {
 	}
 
 	// play a gurp sound instead of a normal pain sound
-	if (CG_WaterLevel(cent) >= 1) {
+	if (CG_WaterLevel(cent) == 3) {
 		if (rand()&1) {
 			trap_S_StartSound(NULL, cent->currentState.number, CHAN_VOICE, CG_CustomSound(cent->currentState.number, "sound/player/gurp1.wav"));
 		} else {
@@ -2302,7 +2307,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
 	case EV_DEATH3:
 		DEBUGNAME( "EV_DEATHx" );
 
-		if (CG_WaterLevel(cent) >= 1) {
+		if (CG_WaterLevel(cent) == 3) {
 			trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, "*drown.wav"));
 		} else {
 			trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, va("*death%i.wav", event - EV_DEATH1 + 1)));
diff --git a/SP/code/cgame/cg_event.c b/SP/code/cgame/cg_event.c
index 9b9873d..f1973f8 100644
--- a/SP/code/cgame/cg_event.c
+++ b/SP/code/cgame/cg_event.c
@@ -546,23 +546,27 @@ Returns waterlevel for entity origin
 int CG_WaterLevel(centity_t *cent) {
 	vec3_t point;
 	int contents, sample1, sample2, anim, waterlevel;
+	int viewheight;
 
-	// get waterlevel, accounting for ducking
-	waterlevel = 0;
-	VectorCopy(cent->lerpOrigin, point);
-	point[2] += MINS_Z + 1;
 	anim = cent->currentState.legsAnim & ~ANIM_TOGGLEBIT;
 
 	if (anim == LEGS_WALKCR || anim == LEGS_IDLECR) {
-		point[2] += CROUCH_VIEWHEIGHT;
+		viewheight = CROUCH_VIEWHEIGHT;
 	} else {
-		point[2] += DEFAULT_VIEWHEIGHT;
+		viewheight = DEFAULT_VIEWHEIGHT;
 	}
 
+	// get waterlevel, accounting for ducking
+	//
+	waterlevel = 0;
+
+	point[0] = cent->lerpOrigin[0];
+	point[1] = cent->lerpOrigin[1];
+	point[2] = cent->lerpOrigin[2] + MINS_Z + 1;
 	contents = CG_PointContents(point, -1);
 
 	if (contents & MASK_WATER) {
-		sample2 = point[2] - MINS_Z;
+		sample2 = viewheight - MINS_Z;
 		sample1 = sample2 / 2;
 		waterlevel = 1;
 		point[2] = cent->lerpOrigin[2] + MINS_Z + sample1;
@@ -702,7 +706,7 @@ void CG_PainEvent( centity_t *cent, int health, qboolean crouching ) {
 	}
 	
 	// play a gurp sound instead of a normal pain sound
-	if (CG_WaterLevel(cent) >= 1) {
+	if (CG_WaterLevel(cent) == 3) {
 		if (rand()&1) {
 			trap_S_StartSound(NULL, cent->currentState.number, CHAN_VOICE, CG_CustomSound(cent->currentState.number, "sound/player/gurp1.wav"));
 		} else {
@@ -2364,7 +2368,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
 	case EV_DEATH3:
 		DEBUGNAME( "EV_DEATHx" );
 
-		if (CG_WaterLevel(cent) >= 1) {
+		if (CG_WaterLevel(cent) == 3) {
 			trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, "sound/player/gurp1.wav"));
 		} else {
 			trap_S_StartSound(NULL, es->number, CHAN_VOICE, CG_CustomSound(es->number, va("*death%i.wav", event - EV_DEATH1 + 1)));

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git



More information about the Pkg-games-commits mailing list