@@ -33,7 +33,7 @@ typedef struct rulesetDef_s {
33
33
qbool restrictTriggers ;
34
34
qbool restrictPacket ;
35
35
qbool restrictParticles ;
36
- qbool restrictSound ;
36
+ qbool restrictPlay ;
37
37
qbool restrictLogging ;
38
38
qbool restrictRollAngle ;
39
39
qbool restrictIPC ;
@@ -186,9 +186,13 @@ qbool Rulesets_RestrictTriggers(void)
186
186
return rulesetDef .restrictTriggers ;
187
187
}
188
188
189
- qbool Rulesets_RestrictSound (const char * name )
189
+ qbool Rulesets_RestrictPlay (const char * name )
190
190
{
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 )) {
192
196
return false;
193
197
}
194
198
@@ -314,6 +318,7 @@ static void Rulesets_Smackdown(qbool enable)
314
318
rulesetDef .restrictSetCalc = true;
315
319
rulesetDef .restrictSetEval = true;
316
320
rulesetDef .restrictSetEx = true;
321
+ rulesetDef .restrictPlay = true;
317
322
} else {
318
323
for (i = 0 ; i < (sizeof (disabled_cvars ) / sizeof (disabled_cvars [0 ])); i ++ )
319
324
Cvar_SetFlags (disabled_cvars [i ].var , Cvar_GetFlags (disabled_cvars [i ].var ) & ~CVAR_ROM );
@@ -333,6 +338,7 @@ static void Rulesets_Smackdown(qbool enable)
333
338
rulesetDef .restrictSetCalc = false;
334
339
rulesetDef .restrictSetEval = false;
335
340
rulesetDef .restrictSetEx = false;
341
+ rulesetDef .restrictPlay = false;
336
342
}
337
343
}
338
344
@@ -370,7 +376,7 @@ static void Rulesets_Qcon(qbool enable)
370
376
rulesetDef .restrictTriggers = true;
371
377
rulesetDef .restrictPacket = true; // packet command could have been exploited for external timers
372
378
rulesetDef .restrictParticles = true;
373
- rulesetDef .restrictSound = true;
379
+ rulesetDef .restrictPlay = true;
374
380
rulesetDef .restrictLogging = true;
375
381
rulesetDef .restrictRollAngle = true;
376
382
rulesetDef .ruleset = rs_qcon ;
@@ -390,7 +396,7 @@ static void Rulesets_Qcon(qbool enable)
390
396
rulesetDef .restrictTriggers = false;
391
397
rulesetDef .restrictPacket = false;
392
398
rulesetDef .restrictParticles = false;
393
- rulesetDef .restrictSound = false;
399
+ rulesetDef .restrictPlay = false;
394
400
rulesetDef .restrictLogging = false;
395
401
rulesetDef .restrictRollAngle = false;
396
402
rulesetDef .ruleset = rs_default ;
@@ -441,6 +447,7 @@ static void Rulesets_Thunderdome(qbool enable)
441
447
rulesetDef .restrictSetCalc = true;
442
448
rulesetDef .restrictSetEval = true;
443
449
rulesetDef .restrictSetEx = true;
450
+ rulesetDef .restrictPlay = true;
444
451
} else {
445
452
for (i = 0 ; i < (sizeof (disabled_cvars ) / sizeof (disabled_cvars [0 ])); i ++ )
446
453
Cvar_SetFlags (disabled_cvars [i ].var , Cvar_GetFlags (disabled_cvars [i ].var ) & ~CVAR_ROM );
@@ -460,6 +467,7 @@ static void Rulesets_Thunderdome(qbool enable)
460
467
rulesetDef .restrictSetCalc = false;
461
468
rulesetDef .restrictSetEval = false;
462
469
rulesetDef .restrictSetEx = false;
470
+ rulesetDef .restrictPlay = false;
463
471
}
464
472
}
465
473
static void Rulesets_MTFL (qbool enable )
@@ -572,6 +580,7 @@ static void Rulesets_Smackdrive(qbool enable)
572
580
rulesetDef .restrictSetCalc = true;
573
581
rulesetDef .restrictSetEval = true;
574
582
rulesetDef .restrictSetEx = true;
583
+ rulesetDef .restrictPlay = true;
575
584
} else {
576
585
for (i = 0 ; i < (sizeof (disabled_cvars ) / sizeof (disabled_cvars [0 ])); i ++ )
577
586
Cvar_SetFlags (disabled_cvars [i ].var , Cvar_GetFlags (disabled_cvars [i ].var ) & ~CVAR_ROM );
@@ -591,6 +600,7 @@ static void Rulesets_Smackdrive(qbool enable)
591
600
rulesetDef .restrictSetCalc = false;
592
601
rulesetDef .restrictSetEval = false;
593
602
rulesetDef .restrictSetEx = false;
603
+ rulesetDef .restrictPlay = false;
594
604
}
595
605
}
596
606
0 commit comments