diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs index bab1be94c3..9f9637f58a 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs @@ -114,19 +114,26 @@ public sealed partial class AnalysisConsoleMenu : FancyWindow } if (state.Id != null) //node id - message.AddMarkup(Loc.GetString("analysis-console-info-id", ("id", state.Id))+"\n"); + { + message.AddMarkup(Loc.GetString("analysis-console-info-id", ("id", state.Id))); + message.PushNewline(); + } if (state.Depth != null) //node depth - message.AddMarkup(Loc.GetString("analysis-console-info-depth", ("depth", state.Depth))+"\n"); + { + message.AddMarkup(Loc.GetString("analysis-console-info-depth", ("depth", state.Depth))); + message.PushNewline(); + } if (state.Triggered != null) //whether it has been triggered { var activated = state.Triggered.Value ? "analysis-console-info-triggered-true" : "analysis-console-info-triggered-false"; - message.AddMarkup(Loc.GetString(activated)+"\n"); + message.AddMarkup(Loc.GetString(activated)); + message.PushNewline(); } - message.AddMarkup("\n"); + message.PushNewline(); var needSecondNewline = false; if (state.TriggerProto != null && //possible triggers @@ -134,7 +141,8 @@ public sealed partial class AnalysisConsoleMenu : FancyWindow trigger.TriggerHint != null) { message.AddMarkup(Loc.GetString("analysis-console-info-trigger", - ("trigger", Loc.GetString(trigger.TriggerHint))) + "\n"); + ("trigger", Loc.GetString(trigger.TriggerHint)))); + message.PushNewline(); needSecondNewline = true; } @@ -143,21 +151,24 @@ public sealed partial class AnalysisConsoleMenu : FancyWindow effect.EffectHint != null) { message.AddMarkup(Loc.GetString("analysis-console-info-effect", - ("effect", Loc.GetString(effect.EffectHint))) + "\n"); + ("effect", Loc.GetString(effect.EffectHint)))); + message.PushNewline(); needSecondNewline = true; } if (needSecondNewline) - message.AddMarkup("\n"); + message.PushNewline(); if (state.Edges != null) //number of edges - message.AddMarkup(Loc.GetString("analysis-console-info-edges", ("edges", state.Edges))+"\n"); - if (state.Completion != null) //completion percentage { - message.AddMarkup(Loc.GetString("analysis-console-info-completion", - ("percentage", Math.Round(state.Completion.Value * 100)))+"\n"); + message.AddMarkup(Loc.GetString("analysis-console-info-edges", ("edges", state.Edges))); + message.PushNewline(); + } + if (state.PointValue != null) //completion percentage + { + message.AddMarkup(Loc.GetString("analysis-console-info-value", ("value", state.PointValue))); + message.PushNewline(); } - Information.SetMessage(message); } diff --git a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs index 6301d2bf48..fd166164f9 100644 --- a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs @@ -31,7 +31,7 @@ namespace Content.Server.Atmos.EntitySystems var moveEvent = new MoveEvent(airtight.Owner, default, default, Angle.Zero, xform.LocalRotation, xform, false); OnAirtightRotated(uid, airtight, ref moveEvent); } - + UpdatePosition(airtight); } @@ -118,11 +118,7 @@ namespace Content.Server.Atmos.EntitySystems var query = EntityManager.GetEntityQuery(); _explosionSystem.UpdateAirtightMap(gridId, pos, query); // TODO make atmos system use query - _atmosphereSystem.UpdateAdjacent(gridUid, pos); _atmosphereSystem.InvalidateTile(gridUid, pos); - - if(fixVacuum) - _atmosphereSystem.FixTileVacuum(gridUid, pos); } private AtmosDirection Rotate(AtmosDirection myDirection, Angle myAngle) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs index b58ec491a7..cbef6b8ad9 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs @@ -107,8 +107,16 @@ public partial class AtmosphereSystem else RaiseLocalEvent(ref ev); + if (ev.Handled) + return ev.Mixtures; + // Default to a space mixture... This is a space game, after all! - return ev.Mixtures ?? new GasMixture?[tiles.Count]; + ev.Mixtures ??= new GasMixture?[tiles.Count]; + for (var i = 0; i < tiles.Count; i++) + { + ev.Mixtures[i] ??= GasMixture.SpaceGas; + } + return ev.Mixtures; } public GasMixture? GetTileMixture(EntityUid? gridUid, EntityUid? mapUid, Vector2i tile, bool excite = false) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs index a4748f18f5..c70c5630ab 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs @@ -192,7 +192,11 @@ public sealed partial class AtmosphereSystem { var tile = args.Tiles[i]; if (!component.Tiles.TryGetValue(tile, out var atmosTile)) + { + // need to get map atmosphere + args.Handled = false; continue; + } if (args.Excite) component.InvalidatedCoords.Add(tile); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Map.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Map.cs index ad5c39e965..ecb784c763 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Map.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Map.cs @@ -32,17 +32,14 @@ public partial class AtmosphereSystem private void MapGetTileMixtures(EntityUid uid, MapAtmosphereComponent component, ref GetTileMixturesMethodEvent args) { - if (args.Handled) + if (args.Handled || component.Mixture == null) return; args.Handled = true; - args.Mixtures = new GasMixture?[args.Tiles.Count]; - - if (component.Mixture == null) - return; + args.Mixtures ??= new GasMixture?[args.Tiles.Count]; for (var i = 0; i < args.Tiles.Count; i++) { - args.Mixtures[i] = component.Mixture.Clone(); + args.Mixtures[i] ??= component.Mixture.Clone(); } } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs index c6b7fc814b..59892beb28 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs @@ -67,9 +67,16 @@ namespace Content.Server.Atmos.EntitySystems GridIsTileAirBlocked(uid, atmosphere, ref airBlockedEv); var isAirBlocked = airBlockedEv.Result; + var oldBlocked = tile.BlockedAirflow; var updateAdjacentEv = new UpdateAdjacentMethodEvent(uid, indices, mapGridComp); GridUpdateAdjacent(uid, atmosphere, ref updateAdjacentEv); + // Blocked airflow changed, rebuild excited groups! + if (tile.Excited && tile.BlockedAirflow != oldBlocked) + { + RemoveActiveTile(atmosphere, tile); + } + // Call this instead of the grid method as the map has a say on whether the tile is space or not. if ((!mapGrid.TryGetTileRef(indices, out var t) || t.IsSpace(_tileDefinitionManager)) && !isAirBlocked) { diff --git a/Content.Server/Doors/Systems/FirelockSystem.cs b/Content.Server/Doors/Systems/FirelockSystem.cs index 308d3ca90d..e1c2e2229b 100644 --- a/Content.Server/Doors/Systems/FirelockSystem.cs +++ b/Content.Server/Doors/Systems/FirelockSystem.cs @@ -249,10 +249,6 @@ namespace Content.Server.Doors.Systems // achieving all this using existing atmos functions, and the functionality is too specialized to bother // adding new public atmos system functions. - - // TODO redo this with planet/map atmospheres - // there is probably a faster way of doing this. tbh I kinda hate the atmos method events for making - // accessing tile data directly such a pain. Dealting with maps will make it even more painful. List tiles = new(4); List directions = new(4); for (var i = 0; i < Atmospherics.Directions; i++) @@ -270,7 +266,7 @@ namespace Content.Server.Doors.Systems if (airtight.AirBlockedDirection != AtmosDirection.All) tiles.Add(pos); - var gasses = _atmosSystem.GetTileMixtures(gridAtmosphere.Owner, null, tiles); + var gasses = _atmosSystem.GetTileMixtures(gridAtmosphere.Owner, xform.MapUid, tiles); if (gasses == null) return (false, false); diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs index 4fc1604363..558f438242 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs @@ -65,6 +65,6 @@ public sealed class ArtifactAnalyzerComponent : Component public ArtifactNode? LastAnalyzedNode; [ViewVariables(VVAccess.ReadWrite)] - public float? LastAnalyzedCompletion; + public int? LastAnalyzerPointValue; #endregion } diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs index f12c4272f0..804a221bbf 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs @@ -132,19 +132,14 @@ public sealed class ArtifactAnalyzerSystem : EntitySystem if (component.LastAnalyzedArtifact == null) { - component.LastAnalyzedCompletion = null; + component.LastAnalyzerPointValue = null; component.LastAnalyzedNode = null; } else if (TryComp(component.LastAnalyzedArtifact, out var artifact)) { var lastNode = (ArtifactNode?) artifact.CurrentNode?.Clone(); component.LastAnalyzedNode = lastNode; - - if (artifact.NodeTree != null) - { - var discoveredNodes = artifact.NodeTree.AllNodes.Count(x => x.Discovered && x.Triggered); - component.LastAnalyzedCompletion = (float) discoveredNodes / artifact.NodeTree.AllNodes.Count; - } + component.LastAnalyzerPointValue = _artifact.GetResearchPointValue(component.LastAnalyzedArtifact.Value, artifact); } } @@ -178,7 +173,7 @@ public sealed class ArtifactAnalyzerSystem : EntitySystem EntityUid? artifact = null; ArtifactNode? node = null; - float? completion = null; + int? pointValue = null; var totalTime = TimeSpan.Zero; var canScan = false; var canPrint = false; @@ -186,7 +181,7 @@ public sealed class ArtifactAnalyzerSystem : EntitySystem { artifact = analyzer.LastAnalyzedArtifact; node = analyzer.LastAnalyzedNode; - completion = analyzer.LastAnalyzedCompletion; + pointValue = analyzer.LastAnalyzerPointValue; totalTime = analyzer.AnalysisDuration * analyzer.AnalysisDurationMulitplier; canScan = analyzer.Contacts.Any(); canPrint = analyzer.ReadyToPrint; @@ -199,7 +194,7 @@ public sealed class ArtifactAnalyzerSystem : EntitySystem var remaining = active != null ? _timing.CurTime - active.StartTime : TimeSpan.Zero; var state = new AnalysisConsoleScanUpdateState(artifact, analyzerConnected, serverConnected, canScan, canPrint, - node?.Id, node?.Depth, node?.Edges.Count, node?.Triggered, node?.Effect.ID, node?.Trigger.ID, completion, + node?.Id, node?.Depth, node?.Edges.Count, node?.Triggered, node?.Effect.ID, node?.Trigger.ID, pointValue, scanning, remaining, totalTime); var bui = _ui.GetUi(uid, ArtifactAnalzyerUiKey.Key); @@ -250,7 +245,7 @@ public sealed class ArtifactAnalyzerSystem : EntitySystem if (!TryComp(component.AnalyzerEntity, out var analyzer) || analyzer.LastAnalyzedNode == null || - analyzer.LastAnalyzedCompletion == null || + analyzer.LastAnalyzerPointValue == null || !analyzer.ReadyToPrint) { return; @@ -297,8 +292,7 @@ public sealed class ArtifactAnalyzerSystem : EntitySystem msg.AddMarkup(Loc.GetString("analysis-console-info-edges", ("edges", n.Edges.Count))); msg.PushNewline(); - msg.AddMarkup(Loc.GetString("analysis-console-info-completion", - ("percentage", Math.Round(analyzer.LastAnalyzedCompletion.Value * 100)))); + msg.AddMarkup(Loc.GetString("analysis-console-info-value", ("value", analyzer.LastAnalyzerPointValue))); _popup.PopupEntity(Loc.GetString("analysis-console-print-popup"), uid, Filter.Pvs(uid)); _paper.SetContent(report, msg.ToMarkup()); diff --git a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs index 51306e7b8b..0f8841487b 100644 --- a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs @@ -53,7 +53,7 @@ public sealed class AnalysisConsoleScanUpdateState : BoundUserInterfaceState public string? TriggerProto; - public float? Completion; + public int? PointValue; public bool Scanning; @@ -62,7 +62,7 @@ public sealed class AnalysisConsoleScanUpdateState : BoundUserInterfaceState public TimeSpan TotalTime; public AnalysisConsoleScanUpdateState(EntityUid? artifact, bool analyzerConnected, bool serverConnected, bool canScan, bool canPrint, - int? id, int? depth, int? edges, bool? triggered, string? effectProto, string? triggerProto, float? completion, + int? id, int? depth, int? edges, bool? triggered, string? effectProto, string? triggerProto, int? pointValue, bool scanning, TimeSpan timeRemaining, TimeSpan totalTime) { Artifact = artifact; @@ -77,7 +77,7 @@ public sealed class AnalysisConsoleScanUpdateState : BoundUserInterfaceState Triggered = triggered; EffectProto = effectProto; TriggerProto = triggerProto; - Completion = completion; + PointValue = pointValue; Scanning = scanning; TimeRemaining = timeRemaining; diff --git a/Resources/Audio/Effects/Diseases/cough1.ogg b/Resources/Audio/Effects/Diseases/cough1.ogg index 146beefdf8..4154402bab 100644 Binary files a/Resources/Audio/Effects/Diseases/cough1.ogg and b/Resources/Audio/Effects/Diseases/cough1.ogg differ diff --git a/Resources/Audio/Effects/Diseases/cough2.ogg b/Resources/Audio/Effects/Diseases/cough2.ogg index 745fb50e19..c6a96351c8 100644 Binary files a/Resources/Audio/Effects/Diseases/cough2.ogg and b/Resources/Audio/Effects/Diseases/cough2.ogg differ diff --git a/Resources/Audio/Effects/Diseases/license.txt b/Resources/Audio/Effects/Diseases/license.txt index 358943bd0f..16aa10dbd9 100644 --- a/Resources/Audio/Effects/Diseases/license.txt +++ b/Resources/Audio/Effects/Diseases/license.txt @@ -1,7 +1,5 @@ -cough1.ogg taken from -https://github.com/Citadel-Station-13/Citadel-Station-13-RP/blob/2121c7ad8c91a7a1d5229631019bf467cb217578/sound/effects/mob_effects/m_cougha.ogg -cough2.ogg taken from -https://github.com/Citadel-Station-13/Citadel-Station-13-RP/blob/2121c7ad8c91a7a1d5229631019bf467cb217578/sound/effects/mob_effects/m_coughb.ogg +cough1.ogg taken from freesound (deleted user) +cough2.ogg taken from https://freesound.org/people/Harris85/sounds/208761/ sneeze.ogg taken from https://freesound.org/people/sherby168/sounds/540771/ beepboop.ogg taken from https://freesound.org/people/Fidjo20/sounds/503526/ monkey1.ogg taken from https://freesound.org/people/TRAVELcandies/sounds/423396/ diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 93e4391f40..9557f2c514 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: lapatison - changes: - - {message: Kvass tank from cargo now come unpackaged., type: Tweak} - id: 2139 - time: '2022-08-13T12:06:15.0000000+00:00' -- author: EmoGarbage404 - changes: - - {message: 'Added the Revenant, a ghost capable of causing all sorts of wacky chaos.', - type: Add} - id: 2140 - time: '2022-08-13T13:49:41.0000000+00:00' - author: Ablankmann changes: - {message: The Outlaw's Hat now looks nicer., type: Tweak} @@ -2957,3 +2946,18 @@ Entries: - {message: CentCom now calls the shuttle automatically after a long round., type: Add} id: 2638 time: '2022-11-10T04:20:36.0000000+00:00' +- author: Mervill + changes: + - {message: 'Some common objects that where indestructible now have proper destructible + data, including Air Alarms, Surveillance Cameras and Extinguisher Cabinets', + type: Fix} + id: 2639 + time: '2022-11-10T14:32:53.0000000+00:00' +- author: EmoGarbage404 + changes: + - {message: The artifact analyzer now reports the amount of points an artifact is + worth rather than how much of it is completed., type: Tweak} + - {message: Artifacts and artifact containers are now easier to drag., type: Tweak} + - {message: Increased the likelihood of seeing certain rare artifact effects., type: Tweak} + id: 2640 + time: '2022-11-11T04:18:51.0000000+00:00' diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl index 5fecaeb814..72fabc127c 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl @@ -18,7 +18,7 @@ analysis-console-info-triggered-false = ACTIVATED: FALSE analysis-console-info-effect = REACTION: {$effect} analysis-console-info-trigger = STIMULUS: {$trigger} analysis-console-info-edges = EDGES: {$edges} -analysis-console-info-completion = COMPLETION_PERCENTAGE: {$percentage}% +analysis-console-info-value = CURRENT_VALUE: {$value} analysis-console-info-scanner = Scanning... analysis-console-progress-text = {$seconds -> diff --git a/Resources/Maps/cluster.yml b/Resources/Maps/cluster.yml index d6b41e2c0f..160526d1c1 100644 --- a/Resources/Maps/cluster.yml +++ b/Resources/Maps/cluster.yml @@ -10633,8 +10633,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 20.619795 - - 77.56971 + - 18.935778 + - 71.2346 - 0 - 0 - 0 @@ -10648,8 +10648,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.389235 - - 80.464264 + - 20.713123 + - 77.9208 - 0 - 0 - 0 @@ -10663,8 +10663,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.72303 - - 81.71997 + - 21.378712 + - 80.42468 - 0 - 0 - 0 @@ -10678,8 +10678,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.756979 - - 81.84769 + - 21.540726 + - 81.034164 - 0 - 0 - 0 @@ -10753,8 +10753,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.222336 - - 79.83641 + - 20.38033 + - 76.66885 - 0 - 0 - 0 @@ -10768,8 +10768,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.40055 - - 80.506836 + - 20.767128 + - 78.12396 - 0 - 0 - 0 @@ -10783,8 +10783,8 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.607056 - - 81.28369 + - 21.269001 + - 80.01196 - 0 - 0 - 0 @@ -15506,11 +15506,14 @@ entities: parent: 127 type: Transform - uid: 853 - type: SheetSteel + type: GasPort components: - - pos: -5.5,13.5 + - rot: 3.141592653589793 rad + pos: 26.5,0.5 parent: 127 type: Transform + - color: '#990000FF' + type: AtmosPipeColor - uid: 854 type: WallReinforced components: @@ -21381,14 +21384,11 @@ entities: parent: 127 type: Transform - uid: 1778 - type: GasPipeStraight + type: SheetPlastic components: - - rot: -1.5707963267948966 rad - pos: 25.5,1.5 + - pos: -5.5,13.5 parent: 127 type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - uid: 1779 type: ReinforcedPlasmaWindow components: @@ -41801,7 +41801,7 @@ entities: type: GasPipeStraight components: - rot: -1.5707963267948966 rad - pos: 24.5,1.5 + pos: 26.5,1.5 parent: 127 type: Transform - color: '#0055CCFF' @@ -54479,7 +54479,7 @@ entities: - pos: 24.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -72123.1 + - SecondsUntilStateChange: -73212.74 state: Opening type: Door - inputs: @@ -54495,7 +54495,7 @@ entities: - pos: 24.5,-4.5 parent: 127 type: Transform - - SecondsUntilStateChange: -72123.1 + - SecondsUntilStateChange: -73212.74 state: Opening type: Door - inputs: @@ -54511,7 +54511,7 @@ entities: - pos: 24.5,-7.5 parent: 127 type: Transform - - SecondsUntilStateChange: -72123.1 + - SecondsUntilStateChange: -73212.74 state: Opening type: Door - inputs: @@ -54527,7 +54527,7 @@ entities: - pos: 24.5,-6.5 parent: 127 type: Transform - - SecondsUntilStateChange: -72123.1 + - SecondsUntilStateChange: -73212.74 state: Opening type: Door - inputs: @@ -54579,7 +54579,7 @@ entities: - pos: 13.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54595,7 +54595,7 @@ entities: - pos: 14.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54611,7 +54611,7 @@ entities: - pos: 15.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54627,7 +54627,7 @@ entities: - pos: 16.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54643,7 +54643,7 @@ entities: - pos: 17.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54659,7 +54659,7 @@ entities: - pos: 18.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54675,7 +54675,7 @@ entities: - pos: 12.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54691,7 +54691,7 @@ entities: - pos: 19.5,-5.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54707,7 +54707,7 @@ entities: - pos: 11.5,-6.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54723,7 +54723,7 @@ entities: - pos: 11.5,-7.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54739,7 +54739,7 @@ entities: - pos: 20.5,-6.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54755,7 +54755,7 @@ entities: - pos: 20.5,-7.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73173.98 + - SecondsUntilStateChange: -74263.62 state: Opening type: Door - inputs: @@ -54771,7 +54771,7 @@ entities: - pos: 20.5,-9.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73089.375 + - SecondsUntilStateChange: -74179.016 state: Opening type: Door - inputs: @@ -54787,7 +54787,7 @@ entities: - pos: 20.5,-11.5 parent: 127 type: Transform - - SecondsUntilStateChange: -73089.375 + - SecondsUntilStateChange: -74179.016 state: Opening type: Door - inputs: @@ -56639,10 +56639,9 @@ entities: - color: '#990000FF' type: AtmosPipeColor - uid: 6863 - type: GasPipeStraight + type: GasPipeTJunction components: - - rot: 3.141592653589793 rad - pos: 24.5,1.5 + - pos: 27.5,2.5 parent: 127 type: Transform - color: '#990000FF' @@ -56666,10 +56665,10 @@ entities: parent: 127 type: Transform - uid: 6867 - type: GasPipeStraight + type: GasPressurePump components: - - rot: 1.5707963267948966 rad - pos: 26.5,2.5 + - rot: 3.141592653589793 rad + pos: 26.5,1.5 parent: 127 type: Transform - color: '#990000FF' @@ -56678,7 +56677,7 @@ entities: type: GasPipeStraight components: - rot: 1.5707963267948966 rad - pos: 27.5,2.5 + pos: 25.5,2.5 parent: 127 type: Transform - color: '#990000FF' @@ -66813,12 +66812,12 @@ entities: parent: 127 type: Transform - uid: 8255 - type: GasVentPump + type: GasPipeTJunction components: - pos: 26.5,2.5 parent: 127 type: Transform - - color: '#0055CCFF' + - color: '#990000FF' type: AtmosPipeColor - uid: 8256 type: GasVentPump @@ -66855,10 +66854,9 @@ entities: - color: '#990000FF' type: AtmosPipeColor - uid: 8260 - type: GasVentScrubber + type: GasPipeStraight components: - - rot: 3.141592653589793 rad - pos: 25.5,1.5 + - pos: 24.5,1.5 parent: 127 type: Transform - color: '#990000FF' @@ -66906,8 +66904,7 @@ entities: - 8258 - 8259 - 8256 - - 8260 - - 8255 + - null type: DeviceList - uid: 8263 type: FirelockGlass @@ -68683,21 +68680,23 @@ entities: - color: '#990000FF' type: AtmosPipeColor - uid: 8521 - type: GasPipeTJunction + type: GasPipeStraight components: - - pos: 25.5,2.5 - parent: 127 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor -- uid: 8522 - type: GasPipeFourway - components: - - pos: 26.5,1.5 + - rot: -1.5707963267948966 rad + pos: 24.5,1.5 parent: 127 type: Transform - color: '#0055CCFF' type: AtmosPipeColor +- uid: 8522 + type: GasVentScrubber + components: + - rot: -1.5707963267948966 rad + pos: 25.5,0.5 + parent: 127 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor - uid: 8523 type: GasPipeTJunction components: @@ -69761,36 +69760,299 @@ entities: - uid: 8684 type: GasPipeTJunction components: - - pos: 24.5,2.5 + - rot: 3.141592653589793 rad + pos: 25.5,1.5 parent: 127 type: Transform - - color: '#990000FF' + - color: '#0055CCFF' type: AtmosPipeColor - uid: 8685 - type: GasPipeStraight + type: GasPressurePump components: - rot: 3.141592653589793 rad - pos: 24.5,0.5 + pos: 27.5,1.5 parent: 127 type: Transform - color: '#990000FF' type: AtmosPipeColor - uid: 8686 - type: GasPipeBend + type: GasVentPump components: - - rot: -1.5707963267948966 rad - pos: 26.5,0.5 + - pos: 25.5,2.5 parent: 127 type: Transform - color: '#0055CCFF' type: AtmosPipeColor - uid: 8687 - type: GasPipeBend + type: GasPipeTJunction components: - rot: 1.5707963267948966 rad - pos: 25.5,0.5 + pos: 24.5,0.5 parent: 127 type: Transform - - color: '#0055CCFF' + - color: '#990000FF' type: AtmosPipeColor +- uid: 8688 + type: CableApcExtension + components: + - pos: 16.5,2.5 + parent: 127 + type: Transform +- uid: 8689 + type: CableApcExtension + components: + - pos: 17.5,2.5 + parent: 127 + type: Transform +- uid: 8690 + type: CableApcExtension + components: + - pos: 24.5,4.5 + parent: 127 + type: Transform +- uid: 8691 + type: CableApcExtension + components: + - pos: 9.5,-10.5 + parent: 127 + type: Transform +- uid: 8692 + type: CableApcExtension + components: + - pos: 9.5,2.5 + parent: 127 + type: Transform +- uid: 8693 + type: GasPipeTJunction + components: + - pos: 24.5,2.5 + parent: 127 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor +- uid: 8694 + type: PortableScrubber + components: + - pos: 26.5,0.5 + parent: 127 + type: Transform +- uid: 8695 + type: GasPort + components: + - rot: 3.141592653589793 rad + pos: 27.5,0.5 + parent: 127 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor +- uid: 8696 + type: PortableScrubber + components: + - pos: 27.5,0.5 + parent: 127 + type: Transform +- uid: 8697 + type: BoxBodyBag + components: + - pos: 1.4925553,14.655643 + parent: 127 + type: Transform +- uid: 8698 + type: BoxFolderBlack + components: + - pos: 3.6539683,14.603813 + parent: 127 + type: Transform +- uid: 8699 + type: BoxFolderBlue + components: + - pos: 1.6588756,-5.4630365 + parent: 127 + type: Transform +- uid: 8700 + type: BoxFolderWhite + components: + - pos: -3.3254993,5.6008472 + parent: 127 + type: Transform +- uid: 8701 + type: BoxFolderWhite + components: + - pos: -3.3098743,8.586103 + parent: 127 + type: Transform +- uid: 8702 + type: BoxFolderWhite + components: + - pos: -3.3411243,11.5989 + parent: 127 + type: Transform +- uid: 8703 + type: BoxFolderWhite + components: + - pos: 1.9323192,7.6159186 + parent: 127 + type: Transform +- uid: 8704 + type: Paper + components: + - pos: 1.6979442,7.6159186 + parent: 127 + type: Transform +- uid: 8705 + type: Paper + components: + - pos: 1.5885692,7.6159186 + parent: 127 + type: Transform +- uid: 8706 + type: Paper + components: + - pos: 1.4635692,7.6159186 + parent: 127 + type: Transform +- uid: 8707 + type: Paper + components: + - pos: -3.4720547,8.584668 + parent: 127 + type: Transform +- uid: 8708 + type: Paper + components: + - pos: -3.4876797,11.607829 + parent: 127 + type: Transform +- uid: 8709 + type: Paper + components: + - pos: -3.5033047,5.609607 + parent: 127 + type: Transform +- uid: 8710 + type: Paper + components: + - pos: 1.5691693,-5.4552197 + parent: 127 + type: Transform +- uid: 8711 + type: Paper + components: + - pos: 1.3816693,-5.4708447 + parent: 127 + type: Transform +- uid: 8712 + type: Paper + components: + - pos: 1.2722943,-5.4708447 + parent: 127 + type: Transform +- uid: 8713 + type: Pen + components: + - pos: 1.2879193,-5.3927197 + parent: 127 + type: Transform +- uid: 8714 + type: Pen + components: + - pos: -3.7117822,8.609095 + parent: 127 + type: Transform +- uid: 8715 + type: Pen + components: + - pos: -3.6805322,5.62472 + parent: 127 + type: Transform +- uid: 8716 + type: Pen + components: + - pos: -3.6805322,11.62472 + parent: 127 + type: Transform +- uid: 8717 + type: Pen + components: + - pos: 1.2413428,7.577845 + parent: 127 + type: Transform +- uid: 8718 + type: Lamp + components: + - pos: 1.0291226,-4.466736 + parent: 127 + type: Transform +- uid: 8719 + type: EmergencyMedipen + components: + - pos: 0.5735941,9.110008 + parent: 127 + type: Transform +- uid: 8720 + type: EmergencyMedipen + components: + - pos: 0.4173441,8.891258 + parent: 127 + type: Transform +- uid: 8721 + type: Brutepack + components: + - pos: 0.6829691,8.641258 + parent: 127 + type: Transform +- uid: 8722 + type: Brutepack + components: + - pos: 0.6204691,8.453758 + parent: 127 + type: Transform +- uid: 8723 + type: Ointment + components: + - pos: 0.4642191,8.516258 + parent: 127 + type: Transform +- uid: 8724 + type: Ointment + components: + - pos: 0.3860941,8.235008 + parent: 127 + type: Transform +- uid: 8725 + type: Paper + components: + - pos: 3.57955,14.599159 + parent: 127 + type: Transform +- uid: 8726 + type: Paper + components: + - pos: 3.4858,14.599159 + parent: 127 + type: Transform +- uid: 8727 + type: Paper + components: + - pos: 3.376425,14.614784 + parent: 127 + type: Transform +- uid: 8728 + type: Pen + components: + - pos: 3.2983,14.521034 + parent: 127 + type: Transform +- uid: 8729 + type: CableApcExtension + components: + - pos: -5.5,-6.5 + parent: 127 + type: Transform +- uid: 8730 + type: CableApcExtension + components: + - pos: -4.5,-6.5 + parent: 127 + type: Transform ... diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index d705b13e06..659b9b4b7d 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -262,4 +262,17 @@ maxVol: 500 - type: DrainableSolution solution: drainBuffer - + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml index ddd4ebe997..9e6fc80f72 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml @@ -28,7 +28,7 @@ - shape: !type:PhysShapeCircle radius: 0.45 - density: 235 + density: 75 mask: - MachineMask layer: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifacts.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifacts.yml index 3e50531a85..93a523fd4f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifacts.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifacts.yml @@ -21,7 +21,7 @@ - shape: !type:PhysShapeCircle radius: 0.45 - density: 235 + density: 75 layer: # doesn't collide with artifact storage - Opaque - BulletImpassable diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index e9f198092a..3a7f1756bc 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -7,3 +7,22 @@ - type: Sprite sprite: Structures/Furniture/furniture.rsi state: dresser + - type: Damageable + damageModifierSet: Wood + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank1: + min: 3 + max: 3 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Tag + tags: + - Wooden \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml index 2eefdb725c..905f6f3dd0 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml @@ -19,6 +19,20 @@ - type: DrainableSolution solution: tank - type: ReagentTank + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 40 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg - type: entity name: sink diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml index 99373e6682..f5183e1039 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml @@ -64,6 +64,20 @@ - type: Construction graph: AirAlarm node: air_alarm + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg placement: mode: SnapgridCenter snap: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml index 9e13e15f26..644e89d976 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml @@ -36,6 +36,21 @@ - type: ContainerContainer containers: ItemCabinet: !type:ContainerSlot + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 40 + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg placement: mode: SnapgridCenter diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml index 756d31d8ba..bce544de15 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml @@ -75,6 +75,20 @@ - type: Construction graph: FireAlarm node: fire_alarm + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 80 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg placement: mode: SnapgridCenter snap: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml index 60afa3c0a0..2d69737130 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml @@ -46,6 +46,17 @@ type: WiresBoundUserInterface - type: StaticPrice price: 200 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg placement: mode: SnapgridCenter snap: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml index b497f5a26e..0e7c8bdff4 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml @@ -58,6 +58,20 @@ - type: SignalTransmitter outputs: Pressed: [] + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 40 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg - type: entity id: ApcNetSwitch diff --git a/Resources/Prototypes/Stacks/floor_tile_stacks.yml b/Resources/Prototypes/Stacks/floor_tile_stacks.yml index d90d04f9cf..0d6e701837 100644 --- a/Resources/Prototypes/Stacks/floor_tile_stacks.yml +++ b/Resources/Prototypes/Stacks/floor_tile_stacks.yml @@ -268,12 +268,6 @@ spawn: FloorTileItemSilver maxCount: 30 -- type: stack - id: FloorTileGCircuit - name: gcircuit floor tile - spawn: FloorTileItemGCircuit - maxCount: 30 - - type: stack id: FloorTileBCircuit name: bcircuit floor tile diff --git a/Resources/Prototypes/XenoArch/artifact_effects.yml b/Resources/Prototypes/XenoArch/artifact_effects.yml index a99e9e0f0f..6378bd3790 100644 --- a/Resources/Prototypes/XenoArch/artifact_effects.yml +++ b/Resources/Prototypes/XenoArch/artifact_effects.yml @@ -97,7 +97,7 @@ - type: artifactEffect #bornana id: EffectBananaSpawn - targetDepth: 1 + targetDepth: 0 effectHint: artifact-effect-hint-creation components: - type: SpawnArtifact @@ -188,6 +188,20 @@ types: Structural: 100 +- type: artifactEffect + id: EffectGas + targetDepth: 2 + effectHint: artifact-effect-hint-environment + components: + - type: GasArtifact + +- type: artifactEffect + id: EffectBlink + targetDepth: 2 + effectHint: artifact-effect-hint-displacement + components: + - type: RandomTeleportArtifact + - type: artifactEffect id: EffectMaterialSpawn targetDepth: 3 @@ -227,19 +241,6 @@ - UltraHighPowerMicroLaserStockPart - SuperMatterBinStockPart -- type: artifactEffect - id: EffectGas - targetDepth: 3 - effectHint: artifact-effect-hint-environment - components: - - type: GasArtifact - -- type: artifactEffect - id: EffectBlink - targetDepth: 3 - effectHint: artifact-effect-hint-displacement - components: - - type: RandomTeleportArtifact - type: artifactEffect id: EffectDisease @@ -258,7 +259,7 @@ - type: artifactEffect id: EffectRareMaterialSpawn - targetDepth: 4 + targetDepth: 3 effectHint: artifact-effect-hint-creation components: - type: SpawnArtifact @@ -272,7 +273,7 @@ - type: artifactEffect id: EffectPowerGen20K - targetDepth: 4 + targetDepth: 3 effectHint: artifact-effect-hint-release components: - type: PowerSupplier @@ -280,7 +281,7 @@ - type: artifactEffect id: EffectHeat - targetDepth: 4 + targetDepth: 3 effectHint: artifact-effect-hint-release components: - type: TemperatureArtifact @@ -288,7 +289,7 @@ - type: artifactEffect id: EffectFoamDangerous - targetDepth: 4 + targetDepth: 3 effectHint: artifact-effect-hint-biochemical components: - type: FoamArtifact