Fix the job overflow crash (#5560)
* Fix the overflow crash * localization fail
This commit is contained in:
@@ -106,7 +106,7 @@ namespace Content.Server.GameTicking
|
|||||||
return assigned;
|
return assigned;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string PickBestAvailableJob(HumanoidCharacterProfile profile, StationId station)
|
private string? PickBestAvailableJob(HumanoidCharacterProfile profile, StationId station)
|
||||||
{
|
{
|
||||||
var available = _stationSystem.StationInfo[station].JobList;
|
var available = _stationSystem.StationInfo[station].JobList;
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ namespace Content.Server.GameTicking
|
|||||||
}
|
}
|
||||||
|
|
||||||
var overflows = _stationSystem.StationInfo[station].MapPrototype.OverflowJobs.Clone().ToList();
|
var overflows = _stationSystem.StationInfo[station].MapPrototype.OverflowJobs.Clone().ToList();
|
||||||
return _robustRandom.Pick(overflows);
|
return overflows.Count != 0 ? _robustRandom.Pick(overflows) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Conditional("DEBUG")]
|
[Conditional("DEBUG")]
|
||||||
|
|||||||
@@ -81,6 +81,15 @@ namespace Content.Server.GameTicking
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pick best job best on prefs.
|
||||||
|
jobId ??= PickBestAvailableJob(character, station);
|
||||||
|
// If no job available, just bail out.
|
||||||
|
if (jobId is null)
|
||||||
|
{
|
||||||
|
_chatManager.DispatchServerMessage(player, Loc.GetString("game-ticker-player-no-jobs-available-when-joining"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PlayerJoinGame(player);
|
PlayerJoinGame(player);
|
||||||
|
|
||||||
var data = player.ContentData();
|
var data = player.ContentData();
|
||||||
@@ -94,9 +103,6 @@ namespace Content.Server.GameTicking
|
|||||||
};
|
};
|
||||||
newMind.ChangeOwningPlayer(data.UserId);
|
newMind.ChangeOwningPlayer(data.UserId);
|
||||||
|
|
||||||
// Pick best job best on prefs.
|
|
||||||
jobId ??= PickBestAvailableJob(character, station);
|
|
||||||
|
|
||||||
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
|
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
|
||||||
var job = new Job(newMind, jobPrototype);
|
var job = new Job(newMind, jobPrototype);
|
||||||
newMind.AddRole(job);
|
newMind.AddRole(job);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ game-ticker-player-join-game-message = Welcome to Space Station 14! If this is y
|
|||||||
game-ticker-get-info-text = Hi and welcome to [color=white]Space Station 14![/color]
|
game-ticker-get-info-text = Hi and welcome to [color=white]Space Station 14![/color]
|
||||||
The current game mode is: [color=white]{$gmTitle}[/color].
|
The current game mode is: [color=white]{$gmTitle}[/color].
|
||||||
>[color=yellow]{$desc}[/color]
|
>[color=yellow]{$desc}[/color]
|
||||||
|
game-ticker-player-no-jobs-available-when-joining = When attempting to join to the game, no jobs were available.
|
||||||
|
|
||||||
# Displayed in chat to admins when a player joins
|
# Displayed in chat to admins when a player joins
|
||||||
player-join-message = Player {$name} joined the server!
|
player-join-message = Player {$name} joined the server!
|
||||||
|
|||||||
Reference in New Issue
Block a user