Skip to content

Commit e993dab

Browse files
authored
Merge pull request #1025 from osm/restrict-play
Restrict play in ruleset smack{down,drive}
2 parents ef3d7c7 + 68257b9 commit e993dab

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

src/rulesets.c

+15-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ typedef struct rulesetDef_s {
3333
qbool restrictTriggers;
3434
qbool restrictPacket;
3535
qbool restrictParticles;
36-
qbool restrictSound;
36+
qbool restrictPlay;
3737
qbool restrictLogging;
3838
qbool restrictRollAngle;
3939
qbool restrictIPC;
@@ -186,9 +186,13 @@ qbool Rulesets_RestrictTriggers(void)
186186
return rulesetDef.restrictTriggers;
187187
}
188188

189-
qbool Rulesets_RestrictSound(const char* name)
189+
qbool Rulesets_RestrictPlay(const char* name)
190190
{
191-
if (!rulesetDef.restrictSound) {
191+
if (!rulesetDef.restrictPlay) {
192+
return false;
193+
}
194+
195+
if (cls.state == ca_active && (cl.spectator || cls.demoplayback || cl.standby)) {
192196
return false;
193197
}
194198

@@ -314,6 +318,7 @@ static void Rulesets_Smackdown(qbool enable)
314318
rulesetDef.restrictSetCalc = true;
315319
rulesetDef.restrictSetEval = true;
316320
rulesetDef.restrictSetEx = true;
321+
rulesetDef.restrictPlay = true;
317322
} else {
318323
for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++)
319324
Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM);
@@ -333,6 +338,7 @@ static void Rulesets_Smackdown(qbool enable)
333338
rulesetDef.restrictSetCalc = false;
334339
rulesetDef.restrictSetEval = false;
335340
rulesetDef.restrictSetEx = false;
341+
rulesetDef.restrictPlay = false;
336342
}
337343
}
338344

@@ -370,7 +376,7 @@ static void Rulesets_Qcon(qbool enable)
370376
rulesetDef.restrictTriggers = true;
371377
rulesetDef.restrictPacket = true; // packet command could have been exploited for external timers
372378
rulesetDef.restrictParticles = true;
373-
rulesetDef.restrictSound = true;
379+
rulesetDef.restrictPlay = true;
374380
rulesetDef.restrictLogging = true;
375381
rulesetDef.restrictRollAngle = true;
376382
rulesetDef.ruleset = rs_qcon;
@@ -390,7 +396,7 @@ static void Rulesets_Qcon(qbool enable)
390396
rulesetDef.restrictTriggers = false;
391397
rulesetDef.restrictPacket = false;
392398
rulesetDef.restrictParticles = false;
393-
rulesetDef.restrictSound = false;
399+
rulesetDef.restrictPlay = false;
394400
rulesetDef.restrictLogging = false;
395401
rulesetDef.restrictRollAngle = false;
396402
rulesetDef.ruleset = rs_default;
@@ -441,6 +447,7 @@ static void Rulesets_Thunderdome(qbool enable)
441447
rulesetDef.restrictSetCalc = true;
442448
rulesetDef.restrictSetEval = true;
443449
rulesetDef.restrictSetEx = true;
450+
rulesetDef.restrictPlay = true;
444451
} else {
445452
for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++)
446453
Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM);
@@ -460,6 +467,7 @@ static void Rulesets_Thunderdome(qbool enable)
460467
rulesetDef.restrictSetCalc = false;
461468
rulesetDef.restrictSetEval = false;
462469
rulesetDef.restrictSetEx = false;
470+
rulesetDef.restrictPlay = false;
463471
}
464472
}
465473
static void Rulesets_MTFL(qbool enable)
@@ -572,6 +580,7 @@ static void Rulesets_Smackdrive(qbool enable)
572580
rulesetDef.restrictSetCalc = true;
573581
rulesetDef.restrictSetEval = true;
574582
rulesetDef.restrictSetEx = true;
583+
rulesetDef.restrictPlay = true;
575584
} else {
576585
for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++)
577586
Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM);
@@ -591,6 +600,7 @@ static void Rulesets_Smackdrive(qbool enable)
591600
rulesetDef.restrictSetCalc = false;
592601
rulesetDef.restrictSetEval = false;
593602
rulesetDef.restrictSetEx = false;
603+
rulesetDef.restrictPlay = false;
594604
}
595605
}
596606

src/rulesets.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ qbool Rulesets_RestrictSetEval(void);
6161
qbool Rulesets_RestrictSetEx(void);
6262
qbool Rulesets_AllowNoShadows(void);
6363
qbool Rulesets_RestrictTCL(void);
64-
qbool Rulesets_RestrictSound(const char* name);
64+
qbool Rulesets_RestrictPlay(const char* name);
6565
int Rulesets_MaxSequentialWaitCommands(void);
6666
qbool Ruleset_BlockHudPicChange(void);
6767
qbool Ruleset_AllowPolygonOffset(entity_t* ent);

src/snd_main.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -996,7 +996,8 @@ static void S_Play_f (void)
996996
int entity = SELF_SOUND_ENTITY; // ezhfan: pnum+1 changed to SELF_SOUND to make sound not to disappear
997997

998998
strlcpy (name, Cmd_Argv(i), sizeof(name));
999-
if (Rulesets_RestrictSound(name)) {
999+
if (Rulesets_RestrictPlay(name)) {
1000+
Com_Printf("The use of play is not allowed during matches\n");
10001001
continue;
10011002
}
10021003

0 commit comments

Comments
 (0)