diff --git a/Content.Server/Backmen/JoinQueue/JoinQueueManager.cs b/Content.Server/Backmen/JoinQueue/JoinQueueManager.cs index 61f025ee06d..1552023227f 100644 --- a/Content.Server/Backmen/JoinQueue/JoinQueueManager.cs +++ b/Content.Server/Backmen/JoinQueue/JoinQueueManager.cs @@ -1,7 +1,9 @@ using System.Linq; using Content.Server.Connection; +using Content.Server.GameTicking; using Content.Shared.Backmen.JoinQueue; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Prometheus; using Robust.Server.Player; using Robust.Shared.Configuration; @@ -88,7 +90,12 @@ private async void OnPlayerVerified(object? sender, ICommonSession session) var isPrivileged = await _connectionManager.HavePrivilegedJoin(session.UserId); var currentOnline = _playerManager.PlayerCount - 1; // Do not count current session in general online, because we are still deciding her fate var haveFreeSlot = currentOnline < _cfg.GetCVar(CCVars.SoftMaxPlayers); - if (isPrivileged || haveFreeSlot) + + var wasInGame = _entityManager.TrySystem(out var ticker) && + ticker.PlayerGameStatuses.TryGetValue(session.UserId, out var status) && + status == PlayerGameStatus.JoinedGame; + + if (isPrivileged || haveFreeSlot || wasInGame) { SendToGame(session); diff --git a/Resources/Prototypes/Backmen/tags.yml b/Resources/Prototypes/Backmen/tags.yml index 292ed6e6872..950a5e25c9b 100644 --- a/Resources/Prototypes/Backmen/tags.yml +++ b/Resources/Prototypes/Backmen/tags.yml @@ -10,6 +10,9 @@ - type: Tag id: ForensicBeltEquip +- type: Tag + id: FleshBlocker + - type: Tag id: CoreSilver diff --git a/Resources/Prototypes/Corvax/Maps/gate.yml b/Resources/Prototypes/Corvax/Maps/gate.yml index 04ed68d144a..5dc3241526e 100644 --- a/Resources/Prototypes/Corvax/Maps/gate.yml +++ b/Resources/Prototypes/Corvax/Maps/gate.yml @@ -1,76 +1,72 @@ -#- type: gameMap -# id: CorvaxGate -# mapName: 'Gate Station' -# mapPath: /Maps/corvax_gate.yml -# minPlayers: 55 -# stations: -# Gate: -# stationProto: StandardNanotrasenStation -# components: -# - type: StationNameSetup -# mapNameTemplate: '{0} Gate Station {1}' -# nameGenerator: -# !type:NanotrasenNameGenerator -# prefixCreator: 'ED' -# - type: StationEmergencyShuttle -# emergencyShuttlePath: /Maps/Shuttles/emergency_raven.yml -# - type: StationJobs -# overflowJobs: -# - Passenger -# availableJobs: -# #service -# Captain: [ 1, 1 ] -# IAA: [ 1, 1 ] # Corvax-IAA -# HeadOfPersonnel: [ 1, 1 ] -# Bartender: [ 2, 2 ] -# Botanist: [ 3, 3 ] -# Chef: [ 2, 2 ] -# Janitor: [ 2, 2 ] -# Chaplain: [ 1, 1 ] -# Librarian: [ 1, 1 ] -# ServiceWorker: [ 2, 2 ] -# Zookeeper: [ 1, 1 ] -# Reporter: [ 2, 2 ] -# #engineering -# ChiefEngineer: [ 1, 1 ] -# SeniorEngineer: [ 1, 1 ] -# AtmosphericTechnician: [ 3, 3 ] -# StationEngineer: [ 4, 4 ] -# TechnicalAssistant: [ 4, 4 ] -# #medical -# ChiefMedicalOfficer: [ 1, 1 ] -# SeniorPhysician: [ 1, 1 ] -# Chemist: [ 2, 2 ] -# MedicalDoctor: [ 3, 3 ] -# Paramedic: [ 2, 2 ] -# MedicalIntern: [ 4, 4 ] -# Psychologist: [ 1, 1 ] -# #science -# ResearchDirector: [ 1, 1 ] -# SeniorResearcher: [ 1, 1 ] -# Scientist: [ 4, 4 ] -# ResearchAssistant: [ 4, 4 ] -# Borg: [ 2, 2 ] -# #security -# HeadOfSecurity: [ 1, 1 ] -# Warden: [ 1, 1 ] -# SeniorOfficer: [ 1, 1 ] -# SecurityOfficer: [ 6, 6 ] -# Detective: [ 1, 1 ] -# SecurityCadet: [ 4, 4 ] -# #Lawyer: [ 2, 2 ] # Corvax-IAA -# #supply -# Quartermaster: [ 1, 1 ] -# SalvageSpecialist: [ 3, 3 ] -# CargoTechnician: [ 6, 6 ] -# #civilian -# Passenger: [ -1, -1 ] -# Clown: [ 1, 1 ] -# Mime: [ 1, 1 ] -# Musician: [ 1, 1 ] -# Brigmedic: [ 0, 1 ] # backmen-Brigmedic -# BKBPLATech: [0, 3] # backmen-BPLA-Silicons -# BKBPLAMED: [0, 3] # backmen-BPLAMED-Silicons -# Prisoner: [ 2, 3] -# SAI: [1, 1] # backmen-SAI -# +- type: gameMap + id: CorvaxGate + mapName: 'Gate Station' + mapPath: /Maps/corvax_gate.yml + minPlayers: 55 + stations: + Gate: + stationProto: StandardNanotrasenStation + components: + - type: StationNameSetup + mapNameTemplate: '{0} Gate Station {1}' + nameGenerator: + !type:NanotrasenNameGenerator + prefixCreator: 'ED' + - type: StationEmergencyShuttle + emergencyShuttlePath: /Maps/Shuttles/emergency_raven.yml + - type: StationJobs + overflowJobs: + - Passenger + availableJobs: + #service + Captain: [ 1, 1 ] + IAA: [ 1, 1 ] # Corvax-IAA + HeadOfPersonnel: [ 1, 1 ] + Bartender: [ 2, 2 ] + Botanist: [ 3, 3 ] + Chef: [ 2, 2 ] + Janitor: [ 2, 2 ] + Chaplain: [ 1, 1 ] + Librarian: [ 1, 1 ] + ServiceWorker: [ 2, 2 ] + Zookeeper: [ 1, 1 ] + Reporter: [ 2, 2 ] + #engineering + ChiefEngineer: [ 1, 1 ] + AtmosphericTechnician: [ 3, 3 ] + StationEngineer: [ 4, 4 ] + TechnicalAssistant: [ 4, 4 ] + #medical + ChiefMedicalOfficer: [ 1, 1 ] + Chemist: [ 2, 2 ] + MedicalDoctor: [ 3, 3 ] + Paramedic: [ 2, 2 ] + MedicalIntern: [ 4, 4 ] + Psychologist: [ 1, 1 ] + #science + ResearchDirector: [ 1, 1 ] + Scientist: [ 4, 4 ] + ResearchAssistant: [ 4, 4 ] + Borg: [ 2, 2 ] + #security + HeadOfSecurity: [ 1, 1 ] + Warden: [ 1, 1 ] + SecurityOfficer: [ 6, 6 ] + Detective: [ 1, 1 ] + SecurityCadet: [ 4, 4 ] + #Lawyer: [ 2, 2 ] # Corvax-IAA + #supply + Quartermaster: [ 1, 1 ] + SalvageSpecialist: [ 3, 3 ] + CargoTechnician: [ 6, 6 ] + #civilian + Passenger: [ -1, -1 ] + Clown: [ 1, 1 ] + Mime: [ 1, 1 ] + Musician: [ 1, 1 ] + Brigmedic: [ 0, 1 ] # backmen-Brigmedic + BKBPLATech: [0, 3] # backmen-BPLA-Silicons + BKBPLAMED: [0, 3] # backmen-BPLAMED-Silicons + Prisoner: [ 2, 3] + SAI: [1, 1] # backmen-SAI + diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index fca9d2e4e62..5395ff86846 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -478,6 +478,9 @@ - type: Tag id: DiscreteHealthAnalyzer #So construction recipes don't eat medical PDAs +- type: Tag + id: Directional + - type: Tag id: DockArrivals