From 24c47c805d60c2a7d846682db4d87255152c4f2d Mon Sep 17 00:00:00 2001 From: AndreyCamper Date: Sat, 6 Jul 2024 00:37:29 +0300 Subject: [PATCH 01/29] Fire Axe resprite 45 degrees v3 (#28866) Rotating Fire Axe 45 deg --- .../Weapons/Melee/fireaxeflaming.rsi/icon.png | Bin 334 -> 331 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png b/Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png index 58e2f14942656a01fa6681f72aa4b1902b538631..ef62ecf5f49264955cbfe263c2fb69eb24687721 100644 GIT binary patch delta 315 zcmX@dbed^`WIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$g>fKP~P zm4MZM#VAcp%|(kARaRF1|NlQKDk?NI^hCe<#~Z;<_SpgzGFLrM22wmFL4LtN1u(!M zbpPBrpg3oNM`SSr1K&XqX53LfG5al0bcUykV~B3n3R3)nl8P%NLbFk|AUu<0dg3;yLO;*=8yE*wy3hZVT z9E|<(K#l2w3yV+7f-Z@U3g+Vy1#gQu&X%Q~loCIF*B Be$M~^ delta 318 zcmV-E0m1&u0?q=E8Gi-<0047(dh`GQ00DDSM?wIu&K&6g009U|L_t(oh3%8E3W7i! z#y`b1u%#gyTzv!a363Ub1KZl&!sc3g1mVC3XzK~WRS=|bXov=vg7&VZ%)u);P?!5n zC;tz>?>_zqNF53WW$4&&FEIKPnn;=s1puKXwJMoSzzLV}Nl30017>;^%xY9+hWqfHX~o z%)`YKm*lr*QVGEgkY$-762S8RYvL^!l7hbj?`340`#~tgKP>-P{#QLujat!qXux&d z)}NzB2*C{d+BaboMIeMQ&+}So0sufMWjrXQtv8^2Levdgy}3jpkx1UW0Copq4=@Y+ QlmGw#07*qoM6N<$g0?Y>%>V!Z From 84ff5e334b521ad7266ababadfddaecd486f2ab9 Mon Sep 17 00:00:00 2001 From: end <72604018+laok233@users.noreply.github.com> Date: Fri, 5 Jul 2024 23:52:27 +0200 Subject: [PATCH 02/29] nuke biochem (#29751) Nuke biomchem again --- Resources/ServerInfo/Guidebook/Science/Science.xml | 2 +- Resources/ServerInfo/Guidebook/Science/Technologies.xml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Resources/ServerInfo/Guidebook/Science/Science.xml b/Resources/ServerInfo/Guidebook/Science/Science.xml index 6e0183fc5f..e3de7738c7 100644 --- a/Resources/ServerInfo/Guidebook/Science/Science.xml +++ b/Resources/ServerInfo/Guidebook/Science/Science.xml @@ -22,7 +22,7 @@ Each technology costs [color=#a4885c]Research Points[/color] and unlocks recipes [textlink="Click here to see a list of technologies." link="Technologies"]. ## Disciplines -Technologies are spread over 5 different Disciplines: +Technologies are spread over 4 different Disciplines: diff --git a/Resources/ServerInfo/Guidebook/Science/Technologies.xml b/Resources/ServerInfo/Guidebook/Science/Technologies.xml index 7f0feaca42..ef89c80269 100644 --- a/Resources/ServerInfo/Guidebook/Science/Technologies.xml +++ b/Resources/ServerInfo/Guidebook/Science/Technologies.xml @@ -8,9 +8,6 @@ The different technologies and their respective discipline are listed below. ## Industrial -## Biochemical - - ## Arsenal From 4c5c6a84dce709d0bf623aff5edf90cff8bac29f Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 6 Jul 2024 13:51:55 +1000 Subject: [PATCH 03/29] Shuttle map button tweaks (#29757) - Avoids adding pending objects we can never show so the list should fill much faster. --- Content.Client/Shuttles/UI/MapScreen.xaml.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Content.Client/Shuttles/UI/MapScreen.xaml.cs b/Content.Client/Shuttles/UI/MapScreen.xaml.cs index 10800b8c5f..489dbc8c90 100644 --- a/Content.Client/Shuttles/UI/MapScreen.xaml.cs +++ b/Content.Client/Shuttles/UI/MapScreen.xaml.cs @@ -261,7 +261,7 @@ private void RebuildMapObjects() ourMap = shuttleXform.MapID; } - while (mapComps.MoveNext(out var mapComp, out var mapXform, out var mapMetadata)) + while (mapComps.MoveNext(out var mapUid, out var mapComp, out var mapXform, out var mapMetadata)) { if (_console != null && !_shuttles.CanFTLTo(_shuttleEntity.Value, mapComp.MapId, _console.Value)) { @@ -327,8 +327,10 @@ private void RebuildMapObjects() { AddMapObject(mapComp.MapId, gridObj); } - else if (!_shuttles.IsBeaconMap(_mapManager.GetMapEntityId(mapComp.MapId)) && (iffComp == null || - (iffComp.Flags & IFFFlags.Hide) == 0x0)) + // If we can show it then add it to pending. + else if (!_shuttles.IsBeaconMap(mapUid) && (iffComp == null || + (iffComp.Flags & IFFFlags.Hide) == 0x0) && + !gridObj.HideButton) { _pendingMapObjects.Add((mapComp.MapId, gridObj)); } @@ -336,11 +338,17 @@ private void RebuildMapObjects() foreach (var (beacon, _) in _shuttles.GetExclusions(mapComp.MapId, _exclusions)) { + if (beacon.HideButton) + continue; + _pendingMapObjects.Add((mapComp.MapId, beacon)); } foreach (var (beacon, _) in _shuttles.GetBeacons(mapComp.MapId, _beacons)) { + if (beacon.HideButton) + continue; + _pendingMapObjects.Add((mapComp.MapId, beacon)); } @@ -425,9 +433,6 @@ private void AddMapObject(MapId mapId, IMapObject mapObj) var existing = _mapObjects.GetOrNew(mapId); existing.Add(mapObj); - if (mapObj.HideButton) - return; - var gridContents = _mapHeadings[mapId]; var gridButton = new Button() From 12edad89e83448958d8e8cc68a00f1034f1ae3c4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 6 Jul 2024 03:53:02 +0000 Subject: [PATCH 04/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4d0bb277f8..d57e1cde11 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: icekot8 - changes: - - message: "\u0421argo request console now reports when a request is approved" - type: Add - id: 6374 - time: '2024-04-18T00:32:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27038 - author: Bellwether changes: - message: Midround zombie outbreaks are less common and spread more slowly. @@ -3818,3 +3811,10 @@ id: 6873 time: '2024-07-05T07:59:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29707 +- author: metalgearsloth + changes: + - message: Shuttle map buttons will show up faster. + type: Tweak + id: 6874 + time: '2024-07-06T03:51:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29757 From 7b99d1f851d3a3be179d5307a72b213a8971af9d Mon Sep 17 00:00:00 2001 From: themias <89101928+themias@users.noreply.github.com> Date: Fri, 5 Jul 2024 23:55:58 -0400 Subject: [PATCH 05/29] Don't allow toggling internals while asleep (#29753) --- Content.Server/Body/Systems/InternalsSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs index 922d48f13e..d6ece39d59 100644 --- a/Content.Server/Body/Systems/InternalsSystem.cs +++ b/Content.Server/Body/Systems/InternalsSystem.cs @@ -100,7 +100,7 @@ public void ToggleInternals( // Toggle off if they're on if (AreInternalsWorking(internals)) { - if (force || user == uid) + if (force) { DisconnectTank(internals); return; From 7ae3e353ea36dd01247589e0bfccb68dbaf937fa Mon Sep 17 00:00:00 2001 From: Killerqu00 <47712032+Killerqu00@users.noreply.github.com> Date: Sat, 6 Jul 2024 06:01:51 +0200 Subject: [PATCH 06/29] You no longer get deleted when cuffed and buckled (#29718) fix --- Content.Shared/Buckle/SharedBuckleSystem.Strap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs b/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs index eb23aa973b..bfb0cd9cd6 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs @@ -57,7 +57,7 @@ private void StrapRemoveAll(EntityUid uid, StrapComponent strapComp) { foreach (var entity in strapComp.BuckledEntities.ToArray()) { - TryUnbuckle(entity, entity, true); + Unbuckle(entity, entity); } } From 34f36665a6bd866b2edaac6887c7edcfd443b8d8 Mon Sep 17 00:00:00 2001 From: MFMessage <22904993+MFMessage@users.noreply.github.com> Date: Fri, 5 Jul 2024 23:04:59 -0500 Subject: [PATCH 07/29] Fixes a minor typo for the base gingerbread body part (#29717) "Fixes a minor typo in the gingerbread bodypart prototype" --- Resources/Prototypes/Body/Parts/gingerbread.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Body/Parts/gingerbread.yml b/Resources/Prototypes/Body/Parts/gingerbread.yml index 661835ab84..f95e66145b 100644 --- a/Resources/Prototypes/Body/Parts/gingerbread.yml +++ b/Resources/Prototypes/Body/Parts/gingerbread.yml @@ -1,7 +1,7 @@ - type: entity id: PartGingerbread parent: [BaseItem, BasePart] - name: "gingerbead body part" + name: "gingerbread body part" abstract: true components: - type: Extractable From b418338af77c994d43af3b8fd015de5dee91aaa3 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Sat, 6 Jul 2024 06:17:32 +0200 Subject: [PATCH 08/29] Phoronman 1984 (#29747) No more. --- .../Textures/Mobs/Species/lungs_phoronman.png | Bin 233 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Resources/Textures/Mobs/Species/lungs_phoronman.png diff --git a/Resources/Textures/Mobs/Species/lungs_phoronman.png b/Resources/Textures/Mobs/Species/lungs_phoronman.png deleted file mode 100644 index 1c6d2dc11a8c8d12b1bc8cd3ffe9c0ba180c2896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvxd5LK*8>L*e17=l^{KZ<5>D;* zICQ4$;-gJZFSTEvW;|z=^+vxBe=Y)5GL{7S1v5B2yO9RuRC>BNhGMavWE-LEPKf4Vddn=#9_PU;Xy{8 zV+%PLr(FnQXM27jV26Y8i36Goj} Date: Sat, 6 Jul 2024 12:33:20 -0500 Subject: [PATCH 09/29] Added cryosleep UnitSpawner and UnitSpawnerLate to the map Origin (#29761) Added cryosleep UnitSpawner and UnitSpawnerLate Co-authored-by: JIP --- Resources/Maps/origin.yml | 1124 +------------------------------------ 1 file changed, 18 insertions(+), 1106 deletions(-) diff --git a/Resources/Maps/origin.yml b/Resources/Maps/origin.yml index 7dd4d4386f..380447782f 100644 --- a/Resources/Maps/origin.yml +++ b/Resources/Maps/origin.yml @@ -12115,26 +12115,17 @@ entities: rot: 3.141592653589793 rad pos: -44.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24384 - uid: 116 components: - type: Transform pos: -51.5,12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24382 - uid: 117 components: - type: Transform rot: 3.141592653589793 rad pos: -52.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24383 - uid: 118 components: - type: Transform @@ -12143,26 +12134,18 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24386 - uid: 119 components: - type: Transform rot: -1.5707963267948966 rad pos: -17.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24387 - uid: 120 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24389 - uid: 121 components: - type: Transform @@ -12389,7 +12372,7 @@ entities: pos: 19.5,16.5 parent: 2 - type: Door - secondsUntilStateChange: -25677.166 + secondsUntilStateChange: -25890.535 state: Opening - uid: 156 components: @@ -13799,17 +13782,11 @@ entities: - type: Transform pos: 26.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24448 - uid: 390 components: - type: Transform pos: 24.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24448 - uid: 391 components: - type: Transform @@ -13843,9 +13820,6 @@ entities: - type: Transform pos: 25.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24448 - uid: 397 components: - type: Transform @@ -14090,25 +14064,16 @@ entities: - type: Transform pos: 40.5,-41.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 440 components: - type: Transform pos: 40.5,-42.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 441 components: - type: Transform pos: 40.5,-43.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 442 components: - type: Transform @@ -14206,7 +14171,7 @@ entities: pos: 51.5,-3.5 parent: 2 - type: Door - secondsUntilStateChange: -24490.984 + secondsUntilStateChange: -24704.354 state: Opening - uid: 458 components: @@ -14215,7 +14180,7 @@ entities: pos: 52.5,-3.5 parent: 2 - type: Door - secondsUntilStateChange: -24489.768 + secondsUntilStateChange: -24703.137 state: Opening - uid: 459 components: @@ -14372,25 +14337,16 @@ entities: - type: Transform pos: -21.5,-12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 487 components: - type: Transform pos: -21.5,-11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 488 components: - type: Transform pos: -21.5,20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 489 components: - type: Transform @@ -14468,9 +14424,6 @@ entities: - type: Transform pos: -21.5,21.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 504 components: - type: Transform @@ -14778,9 +14731,6 @@ entities: - type: Transform pos: 0.5,-5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24152 - uid: 557 components: - type: MetaData @@ -14788,9 +14738,6 @@ entities: - type: Transform pos: 6.5,-7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24152 - uid: 558 components: - type: Transform @@ -15239,9 +15186,6 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,-8.5 parent: 2 - - type: DeviceLinkSink - links: - - 24152 - proto: AirlockMaintJanitorLocked entities: - uid: 629 @@ -15501,9 +15445,6 @@ entities: - type: Transform pos: -22.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24387 - uid: 675 components: - type: Transform @@ -16300,9 +16241,6 @@ entities: - type: Transform pos: -25.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24388 - uid: 796 components: - type: MetaData @@ -16310,9 +16248,6 @@ entities: - type: Transform pos: -23.5,38.5 parent: 2 - - type: DeviceLinkSink - links: - - 24385 - proto: AirlockVirologyGlass entities: - uid: 797 @@ -17234,8 +17169,6 @@ entities: parent: 2 - type: Apc hasAccess: True - lastExternalState: Good - lastChargeState: Full - uid: 955 components: - type: MetaData @@ -17339,8 +17272,6 @@ entities: parent: 2 - type: Apc hasAccess: True - lastExternalState: Good - lastChargeState: Full - proto: APCHighCapacity entities: - uid: 969 @@ -17489,8 +17420,6 @@ entities: parent: 2 - type: Apc hasAccess: True - lastExternalState: Good - lastChargeState: Full - uid: 989 components: - type: MetaData @@ -23008,49 +22937,31 @@ entities: - type: Transform pos: -78.5,-41.5 parent: 2 - - type: DeviceLinkSink - links: - - 24444 - uid: 2060 components: - type: Transform pos: -78.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24444 - uid: 2061 components: - type: Transform pos: -78.5,-42.5 parent: 2 - - type: DeviceLinkSink - links: - - 24444 - uid: 2062 components: - type: Transform pos: -74.5,-46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24443 - uid: 2063 components: - type: Transform pos: -74.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24443 - uid: 2064 components: - type: Transform pos: -74.5,-45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24443 - proto: BlastDoorBridge entities: - uid: 2065 @@ -23058,25 +22969,16 @@ entities: - type: Transform pos: 10.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24425 - uid: 2066 components: - type: Transform pos: 10.5,49.5 parent: 2 - - type: DeviceLinkSink - links: - - 24425 - uid: 2067 components: - type: Transform pos: 10.5,48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24425 - proto: BlastDoorExterior1 entities: - uid: 2068 @@ -23084,229 +22986,142 @@ entities: - type: Transform pos: 18.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24401 - uid: 2069 components: - type: Transform pos: 47.5,-51.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2070 components: - type: Transform pos: 47.5,-52.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2071 components: - type: Transform pos: 47.5,-53.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2072 components: - type: Transform pos: 47.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2073 components: - type: Transform pos: 52.5,-58.5 parent: 2 - - type: DeviceLinkSink - links: - - 24398 - uid: 2074 components: - type: Transform pos: 50.5,-62.5 parent: 2 - - type: DeviceLinkSink - links: - - 24431 - uid: 2075 components: - type: Transform rot: 1.5707963267948966 rad pos: 55.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24400 - uid: 2076 components: - type: Transform rot: 1.5707963267948966 rad pos: 54.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24400 - uid: 2077 components: - type: Transform pos: -45.5,-34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24445 - uid: 2078 components: - type: Transform rot: -1.5707963267948966 rad pos: -40.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2079 components: - type: Transform rot: -1.5707963267948966 rad pos: -39.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2080 components: - type: Transform rot: -1.5707963267948966 rad pos: -38.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2081 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2082 components: - type: Transform pos: -49.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 24406 - uid: 2083 components: - type: Transform pos: -49.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24406 - uid: 2084 components: - type: Transform pos: 51.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24414 - - 24416 - - 24421 - uid: 2085 components: - type: Transform pos: 54.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24412 - - 24414 - uid: 2086 components: - type: Transform pos: -52.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24435 - uid: 2087 components: - type: Transform pos: -52.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 24399 - uid: 2088 components: - type: Transform pos: -53.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24405 - uid: 2089 components: - type: Transform pos: -53.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 24405 - uid: 2090 components: - type: Transform pos: 53.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24408 - - 24417 - - 24424 - uid: 2091 components: - type: Transform pos: 55.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24412 - - 24415 - uid: 2092 components: - type: Transform pos: 50.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24410 - uid: 2093 components: - type: Transform pos: 57.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24416 - uid: 2094 components: - type: Transform pos: 56.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24407 - uid: 2095 components: - type: Transform @@ -23317,72 +23132,41 @@ entities: - type: Transform pos: 53.5,48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24407 - - 24422 - - 24424 - uid: 2097 components: - type: Transform pos: 55.5,48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24422 - uid: 2098 components: - type: Transform pos: 58.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24408 - uid: 2099 components: - type: Transform pos: 52.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24411 - - 24420 - uid: 2100 components: - type: Transform pos: 53.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24418 - - 24424 - uid: 2101 components: - type: Transform pos: 55.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24418 - - 24421 - uid: 2102 components: - type: Transform pos: 58.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24419 - uid: 2103 components: - type: Transform pos: 57.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24411 - - 24413 - - 24422 - uid: 2104 components: - type: Transform @@ -23393,101 +23177,62 @@ entities: - type: Transform pos: 54.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24415 - uid: 2106 components: - type: Transform pos: 52.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24417 - uid: 2107 components: - type: Transform pos: 51.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24421 - - 24422 - uid: 2108 components: - type: Transform pos: 56.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24413 - - 24419 - uid: 2109 components: - type: Transform pos: 50.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24410 - - 24420 - uid: 2110 components: - type: Transform pos: -18.5,-96.5 parent: 2 - - type: DeviceLinkSink - links: - - 24427 - uid: 2111 components: - type: Transform pos: -18.5,-98.5 parent: 2 - - type: DeviceLinkSink - links: - - 24427 - uid: 2112 components: - type: Transform pos: -26.5,-96.5 parent: 2 - - type: DeviceLinkSink - links: - - 24428 - uid: 2113 components: - type: Transform pos: -26.5,-98.5 parent: 2 - - type: DeviceLinkSink - links: - - 24428 - uid: 2114 components: - type: Transform pos: 67.5,-39.5 parent: 2 - - type: DeviceLinkSink - links: - - 24396 - uid: 2115 components: - type: Transform rot: 3.141592653589793 rad pos: 72.5,-27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24432 - uid: 2116 components: - type: Transform pos: -45.5,-35.5 parent: 2 - - type: DeviceLinkSink - links: - - 24445 - proto: BlastDoorExterior1Open entities: - uid: 2117 @@ -23496,162 +23241,100 @@ entities: rot: -1.5707963267948966 rad pos: 24.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2118 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2119 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2120 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2121 components: - type: Transform rot: -1.5707963267948966 rad pos: 24.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2122 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2123 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2124 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2125 components: - type: Transform rot: -1.5707963267948966 rad pos: 22.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2126 components: - type: Transform rot: -1.5707963267948966 rad pos: 22.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2127 components: - type: Transform pos: -8.5,-91.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2128 components: - type: Transform pos: -8.5,-92.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2129 components: - type: Transform pos: -8.5,-93.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2130 components: - type: Transform pos: -6.5,-91.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2131 components: - type: Transform pos: -6.5,-90.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2132 components: - type: Transform pos: -6.5,-92.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2133 components: - type: Transform pos: -6.5,-93.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2134 components: - type: Transform pos: -8.5,-90.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - proto: BlastDoorOpen entities: - uid: 2135 @@ -23659,86 +23342,56 @@ entities: - type: Transform pos: -56.5,-11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2136 components: - type: Transform pos: -56.5,-12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2137 components: - type: Transform pos: -56.5,-13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2138 components: - type: Transform pos: -56.5,-14.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2139 components: - type: Transform pos: -56.5,-15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2140 components: - type: Transform rot: -1.5707963267948966 rad pos: -64.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2141 components: - type: Transform rot: -1.5707963267948966 rad pos: -65.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2142 components: - type: Transform rot: -1.5707963267948966 rad pos: -66.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2143 components: - type: Transform rot: -1.5707963267948966 rad pos: -67.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2144 components: - type: Transform rot: -1.5707963267948966 rad pos: -68.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - proto: BlockGameArcadeComputerCircuitboard entities: - uid: 2145 @@ -23781,7 +23434,7 @@ entities: - type: Transform pos: -25.389751,-36.57607 parent: 2 -- proto: BookChefGaming +- proto: BookHowToCookForFortySpaceman entities: - uid: 2151 components: @@ -80698,906 +80351,592 @@ entities: rot: 1.5707963267948966 rad pos: 16.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12862 components: - type: Transform pos: 18.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12863 components: - type: Transform rot: 1.5707963267948966 rad pos: 17.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12864 components: - type: Transform rot: 1.5707963267948966 rad pos: 15.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12865 components: - type: Transform pos: 18.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12866 components: - type: Transform rot: -1.5707963267948966 rad pos: -12.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12867 components: - type: Transform pos: 15.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12868 components: - type: Transform pos: 18.5,-57.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12869 components: - type: Transform rot: -1.5707963267948966 rad pos: 17.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12870 components: - type: Transform rot: -1.5707963267948966 rad pos: 16.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12871 components: - type: Transform rot: -1.5707963267948966 rad pos: 18.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12872 components: - type: Transform rot: -1.5707963267948966 rad pos: -14.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12873 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12874 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12875 components: - type: Transform rot: 1.5707963267948966 rad pos: -25.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12876 components: - type: Transform rot: 1.5707963267948966 rad pos: -26.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12877 components: - type: Transform rot: 1.5707963267948966 rad pos: -27.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12878 components: - type: Transform rot: 1.5707963267948966 rad pos: -28.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12879 components: - type: Transform rot: 1.5707963267948966 rad pos: -30.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12880 components: - type: Transform rot: 1.5707963267948966 rad pos: -29.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12881 components: - type: Transform rot: 1.5707963267948966 rad pos: -35.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12882 components: - type: Transform rot: 1.5707963267948966 rad pos: -34.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12883 components: - type: Transform rot: 1.5707963267948966 rad pos: -36.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12884 components: - type: Transform rot: 1.5707963267948966 rad pos: -37.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12885 components: - type: Transform rot: 1.5707963267948966 rad pos: -38.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12886 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12887 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12888 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12889 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12890 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12891 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12892 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12893 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12894 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12895 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12896 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12897 components: - type: Transform rot: 1.5707963267948966 rad pos: -46.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12898 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12899 components: - type: Transform rot: 1.5707963267948966 rad pos: -46.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12900 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12901 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12902 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,14.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12903 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12904 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12905 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12906 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12907 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12908 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12909 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12910 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12911 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12912 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12913 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12914 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12915 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12916 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12917 components: - type: Transform rot: -1.5707963267948966 rad pos: -12.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12918 components: - type: Transform pos: -10.5,28.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12919 components: - type: Transform rot: -1.5707963267948966 rad pos: -9.5,28.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12920 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12921 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,17.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12922 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12923 components: - type: Transform pos: -47.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 26155 - uid: 12924 components: - type: Transform pos: -47.5,14.5 parent: 2 - - type: DeviceLinkSink - links: - - 26155 - uid: 12925 components: - type: Transform pos: -47.5,12.5 parent: 2 - - type: DeviceLinkSink - links: - - 26155 - uid: 12926 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12927 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12928 components: - type: Transform rot: 1.5707963267948966 rad pos: -6.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12929 components: - type: Transform rot: 1.5707963267948966 rad pos: 43.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12930 components: - type: Transform rot: 1.5707963267948966 rad pos: 44.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12931 components: - type: Transform rot: 1.5707963267948966 rad pos: 45.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12932 components: - type: Transform pos: 46.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12933 components: - type: Transform rot: 1.5707963267948966 rad pos: 46.5,36.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12934 components: - type: Transform rot: 1.5707963267948966 rad pos: 47.5,36.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12935 components: - type: Transform rot: 3.141592653589793 rad pos: 48.5,36.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12936 components: - type: Transform rot: 3.141592653589793 rad pos: 48.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12937 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12938 components: - type: Transform pos: -9.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12939 components: - type: Transform pos: -9.5,26.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12940 components: - type: Transform pos: -9.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12941 components: - type: Transform pos: -9.5,24.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12942 components: - type: Transform pos: -9.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12943 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12944 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12945 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12946 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12947 components: - type: Transform rot: 3.141592653589793 rad pos: 48.5,38.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12948 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-99.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12949 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-98.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12950 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-100.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12951 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-101.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12952 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-102.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12953 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-103.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12954 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-104.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12955 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,-105.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12956 components: - type: Transform rot: -1.5707963267948966 rad pos: -36.5,-105.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12957 components: - type: Transform rot: 3.141592653589793 rad pos: -38.5,-105.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12958 components: - type: Transform rot: 1.5707963267948966 rad pos: -38.5,-104.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12959 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-11.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12960 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-12.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12961 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,16.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12962 components: - type: Transform @@ -81605,8 +80944,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 26160 - uid: 12963 components: - type: Transform @@ -81614,8 +80951,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 26160 - uid: 12964 components: - type: Transform @@ -81623,8 +80958,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 26160 - proto: ConveyorBeltAssembly entities: - uid: 12965 @@ -82507,22 +81840,12 @@ entities: - type: Transform pos: 13.5,-83.5 parent: 2 - - uid: 13036 - components: - - type: Transform - pos: 13.5,-84.5 - parent: 2 - uid: 13037 components: - type: Transform rot: 1.5707963267948966 rad pos: 17.5,-82.5 parent: 2 - - uid: 13038 - components: - - type: Transform - pos: 13.5,-82.5 - parent: 2 - uid: 13039 components: - type: Transform @@ -82552,6 +81875,20 @@ entities: rot: 1.5707963267948966 rad pos: -8.5,-66.5 parent: 2 +- proto: CryogenicSleepUnitSpawner + entities: + - uid: 13036 + components: + - type: Transform + pos: 13.5,-84.5 + parent: 2 +- proto: CryogenicSleepUnitSpawnerLateJoin + entities: + - uid: 13038 + components: + - type: Transform + pos: 13.5,-82.5 + parent: 2 - proto: CryoPod entities: - uid: 13044 @@ -140558,44 +139895,29 @@ entities: - type: Transform pos: -5.5,3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24456 - uid: 21473 components: - type: Transform pos: 38.5,-41.5 parent: 2 - - type: DeviceLinkSink - links: - - 24451 - uid: 21474 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,-15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24452 - uid: 21475 components: - type: Transform rot: 1.5707963267948966 rad pos: 24.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24454 - uid: 21476 components: - type: Transform rot: -1.5707963267948966 rad pos: 16.5,-23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24446 - uid: 21477 components: - type: Transform @@ -140604,43 +139926,29 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 24447 - uid: 21478 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,-33.5 parent: 2 - - type: DeviceLinkSink - links: - - 24455 - uid: 21479 components: - type: Transform rot: 1.5707963267948966 rad pos: 34.5,-23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24446 - uid: 21480 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24453 - uid: 21481 components: - type: Transform pos: 0.5,-25.5 parent: 2 - - type: DeviceLinkSink - links: - - 24457 - proto: JetpackBlueFilled entities: - uid: 21482 @@ -142227,9 +141535,6 @@ entities: - type: Transform pos: 72.5,-28.5 parent: 2 - - type: DeviceLinkSink - links: - - 12764 - proto: MachineCentrifuge entities: - uid: 21605 @@ -146478,9 +145783,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,-5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24450 - uid: 22311 components: - type: Transform @@ -149140,9 +148442,6 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,-7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24450 - uid: 22663 components: - type: Transform @@ -154237,9 +153536,6 @@ entities: rot: 1.5707963267948966 rad pos: 17.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - proto: ReinforcedPlasmaWindow entities: - uid: 23478 @@ -158447,18 +157743,12 @@ entities: rot: -1.5707963267948966 rad pos: 66.5,-45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24395 - uid: 24237 components: - type: Transform rot: -1.5707963267948966 rad pos: 66.5,-46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24395 - proto: ShuttersNormalOpen entities: - uid: 24238 @@ -158468,8 +157758,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24463 - uid: 24239 components: - type: Transform @@ -158477,8 +157765,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24391 - uid: 24240 components: - type: Transform @@ -158486,8 +157772,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 4 - links: - - 24442 - uid: 24241 components: - type: Transform @@ -158495,17 +157779,12 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 4 - links: - - 24442 - uid: 24242 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24243 components: - type: Transform @@ -158517,332 +157796,212 @@ entities: - type: Transform pos: -32.5,32.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24245 components: - type: Transform pos: 37.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24246 components: - type: Transform pos: -8.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24438 - uid: 24247 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24248 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,10.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24249 components: - type: Transform pos: 18.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24250 components: - type: Transform pos: 17.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24251 components: - type: Transform pos: -6.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24438 - uid: 24252 components: - type: Transform rot: 1.5707963267948966 rad pos: 48.5,6.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24253 components: - type: Transform rot: -1.5707963267948966 rad pos: 35.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24254 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24255 components: - type: Transform pos: 61.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24256 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,14.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24257 components: - type: Transform pos: 45.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24258 components: - type: Transform pos: 43.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24259 components: - type: Transform pos: 62.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24260 components: - type: Transform pos: 63.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24261 components: - type: Transform pos: -30.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24262 components: - type: Transform pos: 29.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24263 components: - type: Transform pos: 34.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24264 components: - type: Transform pos: -31.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24265 components: - type: Transform rot: -1.5707963267948966 rad pos: 35.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24266 components: - type: Transform pos: -33.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24267 components: - type: Transform pos: -49.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24268 components: - type: Transform pos: -48.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24269 components: - type: Transform pos: -31.5,32.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24270 components: - type: Transform pos: 32.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24271 components: - type: Transform pos: 39.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24272 components: - type: Transform pos: -33.5,32.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24273 components: - type: Transform pos: -46.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24274 components: - type: Transform pos: -47.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24275 components: - type: Transform pos: 43.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24276 components: - type: Transform pos: 59.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24277 components: - type: Transform pos: 65.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24278 components: - type: Transform rot: 1.5707963267948966 rad pos: 66.5,-51.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24279 components: - type: Transform rot: 1.5707963267948966 rad pos: 66.5,-52.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24280 components: - type: Transform rot: -1.5707963267948966 rad pos: 58.5,-51.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24281 components: - type: Transform rot: -1.5707963267948966 rad pos: 58.5,-52.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24282 components: - type: Transform pos: 61.5,-50.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24283 components: - type: Transform pos: 63.5,-50.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24284 components: - type: Transform @@ -158850,8 +158009,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24463 - uid: 24285 components: - type: Transform @@ -158863,640 +158020,412 @@ entities: rot: -1.5707963267948966 rad pos: -33.5,-15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24390 - uid: 24287 components: - type: Transform rot: -1.5707963267948966 rad pos: -33.5,-17.5 parent: 2 - - type: DeviceLinkSink - links: - - 24390 - uid: 24288 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24289 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,8.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24290 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24291 components: - type: Transform pos: 2.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24292 components: - type: Transform pos: 1.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24293 components: - type: Transform pos: 0.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24294 components: - type: Transform pos: 5.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24295 components: - type: Transform pos: 4.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24296 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24297 components: - type: Transform pos: 34.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24437 - uid: 24298 components: - type: Transform pos: 35.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24437 - uid: 24299 components: - type: Transform pos: 36.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24437 - uid: 24300 components: - type: Transform pos: -7.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24438 - uid: 24301 components: - type: Transform rot: 1.5707963267948966 rad pos: 48.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24302 components: - type: Transform pos: 46.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24303 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-1.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24304 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-2.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24305 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24306 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24307 components: - type: Transform pos: 41.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24439 - uid: 24308 components: - type: Transform pos: 42.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24439 - uid: 24309 components: - type: Transform pos: 43.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24439 - uid: 24310 components: - type: Transform pos: 46.5,3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24311 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24312 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24313 components: - type: Transform pos: 3.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24314 components: - type: Transform pos: 4.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24315 components: - type: Transform pos: 5.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24316 components: - type: Transform pos: 23.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24317 components: - type: Transform pos: 22.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24318 components: - type: Transform pos: 21.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24319 components: - type: Transform pos: 25.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24320 components: - type: Transform pos: 26.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24321 components: - type: Transform pos: 27.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24322 components: - type: Transform pos: 27.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24323 components: - type: Transform pos: 26.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24324 components: - type: Transform pos: 25.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24325 components: - type: Transform pos: 23.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24326 components: - type: Transform pos: 22.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24327 components: - type: Transform pos: 21.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24328 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24329 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,2.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24330 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,1.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24331 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24332 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24333 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-1.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24334 components: - type: Transform pos: 22.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24335 components: - type: Transform pos: 23.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24336 components: - type: Transform pos: 24.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24337 components: - type: Transform pos: 25.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24338 components: - type: Transform pos: 26.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24339 components: - type: Transform pos: 27.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24340 components: - type: Transform pos: 28.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24341 components: - type: Transform pos: 4.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24342 components: - type: Transform pos: 1.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24343 components: - type: Transform pos: 3.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24344 components: - type: Transform pos: 2.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24345 components: - type: Transform pos: 23.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24346 components: - type: Transform pos: 24.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24347 components: - type: Transform pos: 26.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24348 components: - type: Transform pos: 27.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24349 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-36.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24350 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-35.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24351 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24352 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24353 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24354 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24355 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-14.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24356 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,24.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24357 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24358 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24359 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24360 components: - type: Transform rot: -1.5707963267948966 rad pos: 37.5,-35.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 24361 components: - type: Transform rot: -1.5707963267948966 rad pos: 37.5,-36.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - proto: ShuttleConsoleCircuitboard entities: - uid: 24362 @@ -199573,8 +198502,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24462 - proto: WindoorSecureArmoryLocked entities: - uid: 31248 @@ -199784,18 +198711,12 @@ entities: rot: 3.141592653589793 rad pos: 29.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 2261 - uid: 31280 components: - type: Transform rot: 1.5707963267948966 rad pos: 39.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 2263 - uid: 31281 components: - type: Transform @@ -199814,18 +198735,12 @@ entities: rot: 3.141592653589793 rad pos: 32.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 2262 - uid: 31284 components: - type: Transform rot: 1.5707963267948966 rad pos: 39.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 2264 - uid: 31285 components: - type: Transform @@ -199838,9 +198753,6 @@ entities: rot: 3.141592653589793 rad pos: 35.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 2260 - uid: 31287 components: - type: Transform From fa6d6806d18de2d619311c99ae340c9029fc6cdd Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 6 Jul 2024 17:34:30 +0000 Subject: [PATCH 10/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d57e1cde11..a2f77f3b5a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Bellwether - changes: - - message: Midround zombie outbreaks are less common and spread more slowly. - type: Tweak - id: 6375 - time: '2024-04-18T01:06:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27060 - author: Flareguy changes: - message: Updated Remote Signaller sprites. @@ -3818,3 +3811,10 @@ id: 6874 time: '2024-07-06T03:51:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29757 +- author: JIPDawg + changes: + - message: Added Late join CryoSleepers to Origin. + type: Tweak + id: 6875 + time: '2024-07-06T17:33:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29761 From 60ef7848fb270117c0d89fea31d014307c9e5655 Mon Sep 17 00:00:00 2001 From: themias <89101928+themias@users.noreply.github.com> Date: Sat, 6 Jul 2024 23:49:55 -0400 Subject: [PATCH 11/29] Fix wielding while pulling (#29781) --- Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs index b31cc75576..4a5894d895 100644 --- a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs +++ b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs @@ -99,7 +99,7 @@ public bool TrySpawnVirtualItemInHand(EntityUid blockingEnt, EntityUid user, [No if (hand.HeldEntity is not { } held) continue; - if (held == blockingEnt || HasComp(held)) + if (held == blockingEnt) continue; if (!_handsSystem.TryDrop(user, hand)) From 0098d7171750e49097a96f48f817d55aa1a25650 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jul 2024 13:50:12 +1000 Subject: [PATCH 12/29] Update Credits (#29784) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 1e41be2bb7..f3d458e046 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aeshus, Aexxie, Afrokada, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUm418, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, ArkiveDev, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, bhenrich, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blueDev2, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, Ciac32, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DexlerXD, dffdff2423, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, Futuristic-OK, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, hitomishirichan, Hmeister-real, HolySSSS, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, K-Dynamic, KaiShibaa, kalane15, kalanosh, Keer-Sar, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, RamZ, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, RumiTiger, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zonespace27, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aeshus, Aexxie, Afrokada, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUm418, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, ArkiveDev, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, bhenrich, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blueDev2, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, Ciac32, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DexlerXD, dffdff2423, diraven, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, Futuristic-OK, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, HerCoyote23, hitomishirichan, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JIPDawg, JoeHammad1844, joelsgp, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, K-Dynamic, KaiShibaa, kalane15, kalanosh, Keer-Sar, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, laok233, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, RamZ, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, RumiTiger, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zonespace27, Zumorica, Zymem From 18df27d8e708117f64f50624c582bf0d6d0f5287 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Sat, 6 Jul 2024 20:52:18 -0700 Subject: [PATCH 13/29] Spilling reagents on mutliple entities at once fix (#29763) * Fixed! * That could have been bad this is why I'm glad I check the diff xD --- .../Fluids/EntitySystems/PuddleSystem.Spillable.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs index 8cdae84a93..e722108e14 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs @@ -70,13 +70,18 @@ private void SplashOnMeleeHit(Entity entity, ref MeleeHitEve return; args.Handled = true; + + // First update the hit count so anything that is not reactive wont count towards the total! + foreach (var hit in args.HitEntities) + { + if (!HasComp(hit)) + hitCount -= 1; + } + foreach (var hit in args.HitEntities) { if (!HasComp(hit)) - { - hitCount -= 1; // so we don't undershoot solution calculation for actual reactive entities continue; - } var splitSolution = _solutionContainerSystem.SplitSolution(soln.Value, totalSplit / hitCount); From d9be666e8ae8a35c929ab630a40e983bb0a334a1 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 7 Jul 2024 03:53:24 +0000 Subject: [PATCH 14/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a2f77f3b5a..87dfa869fb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Flareguy - changes: - - message: Updated Remote Signaller sprites. - type: Tweak - id: 6376 - time: '2024-04-18T01:16:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27073 - author: Dutch-VanDerLinde changes: - message: Grey security jumpsuits are now available in the security officer loadout. @@ -3818,3 +3811,10 @@ id: 6875 time: '2024-07-06T17:33:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29761 +- author: Beck Thompson + changes: + - message: Splashing reagents on players will now apply the correct amounts. + type: Fix + id: 6876 + time: '2024-07-07T03:52:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29763 From 23887d5bd9444b81891d672463f1627aa62336cb Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sun, 7 Jul 2024 02:20:53 -0400 Subject: [PATCH 15/29] Improve buckling's interactions with standing state (#29741) --- .../Buckle/SharedBuckleSystem.Buckle.cs | 9 +++------ Content.Shared/Standing/StandingStateSystem.cs | 16 +++++++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index 0ce8c99268..0fbfd51d69 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -196,7 +196,6 @@ protected void SetBuckledTo(Entity buckle, Entity buckle, Entity strap SetBuckledTo(buckle, strap!); Appearance.SetData(strap, StrapVisuals.State, true); Appearance.SetData(buckle, BuckleVisuals.Buckled, true); - Appearance.SetData(buckle, RotationVisuals.RotationState, RotationState.Horizontal); _rotationVisuals.SetHorizontalAngle(buckle.Owner, strap.Comp.Rotation); @@ -363,10 +361,10 @@ private void Buckle(Entity buckle, Entity strap switch (strap.Comp.Position) { case StrapPosition.Stand: - _standing.Stand(buckle); + _standing.Stand(buckle, force: true); break; case StrapPosition.Down: - _standing.Down(buckle, false, false); + _standing.Down(buckle, false, false, force: true); break; } @@ -458,10 +456,9 @@ private void Unbuckle(Entity buckle, Entity str _rotationVisuals.ResetHorizontalAngle(buckle.Owner); Appearance.SetData(strap, StrapVisuals.State, strap.Comp.BuckledEntities.Count != 0); Appearance.SetData(buckle, BuckleVisuals.Buckled, false); - Appearance.SetData(buckle, RotationVisuals.RotationState, RotationState.Vertical); if (HasComp(buckle) || _mobState.IsIncapacitated(buckle)) - _standing.Down(buckle); + _standing.Down(buckle, playSound: false); else _standing.Stand(buckle); diff --git a/Content.Shared/Standing/StandingStateSystem.cs b/Content.Shared/Standing/StandingStateSystem.cs index ed586e970d..8d9be9ab77 100644 --- a/Content.Shared/Standing/StandingStateSystem.cs +++ b/Content.Shared/Standing/StandingStateSystem.cs @@ -25,7 +25,10 @@ public bool IsDown(EntityUid uid, StandingStateComponent? standingState = null) return !standingState.Standing; } - public bool Down(EntityUid uid, bool playSound = true, bool dropHeldItems = true, + public bool Down(EntityUid uid, + bool playSound = true, + bool dropHeldItems = true, + bool force = false, StandingStateComponent? standingState = null, AppearanceComponent? appearance = null, HandsComponent? hands = null) @@ -49,11 +52,14 @@ public bool Down(EntityUid uid, bool playSound = true, bool dropHeldItems = true RaiseLocalEvent(uid, new DropHandItemsEvent(), false); } - var msg = new DownAttemptEvent(); - RaiseLocalEvent(uid, msg, false); + if (!force) + { + var msg = new DownAttemptEvent(); + RaiseLocalEvent(uid, msg, false); - if (msg.Cancelled) - return false; + if (msg.Cancelled) + return false; + } standingState.Standing = false; Dirty(uid, standingState); From 336f264c7715dcd2cab25bb467c293c5d5461bce Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 7 Jul 2024 06:21:59 +0000 Subject: [PATCH 16/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 87dfa869fb..ef044e7201 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Dutch-VanDerLinde - changes: - - message: Grey security jumpsuits are now available in the security officer loadout. - type: Tweak - id: 6377 - time: '2024-04-18T01:22:09.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27023 - author: Tayrtahn changes: - message: Sodas and other fizzy drinks can be shaken with the verbs menu to build @@ -3818,3 +3811,11 @@ id: 6876 time: '2024-07-07T03:52:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29763 +- author: Tayrtahn + changes: + - message: Dead bodies will no longer remain standing after being unbuckled from + chairs. + type: Fix + id: 6877 + time: '2024-07-07T06:20:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29741 From c9c721be16f4764928bfc89cc28d70dd6fb1728b Mon Sep 17 00:00:00 2001 From: lzk <124214523+lzk228@users.noreply.github.com> Date: Sun, 7 Jul 2024 15:05:09 +0200 Subject: [PATCH 17/29] Add supplybot moving states (#29795) * Add supplybot moving states * forgor --- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 7 ++++++ .../Mobs/Silicon/Bots/supplybot.rsi/meta.json | 22 ++++++++++++++++++ .../Bots/supplybot.rsi/supplybot-moving.png | Bin 0 -> 2970 bytes .../Silicon/Bots/supplybot.rsi/supplybot.png | Bin 2970 -> 2718 bytes 4 files changed, 29 insertions(+) create mode 100644 Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot-moving.png diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 1686b723b5..172ed66cc3 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -338,6 +338,13 @@ sprite: Mobs/Silicon/Bots/supplybot.rsi layers: - state: supplybot + - type: SpriteMovement + movementLayers: + movement: + state: supplybot-moving + noMovementLayers: + movement: + state: supplybot - type: GhostRole makeSentient: true name: ghost-role-information-supplybot-name diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json index 6bb3e77cfe..f459a7caa6 100644 --- a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json @@ -10,6 +10,28 @@ { "name": "supplybot", "directions": 4, + "delays": [ + [ + 0.3, + 0.1 + ], + [ + 0.3, + 0.1 + ], + [ + 0.3, + 0.1 + ], + [ + 0.3, + 0.1 + ] + ] + }, + { + "name": "supplybot-moving", + "directions": 4, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot-moving.png b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot-moving.png new file mode 100644 index 0000000000000000000000000000000000000000..cac976240bd3619027dfebb0597e3529251b5612 GIT binary patch literal 2970 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 AhX4Qo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png index cac976240bd3619027dfebb0597e3529251b5612..9a4895603b1cf1c2eb12d58a865531c200f1107d 100644 GIT binary patch literal 2718 zcmV;P3Ssq$P)c9KKK%u?0jvAVKESr3OUVJX(vh?rSy!d?JzB8V9?l$PeZ%~mmb1_fY2Cb{e zj4(a`lUCk@j1ztY?hJB@cUq><>#NeRs=XzP}{Z589z@? z=0w|7_V+w|mURV?1n9z7UIpYj%;hfqEt6U*5IX*~hZbmYagnlF^NP^e*hp<{ZFJ~2 zn`kb%P93e6`iiw&$_&tjuUrB{dt0gZ>J8M<*=%iS)UEf=h|Yie_)cpD;4_Zl9E!aT ze85-Oq6=S1Kw{eaCv016{LgKV=pdsHJU_?|%N{4+wvRyz@dY zVI*(+-dW1$^Pz&EE_~lcp%EBabOa@pTvZO(w;tO{tIH|+`;$u|2B3gA#D=h)mmoUu zJqZ{X7$_jJ%Yta1NF>Bp)jHqUeJw4|ou$=Plce6>UU7A>`2I`KVY!0_;} zXnadci`e74y%-~7{B`Ku){;{Wn;;*4Bm~v1Bz~wFV61D_2paLC5XB6L0-rqtxZoIB z*anSa*clKNK6?gm*RSlD*E;6G;x;svZ`X9WqTc{`Y`~ZAEH}$bq58?<{9ny*Ks|iEIa8py z#dUiBMKeDD2@t}z!D$CkB$HYbwxtvu_<;!$TdrIe3Q;Kqx5P`8#bkm+)cDF6aOBt$ zVN(@*$NV}O3yAV12xywCl-uQ1r(L z@?4ho?rfx{mL`F>mRY0mGg%tkZrn;YVumb8tU@3>`QaM<@E238JIb=IE_`JS=7rO)G-y;NEqjtW224B$%CaehFYA3#)&#$Qfdxl}6QgL_$y?P3OE z24V(c24V(c24V($8K~75zBs>}Sr>bboqd$$ zy9NB#Dc3L8j)U(hjX~UeX*6Zk|Hgq1gMi|ubL~)5K3dNSR9wGYJ3oBK62RKR=%dKQ z0+}R%SXLkFi+Hn1H?Kt?386ejdl9Qf$Y?~t<;EOnaRh_vvil1GV zp&~=zL_v+f{6mgW#hU;;zW*u?Cd=~_-H$g zj1nEXDLCaO$Zw_b9R%FGubJizr` zaQ$-aIQSw4K#Bd_EngQyzGdr1`sn364eV}p>~S3WzubcC;7iV$-#>DZj(y*F7m4u< z@~5x=VgY#e##Iwv5P+wKy=j6My@8$vGbb&y77w$kgwBMHIl2zbM4$Xy77ya05p7P`R>BiEOY3`t#$?goY@zdp8-n z@jY{dOfA3N(KfCo&$aWt6l%n`VgQs`X!pXa|BFztgL}tii$`GI%-!TKEMh_XgQaJ%rbL;feXBKH>WJGj&Y-}trM?fdOoh_Y+`?tB1yj(|Id0J#N-A;>k5c?VFRRT6nM@LBf*?3%wj9{{5&kGXRQa1I24 zg!^uv7HK!7lqm5dT>`SR$PK_!c=gx~T9*I^zvwD}I1pu$)PIAZGFPVB_@&Iy|LHpa Y0pR2nZ#wygegFUf07*qoM6N<$f_Dx)r~m)} literal 2970 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 AhX4Qo From f50488d7e3cd603e6ed9ba4139f41e8a658c1d7b Mon Sep 17 00:00:00 2001 From: Simon <63975668+Simyon264@users.noreply.github.com> Date: Sun, 7 Jul 2024 15:06:24 +0200 Subject: [PATCH 18/29] Raise ratking migration minimum players to 30 from 15 (#29737) --- Resources/Prototypes/GameRules/events.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index bfd9dd6230..39e29ad115 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -230,7 +230,7 @@ earliestStart: 15 weight: 6 duration: 50 - minimumPlayers: 15 # Hopefully this is enough for the Rat King's potential Army + minimumPlayers: 30 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30) - type: VentCrittersRule entries: - id: MobMouse From 063c5de9858989f24897cbfa6a5b52776173591c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 7 Jul 2024 13:07:30 +0000 Subject: [PATCH 19/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ef044e7201..f5387d8fdb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Tayrtahn - changes: - - message: Sodas and other fizzy drinks can be shaken with the verbs menu to build - up fizziness so they spray when opened. - type: Add - id: 6378 - time: '2024-04-18T01:49:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25574 - author: metalgearsloth changes: - message: Fix lobby UI not resetting for character changes. @@ -3819,3 +3811,10 @@ id: 6877 time: '2024-07-07T06:20:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29741 +- author: Simyon + changes: + - message: Ratkings now require at least 30 players in order to spawn. + type: Tweak + id: 6878 + time: '2024-07-07T13:06:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29737 From 0e9ed36b8568e7deb17fe3ae1a038f983e761e28 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 7 Jul 2024 10:19:10 -0400 Subject: [PATCH 20/29] Intercom buffs and fixes (#29580) * Intercom buffs and fixes * remove unused bui state * mild sec intercom buff * reinforce sec intercoms --- .../Radio/EntitySystems/RadioDeviceSystem.cs | 23 +++ .../Radio/Ui/IntercomBoundUserInterface.cs | 15 +- Content.Client/Radio/Ui/IntercomMenu.xaml.cs | 37 +++- .../Radio/EntitySystems/RadioDeviceSystem.cs | 84 ++++---- .../Radio/EntitySystems/RadioSystem.cs | 9 +- .../Radio/Components/IntercomComponent.cs | 21 +- .../Components/TelecomExemptComponent.cs | 9 + .../EntitySystems/EncryptionKeySystem.cs | 14 +- Content.Shared/Radio/SharedIntercom.cs | 20 +- Content.Shared/Wires/SharedWiresSystem.cs | 6 + .../en-US/radio/components/intercom.ftl | 3 +- .../Entities/Objects/Devices/radio.yml | 3 +- .../Structures/Wallmounts/intercom.yml | 186 +++++++++++++----- .../Graphs/utilities/intercom.yml | 41 +++- .../Recipes/Construction/utilities.yml | 2 +- .../Wallmounts/intercom.rsi/base.png | Bin 1438 -> 729 bytes .../Wallmounts/intercom.rsi/broadcasting.png | Bin 171 -> 137 bytes .../Wallmounts/intercom.rsi/build.png | Bin 1369 -> 656 bytes .../Wallmounts/intercom.rsi/panel.png | Bin 656 -> 316 bytes .../Wallmounts/intercom.rsi/speaker.png | Bin 157 -> 134 bytes .../Wallmounts/intercom.rsi/unshaded.png | Bin 328 -> 217 bytes Resources/migration.yml | 3 + 22 files changed, 339 insertions(+), 137 deletions(-) create mode 100644 Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs create mode 100644 Content.Shared/Radio/Components/TelecomExemptComponent.cs diff --git a/Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs new file mode 100644 index 0000000000..29d6c635eb --- /dev/null +++ b/Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs @@ -0,0 +1,23 @@ +using Content.Client.Radio.Ui; +using Content.Shared.Radio; +using Content.Shared.Radio.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Radio.EntitySystems; + +public sealed class RadioDeviceSystem : EntitySystem +{ + [Dependency] private readonly UserInterfaceSystem _ui = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnAfterHandleState); + } + + private void OnAfterHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (_ui.TryGetOpenUi(ent.Owner, IntercomUiKey.Key, out var bui)) + bui.Update(ent); + } +} diff --git a/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs b/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs index abbb1d58ec..7b3e39aa08 100644 --- a/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs +++ b/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs @@ -1,6 +1,6 @@ using Content.Shared.Radio; +using Content.Shared.Radio.Components; using JetBrains.Annotations; -using Robust.Client.GameObjects; namespace Content.Client.Radio.Ui; @@ -19,7 +19,9 @@ protected override void Open() { base.Open(); - _menu = new(); + var comp = EntMan.GetComponent(Owner); + + _menu = new((Owner, comp)); _menu.OnMicPressed += enabled => { @@ -46,13 +48,8 @@ protected override void Dispose(bool disposing) _menu?.Close(); } - protected override void UpdateState(BoundUserInterfaceState state) + public void Update(Entity ent) { - base.UpdateState(state); - - if (state is not IntercomBoundUIState msg) - return; - - _menu?.Update(msg); + _menu?.Update(ent); } } diff --git a/Content.Client/Radio/Ui/IntercomMenu.xaml.cs b/Content.Client/Radio/Ui/IntercomMenu.xaml.cs index 8b4b38753c..2e08913051 100644 --- a/Content.Client/Radio/Ui/IntercomMenu.xaml.cs +++ b/Content.Client/Radio/Ui/IntercomMenu.xaml.cs @@ -1,8 +1,9 @@ using Content.Client.UserInterface.Controls; -using Content.Shared.Radio; +using Content.Shared.Radio.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Client.Radio.Ui; @@ -17,38 +18,54 @@ public sealed partial class IntercomMenu : FancyWindow private readonly List _channels = new(); - public IntercomMenu() + public IntercomMenu(Entity entity) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); MicButton.OnPressed += args => OnMicPressed?.Invoke(args.Button.Pressed); SpeakerButton.OnPressed += args => OnSpeakerPressed?.Invoke(args.Button.Pressed); + + Update(entity); } - public void Update(IntercomBoundUIState state) + public void Update(Entity entity) { - MicButton.Pressed = state.MicEnabled; - SpeakerButton.Pressed = state.SpeakerEnabled; + MicButton.Pressed = entity.Comp.MicrophoneEnabled; + SpeakerButton.Pressed = entity.Comp.SpeakerEnabled; + + MicButton.Disabled = entity.Comp.SupportedChannels.Count == 0; + SpeakerButton.Disabled = entity.Comp.SupportedChannels.Count == 0; + ChannelOptions.Disabled = entity.Comp.SupportedChannels.Count == 0; ChannelOptions.Clear(); _channels.Clear(); - for (var i = 0; i < state.AvailableChannels.Count; i++) + for (var i = 0; i < entity.Comp.SupportedChannels.Count; i++) { - var channel = state.AvailableChannels[i]; - if (!_prototype.TryIndex(channel, out var prototype)) + var channel = entity.Comp.SupportedChannels[i]; + if (!_prototype.TryIndex(channel, out var prototype)) continue; _channels.Add(channel); ChannelOptions.AddItem(Loc.GetString(prototype.Name), i); - if (channel == state.SelectedChannel) + if (channel == entity.Comp.CurrentChannel) ChannelOptions.Select(i); } + + if (entity.Comp.SupportedChannels.Count == 0) + { + ChannelOptions.AddItem(Loc.GetString("intercom-options-none"), 0); + ChannelOptions.Select(0); + } + ChannelOptions.OnItemSelected += args => { + if (!_channels.TryGetValue(args.Id, out var proto)) + return; + ChannelOptions.SelectId(args.Id); - OnChannelSelected?.Invoke(_channels[args.Id]); + OnChannelSelected?.Invoke(proto); }; } } diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs index 8484fb2336..1258e0b8c7 100644 --- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Chat.Systems; using Content.Server.Interaction; using Content.Server.Popups; @@ -6,13 +7,10 @@ using Content.Server.Radio.Components; using Content.Server.Speech; using Content.Server.Speech.Components; -using Content.Shared.UserInterface; -using Content.Shared.Chat; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Radio; using Content.Shared.Radio.Components; -using Robust.Server.GameObjects; using Robust.Shared.Prototypes; namespace Content.Server.Radio.EntitySystems; @@ -28,7 +26,6 @@ public sealed class RadioDeviceSystem : EntitySystem [Dependency] private readonly RadioSystem _radio = default!; [Dependency] private readonly InteractionSystem _interaction = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly UserInterfaceSystem _ui = default!; // Used to prevent a shitter from using a bunch of radios to spam chat. private HashSet<(string, EntityUid)> _recentlySent = new(); @@ -47,7 +44,7 @@ public override void Initialize() SubscribeLocalEvent(OnActivateSpeaker); SubscribeLocalEvent(OnReceiveRadio); - SubscribeLocalEvent(OnBeforeIntercomUiOpen); + SubscribeLocalEvent(OnIntercomEncryptionChannelsChanged); SubscribeLocalEvent(OnToggleIntercomMic); SubscribeLocalEvent(OnToggleIntercomSpeaker); SubscribeLocalEvent(OnSelectIntercomChannel); @@ -150,18 +147,18 @@ public void ToggleRadioSpeaker(EntityUid uid, EntityUid user, bool quiet = false SetSpeakerEnabled(uid, user, !component.Enabled, quiet, component); } - public void SetSpeakerEnabled(EntityUid uid, EntityUid user, bool enabled, bool quiet = false, RadioSpeakerComponent? component = null) + public void SetSpeakerEnabled(EntityUid uid, EntityUid? user, bool enabled, bool quiet = false, RadioSpeakerComponent? component = null) { if (!Resolve(uid, ref component)) return; component.Enabled = enabled; - if (!quiet) + if (!quiet && user != null) { var state = Loc.GetString(component.Enabled ? "handheld-radio-component-on-state" : "handheld-radio-component-off-state"); var message = Loc.GetString("handheld-radio-component-on-use", ("radioState", state)); - _popup.PopupEntity(message, user, user); + _popup.PopupEntity(message, user.Value, user.Value); } _appearance.SetData(uid, RadioDeviceVisuals.Speaker, component.Enabled); @@ -213,61 +210,74 @@ private void OnReceiveRadio(EntityUid uid, RadioSpeakerComponent component, ref var nameEv = new TransformSpeakerNameEvent(args.MessageSource, Name(args.MessageSource)); RaiseLocalEvent(args.MessageSource, nameEv); - var name = Loc.GetString("speech-name-relay", ("speaker", Name(uid)), + var name = Loc.GetString("speech-name-relay", + ("speaker", Name(uid)), ("originalName", nameEv.Name)); // log to chat so people can identity the speaker/source, but avoid clogging ghost chat if there are many radios _chat.TrySendInGameICMessage(uid, args.Message, InGameICChatType.Whisper, ChatTransmitRange.GhostRangeLimit, nameOverride: name, checkRadioPrefix: false); } - private void OnBeforeIntercomUiOpen(EntityUid uid, IntercomComponent component, BeforeActivatableUIOpenEvent args) + private void OnIntercomEncryptionChannelsChanged(Entity ent, ref EncryptionChannelsChangedEvent args) { - UpdateIntercomUi(uid, component); + ent.Comp.SupportedChannels = args.Component.Channels.Select(p => new ProtoId(p)).ToList(); + + var channel = args.Component.DefaultChannel; + if (ent.Comp.CurrentChannel != null && ent.Comp.SupportedChannels.Contains(ent.Comp.CurrentChannel.Value)) + channel = ent.Comp.CurrentChannel; + + SetIntercomChannel(ent, channel); } - private void OnToggleIntercomMic(EntityUid uid, IntercomComponent component, ToggleIntercomMicMessage args) + private void OnToggleIntercomMic(Entity ent, ref ToggleIntercomMicMessage args) { - if (component.RequiresPower && !this.IsPowered(uid, EntityManager)) + if (ent.Comp.RequiresPower && !this.IsPowered(ent, EntityManager)) return; - SetMicrophoneEnabled(uid, args.Actor, args.Enabled, true); - UpdateIntercomUi(uid, component); + SetMicrophoneEnabled(ent, args.Actor, args.Enabled, true); + ent.Comp.MicrophoneEnabled = args.Enabled; + Dirty(ent); } - private void OnToggleIntercomSpeaker(EntityUid uid, IntercomComponent component, ToggleIntercomSpeakerMessage args) + private void OnToggleIntercomSpeaker(Entity ent, ref ToggleIntercomSpeakerMessage args) { - if (component.RequiresPower && !this.IsPowered(uid, EntityManager)) + if (ent.Comp.RequiresPower && !this.IsPowered(ent, EntityManager)) return; - SetSpeakerEnabled(uid, args.Actor, args.Enabled, true); - UpdateIntercomUi(uid, component); + SetSpeakerEnabled(ent, args.Actor, args.Enabled, true); + ent.Comp.SpeakerEnabled = args.Enabled; + Dirty(ent); } - private void OnSelectIntercomChannel(EntityUid uid, IntercomComponent component, SelectIntercomChannelMessage args) + private void OnSelectIntercomChannel(Entity ent, ref SelectIntercomChannelMessage args) { - if (component.RequiresPower && !this.IsPowered(uid, EntityManager)) + if (ent.Comp.RequiresPower && !this.IsPowered(ent, EntityManager)) return; - if (!_protoMan.TryIndex(args.Channel, out _) || !component.SupportedChannels.Contains(args.Channel)) + if (!_protoMan.HasIndex(args.Channel) || !ent.Comp.SupportedChannels.Contains(args.Channel)) return; - if (TryComp(uid, out var mic)) - mic.BroadcastChannel = args.Channel; - if (TryComp(uid, out var speaker)) - speaker.Channels = new(){ args.Channel }; - UpdateIntercomUi(uid, component); + SetIntercomChannel(ent, args.Channel); } - private void UpdateIntercomUi(EntityUid uid, IntercomComponent component) + private void SetIntercomChannel(Entity ent, ProtoId? channel) { - var micComp = CompOrNull(uid); - var speakerComp = CompOrNull(uid); - - var micEnabled = micComp?.Enabled ?? false; - var speakerEnabled = speakerComp?.Enabled ?? false; - var availableChannels = component.SupportedChannels; - var selectedChannel = micComp?.BroadcastChannel ?? SharedChatSystem.CommonChannel; - var state = new IntercomBoundUIState(micEnabled, speakerEnabled, availableChannels, selectedChannel); - _ui.SetUiState(uid, IntercomUiKey.Key, state); + ent.Comp.CurrentChannel = channel; + + if (channel == null) + { + SetSpeakerEnabled(ent, null, false); + SetMicrophoneEnabled(ent, null, false); + ent.Comp.MicrophoneEnabled = false; + ent.Comp.SpeakerEnabled = false; + Dirty(ent); + return; + } + + if (TryComp(ent, out var mic)) + mic.BroadcastChannel = channel; + if (TryComp(ent, out var speaker)) + speaker.Channels = new(){ channel }; + Dirty(ent); } } diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs index 4341746aaf..3ad101e62d 100644 --- a/Content.Server/Radio/EntitySystems/RadioSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs @@ -33,11 +33,15 @@ public sealed class RadioSystem : EntitySystem // set used to prevent radio feedback loops. private readonly HashSet _messages = new(); + private EntityQuery _exemptQuery; + public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnIntrinsicReceive); SubscribeLocalEvent(OnIntrinsicSpeak); + + _exemptQuery = GetEntityQuery(); } private void OnIntrinsicSpeak(EntityUid uid, IntrinsicRadioTransmitterComponent component, EntitySpokeEvent args) @@ -121,9 +125,8 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann var sourceMapId = Transform(radioSource).MapID; var hasActiveServer = HasActiveServer(sourceMapId, channel.ID); - var hasMicro = HasComp(radioSource); + var sourceServerExempt = _exemptQuery.HasComp(radioSource); - var speakerQuery = GetEntityQuery(); var radioQuery = EntityQueryEnumerator(); while (canSend && radioQuery.MoveNext(out var receiver, out var radio, out var transform)) { @@ -138,7 +141,7 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann continue; // don't need telecom server for long range channels or handheld radios and intercoms - var needServer = !channel.LongRange && (!hasMicro || !speakerQuery.HasComponent(receiver)); + var needServer = !channel.LongRange && !sourceServerExempt; if (needServer && !hasActiveServer) continue; diff --git a/Content.Shared/Radio/Components/IntercomComponent.cs b/Content.Shared/Radio/Components/IntercomComponent.cs index be2734ff16..8d7b87597b 100644 --- a/Content.Shared/Radio/Components/IntercomComponent.cs +++ b/Content.Shared/Radio/Components/IntercomComponent.cs @@ -1,23 +1,32 @@ using Robust.Shared.GameStates; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; +using Robust.Shared.Prototypes; namespace Content.Shared.Radio.Components; /// /// Handles intercom ui and is authoritative on the channels an intercom can access. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] public sealed partial class IntercomComponent : Component { /// - /// Does this intercom require popwer to function + /// Does this intercom require power to function /// - [DataField("requiresPower"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool RequiresPower = true; + [DataField, AutoNetworkedField] + public bool SpeakerEnabled; + + [DataField, AutoNetworkedField] + public bool MicrophoneEnabled; + + [DataField, AutoNetworkedField] + public ProtoId? CurrentChannel; + /// /// The list of radio channel prototypes this intercom can choose between. /// - [DataField("supportedChannels", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List SupportedChannels = new(); + [DataField, AutoNetworkedField] + public List> SupportedChannels = new(); } diff --git a/Content.Shared/Radio/Components/TelecomExemptComponent.cs b/Content.Shared/Radio/Components/TelecomExemptComponent.cs new file mode 100644 index 0000000000..7af5c1c78c --- /dev/null +++ b/Content.Shared/Radio/Components/TelecomExemptComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Radio.Components; + +/// +/// This is used for a radio that doesn't need a telecom server in order to broadcast. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class TelecomExemptComponent : Component; diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index ea07b5f8a5..cfa553661a 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -31,6 +31,7 @@ public sealed partial class EncryptionKeySystem : EntitySystem [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly SharedWiresSystem _wires = default!; public override void Initialize() { @@ -150,7 +151,7 @@ private void TryRemoveKey(EntityUid uid, EncryptionKeyHolderComponent component, return; } - if (TryComp(uid, out var panel) && !panel.Open) + if (!_wires.IsPanelOpen(uid)) { _popup.PopupClient(Loc.GetString("encryption-keys-panel-locked"), uid, args.User); return; @@ -184,8 +185,15 @@ private void OnHolderExamined(EntityUid uid, EncryptionKeyHolderComponent compon if (component.Channels.Count > 0) { - args.PushMarkup(Loc.GetString("examine-encryption-channels-prefix")); - AddChannelsExamine(component.Channels, component.DefaultChannel, args, _protoManager, "examine-encryption-channel"); + using (args.PushGroup(nameof(EncryptionKeyComponent))) + { + args.PushMarkup(Loc.GetString("examine-encryption-channels-prefix")); + AddChannelsExamine(component.Channels, + component.DefaultChannel, + args, + _protoManager, + "examine-encryption-channel"); + } } } diff --git a/Content.Shared/Radio/SharedIntercom.cs b/Content.Shared/Radio/SharedIntercom.cs index 410843312f..f697add8b9 100644 --- a/Content.Shared/Radio/SharedIntercom.cs +++ b/Content.Shared/Radio/SharedIntercom.cs @@ -1,4 +1,5 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Radio; @@ -8,23 +9,6 @@ public enum IntercomUiKey Key, } -[Serializable, NetSerializable] -public sealed class IntercomBoundUIState : BoundUserInterfaceState -{ - public bool MicEnabled; - public bool SpeakerEnabled; - public List AvailableChannels; - public string SelectedChannel; - - public IntercomBoundUIState(bool micEnabled, bool speakerEnabled, List availableChannels, string selectedChannel) - { - MicEnabled = micEnabled; - SpeakerEnabled = speakerEnabled; - AvailableChannels = availableChannels; - SelectedChannel = selectedChannel; - } -} - [Serializable, NetSerializable] public sealed class ToggleIntercomMicMessage : BoundUserInterfaceMessage { diff --git a/Content.Shared/Wires/SharedWiresSystem.cs b/Content.Shared/Wires/SharedWiresSystem.cs index d84766a5fc..7032293eaf 100644 --- a/Content.Shared/Wires/SharedWiresSystem.cs +++ b/Content.Shared/Wires/SharedWiresSystem.cs @@ -20,6 +20,7 @@ public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnPanelDoAfter); SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnExamine); @@ -28,6 +29,11 @@ public override void Initialize() SubscribeLocalEvent(OnActivatableUIPanelChanged); } + private void OnStartup(Entity ent, ref ComponentStartup args) + { + UpdateAppearance(ent, ent); + } + private void OnPanelDoAfter(EntityUid uid, WiresPanelComponent panel, WirePanelDoAfterEvent args) { if (args.Cancelled) diff --git a/Resources/Locale/en-US/radio/components/intercom.ftl b/Resources/Locale/en-US/radio/components/intercom.ftl index e56e3cd0f7..63303999c2 100644 --- a/Resources/Locale/en-US/radio/components/intercom.ftl +++ b/Resources/Locale/en-US/radio/components/intercom.ftl @@ -1,5 +1,6 @@ intercom-menu-title = Intercom intercom-channel-label = Channel: intercom-button-text-mic = Mic. -intercom-button-text-speaker = Speak +intercom-button-text-speaker = Spkr. +intercom-options-none = No channels intercom-flavor-text-left = Keep lines free of chatter diff --git a/Resources/Prototypes/Entities/Objects/Devices/radio.yml b/Resources/Prototypes/Entities/Objects/Devices/radio.yml index 43f84fe404..77b6cac2d3 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/radio.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/radio.yml @@ -4,6 +4,7 @@ parent: BaseItem id: RadioHandheld components: + - type: TelecomExempt - type: RadioMicrophone broadcastChannel: Handheld - type: RadioSpeaker @@ -39,4 +40,4 @@ sprite: Objects/Devices/securityhandy.rsi - type: Item sprite: Objects/Devices/securityhandy.rsi - heldPrefix: walkietalkie \ No newline at end of file + heldPrefix: walkietalkie diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml index 2cf77d843c..ca1b1b6c40 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml @@ -1,5 +1,5 @@ - type: entity - id: Intercom + id: BaseIntercom name: intercom description: An intercom. For when the station just needs to know something. abstract: true @@ -9,6 +9,10 @@ - type: Electrified enabled: false usesApcPower: true + - type: TelecomExempt + - type: EncryptionKeyHolder + keySlots: 3 + keysExtractionMethod: Prying - type: RadioMicrophone powerRequired: true unobstructedRequired: true @@ -24,12 +28,14 @@ - type: InteractionOutline - type: Appearance - type: WiresVisuals + - type: WiresPanelSecurity - type: ContainerFill containers: board: [ IntercomElectronics ] - type: ContainerContainer containers: board: !type:Container + key_slots: !type:Container - type: Sprite noRot: false drawdepth: SmallObjects @@ -49,7 +55,6 @@ visible: false - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - shader: unshaded visible: false - type: Transform noRot: false @@ -61,6 +66,7 @@ - type: ActivatableUIRequiresPower - type: ActivatableUI key: enum.IntercomUiKey.Key + singleUser: true - type: UserInterface interfaces: enum.IntercomUiKey.Key: @@ -116,7 +122,7 @@ - Wallmount - type: entity - id: IntercomAssesmbly + id: IntercomAssembly name: intercom assembly description: An intercom. It doesn't seem very helpful right now. components: @@ -126,7 +132,18 @@ - type: Sprite drawdepth: SmallObjects sprite: Structures/Wallmounts/intercom.rsi - state: build + layers: + - state: build + - state: panel + visible: false + map: [ "wires" ] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ConstructionVisuals.Layer: + wires: + 0: { visible: false } + 1: { visible: true } - type: Construction graph: Intercom node: assembly @@ -137,97 +154,176 @@ snap: - Wallmount +# this weird inheritance BS exists for construction shitcode +- type: entity + id: IntercomConstructed + parent: BaseIntercom + suffix: Empty, Panel Open + components: + - type: Sprite + layers: + - state: base + - state: unshaded + map: ["enum.PowerDeviceVisualLayers.Powered"] + shader: unshaded + - state: broadcasting + map: ["enum.RadioDeviceVisualLayers.Broadcasting"] + shader: unshaded + visible: false + - state: speaker + map: ["enum.RadioDeviceVisualLayers.Speaker"] + shader: unshaded + visible: false + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + visible: true + - type: WiresPanel + open: true + +- type: entity + id: Intercom + parent: IntercomConstructed + suffix: "" + components: + - type: Sprite + layers: + - state: base + - state: unshaded + map: ["enum.PowerDeviceVisualLayers.Powered"] + shader: unshaded + - state: broadcasting + map: ["enum.RadioDeviceVisualLayers.Broadcasting"] + shader: unshaded + visible: false + - state: speaker + map: ["enum.RadioDeviceVisualLayers.Speaker"] + shader: unshaded + visible: false + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: WiresPanel + open: false + - type: entity id: IntercomCommon parent: Intercom suffix: Common components: - - type: Intercom - supportedChannels: - - Common + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon - type: entity id: IntercomCommand parent: Intercom suffix: Command components: - - type: Intercom - supportedChannels: - - Common - - Command + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyCommand - type: entity id: IntercomEngineering parent: Intercom suffix: Engineering components: - - type: Intercom - supportedChannels: - - Common - - Engineering + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyEngineering - type: entity id: IntercomMedical parent: Intercom suffix: Medical components: - - type: Intercom - supportedChannels: - - Common - - Medical + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyMedical - type: entity id: IntercomScience parent: Intercom suffix: Science components: - - type: Intercom - supportedChannels: - - Common - - Science + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyScience - type: entity id: IntercomSecurity parent: Intercom suffix: Security + description: An intercom. It's been reinforced with metal from security helmets, making it a bitch-and-a-half to open. components: - - type: Intercom - supportedChannels: - - Common - - Security + - type: WiresPanel + openDelay: 5 + - type: WiresPanelSecurity + examine: wires-panel-component-on-examine-security-level2 + wiresAccessible: false + - type: Construction + node: intercomReinforced + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeySecurity - type: entity id: IntercomService parent: Intercom suffix: Service components: - - type: Intercom - supportedChannels: - - Common - - Service + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyService - type: entity id: IntercomSupply parent: Intercom suffix: Supply components: - - type: Intercom - supportedChannels: - - Common - - Supply + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyCargo - type: entity id: IntercomAll parent: Intercom suffix: All components: - - type: Intercom - supportedChannels: - - Common - - Command - - Engineering - - Medical - - Science - - Security - - Service - - Supply + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyStationMaster diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml index 2247860f89..ba29d72539 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml @@ -11,13 +11,17 @@ doAfter: 2.0 - node: assembly - entity: IntercomAssesmbly + entity: IntercomAssembly edges: - to: wired steps: - material: Cable amount: 2 doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.ConstructionVisuals.Layer" + data: 1 - to: start completed: - !type:GivePrototype @@ -29,7 +33,7 @@ doAfter: 2 - node: wired - entity: IntercomAssesmbly + entity: IntercomAssembly edges: - to: electronics steps: @@ -45,6 +49,9 @@ - !type:GivePrototype prototype: CableApcStack1 amount: 2 + - !type:VisualizerDataInt + key: "enum.ConstructionVisuals.Layer" + data: 0 steps: - tool: Cutting doAfter: 1 @@ -57,7 +64,11 @@ doAfter: 2 - node: intercom - entity: IntercomCommon #TODO: make this work with encryption keys + entity: IntercomConstructed + doNotReplaceInheritingEntities: true + actions: + - !type:SetWiresPanelSecurity + wiresAccessible: true edges: - to: wired conditions: @@ -72,3 +83,27 @@ steps: - tool: Prying doAfter: 1 + - to: intercomReinforced + conditions: + - !type:WirePanel + steps: + - material: Steel + amount: 1 + - tool: Welding + doAfter: 1 + + - node: intercomReinforced + actions: + - !type:SetWiresPanelSecurity + examine: wires-panel-component-on-examine-security-level2 + wiresAccessible: false + edges: + - to: intercom + conditions: + - !type:WirePanel + completed: + - !type:GivePrototype + prototype: SheetSteel1 + steps: + - tool: Welding + doAfter: 5 diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index 19f2fee183..82c16de7b6 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -790,7 +790,7 @@ # INTERCOM - type: construction name: intercom - id: IntercomAssesmbly + id: IntercomAssembly graph: Intercom startNode: start targetNode: intercom diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png index 787af3f53876b0ceabe9599acf922b1e4f2748f6..a85cbfbecc6aa5f549067703687291f9ea7634a6 100644 GIT binary patch delta 693 zcmbQoeUo*9K|RxCPZ!6KiaBp*1$GMsiX8v%%Cq`wK(3P)^CrjFW~X}=?pCPfe7SJF z!2|ZF4_m8VDgNSeQ`~Xt*@m{S0n;8%X>psP_bq|nd-Ae-Z#PxHpE=`mwd9`ib>;6K z-m(0CzMi42)8zRId54zN$jg`ixv#z|wC>}fO!a_PAiv_wfv->Md1ox^{2L{@_#?}9 zqD*m4km|_r5_($biT3EX3g8TOCRrXlU2R$dik^8oX3A= z+I^IK{M&BQ$&>=thP_3WFY;yU<<8x;|6RR4rY-rl`Z>W@JTqedyyw{wt??kksPX!W z!$7;59+FmIa&mFzO2&jS z?dRM7;M3G>?c-}+{m)t;9RC@78mwF5L z70eSnVqBj;H{SERrX|OwyQGTwu%o;_f8Xo+kN0YAYClOZOxRmI=NC}${=DlG;^N(t zUaQ@!|DiHR`AW2cobj_;ReR-vR$e(}c>0(7dL}nD+JRT`07pFdJPz?u1J__-#@ntNFCz20Fq*J0IA-= zTC&10OQ~KYO`31(oMAYMmA0Qg*Xq(9#1ls<>Aed9Uc1aYDXT5^T|o6`#1PQ)jPi TO!EgO0tN<8S3j3^P619 delta 1407 zcmV-_1%Ue51)d9#Fn;0U}0flVPWyVrO&9NR4Ne+21}iOAb%Q-_Vx7{e&)jY)TkpE z43-A2*cfrT@pwGET3exTQe?vK*Y8o%sha0x?^w-yFj4eHW2gW?AABa0;qL4l%gf9B zzOuroYZw6UxUc3JB^d``SKVVV6k;b9I|s45hp7TQ9uL`URzCtPhC)1l@eJ>{k3cY3 z_qlX3&SEIUR(~YYeTlowCuW`5Y!;`}sUHEB!ePCCI~uLHzr4K^4l^}5*-cr`1=AT& zK6o($?$6C}S}c-I#_^8(YLt*p#u;(Ck-cM=Vg{Hh;MLj+cW39wX0yD@DEjq&n+@4J zrrUct)jz>b_%~J}Qw0=GiYzZL>+K`$!1Skfq#aN=DSx&pW-VeRDo0gSTrQX4Gxhq- zRw7dc3|z5s%XhZy$?_PAQoHm4X!(8S=jSW>6Y*Hb3UN5>*k8XvIXvX*gIOLue!|B3 zDw`Wy0L*{Cz_Xv80x&%@b=F_lD6pa1D6{l|O5_nRuf;jp9p^&4;ZPMIE9@-xPkjR-Y z!-ft@AQ0%v^edbc+1}o6%Ml6$0yXx3q#bZg8ZvywsNYD2o_2);fk3I;^MuCU=T0of zz!e*AkBrml)IC@u1sIyZKSFox!ggyPa9S+#K7aep(EA*5y6LxloUvl?*=$z#V2v>S z2lN6{lanlk!;HFy^}&~WpxekjZ59jhq=hyG@18eu8&r=g4F-ywAQf{R#H80(xO3 zvVX9!u&}VOu&}VOu=r1MDYr=GO81Wf}X-TY8D5eXBA!%i-jr*Kl#V*nxwBw_)L z((|SY2nK_t3BRAI$w{^%5&Z~ffd?VPMbrTte-`7G{R=iXBNc-e8Et@6s(vCz&{RxN zWO~ap!vME@e(bN`v?+e)yxlw1&#U8rB7Y>-h^AtKqpo3|zj(%|YnanwQ4c=@D2InI zB())a=S&Yw>*peQTRsC`t*tbCN7F%35t2?P;}tQus}E+$W=~P8EhfZrcoVGtw&3Ff$|vqHED>A^;I_3S55PU=ZQ$t3Qmi~3Uh6S zjuIo1{d$cM7l}xn)k~il(esHBGv>cv;P_Yr&P)}~W@^0(mTFp>0oCzyiGQX|K;+*>obGcIrd6hArqJ^H9lfI|6WCSv`0kr| zcGbNKCrAi!5vZ!l%$vsIXDGc;6y*i{)-UECP%Z&B>-k-vSDM7**LP84aE zSCyDyx_=j?a-wWr3|>@TRR<;7Er)BBZU$;h1@6^|kcEYXg@r|T_#2w_qxa3rkskm6 N002ovPDHLkV1mjqvT*#WAE}&fA;bybKCFE(g_aIH=VLv@TfG{$A0W w>8Gz-GcYh@eLMyvfnt~ZjtMEUF)-{%WY)?T;I-A0Ee45uy85}Sb4q9e05)kJdjJ3c delta 129 zcmeBVT+KMauqxHl#WAE}&f8lXc^ec&SOSugvRw~5m~8Vq5~O#~Y@3(`i_7AD<_DhM zI{jaf0SMv+z4KP)t+m#;y7uU#-_0N)1_rAhiy9y0E}N%!`j=}1`SoAF@o#!(YO(%w eha3aL_T3CUlKe&%h9?hz6nnb*xvXK;#J3tWrH3!@SFrl?xRqbOu9vkP_sQLgZ zwAQO;(7+8KJ!e}%q?Qib{xbOG>TrUj6(t5T22^4X6 zdyDyE0ibvlD5Y?!&d}+c|7iu(S^%Zg)+Pu5%^)b+>;M#Qf<|gBzrF$&-#wdUfH^z-o03U9Q8>0X|+!!~;6Pgb<#*NkBDBKt~;s$Lh zQ@Alf5ClOG1VP}z+PF}LB^*JFl^3A=bj{aiahq8GD@+-da0D?<>@a0mLLJ075r8r* zp$=l4d}JX)8J187G1dZ5h9w+9jI{uiVF^bNV=Vw>Si%v+SPMWImT&|y)&fw5B^*Ia z<)g66u!JLssT^WZh9y3N7zswIc0d`HNDw0kf*=T_d;^<`CUbQETe1KE002ovPDHLk FV1jWY7&`y} delta 1338 zcmV-A1;zT11=$LaFn%!$pwi^K0z=5%!~rQ*MYg#01_eXnWKrxv$gzXmgSA_)>)mx7 zlPvB2E;GAh&CEW(H-FxH5D^g(5fSmfWz4Ig-EO04TKl*In17}@Ha6xt%&GI4SA(W$ zZ7CijlgXg#I#N6afDnT3mzM`FMfE&6_vd4<0;lN>x?cKRkZiRupC6QdQMZ z3&2x1RaI^4x{hU8D2jq*SyU<&gb);##?hX}SqrEe>kVXCW@~FJv^L;r0)Xq|6-5DH zaZz{L{p#j!!+-TItPG_A0EsJ*d)8!Al054`=rzDs08%_gVc{~CWwBS?rP(?nm($qT zC=S&5;-XHuYz{4elh}!T1pW*N=h)eK)AzSR)VOu)maF~M_BPGdk>3!3q<5QIqj9RFVSYkX__r)N+U1!MEM@1GFb?Fl*pu(#cXW|Q(YiNoK# z>(JSDv)Qcc{8B6yhg$^0z~Z8g@u7%x<~sMvCgxHLX{RjqByHCT z+<$a`yk%LW(`hD^slYx0U1CpGS9!Fu(g}Be==j`h-`n}wSuPzj@Npc>-G)=|^#fL` zRnqBnU>|`3c(k&@lhsv>^#+AAIt$IFt9>iL>-sUtzQ5qq_o}=9&;Voed0-y{YruE1 z%$H@8@-@lTeptv4G4(O&|>1zJGJq z^_+Xw?k!yh0F3>xP)1=!3My>&2G=YnAIfSS= z&)p_4at*Le0Ngo&c52K?W1j=^`2wQe5kj{K45|UXw->*lqNvyS=G*T8`02+rUBz-)EY2KM~&}Px#_DMuRRCt{2+OZOXFbsg<=;^2qjx0Ql z@BapLaq`rIJb(_aa$Z`}9QOYf1_~FrmTMA30002crcHDJ7Jc8pevL^fnVxBzA5IKa zmGfl~Rh1znQB_I9=a^%4FJNgbf&6gl(`hU^|IIEpm~LOk^AFmy6389 zfQMDh0G&p;?dLc47000000DwPGT*39M6xXOiFH#fqY?gR8Vwx|CvII&l7V&MC)M&&M|0LzvEUD3m oY5p5fJOezNB^xwi0040H2AB(}cg~IGwEzGB07*qoM6N<$f(<}`Bme*a delta 632 zcmV-;0*C#)0+0oeBYy%{NklBjE6vzK^Tgi*28w$-(*@ohRaW*gM61hvi zKqik`0$Q{OLczNhL%%@3gOd){U?gN=MYeH3I=$cY^ai1K zdjETO?+zdcf*|&1U>JgeFEO>M56I2~z!(#k!=V@$hGN9%Y{lX!q-A{CWeAb3A9yt`?Zj=ZaJkI6m%fWe4|*HJ?-&003GC zXkLeys%oYUpzs;6*T-$E?V<-y5Cl<*N$Mph-C9|K{}_hQIxAn6z0b@0z#?nkZ*+i^-Ef#!9Hf6WFw&f#&6=-S?M%~K_B@@rWZMy?BBb@?g${RdN3Eo24& zK)YWDuyHy~8o6%#odd%Vo3cTgDv*|d$2n}r!Pkq6-6fEuOjRH$0o!rn%sproDC#08 zs|w^Do=CHtJ!lmuE1Rl791K;E~hzhr(peRbtwc(8&sGll0< T#mz~RK*~H_{an^LB{Ts5O_nYE diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png index 7b0bb630722bb12089a4a1d54ca9eeeaa7d1b32a..a8fda54fc9332fe037dae35c49093bc5c4650995 100644 GIT binary patch delta 177 zcmX@Xbdzy{K|RA{PZ!6KiaBp@IdUCV5MVg4cKw_EpE~Q*o(R8Pna^?C*>m9+v81)7 zY&I_(Lm~=dl^I@KHqoz)yBy|ru!%5L0xcm4M5|1_2Kme%zA z-@4G5fuUhq+rBQjsl8jbSxZmpJ^DbA0R$Yb)N20w8UA9{QLRZ)#qz&=*QIS-GTZ6Q d1+a96k delta 289 zcmV++0p9-E0muT7Fn<98Nkl}OyzoZF}khCwnw&_Cz0002prA4W+F-=R0Qf>EXH1*&`RYmVy z3_{TN#q0UEhC>lPcMNq?624npsppbgj?veF+byiNfC000000084ji}I`EXQ#FQ2J!L~Ha14JRfw?NpCNr*7@7UD7XwPN zywg|eRAuO$v?%qoS<8O8kU>+mU5)wYIiUU5+Tf|`!Yc670JxwIfOZJLq~?It;V2>^ n+p21=z0-9S02%-Q06cXAB#Z2r?C8JM00000NkvXXu0mjf+scRB diff --git a/Resources/migration.yml b/Resources/migration.yml index ef0a5f46b7..bd42de8f2c 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -358,3 +358,6 @@ FloorTileItemReinforced: PartRodMetal1 #2024-06-25 BookChefGaming: BookHowToCookForFortySpaceman + +#2024-06-29 +IntercomAssesmbly: IntercomAssembly From 71b7dddb59e880ba156191396f74035d7b5977aa Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 7 Jul 2024 14:20:16 +0000 Subject: [PATCH 21/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f5387d8fdb..70c1904899 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - message: Fix lobby UI not resetting for character changes. - type: Fix - id: 6379 - time: '2024-04-18T03:01:12.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27075 - author: TokenStyle changes: - message: Benzene is no longer required for the Insuzine recipe. @@ -3818,3 +3811,13 @@ id: 6878 time: '2024-07-07T13:06:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29737 +- author: EmoGarbage404 + changes: + - message: Intercoms now use encryption keys to determine what channels they can + broadcast on. + type: Tweak + - message: Intercoms and handheld radios no longer rely on telecom servers. + type: Fix + id: 6879 + time: '2024-07-07T14:19:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29580 From 13b84870ecc079301c1e619a90e3a18e9113ec32 Mon Sep 17 00:00:00 2001 From: Verm <32827189+Vermidia@users.noreply.github.com> Date: Sun, 7 Jul 2024 09:21:53 -0500 Subject: [PATCH 22/29] Bartending+: Shaking and Stirring (#29243) * Shaking and Stirring * Remove shake message * Switch if order a bit * Add doafter supprot for reactionmixer * Fix nullability * Timespan zero * Forgot to remove loc string * Reorganize usings * Remove unneeded usings, fix b52 needing to be shaken --- .../EntitySystems/ReactionMixerSystem.cs | 57 +++++++++++++++---- .../Reaction/ReactionMixerComponent.cs | 21 +++++++ .../chemistry/components/mixing-component.ftl | 3 + .../Prototypes/Chemistry/mixing_types.yml | 14 +++++ .../Consumable/Drinks/drinks_special.yml | 6 +- .../Entities/Objects/Misc/utensils.yml | 15 +++++ .../Prototypes/Recipes/Reactions/drinks.yml | 54 ++++++++++++++++++ 7 files changed, 159 insertions(+), 11 deletions(-) diff --git a/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs b/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs index d5f7655f88..a81f38a21d 100644 --- a/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs @@ -1,6 +1,9 @@ +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reaction; +using Content.Shared.DoAfter; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Nutrition.EntitySystems; using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.Popups; @@ -10,34 +13,68 @@ public sealed partial class ReactionMixerSystem : EntitySystem { [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainers = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnShake); + SubscribeLocalEvent(OnDoAfter); } private void OnAfterInteract(Entity entity, ref AfterInteractEvent args) { - if (!args.Target.HasValue || !args.CanReach) + if (!args.Target.HasValue || !args.CanReach || !entity.Comp.MixOnInteract) return; - var mixAttemptEvent = new MixingAttemptEvent(entity); - RaiseLocalEvent(entity, ref mixAttemptEvent); - if (mixAttemptEvent.Cancelled) - { + if (!MixAttempt(entity, args.Target.Value, out var solution)) return; - } - if (!_solutionContainers.TryGetMixableSolution(args.Target.Value, out var solution, out _)) + var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.TimeToMix, new ReactionMixDoAfterEvent(), entity, args.Target.Value, entity); + + _doAfterSystem.TryStartDoAfter(doAfterArgs); + } + + private void OnDoAfter(Entity entity, ref ReactionMixDoAfterEvent args) + { + //Do again to get the solution again + if (!MixAttempt(entity, args.Target!.Value, out var solution)) return; - _popup.PopupEntity(Loc.GetString(entity.Comp.MixMessage, ("mixed", Identity.Entity(args.Target.Value, EntityManager)), ("mixer", Identity.Entity(entity.Owner, EntityManager))), args.User, args.User); + _popup.PopupEntity(Loc.GetString(entity.Comp.MixMessage, ("mixed", Identity.Entity(args.Target!.Value, EntityManager)), ("mixer", Identity.Entity(entity.Owner, EntityManager))), args.User, args.User); + + _solutionContainers.UpdateChemicals(solution!.Value, true, entity.Comp); + + var afterMixingEvent = new AfterMixingEvent(entity, args.Target!.Value); + RaiseLocalEvent(entity, afterMixingEvent); + } + + private void OnShake(Entity entity, ref ShakeEvent args) + { + if (!MixAttempt(entity, entity, out var solution)) + return; - _solutionContainers.UpdateChemicals(solution.Value, true, entity.Comp); + _solutionContainers.UpdateChemicals(solution!.Value, true, entity.Comp); - var afterMixingEvent = new AfterMixingEvent(entity, args.Target.Value); + var afterMixingEvent = new AfterMixingEvent(entity, entity); RaiseLocalEvent(entity, afterMixingEvent); } + + private bool MixAttempt(EntityUid ent, EntityUid target, out Entity? solution) + { + solution = null; + var mixAttemptEvent = new MixingAttemptEvent(ent); + RaiseLocalEvent(ent, ref mixAttemptEvent); + if (mixAttemptEvent.Cancelled) + { + return false; + } + + if (!_solutionContainers.TryGetMixableSolution(target, out solution, out _)) + return false; + + return true; + } } diff --git a/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs b/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs index 118f224061..8edfa44ce8 100644 --- a/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs +++ b/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs @@ -1,5 +1,7 @@ using Content.Shared.Chemistry.Components; +using Content.Shared.DoAfter; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Reaction; @@ -19,9 +21,28 @@ public sealed partial class ReactionMixerComponent : Component [ViewVariables] [DataField] public LocId MixMessage = "default-mixing-success"; + + /// + /// Defines if interacting is enough to mix with this component + /// + [ViewVariables] + [DataField] + public bool MixOnInteract = true; + + /// + /// How long it takes to mix with this + /// + [ViewVariables] + [DataField] + public TimeSpan TimeToMix = TimeSpan.Zero; } [ByRefEvent] public record struct MixingAttemptEvent(EntityUid Mixed, bool Cancelled = false); public readonly record struct AfterMixingEvent(EntityUid Mixed, EntityUid Mixer); + +[Serializable, NetSerializable] +public sealed partial class ReactionMixDoAfterEvent : SimpleDoAfterEvent +{ +} diff --git a/Resources/Locale/en-US/chemistry/components/mixing-component.ftl b/Resources/Locale/en-US/chemistry/components/mixing-component.ftl index a486ed8ede..c434246fab 100644 --- a/Resources/Locale/en-US/chemistry/components/mixing-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/mixing-component.ftl @@ -6,9 +6,12 @@ mixing-verb-default-condense = condense mixing-verb-centrifuge = centrifugation mixing-verb-electrolysis = electrolyze mixing-verb-holy = bless +mixing-verb-stir = stir +mixing-verb-shake = shake ## Entity default-mixing-success = You mix the {$mixed} with the {$mixer} bible-mixing-success = You bless the {$mixed} with the {$mixer} +spoon-mixing-success = You stir the {$mixed} with the {$mixer} diff --git a/Resources/Prototypes/Chemistry/mixing_types.yml b/Resources/Prototypes/Chemistry/mixing_types.yml index 20d58e70ab..fd73256410 100644 --- a/Resources/Prototypes/Chemistry/mixing_types.yml +++ b/Resources/Prototypes/Chemistry/mixing_types.yml @@ -51,3 +51,17 @@ icon: sprite: Objects/Specific/Chapel/bible.rsi state: icon + +- type: mixingCategory + id: Shake + verbText: mixing-verb-shake + icon: + sprite: Objects/Consumable/Drinks/shaker.rsi + state: icon + +- type: mixingCategory + id: Stir + verbText: mixing-verb-stir + icon: + sprite: Objects/Misc/utensils.rsi + state: spoon diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml index d2c1249740..604ae28fb3 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml @@ -11,7 +11,7 @@ - type: MixableSolution solution: drink - type: Drink - - type: Shakeable # Doesn't do anything, but I mean... + - type: Shakeable - type: FitsInDispenser solution: drink - type: DrawableSolution @@ -34,6 +34,10 @@ - type: PhysicalComposition materialComposition: Steel: 50 + - type: ReactionMixer + mixOnInteract: false + reactionTypes: + - Shake - type: entity parent: DrinkGlassBase diff --git a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml index 86667f094f..e735b2dcdd 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml @@ -87,6 +87,11 @@ Blunt: 1 - type: Shovel speedModifier: 0.1 # you can try + - type: ReactionMixer + mixMessage: "spoon-mixing-success" + timeToMix: 0.5 + reactionTypes: + - Stir - type: entity parent: UtensilBasePlastic @@ -103,6 +108,11 @@ - Spoon - type: Shovel speedModifier: 0.1 # you can try + - type: ReactionMixer + mixMessage: "spoon-mixing-success" + timeToMix: 0.5 + reactionTypes: + - Stir - type: entity parent: UtensilBasePlastic @@ -137,6 +147,11 @@ - type: Utensil types: - Spoon + - type: ReactionMixer + mixMessage: "spoon-mixing-success" + timeToMix: 0.5 + reactionTypes: + - Stir - type: MeleeWeapon wideAnimationRotation: 180 attackRate: 2 diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index 2a14c0ecd2..96cc5b6aaa 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -10,6 +10,8 @@ - type: reaction id: AlliesCocktail + requiredMixerCategories: + - Shake reactants: Martini: amount: 2 @@ -20,6 +22,8 @@ - type: reaction id: Amasec + requiredMixerCategories: + - Shake reactants: Wine: amount: 2 @@ -32,6 +36,8 @@ - type: reaction id: Andalusia + requiredMixerCategories: + - Stir reactants: Rum: amount: 1 @@ -98,6 +104,8 @@ - type: reaction id: BlueHawaiian + requiredMixerCategories: + - Shake reactants: CoconutRum: amount: 2 @@ -126,6 +134,8 @@ - type: reaction id: BahamaMama + requiredMixerCategories: + - Shake reactants: Ice: amount: 1 @@ -168,6 +178,8 @@ - type: reaction id: BeepskySmash + requiredMixerCategories: + - Shake reactants: Iron: amount: 1 @@ -190,6 +202,8 @@ - type: reaction id: BloodyMary + requiredMixerCategories: + - Stir reactants: JuiceLime: amount: 1 @@ -280,6 +294,8 @@ - type: reaction id: DemonsBlood + requiredMixerCategories: + - Stir reactants: Rum: amount: 1 @@ -294,6 +310,8 @@ - type: reaction id: DevilsKiss + requiredMixerCategories: + - Stir reactants: Rum: amount: 1 @@ -306,6 +324,8 @@ - type: reaction id: DoctorsDelight + requiredMixerCategories: + - Stir reactants: Cream: amount: 2 @@ -322,6 +342,8 @@ - type: reaction id: DriestMartini + requiredMixerCategories: + - Shake reactants: Gin: amount: 1 @@ -332,6 +354,8 @@ - type: reaction id: ErikaSurprise + requiredMixerCategories: + - Shake reactants: Ale: amount: 2 @@ -373,6 +397,8 @@ - type: reaction id: GargleBlaster + requiredMixerCategories: + - Shake reactants: Cognac: amount: 1 @@ -411,6 +437,8 @@ - type: reaction id: Gildlager + requiredMixerCategories: + - Shake reactants: Gold: amount: 1 @@ -548,6 +576,8 @@ - type: reaction id: IrishCoffee + requiredMixerCategories: + - Stir reactants: Coffee: amount: 1 @@ -568,6 +598,8 @@ - type: reaction id: KiraSpecial + requiredMixerCategories: + - Stir reactants: JuiceLime: amount: 1 @@ -580,6 +612,8 @@ - type: reaction id: Lemonade + requiredMixerCategories: + - Stir reactants: JuiceLemon: amount: 1 @@ -592,6 +626,8 @@ - type: reaction id: LemonLime + requiredMixerCategories: + - Stir reactants: JuiceLemon: amount: 1 @@ -604,6 +640,8 @@ - type: reaction id: LongIslandIcedTea + requiredMixerCategories: + - Stir reactants: CubaLibre: amount: 3 @@ -618,6 +656,8 @@ - type: reaction id: Manhattan + requiredMixerCategories: + - Shake reactants: Whiskey: amount: 2 @@ -658,6 +698,8 @@ - type: reaction id: Martini + requiredMixerCategories: + - Shake reactants: Gin: amount: 2 @@ -679,6 +721,8 @@ - type: reaction id: Mojito + requiredMixerCategories: + - Shake reactants: JuiceLime: amount: 1 @@ -726,6 +770,8 @@ - type: reaction id: Patron + requiredMixerCategories: + - Shake reactants: Tequila: amount: 10 @@ -736,6 +782,8 @@ - type: reaction id: Painkiller + requiredMixerCategories: + - Shake reactants: JuicePineapple: amount: 3 @@ -838,6 +886,8 @@ - type: reaction id: ScrewdriverCocktail + requiredMixerCategories: + - Shake reactants: JuiceOrange: amount: 2 @@ -955,6 +1005,8 @@ - type: reaction id: ToxinsSpecial + requiredMixerCategories: + - Shake reactants: Rum: amount: 2 @@ -967,6 +1019,8 @@ - type: reaction id: VodkaMartini + requiredMixerCategories: + - Shake reactants: Vermouth: amount: 1 From 437f6f451ad436d31ae623ceea9ee30fb151607d Mon Sep 17 00:00:00 2001 From: NotSoDamn <75203942+NotSoDana@users.noreply.github.com> Date: Sun, 7 Jul 2024 16:22:38 +0200 Subject: [PATCH 23/29] Slicing food with Swords (#29005) * added utensil component * BaseSword added --- .../Entities/Objects/Weapons/Melee/sword.yml | 53 ++++++++----------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index 7cc33b7155..d0d85beb6f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -1,15 +1,28 @@ - type: entity - name: captain's sabre parent: BaseItem + id: BaseSword + abstract: true + components: + - type: Sharp + - type: MeleeWeapon + wideAnimationRotation: -135 + - type: Sprite + state: icon + - type: Item + size: Normal + - type: Utensil + types: + - Knife + +- type: entity + name: captain's sabre + parent: BaseSword id: CaptainSabre description: A ceremonial weapon belonging to the captain of the station. components: - - type: Sharp - type: Sprite sprite: Objects/Weapons/Melee/captain_sabre.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 attackRate: 1.5 damage: types: @@ -21,7 +34,6 @@ reflectProb: .1 spread: 90 - type: Item - size: Normal sprite: Objects/Weapons/Melee/captain_sabre.rsi - type: Tag tags: @@ -30,26 +42,22 @@ - type: entity name: katana - parent: BaseItem + parent: BaseSword id: Katana description: Ancient craftwork made with not so ancient plasteel. components: - - type: Sharp - type: Tag tags: - Katana - type: Sprite sprite: Objects/Weapons/Melee/katana.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 damage: types: Slash: 15 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal sprite: Objects/Weapons/Melee/katana.rsi - type: DisarmMalus @@ -61,14 +69,12 @@ components: - type: Sprite sprite: Objects/Weapons/Melee/energykatana.rsi - state: icon - type: MeleeWeapon wideAnimationRotation: -60 damage: types: Slash: 30 - type: Item - size: Normal sprite: Objects/Weapons/Melee/energykatana.rsi - type: EnergyKatana - type: DashAbility @@ -86,41 +92,34 @@ - type: entity name: machete - parent: BaseItem + parent: BaseSword id: Machete description: A large, vicious looking blade. components: - - type: Sharp - type: Tag tags: - Machete - type: Sprite sprite: Objects/Weapons/Melee/machete.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 damage: types: Slash: 15 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal sprite: Objects/Weapons/Melee/machete.rsi - type: DisarmMalus - type: entity name: claymore - parent: BaseItem + parent: BaseSword id: Claymore description: An ancient war blade. components: - - type: Sharp - type: Sprite sprite: Objects/Weapons/Melee/claymore.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 attackRate: 0.75 damage: types: @@ -128,7 +127,6 @@ soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal - type: Clothing sprite: Objects/Weapons/Melee/claymore.rsi slots: @@ -137,41 +135,34 @@ - type: entity name: cutlass - parent: BaseItem + parent: BaseSword id: Cutlass description: A wickedly curved blade, often seen in the hands of space pirates. components: - - type: Sharp - type: Tag tags: - Machete - type: Sprite sprite: Objects/Weapons/Melee/cutlass.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 damage: types: Slash: 16 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal sprite: Objects/Weapons/Melee/cutlass.rsi - type: DisarmMalus - type: entity name: The Throngler - parent: BaseItem + parent: BaseSword id: Throngler description: Why would you make this? components: - - type: Sharp - type: Sprite sprite: Objects/Weapons/Melee/Throngler2.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 attackRate: 10 damage: types: From 70b56136aa027693c166e91e299ff8f054aefa7b Mon Sep 17 00:00:00 2001 From: Brandon Hu <103440971+Brandon-Huu@users.noreply.github.com> Date: Sun, 7 Jul 2024 14:23:03 +0000 Subject: [PATCH 24/29] fix(hardsuits): Give the carp suit and hardsuit a suit storage slot (#29322) * fix(hardsuits): Give the carp hardsuit suit storage * Both carpsuits have suit slots --- Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 79c116b3ca..2053ced0f6 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -246,6 +246,7 @@ name: carp suit description: A special suit that makes you look just like a space carp, if your eyesight is bad. components: + - type: AllowSuitStorage - type: Sprite sprite: Clothing/OuterClothing/Suits/carpsuit.rsi - type: Item From ff93070d25579278e2c93b0a9aef9a0a623d6fbd Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 7 Jul 2024 14:23:44 +0000 Subject: [PATCH 25/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 70c1904899..8b060381ad 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: TokenStyle - changes: - - message: Benzene is no longer required for the Insuzine recipe. - type: Tweak - id: 6380 - time: '2024-04-18T03:03:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26829 -- author: Golinth - changes: - - message: The Nukie Agent now comes with a medihud built into their visor! - type: Add - id: 6381 - time: '2024-04-18T03:04:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26218 - author: Krunk changes: - message: Cyborgs no longer see criminal status icons. @@ -3821,3 +3807,18 @@ id: 6879 time: '2024-07-07T14:19:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29580 +- author: Vermidia + changes: + - message: Some drink reactions now require shaking with the shaker or stirring + with a spoon + type: Add + id: 6880 + time: '2024-07-07T14:21:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29243 +- author: Dezzzix + changes: + - message: Now you can slice food with swords + type: Add + id: 6881 + time: '2024-07-07T14:22:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29005 From 21d0f85cc27823beda4cf4885f83f7452e468fb0 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 7 Jul 2024 10:26:58 -0400 Subject: [PATCH 26/29] metal foam grenades (#29428) * metal foam grenades * wow okay * meh * bruh * test * push --- .../Effects/AreaReactionEffect.cs | 10 ++-- .../EntitySystems/SmokeOnTriggerSystem.cs | 7 ++- Content.Server/Spreader/SpreaderSystem.cs | 17 ++++++- .../Spreader/EdgeSpreaderPrototype.cs | 6 +++ .../Tiles/ReplaceFloorOnSpawnComponent.cs | 36 +++++++++++++ .../Tiles/ReplaceFloorOnSpawnSystem.cs | 48 ++++++++++++++++++ Resources/Locale/en-US/tiles/tiles.ftl | 3 +- .../Catalog/Cargo/cargo_engineering.yml | 10 ++++ .../Catalog/Fills/Crates/engineering.yml | 11 ++++ .../Entities/Effects/chemistry_effects.yml | 11 +++- .../Objects/Weapons/Throwable/grenades.yml | 15 ++++++ Resources/Prototypes/Tiles/floors.yml | 17 ++++++- Resources/Prototypes/edge_spreaders.yml | 5 ++ .../Grenades/metalfoam.rsi/equipped-BELT.png | Bin 0 -> 240 bytes .../Weapons/Grenades/metalfoam.rsi/icon.png | Bin 0 -> 335 bytes .../Weapons/Grenades/metalfoam.rsi/meta.json | 27 ++++++++++ .../Weapons/Grenades/metalfoam.rsi/primed.png | Bin 0 -> 454 bytes Resources/Textures/Tiles/attributions.yml | 10 ++-- Resources/Textures/Tiles/foammetal.png | Bin 0 -> 2491 bytes 19 files changed, 219 insertions(+), 14 deletions(-) create mode 100644 Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs create mode 100644 Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs create mode 100644 Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/equipped-BELT.png create mode 100644 Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/primed.png create mode 100644 Resources/Textures/Tiles/foammetal.png diff --git a/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs b/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs index 481f1fc27c..858da2b360 100644 --- a/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs +++ b/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs @@ -1,4 +1,5 @@ using Content.Server.Fluids.EntitySystems; +using Content.Server.Spreader; using Content.Shared.Audio; using Content.Shared.Coordinates.Helpers; using Content.Shared.Database; @@ -64,16 +65,19 @@ public override void Effect(EntityEffectBaseArgs args) var transform = reagentArgs.EntityManager.GetComponent(reagentArgs.TargetEntity); var mapManager = IoCManager.Resolve(); var mapSys = reagentArgs.EntityManager.System(); - var sys = reagentArgs.EntityManager.System(); + var spreaderSys = args.EntityManager.System(); + var sys = args.EntityManager.System(); var mapCoords = sys.GetMapCoordinates(reagentArgs.TargetEntity, xform: transform); if (!mapManager.TryFindGridAt(mapCoords, out var gridUid, out var grid) || - !mapSys.TryGetTileRef(gridUid, grid, transform.Coordinates, out var tileRef) || - tileRef.Tile.IsSpace()) + !mapSys.TryGetTileRef(gridUid, grid, transform.Coordinates, out var tileRef)) { return; } + if (spreaderSys.RequiresFloorToSpread(_prototypeId) && tileRef.Tile.IsSpace()) + return; + var coords = mapSys.MapToGrid(gridUid, mapCoords); var ent = reagentArgs.EntityManager.SpawnEntity(_prototypeId, coords.SnapToGrid()); diff --git a/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs b/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs index f958373ac7..3d3c5d8563 100644 --- a/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Explosion.Components; using Content.Shared.Explosion.EntitySystems; using Content.Server.Fluids.EntitySystems; +using Content.Server.Spreader; using Content.Shared.Chemistry.Components; using Content.Shared.Coordinates.Helpers; using Content.Shared.Maps; @@ -17,6 +18,7 @@ public sealed class SmokeOnTriggerSystem : SharedSmokeOnTriggerSystem [Dependency] private readonly IMapManager _mapMan = default!; [Dependency] private readonly SmokeSystem _smoke = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly SpreaderSystem _spreader = default!; public override void Initialize() { @@ -31,11 +33,14 @@ private void OnTrigger(EntityUid uid, SmokeOnTriggerComponent comp, TriggerEvent var mapCoords = _transform.GetMapCoordinates(uid, xform); if (!_mapMan.TryFindGridAt(mapCoords, out _, out var grid) || !grid.TryGetTileRef(xform.Coordinates, out var tileRef) || - tileRef.Tile.IsSpace()) + tileRef.Tile.IsEmpty) { return; } + if (_spreader.RequiresFloorToSpread(comp.SmokePrototype.ToString()) && tileRef.Tile.IsSpace()) + return; + var coords = grid.MapToGrid(mapCoords); var ent = Spawn(comp.SmokePrototype, coords.SnapToGrid()); if (!TryComp(ent, out var smoke)) diff --git a/Content.Server/Spreader/SpreaderSystem.cs b/Content.Server/Spreader/SpreaderSystem.cs index 7de8a43d35..50f5d81183 100644 --- a/Content.Server/Spreader/SpreaderSystem.cs +++ b/Content.Server/Spreader/SpreaderSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Shuttles.Components; using Content.Shared.Atmos; +using Content.Shared.Maps; using Content.Shared.Spreader; using Content.Shared.Tag; using Robust.Shared.Collections; @@ -175,11 +176,12 @@ private void Spread(EntityUid uid, TransformComponent xform, ProtoId public void GetNeighbors(EntityUid uid, TransformComponent comp, ProtoId prototype, out ValueList<(MapGridComponent, TileRef)> freeTiles, out ValueList occupiedTiles, out ValueList neighbors) { - // TODO remove occupiedTiles -- its currently unused and just slows this method down. - DebugTools.Assert(_prototype.HasIndex(prototype)); freeTiles = []; occupiedTiles = []; neighbors = []; + // TODO remove occupiedTiles -- its currently unused and just slows this method down. + if (!_prototype.TryIndex(prototype, out var spreaderPrototype)) + return; if (!TryComp(comp.GridUid, out var grid)) return; @@ -244,6 +246,9 @@ public void GetNeighbors(EntityUid uid, TransformComponent comp, ProtoId spreader) + { + if (!_prototype.Index(spreader).TryGetComponent(out var spreaderComp, EntityManager.ComponentFactory)) + return false; + + return _prototype.Index(spreaderComp.Id).PreventSpreadOnSpaced; + } } diff --git a/Content.Shared/Spreader/EdgeSpreaderPrototype.cs b/Content.Shared/Spreader/EdgeSpreaderPrototype.cs index fee8f93a6d..33665d82b5 100644 --- a/Content.Shared/Spreader/EdgeSpreaderPrototype.cs +++ b/Content.Shared/Spreader/EdgeSpreaderPrototype.cs @@ -10,4 +10,10 @@ public sealed partial class EdgeSpreaderPrototype : IPrototype { [IdDataField] public string ID { get; } = string.Empty; [DataField(required:true)] public int UpdatesPerSecond; + + /// + /// If true, this spreader can't spread onto spaced tiles like lattice. + /// + [DataField] + public bool PreventSpreadOnSpaced = true; } diff --git a/Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs b/Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs new file mode 100644 index 0000000000..1b87082def --- /dev/null +++ b/Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs @@ -0,0 +1,36 @@ +using Content.Shared.Maps; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Tiles; + +/// +/// Replaces floor tiles around this entity when it spawns +/// +[RegisterComponent, NetworkedComponent, Access(typeof(ReplaceFloorOnSpawnSystem))] +public sealed partial class ReplaceFloorOnSpawnComponent : Component +{ + /// + /// The floor tiles that will be replaced. If null, will replace all. + /// + [DataField] + public List>? ReplaceableTiles = new(); + + /// + /// The tiles that it will replace. Randomly picked from the list. + /// + [DataField] + public List> ReplacementTiles = new(); + + /// + /// Whether or not there has to be a tile in the location to be replaced. + /// + [DataField] + public bool ReplaceSpace = true; + + /// + /// List of offsets from the base tile, used to determine which tiles will be replaced. + /// + [DataField] + public List Offsets = new() { Vector2i.Up, Vector2i.Down, Vector2i.Left, Vector2i.Right, Vector2i.Zero }; +} diff --git a/Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs b/Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs new file mode 100644 index 0000000000..818991f823 --- /dev/null +++ b/Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs @@ -0,0 +1,48 @@ +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Shared.Tiles; + +public sealed class ReplaceFloorOnSpawnSystem : EntitySystem +{ + [Dependency] private readonly ITileDefinitionManager _tile = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + var xform = Transform(ent); + if (xform.GridUid is not { } grid || !TryComp(grid, out var gridComp)) + return; + + if (ent.Comp.ReplaceableTiles != null && ent.Comp.ReplaceableTiles.Count == 0) + return; + + var tileIndices = _map.LocalToTile(grid, gridComp, xform.Coordinates); + + foreach (var offset in ent.Comp.Offsets) + { + var actualIndices = tileIndices + offset; + + if (!_map.TryGetTileRef(grid, gridComp, actualIndices, out var tile)) + continue; + + if (ent.Comp.ReplaceableTiles != null && + !tile.Tile.IsEmpty && + !ent.Comp.ReplaceableTiles.Contains(_tile[tile.Tile.TypeId].ID)) + continue; + + var tileToSet = _random.Pick(ent.Comp.ReplacementTiles); + _map.SetTile(grid, gridComp, tile.GridIndices, new Tile(_prototype.Index(tileToSet).TileId)); + } + } +} diff --git a/Resources/Locale/en-US/tiles/tiles.ftl b/Resources/Locale/en-US/tiles/tiles.ftl index e5b6810fca..35cea19f78 100644 --- a/Resources/Locale/en-US/tiles/tiles.ftl +++ b/Resources/Locale/en-US/tiles/tiles.ftl @@ -87,6 +87,7 @@ tiles-gold-tile = gold tile tiles-silver-tile = silver tile tiles-glass-floor = glass floor tiles-reinforced-glass-floor = reinforced glass floor +tiles-metal-foam = metal foam floor tiles-green-circuit-floor = green circuit floor tiles-blue-circuit-floor = blue circuit floor tiles-snow = snow @@ -126,4 +127,4 @@ tiles-mowed-astro-grass = mowed astro-grass tiles-jungle-astro-grass = jungle astro-grass tiles-astro-ice = astro-ice tiles-astro-snow = astro-snow -tiles-wood-large = large wood \ No newline at end of file +tiles-wood-large = large wood diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml index 7ca6af8451..d4e2b4c60d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml @@ -28,6 +28,16 @@ category: cargoproduct-category-name-engineering group: market +- type: cargoProduct + id: EngineeringFoamGrenade + icon: + sprite: Objects/Weapons/Grenades/metalfoam.rsi + state: icon + product: CrateEngineeringFoamGrenade + cost: 2500 + category: cargoproduct-category-name-engineering + group: market + - type: cargoProduct id: EngineeringCableBulk icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml b/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml index 26a8910c73..62d07b0bed 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml @@ -76,6 +76,17 @@ - id: CableHVStack amount: 3 +- type: entity + id: CrateEngineeringFoamGrenade + parent: CrateEngineeringSecure + name: sealant grenade crate + description: 5 metal foam sealant grenades. + components: + - type: StorageFill + contents: + - id: MetalFoamGrenade + amount: 5 + - type: entity id: CrateEngineeringCableBulk parent: CrateElectrical diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 096e88bcb6..ee300e9aea 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -101,6 +101,8 @@ state: m_foam-north - map: [ "enum.EdgeLayer.West" ] state: m_foam-west + - type: EdgeSpreader + id: MetalFoam - type: FoamVisuals animationTime: 0.6 animationState: m_foam-dissolve @@ -135,7 +137,7 @@ - type: RCDDeconstructable cost: 2 delay: 2 - fx: EffectRCDDeconstruct2 + fx: EffectRCDDeconstruct2 - type: Clickable - type: InteractionOutline - type: Sprite @@ -159,6 +161,13 @@ - type: Transform anchored: true - type: Airtight + - type: ReplaceFloorOnSpawn + replaceableTiles: + - Plating + - Lattice + - TrainLattice + replacementTiles: + - FloorMetalFoam - type: Damageable damageContainer: Inorganic damageModifierSet: Metallic diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index b1d260c327..eb382c01e5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -422,6 +422,21 @@ - ReagentId: TearGas Quantity: 50 +- type: entity + parent: SmokeGrenade + id: MetalFoamGrenade + name: metal foam grenade + description: An emergency tool used for patching up holes. Almost as good as real walls. + components: + - type: Sprite + sprite: Objects/Weapons/Grenades/metalfoam.rsi + - type: SmokeOnTrigger + duration: 10 + spreadAmount: 13 + smokePrototype: AluminiumMetalFoam + - type: StaticPrice + price: 350 + # Non-explosive "dummy" grenades to use as a distraction. - type: entity diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 602e9bc441..91b61bec09 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -201,7 +201,7 @@ collection: FootstepHull itemDrop: FloorTileItemBrassFilled heatCapacity: 10000 - + - type: tile id: FloorBrassReebe name: tiles-brass-floor-reebe @@ -1391,6 +1391,21 @@ itemDrop: SheetRGlass1 heatCapacity: 10000 +- type: tile + id: FloorMetalFoam + name: tiles-metal-foam + sprite: /Textures/Tiles/foammetal.png + variants: 1 + placementVariants: + - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepHull + itemDrop: SheetSteel1 + heatCapacity: 10000 + # Circuits - type: tile id: FloorGreenCircuit diff --git a/Resources/Prototypes/edge_spreaders.yml b/Resources/Prototypes/edge_spreaders.yml index 061932c706..c93cc02ba9 100644 --- a/Resources/Prototypes/edge_spreaders.yml +++ b/Resources/Prototypes/edge_spreaders.yml @@ -9,3 +9,8 @@ - type: edgeSpreader id: Smoke updatesPerSecond: 8 + +- type: edgeSpreader + id: MetalFoam + updatesPerSecond: 16 + preventSpreadOnSpaced: false diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/equipped-BELT.png b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/equipped-BELT.png new file mode 100644 index 0000000000000000000000000000000000000000..d3cf1cf4c9329b5e0ba25716b5eee1c78ee13068 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%KdAc};RLpsM z%aH3(fB?${*PL9|)pHIVvvbvQoFb#ScKSyxGodw2Q+s=R7qp*vmi%BZ^O*x%b_)Wv zGALgu{W~}MxRUmY*SqpVLob?~O;Pr_IMM7t`rgjB4@Gt-&lZhbk~~v%OZ?o&WwpmY z|2x&Ca|tNDG=K5?-x6(#N^+4Kk6MFFVqj?aKl!8fgfcmO-Php>+n7`SaxIyA-23z| i(HUR1^V5~j%8-*tbW(7bvhNV%u0pUXO@geCxb0bm#a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/icon.png b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a13dedfc2052c67c1346cc71dc821facda8e1cd4 GIT binary patch literal 335 zcmV-V0kHmwP)Px$2}wjjR9J=WmN9F>KorM+X)7^fE3`|<;v}7fF6~#4toAeHqt&T2^b>T~>A+Ir z5Rz&IQCuV?Q735$UG7C1g!@gm{O|qmy?gf#3`o&=USWc^Rn*?F^Jo4}eli5*vUsvGPc0XCMqik|e3mK==NEUgwsZ%PXd< zCF9YMx0h$J0qqj3vTwGQMd38b7IW-87Y7#^u=AX3F~=zi?AA43v(HKfwA;{i-9PWZ zzqO(7`$ugs*XZ%51b4s$Kwg5{XMwh;JPnmn hl}2*y{{e%+um|$mboU?%v_Jp=002ovPDHLkV1h5Fli2_O literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json new file mode 100644 index 0000000000..139eebb04d --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by EmoGarbage404", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "primed", + "delays": [ + [ + 0.2, + 0.1 + ] + ] + }, + { + "name": "equipped-BELT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/primed.png b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/primed.png new file mode 100644 index 0000000000000000000000000000000000000000..dafc378c3bca93b686e1ae223ae5c700132750d1 GIT binary patch literal 454 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 Date: Sun, 7 Jul 2024 10:27:52 -0400 Subject: [PATCH 27/29] The real AME nerf (#29587) * The real AME nerf * oh the real change * Update AmeNodeGroup.cs --- Content.Server/Ame/AmeNodeGroup.cs | 27 +++++++------------ .../Ame/EntitySystems/AmeControllerSystem.cs | 20 ++++++++++---- .../Components/AmeFuelContainerComponent.cs | 4 +-- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/Content.Server/Ame/AmeNodeGroup.cs b/Content.Server/Ame/AmeNodeGroup.cs index 40da6222d2..bb482f7726 100644 --- a/Content.Server/Ame/AmeNodeGroup.cs +++ b/Content.Server/Ame/AmeNodeGroup.cs @@ -134,22 +134,11 @@ public float InjectFuel(int fuel, out bool overloading) // The AME is being overloaded. // Note about these maths: I would assume the general idea here is to make larger engines less safe to overload. // In other words, yes, those are supposed to be CoreCount, not safeFuelLimit. - var instability = 0; var overloadVsSizeResult = fuel - CoreCount; - // fuel > safeFuelLimit: Slow damage. Can safely run at this level for burst periods if the engine is small and someone is keeping an eye on it. - if (_random.Prob(0.5f)) - instability = 1; - // overloadVsSizeResult > 5: - if (overloadVsSizeResult > 5) - instability = 3; - // overloadVsSizeResult > 10: This will explode in at most 20 injections. - if (overloadVsSizeResult > 10) - instability = 5; - - // Apply calculated instability - if (instability == 0) - return powerOutput; + var instability = overloadVsSizeResult / CoreCount; + var fuzz = _random.Next(-1, 2); // -1 to 1 + instability += fuzz; // fuzz the values a tiny bit. overloading = true; var integrityCheck = 100; @@ -179,10 +168,12 @@ public float InjectFuel(int fuel, out bool overloading) /// public float CalculatePower(int fuel, int cores) { - // Fuel is squared so more fuel vastly increases power and efficiency - // We divide by the number of cores so a larger AME is less efficient at the same fuel settings - // this results in all AMEs having the same efficiency at the same fuel-per-core setting - return 20000f * fuel * fuel / cores; + // Balanced around a single core AME with injection level 2 producing 120KW. + // Overclocking yields diminishing returns until it evens out at around 360KW. + + // The adjustment for cores make it so that a 1 core AME at 2 injections is better than a 2 core AME at 2 injections. + // However, for the relative amounts for each (1 core at 2 and 2 core at 4), more cores has more output. + return 200000f * MathF.Log10(fuel * fuel) * MathF.Pow(0.75f, cores - 1); } public int GetTotalStability() diff --git a/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs b/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs index e6abe98b95..eda9158273 100644 --- a/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs +++ b/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs @@ -274,9 +274,9 @@ public void SetInjectionAmount(EntityUid uid, int value, EntityUid? user = null, At the time of editing, players regularly "overclock" the AME and those cases require no admin attention. // Admin alert - var safeLimit = 0; + var safeLimit = int.MaxValue; if (TryGetAMENodeGroup(uid, out var group)) - safeLimit = group.CoreCount * 2; + safeLimit = group.CoreCount * 4; if (oldValue <= safeLimit && value > safeLimit) { @@ -291,10 +291,20 @@ public void SetInjectionAmount(EntityUid uid, int value, EntityUid? user = null, */ } - public void AdjustInjectionAmount(EntityUid uid, int delta, int min = 0, int max = int.MaxValue, EntityUid? user = null, AmeControllerComponent? controller = null) + public void AdjustInjectionAmount(EntityUid uid, int delta, EntityUid? user = null, AmeControllerComponent? controller = null) { - if (Resolve(uid, ref controller)) - SetInjectionAmount(uid, MathHelper.Clamp(controller.InjectionAmount + delta, min, max), user, controller); + if (!Resolve(uid, ref controller)) + return; + + var max = GetMaxInjectionAmount((uid, controller)); + SetInjectionAmount(uid, MathHelper.Clamp(controller.InjectionAmount + delta, 0, max), user, controller); + } + + public int GetMaxInjectionAmount(Entity ent) + { + if (!TryGetAMENodeGroup(ent, out var group)) + return 0; + return group.CoreCount * 8; } private void UpdateDisplay(EntityUid uid, int stability, AmeControllerComponent? controller = null, AppearanceComponent? appearance = null) diff --git a/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs b/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs index 757a3a515b..455414597e 100644 --- a/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs +++ b/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs @@ -9,11 +9,11 @@ public sealed partial class AmeFuelContainerComponent : Component /// The amount of fuel in the container. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public int FuelAmount = 1000; + public int FuelAmount = 500; /// /// The maximum fuel capacity of the container. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public int FuelCapacity = 1000; + public int FuelCapacity = 500; } From 04249e8682a2216ba5d695184d8f05a54fa34e84 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 7 Jul 2024 07:28:13 -0700 Subject: [PATCH 28/29] Removes max damage threshold on healing for hyperzine (#29712) * Removes max damage threshold for hyperzine * the description... --------- Co-authored-by: plykiya --- Resources/Locale/en-US/reagents/meta/narcotics.ftl | 2 +- Resources/Prototypes/Reagents/narcotics.yml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Resources/Locale/en-US/reagents/meta/narcotics.ftl b/Resources/Locale/en-US/reagents/meta/narcotics.ftl index b48eb03b7d..600ceffce6 100644 --- a/Resources/Locale/en-US/reagents/meta/narcotics.ftl +++ b/Resources/Locale/en-US/reagents/meta/narcotics.ftl @@ -5,7 +5,7 @@ reagent-name-ephedrine = ephedrine reagent-desc-ephedrine = A caffeinated adrenaline stimulator chemical that makes you faster and harder to knock down. Also helps combat narcolepsy at dosages over thirty, at the cost of severe nerval stress. reagent-name-stimulants = hyperzine -reagent-desc-stimulants = A chemical cocktail developed by Donk Co. that allows agents to recover from stuns faster, move more quickly, and grants a small heal while close to critical condition. Due to the complex nature of the chemical, it is much harder for the body to purge naturally. +reagent-desc-stimulants = A chemical cocktail developed by Donk Co. that allows agents to recover from stuns faster, move more quickly, and grants a small heal when you're more dead than alive. Due to the complex nature of the chemical, it is much harder for the body to purge naturally. reagent-name-experimental-stimulants = experimental stimulants reagent-desc-experimental-stimulants = A prototype version of hyperzine. Usage grants virtual immunity to stun weaponry, rapid tissue regeneration, extreme running speed by reducing lactic acid buildup, and a general feeling of euphoria. Side effects may include extreme levels of anticoagulation, tunnel vision, extreme toxin buildup in the bloodstream, and rapid liver death. Do not give to animals. diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 21d7310483..bf311f23e7 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -151,8 +151,7 @@ - !type:HealthChange conditions: - !type:TotalDamage - min: 70 - max: 120 # you've got a chance to get out of crit + min: 70 # only heals when you're more dead than alive damage: # heals at the same rate as tricordrazine, doesn't heal poison because if you OD'd I'm not giving you a safety net groups: Burn: -1 From eab93cb09ed52b2de4d9523b5ca67fc6954b2716 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 7 Jul 2024 14:29:18 +0000 Subject: [PATCH 29/29] Automatic changelog update --- Resources/Changelog/Changelog.yml | 34 ++++++++++++++++++------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8b060381ad..c1f6f5632a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: Krunk - changes: - - message: Cyborgs no longer see criminal status icons. - type: Remove - id: 6382 - time: '2024-04-18T03:20:44.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26207 -- author: ArZarLordOfMango - changes: - - message: Added autolathe recipe for beverage jug. - type: Add - id: 6383 - time: '2024-04-18T03:24:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25681 - author: superjj18 changes: - message: Emergency lighting now changes based on station alert level! @@ -3822,3 +3808,23 @@ id: 6881 time: '2024-07-07T14:22:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29005 +- author: EmoGarbage404 + changes: + - message: Changed AME power output. Lower injection amounts now produce more power + but further injections have diminishing returns. + type: Tweak + - message: Increased damage per injection overclocked AMEs. + type: Tweak + - message: Halved fuel per AME jar. + type: Tweak + id: 6882 + time: '2024-07-07T14:27:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29587 +- author: Plykiya + changes: + - message: Hyperzine's effective healing range has been changed from 70 to 120, + to anything above 70 total damage. + type: Tweak + id: 6883 + time: '2024-07-07T14:28:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29712