about summary refs log tree commit diff
path: root/src/GameTick.cpp
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2023-08-25 04:06:49 +0900
committerNguyễn Gia Phong <cnx@loang.net>2023-08-25 04:11:13 +0900
commit371906f5fb958691a8bfce85c28eb4dfaf63559c (patch)
treec5c2d42600045cc080a18eb6488992974dbc5313 /src/GameTick.cpp
parentd08aaf50515cf3fcf03e6523976258b02f6b2e95 (diff)
downloadblackshades-371906f5fb958691a8bfce85c28eb4dfaf63559c.tar.gz
Hide laser sight in psychic visions
Fixes: 2c44d2e60bb8 ("Make laser always and only availble in 3rd person")
Diffstat (limited to 'src/GameTick.cpp')
-rw-r--r--src/GameTick.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index e71d8dd..b628637 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -609,6 +609,7 @@ void spawnNpc(Game* game)
 		npc.speedmult = 1.0f + 0.3f * game->difficulty;
 		npc.targetanimation = walkanim;
 		break;
+	default: break;
 	}
 
 	npc.pathnum = -1;
@@ -845,6 +846,7 @@ void recoil(Game* game, size_t i)
 			break;
 		}
 		break;
+	default: break;
 	}
 	if (person.recoil < 0)
 		person.recoil = 0;
@@ -896,7 +898,7 @@ void controlZombie(Game* game, size_t i)
 void renderLaser(Game* game)
 {
 	auto& player = game->person[0];
-	if (!player.aiming)
+	if (visions || !player.aiming)
 		return;
 	switch (player.currentanimation) {
 	case walkanim:
@@ -1520,7 +1522,9 @@ void Game::Tick()
 
 			person[i].averageloc /= max_joints;
 			person[i].playercoords=person[i].averageloc;
-			if(person[i].longdead<multiplier/2&&person[i].longdead>0)person[i].DrawSkeleton(i);
+			if (person[i].longdead < multiplier * 0.5f
+			    && person[i].longdead > 0)
+				person[i].drawSkeleton();
 			if (sqrlen(person[i].averageloc - person[i].oldaverageloc) < 0.2 * multiplier)
 				person[i].longdead -= multiplier / 2;
 		}
@@ -1640,7 +1644,7 @@ void Game::Tick()
 			XYZ aim;
 			if (j)
 				aim = aimBot(this, j);
-			else if (!zoom)
+			else if (!this->zoom)
 				aim = aimPlayer(this);
 			else
 				aim = facing;
@@ -2154,9 +2158,10 @@ void Game::Tick()
 
 				if(person[j].whichgun==shotgun&&p==numshots-1)sprites.MakeSprite(smokesprite, .4, 1, 1, 1, start+aim*1.5, velocity, 5);
 
-				if(person[j].whichgun==sniperrifle&&!zoom)sprites.MakeSprite(smokesprite, .3, 1, 1, 1, start+aim*2.2, velocity, 4);
-
-				if(j!=0||zoom==0)sprites.MakeSprite(bullet, .07, 1, 1, .7, lastshot[0]+aim*1, lastshot[1], .2);
+				if (person[j].whichgun == sniperrifle && !this->zoom)
+					sprites.MakeSprite(smokesprite, 0.3f, 1, 1, 1.0f, start + aim * 2.2f, velocity, 4.0f);
+				if (j != 0 || !this->zoom)
+					sprites.MakeSprite(bullet, 0.07f, 1, 1, 0.7f, lastshot[0] +aim, lastshot[1], 0.2f);
 
 				// Nearby bullet whoosh
 				XYZ* a = &lastshot[0];
@@ -2188,7 +2193,7 @@ void Game::Tick()
 		}
 	}
 
-	if (thirdperson && !zoom)
+	if (thirdperson && !this->zoom)
 		renderLaser(this);
 
 	//Snow
@@ -2476,12 +2481,13 @@ void Game::Tick()
 	camerashake-=multiplier;
 	if(camerashake<0)camerashake=0;
 
-	//camera position
+	// camera position
 	XYZ average;
-
-	if(!zoom)average=person[0].skeleton.joints[head].position*(person[0].aimamount/2+.5)+person[0].skeleton.joints[neck].position*((1-person[0].aimamount)/2);
-
-	if(zoom)average=person[0].skeleton.joints[righthand].position;
+	if (this->zoom)
+		average = person[0].skeleton.joints[righthand].position;
+	else
+		average = person[0].skeleton.joints[head].position * (0.5f + person[0].aimamount * 0.5f)
+			+ person[0].skeleton.joints[neck].position * (0.5f - person[0].aimamount * 0.5f);
 
 	if(person[0].skeleton.free==0&&thirdperson!=2)camera.position=person[0].playercoords+rotate(average,0,person[0].playerrotation,0);