Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrict play in ruleset smack{down,drive} #1025

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions src/rulesets.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ typedef struct rulesetDef_s {
qbool restrictTriggers;
qbool restrictPacket;
qbool restrictParticles;
qbool restrictSound;
qbool restrictPlay;
qbool restrictLogging;
qbool restrictRollAngle;
qbool restrictIPC;
Expand Down Expand Up @@ -186,9 +186,13 @@ qbool Rulesets_RestrictTriggers(void)
return rulesetDef.restrictTriggers;
}

qbool Rulesets_RestrictSound(const char* name)
qbool Rulesets_RestrictPlay(const char* name)
{
if (!rulesetDef.restrictSound) {
if (!rulesetDef.restrictPlay) {
return false;
}

if (cls.state == ca_active && (cl.spectator || cls.demoplayback || cl.standby)) {
return false;
}

Expand Down Expand Up @@ -314,6 +318,7 @@ static void Rulesets_Smackdown(qbool enable)
rulesetDef.restrictSetCalc = true;
rulesetDef.restrictSetEval = true;
rulesetDef.restrictSetEx = true;
rulesetDef.restrictPlay = true;
} else {
for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++)
Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM);
Expand All @@ -333,6 +338,7 @@ static void Rulesets_Smackdown(qbool enable)
rulesetDef.restrictSetCalc = false;
rulesetDef.restrictSetEval = false;
rulesetDef.restrictSetEx = false;
rulesetDef.restrictPlay = false;
}
}

Expand Down Expand Up @@ -370,7 +376,7 @@ static void Rulesets_Qcon(qbool enable)
rulesetDef.restrictTriggers = true;
rulesetDef.restrictPacket = true; // packet command could have been exploited for external timers
rulesetDef.restrictParticles = true;
rulesetDef.restrictSound = true;
rulesetDef.restrictPlay = true;
rulesetDef.restrictLogging = true;
rulesetDef.restrictRollAngle = true;
rulesetDef.ruleset = rs_qcon;
Expand All @@ -390,7 +396,7 @@ static void Rulesets_Qcon(qbool enable)
rulesetDef.restrictTriggers = false;
rulesetDef.restrictPacket = false;
rulesetDef.restrictParticles = false;
rulesetDef.restrictSound = false;
rulesetDef.restrictPlay = false;
rulesetDef.restrictLogging = false;
rulesetDef.restrictRollAngle = false;
rulesetDef.ruleset = rs_default;
Expand Down Expand Up @@ -441,6 +447,7 @@ static void Rulesets_Thunderdome(qbool enable)
rulesetDef.restrictSetCalc = true;
rulesetDef.restrictSetEval = true;
rulesetDef.restrictSetEx = true;
rulesetDef.restrictPlay = true;
} else {
for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++)
Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM);
Expand All @@ -460,6 +467,7 @@ static void Rulesets_Thunderdome(qbool enable)
rulesetDef.restrictSetCalc = false;
rulesetDef.restrictSetEval = false;
rulesetDef.restrictSetEx = false;
rulesetDef.restrictPlay = false;
}
}
static void Rulesets_MTFL(qbool enable)
Expand Down Expand Up @@ -572,6 +580,7 @@ static void Rulesets_Smackdrive(qbool enable)
rulesetDef.restrictSetCalc = true;
rulesetDef.restrictSetEval = true;
rulesetDef.restrictSetEx = true;
rulesetDef.restrictPlay = true;
} else {
for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++)
Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM);
Expand All @@ -591,6 +600,7 @@ static void Rulesets_Smackdrive(qbool enable)
rulesetDef.restrictSetCalc = false;
rulesetDef.restrictSetEval = false;
rulesetDef.restrictSetEx = false;
rulesetDef.restrictPlay = false;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/rulesets.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ qbool Rulesets_RestrictSetEval(void);
qbool Rulesets_RestrictSetEx(void);
qbool Rulesets_AllowNoShadows(void);
qbool Rulesets_RestrictTCL(void);
qbool Rulesets_RestrictSound(const char* name);
qbool Rulesets_RestrictPlay(const char* name);
int Rulesets_MaxSequentialWaitCommands(void);
qbool Ruleset_BlockHudPicChange(void);
qbool Ruleset_AllowPolygonOffset(entity_t* ent);
Expand Down
3 changes: 2 additions & 1 deletion src/snd_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,8 @@ static void S_Play_f (void)
int entity = SELF_SOUND_ENTITY; // ezhfan: pnum+1 changed to SELF_SOUND to make sound not to disappear

strlcpy (name, Cmd_Argv(i), sizeof(name));
if (Rulesets_RestrictSound(name)) {
if (Rulesets_RestrictPlay(name)) {
Com_Printf("The use of play is not allowed during matches\n");
continue;
}

Expand Down