Refactor how jobs are handed out (#5422)
* Completely refactor how job spawning works * Remove remains of old system. * Squash the final bug, cleanup. * Attempt to fix tests * Adjusts packed's round-start crew roster, re-enables a bunch of old roles. Also adds the Central Command Official as a proper role. * pretty up ui * refactor StationSystem into the correct folder & namespace. * remove a log, make sure the lobby gets updated if a new map is spontaneously added. * re-add accidentally removed log * We do a little logging * we do a little resolving * we do a little documenting * Renamed OverflowJob to FallbackOverflowJob Allows stations to configure their own roundstart overflow job list. * narrator: it did not compile * oops * support having no overflow jobs * filescope for consistency * small fixes * Bumps a few role counts for Packed, namely engis * log moment * E * Update Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> * Update Content.Server/Maps/GameMapPrototype.cs Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> * factored job logic, cleanup. * e * Address reviews * Remove the concept of a "default" grid. It has no future in our new multi-station world * why was clickable using that in the first place * fix bad evil bug that almost slipped through also adds chemist * rms obsolete things from chemist * Adds a sanity fallback * address reviews * adds ability to set name * fuck * cleanup joingame
This commit is contained in:
@@ -16,6 +16,9 @@ public enum LogType
|
||||
ShuttleCalled = 8,
|
||||
ShuttleRecalled = 9,
|
||||
ExplosiveDepressurization = 10,
|
||||
Respawn = 13,
|
||||
RoundStartJoin = 14,
|
||||
LateJoin = 15,
|
||||
ChemicalReaction = 17,
|
||||
ReagentEffect = 18,
|
||||
CanisterValve = 20,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Content.Shared.Station;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Serialization;
|
||||
@@ -11,8 +12,8 @@ namespace Content.Shared.GameTicking
|
||||
{
|
||||
// See ideally these would be pulled from the job definition or something.
|
||||
// But this is easier, and at least it isn't hardcoded.
|
||||
public const string OverflowJob = "Assistant";
|
||||
public const string OverflowJobName = "assistant";
|
||||
public const string FallbackOverflowJob = "Assistant";
|
||||
public const string FallbackOverflowJobName = "assistant";
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
@@ -109,11 +110,13 @@ namespace Content.Shared.GameTicking
|
||||
/// <summary>
|
||||
/// The Status of the Player in the lobby (ready, observer, ...)
|
||||
/// </summary>
|
||||
public string[] JobsAvailable { get; }
|
||||
public Dictionary<StationId, Dictionary<string, int>> JobsAvailableByStation { get; }
|
||||
public Dictionary<StationId, string> StationNames { get; }
|
||||
|
||||
public TickerJobsAvailableEvent(string[] jobsAvailable)
|
||||
public TickerJobsAvailableEvent(Dictionary<StationId, string> stationNames, Dictionary<StationId, Dictionary<string, int>> jobsAvailableByStation)
|
||||
{
|
||||
JobsAvailable = jobsAvailable;
|
||||
StationNames = stationNames;
|
||||
JobsAvailableByStation = jobsAvailableByStation;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace Content.Shared.Preferences
|
||||
BackpackPreference.Backpack,
|
||||
new Dictionary<string, JobPriority>
|
||||
{
|
||||
{SharedGameTicker.OverflowJob, JobPriority.High}
|
||||
{SharedGameTicker.FallbackOverflowJob, JobPriority.High}
|
||||
},
|
||||
PreferenceUnavailableMode.SpawnAsOverflow,
|
||||
new List<string>());
|
||||
@@ -120,7 +120,7 @@ namespace Content.Shared.Preferences
|
||||
return new HumanoidCharacterProfile(name, age, sex, gender, HumanoidCharacterAppearance.Random(sex), ClothingPreference.Jumpsuit, BackpackPreference.Backpack,
|
||||
new Dictionary<string, JobPriority>
|
||||
{
|
||||
{SharedGameTicker.OverflowJob, JobPriority.High}
|
||||
{SharedGameTicker.FallbackOverflowJob, JobPriority.High}
|
||||
}, PreferenceUnavailableMode.StayInLobby, new List<string>());
|
||||
}
|
||||
|
||||
|
||||
@@ -43,20 +43,6 @@ namespace Content.Shared.Roles
|
||||
[DataField("head")]
|
||||
public bool IsHead { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// The total amount of people that can start with this job round-start.
|
||||
/// </summary>
|
||||
public int SpawnPositions => _spawnPositions ?? TotalPositions;
|
||||
|
||||
[DataField("spawnPositions")]
|
||||
private int? _spawnPositions;
|
||||
|
||||
/// <summary>
|
||||
/// The total amount of positions available.
|
||||
/// </summary>
|
||||
[DataField("positions")]
|
||||
public int TotalPositions { get; private set; }
|
||||
|
||||
[DataField("startingGear")]
|
||||
public string? StartingGear { get; private set; }
|
||||
|
||||
|
||||
10
Content.Shared/Station/StationId.cs
Normal file
10
Content.Shared/Station/StationId.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Station;
|
||||
|
||||
[NetSerializable, Serializable]
|
||||
public readonly record struct StationId(uint Id)
|
||||
{
|
||||
public static StationId Invalid => new(0);
|
||||
}
|
||||
Reference in New Issue
Block a user