diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 68a317ad4..cf9fdc6cd 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -7601,7 +7601,7 @@ void bgunRender(Gfx **gdlptr) gdl = vi0000b0e8(gdl, 60, f2); } - if (PLAYERCOUNT() == 1) { + if (g_LasersightsActive && PLAYERCOUNT() == 1) { gdl = lasersightRenderBeam(gdl); } diff --git a/src/game/gunfx.c b/src/game/gunfx.c index 961146b02..40087b4a6 100644 --- a/src/game/gunfx.c +++ b/src/game/gunfx.c @@ -25,6 +25,7 @@ struct boltbeam g_BoltBeams[8]; struct lasersight g_LaserSights[4]; s32 g_BeamsActive; +s32 g_LasersightsActive; void beamCreate(struct beam *beam, s32 weaponnum, struct coord *from, struct coord *to) { @@ -1391,6 +1392,7 @@ void lasersightSetBeam(s32 id, s32 arg1, struct coord *near, struct coord *far) } g_LaserSights[i].id = id; + g_LasersightsActive++; } g_LaserSights[i].unk04 = *near; @@ -1422,5 +1424,6 @@ void lasersightFree(s32 arg0) if (lasersightExists(arg0, &i)) { g_LaserSights[i].id = -1; + g_LasersightsActive--; } } diff --git a/src/game/gunfxreset.c b/src/game/gunfxreset.c index 1edd766b8..53141c22f 100644 --- a/src/game/gunfxreset.c +++ b/src/game/gunfxreset.c @@ -30,4 +30,6 @@ void lasersightsReset(void) for (i = 0; i < 4; i++) { g_LaserSights[i].id = -1; } + + g_LasersightsActive = 0; } diff --git a/src/game/player.c b/src/game/player.c index ec2a5809c..11d8f396d 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -4176,7 +4176,10 @@ Gfx *playerRenderHud(Gfx *gdl) bgunTickGameplay2(); gdl = boltbeamsRender(gdl); bgunRender(&gdl); - gdl = lasersightRenderDot(gdl); + + if (g_LasersightsActive) { + gdl = lasersightRenderDot(gdl); + } if (g_Vars.currentplayer->visionmode != VISIONMODE_XRAY) { gdl = bgRenderArtifacts(gdl); diff --git a/src/include/bss.h b/src/include/bss.h index 78756911b..009937322 100644 --- a/src/include/bss.h +++ b/src/include/bss.h @@ -289,6 +289,7 @@ extern struct bossfile g_BossFile; extern struct chrdata *g_MpBotChrPtrs[MAX_BOTS]; extern bool g_AmActive; extern s32 g_BeamsActive; +extern s32 g_LasersightsActive; extern bool g_StarsActive; extern u8 g_HudmsgsActive; extern struct roommtx *g_RoomMtxes;