diff --git a/Content.Client/GameTicking/Commands/ShowManifestCommand.cs b/Content.Client/GameTicking/Commands/ShowManifestCommand.cs new file mode 100644 index 0000000000..3595910cdb --- /dev/null +++ b/Content.Client/GameTicking/Commands/ShowManifestCommand.cs @@ -0,0 +1,31 @@ +using Content.Client.GameTicking.Managers; +using Content.Shared.Administration; +using Content.Shared.GameTicking; +using Robust.Shared.Console; +using Robust.Shared.Network; + +namespace Content.Client.GameTicking.Commands +{ + [AnyCommand] + public sealed class ShowManifestCommand : IConsoleCommand + { + [Dependency] private readonly IEntitySystemManager _entitySystem = default!; + + public string Command => "showmanifest"; + public string Description => "Shows round end summary window"; + public string Help => "Usage: showmanifest"; + + public void Execute(IConsoleShell shell, string argStr, string[] args) + { + var ticker = _entitySystem.GetEntitySystem(); + var window = ticker._window; + + if (!ticker.IsGameStarted && window != null) + { + window.OpenCentered(); + return; + } + shell.WriteLine("You can't open manifest right now"); + } + } +} diff --git a/Content.Client/GameTicking/Managers/ClientGameTicker.cs b/Content.Client/GameTicking/Managers/ClientGameTicker.cs index df709e9444..7f2064000e 100644 --- a/Content.Client/GameTicking/Managers/ClientGameTicker.cs +++ b/Content.Client/GameTicking/Managers/ClientGameTicker.cs @@ -23,7 +23,7 @@ namespace Content.Client.GameTicking.Managers /// /// The current round-end window. Could be used to support re-opening the window after closing it. /// - private RoundEndSummaryWindow? _window; + public RoundEndSummaryWindow? _window; [ViewVariables] public bool AreWeReady { get; private set; } [ViewVariables] public bool IsGameStarted { get; private set; } diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index 1415b6cad3..74ade941b2 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -30,17 +30,26 @@ namespace Content.Server.Chemistry.EntitySystems [Dependency] private readonly ReactiveSystem _reactive = default!; private const float ReactTime = 0.125f; + private readonly HashSet<(EntityUid, EntityUid)> _processed = new (); // WD edit public override void Initialize() { base.Initialize(); SubscribeLocalEvent(HandleCollide); + SubscribeLocalEvent(OnDespawn); // WD edit } private void HandleCollide(Entity entity, ref StartCollideEvent args) { - if (!EntityManager.TryGetComponent(entity.Owner, out SolutionContainerManagerComponent? contents)) return; + if (!EntityManager.TryGetComponent(entity.Owner, out SolutionContainerManagerComponent? contents)) + return; + + // WD edit start + var collisionPair = (entity.Owner, args.OtherEntity); + if (_processed.Contains(collisionPair)) + return; + // WD edit end foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((entity.Owner, contents))) { @@ -48,6 +57,8 @@ namespace Content.Server.Chemistry.EntitySystems _reactive.DoEntityReaction(args.OtherEntity, solution, ReactionMethod.Touch); } + _processed.Add(collisionPair); // WD edit + // Check for collision with a impassable object (e.g. wall) and stop if ((args.OtherFixture.CollisionLayer & (int) CollisionGroup.Impassable) != 0 && args.OtherFixture.Hard) { @@ -55,6 +66,12 @@ namespace Content.Server.Chemistry.EntitySystems } } + // WD edit + private void OnDespawn(Entity entity, ref ComponentRemove args) + { + _processed.RemoveWhere(pair => pair.Item1 == entity.Owner); + } + public void Start(Entity vapor, TransformComponent vaporXform, Vector2 dir, float speed, MapCoordinates target, float aliveTime, EntityUid? user = null) { vapor.Comp.Active = true; diff --git a/Content.Shared/Throwing/ThrownItemSystem.cs b/Content.Shared/Throwing/ThrownItemSystem.cs index 61227edee2..c8aa3b0c10 100644 --- a/Content.Shared/Throwing/ThrownItemSystem.cs +++ b/Content.Shared/Throwing/ThrownItemSystem.cs @@ -26,6 +26,7 @@ namespace Content.Shared.Throwing [Dependency] private readonly SharedGravitySystem _gravity = default!; private const string ThrowingFixture = "throw-fixture"; + private readonly HashSet<(EntityUid, EntityUid)> _processed = new (); // WD edit public override void Initialize() { @@ -66,7 +67,14 @@ namespace Content.Shared.Throwing if (args.OtherEntity == component.Thrower) return; + // WD edit start + var collisionPair = (uid, args.OtherEntity); + if (_processed.Contains(collisionPair)) + return; + // WD edit end + ThrowCollideInteraction(component, args.OurEntity, args.OtherEntity); + _processed.Add(collisionPair); } private void PreventCollision(EntityUid uid, ThrownItemComponent component, ref PreventCollideEvent args) @@ -113,6 +121,7 @@ namespace Content.Shared.Throwing EntityManager.EventBus.RaiseLocalEvent(uid, new StopThrowEvent { User = thrownItemComponent.Thrower }, true); EntityManager.RemoveComponent(uid); + _processed.Clear(); // WD edit } public void LandComponent(EntityUid uid, ThrownItemComponent thrownItem, PhysicsComponent physics, bool playSound) diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7b6dcee709..7d41cb450e 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -1089,6 +1089,7 @@ - CarpetBlack - CarpetPink - CarpetBlue + - CarpetSBlue - CarpetGreen - CarpetOrange - CarpetPurple diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index 19b2fbb883..b9f048cfb4 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -1248,6 +1248,13 @@ materials: Cloth: 100 +- type: latheRecipe + id: CarpetSBlue + result: FloorCarpetItemSkyBlue + completetime: 1 + materials: + Cloth: 100 + - type: latheRecipe id: CarpetGreen result: FloorCarpetItemGreen diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index eeabb24d62..a9a49ea85d 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -577,9 +577,12 @@ - type: reaction id: Synthflesh + minTemp: 370 reactants: Blood: - amount: 1 + amount: 2 + WeldingFuel: + amount: 2 Carbon: amount: 1 Bicaridine: