diff --git a/README.md b/README.md
index e5b55c0c..b6157755 100644
--- a/README.md
+++ b/README.md
@@ -117,6 +117,7 @@ This means that plugins that do binary code analysis (Orpheu for example) probab
| mp_freezetime_jump | 1 | 0 | 1 | Allow players to jump during freezetime.
`0` disabled
`1` enabled |
| mp_defuser_allocation | 0 | 0 | 2 | Give defuser on player spawn.
`0` disabled
`1` Random players.
`2` All players. |
| mp_location_area_info | 0 | 0 | 3 | Enable location area info.
`0` disabled
`1` show location below HUD radar.
`2` show location in HUD chat. `NOT RECOMMENDED!` [:speech_balloon:](## "Not all client builds are compatible")
`3` both displayed. `NOT RECOMMENDED!` [:speech_balloon:](## "Not all client builds are compatible")
`NOTE`: Navigation `maps/.nav` file required and should contain place names
`NOTE`: If option `2` or `3` is enabled, be sure to enable `mp_chat_loc_fallback 1` |
+| mp_scoreboard_fix | 0 | 0 | 1 | Enable ReGameDLL scoreboard bug fix(Dead players could see the bomb or defuse kit).
`0` disabled
`1` enabled
`NOTE`: Absolutely cannot fix it in "CNCS😂" |
## How to install zBot for CS 1.6?
diff --git a/dist/game.cfg b/dist/game.cfg
index e6510f34..468bc669 100644
--- a/dist/game.cfg
+++ b/dist/game.cfg
@@ -587,3 +587,12 @@ mp_defuser_allocation "0"
//
// Default value: "0"
mp_location_area_info "0"
+
+// Enable ReGameDLL scoreboard bug fix(Dead players could see the bomb or defuse kit)
+// 0 - disable
+// 1 - enabled
+//
+// NOTE: Absolutely cannot fix it in "CNCS😂"
+//
+// Default value "0"
+mp_scoreboard_fix "0"
diff --git a/regamedll/dlls/game.cpp b/regamedll/dlls/game.cpp
index 8d781724..6d09e3bc 100644
--- a/regamedll/dlls/game.cpp
+++ b/regamedll/dlls/game.cpp
@@ -181,6 +181,8 @@ cvar_t defuser_allocation = { "mp_defuser_allocation", "0", 0, 0.0f, nullpt
cvar_t location_area_info = { "mp_location_area_info", "0", 0, 0.0f, nullptr };
cvar_t chat_loc_fallback = { "mp_chat_loc_fallback", "1", 1, 0.0f, nullptr };
+cvar_t scoreboard_fix = { "mp_scoreboard_fix", "0", FCVAR_SERVER, 0.0f, nullptr };
+
void GameDLL_Version_f()
{
if (Q_stricmp(CMD_ARGV(1), "version") != 0)
@@ -446,6 +448,8 @@ void EXT_FUNC GameDLLInit()
CVAR_REGISTER(&location_area_info);
CVAR_REGISTER(&chat_loc_fallback);
+ CVAR_REGISTER(&scoreboard_fix);
+
// print version
CONSOLE_ECHO("ReGameDLL version: " APP_VERSION "\n");
diff --git a/regamedll/dlls/game.h b/regamedll/dlls/game.h
index dcd712f5..92d8eb1d 100644
--- a/regamedll/dlls/game.h
+++ b/regamedll/dlls/game.h
@@ -204,6 +204,8 @@ extern cvar_t defuser_allocation;
extern cvar_t location_area_info;
extern cvar_t chat_loc_fallback;
+extern cvar_t scoreboard_fix;
+
#endif
extern cvar_t scoreboard_showmoney;
diff --git a/regamedll/dlls/player.cpp b/regamedll/dlls/player.cpp
index 38605eba..d56f0254 100644
--- a/regamedll/dlls/player.cpp
+++ b/regamedll/dlls/player.cpp
@@ -5548,11 +5548,21 @@ void CBasePlayer::SetScoreAttrib(CBasePlayer *dest)
#endif
#ifdef REGAMEDLL_FIXES
- // TODO: Remove these fixes when they are implemented on the client side
- if (state & (SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT) && GetForceCamera(dest) != CAMERA_MODE_SPEC_ANYONE)
+
+ if (
+#ifdef REGAMEDLL_ADD
+ scoreboard_fix.value
+#else
+ false
+#endif
+ )
{
- if (CSGameRules()->PlayerRelationship(this, dest) != GR_TEAMMATE)
- state &= ~(SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT);
+ // TODO: Remove these fixes when they are implemented on the client side
+ if (state & (SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT) && GetForceCamera(dest) != CAMERA_MODE_SPEC_ANYONE)
+ {
+ if (CSGameRules()->PlayerRelationship(this, dest) != GR_TEAMMATE)
+ state &= ~(SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT);
+ }
}
#endif