[Tweak] Default to Traitor instead of Extended when possible (#16386)
This commit is contained in:
@@ -42,27 +42,38 @@ namespace Content.Server.GameTicking
|
|||||||
|
|
||||||
if (_configurationManager.GetCVar(CCVars.GameLobbyFallbackEnabled))
|
if (_configurationManager.GetCVar(CCVars.GameLobbyFallbackEnabled))
|
||||||
{
|
{
|
||||||
ClearGameRules();
|
var fallbackPresets = _configurationManager.GetCVar(CCVars.GameLobbyFallbackPreset).Split(",");
|
||||||
SetGamePreset(_configurationManager.GetCVar(CCVars.GameLobbyFallbackPreset));
|
var startFailed = true;
|
||||||
AddGamePresetRules();
|
|
||||||
StartGamePresetRules();
|
|
||||||
|
|
||||||
startAttempt.Uncancel();
|
foreach (var preset in fallbackPresets)
|
||||||
RaiseLocalEvent(startAttempt);
|
{
|
||||||
|
ClearGameRules();
|
||||||
|
SetGamePreset(preset);
|
||||||
|
AddGamePresetRules();
|
||||||
|
StartGamePresetRules();
|
||||||
|
|
||||||
_chatManager.DispatchServerAnnouncement(
|
startAttempt.Uncancel();
|
||||||
Loc.GetString("game-ticker-start-round-cannot-start-game-mode-fallback",
|
RaiseLocalEvent(startAttempt);
|
||||||
("failedGameMode", presetTitle),
|
|
||||||
("fallbackMode", Loc.GetString(Preset!.ModeTitle))));
|
|
||||||
|
|
||||||
if (startAttempt.Cancelled)
|
if (!startAttempt.Cancelled)
|
||||||
|
{
|
||||||
|
_chatManager.SendAdminAnnouncement(
|
||||||
|
Loc.GetString("game-ticker-start-round-cannot-start-game-mode-fallback",
|
||||||
|
("failedGameMode", presetTitle),
|
||||||
|
("fallbackMode", Loc.GetString(preset))));
|
||||||
|
RefreshLateJoinAllowed();
|
||||||
|
startFailed = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startFailed)
|
||||||
{
|
{
|
||||||
FailedPresetRestart();
|
FailedPresetRestart();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshLateJoinAllowed();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FailedPresetRestart();
|
FailedPresetRestart();
|
||||||
|
|||||||
@@ -825,7 +825,7 @@ public sealed class NukeopsRuleSystem : GameRuleSystem<NukeopsRuleComponent>
|
|||||||
var minPlayers = nukeops.MinPlayers;
|
var minPlayers = nukeops.MinPlayers;
|
||||||
if (!ev.Forced && ev.Players.Length < minPlayers)
|
if (!ev.Forced && ev.Players.Length < minPlayers)
|
||||||
{
|
{
|
||||||
_chatManager.DispatchServerAnnouncement(Loc.GetString("nukeops-not-enough-ready-players",
|
_chatManager.SendAdminAnnouncement(Loc.GetString("nukeops-not-enough-ready-players",
|
||||||
("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
||||||
ev.Cancel();
|
ev.Cancel();
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ public sealed class PiratesRuleSystem : GameRuleSystem<PiratesRuleComponent>
|
|||||||
var minPlayers = _cfg.GetCVar(CCVars.PiratesMinPlayers);
|
var minPlayers = _cfg.GetCVar(CCVars.PiratesMinPlayers);
|
||||||
if (!ev.Forced && ev.Players.Length < minPlayers)
|
if (!ev.Forced && ev.Players.Length < minPlayers)
|
||||||
{
|
{
|
||||||
_chatManager.DispatchServerAnnouncement(Loc.GetString("nukeops-not-enough-ready-players",
|
_chatManager.SendAdminAnnouncement(Loc.GetString("nukeops-not-enough-ready-players",
|
||||||
("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
||||||
ev.Cancel();
|
ev.Cancel();
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ public sealed class SecretRuleSystem : GameRuleSystem<SecretRuleComponent>
|
|||||||
|
|
||||||
private void PickRule(SecretRuleComponent component)
|
private void PickRule(SecretRuleComponent component)
|
||||||
{
|
{
|
||||||
// TODO: This doesn't consider what can't start due to minimum player count, but currently there's no way to know anyway.
|
// TODO: This doesn't consider what can't start due to minimum player count,
|
||||||
// as they use cvars.
|
// but currently there's no way to know anyway as they use cvars.
|
||||||
var preset = _prototypeManager.Index<WeightedRandomPrototype>("Secret").Pick(_random);
|
var preset = _prototypeManager.Index<WeightedRandomPrototype>("Secret").Pick(_random);
|
||||||
Logger.InfoS("gamepreset", $"Selected {preset} for secret.");
|
Logger.InfoS("gamepreset", $"Selected {preset} for secret.");
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem<TraitorRuleComponent>
|
|||||||
var minPlayers = _cfg.GetCVar(CCVars.TraitorMinPlayers);
|
var minPlayers = _cfg.GetCVar(CCVars.TraitorMinPlayers);
|
||||||
if (!ev.Forced && ev.Players.Length < minPlayers)
|
if (!ev.Forced && ev.Players.Length < minPlayers)
|
||||||
{
|
{
|
||||||
_chatManager.DispatchServerAnnouncement(Loc.GetString("traitor-not-enough-ready-players",
|
_chatManager.SendAdminAnnouncement(Loc.GetString("traitor-not-enough-ready-players",
|
||||||
("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
||||||
ev.Cancel();
|
ev.Cancel();
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -165,7 +165,9 @@ public sealed class ZombieRuleSystem : GameRuleSystem<ZombieRuleComponent>
|
|||||||
var minPlayers = _cfg.GetCVar(CCVars.ZombieMinPlayers);
|
var minPlayers = _cfg.GetCVar(CCVars.ZombieMinPlayers);
|
||||||
if (!ev.Forced && ev.Players.Length < minPlayers)
|
if (!ev.Forced && ev.Players.Length < minPlayers)
|
||||||
{
|
{
|
||||||
_chatManager.DispatchServerAnnouncement(Loc.GetString("zombie-not-enough-ready-players", ("readyPlayersCount", ev.Players.Length), ("minimumPlayers", minPlayers)));
|
_chatManager.SendAdminAnnouncement(Loc.GetString("zombie-not-enough-ready-players",
|
||||||
|
("readyPlayersCount", ev.Players.Length),
|
||||||
|
("minimumPlayers", minPlayers)));
|
||||||
ev.Cancel();
|
ev.Cancel();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ namespace Content.Shared.CCVar
|
|||||||
/// The preset for the game to fall back to if the selected preset could not be used, and fallback is enabled.
|
/// The preset for the game to fall back to if the selected preset could not be used, and fallback is enabled.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly CVarDef<string>
|
public static readonly CVarDef<string>
|
||||||
GameLobbyFallbackPreset = CVarDef.Create("game.fallbackpreset", "extended", CVar.ARCHIVE);
|
GameLobbyFallbackPreset = CVarDef.Create("game.fallbackpreset", "Traitor,Extended", CVar.ARCHIVE);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Controls if people can win the game in Suspicion or Deathmatch.
|
/// Controls if people can win the game in Suspicion or Deathmatch.
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ traitor-objective-condition-fail = {$condition} | [color={$markupColor}]Failure!
|
|||||||
|
|
||||||
traitor-title = Traitor
|
traitor-title = Traitor
|
||||||
traitor-description = There are traitors among us...
|
traitor-description = There are traitors among us...
|
||||||
traitor-not-enough-ready-players = Not enough players readied up for the game! There were {$readyPlayersCount} players readied up out of {$minimumPlayers} needed.
|
traitor-not-enough-ready-players = Not enough players readied up for the game! There were {$readyPlayersCount} players readied up out of {$minimumPlayers} needed. Can't start Traitor.
|
||||||
traitor-no-one-ready = No players readied up! Can't start Traitor.
|
traitor-no-one-ready = No players readied up! Can't start Traitor.
|
||||||
|
|
||||||
## TraitorDeathMatch
|
## TraitorDeathMatch
|
||||||
|
|||||||
Reference in New Issue
Block a user