From 1dd0e0718cc7d45d4a06a05f257beaecc4fce37c Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 27 Apr 2024 12:35:18 +1000 Subject: [PATCH 01/89] Update submodule to 220.1.0 (#27380) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 123d0ae6acf..6e0205d1a80 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 123d0ae6acf397654c135fe2b8f5268ff80c9bcf +Subproject commit 6e0205d1a80a97122ce66bf09e0feeb3cb034c3d From cc2fa6f57e955917d68b3ec52f1d8a552292eb74 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 27 Apr 2024 15:08:50 +1000 Subject: [PATCH 02/89] Remove redundant HasUi (#27381) Doesn't fix anything but still. --- Content.Shared/UserInterface/ActivatableUISystem.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Content.Shared/UserInterface/ActivatableUISystem.cs b/Content.Shared/UserInterface/ActivatableUISystem.cs index 5d848c0fdec..452f08c094b 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.cs @@ -208,9 +208,6 @@ public void CloseAll(EntityUid uid, ActivatableUIComponent? aui = null) if (!Resolve(uid, ref aui, false)) return; - if (!_uiSystem.HasUi(uid, aui.Key)) - return; - _uiSystem.CloseUi(uid, aui.Key); } From 7d4d66887b1617e929a64d4e6fe5d6d88b5e5a58 Mon Sep 17 00:00:00 2001 From: Ty Ashley <42426760+TyAshley@users.noreply.github.com> Date: Sat, 27 Apr 2024 00:13:12 -0500 Subject: [PATCH 03/89] Persist Agent ID Job Icon between UI loads (#27379) Modified the Agent ID Card to persist the selected Job Icon between UI loads --- .../Access/UI/AgentIDCardBoundUserInterface.cs | 6 +++--- Content.Client/Access/UI/AgentIDCardWindow.xaml.cs | 6 +++++- Content.Server/Access/Systems/AgentIDCardSystem.cs | 4 ++-- Content.Shared/Access/SharedAgentIDCardSystem.cs | 10 ++++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Content.Client/Access/UI/AgentIDCardBoundUserInterface.cs b/Content.Client/Access/UI/AgentIDCardBoundUserInterface.cs index 73f18aec8d6..c3fac8cb92a 100644 --- a/Content.Client/Access/UI/AgentIDCardBoundUserInterface.cs +++ b/Content.Client/Access/UI/AgentIDCardBoundUserInterface.cs @@ -40,9 +40,9 @@ private void OnJobChanged(string newJob) SendMessage(new AgentIDCardJobChangedMessage(newJob)); } - public void OnJobIconChanged(string newJobIcon) + public void OnJobIconChanged(string newJobIconId) { - SendMessage(new AgentIDCardJobIconChangedMessage(newJobIcon)); + SendMessage(new AgentIDCardJobIconChangedMessage(newJobIconId)); } /// @@ -57,7 +57,7 @@ protected override void UpdateState(BoundUserInterfaceState state) _window.SetCurrentName(cast.CurrentName); _window.SetCurrentJob(cast.CurrentJob); - _window.SetAllowedIcons(cast.Icons); + _window.SetAllowedIcons(cast.Icons, cast.CurrentJobIconId); } protected override void Dispose(bool disposing) diff --git a/Content.Client/Access/UI/AgentIDCardWindow.xaml.cs b/Content.Client/Access/UI/AgentIDCardWindow.xaml.cs index beca0c41ba9..9a38c0c4853 100644 --- a/Content.Client/Access/UI/AgentIDCardWindow.xaml.cs +++ b/Content.Client/Access/UI/AgentIDCardWindow.xaml.cs @@ -38,7 +38,7 @@ public AgentIDCardWindow(AgentIDCardBoundUserInterface bui) JobLineEdit.OnFocusExit += e => OnJobChanged?.Invoke(e.Text); } - public void SetAllowedIcons(HashSet icons) + public void SetAllowedIcons(HashSet icons, string currentJobIconId) { IconGrid.DisposeAllChildren(); @@ -79,6 +79,10 @@ public void SetAllowedIcons(HashSet icons) jobIconButton.AddChild(jobIconTexture); jobIconButton.OnPressed += _ => _bui.OnJobIconChanged(jobIcon.ID); IconGrid.AddChild(jobIconButton); + + if (jobIconId.Equals(currentJobIconId)) + jobIconButton.Pressed = true; + i++; } } diff --git a/Content.Server/Access/Systems/AgentIDCardSystem.cs b/Content.Server/Access/Systems/AgentIDCardSystem.cs index 2c4425ec105..d5e9dc357dd 100644 --- a/Content.Server/Access/Systems/AgentIDCardSystem.cs +++ b/Content.Server/Access/Systems/AgentIDCardSystem.cs @@ -67,7 +67,7 @@ private void AfterUIOpen(EntityUid uid, AgentIDCardComponent component, AfterAct if (!TryComp(uid, out var idCard)) return; - var state = new AgentIDCardBoundUserInterfaceState(idCard.FullName ?? "", idCard.JobTitle ?? "", component.Icons); + var state = new AgentIDCardBoundUserInterfaceState(idCard.FullName ?? "", idCard.JobTitle ?? "", idCard.JobIcon ?? "", component.Icons); _uiSystem.SetUiState(uid, AgentIDCardUiKey.Key, state); } @@ -94,7 +94,7 @@ private void OnJobIconChanged(EntityUid uid, AgentIDCardComponent comp, AgentIDC return; } - if (!_prototypeManager.TryIndex(args.JobIcon, out var jobIcon)) + if (!_prototypeManager.TryIndex(args.JobIconId, out var jobIcon)) { return; } diff --git a/Content.Shared/Access/SharedAgentIDCardSystem.cs b/Content.Shared/Access/SharedAgentIDCardSystem.cs index ef6690cc356..d027a3937f5 100644 --- a/Content.Shared/Access/SharedAgentIDCardSystem.cs +++ b/Content.Shared/Access/SharedAgentIDCardSystem.cs @@ -26,12 +26,14 @@ public sealed class AgentIDCardBoundUserInterfaceState : BoundUserInterfaceState public readonly HashSet Icons; public string CurrentName { get; } public string CurrentJob { get; } + public string CurrentJobIconId { get; } - public AgentIDCardBoundUserInterfaceState(string currentName, string currentJob, HashSet icons) + public AgentIDCardBoundUserInterfaceState(string currentName, string currentJob, string currentJobIconId, HashSet icons) { Icons = icons; CurrentName = currentName; CurrentJob = currentJob; + CurrentJobIconId = currentJobIconId; } } @@ -60,11 +62,11 @@ public AgentIDCardJobChangedMessage(string job) [Serializable, NetSerializable] public sealed class AgentIDCardJobIconChangedMessage : BoundUserInterfaceMessage { - public string JobIcon { get; } + public string JobIconId { get; } - public AgentIDCardJobIconChangedMessage(string jobIcon) + public AgentIDCardJobIconChangedMessage(string jobIconId) { - JobIcon = jobIcon; + JobIconId = jobIconId; } } } From 46d6bf18a830dde81530f4bdea73839ee77fd965 Mon Sep 17 00:00:00 2001 From: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Date: Fri, 26 Apr 2024 22:13:24 -0700 Subject: [PATCH 04/89] Add test for failing and then successfully starting a round (#27375) * Add test for failing and then successfully starting nukeops preset * Make test independent from nukeops * Fix nullable error --- .../Tests/GameRules/FailAndStartPresetTest.cs | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs diff --git a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs new file mode 100644 index 00000000000..1fed226beee --- /dev/null +++ b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs @@ -0,0 +1,152 @@ +#nullable enable +using Content.Server.GameTicking; +using Content.Server.GameTicking.Components; +using Content.Server.GameTicking.Presets; +using Content.Shared.CCVar; +using Content.Shared.GameTicking; +using Robust.Shared.GameObjects; + +namespace Content.IntegrationTests.Tests.GameRules; + +[TestFixture] +public sealed class FailAndStartPresetTest +{ + [TestPrototypes] + private const string Prototypes = @" +- type: gamePreset + id: TestPreset + alias: + - nukeops + name: Test Preset + description: """" + showInVote: false + rules: + - TestRule + +- type: gamePreset + id: TestPresetTenPlayers + alias: + - nukeops + name: Test Preset 10 players + description: """" + showInVote: false + rules: + - TestRuleTenPlayers + +- type: entity + id: TestRule + parent: BaseGameRule + noSpawn: true + components: + - type: GameRule + minPlayers: 0 + - type: TestRule + +- type: entity + id: TestRuleTenPlayers + parent: BaseGameRule + noSpawn: true + components: + - type: GameRule + minPlayers: 10 + - type: TestRule +"; + + /// + /// Test that a nuke ops gamemode can start after failing to start once. + /// + [Test] + public async Task FailAndStartTest() + { + await using var pair = await PoolManager.GetServerClient(new PoolSettings + { + Dirty = true, + DummyTicker = false, + Connected = true, + InLobby = true + }); + + var server = pair.Server; + var client = pair.Client; + var entMan = server.EntMan; + var ticker = server.System(); + server.System().Run = true; + + Assert.That(server.CfgMan.GetCVar(CCVars.GridFill), Is.False); + Assert.That(server.CfgMan.GetCVar(CCVars.GameLobbyFallbackEnabled), Is.True); + Assert.That(server.CfgMan.GetCVar(CCVars.GameLobbyDefaultPreset), Is.EqualTo("secret")); + server.CfgMan.SetCVar(CCVars.GridFill, true); + server.CfgMan.SetCVar(CCVars.GameLobbyFallbackEnabled, false); + server.CfgMan.SetCVar(CCVars.GameLobbyDefaultPreset, "TestPreset"); + + // Initially in the lobby + Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); + Assert.That(client.AttachedEntity, Is.Null); + Assert.That(ticker.PlayerGameStatuses[client.User!.Value], Is.EqualTo(PlayerGameStatus.NotReadyToPlay)); + + // Try to start nukeops without readying up + await pair.WaitCommand("setgamepreset TestPresetTenPlayers"); + await pair.WaitCommand("startround"); + await pair.RunTicksSync(10); + + // Game should not have started + Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); + Assert.That(ticker.PlayerGameStatuses[client.User!.Value], Is.EqualTo(PlayerGameStatus.NotReadyToPlay)); + Assert.That(!client.EntMan.EntityExists(client.AttachedEntity)); + var player = pair.Player!.AttachedEntity; + Assert.That(!entMan.EntityExists(player)); + + // Ready up and start nukeops + await pair.WaitClientCommand("toggleready True"); + Assert.That(ticker.PlayerGameStatuses[client.User!.Value], Is.EqualTo(PlayerGameStatus.ReadyToPlay)); + await pair.WaitCommand("setgamepreset TestPreset"); + await pair.WaitCommand("startround"); + await pair.RunTicksSync(10); + + // Game should have started + Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.InRound)); + Assert.That(ticker.PlayerGameStatuses[client.User!.Value], Is.EqualTo(PlayerGameStatus.JoinedGame)); + Assert.That(client.EntMan.EntityExists(client.AttachedEntity)); + player = pair.Player!.AttachedEntity!.Value; + Assert.That(entMan.EntityExists(player)); + + ticker.SetGamePreset((GamePresetPrototype?)null); + server.CfgMan.SetCVar(CCVars.GridFill, false); + server.CfgMan.SetCVar(CCVars.GameLobbyFallbackEnabled, true); + server.CfgMan.SetCVar(CCVars.GameLobbyDefaultPreset, "secret"); + server.System().Run = false; + await pair.CleanReturnAsync(); + } +} + +public sealed class TestRuleSystem : EntitySystem +{ + public bool Run; + + public override void Initialize() + { + SubscribeLocalEvent(OnRoundStartAttempt); + } + + private void OnRoundStartAttempt(RoundStartAttemptEvent args) + { + if (!Run) + return; + + if (args.Forced || args.Cancelled) + return; + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out _, out _, out var gameRule)) + { + var minPlayers = gameRule.MinPlayers; + if (args.Players.Length >= minPlayers) + continue; + + args.Cancel(); + } + } +} + +[RegisterComponent] +public sealed partial class TestRuleComponent : Component; From 55177fc388e497ee70714d512b754095a13b67b2 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sat, 27 Apr 2024 01:13:39 -0400 Subject: [PATCH 05/89] Hide disposal unit "Jump inside" verb for mobs that won't fit (#27367) Hide "Jump inside" verb showing for mobs that won't fit --- .../Disposal/Unit/EntitySystems/DisposalUnitSystem.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 21e152c1035..416e0744b54 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -143,6 +143,9 @@ private void AddClimbInsideVerb(EntityUid uid, SharedDisposalUnitComponent compo return; } + if (!CanInsert(uid, component, args.User)) + return; + // Add verb to climb inside of the unit, Verb verb = new() { From bebcc70c7d4ddc305a88667a49a4b2afef3adf7c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 05:14:19 +0000 Subject: [PATCH 06/89] 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 bcd2b08f734..a18dca1d0d6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PotentiallyTom - changes: - - message: Added new covers for the medical, security, and science guidebooks - type: Add - id: 5951 - time: '2024-02-16T23:50:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25232 - author: PJB3005 changes: - message: Fix some rounding issues with complex chemical reactions. @@ -3855,3 +3848,11 @@ id: 6450 time: '2024-04-26T22:58:26.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27361 +- author: AllenTheGreat + changes: + - message: The Agent ID card will no longer reset the selected job icon between + UI loads + type: Fix + id: 6451 + time: '2024-04-27T05:13:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27379 From defb8dd941cc97e8a5584623cd5a7113b7863b31 Mon Sep 17 00:00:00 2001 From: vorkathbruh <152932728+vorkathbruh@users.noreply.github.com> Date: Fri, 26 Apr 2024 22:44:59 -0700 Subject: [PATCH 07/89] Adjusts price of SWAT crate (#27365) Adjusts price of SWAT crate in cargo_security.yml from 5500 to 7500. --- Resources/Prototypes/Catalog/Cargo/cargo_security.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml index 62942d9ea53..040efebe7a0 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml @@ -34,7 +34,7 @@ sprite: Clothing/OuterClothing/Armor/riot.rsi state: icon product: CrateSecurityRiot - cost: 5500 + cost: 7500 category: cargoproduct-category-name-security group: market From 87cd1bb0efc126ff69e861f5bf9b4d312191aeaf Mon Sep 17 00:00:00 2001 From: Vyacheslav Kovalevsky <40753025+Slava0135@users.noreply.github.com> Date: Sat, 27 Apr 2024 08:46:50 +0300 Subject: [PATCH 08/89] add cancer mouse for real (#26768) * cancer mouse * minor tweaks * less radioactive * less common * i forgor * even more rare --- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 35 +++++++++++++++++++ Resources/Prototypes/GameRules/events.yml | 4 +++ 2 files changed, 39 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index ab6afb54032..ad5b51d998d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1720,6 +1720,41 @@ Dead: Base: splat-2 +- type: entity + name: cancer mouse + description: Toxic. Squeak! + parent: MobMouse + id: MobMouseCancer + components: + - type: Sprite + color: LightGreen + - type: PointLight + color: LightGreen + radius: 5 + energy: 5 + netsync: false + - type: RadiationSource + intensity: 0.3 + - type: Bloodstream + bloodReagent: UnstableMutagen + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 3 + - ReagentId: Uranium + Quantity: 10 + - type: Butcherable + spawned: + - id: FoodMeatRat + amount: 1 + - id: SheetUranium1 + amount: 1 + - type: Damageable + damageContainer: Biological + damageModifierSet: Zombie + - type: entity name: lizard #Weh parent: SimpleMobBase diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 45519e840d7..a5777a7b4d9 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -199,6 +199,8 @@ prob: 0.02 - id: MobMouse2 prob: 0.02 + - id: MobMouseCancer + prob: 0.001 specialEntries: - id: SpawnPointGhostRatKing prob: 0.005 @@ -332,6 +334,8 @@ prob: 0.02 - id: MobMouse2 prob: 0.02 + - id: MobMouseCancer + prob: 0.001 - type: entity id: SlimesSpawn From 0215292baaa50044189ffa5176431a99942e93bd Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 27 Apr 2024 01:47:38 -0400 Subject: [PATCH 09/89] welding gas mask (#27108) * welding gas mask * eek --- .../Entities/Clothing/Masks/specific.yml | 29 +++++++++++ .../Entities/Structures/Machines/lathe.yml | 1 + .../Prototypes/Recipes/Lathes/devices.yml | 10 +++- Resources/Prototypes/Research/industrial.yml | 1 + .../welding-gas.rsi/equipped-MASK-vox.png | Bin 0 -> 693 bytes .../Mask/welding-gas.rsi/equipped-MASK.png | Bin 0 -> 599 bytes .../Clothing/Mask/welding-gas.rsi/icon-up.png | Bin 0 -> 457 bytes .../Clothing/Mask/welding-gas.rsi/icon.png | Bin 0 -> 480 bytes .../Mask/welding-gas.rsi/inhand-left.png | Bin 0 -> 553 bytes .../Mask/welding-gas.rsi/inhand-right.png | Bin 0 -> 550 bytes .../Clothing/Mask/welding-gas.rsi/meta.json | 49 ++++++++++++++++++ .../welding-gas.rsi/up-equipped-MASK-vox.png | Bin 0 -> 624 bytes .../Mask/welding-gas.rsi/up-equipped-MASK.png | Bin 0 -> 539 bytes .../Mask/welding-gas.rsi/up-inhand-left.png | Bin 0 -> 461 bytes .../Mask/welding-gas.rsi/up-inhand-right.png | Bin 0 -> 474 bytes 15 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK-vox.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/icon-up.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK-vox.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/up-inhand-left.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/up-inhand-right.png diff --git a/Resources/Prototypes/Entities/Clothing/Masks/specific.yml b/Resources/Prototypes/Entities/Clothing/Masks/specific.yml index 7f758a27d28..c3a07fa8e9d 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/specific.yml @@ -33,3 +33,32 @@ - type: HideLayerClothing slots: - Snout + +- type: entity + parent: ClothingMaskBase + id: ClothingMaskWeldingGas + name: welding gas mask + description: A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd. + components: + - type: Sprite + sprite: Clothing/Mask/welding-gas.rsi + state: icon + - type: Clothing + sprite: Clothing/Mask/welding-gas.rsi + - type: BreathMask + - type: IngestionBlocker + - type: IdentityBlocker + - type: FlashImmunity + - type: EyeProtection + - type: PhysicalComposition + materialComposition: + Steel: 200 + Glass: 100 + - type: StaticPrice + price: 100 + - type: Tag + tags: + - WhitelistChameleon + - type: HideLayerClothing + slots: + - Snout diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 9ad3214dc35..1bfb67f66a8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -287,6 +287,7 @@ - PowerCellMicroreactor - PowerCellHigh - WeaponPistolCHIMP + - ClothingMaskWeldingGas - WeaponGauntletGorilla - SynthesizerInstrument - ClothingShoesBootsMagSci diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml index 8b748f3fe5b..6a786f2b244 100644 --- a/Resources/Prototypes/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Recipes/Lathes/devices.yml @@ -76,7 +76,7 @@ Steel: 100 Plastic: 200 Glass: 100 - + - type: latheRecipe id: SignallerAdvanced result: RemoteSignallerAdvanced @@ -175,6 +175,14 @@ Plasma: 1500 Uranium: 150 +- type: latheRecipe + id: ClothingMaskWeldingGas + result: ClothingMaskWeldingGas + completetime: 3 + materials: + Steel: 600 + Glass: 200 + - type: latheRecipe id: WeaponForceGun result: WeaponForceGun diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index 30345a5dfc8..ccc6e9c0f45 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -14,6 +14,7 @@ - BorgModuleMining - OreProcessorIndustrialMachineCircuitboard - OreBagOfHolding + - ClothingMaskWeldingGas - type: technology id: AdvancedPowercells diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK-vox.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..e6028f3a4c1bc09fa3f14b022b923c168fa29317 GIT binary patch literal 693 zcmV;m0!safP)Px%Z%IT!RCt{2+P`ZeK@2b zp=Hn_9=U*Nl3w(xfSVBmS8Xr(1Kt&~o2(GYjB7yhK9#fUjI;A&2Ye3@LYQi|+q|m0 zX`N2zZdKXD7n@3%Oy+)7d7FGStw2P~%!yfNW)Kngdc91#-P=5)0U#o7Hkw_?>Wx>RO`gPkIGZ6 z4=-9RqX{q`fbn>Yp9crf-yWf7GdR1uDCa%g-rkxvWz6*9-ot7IWOF%`Juk5hJ`Eyb zr4;KR;9sp4>mXpI6cf>h9))Q!J_g@<$!+5a0035y(YV`l900&zFgSEwH*w$h{ZwKFzV9cZPLs(5M@L8Zz#=eu z(P~xG_?@*75nuQFtb>4c5O5fVyxegczVCAwhH<;s{eG%pII9eiWkkfT>%u7(kH%Od7$olbVF>(PeBP;^fh-ay zh=_NpXYivugnhuz=M&$Fas+Jh0wSr!^P*L7QmX-2%-DE1gr3bX8jXyDr$oe+N@bCM z;CXnS&jA3J-7Y4RNov7Z>lLu9*Xw17h%dWc0KiGD7UvL*MkA{>Pft$)0MGL|qIT1K zcp$|U5P7{fqZRS}_}Dmltd!#4S6A_jN74?%Z#1N>l!^z#W&mvK3L%6LLI@#*5JCtc b#9RIYrsfj`+4PE300000NkvXXu0mjf8jU@K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0a7ea70d131b8cbc7b28a80507425f50119dfb GIT binary patch literal 599 zcmV-d0;v6oP)Px%5lKWrRCt{2+C6LAKo|$`e@n@32!$BDxe+Ju)PTvFE;4v187}lYbnD`PhBGll z-8@alCORGV9Q3|trY6iyrP>vSyu1VMmNYfOpR_hjcs1Tn=(VK1Le?&@YjWPCWG_v`` z%A}OCSEG?N#@J2tBse!nER#~&vu+mva9yjx?6pg6l#o(dv)9ITtp)%%>vjw0bM6nw zn-l;bj^o96dp?K0o8eoL**w9kyRY!(b)Z^ZjO9H->oiCdBBiuSDXX*08e=wgTdvBN z=h0bal~RTC72d6U0>1C#-N^~w9v_!hDi=c7FPE42d~ty^O#z^AQ^v+7y4)mD<_46V lgNTTTh=_=Yh=}N)_7hTF>~O6xcQ60|002ovPDHLkV1ho{8At#C literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/icon-up.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/icon-up.png new file mode 100644 index 0000000000000000000000000000000000000000..352e536ca9165cbcef94f785ff9c0cefee8986c0 GIT binary patch literal 457 zcmV;)0XF`LP)Px$gGod|R9J=Wl`W3zFc5&ht{$waf--}WsK8*(P!$^V6eR||M|nX`P*&v*;Xwrk zPk~K9QB|3H!79~uH=E}~dT8^Zi9Mdb%xGX_WaPIq8S+R(LfiS}a_Mca*Mr8fwYK#> zP1D|iL@SC&u-2lrMk&>*Q&kntInp$Z4&p5~0HD)3fKm#rHOu8P+GbP$P4->RKL=rq z`LR#F@+U?KKC)l0*8ohXQvhbO832#R0|4(m0H@O_*6hD4(3ZXT9`8MMT~pWf^SePQ zg|#-S3egn+xL&WZO&e8y=-Gt-gU*aZB&?Ezzh%ksc>LCcyWNh(V!`2XcsZ}Civ51i zDoFr1XW2wVLfdGzR-pNJt0du^WfK7B+>1_86x?n%oO2XK@p9Mbp0jMy<-C)x4J0BV z&+|~0Whl!s7-NFgI%utfG3I%m=Xr=7!QOlhLTmkW+Q>tk_g)?%60$67z1wcLIOlrV z96SY^&8AiE%iwi{GyB5O#hc00000NkvXXu0mjfKDg1r literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/icon.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb8d4b7c7e914cd00178f2028ff57105208273e GIT binary patch literal 480 zcmV<60U!Q}P)Px$nn^@KR9J=Wl_8HJF%-vtY)%q_z*S%-h;CA|Uw|Mh2=>e>Oa&id)fzma{t|MA zG^f^&A4PH%m$73|gy4JPG8f& z0IG}J@6WG%yw4CqV2r_98}9W&^c$#oc>#F68v97Bmu%pDHoF>26^A=xsFVt$EaOjE zvRbXaG~s+cXD}GBTrSV{tEytLSTM>m05;Bblv0hKqj3uA4jyG08|OLz-utthqA1wy zc6je8isCF*=Wd+q+!DXZ$)?TSUS@H00005s$V$PaTW`agf##~=s?p^ta1`>{{| z^=qrh^J~rfUhfh*zR{=2p~ujOld1D@#HyMdXV*;Mvq|vLu5}gj+SjiZ-4Idzk?+Tj zt*sX`T0U09WUSZ8Hk)l*X)eLzl`8u2R@j7VQpf+=T{6Ev@!q{fn|F8r-EP~G7@?VM zA>-s8_%Av=pa1&joommZjnq8wxRZmyqObXH96y6Vo8ln@ozkTGwA588e@neIJtw>D zn={XAmdc_jt7_7x1{rZS{aHErt4wyd!snMySQs|!*tv3UX<1#Ib#n&-tO(rq-u%+Z zyA_iaCYX3i<)*LSY}lW$*7TcW_DsEomw)vcau@7vdS1z(;A>*C+3Z*UZfl8T7k9yJ z6 zv(nlY2+UslQEAif{GOBZwd(g>^K;i!y_;tquRq;e#q-h&gXSPFJ$=1`%F@=u&CD`# pvQzIB7cbZ4`XTPBzUcpH<}<5xEiM#24h60@?kEP)Px$;7LS5RCt{2+ObRHP#g#F@4?}6yTd`@K*4)MCj-I1pc&*8hxb>wxkhy8pu3Yp zrURja(cTTOf50Jy=#UPt0fmEu3~u7q<>#OYMH@Y9(q{O6AkZ}Ay)Um#mhS_Ih=_=Y zh=_=Yi0F~lTC&eU5Xks>T|Lh@b!M%##BnU$FqAY+r5lD4$8oI}VVcaJiU#t1A4j7R za5;8i71&-_K)c;Wr_-5u@4RH0d%fO^YpqtRF!Sf40i!6wzULwO*GF=Fjg{qPtbF;7 zKNlAzM=wtlMfkD4j$}B@zjIs{#+br;CN99!N(lgXo(IQu0RYAr7-MSp>jN({XFil! zDJ6-ua(HkciM67Xs_pZiQA$ZS4D;iy%!Q9YW_NE70C0JARZ_(2{X99DcLX9LA|fIp zA|fIpBBJSNttAM8dbCor-ZL;>c_-FNHw;Ui?_GsqRzd&0xq;)li28keTUx5DE`P12 zKX#l_=6kanoEYY|f#1JU01coqg75nPAXO|vQB8kb()j9Q{jyQXiQ~&?~07*qoM6N<$g7n$|DgXcg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json b/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json new file mode 100644 index 00000000000..8e9b8573250 --- /dev/null +++ b/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/6f5ca45e3ac06b30fb1957042214a888d8c01722. Inhands, worn sprites, and vox sprites created by EmoGarbage404 (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-up" + }, + { + "name": "equipped-MASK", + "directions": 4 + }, + { + "name": "up-equipped-MASK", + "directions": 4 + }, + { + "name": "equipped-MASK-vox", + "directions": 4 + }, + { + "name": "up-equipped-MASK-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "up-inhand-left", + "directions": 4 + }, + { + "name": "up-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK-vox.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..90871d7d00628e657fa43cd41161c429bcf495c0 GIT binary patch literal 624 zcmV-$0+0QPP)Px%DoI2^RCt{2+Odk_KpY0}&*R#~msmDCf}N6nt?Z61{z1HluynzGbDdA1&4HL= zxh^)^FR>GhBff;}1I!f?&)lip#Bte$@7E0>Lo)xF3FI4qh-?i819Pr@ZNuSkdaiBb zOOcyOrPAzN`!o4!dxMA=V@$5<#u$i*iK3|F_VKRIY5+vU^m;u6LGaJD@pudX?=lE$ ztsVo zjvp$OO78k{xx6?q5fO8&-)6Hp19rjaa~L*?_U|mr5E1je)q;0_4`7!cb~+sZ#Z#j! zZtM5^c-w9P0D85;&(X+P66K_mtV*pQz)iV~Mk8O4qN$NmDwj7-r&GLbw-}AbPG%QS zFdYW|Wc2_L$8qkOtC;LaKe++P&IlAa7m#tf1hQEG?3Td%^%Z)vL6Ria)e;d?uh;kI z53(iTviiUUGvIGg6qQ88jCMz5&3?EyC%>mlcf?%_FsY({*0 ze6(H`N-6W}Px$)k#D_RCt{2+OcZmKoADt|KJ|QM6AHBV%+B%yE{^BxHoaYg$hG-FJYG)c)b4_xemn9=O6T+9MQIl#*_@ zTaSyPfHCHCtUeJD5fKp)5fKp)5z)V@Q8(vuJbtLUvssp%#c>P(D9bWE$U%hd!}<%0Ilk(asCv9)y%QR9CQ~Qxws%UXK&(WmsrUqi2=PKgwq5hG_pB3Q z={}N@w6w;4#?h1qrwx8?uH;uxf`LU@J%&=Q6X%_Kof13izHD+&*NK}eHWeoKEX!Q= z+9K@z-gS>7E}N{KQY!qjtv-5p*<;1crz&_vx7>a^!E*V{j~#D*OZ%@CtNLrVX6w{V zd%o|wo!6c1|JKaRQz&b9s{*^h{PXe*8Vo#a%wK-hGBj)zyLPK)Z&27euWM&JJJQa* zJpOxk+PRe-A$75?F4qfVdaNR+v;1Z$%Ad^1@F08t`ng{%=UzL9aIKP3R)~n}_vn+k zK^>QVm^yt^Hd%CXR^5uamV~Vb1D1X?>M^vE>%aK6?7Y^|%{P4*Gj3`XZD78k!WlPj ze)iO3>kDr=Pmr$)wq;q`qSHHlV*USnzmr0K{$#7RQd%_EZ}|*)K6Z=eQn_gYg0XsH y5$nPv_U%iukczE6|NHGWjfeVtb36V`m;ZHK^5{;je|5n4VeoYIb6Mw<&;$T8GRe{a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/up-inhand-right.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/up-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..1362d990110d6d49356c5d116fdad55dc9984a75 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zr+B(JhE&XX zduyZDVFwwu5B?tlTfW(EnLHu<-*_ z)SEIZLVEIyhrbUxUcRuqU-|4OSqB$5i0?6!vO8Y5X7}~lt@AgQr6u=to!EZyxv#;o zjA^O6{Di*Vdu`=ua(dHa?v@in~!{n1J&jVQ)He5RtCH?OEsk&zm z{Aaql6hHs+>{nFr^AMM+?=Rj93&yH@8uF#C`@_u={@Ie@LF(pAjilds@8A8iW)ehz zK-*&yy^nXuuMN4L&UPy6m)Uh|E1%ivY;~*l%r4p>eTUb0_E`hD{{36mbRTtM%#dDN z80u>;keRYJKHq^u_}6!VX955JiKm+WJ^uUm|G9x2`pWNX4R=-WZ;8At|5u{3!|u-g z$BA1HeR;%m`Lwsi^C(*bMI|e#-mceg%WmJ8wbg9FS_2oC*xxK$>?Hq(?}!uxMizso LtDnm{r-UW|_#4;7 literal 0 HcmV?d00001 From f898e72e575942bd8312c6c4ac8e5a634fa8e897 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 05:48:44 +0000 Subject: [PATCH 10/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a18dca1d0d6..fe0784a26b5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fix some rounding issues with complex chemical reactions. - type: Fix - id: 5952 - time: '2024-02-16T23:54:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25199 -- author: data_redacted - changes: - - message: New lobby art (of an Air Alarm blueprint). - type: Add - id: 5953 - time: '2024-02-17T02:52:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25179 - author: Lank changes: - message: Diona nymphs, small cat-like creatures, several of which make up a Diona. @@ -3856,3 +3842,17 @@ id: 6451 time: '2024-04-27T05:13:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27379 +- author: Slava0135 + changes: + - message: added cancer mouse! (for real this time) + type: Add + id: 6452 + time: '2024-04-27T05:46:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26768 +- author: EmoGarbage404 + changes: + - message: Added the welding gas mask to salvage equipment research. + type: Add + id: 6453 + time: '2024-04-27T05:47:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27108 From 36abf1d9ba67ab26c648ae278d6cc80b74691ccc Mon Sep 17 00:00:00 2001 From: Vigers Ray <60344369+VigersRay@users.noreply.github.com> Date: Sat, 27 Apr 2024 08:58:09 +0300 Subject: [PATCH 11/89] Fix stupid NPC. (#26868) * init commit * Review --------- Co-authored-by: metalgearsloth --- .../Preconditions/InContainerPrecondition.cs | 27 ++++ .../Operators/Combat/ContainerOperator.cs | 40 +++++ .../Operators/Combat/EscapeOperator.cs | 140 ++++++++++++++++++ .../Operators/Combat/UnPullOperator.cs | 35 +++++ .../Operators/Combat/UnbuckleOperator.cs | 34 +++++ Resources/Prototypes/NPCs/Combat/melee.yml | 38 +++++ 6 files changed, 314 insertions(+) create mode 100644 Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs create mode 100644 Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs create mode 100644 Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs create mode 100644 Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnPullOperator.cs create mode 100644 Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnbuckleOperator.cs diff --git a/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs new file mode 100644 index 00000000000..aa0ad98edec --- /dev/null +++ b/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs @@ -0,0 +1,27 @@ +using Robust.Server.Containers; + +namespace Content.Server.NPC.HTN.Preconditions; + +/// +/// Checks if the owner in container or not +/// +public sealed partial class InContainerPrecondition : HTNPrecondition +{ + private ContainerSystem _container = default!; + + [ViewVariables(VVAccess.ReadWrite)] [DataField("isInContainer")] public bool IsInContainer = true; + + public override void Initialize(IEntitySystemManager sysManager) + { + base.Initialize(sysManager); + _container = sysManager.GetEntitySystem(); + } + + public override bool IsMet(NPCBlackboard blackboard) + { + var owner = blackboard.GetValue(NPCBlackboard.Owner); + + return IsInContainer && _container.IsEntityInContainer(owner) || + !IsInContainer && !_container.IsEntityInContainer(owner); + } +} diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs new file mode 100644 index 00000000000..667d0b8ec40 --- /dev/null +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs @@ -0,0 +1,40 @@ +using Robust.Server.Containers; + +namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat; + +public sealed partial class ContainerOperator : HTNOperator +{ + [Dependency] private readonly IEntityManager _entManager = default!; + private ContainerSystem _container = default!; + private EntityQuery _transformQuery; + + [DataField("shutdownState")] + public HTNPlanState ShutdownState { get; private set; } = HTNPlanState.TaskFinished; + + [DataField("targetKey", required: true)] + public string TargetKey = default!; + + public override void Initialize(IEntitySystemManager sysManager) + { + base.Initialize(sysManager); + _container = sysManager.GetEntitySystem(); + _transformQuery = _entManager.GetEntityQuery(); + } + + public override void Startup(NPCBlackboard blackboard) + { + base.Startup(blackboard); + var owner = blackboard.GetValue(NPCBlackboard.Owner); + + if (!_container.TryGetOuterContainer(owner, _transformQuery.GetComponent(owner), out var outerContainer) && outerContainer == null) + return; + + var target = outerContainer.Owner; + blackboard.SetValue(TargetKey, target); + } + + public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) + { + return HTNOperatorStatus.Finished; + } +} diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs new file mode 100644 index 00000000000..a794e1e3140 --- /dev/null +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs @@ -0,0 +1,140 @@ +using System.Threading; +using System.Threading.Tasks; +using Content.Server.NPC.Components; +using Content.Server.Storage.EntitySystems; +using Content.Shared.CombatMode; +using Robust.Server.Containers; + +namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat.Melee; + +public sealed partial class EscapeOperator : HTNOperator, IHtnConditionalShutdown +{ + [Dependency] private readonly IEntityManager _entManager = default!; + private ContainerSystem _container = default!; + private EntityStorageSystem _entityStorage = default!; + + [DataField("shutdownState")] + public HTNPlanState ShutdownState { get; private set; } = HTNPlanState.TaskFinished; + + [DataField("targetKey", required: true)] + public string TargetKey = default!; + + public override void Initialize(IEntitySystemManager sysManager) + { + base.Initialize(sysManager); + _container = sysManager.GetEntitySystem(); + _entityStorage = sysManager.GetEntitySystem(); + } + + public override void Startup(NPCBlackboard blackboard) + { + base.Startup(blackboard); + var owner = blackboard.GetValue(NPCBlackboard.Owner); + var target = blackboard.GetValue(TargetKey); + + if (_entityStorage.TryOpenStorage(owner, target)) + { + TaskShutdown(blackboard, HTNOperatorStatus.Finished); + return; + } + + var melee = _entManager.EnsureComponent(owner); + melee.MissChance = blackboard.GetValueOrDefault(NPCBlackboard.MeleeMissChance, _entManager); + melee.Target = target; + } + + public override async Task<(bool Valid, Dictionary? Effects)> Plan(NPCBlackboard blackboard, + CancellationToken cancelToken) + { + var owner = blackboard.GetValue(NPCBlackboard.Owner); + if (!blackboard.TryGetValue(TargetKey, out var target, _entManager)) + { + return (false, null); + } + + if (!_container.IsEntityInContainer(owner)) + { + return (false, null); + } + + if (_entityStorage.TryOpenStorage(owner, target)) + { + return (false, null); + } + + return (true, null); + } + + public void ConditionalShutdown(NPCBlackboard blackboard) + { + var owner = blackboard.GetValue(NPCBlackboard.Owner); + _entManager.System().SetInCombatMode(owner, false); + _entManager.RemoveComponent(owner); + blackboard.Remove(TargetKey); + } + + public override void TaskShutdown(NPCBlackboard blackboard, HTNOperatorStatus status) + { + base.TaskShutdown(blackboard, status); + + ConditionalShutdown(blackboard); + } + + public override void PlanShutdown(NPCBlackboard blackboard) + { + base.PlanShutdown(blackboard); + + ConditionalShutdown(blackboard); + } + + public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) + { + base.Update(blackboard, frameTime); + var owner = blackboard.GetValue(NPCBlackboard.Owner); + HTNOperatorStatus status; + + if (_entManager.TryGetComponent(owner, out var combat) && + blackboard.TryGetValue(TargetKey, out var target, _entManager)) + { + combat.Target = target; + + // Success + if (!_container.IsEntityInContainer(owner)) + { + status = HTNOperatorStatus.Finished; + } + else + { + if (_entityStorage.TryOpenStorage(owner, target)) + { + status = HTNOperatorStatus.Finished; + } + else + { + switch (combat.Status) + { + case CombatStatus.TargetOutOfRange: + case CombatStatus.Normal: + status = HTNOperatorStatus.Continuing; + break; + default: + status = HTNOperatorStatus.Failed; + break; + } + } + } + } + else + { + status = HTNOperatorStatus.Failed; + } + + // Mark it as finished to continue the plan. + if (status == HTNOperatorStatus.Continuing && ShutdownState == HTNPlanState.PlanFinished) + { + status = HTNOperatorStatus.Finished; + } + + return status; + } +} diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnPullOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnPullOperator.cs new file mode 100644 index 00000000000..54f422fe67d --- /dev/null +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnPullOperator.cs @@ -0,0 +1,35 @@ +using Content.Shared.Movement.Pulling.Components; +using Content.Shared.Movement.Pulling.Systems; + +namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat; + +public sealed partial class UnPullOperator : HTNOperator +{ + [Dependency] private readonly IEntityManager _entManager = default!; + private PullingSystem _pulling = default!; + + private EntityQuery _pullableQuery; + + [DataField("shutdownState")] + public HTNPlanState ShutdownState { get; private set; } = HTNPlanState.TaskFinished; + + public override void Initialize(IEntitySystemManager sysManager) + { + base.Initialize(sysManager); + _pulling = sysManager.GetEntitySystem(); + _pullableQuery = _entManager.GetEntityQuery(); + } + + public override void Startup(NPCBlackboard blackboard) + { + base.Startup(blackboard); + var owner = blackboard.GetValue(NPCBlackboard.Owner); + + _pulling.TryStopPull(owner, _pullableQuery.GetComponent(owner), owner); + } + + public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) + { + return HTNOperatorStatus.Finished; + } +} diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnbuckleOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnbuckleOperator.cs new file mode 100644 index 00000000000..207665d786f --- /dev/null +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/UnbuckleOperator.cs @@ -0,0 +1,34 @@ +using Content.Server.Buckle.Systems; +using Content.Shared.Buckle.Components; + +namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat; + +public sealed partial class UnbuckleOperator : HTNOperator +{ + [Dependency] private readonly IEntityManager _entManager = default!; + private BuckleSystem _buckle = default!; + + [DataField("shutdownState")] + public HTNPlanState ShutdownState { get; private set; } = HTNPlanState.TaskFinished; + + public override void Initialize(IEntitySystemManager sysManager) + { + base.Initialize(sysManager); + _buckle = sysManager.GetEntitySystem(); + } + + public override void Startup(NPCBlackboard blackboard) + { + base.Startup(blackboard); + var owner = blackboard.GetValue(NPCBlackboard.Owner); + if (!_entManager.TryGetComponent(owner, out var buckle) || !buckle.Buckled) + return; + + _buckle.TryUnbuckle(owner, owner, true, buckle); + } + + public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) + { + return HTNOperatorStatus.Finished; + } +} diff --git a/Resources/Prototypes/NPCs/Combat/melee.yml b/Resources/Prototypes/NPCs/Combat/melee.yml index 122875ed97a..e4b207d16e0 100644 --- a/Resources/Prototypes/NPCs/Combat/melee.yml +++ b/Resources/Prototypes/NPCs/Combat/melee.yml @@ -17,6 +17,29 @@ - !type:HTNCompoundTask task: PickupMeleeCompound + - preconditions: + - !type:BuckledPrecondition + isBuckled: true + tasks: + - !type:HTNPrimitiveTask + shutdownState: TaskFinished + operator: !type:UnbuckleOperator + + - preconditions: + - !type:InContainerPrecondition + isInContainer: true + tasks: + - !type:HTNCompoundTask + task: EscapeCompound + + - preconditions: + - !type:PulledPrecondition + isPulled: true + tasks: + - !type:HTNPrimitiveTask + shutdownState: TaskFinished + operator: !type:UnPullOperator + # Melee combat (unarmed or otherwise) - tasks: - !type:HTNPrimitiveTask @@ -101,6 +124,21 @@ proto: NearbyMeleeTargets key: Target +- type: htnCompound + id: EscapeCompound + branches: + - tasks: + - !type:HTNPrimitiveTask + shutdownState: TaskFinished + operator: !type:ContainerOperator + targetKey: Target + - !type:HTNPrimitiveTask + operator: !type:EscapeOperator + targetKey: Target + preconditions: + - !type:InContainerPrecondition + isInContainer: true + - type: htnCompound id: MeleeAttackOrderedTargetCompound branches: From b4212a08f4cb335ee723fd5f52b88223465d7a29 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 05:59:15 +0000 Subject: [PATCH 12/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fe0784a26b5..d3e2467904d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,17 +1,4 @@ Entries: -- author: Lank - changes: - - message: Diona nymphs, small cat-like creatures, several of which make up a Diona. - type: Add - - message: Diona are now able to split into three nymphs on death, and will control - one of them. The controlled nymph is able to reform into a new diona after some - time. - type: Add - - message: Diona now combust into flames upon being hit with significant heat damage. - type: Tweak - id: 5954 - time: '2024-02-17T02:54:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/24630 - author: PolterTzi changes: - message: Seeds from sampled plants now inherit the sampled plant's health to discourage @@ -3856,3 +3843,10 @@ id: 6453 time: '2024-04-27T05:47:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27108 +- author: VigersRay + changes: + - message: Angered NPC now can unbuckle, unpull and escape from containers. + type: Fix + id: 6454 + time: '2024-04-27T05:58:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26868 From 2f7d0dedbded99a8f3f538c887c3c17aaa667501 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 27 Apr 2024 08:03:58 +0200 Subject: [PATCH 13/89] Displacement map prototype (#26709) Requires https://github.com/space-wizards/RobustToolbox/pull/5023 This uses the new engine features (above) to add a displacement map shader. This allows deforming a sprite based on another sprite. Primary use case is automatically adapting human clothing sprites to different species, something we want to make species like Vox a reality. A basic example of wiring this up with Vox has been added. The system is however incredibly simple and **will** need more work by a content developer to select and toggle displacement maps when appropriate. I am leaving that to somebody else. For example right now the displacement map is applied even if a species already has custom-fit sprites for a piece of clothing, such as the grey jumpsuit for Vox. Basic Aseprite plugins to help with authoring displacement maps have also been made. --- .../Clothing/ClientClothingSystem.cs | 24 +++- .../Inventory/InventoryComponent.cs | 10 ++ .../Prototypes/Entities/Mobs/Species/vox.yml | 11 ++ Resources/Prototypes/Shaders/displacement.yml | 10 ++ .../Species/Vox/displacement.rsi/jumpsuit.png | Bin 0 -> 906 bytes .../Species/Vox/displacement.rsi/meta.json | 18 +++ Resources/Textures/Shaders/displacement.swsl | 18 +++ .../Displacement Map Flip.lua | 78 ++++++++++ .../Displacement Map Visualizer.lua | 135 ++++++++++++++++++ 9 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/Shaders/displacement.yml create mode 100644 Resources/Textures/Mobs/Species/Vox/displacement.rsi/jumpsuit.png create mode 100644 Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json create mode 100644 Resources/Textures/Shaders/displacement.swsl create mode 100644 Tools/SS14 Aseprite Plugins/Displacement Map Flip.lua create mode 100644 Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 7e78ac7d707..6d13bf4edab 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -11,6 +11,7 @@ using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; +using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.TypeSerializers.Implementations; using Robust.Shared.Utility; using static Robust.Client.GameObjects.SpriteComponent; @@ -46,6 +47,7 @@ public sealed class ClientClothingSystem : ClothingSystem }; [Dependency] private readonly IResourceCache _cache = default!; + [Dependency] private readonly ISerializationManager _serialization = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; public override void Initialize() @@ -265,6 +267,7 @@ private void RenderEquipment(EntityUid equipee, EntityUid equipment, string slot // temporary, until layer draw depths get added. Basically: a layer with the key "slot" is being used as a // bookmark to determine where in the list of layers we should insert the clothing layers. bool slotLayerExists = sprite.LayerMapTryGet(slot, out var index); + var displacementData = inventory.Displacements.GetValueOrDefault(slot); // add the new layers foreach (var (key, layerData) in ev.Layers) @@ -304,10 +307,29 @@ private void RenderEquipment(EntityUid equipee, EntityUid equipment, string slot // Sprite layer redactor when // Sprite "redactor" just a week away. if (slot == Jumpsuit) - layerData.Shader ??= "StencilDraw"; + layerData.Shader ??= inventory.JumpsuitShader; sprite.LayerSetData(index, layerData); layer.Offset += slotDef.Offset; + + if (displacementData != null) + { + var displacementKey = $"{key}-displacement"; + if (!revealedLayers.Add(displacementKey)) + { + Log.Warning($"Duplicate key for clothing visuals DISPLACEMENT: {displacementKey}."); + continue; + } + + var displacementLayer = _serialization.CreateCopy(displacementData.Layer, notNullableOverride: true); + displacementLayer.CopyToShaderParameters!.LayerKey = key; + + // Add before main layer for this item. + sprite.AddLayer(displacementLayer, index); + sprite.LayerMapSet(displacementKey, index); + + revealedLayers.Add(displacementKey); + } } RaiseLocalEvent(equipment, new EquipmentVisualsUpdatedEvent(equipee, slot, revealedLayers), true); diff --git a/Content.Shared/Inventory/InventoryComponent.cs b/Content.Shared/Inventory/InventoryComponent.cs index 2a8710f0f28..dde48a62aaa 100644 --- a/Content.Shared/Inventory/InventoryComponent.cs +++ b/Content.Shared/Inventory/InventoryComponent.cs @@ -13,6 +13,16 @@ public sealed partial class InventoryComponent : Component [DataField("speciesId")] public string? SpeciesId { get; set; } + [DataField] public string JumpsuitShader = "StencilDraw"; + [DataField] public Dictionary Displacements = []; + public SlotDefinition[] Slots = Array.Empty(); public ContainerSlot[] Containers = Array.Empty(); + + [DataDefinition] + public sealed partial class SlotDisplacementData + { + [DataField(required: true)] + public PrototypeLayerData Layer = default!; + } } diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index a271e9d0846..cbed5b79954 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -16,6 +16,17 @@ #- type: VoxAccent # Not yet coded - type: Inventory speciesId: vox + jumpsuitShader: DisplacedStencilDraw + displacements: + jumpsuit: + layer: + sprite: Mobs/Species/Vox/displacement.rsi + state: jumpsuit + copyToShaderParameters: + # Value required, provide a dummy. Gets overridden when applied. + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV - type: Speech speechVerb: Vox speechSounds: Vox diff --git a/Resources/Prototypes/Shaders/displacement.yml b/Resources/Prototypes/Shaders/displacement.yml new file mode 100644 index 00000000000..5c907380083 --- /dev/null +++ b/Resources/Prototypes/Shaders/displacement.yml @@ -0,0 +1,10 @@ +- type: shader + id: DisplacedStencilDraw + kind: source + path: "/Textures/Shaders/displacement.swsl" + stencil: + ref: 1 + op: Keep + func: NotEqual + params: + displacementSize: 127 diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/jumpsuit.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/jumpsuit.png new file mode 100644 index 0000000000000000000000000000000000000000..2c938634eb635f50d8063794b40b70cf50efb46f GIT binary patch literal 906 zcmV;519kj~P)Px&L`g(JRCt{2T3e3fAPlUc_h8&?GdJU6gZG1wkY{5EL93*sQD>USWvYz<1BU^E z2gCGspf_FtdOOe?uK>Lr=#5u^-VXG};|2JmdRuJxq|>!s1#bbKvEdx;a-{0-j!F2Kr|9PAvp{{AWv*8B&rZAL~W|9K8b zjnK_3d&c+L#n$D79sZ*fAV3lSX#@x(v4ddcOp4@x!Ujj^=HXI^L;e$_{5j$uMnEK- zKDi3>1LK@>ft?%@e0N06e}FZAuyM?0|$PRzH9m~e!BcND-ITGweu6#%OtMBpeEs(z9zlwli2>ZRi zgIjE~e#ZY}y9Pz;00Rp__(f!VHWw{^&LFT;2V)*c#y`S?Q}yRv2=#WLH(mjHJJ1`i z0KFaPjaPu)4)n$=KyL?n;}xK{1HJKh0n`LCXmUZ~#PC$9rITAk5KA!Z`46j63K6R60frV3OvRBq5eqROV5FS8I0=ea zKmh+ccV5`;TmTr)2584;2lIyZm;?n*7-xWV z8G82+7`cTGgp<3H;J5@2LIfkOz)T(dv?f?|ynO@+9EJh(DH$z1LWq7Eit!6Ko;D9EW3b5P*-5v^21r`vNL^McZMn#+vAp&n39P4}D3jkf;eR g@Z<4C(Z>t$4>*xVl;3MdQ~&?~07*qoM6N<$f}Qh~qW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json new file mode 100644 index 00000000000..6ea6c552b97 --- /dev/null +++ b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by PJB3005", + "size": { + "x": 32, + "y": 32 + }, + "load": { + "srgb": false + }, + "states": [ + { + "name": "jumpsuit", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Shaders/displacement.swsl b/Resources/Textures/Shaders/displacement.swsl new file mode 100644 index 00000000000..ba5ca57852e --- /dev/null +++ b/Resources/Textures/Shaders/displacement.swsl @@ -0,0 +1,18 @@ +uniform sampler2D displacementMap; +uniform highp float displacementSize; +uniform highp vec4 displacementUV; + +varying highp vec2 displacementUVOut; + +void vertex() { + displacementUVOut = mix(displacementUV.xy, displacementUV.zw, tCoord2); +} + +void fragment() { + highp vec4 displacementSample = texture2D(displacementMap, displacementUVOut); + highp vec2 displacementValue = (displacementSample.xy - vec2(128.0 / 255.0)) / (1.0 - 128.0 / 255.0); + COLOR = zTexture(UV + displacementValue * TEXTURE_PIXEL_SIZE * displacementSize * vec2(1.0, -1.0)); + COLOR.a *= displacementSample.a; +} + + diff --git a/Tools/SS14 Aseprite Plugins/Displacement Map Flip.lua b/Tools/SS14 Aseprite Plugins/Displacement Map Flip.lua new file mode 100644 index 00000000000..3291685071d --- /dev/null +++ b/Tools/SS14 Aseprite Plugins/Displacement Map Flip.lua @@ -0,0 +1,78 @@ +local sprite = app.editor.sprite +local cel = app.cel + +if sprite.selection.isEmpty then + print("You need to select something sorry") + return +end + +local diag = Dialog{ + title = "Flip Displacement Map" +} + +diag:check{ + id = "horizontal", + label = "flip horizontal?" +} + +diag:check{ + id = "vertical", + label = "flip vertical?" +} + +diag:button{ + text = "ok", + focus = true, + onclick = function(ev) + local horizontal = diag.data["horizontal"] + local vertical = diag.data["vertical"] + + local selection = sprite.selection + local image = cel.image:clone() + + for x = 0, selection.bounds.width do + for y = 0, selection.bounds.height do + local xSel = x + selection.origin.x + local ySel = y + selection.origin.y + + local xImg = xSel - cel.position.x + local yImg = ySel - cel.position.y + + if xImg < 0 or xImg >= image.width or yImg < 0 or yImg >= image.height then + goto continue + end + + local imgValue = image:getPixel(xImg, yImg) + local color = Color(imgValue) + + if horizontal then + color.red = 128 + -(color.red - 128) + end + + if vertical then + color.green = 128 + -(color.green - 128) + end + + image:drawPixel( + xImg, + yImg, + app.pixelColor.rgba(color.red, color.green, color.blue, color.alpha)) + + ::continue:: + end + end + + cel.image = image + + diag:close() + end +} + +diag:button{ + text = "cancel", + onclick = function(ev) + diag:close() + end +} + +diag:show() diff --git a/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua b/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua new file mode 100644 index 00000000000..b16ab797e7f --- /dev/null +++ b/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua @@ -0,0 +1,135 @@ +-- Displacement Map Visualizer +-- +-- This script will create a little preview window that will test a displacement map. +-- +-- TODO: Handling of sizes != 127 doesn't work properly and rounds differently from the real shader. Ah well. + +local scale = 4 + +-- This script requires UI +if not app.isUIAvailable then + return +end + +local getOffsetPixel = function(x, y, image, rect) + local posX = x - rect.x + local posY = y - rect.y + + if posX < 0 or posX >= image.width or posY < 0 or posY >= image.height then + return image.spec.transparentColor + end + + return image:getPixel(posX, posY) +end + +local pixelValueToColor = function(sprite, value) + return Color(value) +end + +local applyDisplacementMap = function(width, height, size, displacement, displacementRect, target, targetRect) + -- print(Color(displacement:getPixel(17, 15)).red) + local image = target:clone() + image:resize(width, height) + image:clear() + + for x = 0, width - 1 do + for y = 0, height - 1 do + local value = getOffsetPixel(x, y, displacement, displacementRect) + local color = pixelValueToColor(sprite, value) + + if color.alpha ~= 0 then + local offset_x = (color.red - 128) / 127 * size + local offset_y = (color.green - 128) / 127 * size + + local colorValue = getOffsetPixel(x + offset_x, y + offset_y, target, targetRect) + image:drawPixel(x, y, colorValue) + end + end + end + + return image +end + +local dialog = nil + +local sprite = app.editor.sprite +local spriteChanged = sprite.events:on("change", + function(ev) + dialog:repaint() + end) + +local layers = {} +for i,layer in ipairs(sprite.layers) do + table.insert(layers, 1, layer.name) +end + +local findLayer = function(sprite, name) + for i, layer in ipairs(sprite.layers) do + if layer.name == name then + return layer + end + end + + return nil +end + +dialog = Dialog{ + title = "Displacement map preview", + onclose = function(ev) + sprite.events:off(spriteChanged) + end} + +dialog:canvas{ + id = "canvas", + width = sprite.width * scale, + height = sprite.height * scale, + onpaint = function(ev) + local context = ev.context + + local layerDisplacement = findLayer(sprite, dialog.data["displacement-select"]) + local layerTarget = findLayer(sprite, dialog.data["reference-select"]) + -- print(layerDisplacement.name) + -- print(layerTarget.name) + local celDisplacement = layerDisplacement:cel(1) + local celTarget = layerTarget:cel(1) + local image = applyDisplacementMap( + sprite.width, sprite.height, + dialog.data["size"], + celDisplacement.image, celDisplacement.bounds, + celTarget.image, celTarget.bounds) + + context:drawImage(image, 0, 0, image.width, image.height, 0, 0, image.width * scale, context.width, context.height) + end +} + +dialog:combobox{ + id = "displacement-select", + label = "displacement layer", + options = layers, + onchange = function(ev) + dialog:repaint() + end +} + +dialog:combobox{ + id = "reference-select", + label = "reference layer", + options = layers, + onchange = function(ev) + dialog:repaint() + end +} + + +dialog:slider{ + id = "size", + label = "displacement size", + min = 1, + max = 127, + value = 127, + onchange = function(ev) + dialog:repaint() + end +} + +dialog:show{wait = false} From 257b04d27793b8c8853af57a9f53d361062d5d61 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Sat, 27 Apr 2024 08:04:51 +0200 Subject: [PATCH 14/89] Vox sprite rework (#26985) weh --- .../UI/HumanoidProfileEditor.xaml.cs | 26 ++++ .../Humanoid/HumanoidCharacterAppearance.cs | 6 +- Content.Shared/Humanoid/SkinColor.cs | 69 ++++++++- Resources/Prototypes/Body/Parts/vox.yml | 8 +- .../Mobs/Customization/Markings/vox_parts.yml | 145 ++++++++++++++++++ .../Prototypes/Entities/Mobs/Species/vox.yml | 43 ++++++ Resources/Prototypes/Species/vox.yml | 51 +++--- .../Effects/creampie.rsi/creampie_vox.png | Bin 0 -> 585 bytes .../Textures/Effects/creampie.rsi/meta.json | 6 +- .../Mobs/Customization/eyes.rsi/meta.json | 2 +- .../Customization/eyes.rsi/vox_eyes_s.png | Bin 125 -> 0 bytes .../Mobs/Customization/vox_parts.rsi/beak.png | Bin 0 -> 396 bytes .../Customization/vox_parts.rsi/l_arm.png | Bin 0 -> 342 bytes .../Customization/vox_parts.rsi/l_foot.png | Bin 0 -> 315 bytes .../Customization/vox_parts.rsi/l_hand.png | Bin 0 -> 349 bytes .../Customization/vox_parts.rsi/l_leg.png | Bin 0 -> 415 bytes .../Customization/vox_parts.rsi/meta.json | 55 +++++++ .../Customization/vox_parts.rsi/r_arm.png | Bin 0 -> 302 bytes .../Customization/vox_parts.rsi/r_foot.png | Bin 0 -> 305 bytes .../Customization/vox_parts.rsi/r_hand.png | Bin 0 -> 354 bytes .../Customization/vox_parts.rsi/r_leg.png | Bin 0 -> 422 bytes .../Mobs/Customization/vox_parts.rsi/tail.png | Bin 0 -> 590 bytes .../vox_parts.rsi/tail_stenciled.png | Bin 0 -> 615 bytes .../Mobs/Species/Vox/parts.rsi/eyes.png | Bin 0 -> 925 bytes .../Mobs/Species/Vox/parts.rsi/full.png | Bin 0 -> 789 bytes .../Mobs/Species/Vox/parts.rsi/groin.png | Bin 0 -> 361 bytes .../Mobs/Species/Vox/parts.rsi/groin_f.png | Bin 318 -> 0 bytes .../Mobs/Species/Vox/parts.rsi/groin_m.png | Bin 318 -> 0 bytes .../Mobs/Species/Vox/parts.rsi/head.png | Bin 0 -> 689 bytes .../Mobs/Species/Vox/parts.rsi/head_f.png | Bin 737 -> 0 bytes .../Mobs/Species/Vox/parts.rsi/head_m.png | Bin 737 -> 0 bytes .../Mobs/Species/Vox/parts.rsi/l_arm.png | Bin 385 -> 399 bytes .../Mobs/Species/Vox/parts.rsi/l_foot.png | Bin 255 -> 9030 bytes .../Mobs/Species/Vox/parts.rsi/l_hand.png | Bin 337 -> 9080 bytes .../Mobs/Species/Vox/parts.rsi/l_leg.png | Bin 596 -> 544 bytes .../Mobs/Species/Vox/parts.rsi/meta.json | 17 +- .../Mobs/Species/Vox/parts.rsi/r_arm.png | Bin 391 -> 387 bytes .../Mobs/Species/Vox/parts.rsi/r_foot.png | Bin 252 -> 9026 bytes .../Mobs/Species/Vox/parts.rsi/r_hand.png | Bin 354 -> 9085 bytes .../Mobs/Species/Vox/parts.rsi/r_leg.png | Bin 591 -> 549 bytes .../Mobs/Species/Vox/parts.rsi/torso.png | Bin 0 -> 866 bytes .../Mobs/Species/Vox/parts.rsi/torso_f.png | Bin 1038 -> 0 bytes .../Mobs/Species/Vox/parts.rsi/torso_m.png | Bin 1038 -> 0 bytes 43 files changed, 390 insertions(+), 38 deletions(-) create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml create mode 100644 Resources/Textures/Effects/creampie.rsi/creampie_vox.png delete mode 100644 Resources/Textures/Mobs/Customization/eyes.rsi/vox_eyes_s.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/beak.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/l_arm.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/l_foot.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/l_hand.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/l_leg.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/r_arm.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/r_foot.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/r_hand.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/r_leg.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png create mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/eyes.png create mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/full.png create mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/groin.png delete mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/groin_f.png delete mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/groin_m.png create mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/head.png delete mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/head_f.png delete mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/head_m.png create mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/torso.png delete mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/torso_f.png delete mode 100644 Resources/Textures/Mobs/Species/Vox/parts.rsi/torso_m.png diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs index 213eb0b6628..70b7608f6db 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs @@ -697,6 +697,20 @@ private void OnSkinColorOnValueChanged() var color = SkinColor.TintedHues(_rgbSkinColorSelector.Color); + CMarkings.CurrentSkinColor = color; + Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color)); + break; + } + case HumanoidSkinColor.VoxFeathers: + { + if (!_rgbSkinColorContainer.Visible) + { + _skinColor.Visible = false; + _rgbSkinColorContainer.Visible = true; + } + + var color = SkinColor.ClosestVoxColor(_rgbSkinColorSelector.Color); + CMarkings.CurrentSkinColor = color; Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color)); break; @@ -908,6 +922,18 @@ private void UpdateSkinColor() _rgbSkinColorSelector.Color = Profile.Appearance.SkinColor; break; } + case HumanoidSkinColor.VoxFeathers: + { + if (!_rgbSkinColorContainer.Visible) + { + _skinColor.Visible = false; + _rgbSkinColorContainer.Visible = true; + } + + _rgbSkinColorSelector.Color = SkinColor.ClosestVoxColor(Profile.Appearance.SkinColor); + + break; + } } } diff --git a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs index 44fcef9c4fa..fbbf4ecf721 100644 --- a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs +++ b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs @@ -104,7 +104,8 @@ public static HumanoidCharacterAppearance DefaultWithSpecies(string species) HumanoidSkinColor.HumanToned => Humanoid.SkinColor.HumanSkinTone(speciesPrototype.DefaultHumanSkinTone), HumanoidSkinColor.Hues => speciesPrototype.DefaultSkinTone, HumanoidSkinColor.TintedHues => Humanoid.SkinColor.TintedHues(speciesPrototype.DefaultSkinTone), - _ => Humanoid.SkinColor.ValidHumanSkinTone + HumanoidSkinColor.VoxFeathers => Humanoid.SkinColor.ClosestVoxColor(speciesPrototype.DefaultSkinTone), + _ => Humanoid.SkinColor.ValidHumanSkinTone, }; return new( @@ -166,6 +167,9 @@ public static HumanoidCharacterAppearance Random(string species, Sex sex) case HumanoidSkinColor.TintedHues: newSkinColor = Humanoid.SkinColor.ValidTintedHuesSkinTone(newSkinColor); break; + case HumanoidSkinColor.VoxFeathers: + newSkinColor = Humanoid.SkinColor.ProportionalVoxColor(newSkinColor); + break; } return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new ()); diff --git a/Content.Shared/Humanoid/SkinColor.cs b/Content.Shared/Humanoid/SkinColor.cs index 960f910a323..2dc95fcf076 100644 --- a/Content.Shared/Humanoid/SkinColor.cs +++ b/Content.Shared/Humanoid/SkinColor.cs @@ -1,3 +1,6 @@ +using System.Security.Cryptography; +using Microsoft.VisualBasic.CompilerServices; + namespace Content.Shared.Humanoid; public static class SkinColor @@ -7,6 +10,13 @@ public static class SkinColor public const float MinHuesLightness = 0.175f; + public const float MinFeathersHue = 29f / 360; + public const float MaxFeathersHue = 174f / 360; + public const float MinFeathersSaturation = 20f / 100; + public const float MaxFeathersSaturation = 88f / 100; + public const float MinFeathersValue = 36f / 100; + public const float MaxFeathersValue = 55f / 100; + public static Color ValidHumanSkinTone => Color.FromHsv(new Vector4(0.07f, 0.2f, 1f, 1f)); /// @@ -140,11 +150,65 @@ public static bool VerifyTintedHues(Color color) return Color.ToHsl(color).Y <= MaxTintedHuesSaturation && Color.ToHsl(color).Z >= MinTintedHuesLightness; } + /// + /// Converts a Color proportionally to the allowed vox color range. + /// Will NOT preserve the specific input color even if it is within the allowed vox color range. + /// + /// Color to convert + /// Vox feather coloration + public static Color ProportionalVoxColor(Color color) + { + var newColor = Color.ToHsv(color); + + newColor.X = newColor.X * (MaxFeathersHue - MinFeathersHue) + MinFeathersHue; + newColor.Y = newColor.Y * (MaxFeathersSaturation - MinFeathersSaturation) + MinFeathersSaturation; + newColor.Z = newColor.Z * (MaxFeathersValue - MinFeathersValue) + MinFeathersValue; + + return Color.FromHsv(newColor); + } + + // /// + // /// Ensures the input Color is within the allowed vox color range. + // /// + // /// Color to convert + // /// The same Color if it was within the allowed range, or the closest matching Color otherwise + public static Color ClosestVoxColor(Color color) + { + var hsv = Color.ToHsv(color); + + hsv.X = Math.Clamp(hsv.X, MinFeathersHue, MaxFeathersHue); + hsv.Y = Math.Clamp(hsv.Y, MinFeathersSaturation, MaxFeathersSaturation); + hsv.Z = Math.Clamp(hsv.Z, MinFeathersValue, MaxFeathersValue); + + return Color.FromHsv(hsv); + } + + /// + /// Verify if this color is a valid vox feather coloration, or not. + /// + /// The color to verify + /// True if valid, false otherwise + public static bool VerifyVoxFeathers(Color color) + { + var colorHsv = Color.ToHsv(color); + + if (colorHsv.X < MinFeathersHue || colorHsv.X > MaxFeathersHue) + return false; + + if (colorHsv.Y < MinFeathersSaturation || colorHsv.Y > MaxFeathersSaturation) + return false; + + if (colorHsv.Z < MinFeathersValue || colorHsv.Z > MaxFeathersValue) + return false; + + return true; + } + /// /// This takes in a color, and returns a color guaranteed to be above MinHuesLightness /// /// - /// Either the color as-is if it's above MinHuesLightness, or the color with luminosity increased above MinHuesLightness + /// Either the color as-is if it's above MinHuesLightness, or the color with luminosity increased above MinHuesLightness public static Color MakeHueValid(Color color) { var manipulatedColor = Color.ToHsv(color); @@ -169,6 +233,7 @@ public static bool VerifySkinColor(HumanoidSkinColor type, Color color) HumanoidSkinColor.HumanToned => VerifyHumanSkinTone(color), HumanoidSkinColor.TintedHues => VerifyTintedHues(color), HumanoidSkinColor.Hues => VerifyHues(color), + HumanoidSkinColor.VoxFeathers => VerifyVoxFeathers(color), _ => false, }; } @@ -180,6 +245,7 @@ public static Color ValidSkinTone(HumanoidSkinColor type, Color color) HumanoidSkinColor.HumanToned => ValidHumanSkinTone, HumanoidSkinColor.TintedHues => ValidTintedHuesSkinTone(color), HumanoidSkinColor.Hues => MakeHueValid(color), + HumanoidSkinColor.VoxFeathers => ClosestVoxColor(color), _ => color }; } @@ -189,5 +255,6 @@ public enum HumanoidSkinColor : byte { HumanToned, Hues, + VoxFeathers, // Vox feathers are limited to a specific color range TintedHues, //This gives a color tint to a humanoid's skin (10% saturation with full hue range). } diff --git a/Resources/Prototypes/Body/Parts/vox.yml b/Resources/Prototypes/Body/Parts/vox.yml index b163ed0864f..9f89a0c583d 100644 --- a/Resources/Prototypes/Body/Parts/vox.yml +++ b/Resources/Prototypes/Body/Parts/vox.yml @@ -33,10 +33,10 @@ components: - type: Sprite sprite: Mobs/Species/Vox/parts.rsi - state: "torso_m" + state: "torso" - type: Icon sprite: Mobs/Species/Vox/parts.rsi - state: "torso_m" + state: "torso" - type: BodyPart partType: Torso - type: Extractable @@ -54,10 +54,10 @@ components: - type: Sprite sprite: Mobs/Species/Vox/parts.rsi - state: "head_m" + state: "head" - type: Icon sprite: Mobs/Species/Vox/parts.rsi - state: "head_m" + state: "head" - type: BodyPart partType: Head vital: true diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml new file mode 100644 index 00000000000..cd3588bf546 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml @@ -0,0 +1,145 @@ +- type: marking + id: VoxBeak + bodyPart: Snout + markingCategory: Snout + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: beak + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxLArmScales + bodyPart: LArm + markingCategory: Arms + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: l_arm + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxLLegScales + bodyPart: LLeg + markingCategory: Legs + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: l_leg + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxRArmScales + bodyPart: RArm + markingCategory: Arms + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: r_arm + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxRLegScales + bodyPart: RLeg + markingCategory: Legs + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: r_leg + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxRHandScales + bodyPart: RHand + markingCategory: Arms + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: r_hand + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxLHandScales + bodyPart: LHand + markingCategory: Arms + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: l_hand + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxLFootScales + bodyPart: LFoot + markingCategory: Legs + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: l_foot + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxRFootScales + bodyPart: RFoot + markingCategory: Legs + forcedColoring: true + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: r_foot + coloring: + default: + type: + !type:SimpleColoring + color: "#937e3d" + +- type: marking + id: VoxTail + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Vox] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + # Ideally this should use the normal tail sprite and apply an actual mask over it, not just use a butchered sprite + state: tail_stenciled diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index cbed5b79954..c79947f15c4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -60,6 +60,49 @@ damage: types: Slash: 5 # Reduce? + - type: Sprite # Need to redefine the whole order to draw the tail over their gas tank + layers: + - map: [ "enum.HumanoidVisualLayers.Chest" ] + - map: [ "enum.HumanoidVisualLayers.Head" ] + - map: [ "enum.HumanoidVisualLayers.Snout" ] + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + - map: [ "enum.HumanoidVisualLayers.RArm" ] + - map: [ "enum.HumanoidVisualLayers.LArm" ] + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "jumpsuit" ] + - map: [ "enum.HumanoidVisualLayers.LFoot" ] + - map: [ "enum.HumanoidVisualLayers.RFoot" ] + - map: [ "enum.HumanoidVisualLayers.LHand" ] + - map: [ "enum.HumanoidVisualLayers.RHand" ] + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "outerClothing" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "id" ] + - map: [ "neck" ] + - map: [ "back" ] + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + - map: [ "enum.HumanoidVisualLayers.Hair" ] + - map: [ "enum.HumanoidVisualLayers.HeadSide" ] + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + - map: [ "suitstorage" ] # This is not in the default order + - map: [ "enum.HumanoidVisualLayers.Tail" ] + - map: [ "mask" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "clownedon" ] + sprite: "Effects/creampie.rsi" + state: "creampie_vox" # Not default + visible: false - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Species/vox.yml b/Resources/Prototypes/Species/vox.yml index 605087a687b..53ac4258bc2 100644 --- a/Resources/Prototypes/Species/vox.yml +++ b/Resources/Prototypes/Species/vox.yml @@ -6,18 +6,19 @@ sprites: MobVoxSprites markingLimits: MobVoxMarkingLimits dollPrototype: MobVoxDummy - skinColoration: Hues + skinColoration: VoxFeathers + defaultSkinTone: "#6c741d" maleFirstNames: names_vox femaleFirstNames: names_vox naming: First sexes: - - Unsexed - + - Unsexed - type: speciesBaseSprites id: MobVoxSprites sprites: Head: MobVoxHead + Snout: MobHumanoidAnyMarking Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking Chest: MobVoxTorso @@ -30,6 +31,7 @@ RLeg: MobVoxRLeg LFoot: MobVoxLFoot RFoot: MobVoxRFoot + Tail: MobHumanoidAnyMarking - type: markingPoints id: MobVoxMarkingLimits @@ -41,57 +43,70 @@ FacialHair: points: 1 required: false - Chest: + Head: points: 1 - required: false - Legs: - points: 2 - required: false + required: true + Snout: + points: 1 + required: true + defaultMarkings: [ VoxBeak ] Arms: - points: 2 + points: 4 + required: true + defaultMarkings: [ VoxLArmScales, VoxRArmScales, VoxRHandScales, VoxLHandScales ] + Legs: + points: 4 + required: true + defaultMarkings: [ VoxLLegScales, VoxRLegScales, VoxRFootScales, VoxLFootScales ] + Chest: + points: 1 required: false + Tail: + points: 1 + required: true + defaultMarkings: [ VoxTail ] - type: humanoidBaseSprite id: MobVoxEyes baseSprite: - sprite: Mobs/Customization/eyes.rsi - state: vox_eyes_s + sprite: Mobs/Species/Vox/parts.rsi + state: eyes - type: humanoidBaseSprite id: MobVoxHead baseSprite: sprite: Mobs/Species/Vox/parts.rsi - state: head_m + state: head - type: humanoidBaseSprite id: MobVoxHeadMale baseSprite: sprite: Mobs/Species/Vox/parts.rsi - state: head_m + state: head - type: humanoidBaseSprite id: MobVoxHeadFemale baseSprite: sprite: Mobs/Species/Vox/parts.rsi - state: head_f + state: head - type: humanoidBaseSprite id: MobVoxTorso baseSprite: sprite: Mobs/Species/Vox/parts.rsi - state: torso_m + state: torso - type: humanoidBaseSprite id: MobVoxTorsoMale baseSprite: sprite: Mobs/Species/Vox/parts.rsi - state: torso_m + state: torso - type: humanoidBaseSprite id: MobVoxTorsoFemale baseSprite: sprite: Mobs/Species/Vox/parts.rsi - state: torso_f + state: torso - type: humanoidBaseSprite id: MobVoxLLeg @@ -140,5 +155,3 @@ baseSprite: sprite: Mobs/Species/Vox/parts.rsi state: r_foot - -# diff --git a/Resources/Textures/Effects/creampie.rsi/creampie_vox.png b/Resources/Textures/Effects/creampie.rsi/creampie_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe199b0c867250a8f6829fe5e6d842c3fa3a9b9 GIT binary patch literal 585 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_s98 zo-U3d6>)E8ZS*^AAmS?Pz{II^sO<UI((ANzKh3y3d|N|*z=0*z3t?GKFf++fx2o%qx@t3 zKXmxVp0WD-T2{*j77zSL!GmeT$>)hv&wFp*YJ1N_I`p^9JHwvfuY9wQnf{`U(-eq@`V!98+HqBo6aLww%pDYT?GWV7pV0GBI%8N52yRof1 zuXIf~gMggfU9Z0kO-GB))*e2$@lZi4+m;2Kx%YGRsu`Mea=vKXXP=XFPF^`<>Qc*n zrwjJ1XILxzA=G%mR}QYL+gbNNGO?X{@aQ@nZLhbVO8%dT{FhvMwx|2k>?cVNa*tZE jyDgTe~DWM4fsWtn- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Effects/creampie.rsi/meta.json b/Resources/Textures/Effects/creampie.rsi/meta.json index 54e0cc73c2b..8db8a77945c 100644 --- a/Resources/Textures/Effects/creampie.rsi/meta.json +++ b/Resources/Textures/Effects/creampie.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0. creampie_moth by MilenVolf, creampie_arachnid by PixelTheKermit (Github)", + "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0. creampie_moth by MilenVolf, creampie_arachnid by PixelTheKermit (Github), creampie_vox by Errant", "size": { "x": 32, "y": 32 @@ -66,6 +66,10 @@ "name": "creampie_standborg", "directions": 4 }, + { + "name": "creampie_vox", + "directions": 4 + }, { "name": "creampie_xeno_crit" }, diff --git a/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json b/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json index cb94dfab3e1..78339d7b76d 100644 --- a/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "license": "CC-BY-SA-3.0","copyright": "Vox_eyes Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb and human_eyes taken from https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf", "size": {"x": 32, "y": 32}, "states": [{"name": "diona", "directions": 4}, {"name": "eyes", "directions": 4}, {"name":"no_eyes"},{"name": "vox_eyes_s", "directions": 4}]} +{"version": 1, "license": "CC-BY-SA-3.0","copyright": "human_eyes taken from https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf", "size": {"x": 32, "y": 32}, "states": [{"name": "diona", "directions": 4}, {"name": "eyes", "directions": 4}, {"name":"no_eyes"}]} diff --git a/Resources/Textures/Mobs/Customization/eyes.rsi/vox_eyes_s.png b/Resources/Textures/Mobs/Customization/eyes.rsi/vox_eyes_s.png deleted file mode 100644 index 807e9374c4577407cfb371bf954ac9c304df0d5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|%spKkLn`LH zy>*ZisEWn#cYf8|2M+}7C;eI0zLJTdPUYlkMxZhvX!vbb$H>nFW*b~B+{gd1>Ib_8 Oi0kR<=d#Wzp$P!*izAKz diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/beak.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/beak.png new file mode 100644 index 0000000000000000000000000000000000000000..23744679b68c11f339c8c5fb7ab958ab64374cf4 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_nku zPZ!6KinzD8a`{{g1R4^}s`>byiHkcvl9_WPaYsk!O~Kz2S2&if&Y#?Sqh!lxAJ;`q z4Q&ie910B$UJG9DauogH?zpf_@AQ+$7Gd%3*8c(vx7&($Ez0oUv3ujPU#FjaTDu^M zG57YqkoSM@+`W`HqcZmTWhH~-youLey(;~5T}$<*LIc=1?1UVL%)a&ZdE)1CTmya7 z9~a80^So_8^SP!=|MVrh7uQ{l89q(UEt%Z$C*68~`k8`n*LG)B-%;yambvWJ*V_Ec zf3xK~ZHtA!t($k(D`D2Mg$fzRC%os|q*MG^Y(nb#y{uabjwk}HSK9FHhwWR#7haru z*b9~hoDpVZ5pZAt52BR01_nkB zPZ!6KinzD80{NN@cp4sN+8ozAmRKfS@i6I)($raw1wxm#I)m$l78&LS@0+?@ibNEp1bO_J(uY5x&C;mg(LrEZtsb#ugt^ zXa36ad*5~8>KRPl@wYi6{Pthj?Hly@I@^Q1KWookU+)mRzLG)8g@KVpzyUYWc$nqe zxAtGRO?-D}|4gqwdHDL{cH5ciS?_SYbW_j%?Z>;# x7asjlDC56$z5Wk&*Y2h-EeJmx_|F-`X!z!8NO{HWoxp%%@O1TaS?83{1OU22BR0px|3i z7srr_xVN_s@-{gLuwFQtx1!l-$3?ci2RdiHXfT^#_{i1wNRQz~^Yl;Y-`?J93ld>u zV&M=_aA;t_%J}E7;FLx3?QPky*O$Kk9h5tD;!lm__r~XoXD-uRdS0{mMxo5A2`o-JgTe~DWM4f4q2BR01_nlc zPZ!6KinzD8PV+V!2)G7n_Xf<^yGYP#p>Wqip-Js2nyWp&eO3=#XPz@d^8CT1$DEC= z3``sf4H$$j%el{cw&m`g6Vnwgr+$3OjoSPAy6lSP>upY%FBM##;b!1>u=mF9pY4~Q zEWh#C!pZBT*ZLo&v1?^6H%(97*`HfCE$>LL{@UwrYsDAbKIYMbVF9wG30y}c>R+jC zzx{N@%Loy@lC_H#%+v3;VO_P~H%-b%*WeSA|z|-`)2+ z{Mf|VKd)IfO|)O~Jxcj?nWfEE&;Q##Mj1R3aA06$QTf24%v;9({P<57V0bZjy85}S Ib4q9e0N1yLlmGw# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/l_leg.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..1a81369838c9c41c4f6c711cbde4f8bfa42373db GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_s7J zPZ!6KinzD8F7`G#2ps$PHA!?&08c8z+z%YN2e_v=8t%Ek_HKJ2uc4)X|HT!5%oP(B z8E@X-IAgTn0S5*gL`86;iLbc*9KP<4$$}~04L{k0hdX)S+SWULc5Kq}(y%)- zp4Z%yiDx|Xu3_Ell4!lh7PCakWL*k>?<+r*Y{zdHFMIuZ*Sh~(HFp2re{emc$D|{s zzQWU9Y_0kC>ACak@9RCP?r95@b-b9dEHm(3MP13K<7-`yccw=^`yvw-n!4X?pVp=F zn^RLOZ>k%dFaELSY30=qYyNWXxAKhnHS15FVdQ&MBb@09T8wZvX%Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json new file mode 100644 index 00000000000..fd5c14b6a35 --- /dev/null +++ b/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb, modified by Bhijn, Errant and Flareguy", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "beak", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "tail", + "directions": 4 + }, + { + "name": "tail_stenciled", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/r_arm.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c70752f441f25d53b49aab5b46aec38d6efb0e GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0px^^f z7srr_xVJYQxehA`um(g|^~LD4pY)A+nsn0jmXD*xQbn~b0xzWtmVc^!l@%1k!XcpG z(7?dR1Z6auHzrEF3)DU6a_>a!)h6u(6=A2AC0}fbm`waF01!E zGb&>~vaIpL_RxKf_rJ^Ucgi-{uG~0Xyg>5!#}h%>$nGoPYGl_j%ja+7Gu;OCD}$%2 KpUXO@geCyp$ZbXd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/r_foot.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..58dbe90b09002b330fb9148128d6d17766c54029 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0px|Rq z7srr_xVJYq@-`a?um-5#HegS_u#r34;iyl}0V$RCDIFzd3ap*ae|`8{y=?as873AE z0R@K!21cxmI}Q&5jUIopi@m-ybJit`KG*xxzG$w^ot3t7RaW@A^t{aybrNlNKJCA9 zwREmhy65MZhSDF~aA)?L<+C zZMp5g%j(}gq?_EAwySb)+drrG&vSo^KU}QMHP!RJGUzXT?JaFP^=c{5y9}PLelF{r G5}E+Gqi)Xt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/r_hand.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..e433456bf22d8b5057ed855e9adb1fd6cd087f74 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_nkE zPZ!6KinzD8eEFIc1lkfWf02{%36E=;z2UKhT-)S`V=c!_R+=?GJ-#Q$XYmVj{#$1a zcz9R@92gie2oI)fw@h0$eA7_csk+~)TC1-2u;udo6RjHS7Co6du~mV=R&4$aA*VmJ zJ1WjAKhK=?<#a&hGn?~=H|hKmIX1&rPxfp1Dq~~o`t_~#MfaEXS*;iJcg122-0CdO zp2roH(|;}0blY|8KgZ&eK{e;?_c^nT7Taxm8>q>Kl z-QU;!DDY02fAn_!_oM%qlU7VRZ)JSroVoam2BR01_s6m zPZ!6KinzD80@t}1NVGk)vRqw|Y&fm)?gn1H4Lse2$fWlTk)wk}-Jy^wjx>B)$f$2EMi=DT&AXJIOU=%I7C!!>+o|>I_tMzER(tx=moN7&_|MyL+A&qQZ{^QF%gi)RU(%oW z+M+Kx>+|;4*=%OM$#=dp$kpH8=JRyI<=c$&N*6>fn0USSL*(7X|H5;g3g~%2BR01_mYu zPZ!6KinzD40{fZ_L|hAvx)pvMl>5+J`ogTlaszKfyZk10dxdvRCv*2KDVrgw+qv{{ zZqkITr*}Wc9j%C;l+n?^frj?TH-_d+I=xBe&5Zuz$t6;IW;)kgFKxDsQMf0+?@Oyd zSE1c}UKW|3HGD1SmvV1^oPFEO^Rh|itYbdwuV)wA$naV4*xgp-VmR?3Z@Y1l;yfqA z`KdS8$kd&Q`g`c;iEY|)#Va^M*j7KhIbjhaLt@!8%^y{Jr8xE}YcZ_z*!}1G@4x@| z$$rvv;IOD)z5Br0KOdDj`bEz@zw@tVyU&MG^NZ#C*_zpxGPpRf;6X}?AI|#D{I&k> z@zU6)f6KRC$X)pToLh?oFNc-q8_fl3;iq5lK4O*VyZyGT_4v~w!*$vBzfV4=z1!3& zUFxh*FlUq45kB4vPO&q#-?z_e+_jGVdcqMIo)b3bdrf=!pEv|Foj0HDE08SoNRZzp zG}QE1Tk#j+fIn08&i%cq;P`(oFV`NfBZp`4S-yFFf0xU#f*Za~Z~mLzIV1V_VqAlk zM%SSZR-W%2-`mzT%ulkO>vysxw{H2zg_l@aIF6PTC?@2$u3@U#xzo__b^jM08&Mm_ tfDg*z6|8fX9{bAmc2^rB!YYJ+Feyd4)s|(yc?wJ*44$rjF6*2UngDlf{U87U literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png new file mode 100644 index 0000000000000000000000000000000000000000..50627ac5220bfbc37e5b6f6516b5acacd1d75165 GIT binary patch literal 615 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_mZc zPZ!6KinzD49P?%DKTqIu??nMdK{Qlh&lH(8>GY5fo^>b=ON|8AE(^De?wRJ@1C$Pm$x5$;i$=g?rs!sG`euq6bJvR z%a(t<>zw2N(@`(BU8qi1cIskdnXB?mBp`Uj($8!k*?5lIoHw?4wX1C1>%VpHOXJ?& zmp0Kla?T{lLFZwE*bzS73r?{S-xW)uACy>`EmI-s&EQ!vMpl> zTOBHrJc)C|qD_xKda&tDe4)PJhh1#U@2!qa|E#4&Dnt)7n93IaxSqe;Wmmxs-=;VJ zO%9#0e0gTe~DWM4fKg#`P literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/eyes.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..5069e90b535784bff8038e848fa094a7d9b7402a GIT binary patch literal 925 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_ow- zPZ!6KinzD49J7T31&*uVToRcwS!A2Zi~y~h%|Rc7J_rSTNSi44%k&S+S80(i3NOBY zP^l6YsXDWUS8d;{W7nAu9Q0l)nYFcU)sy}{KaTGWiL;Ju5wWN{*K7W6j=gj9W5HA-P1eII zbyc?>*yw56owys+&&YgU|FFfm97AvRyNVCFjCA&&{y=+b=T2|-=ZhdHVc2`;Nxg$d_Fx< zM{ZH1O+rEJg|m*UIToGzy>I;yF|Jn6HD$Yf=lVT&3YR}P>#SO+Sn;X{i$3gJx40`| zd$rSD=D%0l{dF1Uu!PxGy%lY_dpDNr@P|W3jdOLFR@tuF_uSHJ&&g})^--n@JNJID zn|AuCx9IxadsFua2rxN0aBwgxDzLOPVB<7yX6dOHOE>>fDf4XCyCa{UJ$u$#udO zE}-bC;yhMo6Yg@E_D?@;&YnMi`P{j_t9cDSk~VrQzUcAuWM%GEzQ_JQcX`)oX4hCa z@3#GCZ`$78KG|M<|7`(>8Ti18}`p-WNy#5-0+Ubj~%iqg>`s2mD z+NvK3KGlh{sy6c;+I?Lm&A)|Ty qZ`Wk26_+HRsK6P(prBtT*LeTWD%VFdg|<~N0D-5gpUXO@geCy)s<1f# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/full.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..864a6f00376be96bbf8ad96a633fc2cd946d03c1 GIT binary patch literal 789 zcmV+w1M2*VP)Ui)`= z_Mh+{5QJPj*puQ(P%sz0co0ELLE6A#V=L6Qu}z+SUYzwM?snhXgI*k1US{6Re7`$y z-fTqv%RjC_R0RL}ojEfZ_w;eEP_9xa0l;Twj!Cmw6L(D`<&!&zwSw2{$0d%xC;3(1 z**TQZN(5KH1#ec*TN04LUPOWktX1yHiwEnX;H>D_i%6j(00`i-jiGFGOS0O3Z?XT% z5mcw51RPLEKn8me2|5BAthad}pSr^_EOhLl4M>t80t9gNwyN)>^LoUA6&-sK@vfWR zbATu}Z#>&yvfy*`73uFA+XF~QCAo7IO0#7kK_^{3BzW%u^`W%eTlYuhtlo#$8w`%XCFWOedS2co2|>{+Eruk zef!Bv+kI2D$o7IO=-3hb@F$M=JR-SN)82+_r)6hFpA_FJWDxfbNnmJ*WfJo*Xc=MqnpW{Jvx?WBiiTkZ@?lvNWN3W(revDuJ5uZjU zw+SJkfq=MI(4G0%-Fe`~9aV=+0%-|oxJILDORir(R&?yzm@Z%*k=zPsGQNDg;bQHa zY_BfKqldAr3@bWz_VEi5Zvr$GAo@RG5(GQ@+O)nTygo)G>%3(WwlXIhz&s;AfAOvW zDVJ}H%+IFh$IgDJcoVpPuVu2zub}MX7fQm%-z?v-iOsDm=^vP1_QcO8DLy{{GCObT T5beir00000NkvXXu0mjfr|)qT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/groin.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/groin.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0dd8402e5238128e894e83673e8ae369207543 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_nlH zPZ!6KinzD8Hu5$*@U$jQR@KmuXttG@qN|~iz^0)wqv^>)8LNd$EZir!{JQHRBk_Bm z%GC2c4h)Pe0$7N9945Y-&wbvrZ`az=yY|xS-~SF3ynb=(HQTNED?J}uMBUyNE&Or$ zwe=mDvvMTZZcA0Pt=sypQ^(Zve#!OHY0rPo+ojVT8k*`FsIp&w>%Mu{_1Eg0whf)V z{`IZU+fzkmamZG5SDVQfJ=%ZU{8jxW>zy154Gc_ph!5>dv&7ne{wd6>KUVfA>is#b zC0Bgy$KdJe K=d#Wzp$Py=4TF*Z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/groin_f.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/groin_f.png deleted file mode 100644 index 15c0ed8d66f08c6af2988432a3b0ed3b8628feb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 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 delta 359 zcmV-t0hs=e1AzmOBYy!%Nkl$m@Oi!b%-G7O2z_cpn&jHiI#AfyfGynlTAk=^M5Px0)Tx9ZPCb+-klGi z@{vfE%10Q6S0Y*8Igt*mvH>!y0LXm?GNaHhh5$BVnFr!4AX%oJwW%^DC3sOl@%HXq zf)@ppJL_D67hnbS`tHYu;-|xZq1^3X`kB3k$}ND^ug7|^0=C-^=-v%3FRG)*dQkuX zr^y4JY=PqS7Fne5{9^HxuG({tKw8}k8AL=xL`3v|d;*79SS2xb6Wjm*002ovPDHLk FV1oOms)+yq diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/l_foot.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/l_foot.png index d12c19cf0cbbc77e752beccc45fcb5421bec4c56..3b81ae705959d40f4b51a0dd96921574978bd437 100644 GIT binary patch literal 9030 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 delta 228 zcmX@+_MdTray`Q_PZ!6KiaBp@ZR9;O|)1cP~p{LBO%_PMasPY%@0&xyLmT~i2(*0>;o!VTGVb;g=XwGmhEfyeztwy z?YmRf+1W02_n7AP@{0TCGiUs2x4b=Oe?67qr`fsbv5uKjRCe+$%wD`Su*#;p-wtLJ z1H*wJC*if(^_zv}FUnrrn)b^w=Gx=Z&@8{5(=WKJ*1o=;?=ruF=KdB{_K)x8{1%FT XzuDrpqSeLYAOk#I{an^LB{Ts5FQ8w4 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/l_hand.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/l_hand.png index 0d1048e090b6e59e3c03f2d8182feba8b8dd5348..d321880c7b8c9203af0e9e214cf0b3602b87a610 100644 GIT binary patch literal 9080 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 JPDHLkV1j0ZkzxP< diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/l_leg.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/l_leg.png index 20eebad86061c49b8cd4d911b86d021768152ef9..918b343f98cbd48568efa1ffcf7065f5ca337965 100644 GIT binary patch delta 520 zcmcb@vVdiRayBW9fl<+4XyM<;yu&bVOe-jTULm6rWMT&~+$l z*0F46A2s2b=btBaKHynU{-?r*i|fnIbI&)oBx;;~y6H7Xcg#74%{P7YrhA7^dC$ku zwBYvVyzRnIwnm&|=sub><#}Z|w^f2o8Q;&6_zvmg8$&`>PqgomXI$Va!`J>Uds?bk zY5m`>#vPuMI-YIx`jjfl!TMx3(^)9XFyUp1)-BdR zk*}}X?!6bXnf&|jz1#nr=ZUt>`4O}Jy54p<_WL%IvKedVAHMf#JNLxTa)|{DDlUxg rZ|pgwdFa9H@}0$drZLS|{J=Z!!|%;aQZ+RUK;Y@>=d#Wzfw2hy!+PT! delta 572 zcmV-C0>k~F1k?nOBYy%LNklU<8IhqhDHIPF03bAtq z!3JE8Iu@6Vnf+%9E(HU22)ZR53Zje9DLfA344it9V!4t=^Bm%VjVP(_T}b8o*>3s0 z_kQntxBLzuA|fIpA|fIpBAQb>yIHBbrm4H&O{28|^+rL)aeqs|`1Z56E!3Qx*7^w@ zMQTn?+V%qaXG0z3{wR~S01Q!ca`MIVPlk?~$_a>Wyw@B2++cis{}QiWeuix?X!{;0 zHz1Wt;Ns#tW|4q={uTg0h!Climhh@K;PAjV`l5nzvV=_9!t$V^V_&~n9#rt|bqUX& z-a}thaCqR)$A2pjIe80|lO?#Gu8LQ=9^gD0ucMQm9AUgc*8@)8A8WapN#nXzd1p0_ z>O@3DL_|bHL_|bHQ>ix!@^8=cPI)dMM2Nlp6`4s}=${QCM5tq5GoxiP6dgY9;pn7# zqagS8SCkT`Wik{UKJMXYWM?-k*Vd9+ntr1b5Uu<8Nq=5G+`j)$Nzl@OStnp}T@}g= zXf*>P_%fV%0(}4SO4FAXC888;ZC0mFgSPSb=;Jzs2+?W=u}p`5)oKRD`S~{p5n@%A zVFh+54{nJwh7l8 zU8|0A0ySK3eE8F@#8JBw`|VFUYIls&u0+u`(S9?E?f(R#|I`n0;KVcuXV|p>0000< KMNUMnLSTYrhYC3W diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Vox/parts.rsi/meta.json index 1070da1203d..4ab06e21727 100644 --- a/Resources/Textures/Mobs/Species/Vox/parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Vox/parts.rsi/meta.json @@ -1,26 +1,25 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb, by Bhijn, Errant and Flareguy", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "groin_f", + "name": "eyes", "directions": 4 }, { - "name": "groin_m", - "directions": 4 + "name": "full" }, { - "name": "head_f", + "name": "groin", "directions": 4 }, { - "name": "head_m", + "name": "head", "directions": 4 }, { @@ -60,11 +59,7 @@ "directions": 4 }, { - "name": "torso_f", - "directions": 4 - }, - { - "name": "torso_m", + "name": "torso", "directions": 4 }, { diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/r_arm.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/r_arm.png index 0c1f703efdfb13c67b3bca21caa9bb6cd41ba72a..766cd378ea81ab4444dc9c61355d932edac80ebc 100644 GIT binary patch delta 361 zcmZo?Zf2gKT+hH+;1OBOz`!j8!i<;h*8O2%U^Mk~aSW-5dwcUBXS0Jq>qFlQaz`eM zM)bHw^eyf1tq`id(5w*Aahe87bjQHTVVBPEX z_YSK*s+VeI-rjbPd4=22g&ftNFPl{IFW@Y7t>1CGr*vAX*>S(hXW9o0c+`9^Up8I7 zEBBFh!=#+sX}i{KKKcE-@##%_UfHUwT2*DM<$HO~qu=*uhwbIMTF-Grl94ZSjta7k z2)n_of?USjZqex>H)da7wdehB1%Wlw7QfH4_MD{9rcm_KNjoV$H|}|5+0U8R)90!y zbSX`KzEkq}#n;Djx{KKYk`zT;3pf9ryx?5s^L^`HFV;D&Am_N;JYoMyi@x=hza4vx f&La7>Ah%I{a(i=ylm8M=1|aZs^>bP0l+XkKasZX{ delta 365 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 delta 225 zcmX@)_J?tTay`RgPZ!6KiaBp@ZR9;U;JI~5I%3|tVKTq?y;WU?0E6`YoC9m!p~%m?0z1?UBSS|Vsm?0 Ri9-rVyQiz4%Q~loCIFI+U8Dd2 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/r_hand.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/r_hand.png index d794c608bdafba81341f53d123f98b8e720e4c6d..98f8b376a81311c39e02b9cb18118f5529ffd35e 100644 GIT binary patch literal 9085 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 delta 328 zcmV-O0k{7BM&bgHBYy!YNkl9J)&saSjc|ZYWi%n_2YVUZJ89B0 zm`+~8J21PH1C)WKlbt%bRA;>auY)l$CeVODq5gjhB#@8idjivo2mk;80001hZ=vyZ zwG8ysIjUGK0}YLTH2Wa$LTG%QPAqZkOcry~s}dG-qmG@)bbn&Wu@Z6%5D{_gOwz4L z6em`_5t|joiIr}@@~@Lk;k_4y3q92tt6fo?$jiZ0UtlyI>d#}}{5gMLH~!nX>;nJ* z00000007{B@!a~S)P>XGJdY1XJ$H5%Bd5{@gvQs`w}IT>e#qU;Rcj@9uF>?l{xN;& z0@lgK+U->i??IP!XDJk1S9)2SF&Yomb7$J-(DoY4uXcM#k^w=d3EF6WFNYDV1B|UvK^JeqVduyysaDS00$~wra20t>^{27*}6CWfFh> zj=}`?n>F{tt5-7wEYRrM))5vp*T;g<@{oZ^pvcVIZ`I~}HTGd`VA2S?zBN*B`m3a5 zABR2@-`h*w_cG3VUdp;j$JkMzre~w#+gT?XZKj_-nzKE+dCn|%n_neXTVKodyPy44 zKe^X+-QB$O9KXzm{x1*wt?L(_|8_saw?^p?bAxy3_ASP6I+BOZgfi5ge4ev^|M!!+ zc|Bhu?|hZna^M2vv1b3fwqI4K38?O&3=EG zvy4sPcwv39-F)fk>WX_gH}7G*^g-{~-nVQyX0yMEODx|Xp>u2R4TI3ooi}D@@K!UQ z+GO(jYt=0=TLHdy=i>eMcl+=89lZCyfRk>@j7@3fMhq4AZ1S34+>qgO@}12nz&CxG uZmQtDjg_-6DBZXoG;Pje4TnZ?CjJBSzZ|oAQD)2l1fH&JelF{r5}E*Mw&2nL delta 567 zcmV-70?7TP1kVJJBYy%GNklJZQ4&q7EPtJFTAEf_lr1%4{*HV;BmJ->m^j=YD$-9&z~TN-@f;J+pFPIe zn<`c&rquet0e`&z2-LDw*r(Dproui2tf#X&Wd!bHyWdlQ&AB-De{=A{uak&~h=_=Y zh=_=YXyLWm74fg@Fy>>v6_DeMvAee_iUkecX!>&`7Dc5019taTMI3KIhQIkRbHKYq z3cxR>)vk!Nrp5l|!%Twj66y%-Y;TEs#=BVGL{PUoz<<4r9zrY~kfyjhAaDR1>$Ab= z&i0mA&WYcO84kb3QcMv3=H1IFI!A8gL1^Fr?0!$#Sl<-OIRQggp}7z7K-AzkV_aQ* zi=~+V=^VL=2BR01_ovk zPZ!6KinzD49Q%|Ed0bb!7qbiKJmA{k_(-gP*MjePLvX{9ChG%CEanNv&vZXiHh(3S zS{{6vJKD)L$Zy}@$4eF+37tBLM}_&MgV6*8RVs1gZQ1tzFLtZfUtaE>zB8t-V1PHDeQuikX; z!V(LaX=xVyE6)55Kb5p`$Jw;ayFX7@pfSToP4xZVAL}?Q=K7^hsVuXaYb}=Q;=f)n zt~T-Z%7nKczdToRkY!GryENzU#bgH;@tm{Ox7_FUCrmepUVq*E8pB@=_e1(g3>F+W z9-Nw{u`iof;C6rU+@j#c2beOH8%!B;UMW9PW0-I;qoiD-;FRyl3LCu}zqm491CfoI!8Io5uQ|G^*jCsl9r zWt-HPq9EykjruX4r{?rTiRX=Tgw0A#mR-&?Pz}uazH$Sf>Q1%eh4b$4nd>G*NzbyF zq;JRMV#KoiaMdUI&N%u+FFvZy?{L;ux8q{#3FijitDAoaeEt@0 zQ@c=l7E@7NWYR3Qo-?aid6piD{G*YV!BxP!F7WyOOHY)PADG5SBs8r(x?$z&%Jq9! k&PSwLU>g1qEct_ZTF}FT4+8|I0W%GQr>mdKI;Vst0Hoi6_W%F@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso_f.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso_f.png deleted file mode 100644 index 75bb51ed37878ba7f48261aa3929dd750f6d3a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1038 zcmV+p1o8WcP)Px&$Vo&&RCt{2n!j(`I26afaxGht1=zKWbI{_tXbkd4crrYC=$4MzI`+@#cw5G1 zyCGw6Q~!v=jb3uF5dl`40J3CTmf1liO({wp5|NPt@3SPLNxdI>d?fe?5ClOG1VIo4 z@f6;F=rfh}=Vml^OXWP)z7IoHxZ~8(vVh5(PE|ZDlP8r6A=MizAnm1 zV=(M8J_k9`VvFy=24DaAR%rs{@=s1%!U;eY0n?kcmVD(1uxtZyoaP)5$0;nka@zp_ zuibiS1Vrw3&&YDLrhwZs#WdjI7tE7Aqn?L1Z<;^<+eJX9Ew`(ov{=P){1VIo4K@bE%5ClOG#P7

N!ouCx~0EFORo`@>Z$!V)nC&+cdPCJ_d+zGlUJK*{% zFv4(?6I?8pSB+eq<{v`$cFKd=VA&TetGeZI$t22Mf#JyrfQW#}B&vKbFdDne^K2;svWWQa--YO7+1aY(`|Hx& zAlth4en8VQ;QMQMo}Fvw-j(|t3U0he!pK&jvOdMBQKa~_Sh0=oy5uWy@?T(=5IxVv zU!VW4Gy*<;`jbs25%^w&%P-UIk=<#|#^N&gK>6#dzzF6E!f;b6=&xVYvC#*4%jXVIRev)=Mc%zf`>lf*=TjAYL>-005OFzJkMrT>t<807*qo IM6N<$g7{$bMgRZ+ diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso_m.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso_m.png deleted file mode 100644 index 75bb51ed37878ba7f48261aa3929dd750f6d3a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1038 zcmV+p1o8WcP)Px&$Vo&&RCt{2n!j(`I26afaxGht1=zKWbI{_tXbkd4crrYC=$4MzI`+@#cw5G1 zyCGw6Q~!v=jb3uF5dl`40J3CTmf1liO({wp5|NPt@3SPLNxdI>d?fe?5ClOG1VIo4 z@f6;F=rfh}=Vml^OXWP)z7IoHxZ~8(vVh5(PE|ZDlP8r6A=MizAnm1 zV=(M8J_k9`VvFy=24DaAR%rs{@=s1%!U;eY0n?kcmVD(1uxtZyoaP)5$0;nka@zp_ zuibiS1Vrw3&&YDLrhwZs#WdjI7tE7Aqn?L1Z<;^<+eJX9Ew`(ov{=P){1VIo4K@bE%5ClOG#P7

N!ouCx~0EFORo`@>Z$!V)nC&+cdPCJ_d+zGlUJK*{% zFv4(?6I?8pSB+eq<{v`$cFKd=VA&TetGeZI$t22Mf#JyrfQW#}B&vKbFdDne^K2;svWWQa--YO7+1aY(`|Hx& zAlth4en8VQ;QMQMo}Fvw-j(|t3U0he!pK&jvOdMBQKa~_Sh0=oy5uWy@?T(=5IxVv zU!VW4Gy*<;`jbs25%^w&%P-UIk=<#|#^N&gK>6#dzzF6E!f;b6=&xVYvC#*4%jXVIRev)=Mc%zf`>lf*=TjAYL>-005OFzJkMrT>t<807*qo IM6N<$g7{$bMgRZ+ From 92f14648acb016fff3fe2a8b72e459566ef66f0c Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:07:26 +1000 Subject: [PATCH 15/89] Update submodule to 220.2.0 (#27385) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 6e0205d1a80..3330d961772 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 6e0205d1a80a97122ce66bf09e0feeb3cb034c3d +Subproject commit 3330d9617728534bfef313201de0327c4e7f0627 From 6eb681958be3bec1bf7798866237c0f2f79d98d2 Mon Sep 17 00:00:00 2001 From: ShadowCommander Date: Fri, 26 Apr 2024 23:28:17 -0700 Subject: [PATCH 16/89] Fix prying error when opening locked airlocks (#27386) It would try to pry the door and fail to resolve a prying component on the entity trying to open the door. --- Content.Shared/Prying/Systems/PryingSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index 5a15057f1e3..ab87585c706 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -107,7 +107,7 @@ private bool CanPry(EntityUid target, EntityUid user, out string? message, Pryin { BeforePryEvent canev; - if (comp != null || Resolve(user, ref comp)) + if (comp != null || Resolve(user, ref comp, false)) { canev = new BeforePryEvent(user, comp.PryPowered, comp.Force); } From 5ec5e5ab898ef7688dfa2ff66df7ed78bedb32be Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:30:13 +1000 Subject: [PATCH 17/89] Fix lint (#27388) --- Resources/Prototypes/NPCs/Combat/melee.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/NPCs/Combat/melee.yml b/Resources/Prototypes/NPCs/Combat/melee.yml index e4b207d16e0..b0746e56793 100644 --- a/Resources/Prototypes/NPCs/Combat/melee.yml +++ b/Resources/Prototypes/NPCs/Combat/melee.yml @@ -22,8 +22,8 @@ isBuckled: true tasks: - !type:HTNPrimitiveTask - shutdownState: TaskFinished operator: !type:UnbuckleOperator + shutdownState: TaskFinished - preconditions: - !type:InContainerPrecondition @@ -37,8 +37,8 @@ isPulled: true tasks: - !type:HTNPrimitiveTask - shutdownState: TaskFinished operator: !type:UnPullOperator + shutdownState: TaskFinished # Melee combat (unarmed or otherwise) - tasks: @@ -129,9 +129,9 @@ branches: - tasks: - !type:HTNPrimitiveTask - shutdownState: TaskFinished operator: !type:ContainerOperator targetKey: Target + shutdownState: TaskFinished - !type:HTNPrimitiveTask operator: !type:EscapeOperator targetKey: Target From 8442a9142c28917553fb35c6e63695fcbfc62fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20M=C4=99drek?= Date: Sat, 27 Apr 2024 06:30:29 +0000 Subject: [PATCH 18/89] fix: deconstruct verb on undeconstructables (#27387) Some of prototypes don't specify their deconstructTarget node, which made them show the deconstruct verb as deconstructTarget is set to "start" node by default. This patch makes attempt to check if is it even possible from current construction node to reach specified deconstructTarget. Fixes #27330 --- .../Construction/ConstructionSystem.Guided.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Content.Server/Construction/ConstructionSystem.Guided.cs b/Content.Server/Construction/ConstructionSystem.Guided.cs index fe7f9152c0b..e096bc02c31 100644 --- a/Content.Server/Construction/ConstructionSystem.Guided.cs +++ b/Content.Server/Construction/ConstructionSystem.Guided.cs @@ -41,6 +41,18 @@ private void AddDeconstructVerb(EntityUid uid, ConstructionComponent component, component.Node == component.DeconstructionNode) return; + if (!_prototypeManager.TryIndex(component.Graph, out ConstructionGraphPrototype? graph)) + return; + + if (component.DeconstructionNode == null) + return; + + if (GetCurrentNode(uid, component) is not {} currentNode) + return; + + if (graph.Path(currentNode.Name, component.DeconstructionNode) is not {} path || path.Length == 0) + return; + Verb verb = new(); //verb.Category = VerbCategories.Construction; //TODO VERBS add more construction verbs? Until then, removing construction category From de85e6d518505148b4d812df51d7830e5a840f09 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 06:31:35 +0000 Subject: [PATCH 19/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d3e2467904d..4ffc67a483e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: PolterTzi - changes: - - message: Seeds from sampled plants now inherit the sampled plant's health to discourage - excessive sampling. - type: Tweak - - message: Plants need to grow a bit before being sampled. - type: Tweak - id: 5955 - time: '2024-02-17T05:02:12.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25326 - author: Dygon changes: - message: Diona nymphs aren't deleted immediately after spawning anymore. @@ -3850,3 +3840,10 @@ id: 6454 time: '2024-04-27T05:58:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26868 +- author: Lukasz825700516 + changes: + - message: Fixed undeconstructable objects showing deconstruct verb. + type: Fix + id: 6455 + time: '2024-04-27T06:30:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27387 From 35885345c22ec407241cd2144376565f1120f0d2 Mon Sep 17 00:00:00 2001 From: nao fujiwara Date: Sat, 27 Apr 2024 05:57:35 -0400 Subject: [PATCH 20/89] tweaked the old dress sprite (#27391) # made the waistband position consistent when rotating --- .../olddress.rsi/equipped-INNERCLOTHING.png | Bin 1260 -> 1263 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/olddress.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/olddress.rsi/equipped-INNERCLOTHING.png index a300332899cb9269e5bf050ec61f8b37b016aeda..145cf97b2e5d94f09cea0a71804be0a3d92c0f94 100644 GIT binary patch delta 1230 zcmV;<1Tp*U3GWGzF@LE^L_t(|ob8%HXd_h^$N$|;LXD+Knt;JAImC5sH@l@SNF+oo zO0XIh;$fie76i+BQcy&p9xPt=&|Z4*v=TvB+BIR>Kye!oq{vW>OPheS8;W#8sl{S; zH(T0HXe-Y{c(ao@narC`QkD0+G|U^m|9`%D^WJp658!Y(9Dfdn!{KlmGBFh=k*Gk_ z#v)OHOiaa9$NtUwr&z@M&YpqS(}`LWk*Gkto=#l7B4Bnt+ms~C&S%NhD}tte-`O)@ zO+uSq@z_8Q9y~fkCbNiCDv3XeJMy^K(}`G2Krk4B+hs*+A&=oVU(^-*r1cw~q!g!6 z6BH^=F*6Cx)_=F?F+s)etz^&}2qG8^A(cuZ783wK7N_G%vu2>CujDxTnrlELDiB+F zTMk}4^2lQ}>q;}lBMrR^7cQTRaUh0srGU88_s}KDvA8+5*8M7`1Hf~;C5A} zW9?mVyR2}vZDVpej)BlG$gi#IyiEQ2AAc|g;JLczdVefMOio{C($`FY(_u&X@Cdn; zwW{N8msK+;J>TiD>oUQj-$(0Ym^mZy*S_%Zdk&4&ioLA&Me? z`t^5w|6S6w)n85j^l1^{a9Gw=>WjGzW_{i70hFEHzYq?GRgbrVdOAk+nG-;t{Xh42 z4GEeJ^?y;jCh0}jHmC>x#XgkEl3C$Y@pX5>f3eThn9MVv_RgQwOfbs_a{~TvFeP9$ z`=jRg#^%FgnQ26$_>KIj!8`+&?`GuRq9|64EiR;)4X~gUU+IelrbV#ycpvGx6nvfz zY!r9l^K@YOZU%S0T}5tX?bt6qjc_{bxc2!t`hNrG;PszJ@qWce@qP!=b19S_?=#0V zv36%B@;C$L9|7|6OLZOmyg}#xC=WsY24u`|xa5x+ehk-~`s9UE$369g7!2CsM zVk%CCMn@31@IqDXt(6I>)g2lgfv>xZxiKQV*n}%9~vD&&xK1>C2{IeFNR8Ez>^~7kT8sPs|B%`fHz)!oi!XY z&i1F!Zna=Y7?$;@7bE2{=G&HEU8*WW(SP4YOH-_9>E&0K;PszpipP|Ijm?MHDikn2 z{trwKk{qqXt$lhfz8Vli+Ki=_6`74zRUvp>h)%# zrdKEwP(D0D`4D)vnc`~Oj3h~9b8Cl4l0VGf* zl*$qaF)z=iC7`XXsoQ_kw3rj1>;%pJwncy^rRhsA1x+(n52`^msfSu`dNDKuX6Li2 z&)-QQNfI&IqH8DtJVaxgFGf5V`WG%em#VJK s?;W(XK3~`>p`_xW)qM&a4(Gqm-x>#X;BC!?r~m)}07*qoM6N<$f+s9kEC2ui delta 1227 zcmV;+1T_2a3G4}wF@L5>L_t(|ob8%XXd87L$G_c@5@TtS=D^@e9^#zsx|KSRNQhXJ zV6_b5!$H~=1j~F^CA4tyLh?W|8hyE{67#9?tlEg-}~MF{&%_G4`47D41WfL!C){NGCdm=L!-Q? zHWnJ?#p&6o>e!R4e~LzY@a!3QxNg*%2#xZhhwH}GD?ApK)>@K;g{3v|>J?s7fAH)X z&?ccnuXuR44}b0+A)QVkk%;5>;$vyt!*wGZ=Hd4T;C5M&Sk7VW%@=jWK56}iJITcf z!~}te6UQ4xmhz%)0fkXzUCSb8s){# z%8nGgc+5#-BqIlX!JD`5TE}>v4{kQM?^pX0Q3*|B{Oc96@nn( zr(d`5{daNGR)019)29UlgF!_Sh`x|1Q0wb{4j??<`wPKfP<4Adkn70Lx>0@V1dwb0 zkApo!f`4X1eAKQaUi_V&PcanRJ5)H9&=%%9XuFv|yZ0{(AM zB_O-@qvm+w!NaD^G@?=bM*h^Go&l?O)6#E25ENsnI_$Xi`F|9K2F}6bJCEZ1s*mFRE+iKdC_Or$ zj%nyF5R1i7+CPNz=}zgpo#gZRYQkmuMh>3AU@#aA27|$1Fc=I9LZf`$I{it|Om719 z8=>jhs2G_T$H0Xb6t%Z@CZtw3GBFNsZx3~E0HCu!fG|B96@x=w1cN~cf`FO1>(ZFh zVSmTSJV}po3M4B!eOU}Di-w&DD58tsJ@wfQpo4? zs2m-mas)ivN+Gq|Ou1YZ$>-MXWXo@bw{9mzxuzbET9{HB%x&#L6vdWThXJ5eDSty0 zMdY@2O^Ih(akQhOrMLfD$1<=5VlYDDv-N8sll?$CxZ4Dmp;i5DXt4E=>mE+&+<`TfJT p*5~uvC6rV=w7XA%!C?IN`5R%=b+ Date: Sat, 27 Apr 2024 03:22:10 -0700 Subject: [PATCH 21/89] Canes + Cane Blade for Syndicate Librarians (#25873) * Cane + Cane Blade * Add - type: ContainerContainer * Add another - type: ContainerContainer * Fix and add proper ContainerContainer component * Add UserInterface component * Remove Space * Stat Changes * review --------- Co-authored-by: metalgearsloth --- Resources/Audio/Items/attributions.yml | 7 ++ Resources/Audio/Items/sheath.ogg | Bin 0 -> 7529 bytes Resources/Audio/Items/unsheath.ogg | Bin 0 -> 8558 bytes .../Locale/en-US/store/uplink-catalog.ftl | 3 + .../VendingMachines/Inventories/curadrobe.yml | 1 + .../Prototypes/Catalog/uplink_catalog.yml | 19 ++++ .../Entities/Objects/Weapons/Melee/cane.yml | 97 ++++++++++++++++++ Resources/Prototypes/tags.yml | 5 + .../Weapons/Melee/cane.rsi/cane-empty.png | Bin 0 -> 564 bytes .../Objects/Weapons/Melee/cane.rsi/cane.png | Bin 0 -> 649 bytes .../Weapons/Melee/cane.rsi/inhand-left.png | Bin 0 -> 261 bytes .../Weapons/Melee/cane.rsi/inhand-right.png | Bin 0 -> 268 bytes .../Objects/Weapons/Melee/cane.rsi/meta.json | 33 ++++++ .../Melee/cane.rsi/wielded-inhand-left.png | Bin 0 -> 633 bytes .../Melee/cane.rsi/wielded-inhand-right.png | Bin 0 -> 640 bytes .../Weapons/Melee/cane_blade.rsi/icon.png | Bin 0 -> 682 bytes .../Melee/cane_blade.rsi/inhand-left.png | Bin 0 -> 264 bytes .../Melee/cane_blade.rsi/inhand-right.png | Bin 0 -> 266 bytes .../Weapons/Melee/cane_blade.rsi/meta.json | 22 ++++ 19 files changed, 187 insertions(+) create mode 100644 Resources/Audio/Items/sheath.ogg create mode 100644 Resources/Audio/Items/unsheath.ogg create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/cane-empty.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/cane.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/meta.json diff --git a/Resources/Audio/Items/attributions.yml b/Resources/Audio/Items/attributions.yml index 675e4fff24e..b3ae4f611f9 100644 --- a/Resources/Audio/Items/attributions.yml +++ b/Resources/Audio/Items/attributions.yml @@ -127,3 +127,10 @@ license: "CC0-1.0" copyright: "Original sound by stomachache on freesound.org, processed by vanilla" source: "https://freesound.org/s/262213/" + +- files: + - "sheath.ogg" + - "unsheath.ogg" + license: "CC-BY-SA-3.0" + copyright: "Taken from tgstation." + source: "https://github.com/tgstation/tgstation/blob/a7f525bce9a359ab5282fc754078cd4b5678a006/sound/items" diff --git a/Resources/Audio/Items/sheath.ogg b/Resources/Audio/Items/sheath.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9e1d5cdc0097d2931d97aef889a5ba4fe3822251 GIT binary patch literal 7529 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 Veh%&}Yua{xTPBm|%$JK9{vRtX5cL26 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/unsheath.ogg b/Resources/Audio/Items/unsheath.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09867f5966a1527855036b59e4fa064ffdd8772b GIT binary patch literal 8558 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 v@DXRM&#AX872dtgPBfG0x&I?XHrRdHNPf@ z-Vua^VaOO)m}4(x7jx)3ejX7J^&u{Lb>G)<3=}kn0f9c^S!Q#Wc%C@D<=TSxh=*B8 zDG;9!$2c93_*Uqu&u@Z@K7R@3xy%9}iJo$?jny`0C2kT=5l2mhTd?d@m+ z*Fgt50001gNklpkCE067zF@UCR1S*{BP9&0000gPBfG0x&I?XHrRdHNPf@ z-Vua^VaOO)m}4(x7jx)3ejX7J^&u{Lb>G)<3=}kn0f9c^S!Q#Wc%C@D<=TSxh=*B8 zDG;9!$2c93_*Uqu&u@Z@K7R@3xy%9}iJo$?jny`0C2kT=5l2mhTd?d@m+ z*Fgt50002gNklJHGB7XB|Oz|FwGz`&p? zDafEHFU>G>$4R`7psM9A+H(IH7#QFokm;iTe^Rm+iWp5DfX$*z7ybX}(EbGNJhWZLz6{@oWfYq{Mwh&c=lMi7m^JPm&}_A5u}x&?y0C1m=*FY3-b~B3Kd|VW_|yF=UHg_S(f}Fc>FVdQ&MBb@ E0RKX4{Qv*} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..8f12a08afd648aa3f70d944e580f2ed4899b821f GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(NH`hE&XX zduyZMAp@S)M0xS9DJPkBHYYQ2y~xCWq+*~> z5Qut^e|P!0q^3VN*FLjr5vkhS|1#5LH_z+IYdn4KEzo~pm&YIM1Y|L8>0zA0x1i~# z`-aqK>;ftKzOAZjylXqX{VgNJAch0|SKd0Tv%6T`_0?|XHpB0)oaL&Q!oIJ{6vF50Grm{pVta5&7i5~JtDnm{ Hr-UW|eKKm5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json new file mode 100644 index 00000000000..913fcb524bf --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by ps3moira#9488 on discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "cane-empty" + }, + { + "name": "cane" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-left.png b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f87a4a90e382d7c6fc50e6e8147fe527d146ba GIT binary patch literal 633 zcmV-<0*3vGP)EX>4Tx04R}tkv&MmKpe$i)0T=<9IPNBlA$_T5S8L6RV;#q(pG5I!Q|2}Xws0h zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOie&bxUS>Tx=Ba@mZ4iSsRE|$BPl?;`5hB&OK8s!UF zhZW9SoYhL5weQJa7|d%cX|B^8K^#j+APEsN>L{av8X~l6q?kz2e$2%`Z2ObslF3yD zBgX=&P$AiV@IUz7ty!3!a*~2E!2e=dA7emZ7icvs>-*TUS|@<_8Mx9q{%RAL{Up87 z(ZWYS|2A-O-O=Pd;Bp5TdeS9BvL!D~p-=$c&*+n`u^>F({{GwuF<0IolBzu?qTg#Z8muSrBfRCt{2+A#`)Fc=2VP`WsJ261xi z(4m8iqgN1mN{{1J(xDWJp#`fpg}w(_g7Je4S-w9600000U>e)lor*Z$ugef0YpBvy zmmxXRH$@!I$7KJV;e3pJljeV-I~8#n+fDwp%21`3v*x?49KIR$i~jxscK3K6_C5mu z000000BmbMJ20Oa2;tuE?~(f|@7eY8Bb{Q-a&t+xdVCMLtL@zR*_bN;0G7A`oi#zI TGB5<)00000NkvXXu0mjfdut=m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f0449b4c21149ca6bae96f72bfb67781bdbff9 GIT binary patch literal 640 zcmV-`0)PF9P)EX>4Tx04R}tkv&MmKpe$i)0T=<9IPNBlA$_T5S8L6RV;#q(pG5I!Q|2}Xws0h zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOie&bxUS>Tx=Ba@mZ4iSsRE|$BPl?;`5hB&OK8s!UF zhZW9SoYhL5weQJa7|d%cX|B^8K^#j+APEsN>L{av8X~l6q?kz2e$2%`Z2ObslF3yD zBgX=&P$AiV@IUz7ty!3!a*~2E!2e=dA7emZ7icvs>-*TUS|@<_8Mx9q{%RAL{Up87 z(ZWYS|2A-O-O=Pd;Bp5TdeS9BvL!D~p-=$c&*+n`u^>F({{GwuF<0IolBzu?qTg#Z8mwn;=mRCt{2+A$7-KoA8`Vr(cmgQ23N zu&|)9 atl$QEdqJp8bA4<80000gPBfG0x&I?XHrRdHNPf@ z-Vua^VaOO)m}4(x7jx)3ejX7J^&u{Lb>G)<3=}kn0f9c^S!Q#Wc%C@D<=TSxh=*B8 zDG;9!$2c93_*Uqu&u@Z@K7R@3xy%9}iJo$?jny`0C2kT=5l2mhTd?d@m+ z*Fgt50002>NklJHGB7XB|Oz|FwGz`&p? zDafEHFU>G>$4R`7psM9A+H(IH7#QFokm;iTe^Rm+iWp5DfX$*z7ybX}(Ei?+|rx_kUd&j^)L^(rM2RwQH>i_jy_Zc2Pd&e+iVjb-Z9(2ohA3XU# zBfp9MaXvgPKXKv&!8jZgK8I$vQOidyAGLhca@sgxz$|BAfHW!w%<>Th0Q=X@7wQGn QBme*a07*qoM6N<$g8H8`@c;k- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e57880cb1f1e0b31de848993dec767a7e952cf GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tcsbhE&XX zdut=_VFMnQK+!y-_R~BMR5vxLl|H>x%^|Qr^+lI&14E%xRLH0M3?lEN3{`>JKtS-R zrDvSl%e}{=KN+2TTvr@vc3!iL^Yu3Gm1lEKKCfKJ{ee$j>LI6m@jUHA!gkMW!k3y| zPF?$)5u%&npXYaJruDlUjNh03b<*E@a@X7GIv-v+Fa6DXP*k<$zwaj<#hQwzfrktp zPEF-J+!`*X$|D_D8+_=)!>j75e|#!RpUE}cX8d8zaPkRn?mx%WKOl2GUHx3vIVCg! E0KE!l5dZ)H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa04f7f87c7fc48cdcb023ce561ab6bfe89192f GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(EB_hE&XX zdvhaivx9)kMNW?uhZR{bu;|7tb!qw1*y1AWzC~!7N6vk@?bqsA89qCQF#&Y}fk3F# z?m2O%T;;8JYyFbLzb)kJ;@^MkoAUY7w@O;F8K%GQ6?oXiq12?Jr^D>hwcPTzXA|Bsa5EZKY;WfS{*6)qgc_onm+ z Date: Sat, 27 Apr 2024 10:23:16 +0000 Subject: [PATCH 22/89] 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 4ffc67a483e..6a915fab158 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Dygon - changes: - - message: Diona nymphs aren't deleted immediately after spawning anymore. - type: Fix - id: 5956 - time: '2024-02-17T16:38:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25344 - author: Geekyhobo changes: - message: Massban Flag has been added to admin ranks @@ -3847,3 +3840,10 @@ id: 6455 time: '2024-04-27T06:30:30.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27387 +- author: ps3moira + changes: + - message: Added Canes to the CuraDrobe and Cane Blades for Syndicate Librarians + type: Add + id: 6456 + time: '2024-04-27T10:22:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25873 From 1861ae8e2bb419b32fbb34e93916393bc351afbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20M=C4=99drek?= Date: Sat, 27 Apr 2024 10:23:55 +0000 Subject: [PATCH 23/89] fix: localisation keys in random content books (#27390) Fixes #27327 --- Content.Server/RandomMetadata/RandomMetadataSystem.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Content.Server/RandomMetadata/RandomMetadataSystem.cs b/Content.Server/RandomMetadata/RandomMetadataSystem.cs index 0c254c52ac0..abab5e5fc38 100644 --- a/Content.Server/RandomMetadata/RandomMetadataSystem.cs +++ b/Content.Server/RandomMetadata/RandomMetadataSystem.cs @@ -47,9 +47,13 @@ public string GetRandomFromSegments(List segments, string? separator) var outputSegments = new List(); foreach (var segment in segments) { - if (_prototype.TryIndex(segment, out var proto)) - outputSegments.Add(_random.Pick(proto.Values)); - else if (Loc.TryGetString(segment, out var localizedSegment)) + if (_prototype.TryIndex(segment, out var proto)) { + var random = _random.Pick(proto.Values); + if (Loc.TryGetString(random, out var localizedSegment)) + outputSegments.Add(localizedSegment); + else + outputSegments.Add(random); + } else if (Loc.TryGetString(segment, out var localizedSegment)) outputSegments.Add(localizedSegment); else outputSegments.Add(segment); From b8a8d6f8fc8e0c1d83998c07a3265108d49de615 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Sat, 27 Apr 2024 11:25:02 +0100 Subject: [PATCH 24/89] Add tooltips to artifact analyzer UI (#27393) Add tooltips to indicate why "Extract" button is disabled. Co-authored-by: Eoin Mcloughlin --- .../Ui/AnalysisConsoleMenu.xaml.cs | 35 ++++++++++++++++--- .../xenoarchaeology/artifact-analyzer.ftl | 3 ++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs index 59cf34944c8..2890bb3dbf7 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs @@ -78,17 +78,44 @@ public void SetButtonsDisabled(AnalysisConsoleUpdateState state) else UpBiasButton.Pressed = true; - var disabled = !state.ServerConnected || !state.CanScan || state.PointAmount <= 0; - - ExtractButton.Disabled = disabled; + ExtractButton.Disabled = false; + if (!state.ServerConnected) + { + ExtractButton.Disabled = true; + ExtractButton.ToolTip = Loc.GetString("analysis-console-no-server-connected"); + } + else if (!state.CanScan) + { + ExtractButton.Disabled = true; + + // CanScan can be false if either there's no analyzer connected or if there's + // no entity on the scanner. The `Information` text will always tell the user + // of the former case, but in the latter, it'll only show a message if a scan + // has never been performed, so add a tooltip to indicate that the artifact + // is gone. + if (state.AnalyzerConnected) + { + ExtractButton.ToolTip = Loc.GetString("analysis-console-no-artifact-placed"); + } + else + { + ExtractButton.ToolTip = null; + } + } + else if (state.PointAmount <= 0) + { + ExtractButton.Disabled = true; + ExtractButton.ToolTip = Loc.GetString("analysis-console-no-points-to-extract"); + } - if (disabled) + if (ExtractButton.Disabled) { ExtractButton.RemoveStyleClass("ButtonColorGreen"); } else { ExtractButton.AddStyleClass("ButtonColorGreen"); + ExtractButton.ToolTip = null; } } private void UpdateArtifactIcon(EntityUid? uid) diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl index 672d80ed31d..35dd42167f6 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl @@ -30,6 +30,9 @@ analysis-console-progress-text = {$seconds -> [one] T-{$seconds} second *[other] T-{$seconds} seconds } +analysis-console-no-server-connected = Cannot extract. No server connected. +analysis-console-no-artifact-placed = No artifact on scanner. +analysis-console-no-points-to-extract = No points to extract. analyzer-artifact-component-upgrade-analysis = analysis duration From 670ad3d962d0d36c5d593de060fa686002b78f2f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 10:25:01 +0000 Subject: [PATCH 25/89] 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 6a915fab158..09e9444209b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Geekyhobo - changes: - - message: Massban Flag has been added to admin ranks - type: Add - id: 5957 - time: '2024-02-17T20:32:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25327 - author: Moomoobeef changes: - message: Detectives are now supplied with a box of evidence markers, useful for @@ -3847,3 +3840,10 @@ id: 6456 time: '2024-04-27T10:22:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25873 +- author: Lukasz825700516 + changes: + - message: Fixed books containing localization keys. + type: Fix + id: 6457 + time: '2024-04-27T10:23:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27390 From a62e8701cb30cc0c96cbac5a33b57728efe596b5 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Sat, 27 Apr 2024 12:33:35 +0200 Subject: [PATCH 26/89] vox oxygen toxicity, respiration changes (#26705) * vox oxygen toxicity and related stuff * Review --------- Co-authored-by: metalgearsloth --- .../Loadouts/Effects/SpeciesLoadoutEffect.cs | 6 +++++ Resources/Prototypes/Reagents/botany.yml | 8 +++++++ Resources/Prototypes/Reagents/gases.yml | 24 ++++++++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs diff --git a/Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs b/Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs new file mode 100644 index 00000000000..74673cbef39 --- /dev/null +++ b/Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs @@ -0,0 +1,6 @@ +namespace Content.Shared.Preferences.Loadouts.Effects; + +public sealed class SpeciesLoadoutEffect +{ + +} diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml index 4cb7d0c1842..cdd19dc308d 100644 --- a/Resources/Prototypes/Reagents/botany.yml +++ b/Resources/Prototypes/Reagents/botany.yml @@ -222,6 +222,9 @@ - !type:OrganType type: Rat shouldHave: false + - !type:OrganType + type: Vox + shouldHave: false - !type:ReagentThreshold reagent: Ammonia min: 0.8 @@ -249,6 +252,11 @@ Burn: -5 types: Bloodloss: -5 + - !type:Oxygenate # ammonia displaces nitrogen in vox blood + conditions: + - !type:OrganType + type: Vox + factor: -4 - type: reagent diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 9cb73fffb85..06fb2b269b6 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -35,6 +35,25 @@ ratios: CarbonDioxide: 1.0 Oxygen: -1.0 + - !type:HealthChange + conditions: + - !type:OrganType + type: Vox + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Poison: + 7 + - !type:AdjustAlert + alertType: Toxins + conditions: + - !type:ReagentThreshold + min: 0.5 + - !type:OrganType + type: Vox + clear: true + time: 5 - type: reagent id: Plasma @@ -142,6 +161,9 @@ - !type:OrganType type: Plant shouldHave: false + - !type:OrganType + type: Vox + shouldHave: false # Don't want people to get toxin damage from the gas they just # exhaled, right? - !type:ReagentThreshold @@ -194,7 +216,7 @@ - !type:OrganType type: Vox ratios: - CarbonDioxide: 1.0 + Ammonia: 1.0 Nitrogen: -1.0 - !type:ModifyLungGas conditions: From 4d85ca5c2afda7600714f04a46d5b883f45ec8d3 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 10:34:41 +0000 Subject: [PATCH 27/89] Automatic changelog update --- Resources/Changelog/Admin.yml | 11 +++++++++++ Resources/Changelog/Changelog.yml | 15 +++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 186b0500aec..0ba5665ab4b 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -175,5 +175,16 @@ Entries: id: 23 time: '2024-04-26T00:25:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27319 +- author: Errant + changes: + - message: When spawning vox for admemes, they should be given/spawned in a nitrogen-filled + space if possible. If they must be placed in normal air, an alternate vox prototype + now comes with breathing gear and N2 tank already equipped, but the internals + must be turned on via right click and even if you do this instantly they will + still probably take ~4 poison damage from the air, so heal them afterwards. + type: Add + id: 24 + time: '2024-04-27T10:33:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26705 Name: Admin Order: 1 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 09e9444209b..7ac2ddf923e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Moomoobeef - changes: - - message: Detectives are now supplied with a box of evidence markers, useful for - marking evidence at a crime scene. - type: Add - id: 5958 - time: '2024-02-17T20:49:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25255 - author: Ubaser changes: - message: New "tailed" hair. @@ -3847,3 +3839,10 @@ id: 6457 time: '2024-04-27T10:23:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27390 +- author: Errant + changes: + - message: Vox now take significant damage over time while inhaling oxygen. + type: Tweak + id: 6458 + time: '2024-04-27T10:33:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26705 From 4903bc2e3da8c21008527909dd036d77ec916359 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 27 Apr 2024 13:35:13 +0300 Subject: [PATCH 28/89] Small tomato killer tweak (#27265) * Update miscellaneous.yml * Update mobspawn.yml * Update miscellaneous.yml * Update miscellaneous.yml --- Resources/Prototypes/Entities/Effects/mobspawn.yml | 3 ++- Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Effects/mobspawn.yml b/Resources/Prototypes/Entities/Effects/mobspawn.yml index 4529497021e..fb59aa3fc46 100644 --- a/Resources/Prototypes/Entities/Effects/mobspawn.yml +++ b/Resources/Prototypes/Entities/Effects/mobspawn.yml @@ -107,6 +107,7 @@ - FoodOnionRed - FoodWatermelon - FoodGatfruit + - MobTomatoKiller rarePrototypes: - MobLuminousEntity - - MobLuminousObject \ No newline at end of file + - MobLuminousObject diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml index 6fca4e6a63e..f77429d5978 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml @@ -79,7 +79,6 @@ description: it seems today it's not you eating tomatoes, it's the tomatoes eating you. components: - type: Item - size: Huge - type: NpcFactionMember factions: - SimpleHostile @@ -142,10 +141,6 @@ - type: Climbing - type: NameIdentifier group: GenericNumber - - type: SlowOnDamage - speedModifierThresholds: - 60: 0.7 - 80: 0.5 - type: FootstepModifier footstepSoundCollection: path: /Audio/Effects/Footsteps/slime1.ogg From dec101465bc011898dfe1f193cd928c997c63a35 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 10:36:19 +0000 Subject: [PATCH 29/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7ac2ddf923e..0bba26b13d2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: New "tailed" hair. - type: Add - id: 5959 - time: '2024-02-17T20:49:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25216 - author: Ubaser changes: - message: A new chest scar marking is now available to humans and dwarves. @@ -3846,3 +3839,12 @@ id: 6458 time: '2024-04-27T10:33:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26705 +- author: TheShuEd + changes: + - message: Added tomato killers in floral anomaly berries + type: Add + - message: tweak size and damage of killer tomatoes + type: Tweak + id: 6459 + time: '2024-04-27T10:35:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27265 From cafb41c161e5cd4780777ed3d5039c2b98bee1c1 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 03:38:59 -0700 Subject: [PATCH 30/89] Printable Special Mags and Empty Mags and Material Rebalance for Ammo (#26178) * Printable Empty Magazines * Adjust values of ammo boxes, adjust material costs, add empty lethal/non-lethal mags, swap secfab shotgun shells with shotgun ammo boxes, add recipe for shotgun ammo boxes * Adds fully loaded pistol mags at secfab, removes printing respective cartridges at secfab * Adds fully loaded rifle mags at secfab, removes respective cartridges * Adds fully loaded light rifle mags at secfab, removes respective cartridges from secfab * Adds fully loaded speedloader to secfab, removes respective cartridges from secfab * small id mismatch fix * another wrong ID fix * capitalize Ls in speedloader * Add missing SpeedLoader recipe * Adds fully loaded shotgun drums to secfab, removes respective shells from secfab * add rifle ammo unlocks back in, forgot ammo unlocks affect other fabs as well * Moves tranquilizer shells to the non-lethal ammunition research * Account for the removal of rubbers, adds in craftable disablers * rubber rounds don't exist, remove empty non-lethal mags to just have empty mags * Add in WT550 mags * Convert latheRecipes to use LayeredTextureRect instead of TextureRect * Fix for issue, texture layering now works * Add in missing shell uranium box art * add shelluranium to meta.json * Fix yml issue * Get rid of unused single ammo printing unlocks --------- Co-authored-by: Plykiya --- Content.Client/Lathe/UI/LatheMenu.xaml.cs | 21 +- Content.Client/Lathe/UI/RecipeControl.xaml | 10 +- Content.Client/Lathe/UI/RecipeControl.xaml.cs | 6 +- .../Guns/Ammunition/Boxes/light_rifle.yml | 2 +- .../Weapons/Guns/Ammunition/Boxes/magnum.yml | 2 +- .../Weapons/Guns/Ammunition/Boxes/rifle.yml | 2 +- .../Weapons/Guns/Ammunition/Boxes/shotgun.yml | 17 +- .../Guns/Ammunition/Magazines/light_rifle.yml | 21 ++ .../Guns/Ammunition/Magazines/magnum.yml | 26 ++ .../Guns/Ammunition/Magazines/pistol.yml | 70 ++++ .../Guns/Ammunition/Magazines/rifle.yml | 21 ++ .../Guns/Ammunition/Magazines/shotgun.yml | 9 + .../Guns/Ammunition/SpeedLoaders/magnum.yml | 21 ++ .../Entities/Structures/Machines/lathe.yml | 47 ++- .../Prototypes/Recipes/Lathes/security.yml | 333 ++++++++++++++++-- Resources/Prototypes/Research/arsenal.yml | 35 +- .../Objects/Storage/boxes.rsi/meta.json | 3 + .../Storage/boxes.rsi/shelluranium.png | Bin 0 -> 1504 bytes 18 files changed, 572 insertions(+), 74 deletions(-) create mode 100644 Resources/Textures/Objects/Storage/boxes.rsi/shelluranium.png diff --git a/Content.Client/Lathe/UI/LatheMenu.xaml.cs b/Content.Client/Lathe/UI/LatheMenu.xaml.cs index ca8d2561270..9e15f8239e5 100644 --- a/Content.Client/Lathe/UI/LatheMenu.xaml.cs +++ b/Content.Client/Lathe/UI/LatheMenu.xaml.cs @@ -10,6 +10,8 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; +using Robust.Client.ResourceManagement; +using Robust.Client.Graphics; using Robust.Shared.Prototypes; namespace Content.Client.Lathe.UI; @@ -19,6 +21,8 @@ public sealed partial class LatheMenu : DefaultWindow { [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IResourceCache _resources = default!; + private EntityUid _owner; private readonly SpriteSystem _spriteSystem; private readonly LatheSystem _lathe; @@ -104,12 +108,21 @@ public void PopulateRecipes() RecipeList.Children.Clear(); foreach (var prototype in sortedRecipesToShow) { - var icon = prototype.Icon == null - ? _spriteSystem.GetPrototypeIcon(prototype.Result).Default - : _spriteSystem.Frame0(prototype.Icon); + List textures; + if (_prototypeManager.TryIndex(prototype.Result, out EntityPrototype? entityProto) && entityProto != null) + { + textures = SpriteComponent.GetPrototypeTextures(entityProto, _resources).Select(o => o.Default).ToList(); + } + else + { + textures = prototype.Icon == null + ? new List { _spriteSystem.GetPrototypeIcon(prototype.Result).Default } + : new List { _spriteSystem.Frame0(prototype.Icon) }; + } + var canProduce = _lathe.CanProduce(_owner, prototype, quantity); - var control = new RecipeControl(prototype, () => GenerateTooltipText(prototype), canProduce, icon); + var control = new RecipeControl(prototype, () => GenerateTooltipText(prototype), canProduce, textures); control.OnButtonPressed += s => { if (!int.TryParse(AmountLineEdit.Text, out var amount) || amount <= 0) diff --git a/Content.Client/Lathe/UI/RecipeControl.xaml b/Content.Client/Lathe/UI/RecipeControl.xaml index 2e02c8a6147..d1371a026a2 100644 --- a/Content.Client/Lathe/UI/RecipeControl.xaml +++ b/Content.Client/Lathe/UI/RecipeControl.xaml @@ -5,11 +5,15 @@ Margin="0" StyleClasses="ButtonSquare"> - + CanShrink="true" + /> diff --git a/Content.Client/Lathe/UI/RecipeControl.xaml.cs b/Content.Client/Lathe/UI/RecipeControl.xaml.cs index bf85ff7d938..47b6b5932c4 100644 --- a/Content.Client/Lathe/UI/RecipeControl.xaml.cs +++ b/Content.Client/Lathe/UI/RecipeControl.xaml.cs @@ -2,8 +2,8 @@ using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Graphics; namespace Content.Client.Lathe.UI; @@ -13,12 +13,12 @@ public sealed partial class RecipeControl : Control public Action? OnButtonPressed; public Func TooltipTextSupplier; - public RecipeControl(LatheRecipePrototype recipe, Func tooltipTextSupplier, bool canProduce, Texture? texture = null) + public RecipeControl(LatheRecipePrototype recipe, Func tooltipTextSupplier, bool canProduce, List textures) { RobustXamlLoader.Load(this); RecipeName.Text = recipe.Name; - RecipeTexture.Texture = texture; + RecipeTextures.Textures = textures; Button.Disabled = !canProduce; TooltipTextSupplier = tooltipTextSupplier; Button.TooltipSupplier = SupplyTooltip; diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml index 5b2ec794918..d5fb4360a82 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml @@ -10,7 +10,7 @@ tags: - CartridgeLightRifle proto: CartridgeLightRifle - capacity: 50 + capacity: 60 - type: Item size: Small - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index f5b2955e086..018d812e3f5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -9,7 +9,7 @@ tags: - CartridgeMagnum proto: CartridgeMagnum - capacity: 60 + capacity: 12 - type: Item size: Small - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml index 54d5327dda9..7a5f5d27ca6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml @@ -9,7 +9,7 @@ tags: - CartridgeRifle proto: CartridgeRifle - capacity: 60 + capacity: 50 - type: Item size: Small - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml index 831c3c33525..63ad52c0320 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml @@ -21,7 +21,7 @@ whitelist: tags: - ShellShotgun - capacity: 12 + capacity: 16 # Shotgun Shells - type: entity @@ -89,6 +89,19 @@ - state: boxwide - state: shellincendiary +- type: entity + name: shotgun uranium cartridges dispenser + parent: AmmoProviderShotgunShell + id: BoxShotgunUranium + description: A dispenser box full of uranium cartridges, designed for riot shotguns. + components: + - type: BallisticAmmoProvider + proto: ShellShotgunUranium + - type: Sprite + layers: + - state: boxwide + - state: shelluranium + - type: entity name: shotgun practice cartridges dispenser parent: AmmoProviderShotgunShell @@ -113,4 +126,4 @@ - type: Sprite layers: - state: boxwide - - state: shellslug \ No newline at end of file + - state: shellslug diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml index ebb98b879c6..495bcd37d15 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml @@ -68,6 +68,19 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineLightRifleEmpty + name: "magazine (.30 rifle any)" + suffix: empty + parent: MagazineLightRifle + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazineLightRiflePractice name: "magazine (.30 rifle practice)" @@ -96,6 +109,14 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineLightRifleIncendiary + name: "magazine (.30 rifle incendiary)" + parent: MagazineLightRifle + components: + - type: BallisticAmmoProvider + proto: CartridgeLightRifleIncendiary + - type: entity id: MagazineLightRifleMaxim name: "pan magazine (.30 rifle)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml index 1d8437a884d..304014d11b4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml @@ -47,6 +47,19 @@ zeroVisible: false - type: Appearance +- type: entity + id: MagazineMagnumEmpty + name: pistol magazine (.45 magnum any) + suffix: empty + parent: BaseMagazineMagnum + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazineMagnum name: pistol magazine (.45 magnum) @@ -103,6 +116,19 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineMagnumSubMachineGunEmpty + name: "Vector magazine (.45 magnum any)" + suffix: empty + parent: BaseMagazineMagnumSubMachineGun + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazineMagnumSubMachineGun name: "Vector magazine (.45 magnum)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml index 35262819074..b55961a87f6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml @@ -128,6 +128,14 @@ containers: ballistic-ammo: !type:Container +- type: entity + id: MagazinePistolSubMachineGunTopMountedEmpty + name: WT550 magazine (.35 auto top-mounted any) + parent: MagazinePistolSubMachineGunTopMounted + components: + - type: BallisticAmmoProvider + proto: null + - type: entity id: MagazinePistol name: pistol magazine (.35 auto) @@ -142,6 +150,28 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazinePistolEmpty + name: pistol magazine (.35 auto any) + suffix: empty + parent: MagazinePistol + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + + +- type: entity + id: MagazinePistolIncendiary + name: pistol magazine (.35 auto incendiary) + parent: MagazinePistol + components: + - type: BallisticAmmoProvider + proto: CartridgePistolIncendiary + - type: entity id: MagazinePistolPractice name: pistol magazine (.35 auto practice) @@ -156,6 +186,33 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazinePistolUranium + name: pistol magazine (.35 auto uranium) + parent: BaseMagazinePistol + components: + - type: BallisticAmmoProvider + proto: CartridgePistolUranium + - type: Sprite + layers: + - state: uranium + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + +- type: entity + id: MagazinePistolHighCapacityEmpty + name: machine pistol magazine (.35 auto any) + suffix: empty + parent: BaseMagazinePistolHighCapacity + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazinePistolHighCapacity name: machine pistol magazine (.35 auto) @@ -218,6 +275,19 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazinePistolSubMachineGunEmpty + name: SMG magazine (.35 auto any) + suffix: empty + parent: BaseMagazinePistolSubMachineGun + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazinePistolSubMachineGunPractice name: SMG magazine (.35 auto practice) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml index d060af2c21c..b2148ba1b2d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml @@ -47,6 +47,27 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineRifleEmpty + name: "magazine (.20 rifle any)" + suffix: empty + parent: MagazineRifle + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + +- type: entity + id: MagazineRifleIncendiary + name: "magazine (.20 rifle incendiary)" + parent: MagazineRifle + components: + - type: BallisticAmmoProvider + proto: CartridgeRifleIncendiary + - type: entity id: MagazineRiflePractice name: "magazine (.20 rifle practice)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml index cbe9bbfbe97..5b0b16bf4bc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml @@ -33,6 +33,15 @@ zeroVisible: false - type: Appearance +- type: entity + id: MagazineShotgunEmpty + name: ammo drum (.50 shells any) + suffix: empty + parent: BaseMagazineShotgun + components: + - type: BallisticAmmoProvider + proto: null + - type: entity id: MagazineShotgun name: ammo drum (.50 pellet) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index fda8046cc68..08d50db9b2c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -39,6 +39,27 @@ zeroVisible: false - type: Appearance +- type: entity + id: SpeedLoaderMagnumEmpty + name: "speed loader (.45 magnum any)" + parent: SpeedLoaderMagnum + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi + layers: + - state: base + map: [ "enum.GunVisualLayers.Base" ] + +- type: entity + id: SpeedLoaderMagnumIncendiary + name: "speed loader (.45 magnum incendiary)" + parent: SpeedLoaderMagnum + components: + - type: BallisticAmmoProvider + proto: CartridgeMagnumIncendiary + - type: entity id: SpeedLoaderMagnumPractice name: "speed loader (.45 magnum practice)" diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 1bfb67f66a8..318f880ab98 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -646,21 +646,28 @@ - Stunbaton - ForensicPad - RiotShield - - ShellShotgun - - ShellShotgunBeanbag - - ShellShotgunSlug - - ShellShotgunFlare - - ShellTranquilizer - - MagazinePistol + - BoxShotgunSlug + - BoxLethalshot + - BoxShotgunFlare + - MagazinePistol + - MagazinePistolEmpty - MagazinePistolSubMachineGun + - MagazinePistolSubMachineGunEmpty - MagazinePistolSubMachineGunTopMounted + - MagazinePistolSubMachineGunTopMountedEmpty - MagazineRifle + - MagazineRifleEmpty - MagazineLightRifle + - MagazineLightRifleEmpty + - MagazineShotgunEmpty + - MagazineShotgun + - MagazineShotgunSlug - MagazineBoxPistol - MagazineBoxMagnum - MagazineBoxRifle - MagazineBoxLightRifle - SpeedLoaderMagnum + - SpeedLoaderMagnumEmpty - TargetHuman - TargetSyndicate - TargetClown @@ -668,18 +675,21 @@ - MagazineBoxMagnumPractice - MagazineBoxPistolPractice - MagazineBoxRiflePractice - - ShellShotgunPractice - WeaponLaserCarbinePractice - WeaponDisablerPractice + - BoxShotgunPractice dynamicRecipes: - - CartridgeLightRifleIncendiary - - CartridgeMagnumIncendiary - - CartridgePistolIncendiary - - CartridgeRifleIncendiary - - CartridgeLightRifleUranium - - CartridgeMagnumUranium - - CartridgePistolUranium - - CartridgeRifleUranium + - MagazineLightRifleIncendiary + - SpeedLoaderMagnumIncendiary + - MagazinePistolIncendiary + - MagazineRifleIncendiary + - MagazineShotgunIncendiary + - MagazineLightRifleUranium + - SpeedLoaderMagnumUranium + - MagazinePistolUranium + - MagazineRifleUranium + - MagazineShotgunBeanbag + - ShellTranquilizer - ExplosivePayload - FlashPayload - HoloprojectorSecurity @@ -687,23 +697,24 @@ - MagazineBoxMagnumIncendiary - MagazineBoxPistolIncendiary - MagazineBoxRifleIncendiary + - BoxShotgunIncendiary - MagazineBoxLightRifleUranium - MagazineBoxMagnumUranium - MagazineBoxPistolUranium - MagazineBoxRifleUranium + - BoxShotgunUranium + - BoxBeanbag - MagazineGrenadeEmpty - GrenadeEMP - GrenadeFlash - - ShellShotgunIncendiary - - ShellShotgunUranium - Signaller - SignalTrigger - TelescopicShield - TimerTrigger - Truncheon - VoiceTrigger - - WeaponDisablerPractice - WeaponAdvancedLaser + - WeaponDisabler - WeaponDisablerSMG - WeaponLaserCannon - WeaponLaserCarbine diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index f536242238a..f5d538618b0 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -239,13 +239,56 @@ materials: Steel: 500 +- type: latheRecipe + id: MagazinePistolEmpty + result: MagazinePistolEmpty + category: Ammo + completetime: 5 + materials: + Steel: 25 + - type: latheRecipe id: MagazinePistol result: MagazinePistol category: Ammo completetime: 5 materials: - Steel: 100 + Steel: 145 + +- type: latheRecipe + id: MagazinePistolPractice + result: MagazinePistolPractice + category: Ammo + completetime: 5 + materials: + Steel: 85 + +- type: latheRecipe + id: MagazinePistolUranium + result: MagazinePistolUranium + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 65 + Uranium: 120 + +- type: latheRecipe + id: MagazinePistolIncendiary + result: MagazinePistolIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 120 + +- type: latheRecipe + id: MagazinePistolSubMachineGunEmpty + result: MagazinePistolSubMachineGunEmpty + category: Ammo + completetime: 5 + materials: + Steel: 30 - type: latheRecipe id: MagazinePistolSubMachineGun @@ -255,6 +298,14 @@ materials: Steel: 300 +- type: latheRecipe + id: MagazinePistolSubMachineGunTopMountedEmpty + result: MagazinePistolSubMachineGunTopMountedEmpty + category: Ammo + completetime: 5 + materials: + Steel: 30 + - type: latheRecipe id: MagazinePistolSubMachineGunTopMounted result: MagazinePistolSubMachineGunTopMounted @@ -269,7 +320,7 @@ category: Ammo completetime: 5 materials: - Steel: 650 + Steel: 600 - type: latheRecipe id: MagazineBoxMagnum @@ -277,7 +328,15 @@ category: Ammo completetime: 5 materials: - Steel: 1250 + Steel: 240 + +- type: latheRecipe + id: MagazineRifleEmpty + result: MagazineRifleEmpty + category: Ammo + completetime: 5 + materials: + Steel: 25 - type: latheRecipe id: MagazineRifle @@ -285,7 +344,43 @@ category: Ammo completetime: 5 materials: - Steel: 375 + Steel: 475 + + +- type: latheRecipe + id: MagazineRiflePractice + result: MagazineRiflePractice + category: Ammo + completetime: 5 + materials: + Steel: 175 + +- type: latheRecipe + id: MagazineRifleUranium + result: MagazineRifleUranium + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 300 + Uranium: 300 + +- type: latheRecipe + id: MagazineRifleIncendiary + result: MagazineRifleIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 450 + +- type: latheRecipe + id: MagazineLightRifleEmpty + result: MagazineLightRifleEmpty + category: Ammo + completetime: 5 + materials: + Steel: 25 - type: latheRecipe id: MagazineLightRifle @@ -293,7 +388,35 @@ category: Ammo completetime: 5 materials: - Steel: 375 + Steel: 565 + +- type: latheRecipe + id: MagazineLightRiflePractice + result: MagazineLightRiflePractice + category: Ammo + completetime: 5 + materials: + Steel: 205 + + +- type: latheRecipe + id: MagazineLightRifleUranium + result: MagazineLightRifleUranium + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 360 + Uranium: 360 + +- type: latheRecipe + id: MagazineLightRifleIncendiary + result: MagazineLightRifleIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 540 - type: latheRecipe id: MagazineBoxRifle @@ -301,7 +424,7 @@ category: Ammo completetime: 5 materials: - Steel: 950 + Steel: 750 - type: latheRecipe id: MagazineBoxLightRifle @@ -309,7 +432,41 @@ category: Ammo completetime: 5 materials: - Steel: 1800 + Steel: 900 + +- type: latheRecipe + id: BoxLethalshot + result: BoxLethalshot + category: Ammo + completetime: 5 + materials: + Steel: 320 + +- type: latheRecipe + id: BoxBeanbag + result: BoxBeanbag + category: Ammo + completetime: 5 + materials: + Steel: 160 + Plastic: 240 + +- type: latheRecipe + id: BoxShotgunSlug + result: BoxShotgunSlug + category: Ammo + completetime: 5 + materials: + Steel: 240 + Plastic: 160 + +- type: latheRecipe + id: SpeedLoaderMagnumEmpty + result: SpeedLoaderMagnumEmpty + category: Ammo + completetime: 5 + materials: + Steel: 50 - type: latheRecipe id: SpeedLoaderMagnum @@ -317,7 +474,77 @@ category: Ammo completetime: 5 materials: - Steel: 200 + Steel: 190 + +- type: latheRecipe + id: SpeedLoaderMagnumPractice + result: SpeedLoaderMagnumPractice + category: Ammo + completetime: 5 + materials: + Steel: 90 + +- type: latheRecipe + id: SpeedLoaderMagnumUranium + result: SpeedLoaderMagnumUranium + category: Ammo + completetime: 5 + materials: + Steel: 50 + Plastic: 150 + Uranium: 110 + +- type: latheRecipe + id: SpeedLoaderMagnumIncendiary + result: SpeedLoaderMagnumIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 50 + Plastic: 150 + +- type: latheRecipe + id: MagazineShotgunEmpty + result: MagazineShotgunEmpty + category: Ammo + completetime: 5 + materials: + Steel: 50 + +- type: latheRecipe + id: MagazineShotgun + result: MagazineShotgun + category: Ammo + completetime: 5 + materials: + Steel: 240 + +- type: latheRecipe + id: MagazineShotgunBeanbag + result: MagazineShotgunBeanbag + category: Ammo + completetime: 5 + materials: + Steel: 150 + Plastic: 140 + +- type: latheRecipe + id: MagazineShotgunSlug + result: MagazineShotgunSlug + category: Ammo + completetime: 5 + materials: + Steel: 190 + Plastic: 100 + +- type: latheRecipe + id: MagazineShotgunIncendiary + result: MagazineShotgunIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 100 + Plastic: 190 - type: latheRecipe id: ShellShotgunIncendiary @@ -349,7 +576,7 @@ category: Ammo completetime: 2 materials: - Plastic: 20 + Plastic: 15 - type: latheRecipe id: CartridgeRifleIncendiary @@ -365,7 +592,7 @@ category: Ammo completetime: 5 materials: - Plastic: 650 + Plastic: 600 - type: latheRecipe id: MagazineBoxMagnumIncendiary @@ -373,7 +600,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1250 + Plastic: 240 - type: latheRecipe id: MagazineBoxLightRifleIncendiary @@ -381,7 +608,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1800 + Plastic: 900 - type: latheRecipe id: MagazineBoxRifleIncendiary @@ -389,7 +616,25 @@ category: Ammo completetime: 5 materials: - Plastic: 950 + Plastic: 750 + +- type: latheRecipe + id: BoxShotgunFlare + result: BoxShotgunFlare + category: Ammo + completetime: 5 + materials: + Steel: 80 + Plastic: 80 + +- type: latheRecipe + id: BoxShotgunIncendiary + result: BoxShotgunIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 80 + Plastic: 320 - type: latheRecipe id: ShellShotgunPractice @@ -405,7 +650,7 @@ category: Ammo completetime: 5 materials: - Plastic: 600 + Steel: 300 - type: latheRecipe id: MagazineBoxMagnumPractice @@ -413,7 +658,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1200 + Steel: 60 - type: latheRecipe id: MagazineBoxLightRiflePractice @@ -421,7 +666,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1000 + Steel: 300 - type: latheRecipe id: MagazineBoxRiflePractice @@ -429,7 +674,7 @@ category: Ammo completetime: 5 materials: - Plastic: 900 + Steel: 250 - type: latheRecipe id: WeaponLaserCarbinePractice @@ -451,14 +696,22 @@ Glass: 100 Plastic: 200 +- type: latheRecipe + id: BoxShotgunPractice + result: BoxShotgunPractice + category: Ammo + completetime: 5 + materials: + Steel: 80 + - type: latheRecipe id: ShellShotgunUranium result: ShellShotgunUranium category: Ammo completetime: 2 materials: - Plastic: 15 - Uranium: 10 + Plastic: 20 + Uranium: 15 - type: latheRecipe id: CartridgePistolUranium @@ -476,7 +729,7 @@ completetime: 2 materials: Plastic: 20 - Uranium: 10 + Uranium: 15 - type: latheRecipe id: CartridgeLightRifleUranium @@ -484,7 +737,7 @@ category: Ammo completetime: 2 materials: - Plastic: 20 + Plastic: 10 Uranium: 10 - type: latheRecipe @@ -493,7 +746,7 @@ category: Ammo completetime: 2 materials: - Plastic: 15 + Plastic: 10 Uranium: 10 - type: latheRecipe @@ -502,8 +755,8 @@ category: Ammo completetime: 5 materials: - Plastic: 650 - Uranium: 65 + Plastic: 300 + Uranium: 600 - type: latheRecipe id: MagazineBoxMagnumUranium @@ -511,8 +764,8 @@ category: Ammo completetime: 5 materials: - Plastic: 1250 - Uranium: 125 + Plastic: 240 + Uranium: 180 - type: latheRecipe id: MagazineBoxLightRifleUranium @@ -520,8 +773,8 @@ category: Ammo completetime: 5 materials: - Plastic: 1800 - Uranium: 180 + Plastic: 600 + Uranium: 600 - type: latheRecipe id: MagazineBoxRifleUranium @@ -529,8 +782,27 @@ category: Ammo completetime: 5 materials: - Plastic: 950 - Uranium: 95 + Plastic: 500 + Uranium: 500 + +- type: latheRecipe + id: BoxShotgunUranium + result: BoxShotgunUranium + category: Ammo + completetime: 5 + materials: + Plastic: 320 + Uranium: 240 + +- type: latheRecipe + id: WeaponDisabler + result: WeaponDisabler + category: Weapons + completetime: 6 + materials: + Steel: 300 + Glass: 200 + Plastic: 200 - type: latheRecipe id: WeaponDisablerSMG @@ -576,4 +848,3 @@ Steel: 150 Plastic: 100 Glass: 20 - \ No newline at end of file diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 3b7284c7497..264a7df1094 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -24,11 +24,12 @@ tier: 1 cost: 10000 recipeUnlocks: - - ShellShotgunIncendiary - - CartridgePistolIncendiary - - CartridgeMagnumIncendiary - - CartridgeLightRifleIncendiary - - CartridgeRifleIncendiary + - BoxShotgunIncendiary + - MagazineRifleIncendiary + - MagazinePistolIncendiary + - MagazineLightRifleIncendiary + - SpeedLoaderMagnumIncendiary + - MagazineShotgunIncendiary - MagazineBoxPistolIncendiary - MagazineBoxMagnumIncendiary - MagazineBoxLightRifleIncendiary @@ -46,6 +47,20 @@ recipeUnlocks: - WeaponLaserCarbine +- type: technology + id: NonlethalAmmunition + name: research-technology-nonlethal-ammunition + icon: + sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi + state: beanbag + discipline: Arsenal + tier: 1 + cost: 5000 + recipeUnlocks: + - ShellTranquilizer + - BoxBeanbag + - WeaponDisabler + - type: technology id: UraniumMunitions name: research-technology-uranium-munitions @@ -56,15 +71,15 @@ tier: 1 cost: 7500 recipeUnlocks: - - ShellShotgunUranium - - CartridgePistolUranium - - CartridgeMagnumUranium - - CartridgeLightRifleUranium - - CartridgeRifleUranium + - MagazineRifleUranium + - MagazinePistolUranium + - MagazineLightRifleUranium + - SpeedLoaderMagnumUranium - MagazineBoxPistolUranium - MagazineBoxMagnumUranium - MagazineBoxLightRifleUranium - MagazineBoxRifleUranium + - BoxShotgunUranium - type: technology id: AdvancedRiotControl diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index 53ac39b639b..788c43845cd 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -197,6 +197,9 @@ { "name": "shellslug" }, + { + "name": "shelluranium" + }, { "name": "shelltoy" }, diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/shelluranium.png b/Resources/Textures/Objects/Storage/boxes.rsi/shelluranium.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4e1dee152d5bef64656a240060ddc6d97bc06d GIT binary patch literal 1504 zcmbVMU5MO79M6hg&pQeQTM&I2=6pE8B$MpdWo$g}E?0M@S&!|)ZHo`hPA0qIHkp`Y zyB{D(v7k__P^Bsg=gU3G;hX4*Ek%6rp)WqPB8VbI5$b_TRSM!{KSGt$VgpGgncw{W z|KI=X<+aLF`)3}S5d>j>xnxxN8zlGi6n{p8!LR&ve^5Fe3Bv3H$(<42diy~^xc4Ww zR*&oEQB0U8SvG4>spkb8EeMAfdx1qZXbc*(>H0d{-MI*XYwK`5Zz3~Tp)I#G2#s)6wZxw+7GaMd_6Hpahn*oxx-%W}8dmAYAp zg-uz}G)+dTtg0eMh*953_K%1nvpcA%-#%&_gHub0-{;xfho*%KYr`T>=zG-92Q(A87i&ACKPfLB6l#Vo8b)}CZ)ZQ?Revr-Psue-j@ zy3wPz9iWC4QyucG32CDpA%lBAW|aQxf7>j;c!yDiE||0CTaSj3#TYlU>F$)k10a+108 za?*z*9r8aV4)<>B*$JEvf@GPFApVgKG3xWl74i|a{GqnR$J-laW2sg@bK|NqbB}W1 z%(sj1^gCedz|qRdcfaY}%zb_3a@PL*TK&c8!k2T8Y%d@D{`GU{kLfQyeXaV#o5!zy zb!bz#Z~n>5%rUp Date: Sat, 27 Apr 2024 10:40:05 +0000 Subject: [PATCH 31/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0bba26b13d2..42166a050c5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: A new chest scar marking is now available to humans and dwarves. - type: Add - id: 5960 - time: '2024-02-17T20:50:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25215 - author: ArchPigeon changes: - message: Tails now stop wagging on crit @@ -3848,3 +3841,17 @@ id: 6459 time: '2024-04-27T10:35:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27265 +- author: Plykiya + changes: + - message: You can no longer print singular bullets at the security techfab. + type: Remove + - message: The security techfab now has recipes for ammunition boxes and pre-filled + magazines of every type of ammo. + type: Add + - message: You can now print empty magazines at the security techfab. + type: Add + - message: Material costs for printing all ammo and mags were rebalanced. + type: Tweak + id: 6460 + time: '2024-04-27T10:38:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26178 From 6d6e7f0c98ef94f3e960a3bf562a52e28fc6ce28 Mon Sep 17 00:00:00 2001 From: Tainakov <136968973+Tainakov@users.noreply.github.com> Date: Sat, 27 Apr 2024 14:17:46 +0300 Subject: [PATCH 32/89] [Admin QOL] +Adminchat flag (#26930) --- .../UserInterface/Systems/Chat/ChatUIController.cs | 2 +- Content.Server/Chat/Commands/AdminChatCommand.cs | 2 +- Content.Shared/Administration/AdminFlags.cs | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index 907268295c8..31e09e66036 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -546,7 +546,7 @@ private void UpdateChannelPermissions() } // only admins can see / filter asay - if (_admin.HasFlag(AdminFlags.Admin)) + if (_admin.HasFlag(AdminFlags.Adminchat)) { FilterableChannels |= ChatChannel.Admin; FilterableChannels |= ChatChannel.AdminAlert; diff --git a/Content.Server/Chat/Commands/AdminChatCommand.cs b/Content.Server/Chat/Commands/AdminChatCommand.cs index 979051e9d3e..1a7ae050b66 100644 --- a/Content.Server/Chat/Commands/AdminChatCommand.cs +++ b/Content.Server/Chat/Commands/AdminChatCommand.cs @@ -5,7 +5,7 @@ namespace Content.Server.Chat.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Adminchat)] internal sealed class AdminChatCommand : IConsoleCommand { public string Command => "asay"; diff --git a/Content.Shared/Administration/AdminFlags.cs b/Content.Shared/Administration/AdminFlags.cs index 52161cf3f3a..571982b548d 100644 --- a/Content.Shared/Administration/AdminFlags.cs +++ b/Content.Shared/Administration/AdminFlags.cs @@ -99,6 +99,11 @@ public enum AdminFlags : uint ///

Stealth = 1 << 16, + /// + /// Allows you to use Admin chat + /// + Adminchat = 1 << 17, + /// /// Dangerous host permissions like scsi. /// From 3a198cbb0d7def7c9e3fa22eba58454eea4a99ea Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 11:18:52 +0000 Subject: [PATCH 33/89] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 0ba5665ab4b..fe1a1f56d7e 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -186,5 +186,13 @@ Entries: id: 24 time: '2024-04-27T10:33:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26705 +- author: Tainakov + changes: + - message: +Adminchat flag is added. Now to gain access to the admin chat you will + need this flag. + type: Add + id: 25 + time: '2024-04-27T11:17:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26930 Name: Admin Order: 1 From 6d3e788dd666cc5b2dad636643bf6e4ce9e5b356 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 27 Apr 2024 23:17:23 +1000 Subject: [PATCH 34/89] Update cane UI key (#27395) * Update cane UI key * none of the pr passed ci yippee * weh --- .../Prototypes/Entities/Objects/Weapons/Melee/cane.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml index 9bb266bbdeb..5c26020d72c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml @@ -64,10 +64,11 @@ containers: storagebase: !type:Container ents: [] + item: !type:ContainerSlot - type: UserInterface interfaces: - - key: enum.StorageUiKey.Key - type: StorageBoundUserInterface + enum.StorageUiKey.Key: + type: StorageBoundUserInterface - type: ItemSlots slots: item: @@ -94,4 +95,4 @@ - type: ContainerFill containers: item: - - CaneBlade \ No newline at end of file + - CaneBlade From db555a7c79af0704680d49ec78035743393b71fa Mon Sep 17 00:00:00 2001 From: Ramlik <105449767+Ramlik@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:27:18 +0300 Subject: [PATCH 35/89] Add a handy security radio (#25913) * Add a handy security radio I've always wanted to have a handy security radio in game and I thought it would be cool to have one in game. Demonstation can be found in here: https://youtu.be/VQOLiTQAmKc * Merged radio files and changed sprite location * Fixed RSI not having license and copyright * Added a chance to spawn in security closets All security closets will have 50% chance to spawn a handy security radio in it * Update radio id Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> * Change id in locker spawn * Change id in locker spawn * Changed id to RadioHandheldSecurity as suggested * Add radio to vending machine instead of locker Removed radio from lockers and added it to security vending machine * Fixed radio not having a sprite --------- Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> --- .../VendingMachines/Inventories/sec.yml | 1 + .../Entities/Objects/Devices/radio.yml | 17 +++++++++++ .../Devices/securityhandy.rsi/meta.json | 28 ++++++++++++++++++ .../walkietalkie-inhand-left.png | Bin 0 -> 372 bytes .../walkietalkie-inhand-right.png | Bin 0 -> 384 bytes .../securityhandy.rsi/walkietalkie-off.png | Bin 0 -> 357 bytes .../securityhandy.rsi/walkietalkie-on.png | Bin 0 -> 156 bytes .../securityhandy.rsi/walkietalkie.png | Bin 0 -> 348 bytes 8 files changed, 46 insertions(+) create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-left.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-right.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-off.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-on.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie.png diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index b54c2cdbcfa..afbeff6b080 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -19,6 +19,7 @@ RiotShield: 2 RiotLaserShield: 2 RiotBulletShield: 2 + RadioHandheldSecurity: 5 # security officers need to follow a diet regimen! contrabandInventory: FoodDonutHomer: 12 diff --git a/Resources/Prototypes/Entities/Objects/Devices/radio.yml b/Resources/Prototypes/Entities/Objects/Devices/radio.yml index 74c2865d07d..43f84fe404e 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/radio.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/radio.yml @@ -23,3 +23,20 @@ - type: Tag tags: - Radio + +- type: entity + name: security radio + description: A handy security radio. + parent: RadioHandheld + id: RadioHandheldSecurity + components: + - type: RadioMicrophone + broadcastChannel: Security + - type: RadioSpeaker + channels: + - Security + - type: Sprite + sprite: Objects/Devices/securityhandy.rsi + - type: Item + sprite: Objects/Devices/securityhandy.rsi + heldPrefix: walkietalkie \ No newline at end of file diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json b/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json new file mode 100644 index 00000000000..18a2d932724 --- /dev/null +++ b/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris and modified by Swept at https://github.com/discordia-space/CEV-Eris/commit/efce5b6c3be75458ce238dcc01510e8f8a653ca6", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "walkietalkie" + }, + { + "name": "walkietalkie-inhand-left", + "directions": 4 + }, + { + "name": "walkietalkie-inhand-right", + "directions": 4 + }, + { + "name": "walkietalkie-off" + }, + { + "name": "walkietalkie-on" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-left.png b/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5815169abfb1130fd615856f17d084f3f24ea563 GIT binary patch literal 372 zcmV-)0gL{LP)Px$ElET{RCr$Pnz0eXFbo6fX}p5&l0h}lgJh5tT0zq&$3C5b0!L&39Q=IR zMR-K<-%fTcz+_USH!a-fY#dXy~h|M=A2Nt5(XrIEUNPG*%dmaT!E{#+5nQO z%KpO*VC^Y07rFw>qO5EKV3AeHwE-%VV)e8EEV3%OHb7-kte!T2MOG!(2B=Jm)zb#B z$g1Sp0F_CxdfEUMS(RKHpfV{|PaD7@tCA~i0OId>15i=*Ur)q6g0umMdjx3!hZqyZrA5##~fy+@D+fcSzL0D_`&h7C}j9-_MqKu}c9umQ@`Lv$~1zz^r!KtUj} Srs4nq002ovPDHLkV1fXKu$MXj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-right.png b/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1e606cfb74c5af4fabd68a551a76d900210393 GIT binary patch literal 384 zcmV-`0e}99P)Px$I!Q!9RCr$Pnz0eXAPhz2X}p4q43a_8Fo7Enl0lL?R`4|VxJ!C0PKQ4FZd@V6 z(-SVNMS?#|@be1+(173s*aE=?;3dcwU<(8%z!nHD0KWpaT3}t*a-Qd{HQo)ob(pXK zib(nXO8Jnv+NQ~Xk4QP*BCn@NNC4Zmm6Vd~`z|@>CTQM!|DRv;VJd{WC^Ud0=a?-} zD_`${`VM&qp!BmQ&*nQo6C7a;0U%V#GDjLSKsNyNnSm|Px$9Z5t%R9Hvtl`(F@KomsB1uc?APrElj8<9FGD0~NV14s&=zy(QefbZaf0%{N| zZm@0o$P#S|N8_*-qRLw6yU4n+SMvHl&;K(Uq30{=xjq6wP~a{KD5Yv^ZKrQ_+H~uj z0Pz15_yB6o!2-WQCawSrvTz*7%{*3B1u++Bt?Q#PI9yp_3gAI&7-PI$<-K7K)aTCu zPP)-TPv%817Hp?14IF6L+5)ICxpudF&Fe2 zL~J~rz`L^_pSuho_jw1APs;t}-2f022nzJBzz?yujUfgX)K>ri002ovPDHLkV1fVu D=x>X5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-on.png b/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-on.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd79a644160d79f8d519a00ff5bc7abfe1244f7 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}A)YRdArbD$ zDG~_>EDn4#?y*WRVR3VY5hwT>8$@~jCyL%|nRFl2>3PH8`| jf*GM0%vvGJ#L#tvP4VtINok<@44$rjF6*2Univ=WPx$6iGxuR9Hvtl|2f=Koo?>!d3|Ow%c2+KX>pB5pn>r$qCYk2N291yn{bm*>7tv z0b7g6L|4Vi4f0aBX_AF(-j{iAW?N|ZYBgLR0U#*w69tq~rM0%!w`y(rbWQ;HKLwUR z$vK$e9%SMQupkRZQB=)iQ4|n!f!4Y_7=zuL6-EFCTEiIQ?JDmLTcEt0+F0$cPlROH zMyGeh_|X!d1FjYT|G1yL${bgy6cGVn3l_#;t~K&JM;ym+YmpW>fb(X9EX$ClDY}zM z1tbQ*A>`0G1>9N;fRay@dJe(bT3H1g0CRvDAPPVmI^VN6AzUtqxuDS?V&mxq-ktsU uTxS5e&pU{GQtq2~13*w9DA2e9H)XPnA$vAlWdHyG07*qoM6N<$f&c&wW{HRZ literal 0 HcmV?d00001 From 37105b3400e9df81bc935baf821fe45d9c93c4cf Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 13:28:24 +0000 Subject: [PATCH 36/89] 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 42166a050c5..484241fd5c4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ArchPigeon - changes: - - message: Tails now stop wagging on crit - type: Fix - id: 5961 - time: '2024-02-17T21:33:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25323 - author: Killerqu00 changes: - message: EVA and paramedic suits now play sound when putting helmet on. @@ -3855,3 +3848,10 @@ id: 6460 time: '2024-04-27T10:38:59.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26178 +- author: Ramlik + changes: + - message: Added security walkie talkies to the vendor. + type: Add + id: 6461 + time: '2024-04-27T13:27:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25913 From c0ce5fba2a03dfb1ada8600008ab7b8846dcf828 Mon Sep 17 00:00:00 2001 From: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Date: Sat, 27 Apr 2024 14:50:57 +0100 Subject: [PATCH 37/89] Rodents can be Faxecuted (executed via Fax machine) (#21461) * Rodents can be Faxecuted (executed via Fax machine) * use brute instead of new group. * fax visuals now use tags for mouse and hamster instead of comps * fix for ubuntu, damn ubuntu bane of my life * cant copy hamlet, can now faxecute mothroaches. * fix * fix * fixes * removed ifs now using switch, removed hastag now using string. * fixes and no more switch * cleanup * more cleanup * fix * cleanup * moved damage out of faxmachine and into own system and component. * changes * fixes and done i think. * tidy * Fixes --------- Co-authored-by: metalgearsloth --- Content.Client/Fax/System/FaxVisualsSystem.cs | 48 +++++++++++++++ .../TransformableContainerSystem.cs | 2 +- Content.Server/Fax/AdminUI/AdminFaxEui.cs | 1 + Content.Server/Fax/FaxSystem.cs | 24 ++++++-- Content.Server/Nuke/NukeCodePaperSystem.cs | 1 + .../Fax/Components}/FaxMachineComponent.cs | 42 +++++++------ .../Fax/Components/FaxableObjectComponent.cs | 16 +++++ .../Fax/Components/FaxecuteComponent.cs | 19 ++++++ Content.Shared/Fax/DamageOnFaxecuteEvent.cs | 9 +++ Content.Shared/Fax/Systems/FaxecuteSystem.cs | 34 +++++++++++ Resources/Locale/en-US/fax/fax.ftl | 2 + .../Prototypes/Entities/Mobs/NPCs/animals.yml | 6 ++ .../Entities/Objects/Misc/paper.yml | 1 + .../Structures/Machines/fax_machine.yml | 16 +++-- .../fax_machine.rsi/inserting_hamster.png | Bin 0 -> 23368 bytes .../fax_machine.rsi/inserting_mothroach.png | Bin 0 -> 23838 bytes .../fax_machine.rsi/inserting_mouse.png | Bin 0 -> 23808 bytes .../Machines/fax_machine.rsi/meta.json | 57 ++++++++++++++++++ 18 files changed, 250 insertions(+), 28 deletions(-) create mode 100644 Content.Client/Fax/System/FaxVisualsSystem.cs rename {Content.Server/Fax => Content.Shared/Fax/Components}/FaxMachineComponent.cs (84%) create mode 100644 Content.Shared/Fax/Components/FaxableObjectComponent.cs create mode 100644 Content.Shared/Fax/Components/FaxecuteComponent.cs create mode 100644 Content.Shared/Fax/DamageOnFaxecuteEvent.cs create mode 100644 Content.Shared/Fax/Systems/FaxecuteSystem.cs create mode 100644 Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_hamster.png create mode 100644 Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mothroach.png create mode 100644 Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mouse.png diff --git a/Content.Client/Fax/System/FaxVisualsSystem.cs b/Content.Client/Fax/System/FaxVisualsSystem.cs new file mode 100644 index 00000000000..892aec1d954 --- /dev/null +++ b/Content.Client/Fax/System/FaxVisualsSystem.cs @@ -0,0 +1,48 @@ +using Robust.Client.GameObjects; +using Content.Shared.Fax.Components; +using Content.Shared.Fax; +using Robust.Client.Animations; + +namespace Content.Client.Fax.System; + +/// +/// Visualizer for the fax machine which displays the correct sprite based on the inserted entity. +/// +public sealed class FaxVisualsSystem : EntitySystem +{ + [Dependency] private readonly AnimationPlayerSystem _player = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAppearanceChanged); + } + + private void OnAppearanceChanged(EntityUid uid, FaxMachineComponent component, ref AppearanceChangeEvent args) + { + if (args.Sprite == null) + return; + + if (_appearance.TryGetData(uid, FaxMachineVisuals.VisualState, out FaxMachineVisualState visuals) && visuals == FaxMachineVisualState.Inserting) + { + _player.Play(uid, new Animation() + { + Length = TimeSpan.FromSeconds(2.4), + AnimationTracks = + { + new AnimationTrackSpriteFlick() + { + LayerKey = FaxMachineVisuals.VisualState, + KeyFrames = + { + new AnimationTrackSpriteFlick.KeyFrame(component.InsertingState, 0f), + new AnimationTrackSpriteFlick.KeyFrame("icon", 2.4f), + } + } + } + }, "faxecute"); + } + } +} diff --git a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs index 94a3fe21861..c375d97b8c3 100644 --- a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs @@ -20,7 +20,7 @@ public override void Initialize() SubscribeLocalEvent(OnSolutionChange); } - private void OnMapInit(Entity entity, ref MapInitEvent args) + private void OnMapInit(Entity entity, ref MapInitEvent args) { var meta = MetaData(entity.Owner); if (string.IsNullOrEmpty(entity.Comp.InitialName)) diff --git a/Content.Server/Fax/AdminUI/AdminFaxEui.cs b/Content.Server/Fax/AdminUI/AdminFaxEui.cs index c8be6618e45..5153e621956 100644 --- a/Content.Server/Fax/AdminUI/AdminFaxEui.cs +++ b/Content.Server/Fax/AdminUI/AdminFaxEui.cs @@ -1,6 +1,7 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.EUI; using Content.Shared.Eui; +using Content.Shared.Fax.Components; using Content.Shared.Fax; using Content.Shared.Follower; using Content.Shared.Ghost; diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index f492595444a..c21e0db20cc 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -16,7 +16,10 @@ using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; using Content.Shared.Fax; +using Content.Shared.Fax.Systems; +using Content.Shared.Fax.Components; using Content.Shared.Interaction; +using Content.Shared.Mobs.Components; using Content.Shared.Paper; using Robust.Server.GameObjects; using Robust.Shared.Audio; @@ -42,6 +45,7 @@ public sealed class FaxSystem : EntitySystem [Dependency] private readonly UserInterfaceSystem _userInterface = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly FaxecuteSystem _faxecute = default!; private const string PaperSlotId = "Paper"; @@ -313,12 +317,18 @@ private void OnFileButtonPressed(EntityUid uid, FaxMachineComponent component, F private void OnCopyButtonPressed(EntityUid uid, FaxMachineComponent component, FaxCopyMessage args) { - Copy(uid, component, args); + if (HasComp(component.PaperSlot.Item)) + _faxecute.Faxecute(uid, component); /// when button pressed it will hurt the mob. + else + Copy(uid, component, args); } private void OnSendButtonPressed(EntityUid uid, FaxMachineComponent component, FaxSendMessage args) { - Send(uid, component, args.Actor); + if (HasComp(component.PaperSlot.Item)) + _faxecute.Faxecute(uid, component); /// when button pressed it will hurt the mob. + else + Send(uid, component, args.Actor); } private void OnRefreshButtonPressed(EntityUid uid, FaxMachineComponent component, FaxRefreshMessage args) @@ -336,14 +346,20 @@ private void UpdateAppearance(EntityUid uid, FaxMachineComponent? component = nu if (!Resolve(uid, ref component)) return; + if (TryComp(component.PaperSlot.Item, out var faxable)) + component.InsertingState = faxable.InsertingState; + + if (component.InsertingTimeRemaining > 0) + { _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Inserting); + Dirty(uid, component); + } else if (component.PrintingTimeRemaining > 0) _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Printing); else _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Normal); } - private void UpdateUserInterface(EntityUid uid, FaxMachineComponent? component = null) { if (!Resolve(uid, ref component)) @@ -477,7 +493,7 @@ public void Send(EntityUid uid, FaxMachineComponent? component = null, EntityUid return; if (!TryComp(sendEntity, out var metadata) || - !TryComp(sendEntity, out var paper)) + !TryComp(sendEntity, out var paper)) return; var payload = new NetworkPayload() diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index 8df25feebfa..c1725536e7c 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Chat.Systems; using Content.Server.Fax; +using Content.Shared.Fax.Components; using Content.Server.Paper; using Content.Server.Station.Components; using Content.Server.Station.Systems; diff --git a/Content.Server/Fax/FaxMachineComponent.cs b/Content.Shared/Fax/Components/FaxMachineComponent.cs similarity index 84% rename from Content.Server/Fax/FaxMachineComponent.cs rename to Content.Shared/Fax/Components/FaxMachineComponent.cs index d1f269dd370..ee9459f5084 100644 --- a/Content.Server/Fax/FaxMachineComponent.cs +++ b/Content.Shared/Fax/Components/FaxMachineComponent.cs @@ -1,12 +1,13 @@ using Content.Shared.Containers.ItemSlots; using Content.Shared.Paper; using Robust.Shared.Audio; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Server.Fax; +namespace Content.Shared.Fax.Components; -[RegisterComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class FaxMachineComponent : Component { /// @@ -16,6 +17,13 @@ public sealed partial class FaxMachineComponent : Component [DataField("name")] public string FaxName { get; set; } = "Unknown"; + /// + /// Sprite to use when inserting an object. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] + public string InsertingState = "inserting"; + /// /// Device address of fax in network to which data will be send /// @@ -26,7 +34,7 @@ public sealed partial class FaxMachineComponent : Component /// /// Contains the item to be sent, assumes it's paper... /// - [DataField("paperSlot", required: true)] + [DataField(required: true)] public ItemSlot PaperSlot = new(); /// @@ -34,39 +42,39 @@ public sealed partial class FaxMachineComponent : Component /// This will make it visible to others on the network /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("responsePings")] + [DataField] public bool ResponsePings { get; set; } = true; /// /// Should admins be notified on message receive /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("notifyAdmins")] + [DataField] public bool NotifyAdmins { get; set; } = false; /// /// Should that fax receive nuke codes send by admins. Probably should be captain fax only /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("receiveNukeCodes")] + [DataField] public bool ReceiveNukeCodes { get; set; } = false; /// /// Sound to play when fax has been emagged /// - [DataField("emagSound")] + [DataField] public SoundSpecifier EmagSound = new SoundCollectionSpecifier("sparks"); /// /// Sound to play when fax printing new message /// - [DataField("printSound")] + [DataField] public SoundSpecifier PrintSound = new SoundPathSpecifier("/Audio/Machines/printer.ogg"); /// /// Sound to play when fax successfully send message /// - [DataField("sendSound")] + [DataField] public SoundSpecifier SendSound = new SoundPathSpecifier("/Audio/Machines/high_tech_confirm.ogg"); /// @@ -79,27 +87,27 @@ public sealed partial class FaxMachineComponent : Component /// Print queue of the incoming message /// [ViewVariables] - [DataField("printingQueue")] + [DataField] public Queue PrintingQueue { get; private set; } = new(); /// /// Message sending timeout /// [ViewVariables] - [DataField("sendTimeoutRemaining")] + [DataField] public float SendTimeoutRemaining; /// /// Message sending timeout /// [ViewVariables] - [DataField("sendTimeout")] + [DataField] public float SendTimeout = 5f; /// /// Remaining time of inserting animation /// - [DataField("insertingTimeRemaining")] + [DataField] public float InsertingTimeRemaining; /// @@ -111,7 +119,7 @@ public sealed partial class FaxMachineComponent : Component /// /// Remaining time of printing animation /// - [DataField("printingTimeRemaining")] + [DataField] public float PrintingTimeRemaining; /// @@ -124,13 +132,13 @@ public sealed partial class FaxMachineComponent : Component [DataDefinition] public sealed partial class FaxPrintout { - [DataField("name", required: true)] + [DataField(required: true)] public string Name { get; private set; } = default!; - [DataField("content", required: true)] + [DataField(required: true)] public string Content { get; private set; } = default!; - [DataField("prototypeId", customTypeSerializer: typeof(PrototypeIdSerializer), required: true)] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer), required: true)] public string PrototypeId { get; private set; } = default!; [DataField("stampState")] diff --git a/Content.Shared/Fax/Components/FaxableObjectComponent.cs b/Content.Shared/Fax/Components/FaxableObjectComponent.cs new file mode 100644 index 00000000000..57b6e610a32 --- /dev/null +++ b/Content.Shared/Fax/Components/FaxableObjectComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Fax.Components; +/// +/// Entity with this component can be faxed. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FaxableObjectComponent : Component +{ + /// + /// Sprite to use when inserting an object. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] + public string InsertingState = "inserting"; +} diff --git a/Content.Shared/Fax/Components/FaxecuteComponent.cs b/Content.Shared/Fax/Components/FaxecuteComponent.cs new file mode 100644 index 00000000000..9c9bd030203 --- /dev/null +++ b/Content.Shared/Fax/Components/FaxecuteComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Damage; +using Robust.Shared.GameStates; + +namespace Content.Shared.Fax.Components; + +/// +/// A fax component which stores a damage specifier for attempting to fax a mob. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FaxecuteComponent : Component +{ + + /// + /// Type of damage dealt when entity is faxecuted. + /// + [DataField(required: true), AutoNetworkedField] + public DamageSpecifier Damage = new(); +} + diff --git a/Content.Shared/Fax/DamageOnFaxecuteEvent.cs b/Content.Shared/Fax/DamageOnFaxecuteEvent.cs new file mode 100644 index 00000000000..b36f55ab5d2 --- /dev/null +++ b/Content.Shared/Fax/DamageOnFaxecuteEvent.cs @@ -0,0 +1,9 @@ + +namespace Content.Shared.Fax.Components; + +/// +/// Event for killing any mob within the fax machine. +/// +/// System for handling execution of a mob within fax when copy or send attempt is made. +/// +public sealed class FaxecuteSystem : EntitySystem +{ + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + + public override void Initialize() + { + base.Initialize(); + } + + public void Faxecute(EntityUid uid, FaxMachineComponent component, DamageOnFaxecuteEvent? args = null) + { + var sendEntity = component.PaperSlot.Item; + if (sendEntity == null) + return; + + if (!TryComp(uid, out var faxecute)) + return; + + var damageSpec = faxecute.Damage; + _damageable.TryChangeDamage(sendEntity, damageSpec); + _popupSystem.PopupEntity(Loc.GetString("fax-machine-popup-error", ("target", uid)), uid, PopupType.LargeCaution); + return; + + } +} diff --git a/Resources/Locale/en-US/fax/fax.ftl b/Resources/Locale/en-US/fax/fax.ftl index 1f1881a05d6..412f3d7f435 100644 --- a/Resources/Locale/en-US/fax/fax.ftl +++ b/Resources/Locale/en-US/fax/fax.ftl @@ -3,6 +3,8 @@ fax-machine-popup-received = Received correspondence from { $from }. fax-machine-popup-name-long = Fax name is too long fax-machine-popup-name-exist = Fax with same name already exist in network fax-machine-popup-name-set = Fax name has been updated +fax-machine-popup-error = ERROR - jam in paper feed +fax-machine-popup-copy-error = ERROR - unable to copy! fax-machine-dialog-rename = Rename fax-machine-dialog-field-name = Name diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index ad5b51d998d..1cf56c29c6a 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -432,6 +432,8 @@ - type: Speech speechVerb: Moth speechSounds: Squeak + - type: FaxableObject + insertingState: inserting_mothroach - type: MothAccent - type: Sprite sprite: Mobs/Animals/mothroach.rsi @@ -1535,6 +1537,8 @@ rootTask: task: MouseCompound - type: Physics + - type: FaxableObject + insertingState: inserting_mouse - type: Fixtures fixtures: fix1: @@ -3049,6 +3053,8 @@ - type: Item size: Tiny - type: Physics + - type: FaxableObject + insertingState: inserting_hamster - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 08e5e3caafd..0c87459164a 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -32,6 +32,7 @@ - Trash - Paper - type: Appearance + - type: FaxableObject - type: PaperVisuals - type: Flammable fireSpread: true diff --git a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml index 583b5e3548a..36be6451d20 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseMachinePowered id: FaxMachineBase name: long range fax machine @@ -9,7 +9,7 @@ drawdepth: SmallObjects layers: - state: icon - map: ["base"] + map: [ "enum.FaxMachineVisuals.VisualState" ] - type: Icon sprite: Structures/Machines/fax_machine.rsi state: icon @@ -36,23 +36,27 @@ type: FaxBoundUi - type: ApcPowerReceiver powerLoad: 250 + - type: Faxecute + damage: + types: + Blunt: 100 - type: FaxMachine paperSlot: insertSound: /Audio/Machines/scanning.ogg ejectSound: /Audio/Machines/tray_eject.ogg whitelist: components: - - Paper + - FaxableObject #used to be PaperComponent - brainfood1183 - type: GenericVisualizer visuals: enum.PowerDeviceVisuals.Powered: - base: + enum.FaxMachineVisuals.VisualState: True: { state: idle } False: { state: icon } enum.FaxMachineVisuals.VisualState: - base: - Inserting: { state: inserting } + enum.FaxMachineVisuals.VisualState: Printing: { state: printing } + Normal: {state: idle} - type: ItemSlots - type: ContainerContainer containers: diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_hamster.png b/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_hamster.png new file mode 100644 index 0000000000000000000000000000000000000000..5f14e3013fe27a556cf939324a970734cb697eda GIT binary patch literal 23368 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 J*@hl#{s)EQ{v7}S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mothroach.png b/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mothroach.png new file mode 100644 index 0000000000000000000000000000000000000000..d034322697ed03497fc66f815351a1c3966b4087 GIT binary patch literal 23838 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json b/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json index 1a8856301d5..00681ca6da1 100644 --- a/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json @@ -40,6 +40,63 @@ ] ] }, + { + "name": "inserting_hamster", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "inserting_mothroach", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "inserting_mouse", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "printing", "delays": [ From c56f98f99fe19d8413b533ad6ecd5c0bdf781200 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 13:52:03 +0000 Subject: [PATCH 38/89] 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 484241fd5c4..c5c4b3dbea6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Killerqu00 - changes: - - message: EVA and paramedic suits now play sound when putting helmet on. - type: Fix - id: 5962 - time: '2024-02-17T22:34:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25349 - author: musicmanvr changes: - message: Toned down the newton cradle and added it to the bureaucracy crate for @@ -3855,3 +3848,11 @@ id: 6461 time: '2024-04-27T13:27:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25913 +- author: brainfood1183 + changes: + - message: Centcom advises all crewmembers to please stop putting rodents in the + fax machines (rodents can now be inserted into fax machine). + type: Add + id: 6462 + time: '2024-04-27T13:50:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/21461 From 974129689c029fd39a055b63a65df12de4923f65 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:53:16 +0300 Subject: [PATCH 39/89] Glass box fixes + Construction & Stealthy deconstruction (#25365) * Showcase update * Fix craft prototype. Add glass box deconstruction for stealth gameplay * Remove duplicated tag * Forgor * Some cleanup --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- Resources/Audio/Machines/warning_buzzer.ogg | Bin 29891 -> 57798 bytes .../Objects/Devices/Electronics/triggers.yml | 17 +- .../Entities/Structures/Storage/glass_box.yml | 238 ++++++++++++------ .../Graphs/structures/glassbox.yml | 160 ++++++++++++ .../Recipes/Construction/storage.yml | 18 ++ Resources/Prototypes/tags.yml | 3 + .../Storage/glassbox.rsi/DamageOverlay_12.png | Bin 1294 -> 512 bytes .../Storage/glassbox.rsi/DamageOverlay_4.png | Bin 733 -> 311 bytes .../Storage/glassbox.rsi/DamageOverlay_8.png | Bin 1116 -> 423 bytes .../{glassbox-empty-open.png => base.png} | Bin .../{glass-4.png => glass-broken.png} | Bin .../glassbox.rsi/glassbox-filled-closed.png | Bin 901 -> 0 bytes .../glassbox.rsi/glassbox-filled-open.png | Bin 796 -> 0 bytes .../Storage/glassbox.rsi/glassbox.png | Bin 313 -> 0 bytes .../Structures/Storage/glassbox.rsi/icon.png | Bin 0 -> 459 bytes .../Structures/Storage/glassbox.rsi/meta.json | 26 +- Resources/migration.yml | 3 + 17 files changed, 370 insertions(+), 95 deletions(-) create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml rename Resources/Textures/Structures/Storage/glassbox.rsi/{glassbox-empty-open.png => base.png} (100%) rename Resources/Textures/Structures/Storage/glassbox.rsi/{glass-4.png => glass-broken.png} (100%) delete mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-closed.png delete mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-open.png delete mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/glassbox.png create mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/icon.png diff --git a/Resources/Audio/Machines/warning_buzzer.ogg b/Resources/Audio/Machines/warning_buzzer.ogg index 55bb179f57d479b1ef3b2bd06d33b6bd76a87666..bef16f46fb9f4b8ee64a11236b2fe4af7241d1a7 100644 GIT binary patch literal 57798 zcmb@tc|4Tg`!IfHF-Eot)!0Y&R)cJjp%S8`QYkf->^s?)TVyF)mKsY^S<*_fB^oJG zc4f()-j+g&NW$;jqxa|eJm25%^*sOlF5{ka-)Fhcb)9QJXAaxh9R*nMKY(+}Xb~fZ z@p1FCa_~ayF#8^?HBl(Qu?ppw!)VX{4KVPor8D#8`rWJlJAA;cjkFauIO*VSzvHl{ z9mUzf%8WHW#ekxyKvh&wR8XSG9d>bbaQ8g#b>7um9vvLR_P49a`e^C3LJT7%<~7+mmRk4kg`#Y;0RTKeA7yp-Rz6&6yH$7jT9$xk`HN2+`SX8@kQ=wt1jpEr|pJD)DLFXkE#e3 zL0--3W0`+194tI2a4xz8K^u}T5gk5SK9AuEhgw660uYEMIB-?Kph)0dkw{aU)Zri7 zj_~hlQ`&#@nDKE47c5TrobU3v(B%_+igD?5dGM+7OQ*XpSu9+#BuD=J{0bgiKtC+h zDHxC~seWxl{`O{}+n>~L<02v-V1W%v5(-DsX8EK$26?uQj~p^e?eCYmynC|k-4iZW z6M%tDP{?*j&-;IUY)@S~|9}6`?B8qwG)T*O50QEgsr{x>^`6_7N|FCF zgt7PqA|i3a_L?I?R7$jDkp+Rnl5Y|Ba;?1yHi*9UnUda`KHH?ulm1V3fj~w_P0X=E-Z!>NM90+tqSGN+q3&}aXX zeQ0pqEW62dH!f0w;|W#*5_uBIV%`Zn$=TF5@;PF0@p^^@;U=bnvbo+DS(sA*h#;}J z_}>eQmDjj9C+YH*w{pdeito0emj|`Y8ea=*Nqf1dkc+qNf?OO|GMeS}NL}A4x1`g2 zYi^3Ep?vO|M8QR+*d*!@1X)57$?$wDpAV(tzZY&ss%5=s+kbspzKa~;lZKx*#qCFx zw2mJ;e!|D))b$I!WtS|vFAR1C4|c_!+Z6df8S6ii1EA1Euw*jDDwbNG8GcBYV{L)| zl^hR&`l})hSEUX+pxSSt-c`Q0!F6Np;O!~cw+sKoM zIZUd^UMNjZwi(Z^;i%OH3F^In(|<1j0L(}l_(eyO(jT#x9Sk3 zFQq6FB~lYjUydPP%-8>~qh!~$=U z={<6IqPncK7muNwbS}xz5LPITN!c_Ta7gC}7#b9WCz{IT=9(Bf%IA`g8gBO?nXb!) z6%O(x0;dhP*IlL()4WU-$8sV}&0)ngb=h3lgZ)-YlBrW}PA9DJZZ(*oq?npI6r{X2 zmy<4m71F7l=1$bSPAe|fP!Dt7TRF;?cA7t6y*vkfIa*<`-RqDcyF_ZUjy&uE=W@Oo z9jaYNE;py$+#t8a#PFbWZl|vN!;(%bqk$`Yrwwnm5|=%a6H&9H@DO3E32J!?tAkq5)r0`2GY6LtgcXD3ARfyze2rs z%+#;|w!2bPXKD!bUMGB3mk!?x7c91@&itq$N-p@!+zI+W>^#tA(Q7r(OWogX|MC)h zHj8BiAf>phxTuktUL-~0RWB}Gb_q|&2st*Ux(*V#Muz&*IUCg>pP4Gk-^w*Hm66Ul zW)9t-Nl4yFrmmc_jWkGPht?}c06I01DUb|xB6|%Xm91kTPs3+pDW(u*h8MhuKzjlG z9!NbA>qbZ}uXsoc_^ckS7|XO?vnCt>Y;lLixA2IK*Tt*ZP&~1q09pyEA&ag;m&mX+ zF;`iiItnLkSg>}RV!C!KFOAkpz|}!(b)ndyw~%OtH_+Q#DJi-{XeJ=#EkuTYQO_s>Uf?{*=sXo}aR~@L z;RE{6E8~LrvqR}(@s^>1JjxX)r=YBcF8<$JCpZ`Mmb{x)>qL!QyS3&*C+hkib5S8sdeDD@B>4PGuxtt10Hd@DtLTz?= zd!3Ni6eJDA2l6LWg59u5XZl`wvGH!daqUJzWJ|; zh*ngvSrsO_^0}}FJ8RJ;B1{bbt>811%T4)rs9aPo|2E-68Ou~-jZM~klC_~&9A|3C zvDS{|tfcUvlU(Zo84zuEYpuf6kj1y?Q0RD&c_sd>fG=XboK<0}OO*akMJ^lw&T6d! zzUbc)Itl=-to2-t6>v$bmD8}YajEg3^<2gC)hR#L140TXqnL;t? zR2;vXl4NN3@byOP*tBp{(=AYgLVeiDqieXmWaH^8MWg0U?6-2D21Oa{QB`=Nq0_^E z$kv7GV;^X7ARIZ}>CrCsn_i^6 z+-}FXU1OPnB#mG1&EqOY#k^Z}#>Bi0A3`hGti>)7G*eM>(y3|J*g!b12652wK4fgC zZ(0jk;jUE3$*nbL6P6Kj}|`6B!xl!vJON; zgBA-FP{i7rSY2Kd_5TuP7$nH3K?nR~&7;QldvTxg4*j^zi@n*pKI5vybyI3GzfQt? zlPjt8C^Pr)O$f`N!6=6m4JqOkPfF>unyNTvsP0%amLhR6^J(V61}>dL=1$vf-pI*P zO9d1o1fG60pMdJz>VA=TEY+ak^)M=Ep23c<`>{tFDM~TRo5{%0@X1D z3it(;pcxWvZ#$}{p}B{qyH8Kw(CCnf>9PN$5)cGowWYx;f~+MAXjIlC)&*@SQL57+ zZh6ks^w60TtIt;rSJhXkt5T~Xt75C7s{*T=;P=*`o`|T|zuf%ZJe`iJcMk65jVj}f zt;Cg`7z=svg}-|BK-z@JqdplizS+)vfdaF4Z|D9Ax4sm2roL#om|u3(!|TNL^LqnM z`4soWC~o)sEY;T&8mGPI>{|yrx!V^4R-0rR+h$seoBx!wb)45eE+>|CxW#wjV|8E2 zi)(*^2J?3Qb6@NBo?ktSTSZ2veIG3lv`vD~Rab;`C%338Tq*V(;e7UkO7S9+4rQ)x zt*;m5i#R33lk#I8!Q%z;HRI=IQH~ znXgqRbaof@-`SnlJ|I%9Jci?+n)Fnue303b|4$=!(?D<6qpXP|&;iNZk~FqXU#oBIwC}@f<^F(q{7S>aB2K$JH`fpl$uxi`xjHs@qB#m^UtNq{JqqhJ)zwnT*9YD z^-7fQS#lcf`1!mo%BR7SgKoUJ+(9_8&mt{HhUp7EKEO)^2QdIKl>pfQlW8Ikf*K5W zFjvwyclfTn`;_RgvvR4e$+}?CT--`*YtWC{bEVROE;{!(Os*`3?YLHG$+uE6eo;O; zdpa^gB=nABrwNVcIA3K$)Ot|z9kV$81Aj9w$an|<=tKeVVDWA6Gg9bT@3xxi$6^=! zwHC$}gGPqF~;r;s`9<@Yw=0uek*6{gz-t={_W{=8}bwcscQjFN*?uEyTZj zoYbnQkmPA?`LN(WP+4{`_m#|x6{&ZRs&_Y5RaH$s9|(DVW6@Eo``tMPBk=a&&`}K{;HLmIkvRD@|ng$i@5fZ>$j^GgVi^}x3w%- zRQ2qB+%l;#W~;4zrEBc?^RqYg*q8y}-RP28W7(_8Av>TmbYXsAp>4H(eOpfGm-w3U z8@bvsSfKFF>VZU6uYg~FZcv2p#|)?D9*p-`i92^Qc>R!r>={nr+^9tGjb+*^17E~) z1D$bs%f2HKwJ{v?)wM_5^*MlYVIIBZ3P5C3ZXBdNC(dq`_;aTX4+KRhG_f0Zfe10` zo4R)>c}G;TQ{n)0i1hPONiHP!QOIVYzN)(?0rY!U+;{)7^}TX*aFQ7eJs1HXhcE?! z1~_<~ z;To6wv>eC_BDF!&Aq_sC_#P-ysiO@}n~K#BD=xMvn4ME>={-2hwXA6s3uwH^jcNaa zB^OHWiS0X(ih8^rS8Zoz^5^#UU%do~%gOcZAeC%+DCE)omGPQWf+em8kch17+{T_^ z@;E6KE@Om9!fk;KY49I`gj)j)!bQP@%@pRF0hK}Cv(}Tr&8q{zWoId@hU8-Qg?h3Y zssj*3h9w^y54a-1PWngmKSR(knJr_*Ke(i`j{(D>J;-j}zKVodLEo@*%tK#c7jG~l zHsr(_1zxf`d%?~1OQ8quZmf;kH8nD9lkSjI;hP^8vFzBc$wQw?lGff+{?8Use27zT zsb;$1sPdO+kMXe&*JR@SC#(u?%8GfZR0hga8gu>O#Q=psFNc`pl3gvDN*Ur~SJyu? zW-Lj26?}`FHeh6O?_Q=BO@v8vL99Q2H%{~-m`46$r>kJHZw3w+CY8oMLT6RV@CV=* zm4{$deuRg#0FGY0fGN*yA#{HIDN+ej5{R4r+;LYR6*|vzy z2Jef?ic_T21N;rqIqR6b!T>w2(4R*4Uy!~uhg^U2I^gd0zKa(89q%k}++35ji(nnV zi|iCp^8(R$<~$qpYJi*=ICq+#nnQYjm4#Y>DJ$^`odEz<06H{ibvdtuGIc9TW-=rK zKqWsgI%?hUdh`ZDNQ-=sG^KDOkOP^RA-GB#$K5a*(C)Bm0ob##kN7d~@#@fz0zZje z&y#On(6UZ<6uCb!ArdyKwHPZ97br9}m8)-+u77m(<+#d=!X0hmdS$XZ^mBivg%D`l@+qmzD3HNMm2$g=hzCE5fsNp{YtiSn{A`|7cp~bCnFj@@GwmicWd?wshhm&nuH-sDdtWzj!l;W{T9SqIizf71d_R-u z_-G+`8zDPc29N~2I_%LjiRQh;R=AQNgrvY^lgh&A0fa?(D2j5=ayzx> z%%1a8H8&pBR4r@VrxEL6DR}i}c;4>3y{FxBDoUf-yet|cHzwj zbE~I^;_VnCdNM7VJxan=+mQ(v)<1vQ%`ozL%uu=(2ExOTZ;Nir@v=0|N98nZ;QWLgKSbd0RTx>Xrt5-D|ikr~4 zSyktC8h#c*tT-1AXaIEXK=HxP)G;-)!C$pPN+bZ*SWwHOCSZ*T5W`$g0^%bbc`yTY@v zEGg!37wF`E@MN5@+aqiX^P85Vt=8?eni;}sd2LNLs!Ae805G^mYd>qA)?e)4a^cEW z#nf@;OBk5_CC?E!o0AgZ$FB)lY4E)m3T;~QC;_qw#CuKk>BSW&4llcH5i6InDs48l zi*CX~0KXZf1qixqOW{TZ4p0Ez2k3%mI*#^(E{3N|q7M<$8cWMm z9z!)er;@y&R6ONx)y+_n0kPzR2aN{KDJj$_#BnC8kMwgcMnD00OxYeA0#RVf;UF;WCzD05) zz}-ZR_8hfifF!b+Qhq=WKmySLhJ+$W0ng%<<0bH6JeW01)!eN+EFwd-|@_ z&M+ze@sRT@`&4UYef&lP8gI1 z5ojz{0mU8^JWG}Ul07ByOx9k6KHnm2+5NGAtHB1VCKF~2M~1-kzDb8)$Pz6VeHSer z+Cc@x9Tr>v$`xYD0Zib1wM<`hP~<%B{xC;v_>v~qdGbe<{j19jsXdy~8aci5ooMB2v& z-0O-?DF)oKe{y6*nY}eA-1wDn0S#3cc$!IU*}@o($j#KoO}Ov@CW|6Srxb~aBTm8= zC{Ta|#1?-2g;taSJ|QR#P@u4`NVW<>U~c^PAy_xW1xzrkDtPfjOV#tea+Ogl;xp@< zowXm{PXmZ9LsCI($au>}8)p`O}+b{T1_V54FE8oVs4F-lkmn z?d-QW=~;K}otMJ9qsts(;d=|5>Yw>cRr1EV2a8cM|r84DU&v|@6WKzXDgG%OxO z=$f#eQ2-4-`wviH2~TXz#`r;xT^|P&_TfaqC9p;uIzWyB=&e;lDGH35#a;PS5a~Nm zTx4V&@H579S8%6~W}_EdfVg)=q>kzN^R}Xbi{~ArEAi4YjFB&yc@=j4@9(<2XEc8_ z9`v26i?=!s{jNUp*Q{SQS$+M>zxwO+-CB$B8{f@%Z3>Lg55)#EYl) zq8e3<{gp(FKBx!a*2lmpW0XSd2rrEyLDGZ8bBC~NX3Po9z%kS?L1=?Dfa;hXy45KB z&3L%1RiIZ?b>W{Ro)TM?hRF@mDrI%UD(@=yD%UCw{*hMsR(HWC_$IV&?9Fasc$P%j}drIP#Se&&mjU#0{d=F_BgWj9)2TtOQb#edv&0dunV=;AuS zhWV^U0K6z_0K9Vh#cjsyPSJ;DE_QGbtOwZ`;NI=xiV&DOXbTj!2%AVegevM4b@xz9 z0^|V}%;Ny>)GFJKmcRGF4i-?Y09!7GMVVrTW>>XQgZP)UtI!J&IrMG)&tc1&-m{TK z^Ih?t7CRE|#XZv6W8fC&6VF=^_bT(Lb&1jw^(W044Q(NOcT~;H>nj}c1spU5p18{# zh^@Y9jL0g1GvU&V13Q>Q%+If*)g9=ujdT6WZ-O4ykE@*cYS$rBWPMh3LB;FX(aZbN zPqaSHiYdlhhu20Og-FxnXV{|Ur5ZfYc|lmYp<;35wP?$Vd*y}ur(7yWiG9li!dID4 z)4MUL3fbAm2|vR2JqfS5ouNqN3|B@~@i<%}cZ>isgyIHSNdX+8w+Rn@e&N!*X{=-) zIhus=gC>!3kww2DSIsOO9oxt5v}ObG&|ibofL&RTwXu)9tp9+wihW=smui+!Pqe*m zuaT&sQO7U25BCHOl=HPp3`+Q8y*uI@Tw_a~KH$jcR<{oLq}V@t>e+5#db3CX7aN_8 zYh1&_#vwtgfC6F#Eb*wubC=c7#h?wE z6cy7Mcjqhkfq?MK-4VcqqT&uC2_6KH8Zt<<(=+ODFO4}IE(h3vu8C&Nx{Yv)5HL4A zhD^i60g65W2k0cIsZdD7AY)<}1or<6bo_vfNaW+TpS(T!6Bg2uWrbboMpHb}CGT4w z25D6ND*w7;B z=juQQ&zy4_jiX;iPs<=RvHq5Gb7XSe8%;&eK{w%%XO@ge^+$p2gvP59(~l?0oGx3x zBy~Vsz(4C|CWBWslvISx9N2{~wG9XnS z;4bpIEpGkdRH!{TBj^n5p)f%XKwx0dzj}JAb~HhW2QVp!&^i{PL=qlDx~$<5am(EB#}T0r)5AaQ z(zP}<&%fzTH#L&ei9I2IYU4+Im8w^0D;SVdnOOa)EB?XuDTu+>UgNR zjyh&g`}xWdWE&7m-FC_0Bh`qf@!%Y2wN~@RkZNCXtUnQlTPiXaO}Pz*={WJgr>Fu{pCO7c*_F zfFV;4D;OlX_Ij_WM?`2)r}uHFpz)}1q<2VGLfOFNCL9O=!(enPE~=2ch)~BN$T8- z(CQ+-Hx&8dXGAbMNrw?aB{$aoCL4Qf-6?7C4c(@&uQ9>_CN&!ayx9b808t+hqjg5G zB5G^6(r_@{i3aJAJy`afOhoCC(H3slVGgPD7o=bk15|Gm+2Lxr%>E}bpFH64i$m54lh*saRN>UcDbu{o;?7Nf#rB=Xn*7{GM$TM~g7k)*sH^_% zIp;*XC0nf-G`DxoiUS`6_a{XpNTO4Nd&F-9=4&4ZUE1Qm^YcLo5;3;aVusCbzy<)j zofNtN~*n~i&X{<^Tkie5f03QV*fs0|3 zAuvwNhbj3T$p-)Fysi6u|DiNAef}5dNpsq7A5I^5 zV4FbQt6lLv^=p3=j6IvAV#z?kx0rfTV_TX6A*W1P*l7lNSU(Z_%W z$^(8tjgScN7-(II7#du1#Lr%2G>eOlqwyo2g+{OmAJi#WEFG2rc=A^;_P`9puXW3i z0xxHn7EYddYF?*bEgieppdJik+I^yC+(Yr-EBE*2P!9+x6Yg_x=qI+Yk+q^WD2Q%F zc%k>BpzdkuD`*3eZ)yk|aDKU@~2+I{=)e*Vy zw=ib_R$m7o8~}-AJ%pDmnLg0R|1;_XZf8!U_=DcwOGgPh% zpU8iz9Q%UZ(iaYv3UfIPW>l#=QV-Odofax`O3E6!^Y)Y!0Gd)CFM9kws!&5G6gJ29 zi%!S}UNicAys?fN=j5gBd!yXO3d|jxBlJsx*3&#-R?w?Qjaf4k3*6n2u8m1jXXMZ+ zy~Kdr=7OXjg^%0RMH|l_HGc2v6Zo!TwFFQ|aob55R@~9wnpAq3^P;ovc=LLp5&9OW zTHkuF1wVy{K+q<@@=?oaqJkR%5rO6eAn2Nth&n@%b12XRKTWuSrKtH40BD0ogdKqe z6wooU2z_$ZQS*Z)$7?fgM~Y`!cvVh|4`jUYcAkqG-dtDn`GCcrWFD)6PxZH7SoAAu zT%=aK*HZH5)U)r*Qjbm;JnSQU(AV+4LGk8$@TG4?XS?4tVv>&_f{Z2qQpNDLooRED zlKd|5Maot?w*Pd_V1P|BWCk6~iO^$ul)t69FkH%=6mi`kld7L2yaOJng6FU>pdtN8 za*7W7o^Qn`RVF|91ByNKgq<`7R_K+ zSibM8cDW{(OK_z4t=$t5d+itY`Z=HXAjemxf2`YoV4QUAkWbt-)vzVerocN7O&YzjWZz8i;FZZpJDWtr!YJZSMHyRsh4G75T*YA+>sW?XFt5z$=SDxf z+fB*S)44HvZVDO9=o+pCx{@1c?{3fQ%@H0S8(5cb=&2Y8S(+2r3*}|Zg7`?cC)e*m zneLp=C$5MiH!fgJDipA_AQ6vk1?9>x>j7B>Y9z=BGej|<4Jd~jQMov$k1qyhehXF${oEVVlBkc)j)Hbkt%^5v>_4tcI4wq*Kw`gGIWvs`856JWUL5c>^9dpGCr1!Tk1)FaWcKKsloce)OF;8hmZ>NKYr&n>{oNvjOR+1e(5 zB}l?e7X>S61M|C3JfXh80l&@*dwDh+D%0sXVpfq_xwB=Jt8qHNf)DKk*=%gIFcJ@) zdHOh*>vjwL zT|6W<4ebTf&6pY$v;+Yrj?dcm?VCwc(Y6uYb8)z?qO8zKP4ii$R2yGBe^5&DmqRYI zn>Jplt9BW9;2i2=_x_|}_nZvnvrFvz_pj>agH#zJ@Gjh~AP1crfQU!7LHkVr8}modj*!p*q8=c#D0& zhf2#yTC>haC+z)CBguO?32@Dy3s%-H4=!C9*2u+3RhN~;0RVj#2ycAyjd{!g1=`CE z;4P-&rJ#EqL~;msE)(O9{ENPTcltlDF}fe)3{%amsFq;|O!eo?L2+~x6#ixrU<&_V zK=qQFTR%>Wl`)W6-3*UP@UP-w=0FJki?42nhbSahxw7;`B3%nshHG(d?TQMr_8F7C z+Zk0CiZxxH!IPUZS|2l3|2g|;czo;6sKW3t2ZqdSyISd;^%uT`#HsMsEC0@&Ua1~4 z!Mkz-1*I0>%0p)vmEzRVN0Q`5$w-euttak+r>FJ^?Y?QfI3jW1)$>x(J4>_D4cU|B zSUPV}mAhF|#GS8eQ&!OX>APZH;B+oHtC)6qC!cP!&}1DQiZwv&4~@(a=rO$&Y^Uoa zFcd)JjOH$e6##*$24_5h28;M6_Q)_lkbtA%k=AYb$I|z?OOW0j&@jdp>4FWA+)w#- ze?Gq%Y=DdGJfH@9B!X@L@}vM$c^#nr^%bgB8fy-2+4Ed;CWx!?l(#pxR9lkCm9N8B z_AcQg$#*nV&WPWSbWZj+T`IXzFEAqFa64Z9XvZhTUEj7I4;V=O+M-#g0du~)alVn> zdd1)NR6B~@>ZRwE6)IcZI51X!DI@Ib8}RUO)3+l#XpKQA zN^|dSxVSy5+WoXTbM|d$!aBg@SNJ*{Kv#U_=p%#|1z8G1I{aSFQ7ZiG088rHinR%e z*AJpy&%dAudxJdys;%{Oh@F%xh5SmYhM$PXrAj57JVYUF-S^4&{4Z=O&t0gSQ~9xE z38URj6XRII%-stFz?}^%0$cg3KGAA+ksmAb}bwR0AForLn*v|3`xFm~Iga^dSOYCPNTMFxA}70&4Z$c)SF z#C~7d%DCNGaokt)ls~*H|E8kH^{8#9$6%Gs$IM(;uRhI%IWJ$;;+kDZMX!ygu$RMh zOL<6Ah*ARv>;~+~{tq|ISW6pVeM+R^#8`UJM(a^!07PKyY^pu zhS=>yI4Ja@<@F-W_~{-xs4U`UW=pU%H(dQ2U^iq4sDuG--EF@l_!xdLFsHyK1zzzJ zYuErOfsQjVNKuHkEre@=0V=u~B0y*iM$4=*XlUF3fY>_VH-s_{basKor&)2a5T#(g z+T9B=s{G$te%;<3Q+nek|KXmLYu~TsXY_g7l)S9rnlwzXY(5A{aeW8lq4THZ^PlY- z#;0X@H&x+7Dn1th}Hv1bzf-y8w3=aGesA;YFF1T>5QMtnX zE!;VPR;Dxz5|Bb8(lMu*GLJ0_RWsTp%%3l_umXcH{=+Ju@IbV!W1I&?gb$2gvddT+fBS*1u#uC6zpa$smV*0c_{XF)R z70hRL5(ZBfr_~WCC?)`O_W=nU5{csiR{6#I_M~Co+9m{tV8jZW2H6OJ0z`6fG$&5f z@nh~#z|i>FDG2n|MWH3X$O;3P4DCPttKWE;j2G+(H5L_c2x}g)_u5UC9*h$XozpJ- z#8Hd$b^QJHnCj*yKW9~JG?J6t=D!rPt;dI?V{ zrRU_@w*tCjS^CE%pFLe)ZvIohM>E6De0eIxF6rzndn#`~RT%WzhH7Y2kq++eIY4t$ zaDZOAdq2g%^Q;9rABqS-ZhgpFH!CE_rM10A&scZF0HTBQZ!I01ZICS4D?r1jb6sPu z4!f-!X}TaNFX2Z_fe3=^gf(=sPu!Rx0ZqC{Hf97M%$e`m8MQQu7<(%G$<)Q%s5?JK z-V(E)f>vmpXd_VOM)YOD3}F7H1**h>3TDV>jT#^e1K<`Me%>&2H8I%x0r^n;oW(ys zi5kY;hW1O!30xgb7e3}o>`FT3l9o_ZRi*swnqVPT#jn8JnYSlP*xYA`VOD5jX>tey z=vhyxHBX$TEH#r)G|I%%;C6~|u(oi%h~9YMo*g#_nm;GC3CqCOj{Z`3iJ^ohMwwYv z>nB~fGx=9hJYINS*j-S0PIPz47O6X%?KdNOPL1KMs6xngX;yz)ALqt{h#-)FYslEw zVUQm$KNq5kMzg}bzXT#X*3<9^*s_l#3V8>GKNvDD zHcVS#BN)<>1bg)Q_Wd%f3@v|f)t5c;K=a5eC7sp;DH-mwyHtEP-3ofHRU}v^Zpe))D_@(2@ya-91!LSVp5^%p)A(!=HTtDu&|Ndm2ITaULPCR3 zS%)j-u<|Yzm+qlD7T+Fu)K4(D9GZ*o;L0wF{KZcgAT@~-R@XNu&E_z-8Jw)e{bKd{ zdU%2e=o4wNVFV1|1ohl6rSvt|>5{+>!~Me*1bQqQQ`k==Znf?h<+uw7B6uMMR@n4F zg7s46U92ybmR0+se?Qc3LiMI)z=6#DmCE^DBRN8@sveGRAw<1;p@YFb9Q#d&N#{J^oY#Tj zd1DFLC<-6~mVfbsX*!_53-}<_DEp7`x@R8`_#?h02&ossO}trSpp}``)i7!(vMN5b z%8rN&o+r|va)T*-VzA9`@r|Ncj(#l;^W^X*kyx#5KOXIUnsK+5{wzu5?6<4Z-%h{2 zkzS$jcue2}@#mZ6yGL9$3HJJKAJw$VaT`yM3gH?*fdK;YeI1QXRo)ZaUXg-a^p)`b z!M(ha{dsK*l7z`~-|D}-Eh%GfnZ^ro> ze!Ob>a7lRHtFY1~_QY_7L6iYy+3E*l!$96)`X}L_r9=X3-QDa6E;=&O87E zlfcM2)MAr(*3=puo@J|s2S9cf%n!~yF&wyU>(^mcAtE^Gc4c^*!|o2_12=w9H&=D8 z-(2V2GW9Mq?`mv8TDx-C)Mw{ud+X;PcD8vvuq*VojuoCzx&8pmN;OtFxQ9C3_Gn2v z(KPEv7$x@S#i%GXJnPoY>%RrFg|Gc?NZqU5;4F4hrRb25 zLTw#=dX)1dCVCajVy_Tw*p2>-Z|=Wzb?0Y%47p6v^gbo0*m znVeo_qj(ozZFP0=y4V}7SK(&4y0G5rykBy0npkh$@A}F!`Qp^^CP9T?YW@ls1uzSh zisismMfI!3Ffj%<6CQyOepIZCos%RKUzIXeD2J>~Bn@!_vQgJOc_j4hC)JbUH#h;? z#UQ`#CML~)lO856{DKoAY>rh>;fKzlI~(Q6PCF-7w5)(htQ;7PHlszMXwqq{WG7@K z9Mm{i(1$(*au}F>UIUoI!7~93(1_57W08iLX!sp^MlB26jkovG`nCwz4RLMA%nSS3 z0pP@FhY$0@Z760X7BHa~yRxxQZDD=Iip01_0GGDfi4cNlT9AmU$OEp*CKFB3Q|jwt z#f1wrqzw0TzVe+CDh}&O*oIMQytDjF>YTxu>4~f{>-0@3{dM9uPO~382(yuvd*T#9=6?6SB_FWEC1(C~G3+P;iQo!(eg9&!wzwGP-iyO(|>@B)E9 zvt~|fgdowb7(>}HL85o)@QW;-k#^vT$!;$IR*R9!W)jEsXj|7KhWUz62`NWEdu+3D zhDbv<3ph}+qB2KOrYWqA#JbK5uPJj>Z`&-V2CNDgTvxZ?;{9RW_1-6=UjNH%uwveq z)T;%v@7>K+a83(SCu{J|-+ipMK9&0OcFAD0Nz;nFC}H{!2N=*z@X5dQdztJID<4zZ zp0O+i4~4|__&7}OsndeH2{4>I{Os@!@gUA?sGuo|_RCAP6o zU@qA|BzrzHIPdf+X=&avQBS|Bye7XF%DUG=GOQ9KW0Jc|RsN|}A3~9-^0Q_=ZAJC=DrNO2HqFbXZk}Cg-r-s_ zNK1s;j07UqR^7UxVLdxBn@R}>`x#6rcZFoBJ{BRlKOR_KK0KxAE+Y+NShzcN ziSkC{<>t>D^R!NZ1AxYZNb!790~|yfJ>sWgVa#xpj6&^|p)CsZ=T)qb44nsud!SDsDDaFBxciGR|0Ka*QTf8l`(@ zlvcU8S+zGsx3%2Au{h!=ZWmBJx#WNLwlKr8AS0$#OFg6VMPR7!8P$HRyi_s!#X)%k zE0~goJdsHRtqi4!d(q(Y4G_IrOncg`36NW~281oU3W|$~xIq ze@$`tLXAe>m-kiC4_`=MsvvgPcB~yyiiQ-$vBwT6YSgY{6+U@|8#}wgzU}$ z#+#&fnxlTZL%l!vzn@>vU2XUk7&NQGVHO<7}W&)3}yHrMq}D77iK6R;%yL`^_Xo0(m$ zc<@#$y%x8c5IX~Cg%V?Sf74UzyMI}hez7)0=pyJmilPW8 zuQ2;a-<|diWp4^99XvC;+P~3hM%}$mh!$Qyugil#KEg=aC{zovmtutM5{cbhcMl_y z%ea}_n%Yp?g&b#%^6zh1V%rl#>XQ30zz}YPKp2qjBWWou9ayM5_p6U9;f&0I*}l@` zZoQ79A?7@0S3;aW7r1DvThCWf6|EH$l&&}WzqU$`v<$Pp*nQ+?gug>hFTEFx*C-z- zRBE_&v+_FEv$(5Q{cS(Ln&hrkwyS-bW;c3eY3}(=9&O3^2U%eiOJW^)_4M{k+wkDi z^6D}XjG)7rFZ$A;9QXC9s?WdEJ>?a~T3@j1}5yT)cEd|9C zCiMXlI&&NND(W7Fzld3b=|qk`K@7~lHin~PsjFO`jp?VgCIJ-6&q;)KaU zFd0_c#m03&Yg+_On=kZ(eSp%?;G{cJANC#lXgrJvB3A2wE=X=hcgeTT7p{geu;>-jn>gDXDh#F8!sq<4-kx%AG%*ujiD! zqRhxEGsgW6UsZheUi_rFRZf0jJCnfZdi3SMxEQskF4{8o>w#-rwT`azpS@G2!oxypRIsnGCxi|}s)hH_d>W~NK*^rPfil}E+z zxm%|^BXzvqaMO$s3LigEXmY!Cuj#0eR;co2Py8G(S~)Ybk;06uYwi;kK$IB?7#v6w z0yudzv0IaxjpQN+??8_xz)A!xsKHgm{Dvy=8g1N7JQ?}G>Y*O&pLfX5@; zU$Ed$ord?$Pzz>9$0c2~iaEB5HitjVL|r`?fSbS~2*HGW=oOgBHTu(P(BE6Kdn>T=W|M__-uxAFO+wLT5Z!|(?R#pa;tvzn4cy{l^F~v%na(3Z znYF_n`U@L3hWGHy&blIt_tpVyrl>2u$~K#y%5JdF54A=RXaJLqAz*Nc1bue>)dy8w zYR)=$H#(6y#0H7WCaSqNloN)6I64t9O#-99lORI3?p*wQMT~5gvwTw5uviRA_*ZQ zvTsqAtYyzy_H}+|bnoZ;`oI29nR&m@yw~%b=Q+=QwD6K~KB!DnwnK_P{LjeN4{r;( zy6bVt!B^lT4y>&oq;~HGWI{+;7wnKAHq^wgeM?o`Xy=2;g7_T)P)en+#Gqg#5L9`% z6@lxY?gd_q|3rP*walbWVDcmChuhhtW;kZ2F&h2nZfK<3r(?WiK5T4=&AvdNX=xFK z|IMJ)jJ{KQBBA&aB045m61GH#)3$$Acgu~c8L=lrUM`tYZ6c2xuJQP3abGDSI3qD2~qi@p9euz~1JgSFGe5#kJ1prH!F z*?9~6-*ub#-``jlDg9aaQ!MY+TG8dnhf;UKH4N_6)+gEpKlN4~*_c`(9bPH_mLzA@ zM2wvuYzwx}QMEUsoOn22om3)rL0K_j(s!=*M!@H0L@BznFS;SrK1sS)Cl-n>T{=PD zs1d%ov?KjGMQ>G|Ev`*LVYy$Saej$*EYzMjKO&h?eoxceg*cLIm3(7g^T?3bv8oYz zfaPG_6Y3&=9-5TV`wIpg0qnO|adH)g(@#vxIkh8m2VO>u5JvnX-8z>iup@86z43SPJaE%9ShMksV0r2uMa3KE;6dobVzBf|uo}z#>#QZRzdY!83CmqjBk(2dY1G zbi8=^-RYQ9#R}htKX-bX;MuQK%bAKkMrzcajs8RC`v3{QY)Q21S$!GGEYOh7yxtrYPX}s7{ zF=QB^=c1x)-5pKQ?{7@gROn?N4|EjzN2_^oA@8%(!_d!5IjV`)YC9<6sabuvMc*Rj zhKH|lQebv1F3cl&F3BxFNq7|HN_gs(EuK?)6LsDdOM+bsNZccVhXrmzQigp_N62JD z<_2>Q0vc|iNn4xDV+jaE99DdfHsr|wgpZ>1ZvFTt@pzM<0~a0BvULgOu{7rz;T+V^ zeXfMKm-mdxtY8gYc%+D zrK9Be2Zot~?9L^pDM_=HZ^Cnv*WNba){O0fH&;&?7bsDWxdgK}Cp74Ud0RY8QjNIP zFlS{$z3FdbbL+16n+e&u)tc6#6S`5NK9tHNvy0QoX*0#g>%)tzb4ssD@z7$A?NA%h z&b6zAzUH#!pgy`!PEtVp{k;0sif>{~=hYnkN?eIp`6tBt_Y|*tvT8)1nX+xA<94Lr z1X7iJw5jRbM$U|WOn3qgT)9En)^`4N)(@k6ox-(SAEV#CTRFS!=pca=b^*i{w85(* zr4CX^V2wW-tfdF>zhFbFY}v?p_e+=rB0`Of@*=+uP>6>dl3BEAnNpo=K!@dOjLnyHR^i zcm1c&#&Y1AK!NF->-4@NowBmwhQ9iw zHOI2K7l{**B{q!Jh9$Aye`e0D1?1QJbmlv#bP0?3VzPb)G?s~IeXyfsJ52rMnfB(+ zE#Bo*07(9nvDh}M`)akq0W!QjClyK8DFe8k z#Ph0rvtZKs7t`>G)C|+N$Fiswv+rO;W4g~rz(@zS1k$?#h9ls^eYa9~xc`0QLvg>@ zth0Kfl{BVE@t<3@R&LRZ5lK%w0-Q;P?g7=EkeHbsor|Oj+U0-N0(KJ&HP`mFV?i7o zEuwVva#q9vgsk@mhfGVV?Elc2ip2tL1PyxAr?CTIQ4z;I z00wM51YA|#bNamJT;>Z_P_p6w5Sm@K`H**6XLjF>Mz*H`U>QS)g=SSkb0bi3MI6S* zB8=xaYe{zBQUY%M=5xV?)e5(7T3?UgtWbUM-m+6P+pHel{)P5Vk+R0^>%xb+VmJo# z&`K;!2he03zd#@sslSP3x(HyR(bwy`N%lT-1+u$LgIv2u3uQ}be=97ebd`B`6gqg` zbeJoUep<4Wz5yQu={DkGMua^yzhvea(rv zJ>tHR3pXu$ghIcMRrk-l+PLKI5+$eOW<;$hf0NLBhZi`14X8pyRf0t|K zsEEh{JE9=pLKM}T%?;*UL(reaLJA3()93ae7(Ngu0D8(#xUB8eE`P1FuzRge!8v1X zlF{RH-ThE@@HK(rv2WdTY337M`Bmn9Jgh4hUhMyeo^rm7GtsJr0#em3D;N^=K~PV>fG;j0p_jm!4A$DX6z3aWZM z6c&182i1CCc%~%Lz!jCtEH~OHe?_m&94PoyQOv3OZTPc~!zj1u-u6BELmv3WZeIrmnS-Uxnb}akIvxE#!c;_`ku1u9p%ZBZ>IYv{c`dq z8a^ccl8(HaU|D=qw8Qms{P6qRCI&Nw6hX_0;S;Nue(8MJbXb4<_x45G?y21E1Ty6A zLZ-e7y8}_6d9jN%pknmKdcRNW;oj`B6(6_zkA_n;JHJgC96zGiY*y68u`&OPGU**Z zJ=(A5wBg~}hi~lfsP6wZ_AS5ssY;R7`6HLkHZi<=#L6G{D;>wvZKjuOU_2C@l2wj% zdPG;I2A2A6G|*fh-3qDD2Aa zWW=LQflQp;EaOl*n(XI9|5-PN+xv+UFa0y2VPfW!yz#&SUIw4!s8%`1B}h1T)=*d( zWg7m7%PmcRk`R7>+%@g=xQA>A2MOU-6ydJFMZeaIr5rwtg?T>goY{()Lu8aR8Ng6l zG=~gw1yULc3tcx`vn)aM(3a<_hFpVweMbc$oR)t;K@r%3L}0QVw5ZU{$!xpIC0aoF z!JxzZ`WP^PW#7?IL<|kY4!|H`Lv{p&A~H~>KoJIbp8!-$1;UANqG2dELYl^*iy+Hk zN(#)GgaU62t?E?Y$tf;wkQQ^j!1c3@i)vMmuT1l}@1yNIhKk<3W(oSC#NRd%eL*Q^ zP$KoAX==MUf8zZ0$@22?bq7p^;>a{_gTHMnaUb`FBeB8HMX15Nac#xl<^v5HJQW+$ zeIwcu1q9|BN&~w*o8<)atO^1WYj?M)DvjDx>&vU>Q~Z6F?#yvH*i9!#iu%kQ8`utF z2OCRK9d^{K_BQyJ*;6Lw0`AwYEoxSl_lk3FD36Sd1+1mGw6i{NyX1atY^`eI{>F%@ z=08<80`RZQns3wcGY+AFYgP&?x$1GC-R&nvK81eMsEl)y#gx3OW(jSd}M|+5Z+=pckfuy-bv7BDYNpUuD z^er;_nGA{P)qo1R{;NPT8>Vk0v{@~<>bqZ)=IkqkTaXgb27eqkWIeivTO9CnZSQo? z!?i4 z34$_bHG<+p7zn$9g}zQy3JS)d2~wcyNuV8wV{=H5$==s(lE;jJ>#r@G2(K;d6aZ*!vWt5|*`Jolt{X2wbW zwSu0yii*^HHE}#y$sodi2<<*?`)=Qe!!b4bP-|LIWp29qxS&;X(&V&KvWKulsHU+{ zDSIr=w^j9gP~SV@k=@IbhX)MW2!oie~oMe}H0RDOY-L2VxG?VpzoqB#1`(i+^hd+=FT;a|*u# z-NZn)l87a5DOCTR3ScWdJdnUtv5IbSnt>pVsJ%jLcn-9pUJ!|&bn*v3$b_XRO$s`LXl9F$5Zf&yv)vIahilg4GIfCO5g{`#7CA?>27je8eSIKrYG2dN- zrtTT$pX^J6)&zwJXUFpP$q$P0K1NUNls8@}C@joP?{Hk5_J77oEQi(*&%`Rn3didz zi4r+B^K(Z1`C(l>&@)LJS=db{T0P_9&c3Ka8z1J!Y-F8L8sl=mR`NadlM&dO`{VosJv$W^?C-eFNrG(Zkt^59=}F6fXL(4m zZ8s4o>_s{SpCOz$y?jKmo^>f#wn*2~)9LnU@(rZ($gdfug6T)FrOgQT1f+FT38e{dVZ?@KI1ckPjjpB&b+*Pov!kG?5+-7?%I$WS;(|}c=%=aoTIgMIpWVp%}7Dfu81ny zDi$ZC&?pCaG8$X&Syeca3yLB+M~)Ctigp_BTMq=NR<8*rG~V%6qcw^eNGXkQu1fcA zu+iom-zcr6PmJ&x$(NU?Mn9-duC@NEHvD3T?&bkkO%0bio@1*~-ai*6&4?{aDiRyo ziHdW*CC?U>Fe-;Rai3lWLnDSP%+=oT6m0N_-qZGVyEW(LptIVGHkQTrW}D7*79&P~ z3a@9N>7QOD(+9?9(DXKzb@R;>ItyI@n7UrLbiC$o<&}^SSZMa6m5->`1V-?s$XPW6 z8l8cD-WxmLp^H?6j)0E{R-cJTCXk?87KD38*sVQy z*uOX=ZS5oCERSE03qktE%K!}!1XwkU+t^UYcb^xbz-g057MN+X!kjP?v;(?!VhQ3g z;z7_ND?g1Epg@<2HXDe-pi!o-cnqjOF&$+P=+Lltx;T4*8)B4Paw5UFSH$Q34&SN* zqs#ndukdEposYR~x#I-=$LJg8VwXil3ShhV*hz=+pn*Pv!6#*3axrX{nd_3J+zI6{>Q3mCxcZ{M_XVtKir!g-rxFn@XQA55A;Ta{c9mB zH7?A%EYGP?cPF0b6RTJs%+b#e3`cE~3>J=wl38e2h`X0Hcoaozcbk3jg&oTKuWS*;5ezo*Y;W|+dO&6YF>}P;MZQsy`u(q`DQo_>x4#L@*4G{~=`xK9zb_@jdOxxx=S{*6fWjGw^WLVy8Tk+5Lzw-|A+8Lg9g-DEiqL0` zU~e)dGWf?NW)eWGA<05?q-g*Y0$ctMnAi#_gl;8@3FekC(3r-VmS_DI^V`dss;2+mPKFbm+r_=qI5xNaz^m^(M6ZhR09HE9lIrKZuu_ zDf_aAWs7e^iQ5s79$=$yeQ<6tR=09hX!w11#?QoDaMiM-s;~Lirqfr4fa0R}Ic8@z z{`#q+YAUQvO?djkZ*nyH(Z+?1)FYP{syJ9Jtb}@XdP^_A@pZ(uO@%gj`7`F?UN;0S~L&5QPaVlZVkns-PMMD8I##|9K@6lv8)F& z>W6Rn6s@0>QK-`#-f1RcI*YaVBCsGxT4pewkQ8@Ivmzz>$*)DTPdt_0yBB!%w;X^% zxZRR2Z&zmyISgN;l$brA>os|i3L zrUfe8Ad_}?*WgYSe*%Cq{UDnwAj_k`5Qt(yx$fnMA<9tw=|iRJn{@$27UU|c8f816 zeix&kr^r!J#5o>NrTBXvJzAH|Uwyr%rel@|(OqXs>RS)-f$BRw#T2}922Do>x<<)X zZ?YPv*Ge}laQ4moX4d4VF^B27+v{I8tG`@5F>%>y+OxNAoVMnhmr^jgy#hQ{pB7T< zG&*5TYcS{+7T!h~f2e7{C_$S`NJ;$ctx?$^Q%4WXLN8`>&u&GQYo!3LG!sR&Kj>b~$bGRVdiW*b7Wb=3lM9PvahH6=^TsO5lRC`(LAUe>5+wd^*wkxC- z_=?Y>n+I0b_5D7;NJoZc_GpK0P{1g^ENC`X-~a&`^lfB$fTAS5MM)~^NQz+;StLSE zuoBo1kdgZ4?K6||ZS{@%p&GjYhfrl86G2R%dmjCVbGiLWDnO3vRiZ+GDYOiEAVd>G z)RkG#H{_IGrLo1ZnfZdy!u>B0LX5d7r2jAt8=;FCqJsG=lhz@yfrd}60<^Wtw#9k zO!K@@V@_qS@PW6=`wQQhX6_%^@bvpWR&w?7*zC;I#rMli&0){$>+E%_w2hmjs=}3O zhsG}`<6kGreU2uQJ$b6MF`=4KD;_Yo+@t@|cyVC5e~;sdhrPBuelDVIlQZLMeTt)^ z?pHrJ7+E*baC!DoMoo4$;~ytERNNV9DaVa45pEGQDO&7ORWgjDs+~+up||pp`dKS> zlzytFOxwA)X4t7I`OdL}DmD<> z->-C2LBSOtRW6ImprF+1kwcS?hSkC?g4e@e?Q}hqMbPpLIl+Qh`G#p=*&kq}Wy5JC zlY489OlLP zPW!%^V*LjenS0waoNvf_Y2(>H=VOoVHFKH{Am={=nxyv@O7{`Bfys^>M$op0a#&Qno)@&3ZTJe$Rl*4X4)CHJVZUpF7S zH>xT+uKKGzh&bbE7yDt&*(FMNyfLBnhz7C6vpFM@U5d!`BxRr|i%Si8{;tDR^{KYY z+>D%e?cCpb+F$V$UFW`Wz~%AGnppJbM9388rPNv~?xA$3p#?Zo81cuK`pb>)&WFEd?l=F_n5jC_EzR7Kq0G zeES-MCczHG0#`ONl#(Htg0T<;59m}KJrYy9Mcsl;f26Ce4LI0L_N1#u9*jVJLUEC~ z#G^2VN~!#qn9l&non!-#P~ooX;h&W7q*OBj9upD`#e!yKR%t`sSA@3ILJhiJQ{ynx zDCLaaj|ErRnQZ*em7!zv4^W0|U0q$9v`~K-FibsOelT*P$x(^%clOYxW!vZ8#^=AS zXxAeelP{QvH0F-B$Io2bLE>c@n}Y3KSLF~!5HkCH2DY9x&oJI16V`_gnb z{9N9scByDKm$DzD;lvWGEUa%GDE-i|mj8w)aq1)ATq~axlJH@}+{^PYN|9uiWr!y4%}KoLdlle;kA17O|8sY1kvC)pzcGv3m3T&`LVg2jPf! z_11BlU~H3A9{0MhIJs?R&mh8EBYbtGM)FAe5gpb6mgJ_hnTe54ERy#qko`6TPRhiM zzSu;QbvA+nZa)bUNIfN^0BbmMfWnd%-5UXD1rC$AaV7S`>a^jf_BI$cNxp=);=Dp@ zV&Awa3O@8ERd8oZQic2yEhsKBfUyHPsKqdzl!BicJkI2 z8;B8y8(v#GsVX-~rZDP+Nst8ez+D8~!y=OL6e7+HPa&axQSM>92*=1jf;dQVJmoNy zgeCPfv{m)92S`(i@cy&D-wzuEv_#X{*4btyU^`$=vrI1tgaI+;Cj>~VQ&XJQfQ}Ox z`zzI*xOCK;=5zTQt6BSE+uFv<2*Kx*!Hl|+&4%i1GtWMs{pZ$}yYkHzt7@v0g?p*T zq$D!(`;W~zdd%&>&8ut-(Vx8=tO#6H^LaX>X4}9?ZB>+xe;s{X^!`Eh+1p>GB9Dx5 zH6#?N8&#+Ri$-^k#+l!3Vd@=@3g^V$u!^i6$x}}a6P$jm?u)l|x3&Ko-W45vU0BdD z=z2G+bYFQ+yZML4H#%w=_U9YZMc+Rz7E5UUhWxswRQwv2?L*NIzCfsxiu6AN*u$hL|k z$a_|WZvV*l7{m4o3+fW@^IC_2{UMDhsWI6c;&;RN#Cb4GI}`!EpB2#uZfuau4q1VH zMrm{VSWpxI5X2f!hf!6GT-FxiELX8olLiKKUQ%L8!>Osb?f>Jva4I~)ybxeY#1P;Q zWNsN85e;@h4>D{ZB6w0b0XW|qf-Yq=sMKp=0g^OmQHD1$6tM$dNSPQ3j>$^yyHM%1 zs-?rR4x>r|c!XuzAQw2f!Pu|tG_9e>st;~PJDAALhi*5ZI~rb#UY;+n5Gc5*6jqcp zS8;yrmz}$p%LaAh`s~BA@}qu}VUBS7i+NyR zl+&>&pQq=NR@`8TS*nt5gk`s-i@63j{n=Yf-<^#L^_eMFq7w^LmvlB7;;7lWx4osP z@{z?)`@2K3S4A4i^D35hTXr9lkdP9XW78qhSV!NT#W`~)_%;3daEd2?YBS+@1FjoZ zm6srhX+1h8ctuUCBA1I@4n?x@832Sz7~a3;dg&4gIT~ne6nYiKU#GIL!U7|K;scva zf#sLXf{8Xx69o_xeGX;t@Lr8H^)z32OjPtaE#cpBZ}n-{Ato+x*WJRR!Eh>iKQYVG zVw*$-hwFX9U*OQ}DZMTH!p;QH_iL)E|C$p7F}oFfc?cK0*ptRjITC~s8TbzIrnifP zmr>WEzD|07{7kget#ryk6Nw4J=rT9Kg>@s^; z{E@F$WyCRx(&LiXJ(--O>d2+I+NUaCx1bqjv6^vk$L5{vbYYC`=6< zg}dp~cl|>W&JiONn>Sh`x>D};(Gq;OA}tS!?J^67!q18E+Fw|(fR=9_xK>(1&znm?%Mi>n zY<|0qdkJ0GxmygyN7Q*q*h@*%zqkugB1?JzlJoh!&qJ`@1k+Q0h>QftmvZ@{|{Ub>;+?2krcUF?^ZJRqO_z z+zbg@vZ3%Y69*xr5?k&=j6*=EY`f?rXb#(tHiQmneGb{3Eo|_n6t-Qk{1*W&q7O@1 ziNnl8=8O)91{YHvX2QQ#40zIiz#M*-E`vMx7(bx>qL^MXsjhtiMIm{Om#Fa|Ux|&fgg)^7}u8MZ9)fuRh~B=Rd)SAJv%GT{JQ{ zC!mnd*iLX9n&}?lDLwAeBsE{E**rHQiuZARoLPM( zB|iPa1Z#sc#=Uljd+6@AoPE;12CL3_>K7hP+VLEE*|FomPP~QI^gvgy1g=4)N>Yuo zsIL1!wAh@xW5&)MhgXb`=qrH*V%Cmqt4NwWJT^L4ceLL-vV6_ed0kqG^DvYt0XdS5 zkL<7GHlVya8?@Y7aXuv+xW*wPoqeyoRf+wnKU((832y^sV})7Cr)8VO<$w+ItbuWl zqq_pP#~`t16wOgDJ~zgde0!rQ8U2z^{j|xmILs~$>~^$FfRF|KoTi(`De<$R+d{aR z+KZPq8m#4^!cVQ=iaZRfdTZE=q<7dngHD zGz=995!AwoAJA+Pg)w2p!XRbjDB6{I1Mo+{a)z!2&*{qY=^iJZd=oK(dzj%D5nXQc z(--_Em+@x;7FTpH>eh8Rh>2|oeJNY_>MhT@UUvAb&kIe3MhQhtn036+Is7$W`_)dW zO)DZTAtgbq>S;dqZlm(Z`|>fTvEsJ8%!7&U*}Bd29Y(-Mcz{N)8ETFAe9d-yXn9S| zDNh$F@Y8J;POR<28c9hXm>cM}#u$xfcu6p!u1$Fr%;(Z1JK; z&LykqTlw2=M0v5|x9NLY(boGA0zU$;ll1Pc@I3$BeI^CFE_*NVMC($;W&bKBpZ6k@76=5DiWCd8$zoFjL%{v!7W&P0vr=V zpjZtk7VHOM3v7Z9v2`MsY!*cCo-MVN`3o-@5x+@ji95w1OWz{|sz`7)!g(OHpl~>9 za51Mi$k4$v`7C712Zd(&0h=@)2=})i_MK#VTD2#bPA#YzVIpW zqmQ43Rf@OYY=oI#z(U7?>x*ywr&m9+4lf4Rk3RjXU`|V^H_0M4gm(Genf6vIF4q{5 zYzWn3nDwg|TeLJ+wZifO#@`xfI@Oc5Y7c1H3ZIvx-OD9CWZWu3oF?wz^7g{mjr~{u%_z@LP$nbTq z@~G(aZj1K`_HG?hlWt7koyeOJ=O<7%VB&A%6Ytana2-Ch$0<=!%IZpaW&geLiR+Io z=qwRI$F;`r_3V#!D6=OO*3R8rU3yZI#8?hB6uBUUY;X10A6dvb`(!;>AQh0UzUbD4 z9=bU02%ep`Kvf*gYqhUN?pOi$V0J@S5fFpH>W}Gq@%}3=LE#RPB-4`52i-uT)?Qbf zveg9pBj!q%9RQy61z^Zj_%qU{!CJLE8tDd$&1LGrhTEUR^`Q8iq_!LT59F&9xP&nC zGJjx;bEBBo-P(d*CL|Q;h#3}|vnsZUU|@6?f&ylQ!;qmDqDVlP0J1z}ccSUQ5T4^f zX3FIdn8u6+W<4hExSsD!tTo`~7tq{tR;+!r?nh-khVNKI;(|v}S~=%>o+U z$en8v)|jVEb+#qac1)xxC7z{TZ5TWLG-YzL)6&(!|MH1%u8uQS_S3n6yW12|Mn(_t zm+)hnegRegeG(B(U@NLuL6|t8>Sv)4UFfXuS_C46M*vx(}=C#&bW48*0UfBh!m907NtZeY( z-s*{gg(sWRiJ~ib(E`&GH5wW+Qj#SeYYbNBEK(HPU?m-SS5hsL7{>W)d z;L{4Z+lYw&C0|o3%W{g=pZopTK@u6FgS^$PXmqp)flN+&%m;VNv5JAPFdRFg{{tS- zvW+e0(0{Oz|9}xHl5q}%?X9ET)qrngRU+Z5P8)R`+$ zGJRf_aR2GuFm27U?&Ay9UX=|@g%3f4ECCSTMl5)PKTG%fuwq6cgi*>GC^f%1kC9x^iaY-Yf0;5~466RAf*KRwLV#v4QV zm`<;pW#iB=!0{p8hwub@ESbA95T*oEGzXwXg%l6fAUwch^`M2N3MEQH55U_qNp=gi zalP&07@U&ZF0;$JegX2}q9=CLfh*Ob0u z@0aewqoOva-Nu#Sv}C2WwkbNWf2kq1A-09;(cBeiywS_=yS8UEk^3k8_X^l>+MaWJ}2ps{>Dm>s!!B} zC2}S7Jd5EuV#8;W$i-drV(9Ce4of+&Du#l{oN5!EEbQeuf zOq~E@`(eoe?p;+H2=kFr38%v`!X)HxtPI$NknVB;MG~_e0vV7y2xvTNr%aXxRx<;| z0&HRql2O=HrmKMfB`WPBWW{oK+620T#kq-v$PIA!utWE-tfX6msgUbe`b34pTm88h zaZZ<&)pxO_g_>rbEp1cF?ynPzqYf&eO5@z z!sOC5^559cjr9BOrY>jiI~)kL_h_4;b?cOVjy8&-T=(=;Xf#hyH8PM&_Pk|C zfvvPN*vXQasp=fwn5e__%aScKsx#Kpdmjz%XpQ4%HI*glU^v1H2Lwy#!z<(C3r3}8 zbkUe{cKd@FeWxt>{f<7ScZdPwFPQ=?CN(e0S#lUV1|pOw+ToSsIX7(ZguTc0Syk&b z2SuL@va#KMi=7wU5@I3Uk!X-62>lZZ?G*Q_PG40r9)-klLoPuAv?zc{8+Bn+ zuH@2h5AuyC_7)7o`Z^LSQX@KZLqm>1R&THouKi0@C0tZ{wb!|-cSZ417T0II-5acm zGc!{rBae(s?-m|ezY+QQ#iEfw)nLU#yQ;}}#nlh2?$asV8xfkGD$Ta)?_x`f7K<0^ zh5aX|xiG<8iou#o`N0m?AMLb0s|WiQV8Ixxu-PVFt$t`~OzH8Q`GHe=n$O7slc%HO6kB(ntySO$2V&L?27oB+c;>he+igaw(;)fJzuJb?P zT4g$JRoJoQPGLp+xZFM%uJ&twE1j5?2K=A!%lm*GIx{!rk9-Aa3J%*JQDD zyp)x_+K9g}G_q_Pw;J)E{Hbzc>4dwHWx~&P`LO%FcBbxH|4c3ZY}tBypcr*Kxo3~W zE29fWg{L*#>-RJ^5sVNCvWDcg+4$I#4EcfISov^{EPmOW54=mwVMoho1fU0I(5OPF zel`t5=co*zW6Voncr{%-h#lby{%2X*}v|x4g76%AHX(#tf2{F0GE|hWf4r% ztVD2+xe>SkIdfj$(qcd`J00v8g+@u7K4+-KJPMJ>V6A{cM>o#Xtm8-^A3Hn8ACel=@$JX3>ZhBk1?=G#Qr_PLsHq`P`*{LV8 zMQ-LR@7Tci>WrjmE@gOkf6?u|*i7BK*LO*vIa!rUk+Q2Qt*deJX?&!1OSZD@$lbfi z-nOMj#FFg$1nuhW>*Ev1xt&b*{ua2+ z@#wC*8N$EWNpB%P*KnTlcz7DkYZ^Xu)XpAD*n7WDV3|wJmj|Vfy@h%r%a4*_juAFE z7EoBY(7hT+f6U4>CBYC2=Ev53IK&l&WVn?{Qsj&JFWY5eqG+a@D9Aw5O$p)je@D-ruI~X9L0EKz*7W@yF zDnmU{i%L^jW(J4CREhw_tyD1FM%b2n=?pryGa102s@Jd( z8gobuYz;vEAR^=>lP!ymH?-kzp&JLUbHX@*4^dzrCaj0u+Hfe$8nvHHet`+rYUMZDzM;Q zX?Asad9^9pXSj~$&ZA?|eFM9#ErSl^LbW_y|}6#r&irS?`b7P zJ7_ZGJXL`c>HbZ`M|dYEs788MK1k>9yR=auxdbTsx)sykdP{9+ILh_5<1SP06Qi%c zbZS^jIC6<1ifVXu{kZqK5%)-jso9dHW~R)%enXE7Ebeky>QaHlVW~uWY+cMFkBCpX zX)_Xc4K}-8#hk4HFA3+W&+Z?}z5lemQQSLEzt8c6B;xTVTto~b^7IDOcNxDp(~wN2 zOOHutgjBPvF9CI8!wcx&0)?9=Q6PSoAi~ut1}pJ=$C^f+t*!i?qq5T;O#rwE2_=d5 zK}CQE5ux*CsMe6+`4Et;&n;5iug?auQ~;{=4_kp4-U3WSs0b_R&o=qb7yLXWbP#`) zEROIa{~9e!fGc^FWb!^^?@bzdKOj>PTaymx?Pp$vX;Y@aD9SC^L}hk-$A1gf@onm~ z=V|fh>8V^S7e?^To|92EO<8t{CO2=Ga7$DT)yNJGR>x0;7cB0;C6}@vL#dh68KVzG@A~D|8!vnco=Uc--s@{EPC6P4LiBt3pjr* zV!cQQ2*+wX#Yca0bxE03j@Z5;Gp&m+F|(CWMTfTvFxK^$sR1CVvGR3O39ZcPS6`|5 z?_hi1iEI3#WtW7E3*A$E-%SP_U}PQF_*i#JUHVvcRFl$$R~ql{5}L-jIoI9qmCZDH zmNcq*)Bw<79FE-vUVps0-Fiiq1WR~Acz=eoS2WlEy!rPs9)+FRVJq!#(g(No<@S4O zuDeXFXLWeLyqDDcI*P-#{!cw??(*+2E@)71Rr8*+|1`=x>aTD$JfTbJnzcA z_tx-ENM`vdVA8dSXxs?_okrJH@Jrlkk7u~Am>?|u5jYbY?9e-tZFFN#ZLjB$vB5@RJo@c!*SRy!0>AZ=Q_fW7lu+=L7hY#^yi@;qtSZnG8$MK>gXyn!+1C^58wQ>-#C z4$(^mT*xUA3Jh@qCaP%FYKR?}$7c!;MOtC3+aIW5k|I=eh^)+gIs&=*{|D&zz$_j9 zhFk`zk68*+Sz%VTl!DTz?%2ysZ~J|f7kZAIk3VP0nZJF8>)4OYUk5H$eOkZpkuzj- zHs^L+pM0~S3q{K^FTqaBVRXBO`+J9EC*vhY2YDqbG4yjOb^NdzD>#2qlNKvgt@^;T zkxGO$kc2~vV1@zBE7HR~bk(CTS468JRv1PG?6+H0kc%q!R!Lj0^NTD5NsF;LC2yTx zFT9i7b2S(~`SNvrI{Rh)2Cr=ZdEeN#PRf++Af#swG`+}@A$1O*ccIXoBM8Av=%*T3 zzp$$Ta}bN#wX6SvO*ee!Iww`^kWW767h+hWW*aY__;%v}m@EoZN8T}eWZ*4pw-tuF z3vQ;)8M6%h){#UjVnK}}cqJ11PH>RPdYK*kUqPg;j%8=cEKER9OaX}rCzu^Rz`eDt zF~|eIJzxX~Ck&71!2?8efRjGE6MUFI;U!(dio*}=_21YB<0FCvH*_|KyG7 z5#HsaIIecqz~@fhO5rX=Wvrs@9VP46#A8cO_O;Gsi68r?ZPB9{rxNSvXD@lfxb0x} zwS10U1Ma7cmZ-0D&~coHu3Z8W<>7R{dv66*?VBLfPmE`>hEfO4nB%o_8%WDe9Ty`*tu?g|HxN0lg#cPAA+8-;5j1@LbQg9}r`^tV%rLoRS~gaaOF9 zSYF~xbN#F%toZAQOViwP$7p&2m1><7#b?-D;*t)RK#5)W^6H_PgS6AZ_*|>R$+gSB z9X*@M-<5xUJ(qjQ;8<-aq!PlF)xt9Qvm};nspr7@5ucFSA<3Boe?cKKC<}mn3j2C4 zI}P7nwin}kFrot%%6i_qT$ZNrp|NbBP*mnev=EqQ z$#)A58x&=#_xnCam;KxgLwUuTl7B{y>)RpLZl=?pt^w7R6Kys&&y#>AaM0wMTrqAhMWC zP%F14^L@Y5a49KH%zKcsURt%QQ$L(F-^%lvTUd1@U5s`k=89d#+4{%vUUVCt4_HDf z>UUGYLFOwMJqPt8O13ZKA`dh$HL9~MEij*L;K^uC(OcY)Pg{MYnn<&W>Qeo{w_O!- zDg#KAayUu|TOBGZE*=95dGBJ8dn!rYnmm}791!EdAO{i*Qx$-THN+hRc}SXz-5Nfe z6J?Lz^SeC%$IE2qT7-#1Q_l9OjrO#gGcA&S-JcAJfIi2%gO~&VLEO8^H*H=Z06c-GDrJ>7ocBVGk+R%_ZszY z`v&c9z7qd$IovkBCI?~*qC&Apm}~FpXc$SAt0QhvU_kTjie>|oUx)VZWxm%RB0|rK zkO4kU^Vs35*eI}z`9spklibu&n2rtr*$6Dc&=@Jewoid>^YIUL!r`{Z)lwUO3Y?Hb z*@L6Z1OI2U$o}t`tyvk!3*AT-g-e%+!o^Qj8PW`K#(u^QxF^OCVGtR-a9i*IEI8}6 z*JDG)R4ilZ9oX9-F<#DjU z4S3+PurZ4gEV7c=H@z1<@7bJ*f5$YFV(+>F`uMRC372$wah8tkJ-%75rs?1_!iI#| zjP_BGBbMhF=WybB?Apc$46=r$ydz$MrU!CCK6B`_;IadrqI3}0yDc&2x{~~GQRT6! zL1h86xYq->IB+&O|BtCJfrsji`hRAz?~#2Okv41gY(o-djU<)qTXsT-u`4?%Tb4*f zC~Mh9M6xg0v!v`>5wgwy8U5b({h#@K?%X>w_s+fNInQ~{InQ~{_lVi+_DC1^Ta-m8 zILQsb3RrKU0HZVOH=Ug?-b)lCGLcB$#Dy5gq9BF`L>Tx*zC^~I`igy`cKhIiUfZP= zr3dAi$zgk+rkRDJSIexHgm1B4ZOwb}+I;|4jUy0_xpNKXlvvCS7YyL=|BTDb4nG&e_f6*`qy3jF=)STr8_9;A92&3((QL^NNl`X?_ z_`mgx^auodWEJuBdNHP1`|cMrL61BdS>jlt>=3X4w0d zeJH-cc&hHvQl!Sf#5T>BWbf+2%kHOM4-a}N3~w$m$9Kh#=D#&4_+VESpk(@%AyfX2 z4jri`4M%ENt|%CYs3GqvHRt4%M1wk4ufFAs+T^(a!^Uxi{>-}BN`shkvRXCp8WHGE zxVwOr(G6E+ArHcOCxZ3CQq$@Ive*0?Rdc80;XUFoX8~Se;U;=8@7t&LB(tf}>u(s@ zX-g1B-`h*%nQg*VPk6G2a4byCPWZ9daXFP%UZJ3M!C~*0k`dK79L8F5Z}k9DMD8{v zT+e`oy%Z~f-J|h*_R#D%lo_bLC~?5FYgz`BD@c>=5ZtF&z*IF&)+~1feGf137T`_L zL3HpdQ?M5Ie_0yUY@n8?3=c`h`L`%H$b|bdro;EPUaECgzOZX{zrGn-*MB!*S!yCw zHT#$EuitR_3~z6gG0Us7Dnm7-4A+DX7Rkg_8E*@hzledCX^Ig}{7Po+<31ZJG9a?C zn{NRt%{L17FLS3XOQ-EwmHB$uH6yRvmAVqVaKZ1(8D8`TwUSI#3{s{CluaTveqU$& zNo+)Na|HN#_uE|%X=3;!iemNA{SVe{Tswv?VmoiRys3+x3t$nty)rQsE-hJFq@*rp zUU(926&EE^;z|#Y#c?^VtAJ&0?GNWEAqe%CJGk(D?_oqhqr<$mvOKXj=V6fGIx zO=@avkN64sl11!=wk*IhfE1>t0X)YMN1@FH`GhAx$AX1;VU{D=1$Z9ffr-Gl%wOsy zh}Nu6vvzx}-8DqQCm}*eve*8*$N{@@LpBd9r_gHoUR_Gs&GHvg?)UO{abM3ZHYrnX zc+}NAxnOX2n-YqD*2g`6KlfaU1+QhXhVSY18;{>xCSO$uv&x-&F$pVXS#YH+o4nvd zR`+kNV!2v3EhNk0!@{{S^61xLm3(phcSEvn!H2;_G^0V3lXjZU8ROpXm884ZS-f6< zGS*}uSMH&59&jLakOucilgB>|PNiQBr^LQ~OJj6vGSal!(D7(6#9?aRfQ6pD;gZ=Hyx5@9;U#P#C{Lu4}|EQ!zP77l}Z7vl0)d0mWGjRj6ckJfKJx6rE znAv)43%Cfc){ge&zRY~muLV)5FXDJC>~2nDL-X1aztNGgojs4T(j<9!hHIo-(Aw+u zf1G;J?G&qQeXVq2^L5IV)uc5nu4Hg4HE~UgettjrJ(tsz5Q&yNf<7Tnitb1Y;o3eJ z;ttQ~+++IEFJ4{RKxOoIh0fF+*G;enrTT@9Tjqk$O2^SduDC!1v}Q(jXp~}M7zp$T zq7kJ6DD07{JK_#ZNc_%{nR&E7@o5b06PZp>E^)7YXeFYCNom6esP>3kCZey#IEgr{@~ztH#HpTnQWA9gq;Z@d&TQF;o&`Er_{ zkuJ#2N^)6kKy+Dia`eH7pk~EHmA%$R@^*3X%e|aO_q`2B(8rgb({7#`i=^vXqNL}; zQT|vlrN7OhlfcMDyw4(t9;~xWc-k-}c88~Q#QX1^05mPzC~Cn$bh@H$gt=APRN3J+ z0i8|JGcirSCkf4Q8q@Qqe`xg)!9@}D2!nfv?TsszK}NxCXgL=hqbX=ZYWq=dZIkuf8_huKP#AspRp%ze{XE=kU6ikH9z*Yk>>X;9Z$R8CifF_FW5_5 zFR%IBDw;7Z!IiD%gPG45x&Zc)oRX_*8J~5sHEz8q#|A~+a2OT-BINT^@6%Z5hM%J0 zkUj0!ytvppfKS{t{TdNB`1GLyVt@~4X4BpkJgss5NQcrxQ!pzxw1}A#b>LA=%al^J zRNwgMCsY}0e6^^aZmubSJJm^HZ;H%n7&+`BkpZ6DT(}nsQc$B4S&d-AOBJ~6BP*eo ze?6#qht6{*z3S7=G3w!&+Fu7&JhbbEL>Jy%t1fh%8vm2<=SBT#B41z!1oS$Jr~gl^ zFc1ZTnR7KGG%C~F)o$X>*Yzp?)TJINN0-^3t6funMcBmbIUHUsh`iqO7Ps?^?MeHl zWh=07MZvxldAaTCC_Wa#0o6Kuk-IxzMYAB8EiJ; z`Rr@?%4Hvm)fS1G#^qv)&!g5?bYvAKS}GqRK9GP^Uy_E@?%d-M6!fa*NZ=oSo_+P# zGjcvuC`ESJn!UxWYcSW=$d0lgegi3#$9ORoWQEMo1<}0Fg>B1cCQX`yfPH9&h832+ zaT~%~_8bX}=Am&g&28t8(m+=oKDq+flRX+!{SOOWWjJAc;w}YHg#ENu3)F;j%04?msuvdcEq%|B>EJ?weOtE&zn(FCrp2oqO%!uW{lnxJmE&)I zDHbvqGdx)&T@#$3AIf#*ta_;fLY@*^&;9xEo%ZxNaxwdPORyD*Eo;c}2tKtM3I4V# zy+?PH4805z!p7!E-nip3*28Sb&rz1*u9&6Nkpey%BDi z4C?L{rCCpF14yc~5cQUL6%bR8*% zW>>dxk=oX!6|>1>yFx#;A{!qRy}QY__iijVvvsy!dM;6G+abB^lhK&rxwL)TVIu^{ zzyDHKc6Ko7JzDTeZGlU((;u39zl1FlUkCU0D{QYPKV)ua&<&8mepj!;g-v%My6uCm zvYrLUlCQ?|-*h!QvN<4%%Ib#|4}$xu;HC7cDsKKrK4UZFF}HOdHG!4IZcOeK2Z5>w zyi7mr*O=)_y|yWsqx5)CE=MfER=1X&?SIsdCWkCSU=-64sx|A`4@uJ+HpWQvb)?Jz z4hwsbiA*Ueuu=dRvQ@Bly9b2GV$Glpr1XKxbq${QkFLN(P2evujx$jq(Cy&GX`Ivl z+@rXeYAfkop{})DJ;G@0Q{L(Pxy&MQcZkCNK-09p#I&nL>Z+;HrlO6-@cs!}x4tU2 zuZlzb))4}vaE*yNVto>0C1P8=PjoVUwV=D7kZp`a^9X^RXUHABvz$$6cFA_=|Dm>9) z=P?rZQw$4GMJ|go#3y)2ld^<@2vyPm*L3E6pRpoRYHS5n+7js8Gq+X?D z;|sJWZ;M74Tqf>;0P%fJQz$p`AkJa-KYl=fI9OClfV0bqVTI0b%A#o< zuMiux$~j;johMr4+5YhHLSn+xk+S=4QSnvQ?OaQSWbIXDiuS?)*2eV(j(LV|7jL zyq#e2l?Tlq3mTlv`X!F+OAe*)6i~T^L4M>Cw6Vmj&nzKcifiQmvLn`oA{fglarTm3 zfgbO8pGO7FEYR)z^HYic0I2bia}j_?+GTJE38T}dCy+ps_}~Ag!44&%(iP0l45aF| z_Wt2NqG@NJ<{7nG+jV6jOYBslFH$2gUp;xN4 zH)>{ob#vtAU8uok8&~)RzfV63VN6o#Tb#b~u&?l>Xx~(1c-&pKQ`I(wXegd*rVOGY zBmxtR=u?P~jjf_DqIWN`H#;V+u#$ItQ%T5GgqF$?S3-WDEk@P`kZE1$%d__==qg#w zTXDIn>>DV+eUrz$i5BYvVxMyANX>nQ;GbBK|D;I~HIqmji||fqX1=96Vx%e@+GQ?Y}&ZrT^_x zfEbfgXgCPxhL9+11Tn&C_|8C}h1;_b)|G|81YuKX2)r4W#=UB8(2>y)a+;YYHgX|&u)IXv!(pCvGqeWy@BxAD{N z>OynRbQmgR{!?&^{Xr~4Axrz)NU}o5TS7LLB4taTkCmDApd=oRQ$0{~otLGtO!e9* zv0UAXl;GhwG4JylcZ-@qJd*ghwnD2tv^73xah3k7?1D^`5XQ<$O}WW=G|qb z!CsJ85O*y_( zSwnIY0<05%yDEIe@}90dU08ZLXSmE?lPOHd_g5@Ln^-rzk5;mF=hMp3%8`wH9WEm; z(OcO&zW4U+mGnNPK?hHGL4&l~)#U#Be!V-Yx7YhN2j)$NDMIy4>L({Srh;k$bhaEbT(fF1z;lM6=Re`CDce0vyixtmwV1)PdLB;@PCvKAjV!d z4?+$B*NfrBfr~r*Lg`=B=xBDJ^6O0I^z_RI+1B3e^g}yJWq!FYGT-;CyY8*r7xt)> zIGkWd{So|l>P+_n`G#FX^N-K+X?*Ro_6G}JLDw$V?|?|>)VYb zPI(CVnCk|W*h-MIEeL46_jc_z?fLYphQC`sn97bF(Tt{7urDsQ!n|?#^z76}a#1>3 z+AXbwACIGs!mP@oAWN%vx0u1$?&X&qw*Gawj<}Ui!CbUtAA_(ptXSVb=zz$M3>O_# zAQb($sexWma6j>JdyWMHZ~?&QB*B^*`32HH0f7_x68R5V(LS*N2hC94tTWIxS$7Lk zB00^34{T@Dg<|#nB&;KpcjZ5Zfm%lLDF8uuVB8TL5+lSwQEHskwQ%B)I+AKFpN;#+ zo=FZ{PK#}Sb#wfogZmlR>o;r)eBXV4{=Gg;Dq5XE&6;!Tg11b^3&M|K&LDlcoB1HqN1z=3ZvGp~~@AiFzg5QbX3aSvIdP{{Vl2 zI_H+mwLE0G4KL}HgbvA9|15gIB#aF`q+}P=qcCz8kj7opcuAgf!;Rd;`Uh4VNkim<;T5-E@;~SUMRbLKpK=vx@{5ymy$Rl4t`DV(L4zY5Qrlaurt6}SB){&?AF6VjF=kmGzrN*Pcu~Q}=kqGv*hKK% zVkEFNzqOl~a(BV(MQJ~W3X|AopBsO2nd+5Zd2+7{zEav2jehBx2C#Mj>y`VX)nqSi zsBprhcDU(|TZ;%$TR``OUqc~-I5I(V{+*I%++*L1_JvUv7?+O{dbXUejks|LseQL} zE&KC!w8fYXu37}^Fdz&}rc=uVJZt$;k76vog`np_V(t?&M|B^So{?@O6IF)$#CczG zSfwV@sT_O?oZE~5qDU}R>S?|+{K1OQ?$)WiRy6 zxYo(s8z=nW9a8Oe($B%I`}QYD^REgyAV+PjN>=Swl6mTRItBr<A=|H z=^yDM(pY)p7n+W0N^7a(#r-|k)%|}P8EYU4)AAIa-lxv?H3@p~RQzkA+<@zc8(-EQ z3%8FmULygY-zFN2KnMu|gXe*>rx`9bZDie9<&AUWmYebHyW6x%sMw8B1I{?Pj)Q|i(SQlhYJdQb z5E87FtdCq`NWkjE{yphvFo2dKPCMZ2qt|HMgRkm=EJ3JG=%sKU=}YON9n}mq`e}@0 z5$Axz=P8)2o`wwxCAqcY1d>&}Xt;q3tS5Ao7Jy*@^U0?F^;Td?bQ(Bmi$k}RF0M6g z#(Z7x`ZL~O^{Z%m!NW7{;_AEh?2uNj1i_7gYG#L70h!Jz5xMBcrsgrJ8^-fyE8#+U zFg9xK%xUpm(``IGNACOysP;>5+WNY@-Qso@AfvCyle$0iJ^RW+T2V%p+6 z>*x?0^I4EJlfHjCHLJxgO8=+*8(Y$_Hd~Hw0^uTp_*w`6o2`*;1~tP`7Av9Jy;B&b}8fKoVd zu&+X#!-LTZ*7wm>gskm%3jOO7H5tb5ldsfQH0Md$dz$drFglx43#&aF+c_o{k=rEr_hMkqE%@)?ePl>ONo&{$h3H&|`zE)u#}w zu=4NDiDRhLYpJFPSm(1n-@p)0s<}NCWC{O-sFJZCPl277!!t;Lt2F%?l4zDiF#~(+ zGZN7>*CF`*5uGJ&VKT`PL9j)7`FEpq&sm^X-YtIrp6wEoV<$_mdyJksA^!Ek#A%n` z)rmsKnA{a59cJ4YI+Ef?N~?$cCciojT5zwou$=j>3vG<4w5)y$<5b~PM(5y+OogNWMgEx>N1!h}h`k8uuH8t%a%(p2M$5)g(+7EdT6@OLnchWO~} zVz5W4m~zD-9-?tWiuk!2$$xUVP7M?d$7MFv?<#GYct4(ww^4X^MlCvCZK9;^gJ$a- zQ)2R9V4TLU7yhLovsGy{Wt}dc1 zw=SvAayTs2qrLd4Rs#DE(LQMe7#Ei(+X^MKui+-O*BE-^gI9{+zghB{gLrokLAc1Y za3tyXQ{T_(Z8twDo_$yHB8-uGhlCd90)#j|$sFF4Tq^S}> zdlCf!7Hr}8A+jUAw!f{50V<6xCjvltEs{(|E~^n7h{U$A@&6Z}i4*up!B*XjV0ZW% zRe%CoVwacquJam@Pf;KNo}3mrO1v5*ZmDtpoiBceJvAqM!#HdX9zB$IQt6r*b`0*K zc!O^LBm4G^WV*aE;p05Xl`;8InlRg4?`Z1+0W{pGukf}N7yFsHyQHjlymnKuY={bckZf?+*6> zFJy-djUjPt$DI#Apx^$*6n&mv6|Gis#SsYC)15?}u~Tdvq){k5DRPQv`cE+l&|Dz? z2P7tPG<`;frVh>*_7@!azWR}83cuK)0ri*0Eq^~xRkFPLBQbd*VlUIa>!nlENQ!6P zC+#oC&+^OvNocG2~7win;OY=+zluh{A#u5x9qI0cYAI6c+lTIdaJ4`ZKk|#EA z4{K15W4?|em0pvA-&Z$ZnKsVL9HevHxK;Jyks64M9{V7K4#Z0GYfQ?f>mS`4pbirg zQD8Z2b=`RJ^6`~viFZpE+OSXq=HITePM$?inU#(i2MO3a(i-6{0a8u^bEG3+7r-w; zvkSk3hu6g|G6W#6_nF+Rk1 z|BaJDMYrCB#)z|aXWK{wJx{faXnuTN?Ki6)j>1nqqCzes?cQ zV$-mKDWNQ}%saGgl?J@OI_{33=W>%n$(mSj#jI|!q>Ptz%3D|fx*W&7wCc(3nYzb?u32OdNuw zbeo;#kuvewYiTtSbH9=&uc`yw*E7xA|4cYy1V{!2ed8>mfBavhf{&=C{t;3C3gYLG zoP-k)y!8g*3XD#ig&7>;1S~-a#xBUH&6z8FxmSr7uxff>$Ch19rp)jzxE*o5j{Rg!#qB8eHtFBYuN9TkvQ}^G5B+os9?g(8Pnyx zM`tL~7MV7!=M^K6Y@PVVa3L*edZ}l#&CJ9(;aP?z%auzpJkKwO+6ot(cjk+6w71tP z7+iR%c5BXJ)%5y+;ZsXPz(ZEC>Y^p_CqlfzeBr}l&wAAPp{KOpKBgG7>2~T};qYY~ zEwWr<&@MQBs&L5nC0B^$9XiUhl1i4fJAzsuJ}^ted~5XrT$(ZsC#^`|Dvp@NUZ{CZ z_p7Od573jM1j}VKSEAfNj}CeDirRBGEkU32Y@`Cie}o&E09njDoUp;L!bMM_Ez-f2 zX7*i5&U7;6cm6t~y+=^P0m7zByz+V3jk8c{^njsyE)8Z4o)_HGJ`VO8erGxEEbHJ% zxB@wU#$G|J!D%xh-37pfXniPdjgh-*l@r1y_yX$GA?9?e@9%5eQl46wqrSD`Z9iN; zew5p^Gt%nDOA)IlO@G!XtG-NN=N?B zQjcBz;IEoK%@U#hdpWXIkEhg=f~zGLo@g z(IDXqjPICI$&dWgdGHK!99+-<)+zS&fd3M)PeLL_oFSb?qz8(FP$V7&)bglJx<5KHT} z+HyU|;(6)Is_)(0Hm>}#6Vfos)64O()LydLv(ct?A*Fn2rG}%Pt~!YMaQlu8Z9Nm_ zA|su~Lyy;U?cs&YQ>bj|M9UZ4WSmeo$dM(Kz_zYIsu1HGn(^yI*A&g-(iE*UV(Tr{ z40GzO+qUGu)~U3!jf5YlUPNOv$T+u7t;cb<68l!fi4gka1qO;@?5-B(l;Q<>H8t~6 zDw?VaWS}-sZlrl}-(qd(Xs#^X6VM?5-{unL1k_ z^(a`l%oTGhEu4`q*2<~lWYZ^?-mabzNha0!IgYp4tLl8eYGbYtlUEnq_b!g6ucANH zoL-;!(au=L!&a8w@$IUBp^TZ`-;N=nbiqI39oJ~VlQ#<@<#gg-o3M_Srk?o?-PbO^ zHTHxk=m@{U>}&iQZ*+)C9+IeQ6Byt*{-)dHZynFI^%lpalz0$#Bj;-;noY6=r;Bm{ zZ673062kV}jz!7RTMEd5Gi8*VXhZ?P1j@ ziztpj@z|*0ExwJ$(+!^iJNVH&yWyP}_MsP%b}C6XM}E%P&l~s zYp3K&YV>VQ5pPdf0^lBbbR=$J`HCVRyDvy8fNp~@&IWe%=`bMqmkX~QFSnRS;sWx$ zXc)e~>r^H`MxRhka*-sS8z}>DaL!0{(M5=QTx?==QuHQj!l?8U3;uDKBedq2h9%=; zX~hs#mBiXc*ss{BoVIeQT6&3H`cN?>_LH&<9rTeIh<5?A-ht`AK5vSMQ=uRR5g^t7 z8AGqfdmgSQTw1%%Zoaa*c3*q_)i+6r`o9hgXB2!Io@lFt{0gbN_B!iP!D8#}vG^AG zDxUu3W38TT&C4k_jnxF#zi=X={F{x=*93@lTCle;CbFq%wqJ^UWae?J(z%o{xS&tWxORh*x)Aw+( z0<T3z)MOf@|uc}igHYbHbJk38Gp!)zz1nDRn<_r5^4@m z=<3O-(*uNt05UMeat8yj`~QTCcuS!AXnPI04hIwuFb@+*anS65WU|E(mig!}n<2|Y zo>iRqV4E%l$)oNd|HVwQg3BTG^X}=?X%>t9sSVR(^i;S4Kh@VX-4-!oF%_B5G$$ph z!@Ju>1raz4ivXo};}4BeIn&5{zHQ{T8ZB1Zw9M!EX4FDV(!Z=5QOZ@W+dNN2KWL)` z%q-pP%FM!@EG&LIT@_5x6qtL3QsPN-ruh!w+I1uKJ@@%+lbPy!TydT}$8XoxMc7|2 zcqPTTIpAL9jB3--c&L4B;Lyu-t>>+lWOd_QDwE?oW**hs|3qU--qW7$%WL9rrU00T zL0ug2G2y5Qkk`oo>AHgyf+iCce88&Uy*{OI`DBC5g(M_C^h-Wul5g0N5+(i|S{HD` z4lp#3i|Z8EiJ$qCa(?XI{L>UpR&NrP=qvB2eqU_BBj)`R2C}zR4_JN9@m?+3v7~+a z$}Z+Yr`^*8W8591Sc7O(OG?NG55I+Cv@Q*ZG5RRAbu0U#9qT2TN=v>JYOX?=Jsr2`B?|UuIf+sI^o|Ev=^9wU)*`>4)MqcB%o)6Rd3J$&nGRxdE6$- z+robj8!pT^CZRol_DO67eA* zsgGZ$QKppzl}cXEwyFuS5Va%Lo^v zT?Ek{keLi6dQ5QnlPEOs;STgVxdk|5?)Lt1c`)rLLH%kkeJi@nsxO9jeso4Wt+3Xw z*s5VjC;`qAitmp&kLi7VZ`Y9>G!&7m%{kEdwU1$4fGZSFiOZ%qc~6OZ`;|Fo?KOH= z)p+#;Yc5vO1BdfYKRT?p{b(${=E~aP&%wp8hb&}im*UdK70zKs{mWo~BLnI~$>)a2 zOj@g2HLL#EdS{`LV2k1a0YqF|f`lv3vHRHZ~hKM|B*g~#N(~SMu@;$)(l+ba4C=0X8)Y0WQ)$x1Zmk#l=;Z-_x_u9jLeUDb1FQ@$NgU)R z73QQjsXFe|MiyS2JY=|dj9>TcbF*{5T&Qt0b};yG@%4wmaAM1Yb-nzbly;ZmZ#>l? z9>Rd#(Gn5R@L@I6`qJ+S=DH;Xt~`x_Gve0j@>oQv^G2Nz z`rY7lFS_#i5*wQZntJTyhq;&jZPleIb0>ubd@b_UYC7dkZZt9^ow;szK2!Wd_S$NT z(fPnzy0PxZLwm}1GbV61_^w`MEi@J1KFFmgM%Zxl)9p>K1}1Ak9A}VaJse5@O3AUI z_9ba7VQc2)*-7fbyC6)N@eb`&n$fsWvg1cb(O=WfzvK?*6dUsfGjA8ffo3K+9+Mx_ zD-}}5Y(Yr3<_z{+SjV#wr5^tOX;jEO=%xS$di3zD0)`Ac5=GnksSs{=-PJL`=l`CA zoPv=~;^zOT3qnO79mzvIvyasMZ#4Vgu!GkBg&p7$0AP6heFG~Y1itJDiG&ow3qrMy zwv{PioX}0^sQ)_Vz0W`h$gi&3J7spKsV1r=RdLigj<)C?W9y`O_YHT+YkZP_wEtw< zS80o>l|ORJyhtCs#4MX}^IdZ5AYLN7*SFWrrR>a4T;uqph#5D>jK9BA!5A#l*;4(= z*G)=vmV0budF_493j5dOj3s_aO-A=z8*4l3jB>eEkL_9Ys>Z%8%k9q#Evfkvc?6m? zp)h)2UWxc}<*MZCWtO6VFsEdjwOofVe;7=KWO|k<)z zCiFKnUAw$do%Dz}gdZ$b3$ThX>y3VxJ7PL!jzJ!vO@So_3+r{E@o|8hsGsRfkI|FW zvpei?Y*}bi0Q&rjLkryVDwR>!Blf-hKYsJWbU@fQN&jaIAb#_&1q9$CC^)|-dej1^ zUBZq5Zky9d_=i95d_rw^0~f=yPj>bRrwsh*Y;A|OdysepQ0V#gn|d6f0Js!t&!Ki0 zSVs+ywFt1X^UgW7S`|D$RnQyr zzTPl{vde*WP2^8Bx4R__Y9!|czE|0nkB#0GHSe3;PRw%*5J-`@+~M?8bZ=z5)a;l= ze}9^QZlkPWYI;^n%Wdly@6mkUq^@qrPx!YR4_kE~mYG>pt*v-;C)Ta}*#90RF5o9? zx^n1-!o-x(Z(@R@58*84xytSGpcs>Ak5Ix~+bJA%9?4)AEK$OV>|oxRagNaYp-ev< zrM%9Zu3*Y8W5Jn>61gT0S%rjX8$>cCm$IG0wTE@G!gaJV`_eKjgN@nHcnesotR@4c zG#th=XOGdFI_*%KDz4w7f+8-(fkpD;MDQMzpVMfPi%sxUy0{qv3FtYx9&uCsuOq;{ zDV{i@CdDDY?Ac%+7)}KE0q)nppL*Zu56jME$ypo^f#);IC0X5iWhey2& zo;A_JvAH(Um1)M{csDf0=9b8bPRFE5gQN^K_q$cKv={T`3m$UEzl^wG@F7<$_JZWE zEs0n$+Sy7oJnKVg3qA!K(QLA^r9V_cOJQXdZ0*N|z8vKEM#EDYU#BcfxaA0!ai z7-N@F%vow?!rmwv-O0AJwyM-58!UF7JNetyd#N+lPfc_DOW*U*8b3rdH|l){Q^L~P zJ*ZZ@!v0NgUQZle4S8h(BTb5f41Wrl+_`n{3Gif|C(LC$JJUq$4~O;!Z{$hevnw0o~2ws|H80>4!SKWxvnQg0<(!-CYFw%GtQJ{qc}#{YS9Ku4sbdV)E_8O5 z7Z1>9ppXI|p++Z{XpzC=f{0Izl;L~Xe1hcZ>4??%d-|OmtRN7sde8;PkEl!J=wi1^E<7@m2%H>LMlh7Min2*Zq#wus zrB3IuNngW0XbGRZo5VB2g8Q;|3Sch>kU3R4wfD3t`pf0rwt95(!&}XaA{W*X&aV0K*l@ee4vR25huM{vtNtULY%6;w%Y0W& zF1-2{h21_j(^1T-BU)3^?U`M(mO*DTxH`$%Q8jybJ+>F7k|}v9u`PJ5QF*@R;4S2} zz7Lek)p}cFB|IAjO1j#eJ^YS96RQnitl9D-@L0C_A6N&Xuqrc-bW(sx0wMTmQuKs-^suN;vvMSHbjk}>6 zha!(-PeXJ_dFlH*PB~Nw!4M*SkN6-W>maakX8FG$A{6IWLqGq#0P8Pw^9>&R5SuIu z5*&Q?QLI!ZPpKL!Hh0gwkUZS+_>*2K?8X@UsaKM(u2PP>?a;q}EhTs3 zl4GCBPs!ouZ_6A#`@0jvMjXFd&QOVq@Y7y)VwmLA?sSskOZ?W;EqLE6wxjTV+S3vF z_Lk3@RgK!QW*wTw))wWN<>&j-+RH{_x%wsM*Wh3x^;BTazfy8S>Vufn)6UsDw1fS1 z?Gm$XBk8xlaf+D~rQYbgTGy*1oFdi1QYXvUde7vZuiC40ffmNHM~cip8W0X(-KXDQ zKJs?*+6EP`S0JKXb=YQ=>_;4?nOuRap6c#? z$Uj3OuS|zICMsa?QN}WhIqI=GeKh3935<-tRG?$Mg^I<7YvttZnyW>F8VURY6UQ}d zqGN!Cbp~ObjMD~juo5pTyc*7exP|yJ#9Bm1_=4pC|G%Dv2RnqL?}-}>0#=DlCjW%; zav{*3#s=QcBEj7UIGege-r#K|e;TEau^>wH<7c|vU#$&rJ=Y;30JI#UK&2Jc`2F6? zx-&x?fop#%WUOpV6jv^Oss6gJ#-o@(8E9=vG5__IRMPC%^vA{{}J5y;3|-Rs+XDEjfx=$&%R&(BgxlST49 zKU_4B*v%b3WbKrL>X4fmNL?CXopPNQrM|6PN}9^tyry?Uo_QQm^f8#7Ij1*^0Yj~O zkGlHPG_4J_bug*dIPEB+v3F$Fa$ zEZi7I|AH4r1c3^gScehzNT^0dA>hRSs6ZGxGqwncGbHf# z@Pgymjqw%*1PX>NNr87ByfhWN4=K@20sDB9_ly%hi<((hs}~5r$KF4y98%v7J0O!Q z>(?>f&irfkN3nBC!HYU4nFd_QcxVhlxy1oVl{|BK0F-;&XYfiNif6S91NcG$LK^+L zO~#*@_~|QgJrB3f?26U8b@utQIR$^_oa)80q?bgxUO3m0A}-RkzX#t68_F$-ZU;EH7AmCuX~M{LR)(>(|!3 zxnD^!5D*&IDX+67>Iy-(85kY1*Q}+?g5SKAIIq+7u*xpVw05!AZTR)hR8(?V+gUI> zl6TIuOLR=dIaQRWNfe;egz@Q@XHRxam^P<7mVQdFvb#FDEh?hC{aKyBlR3v#@=Af? z+qaIZdA*L~E7AT|Nza$8x|SObxGF1iE*U-0?>Or|N&*VZl$tK;2_Q(^6}5b^DkLxD z9)A{XSk6pJD#@7l7ANVaTwvAI$UPyWh`h|v_sjlWYow(E0-CCgcRNtk`*K$KESQGd zry=W)%ilT8U%Kth*F;TIHX!41aJ$FvLlohrq#}LOi60Ct!&? zL<;=xL%7>RjwF|S*?*)JiC-ZB>kkaTDgy`(fh4ETLC}C#aY$J4lpYIRQv|994N&wT zi)dUEs}Ubikpl8hyMk%wCm#2Wk6WhCw>0u9$!+EEC>iH+`9zD|XqE1J!gvW8x^gJg zTmN-2JUsKHd%{GseMh32*QAbwmRiT(kIQ1a{uDD&!$E&7SEVk`(**msHSfRkwaZxX z5I--@W0A3UqlI7KTkXgF1a7tYJdWKF(URC-zurFka_Hyy*JC2?mu$OK@dbyKtt2*7 z4r1YFtt_k+)T{H6{NW@lv{p7()6vmEDj-1W{B)NQll3O_WTr3rek&Al zKQFo>buRaYVAj4;&AZ|LPYBCH;U``x+ns+2awPLQxZkRXC#SFv>*j|DjG=k*`kAM@ zVZl@3DUULr+b4ARERU5oa0s>tkWKBOu%ySqXqYMaX~%5UY-NngF+QGY$b90c13gBJ zN_-$D=r*liXM=QRsgy&d7itUF6hf1J5oIK5hAi*2h2FpF1@uvy5gATAjkvxaP29`E zpfnMH0UN;!%^CIqs8$hN|NR2s$S_2;heV^1xHGIS!NPF;5x^gbOL#CEhr$0s1C}NP zEW>!4vxr^;2UgE<^E|NuI3?mA{AGKl>>rge*a=FADI%ciy|+d1~K>~2o6M);4P z+<2dAF$8W}4`1#yo2!+sNfFcB{p;VBo)QZo+6C|lVjNfbhCXzanR%}G=14yXdi$g+ zMSo!Thb0}v5ltA;aT9xWM{Z8+oWfI0j;7qTmgL&5&*N(&>DgQly)k{@JR z7Vgz6mK-D?fF#O%Fhw~7mj#vroDmx@Ln;IkEE88Os-9QI(W|7YAe8^H2sD!O3k9jT zKzIF!AVMS#wg-{m))YGw*9C(LfY=N;;)ei3+=!~7T9|Zk!8qbCOEt)eOaPlKy;c%QOttkKwr#t+HpO0+_?}anfQ6xwCCg>%Yef>W~JVp5K;3zqvpRfe+WnGWJ zIv^SgPFUrb__$s^O8@1$~{ z-6Y+@(ePP2n+BQ1Xny=wFTM9t!!X5t;#aR;$8PrC?3Evz&%ba>l_=cYG3r=+dtj~o zbKr~Qtd`cwR-Bh?w6(19aMenwZ%u$miI-R*0`NC$KiCuXMdF@kLh?LGF!Q=cNZ2 zQe|c0$MD0WRwl>&`_X@mFZoiunF$H{u=-fuJP9-gevDrLr@0Wx?_sYDW8*{ud(e*H z^g=vEVdjF+=otvKgaH_GQE6BKzFE2J6JrO&z2i?_3Nrl;WdS{fA^(mik--Q5_cupx z-y2kHH@+8f6L{;XkKk7hXdu9-sVj@Yhq-s6-L#!QHD~8Xcem{wTPA2|mvx+Fcj_LV zyEu7q&cY`4PQ&5um#V_3!@{oUXe+7c2?%x;?c}~6|1#~8#SPNSlZy*;_mWFJ93iq~ zPG;vsmh@_hL}&a6PQ1VKwQsUz0okku2P$jLraw8wGVSW-)q}q3i7`I_UGCfkFKz8aWRm;dzjJ4_y+S&n7#m^Pe|5snzIlWi+nQzJ1oa zLSOp=@BP%IS!*;-0D}}oo>kSI;HN(o0d(VndL$lf7Pv@?or7yt%91<$Irgj0*Ni-1Yo|MkP;WXcJq z?79-DRCG`T8^9YfBav8>6A_UrFkY3M)>MinBbJ0qrhDD!^$FL;*d@ z+i@s3%pd&~vG4vtWh3xYG;Mp&=DvLSX-#ijRJ332_IgzAz)wHs;LUA)I`&E_3B6K@ zPLlIHZxpv*E!~Z|lRTO8Q0aqCx17k@>KbR%W^(e?jm@JN0MAclp4tc=CDMOV$r{941@%;(3G(;;y7Yb{E-0ubUdh9F=7XqWg8(WV0001h3IGHE0002qV|yL_3l1pY9Cbr~9^;MK=P#~4e=#uUbN=Gb zwezcdYww4c^AiByF;~Pc=KDjOpTtuDZK!r;X#1z1;wuDEF@r?zjHG-+gwIr*7Uv5*y1USO9*b e7w>=siVX%hHWs+V<@^i(-`V;)*KT4-vq%BaiM&(* delta 28660 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 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml index 43ed20c694c..2cb9b5233d0 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml @@ -18,6 +18,8 @@ state: timer - type: Item size: Small + - type: StaticPrice + price: 40 - type: PayloadTrigger components: - type: OnUseTimerTrigger @@ -28,8 +30,6 @@ path: /Audio/Machines/Nuke/general_beep.ogg params: volume: -2 - - type: StaticPrice - price: 40 - type: entity parent: TimerTrigger @@ -40,6 +40,11 @@ - type: Sprite sprite: Objects/Devices/signaltrigger.rsi state: signaltrigger + - type: StaticPrice + price: 40 + - type: Tag + tags: + - SignalTrigger - type: PayloadTrigger components: - type: TriggerOnSignal @@ -49,8 +54,6 @@ - type: WirelessNetworkConnection range: 200 - type: DeviceLinkSink - - type: StaticPrice - price: 40 - type: entity parent: BaseItem @@ -61,11 +64,11 @@ - type: Sprite sprite: Objects/Devices/voice.rsi state: voice - - type: PayloadTrigger - components: - - type: TriggerOnVoice - type: StaticPrice price: 40 - type: Tag tags: - VoiceTrigger + - type: PayloadTrigger + components: + - type: TriggerOnVoice diff --git a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml index bdb02d2bc35..8177b6b6f0d 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml @@ -1,97 +1,148 @@ - type: entity - id: GlassBoxLaser - name: glass box - description: A sturdy showcase for an expensive exhibit. + id: BaseGlassBox parent: BaseStructureDynamic + abstract: true placement: mode: SnapgridCenter components: - - type: Anchorable - delay: 4 - type: Transform anchored: true - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Glass - - type: MeleeSound - soundGroups: - Brute: - collection: GlassSmash - type: Physics bodyType: Static - type: Clickable - type: InteractionOutline + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.45" + density: 1000 + mask: + - MachineMask + layer: + - MidImpassable + - LowImpassable + - type: ItemSlots + - type: ContainerContainer + containers: + ItemCabinet: !type:ContainerSlot + - type: Anchorable + delay: 4 + - type: Appearance + +- type: entity + id: GlassBox + name: glass box + description: A sturdy showcase for an expensive exhibit. + parent: BaseGlassBox + abstract: true # TODO: Temporarily abstract. Remove it after item scaling in cabinets is implemented. + components: - type: Sprite + noRot: true sprite: Structures/Storage/glassbox.rsi layers: - - state: glassbox - - state: caplaser + - state: base + - state: caplaser # TODO: Remove it after item scaling in cabinets is implemented. map: ["enum.ItemCabinetVisualLayers.ContainsItem"] visible: true - state: glass map: ["enum.ItemCabinetVisualLayers.Door"] - - type: ItemCabinet - cabinetSlot: - ejectOnInteract: true - whitelist: - tags: - - WeaponAntiqueLaser - doorSound: - path: /Audio/Machines/machine_switch.ogg - openState: glass-up - closedState: glass - - type: Lock + - state: locked + shader: unshaded + map: ["enum.LockVisualLayers.Lock"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.45" + density: 1000 + mask: + - MachineMask + layer: + - LowImpassable + - MidImpassable + - BulletImpassable - type: AccessReader - access: [["Captain"]] - - type: ItemSlots - - type: ContainerContainer - containers: - ItemCabinet: !type:ContainerSlot - type: Repairable - - type: Appearance + fuelCost: 15 + doAfterDelay: 5 + - type: Lock + - type: LockVisuals - type: DamageVisuals - thresholds: [4, 8, 12] + thresholds: [4, 8, 12] # TODO: Fix damage visuals on open state. damageDivisor: 7.555 trackAllDamage: true damageOverlay: sprite: Structures/Storage/glassbox.rsi + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Glass + - type: MeleeSound + soundGroups: + Brute: + collection: GlassSmash - type: Destructible thresholds: - trigger: !type:DamageTrigger damage: 150 behaviors: - - !type:EmptyAllContainersBehaviour - - !type:PlaySoundBehavior - sound: - collection: WindowShatter - - !type:SpawnEntitiesBehavior - spawn: - ShardGlassReinforced: - min: 1 - max: 1 - GlassBoxLaserBroken: - min: 1 - max: 1 - - !type:DoActsBehavior - acts: [ "Destruction" ] + - !type:EmptyAllContainersBehaviour + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:PlaySoundBehavior + sound: + path: /Audio/Machines/warning_buzzer.ogg + params: + volume: 10 + - !type:SpawnEntitiesBehavior + spawn: + ShardGlassReinforced: + min: 1 + max: 2 + - !type:ChangeConstructionNodeBehavior + node: brokenGlassBox + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity - id: GlassBoxLaserOpen - parent: GlassBoxLaser - suffix: Open + id: GlassBoxLaser + parent: GlassBox + suffix: AntiqueLaser components: + - type: AccessReader + access: [["Captain"]] + - type: Construction + graph: GlassBox + node: glassBox - type: ItemCabinet - opened: true + cabinetSlot: + ejectOnInteract: true + whitelist: + tags: + - WeaponAntiqueLaser doorSound: path: /Audio/Machines/machine_switch.ogg openState: glass-up closedState: glass +- type: entity + id: GlassBoxLaserOpen + parent: GlassBoxLaser + suffix: AntiqueLaser, Open + components: + - type: Lock + locked: false + - type: ItemCabinet + opened: true + - type: entity id: GlassBoxLaserFilled parent: GlassBoxLaser - suffix: Filled + suffix: AntiqueLaser, Filled components: - type: ItemCabinet cabinetSlot: @@ -100,40 +151,83 @@ whitelist: tags: - WeaponAntiqueLaser - doorSound: - path: /Audio/Machines/machine_switch.ogg - openState: glass-up - closedState: glass - type: entity id: GlassBoxLaserFilledOpen parent: GlassBoxLaserFilled - suffix: Filled, Open + suffix: AntiqueLaser, Filled, Open components: + - type: Lock + locked: false - type: ItemCabinet opened: true - doorSound: - path: /Audio/Machines/machine_switch.ogg - openState: glass-up - closedState: glass - type: entity - id: GlassBoxLaserBroken + id: GlassBoxFrame + name: glass box frame + description: A glassless sturdy showcase for an expensive exhibit. + parent: BaseGlassBox + suffix: Frame + components: + - type: Sprite + noRot: true + sprite: Structures/Storage/glassbox.rsi + layers: + - state: base + - type: Construction + graph: GlassBox + node: boxMissingWires + - type: Climbable + - type: Damageable + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank1: + min: 2 + max: 5 + - !type:DoActsBehavior + acts: ["Destruction"] + +- type: entity + id: GlassBoxBroken name: broken glass box description: A broken showcase for a stolen expensive exhibit. - parent: BaseStructureDynamic + parent: GlassBoxFrame suffix: Broken - placement: - mode: SnapgridCenter components: - - type: Transform - anchored: true - - type: Physics - bodyType: Static - type: Sprite sprite: Structures/Storage/glassbox.rsi layers: - - state: glassbox - - state: glass-4 - - type: Clickable - - type: InteractionOutline + - state: base + - state: glass-broken + - type: Construction + graph: GlassBox + node: brokenGlassBox + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + ShardGlassReinforced: + min: 1 + max: 1 + MaterialWoodPlank1: + min: 2 + max: 5 + - !type:DoActsBehavior + acts: ["Destruction"] diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml new file mode 100644 index 00000000000..081f22ea8dd --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml @@ -0,0 +1,160 @@ +- type: constructionGraph + id: GlassBox + start: start + graph: + - node: start + actions: + - !type:DeleteEntity + edges: + - to: boxMissingWires + completed: + - !type:SetAnchor + value: false + steps: + - material: WoodPlank + amount: 10 + doAfter: 5 + + - node: boxMissingWires + entity: GlassBoxFrame + edges: + - to: boxMissingTrigger + conditions: + - !type:EntityAnchored + steps: + - material: Cable + amount: 2 + doAfter: 0.5 + + - to: start + steps: + - tool: Prying + doAfter: 5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 10 + + - node: boxMissingTrigger + edges: + - to: boxTriggerUnsecured + conditions: + - !type:EntityAnchored + steps: + - tag: SignalTrigger + name: a Signal Trigger + icon: + sprite: Objects/Devices/signaltrigger.rsi + state: signaltrigger + doAfter: 0.5 + + - to: boxMissingWires + conditions: + - !type:EntityAnchored + steps: + - tool: Cutting + doAfter: 0.25 + completed: + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 2 + + - node: boxTriggerUnsecured + edges: + - to: boxMissingRGlass + conditions: + - !type:EntityAnchored + steps: + - tool: Screwing + doAfter: 0.5 + + - to: boxMissingTrigger + conditions: + - !type:EntityAnchored + steps: + - tool: Prying + doAfter: 0.5 + completed: + - !type:SpawnPrototype + prototype: SignalTrigger + amount: 1 + + - node: boxMissingRGlass + edges: + - to: boxRGlassUnsecured + conditions: + - !type:EntityAnchored + steps: + - material: ReinforcedGlass + amount: 5 + doAfter: 2.5 + + - to: boxTriggerUnsecured + conditions: + - !type:EntityAnchored + steps: + - tool: Screwing + doAfter: 0.5 + + - node: boxRGlassUnsecured + edges: + - to: glassBox + conditions: + - !type:EntityAnchored + steps: + - tool: Screwing + doAfter: 0.5 + + - to: boxMissingRGlass + conditions: + - !type:EntityAnchored + steps: + - tool: Prying + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: SheetRGlass1 + amount: 5 + + - node: brokenGlassBox + entity: GlassBoxBroken + edges: + - to: boxMissingWires + steps: + - tool: Prying + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: ShardGlassReinforced + amount: 1 + + - node: glassBox + entity: GlassBoxLaser + edges: + - to: boxMissingWires + steps: + - tool: Screwing + doAfter: 4 + - tool: Pulsing + doAfter: 2 + - tool: Cutting + doAfter: 2 + - tool: Screwing + doAfter: 2 + - tool: Welding + doAfter: 10 + - tool: Anchoring + doAfter: 2 + - tool: Prying + doAfter: 2 + completed: + - !type:EmptyAllContainers + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 2 + - !type:SpawnPrototype + prototype: SignalTrigger + amount: 1 + - !type:SpawnPrototype + prototype: SheetRGlass1 + amount: 5 diff --git a/Resources/Prototypes/Recipes/Construction/storage.yml b/Resources/Prototypes/Recipes/Construction/storage.yml index 41abf881b65..c8edebc5096 100644 --- a/Resources/Prototypes/Recipes/Construction/storage.yml +++ b/Resources/Prototypes/Recipes/Construction/storage.yml @@ -49,3 +49,21 @@ canBuildInImpassable: false conditions: - !type:TileNotBlocked + +# ItemCabinets +- type: construction + id: ShowCase + name: showcase + description: A sturdy showcase for an expensive exhibit. + graph: GlassBox + startNode: start + targetNode: glassBox + category: construction-category-storage + icon: + sprite: Structures/Storage/glassbox.rsi + state: icon + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 5545e21ee71..f544cd95ef0 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1110,6 +1110,9 @@ - type: Tag id: Sidearm +- type: Tag + id: SignalTrigger + - type: Tag id: SkeletonMotorcycleKeys diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/DamageOverlay_12.png b/Resources/Textures/Structures/Storage/glassbox.rsi/DamageOverlay_12.png index cce6fe0ba3c8c14ff0b5f6f6661a18be74d56f8e..a82bb8b2338f154497c6ffa65c3def8ab4e5a8e3 100644 GIT binary patch delta 487 zcmV|u$ux4WLXA(GNcHa@z`2@-djn#W8f(rqF))xVCny?0;ncm6_m4#@q{1CS3!k zVK5uI6B)-_c{lLjd{GW4zXsl`a?-IJK%{MMIuZC&+3vGM>ihu!W3S%;u-#>eu_A7F z)s1c1I}u22o-~pPVBVV4<_X0B=hn#$wF(b5U*{mwOXmx|0|KRYjbKHJuSuyYvZ;Yf zCs{%csF9F^YJZfSr#7#(BB)qI0I-S|YjSe%czd0{M`1AINx2@evs^k~MB;4owbJ?G z^E>|_jMlQq!J;Z?N00-_7IE9HR_H{;U=bN(o9p+;^ahup^wxm8kQq&&HdL$vl$><3 zah?1+pMMRgt*??O|89%X)@wf`H2rc?Q=2Etc)m_;o?x7g9>E0gN8n`=U>VOZzI^J9 z%@S?miNwWbY_^ftWaCQR*H1^o#!ia{rs;GMg{ye60Z>-YWiz!*9woe3)ZeU delta 1275 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 delta 1096 zcmV-O1h@OA1KbFZBYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D1Mx{jK~z{r?Nv)p6HyeNnc|bA8tvdCipGd-LE;m`0v`**LTwS+ zu8FvJB}*k57bLjRg$on$2b8JOstZkw3K|l85u}x3j8Wo)R(}#*)Wk=}^WC|3W++1~ ziNVD1B{%n;d+vFkGb6Wl#?MIq5X^zdA-`wgGIce-n-hHhlKB|DmC7;)P8@3pfB5wI z9_P&o)~s52;NsQ(9);8Y4F8z}`Y&shh|(R<^VTW`#U=AoNtjgz>T0(H`Eh3Cf9d@6 zXHYDqIl!VWL4U98vQ~*GIRkaI-r(TyXq=O?Ly__ocfb@Xh<*lTj^Of+uif1qbZn{fKO#-4(-;+L^xPeq0`$~FTJBY;*CrN)vg(|kc%Y@J)vephsNJ~ zDpyF4d;9lJ?*U@UqA;W+((G5GJ*iBn$)_@5N_4oXrlKb{G$H2~$+*WI;}IeuKQk27 zQW-c`Xn)vT9JZqcjl2#aYLpTn1NGah0@xt|W#>)oByFpU8e(W z%xTi4A)5}y0oTTwgRN_Qm2Y!jzZo|$LWWZ>v$;^vr}n^eqVL>KKkMoUw7K2NICz3? zKa=Pd*#X^nz`NtZ+2=x3TPWGrh3nknbs1ktV;& zQvbt9r9|V+qC;a5U>r0IV&P6WVb)j}BBO8!&a(2%0LuaDXc*OEh7kyAajG8_Qz8&O zo_~RcK`bW6f%m%0_9uj9S_4CrH6DNytTB8uDapFd6zD%?RxzYrM2!;Q4iI(cq&Weh zqx6o_j`P5<;V{7X1tsvTGsbX=1IPjc_dZ151CZ!)F#$*|I{aiu>`J(~wgSo#efv3H zf8wKgkv+UeFX1}cOC=Q!&@LPhS4Qm?^MAFF7I82>N*P&37lV&QKsjV(fh;0t<-zX& z#%b<}Wd;#Vq%ts${)z+)XY80hh5~$SlF4iiQ6xubKk8TgK2JHE!oIaeEl-YSbE$MT zhpf1lE8~bfNn^@nFoHb9B)!361nCxI$V#wrS9Kp_IN`hXDQ2HlD8yLtz2%723qi3P zyw-Mb2b}QcNz&*6PCEi!xoM~W0nV?VruOl~FxYtj_}J}l<}r`rkfh&|-a{1MrQ4$b O0000Px&KS@MER9J=Wl}m3MRTze!86RI}V$;}hF14FpNL&>VAR(a?K|>dSgu((AWswbg zulNO(y5tY=3s^wgRgqd%iquj<)0Ctnuz)61r8KUo?f4QWGxl7LyKpw5`s zaIo(*a8cb$)4z*-fPH{{fE@wc|M^aOX?`}nmFBk}XVMGP*SFNPhUipyZ(+_Ws(<~J zH?HUr01TrFfHIoGwk+nZO{Fz0#49J?`SKqF{BrX~+LaO-4SYTy^DmA7Af=0{`jFB^ zh~`aRuh&r&l}1Binze0f3-|8Tv#SpiEX~|_89)mP%(~+Vma`S!c=HslwD73`Z$1+4 zp;R^yqCq6wLuz!GO0kGfG}lzFRG6EeXX(3dy|2|;JMh*x?%k_rMK~l_{rwIfe|iQ0 z%a#QEn_DASsSyYq#j^h3=#j%%mW>bsDJ8aT1F&J#h=g_GeFyLh0g8g-I2=Bbz;#_> zJ^trv&tAJiI3!R$`sDM5cBq%s3w0J(B*Q&5Vo}`#xP1EolarGGxQ@*?=P!^jHQF{u2)Um# diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-open.png b/Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-open.png deleted file mode 100644 index 48db8e88e598cda3e7e3d2d168f4efbe85d3e362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmV+%1LOROP)Px%)=5M`R9J=WmS0FyQ5?rVZr9Dbg}Q8-|3VWVM6n2lR}2CRB`@Gz9&i$R= z_sj3xbIye{Y0{)gvkltX+LV@-79~-P)oN858ygeGL?R>`c)9hGvL09iU>H<^>4H)K zzAnuJFrd}q@pzCVNimzv^!N8?B+8rce8+%TdS6ON)5_ zVG+@=L3wEr=g%F-J~f5jkOhFl?%-xe2a)+>a{~zZCXveWJaxc6cy3E0QDuAj>jlvze8Z6`nkLKu^zoM#smguCAi9^EQGI z|B1zFWn4R5qr_HVU}7O^(%`I1ZCflBLZJ|Tzn^U1BGbPF4jMyhTzh*vhihxO)zw9o zUQgi5q&m00rZ}$JN$rBVGLzbNd%di#uHyB2sV&G-#Ve0C^KIiby}iBU<>le``_Zg? z`fu)}w_&mrYCPcbpi44-TL!{Q;i9Ul3Q-gpoc#>IiRM;DM&4mG8o}q;mf>v~s4Fw! z7WV_t-QC6Hqz!<#!*kedwy34r6$1d-zC{4;UcVA&E)_H>&DufI1~d>pog$yRNvu}J zy{pHR+T8OzSW4CYkJaA@_8BM4ICn*GD~5*Vqx$MLj69a{d*ol5Y}K(Nx7FbuwcAh#U*wQ%agF6~%j_ a`hNfqy%slc>Gk{o00007!?>LYJb}?A6|5JdPdUD zrF|xCvCQ*1+-1R*@Nlv7WO#C{V)yagd0^5`J070p{`E^%G8fhUcu-bbarn>yrd0wG z4m127e0h0XqozX2VV&T_n_E~u+!6?K7Z&H*@Jl9advit+qldkhp2f#W@-qxREN4vN zKDkxqrkvP}euphWx69iehu<^2Af(~V-T1chtK1=WhIdPn{HDIU#R>E_gQu&X%Q~lo FCIE({b}#?{ diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/icon.png b/Resources/Textures/Structures/Storage/glassbox.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1c8c8685e9af057949444f072543ed07261cfa GIT binary patch literal 459 zcmV;+0W|)JP)zd&&Gx9H>|f}prqMTAb`3x}p? zt8IK>qei1cRZ@B^yt9SxtfVw(uCRELRiyRrmtFfG^++{JDU5Ib561r#m>>-WmYV0s`yt*%O$% zcg^r9FNbUMqD~d$PxhIdP5|&^JJcxN494AiXJeH*RUl1F&An>zCVCqlNf{2EwGT9h zf}RKz%p&P~6+JFgqioL4~2dfad~3eF4;WrWRBXR?%j6&vvCq+}wL3 zB0WnO=eK2hqQ_nbptmdR3G}--KFgOrqnv30`Ck>4av>7Z$e9+AkXErk&a}#3K{DI; zV^JieeL^dRyE)R#NcXGz@HA7XsOfK`JJwvbegho}dh=%pOmhGL002ovPDHLkV1ils B#`ORI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json b/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json index 5ce653f37b1..33decc40092 100644 --- a/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json @@ -1,50 +1,44 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/0129a094635aac51e00fdc7aa3b4248affc1f49d Sprite modified and updated by Nimfar11 (Github), Shatter resprite by KREKS", + "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/0129a094635aac51e00fdc7aa3b4248affc1f49d Sprite modified and updated by Nimfar11 (Github), Shatter resprite by KREKS and modified by MilenVolf (GitHub)", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "glass" - }, - { - "name": "DamageOverlay_4" + "name": "base" }, { - "name": "DamageOverlay_8" + "name": "glass" }, { - "name": "DamageOverlay_12" + "name": "glass-up" }, { - "name": "glass-4" + "name": "glass-broken" }, { - "name": "glass-up" + "name": "caplaser" }, { "name": "locked" }, - { - "name": "caplaser" - }, { "name": "unlocked" }, { - "name": "glassbox" + "name": "icon" }, { - "name": "glassbox-empty-open" + "name": "DamageOverlay_4" }, { - "name": "glassbox-filled-closed" + "name": "DamageOverlay_8" }, { - "name": "glassbox-filled-open" + "name": "DamageOverlay_12" } ] } \ No newline at end of file diff --git a/Resources/migration.yml b/Resources/migration.yml index bf18cfe555b..84203370e9a 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -327,5 +327,8 @@ WeaponPistolN1984Nonlethal: WeaponPistolN1984 WeaponSubMachineGunVectorRubber: WeaponSubMachineGunVector WeaponSubMachineGunDrozdRubber: WeaponSubMachineGunDrozd WeaponRifleLecterRubber: WeaponRifleLecter + +# 2024-04-26 +GlassBoxLaserBroken: GlassBoxBroken ReinforcementRadioSyndicateMonkey: ReinforcementRadioSyndicateAncestor ReinforcementRadioSyndicateMonkeyNukeops: ReinforcementRadioSyndicateAncestorNukeops From 2621e31343cc6ea7d09a8f96361c607544c83954 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 13:54:22 +0000 Subject: [PATCH 40/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c5c4b3dbea6..5aa7c5e60f5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: musicmanvr - changes: - - message: Toned down the newton cradle and added it to the bureaucracy crate for - bored accountants. - type: Fix - id: 5963 - time: '2024-02-17T23:55:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25357 - author: genderGeometries changes: - message: Allicin, nutriment, and vitamin can now be centrifuged. Protein and fat @@ -3856,3 +3848,14 @@ id: 6462 time: '2024-04-27T13:50:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/21461 +- author: MilenVolf + changes: + - message: Glass Box now can be constructed and deconstructed! + type: Add + - message: Glass Box now makes an alarm sound on destruction. + type: Tweak + - message: Now Antique Laser can be put back in the Glass Box. + type: Fix + id: 6463 + time: '2024-04-27T13:53:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25365 From 2cefd0ee10c535c8ed0a1f93f2eef412d5f4d53c Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 27 Apr 2024 17:55:28 +0300 Subject: [PATCH 41/89] Displacement Map Visualizer QoL (#27392) * Update Displacement Map Visualizer.lua * Add files via upload * Fix background layer being offset This was caused by not taking the cel's own bounds into account. Aseprite doesn't make an image layer "full size" if it only covers a small part of the sprite. --------- Co-authored-by: Pieter-Jan Briers --- .../Displacement Map Visualizer.lua | 38 +++++++++++++++++- .../Displacement Map.png | Bin 0 -> 1212 bytes 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Tools/SS14 Aseprite Plugins/Displacement Map.png diff --git a/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua b/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua index b16ab797e7f..468636c07d8 100644 --- a/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua +++ b/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua @@ -88,17 +88,45 @@ dialog:canvas{ local layerDisplacement = findLayer(sprite, dialog.data["displacement-select"]) local layerTarget = findLayer(sprite, dialog.data["reference-select"]) + local layerBackground = findLayer(sprite, dialog.data["background-select"]) -- print(layerDisplacement.name) -- print(layerTarget.name) + local celDisplacement = layerDisplacement:cel(1) local celTarget = layerTarget:cel(1) + local celBackground = layerBackground:cel(1) + + -- Draw background + context:drawImage( + -- srcImage + celBackground.image, + -- srcPos + 0, 0, + -- srcSize + celBackground.image.width, celBackground.image.height, + -- dstPos + celBackground.position.x * scale, celBackground.position.y * scale, + -- dstSize + celBackground.image.width * scale, celBackground.image.height * scale) + + -- Apply displacement map and draw local image = applyDisplacementMap( sprite.width, sprite.height, dialog.data["size"], celDisplacement.image, celDisplacement.bounds, celTarget.image, celTarget.bounds) - context:drawImage(image, 0, 0, image.width, image.height, 0, 0, image.width * scale, context.width, context.height) + context:drawImage( + -- srcImage + image, + -- srcPos + 0, 0, + -- srcSize + image.width, image.height, + -- dstPos + 0, 0, + -- dstSize + image.width * scale, image.height * scale) end } @@ -120,6 +148,14 @@ dialog:combobox{ end } +dialog:combobox{ + id = "background-select", + label = "background layer", + options = layers, + onchange = function(ev) + dialog:repaint() + end +} dialog:slider{ id = "size", diff --git a/Tools/SS14 Aseprite Plugins/Displacement Map.png b/Tools/SS14 Aseprite Plugins/Displacement Map.png new file mode 100644 index 0000000000000000000000000000000000000000..50744cef601c4226b24eba32f33de2c185de3471 GIT binary patch literal 1212 zcmV;t1Vj6YP)Px(c1c7*RCt{2*tw1zRT#zbW5k0X5@(LC{3N)m>h4Qb^^8MOVp3x8T7`F;CqXA7 z<7I%L57O93*2v2YlJALrYE5f;THjylo*UnOWB$e$ysxhFm&dzAyvyr+3D^4u{2z9s zCve3}=R`U`oqaqfq8!eNaDMeU^aOeWSFn6W5TJ{$Z|RoNsdP%%Hc=^*&hinyCdO_pD%}=Ku_QkuC7E~Pv=@zqR4qA zvYb{T$#Es399AO8ekHu@R>H}4CG7fXbLa{51U_NgiinoIfmwol_+wqM3z$}k{l}$=(5>}onG09^kMtP{jARj7m zsPE6AC(sjkXU9Su%js;^Lag#qh((?YG0UwGO|FHgaw$ZSb0M;v3X$Ykh$x3b1lbqD z%dQYkwuP|rRES9)3o*(=AqM$Sh=Y8m5O>OdbLa_NR|0?j@%DRv^VVP2@iOo=0G#F1 zY5cqy9OYj&gH^t_87%Vs&0v-vYz9q!xEWOW(PmKO$D2Wxx6L5sf6wqXe*Eco0KgC5 z-$u~mPc{QDKiv$R{A@F@^7GALl3#2Fqx^C+801%*!9jk#8QhWIYzE)Szip-`&=Yv~ zfn!nvyTK~o+YJ`^{%$bK4|anlKimzf{Af2Q^5fkg%iC^{Fo`Km^$b!pklYPPT!t@)U?k z9s@DTLm-CG|08ti^#nfTNwX(ruLL~N^$LQ z>j^7Qo|xp(6QjTU*vLyM3SQ;q8uC%WbX(sJ4ZO# zI>O46BPRD@XMb@$fu6u8T(v~CO286D&X&k>vP6=jC88WG5oB)(FFQ*(*;>Ndk3aj1 z>k0G(KGVuXlt~FpM3&P;Bsoq*l*2>>*-wO*-9)(Q)1Ljs^#pnXSFk)1c~k-;k>ofM zQ4S*!WIqyq{CsDBaXo>az!fhIL>iR9KtwqVL>R8->@Th-&=a`E#RCx!SAX^w*Aw{C a6Zi)qOv$-@EJcU_0000 Date: Sat, 27 Apr 2024 10:58:14 -0400 Subject: [PATCH 42/89] repositioned spooky long hair to its proper place in the alphabet (tweak) (#27370) * repositioned spooky long hair to its proper place in the alphabet * forgot the meta.json for hairstyles oopsie --- Resources/Locale/en-US/accessories/human-hair.ftl | 2 +- .../Mobs/Customization/Markings/human_hair.yml | 14 +++++++------- .../Mobs/Customization/human_hair.rsi/meta.json | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/accessories/human-hair.ftl b/Resources/Locale/en-US/accessories/human-hair.ftl index f052f232de3..7d3467a610c 100644 --- a/Resources/Locale/en-US/accessories/human-hair.ftl +++ b/Resources/Locale/en-US/accessories/human-hair.ftl @@ -55,7 +55,6 @@ marking-HumanHairCornrows2 = Cornrows 2 marking-HumanHairCornrowbun = Cornrow Bun marking-HumanHairCornrowbraid = Cornrow Braid marking-HumanHairCornrowtail = Cornrow Tail -marking-HumanHairSpookyLong = Spooky Long marking-HumanHairCrewcut = Crewcut marking-HumanHairCrewcut2 = Crewcut 2 marking-HumanHairCurls = Curls @@ -166,6 +165,7 @@ marking-HumanHairProtagonist = Slightly Long Hair marking-HumanHairSpikey = Spiky marking-HumanHairSpiky = Spiky 2 marking-HumanHairSpiky2 = Spiky 3 +marking-HumanHairSpookyLong = Spooky Long marking-HumanHairSwept = Swept Back Hair marking-HumanHairSwept2 = Swept Back Hair 2 marking-HumanHairTailed = Tailed diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml index c2a7ac4ebf7..aa983583c5a 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml @@ -397,13 +397,6 @@ sprites: - sprite: Mobs/Customization/human_hair.rsi state: cornrowtail -- type: marking - id: HumanHairSpookyLong - bodyPart: Hair - markingCategory: Hair - sprites: - - sprite: Mobs/Customization/human_hair.rsi - state: spookylong - type: marking id: HumanHairCrewcut bodyPart: Hair @@ -1167,6 +1160,13 @@ sprites: - sprite: Mobs/Customization/human_hair.rsi state: spiky2 +- type: marking + id: HumanHairSpookyLong + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: Mobs/Customization/human_hair.rsi + state: spookylong - type: marking id: HumanHairSwept bodyPart: Hair diff --git a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json index a6dc03eda83..8fd4f5e1b91 100644 --- a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json @@ -231,10 +231,6 @@ "name": "country", "directions": 4 }, - { - "name": "spookylong", - "directions": 4 - }, { "name": "crewcut", "directions": 4 @@ -671,6 +667,10 @@ "name": "spikyponytail", "directions": 4 }, + { + "name": "spookylong", + "directions": 4 + }, { "name": "stail", "directions": 4 From 74041cf66fc73326ce75b5e9ffd498567f68fbcc Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 28 Apr 2024 02:32:57 +1000 Subject: [PATCH 43/89] Fix literally every single activatable UI bug (#27401) * Fix all activatable bugs Apparently this was a load-bearing nullable enum. * build --- Content.Shared/UserInterface/ActivatableUIComponent.cs | 2 +- Content.Shared/UserInterface/ActivatableUISystem.Power.cs | 5 +++-- Content.Shared/UserInterface/ActivatableUISystem.cs | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Content.Shared/UserInterface/ActivatableUIComponent.cs b/Content.Shared/UserInterface/ActivatableUIComponent.cs index 74e61349328..136a1f82cff 100644 --- a/Content.Shared/UserInterface/ActivatableUIComponent.cs +++ b/Content.Shared/UserInterface/ActivatableUIComponent.cs @@ -8,7 +8,7 @@ namespace Content.Shared.UserInterface public sealed partial class ActivatableUIComponent : Component { [DataField(required: true, customTypeSerializer: typeof(EnumSerializer))] - public Enum Key { get; set; } = default!; + public Enum? Key { get; set; } = default!; [ViewVariables(VVAccess.ReadWrite)] [DataField] diff --git a/Content.Shared/UserInterface/ActivatableUISystem.Power.cs b/Content.Shared/UserInterface/ActivatableUISystem.Power.cs index c9042243281..64099c9573e 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.Power.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.Power.cs @@ -21,7 +21,8 @@ private void OnPowerCellRemoved(EntityUid uid, PowerCellDrawComponent component, _cell.SetPowerCellDrawEnabled(uid, false); if (HasComp(uid) && - TryComp(uid, out var activatable)) + TryComp(uid, out var activatable) && + activatable.Key != null) { _uiSystem.CloseUi(uid, activatable.Key); } @@ -54,7 +55,7 @@ private void OnBatteryClosed(EntityUid uid, ActivatableUIRequiresPowerCellCompon /// public void CheckUsage(EntityUid uid, ActivatableUIComponent? active = null, ActivatableUIRequiresPowerCellComponent? component = null, PowerCellDrawComponent? draw = null) { - if (!Resolve(uid, ref component, ref draw, ref active, false)) + if (!Resolve(uid, ref component, ref draw, ref active, false) || active.Key == null) return; if (_cell.HasActivatableCharge(uid)) diff --git a/Content.Shared/UserInterface/ActivatableUISystem.cs b/Content.Shared/UserInterface/ActivatableUISystem.cs index 452f08c094b..94271cc6812 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.cs @@ -136,7 +136,7 @@ private void OnUIClose(EntityUid uid, ActivatableUIComponent component, BoundUIC private bool InteractUI(EntityUid user, EntityUid uiEntity, ActivatableUIComponent aui) { - if (!_uiSystem.HasUi(uiEntity, aui.Key)) + if (aui.Key == null || !_uiSystem.HasUi(uiEntity, aui.Key)) return false; if (_uiSystem.IsUiOpen(uiEntity, aui.Key, user)) @@ -205,7 +205,7 @@ public void SetCurrentSingleUser(EntityUid uid, EntityUid? user, ActivatableUICo public void CloseAll(EntityUid uid, ActivatableUIComponent? aui = null) { - if (!Resolve(uid, ref aui, false)) + if (!Resolve(uid, ref aui, false) || aui.Key == null) return; _uiSystem.CloseUi(uid, aui.Key); From 7c2ea180889f0a87fca1a5bc329b6a56f4a807a9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 16:34:03 +0000 Subject: [PATCH 44/89] 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 5aa7c5e60f5..c42ada10570 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: genderGeometries - changes: - - message: Allicin, nutriment, and vitamin can now be centrifuged. Protein and fat - can now be electrolyzed. - type: Add - id: 5964 - time: '2024-02-19T06:05:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25366 - author: azurerosegarden changes: - message: Drinks in the Solar's Best Hot Drinks menu now show their contents @@ -3859,3 +3851,10 @@ id: 6463 time: '2024-04-27T13:53:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25365 +- author: metalgearsloth + changes: + - message: Fix a lot of UI bugs. + type: Fix + id: 6464 + time: '2024-04-27T16:32:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27401 From 34ab1e760d5999212fc4590ea729fd2748cb6020 Mon Sep 17 00:00:00 2001 From: Terraspark4941 Date: Sat, 27 Apr 2024 21:36:04 +0500 Subject: [PATCH 45/89] The Honored Quran (Sprite addition) (#27400) The Honored Quran --- .../Specific/Chapel/quran.rsi/icon.png | Bin 0 -> 707 bytes .../Specific/Chapel/quran.rsi/inhand-left.png | Bin 0 -> 886 bytes .../Chapel/quran.rsi/inhand-right.png | Bin 0 -> 1071 bytes .../Specific/Chapel/quran.rsi/meta.json | 22 ++++++++++++++++++ 4 files changed, 22 insertions(+) create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json diff --git a/Resources/Textures/Objects/Specific/Chapel/quran.rsi/icon.png b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c710e8850ce992ddf9242e78f3b3848932ae70c GIT binary patch literal 707 zcmV;!0zCbRP)4Tx04UFukv&MmP!xqvTeYGU5sQd8WT;LSL`57m3Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N1nfFFfAIdG8$VyASYJi%hfH#sN*Y z%|uKTQt4G8_zE97Fn~UE%gi$7Bq@%T^>t6TsqUgY3;(MgHDfWrClJpv!?cMvh^IGg zgY!OdnB`@a_?&pmqy~u}xvqHp#yRJ*pJ#^6WMZB;Of2M@SZQLGH#OoZ;)ts0lOVpzlyBnVJYMgc|Gh|;c;Vj)52VhjI}>zBx-kgEVj zjs=vUL3aJ%fAD*@R(5j2OA3iV`-|gzi~zx1pjL65?_)T<*(~sWM&FbM`fq`*HE(Y9bDTZ^Nt#vs1~@nb zMst+C-s0Vz&2#(njypeyKmD0R-S z-N43e`819(CS)=}=#&S%OPGF`ZM7Gc%BpO8Gdf}JY3uea!qIR9Kzlp^iI|xP-2!ov z#N-z^fk0xvz$hZfK|yqj5)}jh#3`(!f(r2-u0r$|r4XJ&DTF6^71YqzFMMz7udt1- pd$&=k+=YDFI9Bc>=kdId^9Ll1EA$Ts0=obJ002ovPDHLkV1nyZJZ%5~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c0eca315987e5b39f48ee8f4455b72f24733bb GIT binary patch literal 886 zcmV-+1Bv{JP)4Tx04UFukv&MmP!xqvTeYGU5sQd8WT;LSL`57m3Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N1nfFFfAIdG8$VyASYJi%hfH#sN*Y z%|uKTQt4G8_zE97Fn~UE%gi$7Bq@%T^>t6TsqUgY3;(MgHDfWrClJpv!?cMvh^IGg zgY!OdnB`@a_?&pmqy~u}xvqHp#yRJ*pJ#^6WMZB;Of2M@SZQLGH#OoZ;)ts0lOVpzlyBnVJYMgc|Gh|;c;Vj)52VhjI}>zBx-kgEVj zjs=vUL3aJ%fAD*@R(5j2OA3iV`-|gzi~zx1pjL65?_)T<*(~sWM&FbM`fq`*HE(Y9bDTZ^Nt#vs1~@nb zMst+C-s0Vz&2#(njypeyKmD0v0zni9@He`O_5%#+P>1jjsPGU7fv3*h`v;=V9<5{eH+AVCM6s6$>11F; zSzttk>BzS0)~qwo(ROxR7Qdg%pby@{n`JNWOSWxOT*R~Eem(#I00000007JyCQog9 zl}e{nF0ZAmEV<5*^0^$H)a%;)P4!h$^3?V|dT*@MYtQBE|C)uc>!IK?FOgq=-|*F z3?72qfLNTi-}uMHSz}3-CzjYZK;#6(wpir`M2;Yg#125@1pej*M2;YgAFmi{HN-+-4Tx04UFukv&MmP!xqvTeYGU5sQd8WT;LSL`57m3Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N1nfFFfAIdG8$VyASYJi%hfH#sN*Y z%|uKTQt4G8_zE97Fn~UE%gi$7Bq@%T^>t6TsqUgY3;(MgHDfWrClJpv!?cMvh^IGg zgY!OdnB`@a_?&pmqy~u}xvqHp#yRJ*pJ#^6WMZB;Of2M@SZQLGH#OoZ;)ts0lOVpzlyBnVJYMgc|Gh|;c;Vj)52VhjI}>zBx-kgEVj zjs=vUL3aJ%fAD*@R(5j2OA3iV`-|gzi~zx1pjL65?_)T<*(~sWM&FbM`fq`*HE(Y9bDTZ^Nt#vs1~@nb zMst+C-s0Vz&2#(njypeyKmD037JRrdYujnpMBWp z0{{R300000z^D;wO>}*Bwmm&FbIP(yFD=YszC-X?=Q7lhI&FSu|TW6f5 z)Six3^U!O6F1XLyMa4)@kkSMq*x8y8G(Z8JF4syL2S@_T8ec zTP9w6qM#yCGLMcqKHa&oL6c69n3t9AzPfeBr8Xe&1)Z$+=<4P5{_1u;6^Y`!YGsFN zXFGJF(oM|EN_St~I^$9sP%H-hjy`)i-Cy^-Un&yCd7E1mdh`A`eQH+|^Rm+2SGUf% z)CS1+q|F^YT6Xt4>$>XuI6;;W^!!DQ3I*#wd0FZ1t6OJO>Ra;s)YQib$8kboQy6&M zvG%J*J{!cK=U3{MSOr94QmQe$)%+GZe@6Cs|Z`};D+{NdK&*XW5r;pFj z{e^2>lZs?x)Bw}F_&o8MJTJg=13W*#HJLDKfazU)p7>0j7vQ-8o*&?vOc*sl1ZH>f zdEzs9UV!HYcz!_Eq$1fEJyn~leVz=*C;r^U@13@PG@iUZr@{x~;@wMB{Nj@+lt_d= p{S-UYT5YK)008J2?fHN@{RX}YX002ovPDHLkV1fof^*;ar literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json new file mode 100644 index 00000000000..64d37670f1c --- /dev/null +++ b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, modified by Terraspark4941", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 8869fc3bb24f904b507b9c116b727fceceb7c141 Mon Sep 17 00:00:00 2001 From: RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com> Date: Sat, 27 Apr 2024 15:08:38 -0400 Subject: [PATCH 46/89] Resprite antique laser pistol (#27037) * Resprites the captain's antique laser pistol * Adds artist credit * Improves icon outline and shading * Replaces new sprites with something more resembling the in-game version --- .../Guns/Battery/antiquelasergun.rsi/base.png | Bin 1407 -> 1035 bytes .../Guns/Battery/antiquelasergun.rsi/icon.png | Bin 1415 -> 1040 bytes .../antiquelasergun.rsi/mag-unshaded-0.png | Bin 133 -> 166 bytes .../antiquelasergun.rsi/mag-unshaded-1.png | Bin 208 -> 168 bytes .../antiquelasergun.rsi/mag-unshaded-2.png | Bin 211 -> 179 bytes .../antiquelasergun.rsi/mag-unshaded-3.png | Bin 214 -> 177 bytes .../antiquelasergun.rsi/mag-unshaded-4.png | Bin 227 -> 196 bytes .../Battery/antiquelasergun.rsi/meta.json | 2 +- 8 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/base.png index d6da03ed28dd4ee71176440f5257fe7999c647d4..003858cf9d9011a7a0c5c407ff724bc8135b9424 100644 GIT binary patch delta 1014 zcmVSMTn0nX+K`LTO42i5uW}DVvVrnvJ z{CP-!vy<&4TilCazcA$Yd-=WhzVm(W{RYl)j{iFp`z98P0e_%r8m4IqX}|Q^t4ew$ zeWrl9Pjh^@aaGuDnx-kHXuNQm005&!@9+-rtX^wVRr_&LEK!DnXi~lNc zVf+0vol7Q@c)eZ#+U@pT0sx6bf^R=~{>(|ANoTBeWZ?yF)s>mv!sfTQeok^uR9-crEl^M46Ibi3WVQ?R?Mq3hqDtakw@ zl}bZNeDv;Hy!`swsdLe2)FNXivA@4>Nq=;71c2M^?h_~!3IODC069vf5`{v6_4RcC z;_*1uY88M^r$fD72fzb#E<8#;p9dfi2%J(xlIWM>6BZU0I6gjBd_Eu0p8};;tBG2z zcIqu7k$;F%E|&)`AvqzMrYY0Y)57I-DZkvh!xN7^Os!TEQXM-9X_HF%{eCN^tJCSg zJ-3s@sQW;U)p7eze*WPmk3SOR;NU<3L?V%JEZ^E%zhtrmLlaAcLLmSlOCaSR8yi!6 zJ|7bk6958Gip3(ju2U|TMJN=a^-z%)zXA7~Z-3BeG}zhM0l+W}+-|orK0ZF0z~tm4 zQ&Urzrr8hJYSC;qr7B9Z*|bIpV0n3&?d@%<)v7olZgssKl}g3(2iq7rpgsy{WHK2?1uB(_EGq!rZdY;q8r~0yM1o{8$;`|QPhUh_ z{`eZI$7lU7o6O#9jYi{?&Fyv%FF_;{8E~{CnM?{m93CEuR4Rq)@!^>Y6AT7fU0t>O z?2oFdip%9vy4|iqzxR}Zo6rfFOomh{HE&XlU@(Yhs{g%z_R`z*P6(^2s`Pq2>s+tb zLpGirLwi7uR5Ti;)oQW1xjB-^Q_sBwfcAG=QJMyTW5P2NkWDD}vayEY*6&BkXVMF0Q*07*qoM6N<$f+gqZjsO4v delta 1389 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 delta 1397 zcmV-*1&aER2!{)hBYyw^b5ch_0Itp)=>Px)K}keGR9J=Wm0PS-)g8uv>$3OEo|!Xn zh7QIi979tSP(&)ha=?*9K_z01m!yrD7(q=MqrTRpQ6DHtvEikGSRcG3CSC%X)CUtS z7OSN;wqOv-MN&MsIk%ZJXYaY~>*~XSlOBfSQD54J^S!L>|9{%wTHpHie|;O~F^_rt zk0EB8*!lPllbD1?qrsc6zcuT7v*Er6?lrYq4T0gq4?dceuP-e;`ovCS0)sII60mHG zr-U%yRltyv2%y#S*;v|OGLAzgJTbL*zjzS(XQ~L`ch=2g_ zf#zk#=7srTDSr`45kx+%W}7Gs(3aI9R9;%}JdawfMx)uFQkkGO;Smdg5CZ>OZterF z>(Z##Ng{)#E&O&wv)N?xmfL2ydC?BD^{(472!hbZ)+t(k8@D#W;>B0cmCqB$F&IE3 zBnc#Og4BXIOpsENPFsM)7zm?~dfg-NLt1_dg(6BKlz&txDf#r1Bh#Nj17_Q{ZS-8b zg;dI>Rvjk_V+xBGk#h<({1#F`O53DzIkHX$&ucI;*hhDFk<5ZTPwyyEtyanB^PE0) z3Z*n@CymsKB#v?2Ny@{+2m`x!@1Ehf1}K$EY}oh{@(c24t?=q~Y}>-pHa$H(7-JAp z5Jn*jbAR1@-G83nzuaPCa)hCwuX+A=6@GSG4_c*Ie^W2NG_X(5F&=#90CAFZ3IOO` zpMuA(gFj5U^ViQlWqhoUx88UgfK9jF!k_gqVgGwn#s_GJE>3zS ze&91O)X#5N($Q?kjvpmx2N2J!3&8BzvxgPeUVp<~TYm_wWuV-T>$;pdeHP2MSp0(` z%2qU*4QkaI=g<9{t_2H_O7OhjcqFy<`;5);5?Xwb`Vfl zRG@F54=3xOlt5W(ZU>%x>PgO=IfIg#IF9jLmuxmm@rok8@ALklqu4sliEeW>Hg8%< zS3XBJmxBbF^%hPhg*)ky$!7V>;ZH8xZ{O5}rgy`7Jg*K0c0BqBmGKH%Yb@KM*=Qk^ zu2Y>!Yh00000NkvXXu0mjf DG3Kzt diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-0.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-0.png index 32fba189df859074b55aa223dd5b35c565d7c98c..042d52f5d74ff97ccfc902861ce0aa21dffc89b8 100644 GIT binary patch delta 138 zcmV;50CoR`0j2?vB!6v5L_t(oh3(R@34kyVh2j6i1uWwl?v$b2$u*MF5n>_Q2p%FP z7VoPbxPozlN`1bki(^PcYjT1F>*53v9)koGw?I4P$Mq7kXE!!(eEYw?=9DLs&JhhE z_oV*|W?dCH;IfL1Ps_Stg+PLW(JHrt8WOBe7-prc&k$v6Q;6fR{$W$MRYlz8NK@&2 s$$#u04FlGnkpr3B(-dgHmBGqT%*(CTHfQ%b1|aZs^<#Be=akR{0G<#tI{*Lx delta 180 zcmZ3%c!6<(N*53v9)koGw?I4P$Mrdn?(p#RHB4-5Z2V}=%&e?F<*Y->m)@p811=86St+X3wrp)I!5r3w zdUabxL|uLyXu8bvU-*oKhW2vzgBoCadYGyh7_3=%H3fQ%IRqGhz|+;wWt~$(69D%T BH5&i` delta 183 zcmdnYc$sm6Np7*a9k?WK*J4F&?N7pw~m4oc2B zcqvjxN9MSwj9bUqnIcUrN}Lb%IQ}30*ez1Yc|GtkP#?p8hBId-Sw*`<$Qt}8tUDLp zzH^0LWW$xG=eP{Q>WWPrjI|hUdQ>R&-R21p5;ynhC9mK%7MBG>EA&dPgg&ebxsLQ0M=zf00000 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-3.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-3.png index 1678a31534f0f692712fc987989ad8723ae88464..fcbbc48af1ac28a75265f6eeae6a54825f4ee72a 100644 GIT binary patch delta 149 zcmV;G0BZl%0kHv)B!75GL_t(oh3(X_34kyV1<-$Dp}0|+OdvRe*o#ZJrj;{jcNS@c zM3M;6=D+F}Kiok`03!OCq?Be6jdeOeR*lv?bxNtf<^3U_*`uB6bP0l+XkKS0O^H diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-4.png index 5300c65d31ab2ba9dc92f8e19b323792d2cf6fd3..40e557d736c68e1fcc99329d8b848db07422b4bd 100644 GIT binary patch delta 168 zcmV;Z09XIx0mK22B!7!ZL_t(oh3(X_4Z<)Gh2j4pgg|V-1lfXBk_oZ}b7T_cU;#RM zpgM|x;tHJ$E6w|=ll6Q)$+E%BR;Em7l%l5T5p;>%mTe|96wMx5X1*7hvVNtGo^2|! zY5N8P2+$j}ix8kE=xw?Bt zgLwMKM>6Xk81)4N=xkgR=b|EdJLreJ6JP7ItxFahVFYUY#IWVeqv}HSL;D%CET0)0 zuU)6VE-n1o!r7l=q(u+xI(XFbh*sPAdSvK7($G#Gq=1_QwjhIbqFu0PZMF9YIvy85}Sb4q9e07^7Z(f|Me diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json index f126a576760..86ecf2bff1a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57", + "copyright": "icon by RiceMar1244 based on icon taken from tg station at commit https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57", "size": { "x": 32, "y": 32 From 1d2335699d94f838c4321be314be3e62e1075ebe Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 19:09:44 +0000 Subject: [PATCH 47/89] 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 c42ada10570..fe8543e80a5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: azurerosegarden - changes: - - message: Drinks in the Solar's Best Hot Drinks menu now show their contents - type: Fix - id: 5965 - time: '2024-02-19T15:40:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25301 - author: Lank changes: - message: Nymphs can now open doors and chirp. @@ -3858,3 +3851,10 @@ id: 6464 time: '2024-04-27T16:32:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27401 +- author: RiceMar1244 + changes: + - message: Resprited the captain's antique laser pistol. + type: Tweak + id: 6465 + time: '2024-04-27T19:08:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27037 From 2cb421bc430cfeff2e1669880f15c834533fd282 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 27 Apr 2024 21:10:47 +0200 Subject: [PATCH 48/89] Fix suit baldness (#27404) Initial commit --- .../Clothing/EntitySystems/ClothingSystem.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs index d85506df4b1..e8bfb789613 100644 --- a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs @@ -96,20 +96,23 @@ private void ToggleVisualLayers(EntityUid equipee, HashSet { if (TryComp(item, out HideLayerClothingComponent? comp)) { - //Checks for mask toggling. TODO: Make a generic system for this - if (comp.HideOnToggle && TryComp(item, out MaskComponent? mask) && TryComp(item, out ClothingComponent? clothing)) + if (comp.Slots.Contains(layer)) { - if (clothing.EquippedPrefix != mask.EquippedPrefix) + //Checks for mask toggling. TODO: Make a generic system for this + if (comp.HideOnToggle && TryComp(item, out MaskComponent? mask) && TryComp(item, out ClothingComponent? clothing)) + { + if (clothing.EquippedPrefix != mask.EquippedPrefix) + { + shouldLayerShow = false; + break; + } + } + else { shouldLayerShow = false; break; } } - else - { - shouldLayerShow = false; - break; - } } } _humanoidSystem.SetLayerVisibility(equipee, layer, shouldLayerShow); From 9ccf95e333c5099961166a8aa14732b7279b97e7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 19:11:52 +0000 Subject: [PATCH 49/89] 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 fe8543e80a5..4c24cd63d4a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Lank - changes: - - message: Nymphs can now open doors and chirp. - type: Tweak - id: 5966 - time: '2024-02-19T17:11:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25363 - author: PotentiallyTom changes: - message: Gave guidebooks to the 4 learner roles @@ -3858,3 +3851,11 @@ id: 6465 time: '2024-04-27T19:08:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27037 +- author: SlamBamActionman + changes: + - message: Hardsuits and other helmets/hoods should no longer make you bald after + toggling. + type: Fix + id: 6466 + time: '2024-04-27T19:10:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27404 From 02d2611d94780ef980f4bba35f8e7d2629c23431 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Apr 2024 18:21:52 -0700 Subject: [PATCH 50/89] Update Credits (#27413) 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 cffbe61d2b9..e212aa149e5 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, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, 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, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, 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, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mephisto72, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, NakataRin, 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, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, 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, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, 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, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, 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, GalacticChimp, gbasood, Geekyhobo, Genkail, 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, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, K-Dynamic, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, 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, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, 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, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From be09520aa578478c153c0de33a39d80830660676 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 19:25:19 -0700 Subject: [PATCH 51/89] Reduce selection of traitor max from 12 to 8 (#27415) TOO MANY DAMN SYNDIES Co-authored-by: Plykiya --- Resources/Prototypes/GameRules/roundstart.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 8218e1bdd16..d87e7ccbe76 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -147,7 +147,7 @@ - type: AntagSelection definitions: - prefRoles: [ Traitor ] - max: 12 + max: 8 playerRatio: 10 lateJoinAdditional: true mindComponents: From 599a66230b1a4e90210558fbb1da9f733d20d5f7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 02:26:25 +0000 Subject: [PATCH 52/89] 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 4c24cd63d4a..71e4704e9e3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PotentiallyTom - changes: - - message: Gave guidebooks to the 4 learner roles - type: Tweak - id: 5967 - time: '2024-02-19T18:54:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25388 - author: jamessimo changes: - message: vending machine UI improved @@ -3859,3 +3852,10 @@ id: 6466 time: '2024-04-27T19:10:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27404 +- author: Plykiya + changes: + - message: Max amount of traitors dropped from 12 to 8. + type: Tweak + id: 6467 + time: '2024-04-28T02:25:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27415 From f079e77554c326b89fb5f24d64b5947dbfc93126 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 28 Apr 2024 05:35:40 +0300 Subject: [PATCH 53/89] Displacement maps now works on any layers (#27405) * try * pipupi * Update ClientClothingSystem.cs * Update vox.yml * Update ClientClothingSystem.cs --- Content.Client/Clothing/ClientClothingSystem.cs | 5 ++++- Content.Shared/Inventory/InventoryComponent.cs | 4 +++- Resources/Prototypes/Entities/Mobs/Player/vox.yml | 4 ++-- Resources/Prototypes/Entities/Mobs/Species/vox.yml | 1 - 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 6d13bf4edab..dd69521f483 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -307,13 +307,16 @@ private void RenderEquipment(EntityUid equipee, EntityUid equipment, string slot // Sprite layer redactor when // Sprite "redactor" just a week away. if (slot == Jumpsuit) - layerData.Shader ??= inventory.JumpsuitShader; + layerData.Shader ??= "StencilDraw"; sprite.LayerSetData(index, layerData); layer.Offset += slotDef.Offset; if (displacementData != null) { + if (displacementData.ShaderOverride != null) + sprite.LayerSetShader(index, displacementData.ShaderOverride); + var displacementKey = $"{key}-displacement"; if (!revealedLayers.Add(displacementKey)) { diff --git a/Content.Shared/Inventory/InventoryComponent.cs b/Content.Shared/Inventory/InventoryComponent.cs index dde48a62aaa..02b3a5b2583 100644 --- a/Content.Shared/Inventory/InventoryComponent.cs +++ b/Content.Shared/Inventory/InventoryComponent.cs @@ -13,7 +13,6 @@ public sealed partial class InventoryComponent : Component [DataField("speciesId")] public string? SpeciesId { get; set; } - [DataField] public string JumpsuitShader = "StencilDraw"; [DataField] public Dictionary Displacements = []; public SlotDefinition[] Slots = Array.Empty(); @@ -24,5 +23,8 @@ public sealed partial class SlotDisplacementData { [DataField(required: true)] public PrototypeLayerData Layer = default!; + + [DataField] + public string? ShaderOverride = "DisplacedStencilDraw"; } } diff --git a/Resources/Prototypes/Entities/Mobs/Player/vox.yml b/Resources/Prototypes/Entities/Mobs/Player/vox.yml index de1e3da2be7..e7ad39d7316 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/vox.yml @@ -1,5 +1,5 @@ - type: entity save: false - name: Vox + name: Urist McVox parent: BaseMobVox - id: MobVox + id: MobVox \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index c79947f15c4..ec8035563b7 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -16,7 +16,6 @@ #- type: VoxAccent # Not yet coded - type: Inventory speciesId: vox - jumpsuitShader: DisplacedStencilDraw displacements: jumpsuit: layer: From a478446e5a11fa73935aaf0d4d6863e8b4bdd77a Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 20:02:56 -0700 Subject: [PATCH 54/89] Printable Special and Empty Mags for Autolathes (#27396) * Change emag recipes to print mags instead of single ammo * Get rid of useless single ammo printing recipes * Add in submachine gun mags * missing magazine shotgun beanbag in nonlethal research * Sort lathes that use ammo crafting recipes alphabetically --------- Co-authored-by: Plykiya --- .../Entities/Structures/Machines/lathe.yml | 198 ++++++++++-------- .../Prototypes/Recipes/Lathes/security.yml | 158 -------------- Resources/Prototypes/Research/arsenal.yml | 1 + 3 files changed, 109 insertions(+), 248 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 318f880ab98..b237fc88ed2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -163,44 +163,55 @@ - ClothingHeadHatWelding - type: EmagLatheRecipes emagStaticRecipes: - - CartridgePistol - - CartridgeMagnum - - ShellShotgun - - ShellShotgunFlare - - ShellTranquilizer - - CartridgeLightRifle - - CartridgeRifle - - MagazineBoxPistol - - MagazineBoxMagnum - - MagazineBoxRifle - - MagazineBoxLightRifle - - GrenadeBlast + - BoxLethalshot + - BoxShotgunFlare + - GrenadeBlast + - MagazineBoxLightRifle + - MagazineBoxMagnum + - MagazineBoxPistol + - MagazineBoxRifle + - MagazineLightRifle + - MagazineLightRifleEmpty + - MagazinePistol + - MagazinePistolEmpty + - MagazinePistolSubMachineGun + - MagazinePistolSubMachineGunEmpty + - MagazineRifle + - MagazineRifleEmpty + - MagazineShotgun + - MagazineShotgunEmpty + - ShellTranquilizer + - SpeedLoaderMagnum + - SpeedLoaderMagnumEmpty emagDynamicRecipes: - - ShellShotgunBeanbag - - ShellShotgunIncendiary - - CartridgePistolIncendiary - - CartridgeMagnumIncendiary - - CartridgeLightRifleIncendiary - - CartridgeRifleIncendiary - - MagazineBoxPistolIncendiary - - MagazineBoxMagnumIncendiary + - BoxBeanbag + - BoxShotgunIncendiary + - BoxShotgunUranium + - GrenadeEMP + - GrenadeFlash - MagazineBoxLightRifleIncendiary - - MagazineBoxRifleIncendiary - - ShellShotgunUranium - - CartridgePistolUranium - - CartridgeMagnumUranium - - CartridgeLightRifleUranium - - CartridgeRifleUranium - - MagazineBoxPistolUranium - - MagazineBoxMagnumUranium - MagazineBoxLightRifleUranium + - MagazineBoxMagnumIncendiary + - MagazineBoxMagnumUranium + - MagazineBoxPistolIncendiary + - MagazineBoxPistolUranium + - MagazineBoxRifleIncendiary - MagazineBoxRifleUranium - - PowerCageSmall - - PowerCageMedium - - PowerCageHigh - MagazineGrenadeEmpty - - GrenadeEMP - - GrenadeFlash + - MagazineLightRifleIncendiary + - MagazineLightRifleUranium + - MagazinePistolIncendiary + - MagazinePistolUranium + - MagazineRifleIncendiary + - MagazineRifleUranium + - MagazineShotgunBeanbag + - MagazineShotgunIncendiary + - MagazineShotgunIncendiary + - PowerCageHigh + - PowerCageMedium + - PowerCageSmall + - SpeedLoaderMagnumIncendiary + - SpeedLoaderMagnumUranium - type: entity id: AutolatheHyperConvection @@ -639,16 +650,24 @@ idleState: icon runningState: icon staticRecipes: + - BoxLethalshot + - BoxShotgunFlare + - BoxShotgunPractice + - BoxShotgunSlug - ClothingEyesHudSecurity - Flash - - Handcuffs - - Zipties - - Stunbaton - ForensicPad - - RiotShield - - BoxShotgunSlug - - BoxLethalshot - - BoxShotgunFlare + - Handcuffs + - MagazineBoxLightRifle + - MagazineBoxLightRiflePractice + - MagazineBoxMagnum + - MagazineBoxMagnumPractice + - MagazineBoxPistol + - MagazineBoxPistolPractice + - MagazineBoxRifle + - MagazineBoxRiflePractice + - MagazineLightRifle + - MagazineLightRifleEmpty - MagazinePistol - MagazinePistolEmpty - MagazinePistolSubMachineGun @@ -657,58 +676,57 @@ - MagazinePistolSubMachineGunTopMountedEmpty - MagazineRifle - MagazineRifleEmpty - - MagazineLightRifle - - MagazineLightRifleEmpty - - MagazineShotgunEmpty - MagazineShotgun + - MagazineShotgunEmpty - MagazineShotgunSlug - - MagazineBoxPistol - - MagazineBoxMagnum - - MagazineBoxRifle - - MagazineBoxLightRifle + - RiotShield - SpeedLoaderMagnum - SpeedLoaderMagnumEmpty + - Stunbaton + - TargetClown - TargetHuman - TargetSyndicate - - TargetClown - - MagazineBoxLightRiflePractice - - MagazineBoxMagnumPractice - - MagazineBoxPistolPractice - - MagazineBoxRiflePractice - - WeaponLaserCarbinePractice - WeaponDisablerPractice - - BoxShotgunPractice + - WeaponLaserCarbinePractice + - Zipties dynamicRecipes: - - MagazineLightRifleIncendiary - - SpeedLoaderMagnumIncendiary - - MagazinePistolIncendiary - - MagazineRifleIncendiary - - MagazineShotgunIncendiary - - MagazineLightRifleUranium - - SpeedLoaderMagnumUranium - - MagazinePistolUranium - - MagazineRifleUranium - - MagazineShotgunBeanbag - - ShellTranquilizer + - BoxBeanbag + - BoxShotgunIncendiary + - BoxShotgunUranium - ExplosivePayload - FlashPayload + - GrenadeEMP + - GrenadeFlash - HoloprojectorSecurity - MagazineBoxLightRifleIncendiary - - MagazineBoxMagnumIncendiary - - MagazineBoxPistolIncendiary - - MagazineBoxRifleIncendiary - - BoxShotgunIncendiary - MagazineBoxLightRifleUranium + - MagazineBoxMagnumIncendiary - MagazineBoxMagnumUranium + - MagazineBoxPistolIncendiary - MagazineBoxPistolUranium + - MagazineBoxRifleIncendiary - MagazineBoxRifleUranium - - BoxShotgunUranium - - BoxBeanbag - MagazineGrenadeEmpty - - GrenadeEMP - - GrenadeFlash + - MagazineLightRifleIncendiary + - MagazineLightRifleUranium + - MagazinePistolIncendiary + - MagazinePistolUranium + - MagazineRifleIncendiary + - MagazineRifleUranium + - MagazineShotgunBeanbag + - MagazineShotgunIncendiary + - PowerCageHigh + - PowerCageMedium + - PowerCageSmall + - ShellTranquilizer + - ShuttleGunDusterCircuitboard + - ShuttleGunFriendshipCircuitboard + - ShuttleGunPerforatorCircuitboard + - ShuttleGunSvalinnMachineGunCircuitboard - Signaller - SignalTrigger + - SpeedLoaderMagnumIncendiary + - SpeedLoaderMagnumUranium - TelescopicShield - TimerTrigger - Truncheon @@ -719,13 +737,6 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon - - PowerCageSmall - - PowerCageMedium - - PowerCageHigh - - ShuttleGunSvalinnMachineGunCircuitboard - - ShuttleGunPerforatorCircuitboard - - ShuttleGunFriendshipCircuitboard - - ShuttleGunDusterCircuitboard - type: MaterialStorage whitelist: tags: @@ -758,18 +769,25 @@ idleState: icon runningState: icon staticRecipes: - - CartridgePistol - - CartridgeMagnum - - ShellShotgun - - ShellShotgunSlug - - ShellShotgunFlare - - ShellTranquilizer - - CartridgeLightRifle - - CartridgeRifle - - MagazineBoxPistol + - BoxLethalshot + - BoxShotgunFlare + - BoxShotgunSlug + - MagazineBoxLightRifle - MagazineBoxMagnum + - MagazineBoxPistol - MagazineBoxRifle - - MagazineBoxLightRifle + - MagazineLightRifle + - MagazineLightRifleEmpty + - MagazinePistol + - MagazinePistolEmpty + - MagazineRifle + - MagazineRifleEmpty + - MagazineShotgun + - MagazineShotgunEmpty + - MagazineShotgunSlug + - ShellTranquilizer + - SpeedLoaderMagnum + - SpeedLoaderMagnumEmpty - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index f5d538618b0..bad38fc99f4 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -138,71 +138,6 @@ Plastic: 200 Steel: 100 -- type: latheRecipe - id: ShellShotgunBeanbag - result: ShellShotgunBeanbag - category: Ammo - completetime: 2 - materials: - Plastic: 15 - Steel: 10 - -- type: latheRecipe - id: CartridgeRifle - result: CartridgeRifle - category: Ammo - completetime: 2 - materials: - Steel: 15 - -- type: latheRecipe - id: CartridgePistol - result: CartridgePistol - category: Ammo - completetime: 2 - materials: - Steel: 10 - -- type: latheRecipe - id: ShellShotgun - result: ShellShotgun - category: Ammo - completetime: 2 - materials: - Steel: 20 - -- type: latheRecipe - id: ShellShotgunSlug - result: ShellShotgunSlug - completetime: 2 - materials: - Steel: 25 - -- type: latheRecipe - id: CartridgeMagnum - result: CartridgeMagnum - category: Ammo - completetime: 2 - materials: - Steel: 20 - -- type: latheRecipe - id: CartridgeLightRifle - result: CartridgeLightRifle - category: Ammo - completetime: 2 - materials: - Steel: 30 - -- type: latheRecipe - id: ShellShotgunFlare - result: ShellShotgunFlare - category: Ammo - completetime: 2 - materials: - Plastic: 20 - Steel: 5 - - type: latheRecipe id: ShellTranquilizer result: ShellTranquilizer @@ -546,46 +481,6 @@ Steel: 100 Plastic: 190 -- type: latheRecipe - id: ShellShotgunIncendiary - result: ShellShotgunIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 20 - -- type: latheRecipe - id: CartridgePistolIncendiary - result: CartridgePistolIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 10 - -- type: latheRecipe - id: CartridgeMagnumIncendiary - result: CartridgeMagnumIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 20 - -- type: latheRecipe - id: CartridgeLightRifleIncendiary - result: CartridgeLightRifleIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 15 - -- type: latheRecipe - id: CartridgeRifleIncendiary - result: CartridgeRifleIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 15 - - type: latheRecipe id: MagazineBoxPistolIncendiary result: MagazineBoxPistolIncendiary @@ -636,14 +531,6 @@ Steel: 80 Plastic: 320 -- type: latheRecipe - id: ShellShotgunPractice - result: ShellShotgunPractice - category: Ammo - completetime: 2 - materials: - Plastic: 20 - - type: latheRecipe id: MagazineBoxPistolPractice result: MagazineBoxPistolPractice @@ -704,51 +591,6 @@ materials: Steel: 80 -- type: latheRecipe - id: ShellShotgunUranium - result: ShellShotgunUranium - category: Ammo - completetime: 2 - materials: - Plastic: 20 - Uranium: 15 - -- type: latheRecipe - id: CartridgePistolUranium - result: CartridgePistolUranium - category: Ammo - completetime: 2 - materials: - Plastic: 5 - Uranium: 10 - -- type: latheRecipe - id: CartridgeMagnumUranium - result: CartridgeMagnumUranium - category: Ammo - completetime: 2 - materials: - Plastic: 20 - Uranium: 15 - -- type: latheRecipe - id: CartridgeLightRifleUranium - result: CartridgeLightRifleUranium - category: Ammo - completetime: 2 - materials: - Plastic: 10 - Uranium: 10 - -- type: latheRecipe - id: CartridgeRifleUranium - result: CartridgeRifleUranium - category: Ammo - completetime: 2 - materials: - Plastic: 10 - Uranium: 10 - - type: latheRecipe id: MagazineBoxPistolUranium result: MagazineBoxPistolUranium diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 264a7df1094..2daa3fdcc0f 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -57,6 +57,7 @@ tier: 1 cost: 5000 recipeUnlocks: + - MagazineShotgunBeanbag - ShellTranquilizer - BoxBeanbag - WeaponDisabler From 49d8fe33a3503d89b78e56131f817816804d1c6c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 03:04:02 +0000 Subject: [PATCH 55/89] 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 71e4704e9e3..5ded0c6d515 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: jamessimo - changes: - - message: vending machine UI improved - type: Tweak - id: 5968 - time: '2024-02-19T22:18:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25377 - author: marbow changes: - message: Moths can now eat plushies and with a distinctive sound! @@ -3859,3 +3852,13 @@ id: 6467 time: '2024-04-28T02:25:19.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27415 +- author: Plykiya + changes: + - message: The emagged autolathe now has recipes for ammunition boxes and pre-filled + magazines of every type of ammo. + type: Add + - message: You can now print empty magazines at the emagged autolathe. + type: Add + id: 6468 + time: '2024-04-28T03:02:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27396 From a7ad59f6babb3df03859a4550223b93ef6e65a34 Mon Sep 17 00:00:00 2001 From: icekot8 <93311212+icekot8@users.noreply.github.com> Date: Sun, 28 Apr 2024 06:19:33 +0300 Subject: [PATCH 56/89] Portable Recharger: Arsenal T3 (#26655) * sys * item * ahm. * Update Content.Server/Power/Components/ChargerComponent.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth --- .../Power/Components/ChargerComponent.cs | 12 +++ .../Power/EntitySystems/ChargerSystem.cs | 25 +++-- .../Objects/Power/portable_recharger.yml | 35 +++++++ .../Entities/Structures/Machines/lathe.yml | 8 ++ .../Prototypes/Recipes/Lathes/security.yml | 11 +++ Resources/Prototypes/Research/arsenal.yml | 1 + .../charging-equipped-BACKPACK.png | Bin 0 -> 1886 bytes .../portable_recharger.rsi/charging-unlit.png | Bin 0 -> 539 bytes .../Power/portable_recharger.rsi/charging.png | Bin 0 -> 964 bytes .../portable_recharger.rsi/inhand-left.png | Bin 0 -> 714 bytes .../portable_recharger.rsi/inhand-right.png | Bin 0 -> 735 bytes .../Power/portable_recharger.rsi/meta.json | 92 ++++++++++++++++++ 12 files changed, 178 insertions(+), 6 deletions(-) create mode 100644 Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/charging-equipped-BACKPACK.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/charging-unlit.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/charging.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json diff --git a/Content.Server/Power/Components/ChargerComponent.cs b/Content.Server/Power/Components/ChargerComponent.cs index af4498f01ba..e45ded071cf 100644 --- a/Content.Server/Power/Components/ChargerComponent.cs +++ b/Content.Server/Power/Components/ChargerComponent.cs @@ -1,5 +1,10 @@ using Content.Shared.Power; using Content.Shared.Whitelist; +using Content.Shared.Power; +using Content.Shared.Whitelist; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization.Manager.Attributes; +using Robust.Shared.ViewVariables; namespace Content.Server.Power.Components { @@ -26,5 +31,12 @@ public sealed partial class ChargerComponent : Component /// [DataField("whitelist")] public EntityWhitelist? Whitelist; + + /// + /// Indicates whether the charger is portable and thus subject to EMP effects + /// and bypasses checks for transform, anchored, and ApcPowerReceiverComponent. + /// + [DataField] + public bool Portable = false; } } diff --git a/Content.Server/Power/EntitySystems/ChargerSystem.cs b/Content.Server/Power/EntitySystems/ChargerSystem.cs index db16dfa008e..1ff13a24f2c 100644 --- a/Content.Server/Power/EntitySystems/ChargerSystem.cs +++ b/Content.Server/Power/EntitySystems/ChargerSystem.cs @@ -1,8 +1,10 @@ using Content.Server.Power.Components; +using Content.Server.Emp; using Content.Server.PowerCell; using Content.Shared.Examine; using Content.Shared.Power; using Content.Shared.PowerCell.Components; +using Content.Shared.Emp; using JetBrains.Annotations; using Robust.Shared.Containers; using System.Diagnostics.CodeAnalysis; @@ -28,6 +30,8 @@ public override void Initialize() SubscribeLocalEvent(OnInsertAttempt); SubscribeLocalEvent(OnEntityStorageInsertAttempt); SubscribeLocalEvent(OnChargerExamine); + + SubscribeLocalEvent(OnEmpPulse); } private void OnStartup(EntityUid uid, ChargerComponent component, ComponentStartup args) @@ -158,18 +162,27 @@ private void UpdateStatus(EntityUid uid, ChargerComponent component) } } + private void OnEmpPulse(EntityUid uid, ChargerComponent component, ref EmpPulseEvent args) + { + args.Affected = true; + args.Disabled = true; + } + private CellChargerStatus GetStatus(EntityUid uid, ChargerComponent component) { - if (!TryComp(uid, out TransformComponent? transformComponent)) - return CellChargerStatus.Off; + if (!component.Portable) + { + if (!TryComp(uid, out TransformComponent? transformComponent) || !transformComponent.Anchored) + return CellChargerStatus.Off; + } - if (!transformComponent.Anchored) + if (!TryComp(uid, out ApcPowerReceiverComponent? apcPowerReceiverComponent)) return CellChargerStatus.Off; - if (!TryComp(uid, out ApcPowerReceiverComponent? apcPowerReceiverComponent)) + if (!component.Portable && !apcPowerReceiverComponent.Powered) return CellChargerStatus.Off; - if (!apcPowerReceiverComponent.Powered) + if (HasComp(uid)) return CellChargerStatus.Off; if (!_container.TryGetContainer(uid, component.SlotId, out var container)) @@ -186,7 +199,7 @@ private CellChargerStatus GetStatus(EntityUid uid, ChargerComponent component) return CellChargerStatus.Charging; } - + private void TransferPower(EntityUid uid, EntityUid targetEntity, ChargerComponent component, float frameTime) { if (!TryComp(uid, out ApcPowerReceiverComponent? receiverComponent)) diff --git a/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml new file mode 100644 index 00000000000..35dfa0881f4 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml @@ -0,0 +1,35 @@ +- type: entity + parent: Clothing + id: PortableRecharger + name: portable recharger + description: High-tech recharger adapted for portability + components: + - type: Item + size: Huge + - type: Sprite + sprite: Objects/Power/portable_recharger.rsi + state: charging + - type: Clothing + equippedPrefix: charging + quickEquip: false + slots: + - back + - type: Charger + slotId: charger_slot + portable: true + - type: PowerChargerVisuals + - type: ApcPowerReceiver + needsPower: false + powerLoad: 0 + - type: StaticPrice + price: 500 + - type: Tag + tags: [] # ignore "WhitelistChameleon" tag + - type: ItemSlots + slots: + charger_slot: + ejectOnInteract: true + whitelist: + components: + - HitscanBatteryAmmoProvider + - ProjectileBatteryAmmoProvider \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index b237fc88ed2..2a080a85db0 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -737,6 +737,14 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon + - PowerCageSmall + - PowerCageMedium + - PowerCageHigh + - ShuttleGunSvalinnMachineGunCircuitboard + - ShuttleGunPerforatorCircuitboard + - ShuttleGunFriendshipCircuitboard + - ShuttleGunDusterCircuitboard + - PortableRecharger - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index bad38fc99f4..2ab8e18372e 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -690,3 +690,14 @@ Steel: 150 Plastic: 100 Glass: 20 + +- type: latheRecipe + id: PortableRecharger + result: PortableRecharger + completetime: 15 + materials: + Steel: 2000 + Uranium: 2000 + Plastic: 1000 + Plasma: 500 + Glass: 500 \ No newline at end of file diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 2daa3fdcc0f..6c0e94e9e5e 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -175,6 +175,7 @@ cost: 15000 recipeUnlocks: - WeaponAdvancedLaser + - PortableRecharger - type: technology id: ExperimentalBatteryAmmo diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/charging-equipped-BACKPACK.png b/Resources/Textures/Objects/Power/portable_recharger.rsi/charging-equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..500ad05704c3ded83aede5fecae9f7f1759de52c GIT binary patch literal 1886 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-left.png b/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e3bc6d829938325b918ac8fab750417871000c32 GIT binary patch literal 714 zcmV;*0yX`KP)R5B&!`wH>mhQyW4{Gdj)KQWNOX z!7&{og44C(WTPSSmi0O~XPlBBjr^2S`aYWwJe}UXI|=Rqj4{R-V~jDz7-NjFw2Gy& zab3>e3@If(ynjbB-bEx8;3)-12>8B_^R0bETH}0cAHMIy z5dwE5=Ppu8^ezL`8%-Sb`^cgao>ByHgupaOa1w@4&sH%3pjK9K@-f6TN#F>PD(+}w z7fv^iy`Ku6Qi!ys816MB6<}Yo-e^LXhX4Rw9-`i8&XcpO;qf4sW*OawqyiRaMh%Ly z3K$fD+z8VoNj-Coi*0;eU#A%2tw{HP!-F0s-8?*{FzM!Tc+kUIp^$11Xtg^Am{r$l z7|yS$ktATPPym2=soNQ!CJEv=p5K3{*E>4^ka`pS6J%@3&d`suv-!HWFP`@EWp{l? z2z>eciG2N&`~9b9*`FZlIE*pI7-Nhv#u#IaF~Gz!y|-`Re0z@3#x6zJ z8(r%~SXl*d)r%0O>qQ_*z<3E`eFa+W zjyb(5LwijXdl7Xn0_kVaKHQ$`XMwsGfppzggPO4e%W_Z1q8EY0W1iz@)r-LXH@^UK wfjx{vM}FA=000hUSV?A0O#mtY000O800000007cclK=n!07*qoM6N<$f|=1fBLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-right.png b/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..8c65192231786eb7ba0ce60946dbaa616961c963 GIT binary patch literal 735 zcmV<50wDc~P)@fJhzCTqwd2sSokaqZREe?vPL+zxGrZ0Xd7kdTZ{Gd3g? zx^!?n#RR8o!^uWN$}C$d?Kwp;%a&?)x(m(oLD*omR#%RcSg%y@`psLlUa7#564hEgvqflk zx=LdV02Z2OE@(j44P^)sc%maECKD&{{4|(lOF2^F#miTCcJdglN5|OT+YOy#UNNWfHkk$~5W@}!YtkM|6lTr!I z>&?hx0}J3tIloCUFz+? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json b/Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json new file mode 100644 index 00000000000..794f491bdb9 --- /dev/null +++ b/Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json @@ -0,0 +1,92 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by Lomovar", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "charging", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "charging-equipped-BACKPACK", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "charging-unlit", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} + From 1c78f60bc3ae209ffcac8b18f0e5e1b6b7f43489 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 03:20:39 +0000 Subject: [PATCH 57/89] 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 5ded0c6d515..ca090e7539b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: marbow - changes: - - message: Moths can now eat plushies and with a distinctive sound! - type: Add - id: 5969 - time: '2024-02-19T22:35:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25382 - author: ArchPigeon changes: - message: Liquid Tritium can now be used as a chem in flamethrowers @@ -3862,3 +3855,10 @@ id: 6468 time: '2024-04-28T03:02:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27396 +- author: icekot8 + changes: + - message: T3 Portable Microfusion Weaponry research now have a portable charger + type: Add + id: 6469 + time: '2024-04-28T03:19:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26655 From a4504e2fefbead6b21a19f93a43148d6a9e6ebab Mon Sep 17 00:00:00 2001 From: osjarw <62134478+osjarw@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:19:30 +0300 Subject: [PATCH 58/89] Fix handlabeler/utility belt misprediction (#26660) * Fix handlabeler/utility belt misprediction * Partly moved HandLabelerSystem to shared And cleaned up HandLabelerComponent * WIP format the files so later commits look clearer Doesn't change individual code lines, but may move functions to another file * WIP some more code movement * Hand Labeler is now mostly predicted Only the UI isn't * WIP: Formatting and moved stuff * Using componentstates for prediction correction * review * Update label on label change * Don't overwrite label while editing --------- Co-authored-by: metalgearsloth Co-authored-by: ElectroJr --- .../Labels/EntitySystems/HandLabelerSystem.cs | 18 +++ .../UI/HandLabelerBoundUserInterface.cs | 23 ++-- .../Labels/UI/HandLabelerWindow.xaml.cs | 29 +++- .../Label/Components/HandLabelerComponent.cs | 19 --- .../Labels/Label/HandLabelerSystem.cs | 116 +--------------- Content.Server/Labels/Label/LabelSystem.cs | 2 +- .../Labels/Components/HandLabelerComponent.cs | 30 ++++ .../EntitySystems/SharedHandLabelerSystem.cs | 129 ++++++++++++++++++ .../Labels/EntitySystems/SharedLabelSystem.cs | 2 + Content.Shared/Labels/LabelEvents.cs | 62 +++------ 10 files changed, 245 insertions(+), 185 deletions(-) create mode 100644 Content.Client/Labels/EntitySystems/HandLabelerSystem.cs delete mode 100644 Content.Server/Labels/Label/Components/HandLabelerComponent.cs create mode 100644 Content.Shared/Labels/Components/HandLabelerComponent.cs create mode 100644 Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs diff --git a/Content.Client/Labels/EntitySystems/HandLabelerSystem.cs b/Content.Client/Labels/EntitySystems/HandLabelerSystem.cs new file mode 100644 index 00000000000..e956014b2e1 --- /dev/null +++ b/Content.Client/Labels/EntitySystems/HandLabelerSystem.cs @@ -0,0 +1,18 @@ +using Content.Client.Labels.UI; +using Content.Shared.Labels; +using Content.Shared.Labels.Components; +using Content.Shared.Labels.EntitySystems; + +namespace Content.Client.Labels.EntitySystems; + +public sealed class HandLabelerSystem : SharedHandLabelerSystem +{ + protected override void UpdateUI(Entity ent) + { + if (UserInterfaceSystem.TryGetOpenUi(ent.Owner, HandLabelerUiKey.Key, out var bui) + && bui is HandLabelerBoundUserInterface cBui) + { + cBui.Reload(); + } + } +} diff --git a/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs b/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs index d393c43f936..555f1ff09e6 100644 --- a/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs +++ b/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs @@ -1,4 +1,5 @@ using Content.Shared.Labels; +using Content.Shared.Labels.Components; using Robust.Client.GameObjects; namespace Content.Client.Labels.UI @@ -8,11 +9,14 @@ namespace Content.Client.Labels.UI ///
public sealed class HandLabelerBoundUserInterface : BoundUserInterface { + [Dependency] private readonly IEntityManager _entManager = default!; + [ViewVariables] private HandLabelerWindow? _window; public HandLabelerBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) { + IoCManager.InjectDependencies(this); } protected override void Open() @@ -27,24 +31,25 @@ protected override void Open() _window.OnClose += Close; _window.OnLabelChanged += OnLabelChanged; + Reload(); } private void OnLabelChanged(string newLabel) { - SendMessage(new HandLabelerLabelChangedMessage(newLabel)); + // Focus moment + if (_entManager.TryGetComponent(Owner, out HandLabelerComponent? labeler) && + labeler.AssignedLabel.Equals(newLabel)) + return; + + SendPredictedMessage(new HandLabelerLabelChangedMessage(newLabel)); } - /// - /// Update the UI state based on server-sent info - /// - /// - protected override void UpdateState(BoundUserInterfaceState state) + public void Reload() { - base.UpdateState(state); - if (_window == null || state is not HandLabelerBoundUserInterfaceState cast) + if (_window == null || !_entManager.TryGetComponent(Owner, out HandLabelerComponent? component)) return; - _window.SetCurrentLabel(cast.CurrentLabel); + _window.SetCurrentLabel(component.AssignedLabel); } protected override void Dispose(bool disposing) diff --git a/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs b/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs index 7706c31f85a..6482cdc1cc2 100644 --- a/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs +++ b/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs @@ -9,17 +9,40 @@ public sealed partial class HandLabelerWindow : DefaultWindow { public event Action? OnLabelChanged; + /// + /// Is the user currently entering text into the control? + /// + private bool _focused; + // TODO LineEdit Make this a bool on the LineEdit control + + private string _label = string.Empty; + public HandLabelerWindow() { RobustXamlLoader.Load(this); - LabelLineEdit.OnTextEntered += e => OnLabelChanged?.Invoke(e.Text); - LabelLineEdit.OnFocusExit += e => OnLabelChanged?.Invoke(e.Text); + LabelLineEdit.OnTextEntered += e => + { + _label = e.Text; + OnLabelChanged?.Invoke(_label); + }; + + LabelLineEdit.OnFocusEnter += _ => _focused = true; + LabelLineEdit.OnFocusExit += _ => + { + _focused = false; + LabelLineEdit.Text = _label; + }; } public void SetCurrentLabel(string label) { - LabelLineEdit.Text = label; + if (label == _label) + return; + + _label = label; + if (!_focused) + LabelLineEdit.Text = label; } } } diff --git a/Content.Server/Labels/Label/Components/HandLabelerComponent.cs b/Content.Server/Labels/Label/Components/HandLabelerComponent.cs deleted file mode 100644 index 6c96cada9e7..00000000000 --- a/Content.Server/Labels/Label/Components/HandLabelerComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Whitelist; - -namespace Content.Server.Labels.Components -{ - [RegisterComponent] - public sealed partial class HandLabelerComponent : Component - { - [ViewVariables(VVAccess.ReadWrite)] - [DataField("assignedLabel")] - public string AssignedLabel { get; set; } = string.Empty; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("maxLabelChars")] - public int MaxLabelChars { get; set; } = 50; - - [DataField("whitelist")] - public EntityWhitelist Whitelist = new(); - } -} diff --git a/Content.Server/Labels/Label/HandLabelerSystem.cs b/Content.Server/Labels/Label/HandLabelerSystem.cs index 84c41b0db57..d52bf260460 100644 --- a/Content.Server/Labels/Label/HandLabelerSystem.cs +++ b/Content.Server/Labels/Label/HandLabelerSystem.cs @@ -1,116 +1,8 @@ -using Content.Server.Labels.Components; -using Content.Server.UserInterface; -using Content.Server.Popups; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; -using Content.Shared.Interaction; -using Content.Shared.Labels; -using Content.Shared.Verbs; -using JetBrains.Annotations; -using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Content.Shared.Labels.EntitySystems; -namespace Content.Server.Labels -{ - /// - /// A hand labeler system that lets an object apply labels to objects with the . - /// - [UsedImplicitly] - public sealed class HandLabelerSystem : EntitySystem - { - [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly LabelSystem _labelSystem = default!; - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(AfterInteractOn); - SubscribeLocalEvent>(OnUtilityVerb); - // Bound UI subscriptions - SubscribeLocalEvent(OnHandLabelerLabelChanged); - } - - private void OnUtilityVerb(EntityUid uid, HandLabelerComponent handLabeler, GetVerbsEvent args) - { - if (args.Target is not { Valid: true } target || !handLabeler.Whitelist.IsValid(target) || !args.CanAccess) - return; - - string labelerText = handLabeler.AssignedLabel == string.Empty ? Loc.GetString("hand-labeler-remove-label-text") : Loc.GetString("hand-labeler-add-label-text"); - - var verb = new UtilityVerb() - { - Act = () => - { - AddLabelTo(uid, handLabeler, target, out var result); - if (result != null) - _popupSystem.PopupEntity(result, args.User, args.User); - }, - Text = labelerText - }; - - args.Verbs.Add(verb); - } - - private void AfterInteractOn(EntityUid uid, HandLabelerComponent handLabeler, AfterInteractEvent args) - { - if (args.Target is not {Valid: true} target || !handLabeler.Whitelist.IsValid(target) || !args.CanReach) - return; - - AddLabelTo(uid, handLabeler, target, out string? result); - if (result == null) - return; - _popupSystem.PopupEntity(result, args.User, args.User); +namespace Content.Server.Labels.Label; - // Log labeling - _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.User):user} labeled {ToPrettyString(target):target} with {ToPrettyString(uid):labeler}"); - } - - private void AddLabelTo(EntityUid uid, HandLabelerComponent? handLabeler, EntityUid target, out string? result) - { - if (!Resolve(uid, ref handLabeler)) - { - result = null; - return; - } - - if (handLabeler.AssignedLabel == string.Empty) - { - _labelSystem.Label(target, null); - result = Loc.GetString("hand-labeler-successfully-removed"); - return; - } - - _labelSystem.Label(target, handLabeler.AssignedLabel); - result = Loc.GetString("hand-labeler-successfully-applied"); - } - - private void OnHandLabelerLabelChanged(EntityUid uid, HandLabelerComponent handLabeler, HandLabelerLabelChangedMessage args) - { - if (args.Actor is not {Valid: true} player) - return; - - var label = args.Label.Trim(); - handLabeler.AssignedLabel = label.Substring(0, Math.Min(handLabeler.MaxLabelChars, label.Length)); - DirtyUI(uid, handLabeler); - - // Log label change - _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(player):user} set {ToPrettyString(uid):labeler} to apply label \"{handLabeler.AssignedLabel}\""); - - } - - private void DirtyUI(EntityUid uid, - HandLabelerComponent? handLabeler = null) - { - if (!Resolve(uid, ref handLabeler)) - return; +public sealed class HandLabelerSystem : SharedHandLabelerSystem +{ - _userInterfaceSystem.SetUiState(uid, HandLabelerUiKey.Key, - new HandLabelerBoundUserInterfaceState(handLabeler.AssignedLabel)); - } - } } diff --git a/Content.Server/Labels/Label/LabelSystem.cs b/Content.Server/Labels/Label/LabelSystem.cs index dd4ba1f718f..aee2abe7ab9 100644 --- a/Content.Server/Labels/Label/LabelSystem.cs +++ b/Content.Server/Labels/Label/LabelSystem.cs @@ -50,7 +50,7 @@ private void OnLabelCompMapInit(EntityUid uid, LabelComponent component, MapInit /// intended label text (null to remove) /// label component for resolve /// metadata component for resolve - public void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) + public override void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) { if (!Resolve(uid, ref metadata)) return; diff --git a/Content.Shared/Labels/Components/HandLabelerComponent.cs b/Content.Shared/Labels/Components/HandLabelerComponent.cs new file mode 100644 index 00000000000..8e2cb7b0675 --- /dev/null +++ b/Content.Shared/Labels/Components/HandLabelerComponent.cs @@ -0,0 +1,30 @@ +using Content.Shared.Labels.EntitySystems; +using Content.Shared.Whitelist; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Labels.Components; + +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedHandLabelerSystem))] +public sealed partial class HandLabelerComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), Access(Other = AccessPermissions.ReadWriteExecute)] + [DataField] + public string AssignedLabel = string.Empty; + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public int MaxLabelChars = 50; + + [DataField] + public EntityWhitelist Whitelist = new(); +} + +[Serializable, NetSerializable] +public sealed class HandLabelerComponentState(string assignedLabel) : IComponentState +{ + public string AssignedLabel = assignedLabel; + + public int MaxLabelChars; +} diff --git a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs new file mode 100644 index 00000000000..7dbeee3e770 --- /dev/null +++ b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs @@ -0,0 +1,129 @@ +using Content.Shared.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Interaction; +using Content.Shared.Labels.Components; +using Content.Shared.Popups; +using Content.Shared.Verbs; +using Robust.Shared.GameStates; +using Robust.Shared.Network; + +namespace Content.Shared.Labels.EntitySystems; + +public abstract class SharedHandLabelerSystem : EntitySystem +{ + [Dependency] protected readonly SharedUserInterfaceSystem UserInterfaceSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedLabelSystem _labelSystem = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly INetManager _netManager = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(AfterInteractOn); + SubscribeLocalEvent>(OnUtilityVerb); + // Bound UI subscriptions + SubscribeLocalEvent(OnHandLabelerLabelChanged); + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + } + + private void OnGetState(Entity ent, ref ComponentGetState args) + { + args.State = new HandLabelerComponentState(ent.Comp.AssignedLabel) + { + MaxLabelChars = ent.Comp.MaxLabelChars, + }; + } + + private void OnHandleState(Entity ent, ref ComponentHandleState args) + { + if (args.Current is not HandLabelerComponentState state) + return; + + ent.Comp.MaxLabelChars = state.MaxLabelChars; + + if (ent.Comp.AssignedLabel == state.AssignedLabel) + return; + + ent.Comp.AssignedLabel = state.AssignedLabel; + UpdateUI(ent); + } + + protected virtual void UpdateUI(Entity ent) + { + } + + private void AddLabelTo(EntityUid uid, HandLabelerComponent? handLabeler, EntityUid target, out string? result) + { + if (!Resolve(uid, ref handLabeler)) + { + result = null; + return; + } + + if (handLabeler.AssignedLabel == string.Empty) + { + if (_netManager.IsServer) + _labelSystem.Label(target, null); + result = Loc.GetString("hand-labeler-successfully-removed"); + return; + } + if (_netManager.IsServer) + _labelSystem.Label(target, handLabeler.AssignedLabel); + result = Loc.GetString("hand-labeler-successfully-applied"); + } + + private void OnUtilityVerb(EntityUid uid, HandLabelerComponent handLabeler, GetVerbsEvent args) + { + if (args.Target is not { Valid: true } target || !handLabeler.Whitelist.IsValid(target) || !args.CanAccess) + return; + + var labelerText = handLabeler.AssignedLabel == string.Empty ? Loc.GetString("hand-labeler-remove-label-text") : Loc.GetString("hand-labeler-add-label-text"); + + var verb = new UtilityVerb() + { + Act = () => + { + Labeling(uid, target, args.User, handLabeler); + }, + Text = labelerText + }; + + args.Verbs.Add(verb); + } + + private void AfterInteractOn(EntityUid uid, HandLabelerComponent handLabeler, AfterInteractEvent args) + { + if (args.Target is not { Valid: true } target || !handLabeler.Whitelist.IsValid(target) || !args.CanReach) + return; + + Labeling(uid, target, args.User, handLabeler); + } + + private void Labeling(EntityUid uid, EntityUid target, EntityUid User, HandLabelerComponent handLabeler) + { + AddLabelTo(uid, handLabeler, target, out var result); + if (result == null) + return; + + _popupSystem.PopupClient(result, User, User); + + // Log labeling + _adminLogger.Add(LogType.Action, LogImpact.Low, + $"{ToPrettyString(User):user} labeled {ToPrettyString(target):target} with {ToPrettyString(uid):labeler}"); + } + + private void OnHandLabelerLabelChanged(EntityUid uid, HandLabelerComponent handLabeler, HandLabelerLabelChangedMessage args) + { + var label = args.Label.Trim(); + handLabeler.AssignedLabel = label[..Math.Min(handLabeler.MaxLabelChars, label.Length)]; + UpdateUI((uid, handLabeler)); + Dirty(uid, handLabeler); + + // Log label change + _adminLogger.Add(LogType.Action, LogImpact.Low, + $"{ToPrettyString(args.Actor):user} set {ToPrettyString(uid):labeler} to apply label \"{handLabeler.AssignedLabel}\""); + } +} diff --git a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs b/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs index a8239e7867b..1189bb46d04 100644 --- a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs +++ b/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs @@ -13,6 +13,8 @@ public override void Initialize() SubscribeLocalEvent(OnExamine); } + public virtual void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null){} + private void OnExamine(EntityUid uid, LabelComponent? label, ExaminedEvent args) { if (!Resolve(uid, ref label)) diff --git a/Content.Shared/Labels/LabelEvents.cs b/Content.Shared/Labels/LabelEvents.cs index 9f00354af24..62e9c15c85e 100644 --- a/Content.Shared/Labels/LabelEvents.cs +++ b/Content.Shared/Labels/LabelEvents.cs @@ -1,47 +1,27 @@ using Robust.Shared.Serialization; -namespace Content.Shared.Labels -{ - /// - /// Key representing which is currently open. - /// Useful when there are multiple UI for an object. Here it's future-proofing only. - /// - [Serializable, NetSerializable] - public enum HandLabelerUiKey - { - Key, - } - - [Serializable, NetSerializable] - public enum PaperLabelVisuals : byte - { - Layer, - HasLabel, - LabelType - } +namespace Content.Shared.Labels; - /// - /// Represents a state that can be sent to the client - /// - [Serializable, NetSerializable] - public sealed class HandLabelerBoundUserInterfaceState : BoundUserInterfaceState - { - public string CurrentLabel { get; } - - public HandLabelerBoundUserInterfaceState(string currentLabel) - { - CurrentLabel = currentLabel; - } - } +/// +/// Key representing which is currently open. +/// Useful when there are multiple UI for an object. Here it's future-proofing only. +/// +[Serializable, NetSerializable] +public enum HandLabelerUiKey +{ + Key, +} - [Serializable, NetSerializable] - public sealed class HandLabelerLabelChangedMessage : BoundUserInterfaceMessage - { - public string Label { get; } +[Serializable, NetSerializable] +public enum PaperLabelVisuals : byte +{ + Layer, + HasLabel, + LabelType +} - public HandLabelerLabelChangedMessage(string label) - { - Label = label; - } - } +[Serializable, NetSerializable] +public sealed class HandLabelerLabelChangedMessage(string label) : BoundUserInterfaceMessage +{ + public string Label { get; } = label; } From 09379a5c772925fb6a92b4176b0b0597bcae5194 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 04:20:36 +0000 Subject: [PATCH 59/89] 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 ca090e7539b..2f9c148b8ea 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ArchPigeon - changes: - - message: Liquid Tritium can now be used as a chem in flamethrowers - type: Add - id: 5970 - time: '2024-02-19T22:37:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25281 - author: ElectroJr changes: - message: Fix actions sometimes disappearing. @@ -3862,3 +3855,10 @@ id: 6469 time: '2024-04-28T03:19:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26655 +- author: osjarw + changes: + - message: Putting a hand labeler in a belt is now predicted correctly. + type: Fix + id: 6470 + time: '2024-04-28T04:19:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26660 From d66ad739ee89ea6a73176d0c3b9f108b4eb94445 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 28 Apr 2024 14:30:39 +1000 Subject: [PATCH 60/89] Fix godmode serialization (#27427) IDK --- Resources/Maps/Salvage/small-3.yml | 692 ----------------------------- 1 file changed, 692 deletions(-) diff --git a/Resources/Maps/Salvage/small-3.yml b/Resources/Maps/Salvage/small-3.yml index 3982d2d33bb..4158388e8e1 100644 --- a/Resources/Maps/Salvage/small-3.yml +++ b/Resources/Maps/Salvage/small-3.yml @@ -926,176 +926,132 @@ entities: rot: 3.141592653589793 rad pos: 1.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 4 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 6 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 7 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 14 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 17 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 24 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 25 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 26 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 29 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 30 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 31 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 37 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 38 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 44 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 48 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 49 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 50 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 51 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 52 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 53 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 66 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 75 components: - type: Transform @@ -1108,8 +1064,6 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 78 components: - type: Transform @@ -1122,144 +1076,108 @@ entities: rot: -1.5707963267948966 rad pos: -3.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 80 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 97 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 101 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 105 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 106 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 107 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 108 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 110 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 112 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 115 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 116 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 117 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 118 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 119 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 120 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 121 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 122 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 123 components: - type: Transform @@ -1278,48 +1196,36 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 126 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 127 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 128 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 129 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 130 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 131 components: - type: Transform @@ -1332,88 +1238,66 @@ entities: rot: 3.141592653589793 rad pos: -1.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 133 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 134 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 135 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 136 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 137 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 138 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 139 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 140 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 141 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 142 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 143 components: - type: Transform @@ -1444,40 +1328,30 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 148 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 149 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 150 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 151 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 152 components: - type: Transform @@ -1490,112 +1364,84 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 154 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 155 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 156 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 157 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 158 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 159 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 160 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 161 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 162 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 163 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 164 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 165 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 166 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 167 components: - type: Transform @@ -1614,56 +1460,42 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 170 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 171 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 172 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 173 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 174 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 175 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 176 components: - type: Transform @@ -1676,8 +1508,6 @@ entities: rot: -1.5707963267948966 rad pos: 9.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 178 components: - type: Transform @@ -1690,1104 +1520,828 @@ entities: rot: 3.141592653589793 rad pos: 9.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 180 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 181 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 182 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 183 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 184 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 185 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 186 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 187 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 188 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 189 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 190 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 191 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 192 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 193 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 194 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 195 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 196 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 197 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 198 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 199 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 200 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 201 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 202 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 203 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 204 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 205 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 206 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 207 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 208 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 209 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 210 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 211 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 212 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 213 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 214 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 215 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 216 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 217 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 218 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 219 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 220 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 221 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 222 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 223 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 224 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 225 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 226 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 227 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 228 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 229 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 230 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 231 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 232 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 233 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 234 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 235 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 236 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 237 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 238 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 239 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 240 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 241 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 242 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 243 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 244 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 245 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 246 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 247 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 248 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 249 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 250 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 251 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 252 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 253 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 254 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 255 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 256 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 257 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 258 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 259 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 260 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 261 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 262 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 263 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 264 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 265 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 266 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 267 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 268 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 269 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 270 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 271 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 272 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 273 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 274 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 275 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 276 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 277 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 278 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 279 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 280 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 281 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 282 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 283 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 284 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 285 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 286 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 287 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 288 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 289 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 290 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 291 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 292 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 293 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 294 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 295 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 296 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 297 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 298 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 299 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 300 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 301 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 302 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 303 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 304 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 305 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 306 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 307 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 308 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 309 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 310 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 311 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 312 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 313 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 314 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 315 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 316 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 317 components: - type: Transform @@ -2800,982 +2354,736 @@ entities: rot: 3.141592653589793 rad pos: 4.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 319 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 320 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 321 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 322 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 323 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 324 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 325 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 326 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 327 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 328 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 329 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 330 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 331 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 332 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 333 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 334 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 335 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 336 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 337 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 338 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 339 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 340 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 341 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 342 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 343 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 344 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 345 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 346 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 347 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 348 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 349 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 350 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 351 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 352 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 353 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 354 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 355 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 356 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 357 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 358 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 359 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 360 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 361 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 362 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 363 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 364 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 365 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 366 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 367 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 368 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 369 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 370 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 371 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 372 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 373 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 374 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 375 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 376 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 377 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 378 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 379 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 380 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 381 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 382 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 383 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 384 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 385 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 386 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 387 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 388 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 389 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 390 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 391 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 392 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 393 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 394 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 395 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 396 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 397 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 398 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 399 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 400 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 401 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 402 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 403 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 404 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 405 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 406 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 407 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 408 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 409 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 410 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 411 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 412 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 413 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 414 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 415 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 416 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 417 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 418 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 419 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 420 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 421 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 422 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 423 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 424 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 425 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 426 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 427 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 428 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 429 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 430 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 431 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 432 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 433 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 434 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 435 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 436 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 437 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 438 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 439 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 440 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} ... From 72f790844f7684dbcd0c3f6f38d4feeb05467d5f Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 28 Apr 2024 14:39:42 +1000 Subject: [PATCH 61/89] Fix recharger (#27426) --- .../Entities/Objects/Power/portable_recharger.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml index 35dfa0881f4..e3213ac8c9e 100644 --- a/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml +++ b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml @@ -1,7 +1,7 @@ - type: entity parent: Clothing id: PortableRecharger - name: portable recharger + name: portable recharger description: High-tech recharger adapted for portability components: - type: Item @@ -25,6 +25,9 @@ price: 500 - type: Tag tags: [] # ignore "WhitelistChameleon" tag + - type: ContainerContainer + containers: + charger_slot: !type:ContainerSlot - type: ItemSlots slots: charger_slot: @@ -32,4 +35,4 @@ whitelist: components: - HitscanBatteryAmmoProvider - - ProjectileBatteryAmmoProvider \ No newline at end of file + - ProjectileBatteryAmmoProvider From f5aa5f1f22cf255beae398e349e567d466567e40 Mon Sep 17 00:00:00 2001 From: NotSoDana <75203942+NotSoDana@users.noreply.github.com> Date: Sun, 28 Apr 2024 06:40:07 +0200 Subject: [PATCH 62/89] Several new bartender tools (#27406) * added bar specs * specs in boozeomat * added jigger in bartender guide * fixed ice bucket * cdn --------- Co-authored-by: metalgearsloth --- .../VendingMachines/Inventories/boozeomat.yml | 3 + .../Consumable/Drinks/drinks_special.yml | 60 ++++++++++++++++++ .../Entities/Objects/Misc/utensils.yml | 25 ++++++++ .../Guidebook/Service/Bartender.xml | 1 + .../Consumable/Drinks/icebucket.rsi/icon.png | Bin 0 -> 554 bytes .../Consumable/Drinks/icebucket.rsi/meta.json | 14 ++++ .../Consumable/Drinks/jigger.rsi/icon.png | Bin 0 -> 314 bytes .../Consumable/Drinks/jigger.rsi/meta.json | 14 ++++ .../utensils.rsi/bar_spoon-inhand-left.png | Bin 0 -> 260 bytes .../utensils.rsi/bar_spoon-inhand-right.png | Bin 0 -> 251 bytes .../Objects/Misc/utensils.rsi/bar_spoon.png | Bin 0 -> 312 bytes .../Objects/Misc/utensils.rsi/meta.json | 13 +++- 12 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json create mode 100644 Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-left.png create mode 100644 Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-right.png create mode 100644 Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon.png diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml index bd8b04f982b..a309b1d61df 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml @@ -7,6 +7,9 @@ DrinkVacuumFlask: 5 DrinkFlaskBar: 5 DrinkShaker: 5 + DrinkJigger: 5 + DrinkIceBucket: 2 + BarSpoon: 3 CustomDrinkJug: 2 #to allow for custom drinks in the soda/booze dispensers DrinkAbsintheBottleFull: 2 DrinkAleBottleFull: 5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml index ad2e7601414..d2c1249740e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml @@ -104,3 +104,63 @@ - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/jar_what.rsi + +- type: entity + id: BartenderMixer + abstract: true + components: + - type: DrainableSolution + solution: drink + - type: Drink + - type: DrawableSolution + solution: drink + - type: RefillableSolution + solution: drink + - type: SolutionTransfer + canChangeTransferAmount: true + - type: Spillable + solution: drink + - type: UserInterface + interfaces: + enum.TransferAmountUiKey.Key: + type: TransferAmountBoundUserInterface + +- type: entity + parent: [BaseItem, BartenderMixer] + id: DrinkJigger + name: jigger + description: Like a shaker, but smaller. Used to control the amount of ingredients. + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 20 + - type: MixableSolution + solution: drink + - type: FitsInDispenser + solution: drink + - type: Sprite + sprite: Objects/Consumable/Drinks/jigger.rsi + state: icon + - type: PhysicalComposition + materialComposition: + Steel: 20 + +- type: entity + parent: [BaseItem, BartenderMixer] + id: DrinkIceBucket + name: ice bucket + description: A special bucket of refreshy ice. Prohibited use for challenge with the same name! + components: + - type: SolutionContainerManager + solutions: + drink: + reagents: + - ReagentId: Ice + Quantity: 200 + - type: Sprite + sprite: Objects/Consumable/Drinks/icebucket.rsi + state: icon + - type: PhysicalComposition + materialComposition: + Steel: 75 diff --git a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml index 4250669581f..86667f094fd 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml @@ -120,3 +120,28 @@ - Plastic - Trash - Knife + +- type: entity + parent: UtensilBase + id: BarSpoon + name: bar spoon + description: Your personal helper to mix drinks and changes lives. + components: + - type: Tag + tags: + - Metal + - type: Sprite + state: bar_spoon + - type: Item + heldPrefix: spoon + - type: Utensil + types: + - Spoon + - type: MeleeWeapon + wideAnimationRotation: 180 + attackRate: 2 + damage: + types: + Blunt: 2 + - type: Shovel + speedModifier: 0.05 # nah diff --git a/Resources/ServerInfo/Guidebook/Service/Bartender.xml b/Resources/ServerInfo/Guidebook/Service/Bartender.xml index 060c39fca31..b7599fc0d1c 100644 --- a/Resources/ServerInfo/Guidebook/Service/Bartender.xml +++ b/Resources/ServerInfo/Guidebook/Service/Bartender.xml @@ -18,6 +18,7 @@ Don't forget containers to serve them in! + ## Drinks diff --git a/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..228d098060c98d18e2dd042dfe3da92ca330d8bd GIT binary patch literal 554 zcmV+_0@eMAP)Px$~zN-clmlwv$SwA}Ul>^=Tq;90T~=aLylej4`ZM zD*$*%#BrQYW3aRYG))5ln5GF`*P$p1JkJATOmu{E4$e6Y!vFwWuUGiK44f=w4k8jy8b8wnqtQruP?yUkG);qH7$72eo|pPaf>-9QHr4oGKM-T)cBABN6VK~1mf&0MSZZ|RQv)K$p1k18eE|-P& zzAZ9H-|uiZOf1WSuIrdirywGzs)}Z_iT!>rHX)867e*gdg07*qoM6N<$g4bQ}&j0`b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json new file mode 100644 index 00000000000..f55a85dc265 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Dezzzix; Discord: dezzzix", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] + } diff --git a/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6c65ca02025aacb218b407e6fe5ecbddcfce6a5a GIT binary patch literal 314 zcmV-A0mc4_P)Px#^hrcPR9J=Wls$@sKoEt$Sr!`fB!(t)07DbQK0}|xBX|ZwQ!`@?J%bpv2qON_ zIMFWbPtrZZZqi>^@Ls*HDjGZ+}l;5<)+5NNG2#yAIX{s)v&7r-zK08ZnFCs&Xp z32B->W8oG+DRo6r#Bm(#`%WCkWLb9oS%6pKd;{NK?0N$pkH_PA02I_&->PH0L;wH) M07*qoM6N<$f>Q*7#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json new file mode 100644 index 00000000000..f55a85dc265 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Dezzzix; Discord: dezzzix", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] + } diff --git a/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-left.png b/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..fba15fa255f879d0d87f31550a559a4c7abab68d GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_IbKEhE&XX zdutA z`>mkK#p}|pg?zqpeDls#*D9l)>^i?}S5Q}rz?@}L8pk3+zkc*TCefbL*!|dI7tj6G z{B9qAZ4A$G@;X_1BHX6Q{JlHKSzwTnmS+0=jZjj~>w9nO4!pHfXi-=yGX385+EX^V zpZveP%W_$_e%05j-Z^BcR9FQ5Fu6{1-oD!M<3fF03 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-right.png b/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b32fd8b8a18fd80925ae90ede3738ffd2c5d55 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|wtBiahE&XX zduyZMAp@S)MA^j^ObHC)uWF?@SJXV;dxuGSChMWr2NoM2{`V4}wq{AS5F=0*1B1ZC zDM5ytH|STKXw}mao70ag|G#5;|MxP6R52>}~qH5onr>!{mAiZS&>J46O t{}bn4GZlMntK+I&|MzLPx#@<~KNR9J=Wmmv;>Fc3xmmQ4^`12GPdK;Y_o8P32}@Hk{Wf~0~IK+<3*4Pn*p z0fxmfBd=dPkCKt$-ePMjk$I_EBHEdU_PGAzr2zVAg@Pl+j| zgni#X=WW|0F#rG~HX4JJ5{xl8j^pF)HLeK>uB3%IW2FkM31yFCGsw!Oo@4YTS+qSv@(=_P< z)OD>3Fwe6tfchp}*Hsrly#e)2_>Bf`eN31cd7fh!264_`>UsgePg1p2ui!BN0000< KMNUMnLSTY5PJ1T+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/utensils.rsi/meta.json b/Resources/Textures/Objects/Misc/utensils.rsi/meta.json index 30dd4e85643..77aeb5e3c13 100644 --- a/Resources/Textures/Objects/Misc/utensils.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/utensils.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432 and modified by Swept", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432 and modified by Swept; Bar spoon by Dezzzix", "size": { "x": 32, "y": 32 @@ -40,6 +40,17 @@ }, { "name": "plastic_knife" + }, + { + "name": "bar_spoon" + }, + { + "name": "bar_spoon-inhand-left", + "directions": 4 + }, + { + "name": "bar_spoon-inhand-right", + "directions": 4 } ] } From f88b6f6154c47c14cfe2d13edd669ad550a48a3f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 04:41:13 +0000 Subject: [PATCH 63/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2f9c148b8ea..ef32cb526e3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ElectroJr - changes: - - message: Fix actions sometimes disappearing. - type: Fix - id: 5971 - time: '2024-02-20T02:08:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25395 - author: PJB3005 changes: - message: Fixed timezone issues with the admin notes window. @@ -3862,3 +3855,14 @@ id: 6470 time: '2024-04-28T04:19:30.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26660 +- author: Dezzzix + changes: + - message: Added bar spoon, jigger and ice bucket + type: Add + - message: Bartender tools added in boozeomat + type: Add + - message: Jigger added in Bartender guidebook + type: Add + id: 6471 + time: '2024-04-28T04:40:07.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27406 From f5b8b5fbdcb4675cd29d15e2cd4112e587b03034 Mon Sep 17 00:00:00 2001 From: RumiTiger <154005209+RumiTiger@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:43:45 -0300 Subject: [PATCH 64/89] Sprites for drinks without sprite (attempt 2) (#27227) * A beer can and a wine can * fix wrong file locations --------- Signed-off-by: c4llv07e Co-authored-by: c4llv07e Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Reagents/Consumable/Drink/alcohol.yml | 8 ++- .../Reagents/Consumable/Drink/drinks.yml | 30 +++++++++-- .../Reagents/Consumable/Drink/juice.yml | 18 +++++++ .../Reagents/Consumable/Drink/soda.yml | 24 +++++++++ .../Reagents/Consumable/Food/food.yml | 8 ++- .../Drinks/coffeeglass.rsi/fill-1.png | Bin 0 -> 2962 bytes .../Drinks/coffeeglass.rsi/fill-2.png | Bin 0 -> 2988 bytes .../Drinks/coffeeglass.rsi/fill-3.png | Bin 0 -> 2985 bytes .../Drinks/coffeeglass.rsi/fill-4.png | Bin 0 -> 2988 bytes .../Drinks/coffeeglass.rsi/icon.png | Bin 0 -> 3113 bytes .../Drinks/coffeeglass.rsi/icon_empty.png | Bin 0 -> 3069 bytes .../Drinks/coffeeglass.rsi/meta.json | 29 +++++++++++ .../Drinks/colaglass.rsi/fill-1.png | Bin 0 -> 2916 bytes .../Drinks/colaglass.rsi/fill-2.png | Bin 0 -> 2937 bytes .../Drinks/colaglass.rsi/fill-3.png | Bin 0 -> 2946 bytes .../Drinks/colaglass.rsi/fill-4.png | Bin 0 -> 2958 bytes .../Drinks/colaglass.rsi/fill-5.png | Bin 0 -> 2961 bytes .../Consumable/Drinks/colaglass.rsi/icon.png | Bin 0 -> 3178 bytes .../Drinks/colaglass.rsi/icon_empty.png | Bin 0 -> 3161 bytes .../Consumable/Drinks/colaglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/dr_gibb_glass.rsi/fill-1.png | Bin 0 -> 2909 bytes .../Drinks/dr_gibb_glass.rsi/fill-2.png | Bin 0 -> 2911 bytes .../Drinks/dr_gibb_glass.rsi/fill-3.png | Bin 0 -> 2925 bytes .../Drinks/dr_gibb_glass.rsi/fill-4.png | Bin 0 -> 2920 bytes .../Drinks/dr_gibb_glass.rsi/fill-5.png | Bin 0 -> 2946 bytes .../Drinks/dr_gibb_glass.rsi/icon.png | Bin 305 -> 3135 bytes .../Drinks/dr_gibb_glass.rsi/icon_empty.png | Bin 0 -> 3087 bytes .../Drinks/dr_gibb_glass.rsi/meta.json | 33 +++++++++++- .../Drinks/greenteaglass.rsi/fill-1.png | Bin 0 -> 2903 bytes .../Drinks/greenteaglass.rsi/fill-2.png | Bin 0 -> 2915 bytes .../Drinks/greenteaglass.rsi/fill-3.png | Bin 0 -> 2931 bytes .../Drinks/greenteaglass.rsi/fill-4.png | Bin 0 -> 2931 bytes .../Drinks/greenteaglass.rsi/icon.png | Bin 0 -> 3116 bytes .../Drinks/greenteaglass.rsi/icon_empty.png | Bin 0 -> 3098 bytes .../Drinks/greenteaglass.rsi/meta.json | 29 +++++++++++ .../Drinks/icedgreenteaglass.rsi/fill-1.png | Bin 0 -> 2925 bytes .../Drinks/icedgreenteaglass.rsi/fill-2.png | Bin 0 -> 2945 bytes .../Drinks/icedgreenteaglass.rsi/fill-3.png | Bin 0 -> 2984 bytes .../Drinks/icedgreenteaglass.rsi/fill-4.png | Bin 0 -> 2993 bytes .../Drinks/icedgreenteaglass.rsi/fill-5.png | Bin 0 -> 3025 bytes .../Drinks/icedgreenteaglass.rsi/icon.png | Bin 0 -> 3190 bytes .../icedgreenteaglass.rsi/icon_empty.png | Bin 0 -> 3032 bytes .../Drinks/icedgreenteaglass.rsi/meta.json | 32 ++++++++++++ .../Consumable/Drinks/iceglass.rsi/fill-1.png | Bin 0 -> 2935 bytes .../Consumable/Drinks/iceglass.rsi/fill-2.png | Bin 0 -> 2978 bytes .../Consumable/Drinks/iceglass.rsi/fill-3.png | Bin 0 -> 3005 bytes .../Consumable/Drinks/iceglass.rsi/icon.png | Bin 363 -> 3215 bytes .../Drinks/iceglass.rsi/icon_empty.png | Bin 0 -> 3071 bytes .../Consumable/Drinks/iceglass.rsi/meta.json | 27 +++++++++- .../Drinks/lemonjuiceglass.rsi/fill-1.png | Bin 0 -> 2981 bytes .../Drinks/lemonjuiceglass.rsi/fill-2.png | Bin 0 -> 2993 bytes .../Drinks/lemonjuiceglass.rsi/fill-3.png | Bin 0 -> 2993 bytes .../Drinks/lemonjuiceglass.rsi/fill-4.png | Bin 0 -> 3000 bytes .../Drinks/lemonjuiceglass.rsi/fill-5.png | Bin 0 -> 3004 bytes .../Drinks/lemonjuiceglass.rsi/icon.png | Bin 0 -> 3308 bytes .../Drinks/lemonjuiceglass.rsi/icon_empty.png | Bin 0 -> 3278 bytes .../Drinks/lemonjuiceglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/moonshineglass.rsi/fill-1.png | Bin 0 -> 2930 bytes .../Drinks/moonshineglass.rsi/fill-2.png | Bin 0 -> 2929 bytes .../Drinks/moonshineglass.rsi/fill-3.png | Bin 0 -> 2937 bytes .../Drinks/moonshineglass.rsi/fill-4.png | Bin 0 -> 2970 bytes .../Drinks/moonshineglass.rsi/fill-5.png | Bin 0 -> 2971 bytes .../Drinks/moonshineglass.rsi/fill-6.png | Bin 0 -> 2967 bytes .../Drinks/moonshineglass.rsi/icon.png | Bin 0 -> 3067 bytes .../Drinks/moonshineglass.rsi/icon_empty.png | Bin 0 -> 3018 bytes .../Drinks/moonshineglass.rsi/meta.json | 35 +++++++++++++ .../Drinks/orangejuiceglass.rsi/fill-1.png | Bin 0 -> 2956 bytes .../Drinks/orangejuiceglass.rsi/fill-2.png | Bin 0 -> 2960 bytes .../Drinks/orangejuiceglass.rsi/fill-3.png | Bin 0 -> 2972 bytes .../Drinks/orangejuiceglass.rsi/fill-4.png | Bin 0 -> 2981 bytes .../Drinks/orangejuiceglass.rsi/fill-5.png | Bin 0 -> 2982 bytes .../Drinks/orangejuiceglass.rsi/icon.png | Bin 0 -> 3136 bytes .../orangejuiceglass.rsi/icon_empty.png | Bin 0 -> 3121 bytes .../Drinks/orangejuiceglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/space-up_glass.rsi/fill-1.png | Bin 0 -> 2925 bytes .../Drinks/space-up_glass.rsi/fill-2.png | Bin 0 -> 2940 bytes .../Drinks/space-up_glass.rsi/fill-3.png | Bin 0 -> 2940 bytes .../Drinks/space-up_glass.rsi/fill-4.png | Bin 0 -> 2953 bytes .../Drinks/space-up_glass.rsi/fill-5.png | Bin 0 -> 2955 bytes .../Drinks/space-up_glass.rsi/fill-6.png | Bin 0 -> 2961 bytes .../Drinks/space-up_glass.rsi/icon.png | Bin 320 -> 3131 bytes .../Drinks/space-up_glass.rsi/icon_empty.png | Bin 0 -> 3094 bytes .../Drinks/space-up_glass.rsi/meta.json | 36 ++++++++++++- .../space_mountain_wind_glass.rsi/fill-1.png | Bin 0 -> 2934 bytes .../space_mountain_wind_glass.rsi/fill-2.png | Bin 0 -> 2945 bytes .../space_mountain_wind_glass.rsi/fill-3.png | Bin 0 -> 2956 bytes .../space_mountain_wind_glass.rsi/fill-4.png | Bin 0 -> 2963 bytes .../space_mountain_wind_glass.rsi/fill-5.png | Bin 0 -> 2990 bytes .../space_mountain_wind_glass.rsi/icon.png | Bin 404 -> 3160 bytes .../icon_empty.png | Bin 0 -> 3119 bytes .../space_mountain_wind_glass.rsi/meta.json | 33 +++++++++++- .../Drinks/sugarglass.rsi/fill-1.png | Bin 0 -> 2874 bytes .../Drinks/sugarglass.rsi/fill-2.png | Bin 0 -> 2893 bytes .../Drinks/sugarglass.rsi/fill-3.png | Bin 0 -> 2902 bytes .../Drinks/sugarglass.rsi/fill-4.png | Bin 0 -> 2900 bytes .../Drinks/sugarglass.rsi/fill-5.png | Bin 0 -> 2911 bytes .../Drinks/sugarglass.rsi/fill-6.png | Bin 0 -> 2921 bytes .../Drinks/sugarglass.rsi/fill-7.png | Bin 0 -> 2920 bytes .../Consumable/Drinks/sugarglass.rsi/icon.png | Bin 0 -> 3051 bytes .../Drinks/sugarglass.rsi/icon_empty.png | Bin 0 -> 2986 bytes .../Drinks/sugarglass.rsi/meta.json | 38 ++++++++++++++ .../Consumable/Drinks/teaglass.rsi/fill-1.png | Bin 0 -> 2937 bytes .../Consumable/Drinks/teaglass.rsi/fill-2.png | Bin 0 -> 2944 bytes .../Consumable/Drinks/teaglass.rsi/fill-3.png | Bin 0 -> 2983 bytes .../Consumable/Drinks/teaglass.rsi/fill-4.png | Bin 0 -> 2955 bytes .../Consumable/Drinks/teaglass.rsi/icon.png | Bin 231 -> 3156 bytes .../Drinks/teaglass.rsi/icon_empty.png | Bin 0 -> 3127 bytes .../Consumable/Drinks/teaglass.rsi/meta.json | 30 ++++++++++- .../Drinks/tequillaglass.rsi/fill-1.png | Bin 189 -> 3054 bytes .../Drinks/tequillaglass.rsi/fill-2.png | Bin 208 -> 3052 bytes .../Drinks/tequillaglass.rsi/fill-3.png | Bin 237 -> 3045 bytes .../Drinks/tequillaglass.rsi/fill-4.png | Bin 248 -> 0 bytes .../Drinks/tequillaglass.rsi/icon.png | Bin 447 -> 3149 bytes .../Drinks/tequillaglass.rsi/icon_empty.png | Bin 348 -> 3129 bytes .../Drinks/tequillaglass.rsi/meta.json | 49 ++++++++---------- .../Drinks/tonicglass.rsi/fill-1.png | Bin 0 -> 2864 bytes .../Drinks/tonicglass.rsi/fill-2.png | Bin 0 -> 2882 bytes .../Drinks/tonicglass.rsi/fill-3.png | Bin 0 -> 2883 bytes .../Drinks/tonicglass.rsi/fill-4.png | Bin 0 -> 2883 bytes .../Drinks/tonicglass.rsi/fill-5.png | Bin 0 -> 2883 bytes .../Consumable/Drinks/tonicglass.rsi/icon.png | Bin 0 -> 3146 bytes .../Drinks/tonicglass.rsi/icon_empty.png | Bin 0 -> 3085 bytes .../Drinks/tonicglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/watermelonglass.rsi/fill-1.png | Bin 0 -> 2933 bytes .../Drinks/watermelonglass.rsi/fill-2.png | Bin 0 -> 2936 bytes .../Drinks/watermelonglass.rsi/fill-3.png | Bin 0 -> 2973 bytes .../Drinks/watermelonglass.rsi/fill-4.png | Bin 0 -> 3000 bytes .../Drinks/watermelonglass.rsi/icon.png | Bin 0 -> 3180 bytes .../Drinks/watermelonglass.rsi/icon_empty.png | Bin 0 -> 3107 bytes .../Drinks/watermelonglass.rsi/meta.json | 29 +++++++++++ 130 files changed, 579 insertions(+), 37 deletions(-) create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-7.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon_empty.png delete mode 100644 Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/meta.json diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index ef021611655..963e5fcf45a 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -346,7 +346,7 @@ metamorphicSprite: sprite: Objects/Consumable/Drinks/tequillaglass.rsi state: icon_empty - metamorphicMaxFillLevels: 4 + metamorphicMaxFillLevels: 3 metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: @@ -1289,6 +1289,12 @@ physicalDesc: reagent-physical-desc-strong-smelling flavor: moonshine color: "#d1d7d155" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/moonshineglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 6 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml index 71de67adb99..52a01d973f6 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml @@ -15,6 +15,12 @@ - !type:AdjustReagent reagent: Theobromine amount: 0.05 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/coffeeglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: HotCocoa @@ -100,9 +106,9 @@ flavor: tea color: "#7EB626" metamorphicSprite: - sprite: Objects/Consumable/Drinks/glass_green.rsi + sprite: Objects/Consumable/Drinks/greenteaglass.rsi state: icon_empty - metamorphicMaxFillLevels: 5 + metamorphicMaxFillLevels: 4 metamorphicFillBaseName: fill- metamorphicChangeColor: false @@ -149,7 +155,7 @@ flavor: icedtea color: "#5B821B" metamorphicSprite: - sprite: Objects/Consumable/Drinks/glass_green.rsi + sprite: Objects/Consumable/Drinks/icedgreenteaglass.rsi state: icon_empty metamorphicMaxFillLevels: 5 metamorphicFillBaseName: fill- @@ -366,6 +372,12 @@ - !type:AdjustReagent reagent: Theobromine amount: 0.05 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/teaglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: TonicWater @@ -376,6 +388,12 @@ flavor: tonicwater color: "#0064C8" fizziness: 0.4 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/tonicglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: Water @@ -408,6 +426,12 @@ plantMetabolism: - !type:PlantAdjustWater amount: 1 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/iceglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: DryRamen diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml index ee1492b45e2..c42791fa8fe 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml @@ -63,6 +63,12 @@ physicalDesc: reagent-physical-desc-citric flavor: sour color: "#fff690" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/lemonjuiceglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: JuiceLime @@ -89,6 +95,12 @@ physicalDesc: reagent-physical-desc-citric flavor: orange color: "#E78108" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/orangejuiceglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: JuicePineapple @@ -125,3 +137,9 @@ physicalDesc: reagent-physical-desc-sweet flavor: watermelon color: "#EF3520" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/watermelonglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml index 3dda5b5329a..f8d3f41af9b 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml @@ -7,6 +7,12 @@ flavor: soda color: "#6c2828" recognizable: true + metamorphicSprite: + sprite: Objects/Consumable/Drinks/colaglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: RoyRogers @@ -42,6 +48,12 @@ physicalDesc: reagent-physical-desc-fizzy flavor: drgibb color: "#102000" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/dr_gibb_glass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: EnergyDrink @@ -174,6 +186,12 @@ physicalDesc: reagent-physical-desc-fizzy flavor: sodacitrus color: "#a6fa5a" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/space_mountain_wind_glass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: SpaceUp @@ -183,6 +201,12 @@ physicalDesc: reagent-physical-desc-fizzy flavor: spaceup color: "#e3e3e37d" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/space-up_glass.rsi + state: icon_empty + metamorphicMaxFillLevels: 6 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: Starkist diff --git a/Resources/Prototypes/Reagents/Consumable/Food/food.yml b/Resources/Prototypes/Reagents/Consumable/Food/food.yml index 03ebf7cc321..c9625c663ca 100644 --- a/Resources/Prototypes/Reagents/Consumable/Food/food.yml +++ b/Resources/Prototypes/Reagents/Consumable/Food/food.yml @@ -93,6 +93,12 @@ amount: 2 - !type:PlantAdjustPests amount: 2 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/sugarglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 7 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: PumpkinFlesh #Just so pumpkins spill orange stuff when smashed @@ -100,4 +106,4 @@ name: reagent-name-pumpkin-flesh desc: reagent-desc-pumpkin-flesh flavor: pumpkin - color: "#fc9300" \ No newline at end of file + color: "#fc9300" diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e832ce8db52d79d997104104b38d3a8954950b GIT binary patch literal 2962 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 IM6N<$f?AA@xBvhE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c778f3c428e21814f15d038ecc5c2342895b02b2 GIT binary patch literal 2988 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..da13e6813977f0fb371ab3456ee05af7b7b0d05c GIT binary patch literal 2988 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 LPDHLkV1i(R=oG-u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json new file mode 100644 index 00000000000..32c5e0342d1 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by borkroman. Fill levels by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a36d304a4ddd9e4a63a32121ba62ea9e1e2d4bfb GIT binary patch literal 2916 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7bee49d05ed72f3cf1779ee5eae6e570608a03 GIT binary patch literal 2946 zcmV-|3w`v7P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet)N0U4I;tw7A_=dLgsTUY013bvTM$vW10-Ylm+!zS0p`cEEr3PMXP~zx zki-Z%q+WD2uY{0T6@ayyTS^xkN;gT-=^KuX2#BP)5d4J#p sTTtZ=ME-;3hbRFOAOR8}0h$AR0bGn;E_bz`H~;_u07*qoM6N<$g774elmGw# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..1808bdbd0415205945182615b5d399cbac5a7caa GIT binary patch literal 2958 zcmV;93vu*`P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaete;1*lpk-GvUef~dRfv*JEjfb`X8kuHb zU?(*foUWJWTg?Ug>8zeeH2_KUNQ+KKxv2pXNoZ`Yn#*eNB{R>!Bk^k+EJ`8*t<4j! zslumN=0h~Fdvmn(ANZF`==l$tAEE#VfB*=90B8tOR{#J207*qoM6N<$ Ef>U;tLjV8( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..734126d86680e5ee16619d7a8582d197c9125a3a GIT binary patch literal 2961 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 Hu0mjfR+5zJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2894625a2e5eb608253935e4ac4f53bfffd2139f GIT binary patch literal 3178 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 QFaQ7m07*qoM6N<$g6aA6GXMYp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..b20279f8f1b7f528ad742b21c4c8039814a1fc43 GIT binary patch literal 3161 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 JPDHLkV1j0~e1-r3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..74f54a4c8322e737bc057ad42187b348fcdddcd9 GIT binary patch literal 2925 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 XD7qp$iKA6A00000NkvXXu0mjf*nom& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..da440839643bdf4869004dcbe5fc6b0cc607f7b3 GIT binary patch literal 2920 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/icon.png index 620cf5ea01e70b80a579b22ca5b105a3a92c1b96..6a68486662a2c5f6512f36b8bb562885ebf3f84f 100644 GIT binary patch delta 3130 zcmV-A48`-Y0>2oLB!2{FK}|sb0I`n?{9y$E018QILqkw=Qb$4{Nkv08F*!CiEix`K z002mdol|#MllK-r-}hw?RzleDv6pOt03su-2*?mwq7ae*VT2G8K*fcK3RV;q5u8X> z#DdidNS%n{peVR!L5hf4i&b1W?jPKzwS9W;?d|*5`@H9z=YRapdCw1k5fUbm=Avo< zIZ}l@I@lkNPe{bcy?_E0NZAR{$W90N^4L=L-RlQUJ&HumpsYY5E(E}?0f1SyGDiY{y#)Yv zj#!WnKwtoXnL;eg03bL507D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@ z^6=o|A>zVpu|i=NDG+7}=onn6low3K2mk;?pn)o|K?e-M6o0J14xGUqyucR%VFpA%3?#rj5JCpz zfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4b zh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZqynizYLQ(?Bl0bB6giDtK>Co|$RIL` z{C|qPM=_LvvQY!n0(C&Ss2>`N#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG| z(J>BYjM-sajE6;FiC7vY#};GdST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%G zM_5c)L#QR}BeW8_2v-S%gfYS=B9o|3w0|Xf68Xe5gFH?u96Mr;y znkCJf7DLOVEu+=YnrUZg_h>Kabh-)MgC0ef(3jF{=m+WN>4Wrl3=M`2gU3i>C>d)R zdl{z~w;3;)Or{0Xmzl^^FxN60nP->}m~T~BD)uUT6_Lskl{%GHm421ys#H~TRX^2v zstZ)BRS&CPR(+;MRkKjzsR`5;tAEw09aX!jHm=T6cT$f~&rx5azF+-<`eO~UhJ{9; zhDf7SW4Fc`jUg7sGG*~tLe_Ft1M4hnm`!3^via;xb_M$zb}xHOQ$usAW~^qBW}W77 z%>fR^vEcAI*_=wwAhIR?(H}Q3Gzd13 z8Ei2)WAMz7W9Vy`X}HnwgyE!jf{!>Pon!|7LN8)u<&o%1yprc02^5|?(D7gKGgil=U$ddrpN8t%H%wbS*Zo4cFb zt=VnV-ON43eXILTE}I+4UBf-^LGTx1&sx}1}_Xg6+#RN4Ot&@lW)Km@*DYM zGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnWh=1TmY>2oYX&IRp`F#{A zDl)1r>QS^)ba8a|EY_^#S^HjiOPpx423?lIEROmG(H@JAFg?XogQlb;dIZ zPf{y+kr|S?BlAsGMAqJ{&)IR=Ejg5&l$@hd4QZCNE7vf$D7Q~$D=U)?Nn}(WA6du22pZOfRS_cv~1-c(_QtNPk+?Gv8+Z>iHuJf);$ekg!m= zu(Q~>cv!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1`^^VQ7&C1OKHDNXF zTgC{M|V%fo{xK_dk6MK@9S!GZ+~puufM;t32jm~jUGrkaOInTZ`zyf zns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3?NO>#LI=^+SEu(FqJ)ynt=!~PC z9bO$rzPJB=?=jt*-L?N>ambo5Q@ zJJIjcfBI^`)pOVQ*DhV3dA;w(>>IakCfyvkCA#(acJ}QTcM9%I++BK)c(44v+WqPW z`VZ=VwEnSWz-{38V8CF{!&wjS4he^z{(qGJ(}&^GN6bgnBSs^QkDVVM8x0!0@?_4F z;is~v6VJ+iR{weHbF1gy{o?ye&shA}@C*5i&%dsDsq=F0tEsO#$0Nrdyv}(&@uvK( z&f9(OxbM2($Gsn!DEvVFQ1j9HW5=h^Pxn6OeE$3|_k{ENEk`)d0000WV@Og>0Dk~_ zCIA3{ga82g0001h=l}q9FaQARU;qF*m;eA5aGbhPJOBUy32;bRa{vG?BLDy{BLR4& zKXw2B0Z2(iK~z|UWBmXBKLe$Jk&%&sTyvNxww*#S>VQ!Pj5=Vz9l%IV0dh&y=>MBH zPf*0ZF)%Rr{C~wrs#z@LSgvqZHa3RSHi2ol*vH$=8 U07*qoM6N<$f=NYAM6N<$f-r3Gg#Z8m delta 278 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json index db0ac608ed0..ec55ebfa1f1 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json @@ -1 +1,32 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..613efd11712b751a3e9be0381e5d1ec94f3b6356 GIT binary patch literal 2903 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 Bc`5(^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..785703f4df7c8d364a68639c8fcbb060cc495f1c GIT binary patch literal 2915 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 N002ovPDHLkV1oDYfHVLA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f482c8df9b9ad36d7323b2609b1fd1ca5de0276 GIT binary patch literal 2931 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..71eb435183680840e675f804a9c8075dac9c94db GIT binary patch literal 3098 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a65df2aaed0a17a4bf0f43ebd03978059775604e GIT binary patch literal 2984 zcmV;Z3s>}sP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetcS#zj=PVJP@LcF}OUQ({up{KmY;|fB^mhpa5Jx$<8<6 z9N^mwO;$5=%C96rL^et}RCjjk1^ek-wE~F49%Y~bIC`4bQ`=lq18fR-(FNzvjUJ(4YfJ5b-t@03BstC9BCe>@^N<1OUiJDTCpdynOsN(Hh{Qi@JPoP2cZYhXW}2 emStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetwPyrQC0Tobze-JPLT|UXaF&pAh%XjMxMSPZ^FTA~*;~kc2TsP~AB5 zEYFAR_5i*lfS(SeLBwvm7Q>-I2GSrRcO^ibgVqF+Fm4QPBmmUmyA=1j6RioH?6nGC nZW;J}F&x0?$3z8Gplg9QnDj{C9zkp@00000NkvXXu0mjf9uA{X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..72c2f4cecf06cbd82db932335552cb1751184875 GIT binary patch literal 3025 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..e10df8d1724f3885df2fc69eb8a03051d337b57a GIT binary patch literal 3032 zcmV;}3n%o6P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetBU(jO3U@RtR)#-}7HhPR377PR8%b zkGBkJax#7}2hrRCFw0?lSQ;SL5oCqHtw&Eb!Pu}gfGkFH2dK%(q~ChStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet|^6o#W`q44jX<)?{W~u}LS!nS2l002ovPDHLkV1iw>j>Z50 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..367a9e178bd22965cf1873831a98d825447fcb53 GIT binary patch literal 2978 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 Y7U8NsFI9)-s{jB107*qoM6N<$g2l<1@c;k- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..02022cd03b9a2061465701a9c618c7e9fa64a363 GIT binary patch literal 3005 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..97a8f2c29b6c27860eccb245cc4416d384788c1c GIT binary patch literal 2993 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 MNkvXXu0mjff;e<6`Tzg` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json new file mode 100644 index 00000000000..ec55ebfa1f1 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..824ffcf3d652da9161e6cedd2da6675e21973cf2 GIT binary patch literal 2930 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5159ff36712c776c2c666717cf70871bcb350a89 GIT binary patch literal 2929 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 bs2bn`851a9h9#;t00000NkvXXu0mjf&a;KT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2115a95af84af2276adc5fcad45cbca1b667e2 GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..90ca019493a69cb206df88976fd71a484efbf572 GIT binary patch literal 2970 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 QC;$Ke07*qoM6N<$g7}A=PXGV_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..c50860e4d037ad3c1c6fe578b550956517049b75 GIT binary patch literal 2971 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 R1mpk!002ovPDHLkV1n&You2>z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-6.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-6.png new file mode 100644 index 0000000000000000000000000000000000000000..1488e2b6297be7180d9b5482032444047d609695 GIT binary patch literal 2967 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 N002ovPDHLkV1lgsn(zPs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa26544fda22ddaa6d14b997bdc27633c450b67 GIT binary patch literal 3067 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 JPDHLkV1mdC$q4`e literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..673679cb4ab031a27b333631492bda55274c6b58 GIT binary patch literal 3018 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 bP~3qROH+G|SCt8?00000NkvXXu0mjf$aAC- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..598d0be5b6d396e7883277474720fb7a48c7a84c GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..64e185065a5621fe14086296a0d7d1325e28695c GIT binary patch literal 3136 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�=NkjC$);YgZnvAYy#4Y30000StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetYdo5dydWuNStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetpKvD}36?=^0h~yPW00L@TQo00000NkvXXu0mjf-F}2Y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..763d02e7b8b023d5f93ffe7e46b69350aaaa5960 GIT binary patch literal 2940 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..b79be48363507edbd1fcef02c66188f6292d87c4 GIT binary patch literal 2955 zcmV;63v~2}P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaeto`Qxd!)iPkus+uf-INPq-5KLE*C0IzsNEA}Y-1`>b(n!nN`)LG5F zWw(k~+mKW>duh}gpWk}Ii~&8Kc+d)1&4E3ECd>eUJ8mY^6@VnuDB3c%#xmzXQ91qp z+^Xg>T%O+Z1lMTAp3)5Ogy8_!$bke12RL;ZegWvjaWU`fv?>4q002ovPDHLkV1lxv Bm&^bF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-6.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-6.png new file mode 100644 index 0000000000000000000000000000000000000000..9abb7c672bcdaefab62ab7b7c9265c671f8a0d8a GIT binary patch literal 2961 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 Hu0mjf8aSF; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon.png index 5930cd7536c90451924e13cf3783cd0e79ff701c..e5eeaba26428a0351caad25c8ae9bf4a222e5ca3 100644 GIT binary patch delta 3127 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 R&P)IR002ovPDHLkV1kds?hpU~ delta 294 zcmV+>0one$7{CIMBYy!0Nklq~zVni5 s7Fi)cjzze@fFCzVMjbHffKdkk0CA~QN{`R?u>b%707*qoM6N<$g8T)BDgXcg diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..9e12bbbe4d746a3d0e591ca3ba491810c7f8a494 GIT binary patch literal 3094 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json index db0ac608ed0..5fe156daaae 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json @@ -1 +1,35 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + }, + { + "name": "fill-6" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..53db03fd96b5b846d8f0b4169af803e3eb630180 GIT binary patch literal 2934 zcmV-+3yJiJP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaetw~I=E1h_r`$yfkY>`_FD!Y_~j*8)%@_fMr}s5dD! zvzxzE1JiP;?12Ob2PmFLFT8ERijRFUaRdPD+Yj^O*_StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaeta(5sA?ggMm?n*;R)7GSv z^satV2~3SsaR=N1hL)lQUt94503^$pIAY)anBSl3osu1xI7;;rK(Z_i2ZR)yzoFHB r380s{q(C{*?lE)+c*YI{fRcg(JIXOTp$3Ds00000NkvXXu0mjfStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaetu9NbKm6LSSM#m3P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetXNuqStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet~9YkZbLtcegqd2n2TBN0?S`f kUYF4?_>Uea0+tkf0M+J>XkJOBUy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon.png index 812d7fd488793c3da009e3cd42c103f39404f6bb..6303745c50002f17e84dfab0dc9e4e70cd6f3c5a 100644 GIT binary patch delta 3156 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 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..d576502499c379baeb62f27dc337ad4eae5350ea GIT binary patch literal 3119 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 JPDHLkV1gyG-(dg% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json index db0ac608ed0..ec55ebfa1f1 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json @@ -1 +1,32 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6dce3834eee650e8362a35508c6712b9170f5a0d GIT binary patch literal 2874 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 Y3+Rv&GfnVfy#N3J07*qoM6N<$f`lt=D*ylh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..64dfddb473a8740fa40af1d55ad7ccd81cdf6042 GIT binary patch literal 2893 zcmV-T3$pZyP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetbP5=P}cmoclbQ!fqD`Ua{0000StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet~X=i&vt|CzjiIQM6XlY(vrF%BjFPfHkp|dah#(-vZ_-$uWWhVwpbx2*2e75I}%8UStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetA$rR1Y`iLyXglXvQ?OAjJd)jXM z5E|+n8c;PgTY3k4F@P~99>5k}TfoLo1IDhkvjrz)?Aq4@2mq#Uxc~wP;0-tcq9q^C TU1Kw?00000NkvXXu0mjfPGf^% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-7.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-7.png new file mode 100644 index 0000000000000000000000000000000000000000..d7cd6ca7be5591c1990b52183e0bf19b7d7ea68a GIT binary patch literal 2920 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3bc4f4c7ff3dfb07b9a984caa9b60324de4684 GIT binary patch literal 2986 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json new file mode 100644 index 00000000000..55fdf441638 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + }, + { + "name": "fill-6" + }, + { + "name": "fill-7" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..05e6af71a784566d28cfbb6f980ee2380ec52b9a GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8ed41fde29c0ef31262e54ec680dab9b3b55a7 GIT binary patch literal 2955 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 Bme2qI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon.png index 727bc3f2fbdfda5d0786fe945f27f2d06d421ddf..b31ed22db53b3683e295ac3871978d80affd6f9a 100644 GIT binary patch delta 3151 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 FV1lNET2lZ3 diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..abad93afb35ced9664b8be3072ecbb5c9ddedb02 GIT binary patch literal 3127 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 Ry4nB$002ovPDHLkV1gJ> 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 P00000NkvXXu0mjfdvQb# diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-2.png index 8cb7a51424e1673306215de32d2e28b61ad194df..ed17e5669359b00cf25f37ad7445c448e4a957e5 100644 GIT binary patch delta 3046 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 diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-3.png index b17d5ec6b6faf66adbcb245201126d75680f05e6..a240f84f261507c65ee8f75e004096f06a4d5b77 100644 GIT binary patch delta 3039 zcmV<53n29E0p%BvB!2{FK}|sb0I`n?{9y$E018QILqkw=Qb$4{Nkv08F*!CiEix`K z002mdol|#MllK-r-}hw?RzleDv6pOt03su-2*?mwq7ae*VT2G8K*fcK3RV;q5u8X> z#DdidNS%n{peVR!L5hf4i&b1W?jPKzwS9W;?d|*5`@H9z=YRapdCw1k5fUbm=Avo< zIZ}l@I@lkNPe{bcy?_E0NZAR{$W90N^4L=L-RlQUJ&HumpsYY5E(E}?0f1SyGDiY{y#)Yv zj#!WnKwtoXnL;eg03bL507D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@ z^6=o|A>zVpu|i=NDG+7}=onn6low3K2mk;?pn)o|K?e-M6o0J14xGUqyucR%VFpA%3?#rj5JCpz zfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4b zh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZqynizYLQ(?Bl0bB6giDtK>Co|$RIL` z{C|qPM=_LvvQY!n0(C&Ss2>`N#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG| z(J>BYjM-sajE6;FiC7vY#};GdST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%G zM_5c)L#QR}BeW8_2v-S%gfYS=B9o|3w0|Xf68Xe5gFH?u96Mr;y znkCJf7DLOVEu+=YnrUZg_h>Kabh-)MgC0ef(3jF{=m+WN>4Wrl3=M`2gU3i>C>d)R zdl{z~w;3;)Or{0Xmzl^^FxN60nP->}m~T~BD)uUT6_Lskl{%GHm421ys#H~TRX^2v zstZ)BRS&CPR(+;MRkKjzsR`5;tAEw09aX!jHm=T6cT$f~&rx5azF+-<`eO~UhJ{9; zhDf7SW4Fc`jUg7sGG*~tLe_Ft1M4hnm`!3^via;xb_M$zb}xHOQ$usAW~^qBW}W77 z%>fR^vEcAI*_=wwAhIR?(H}Q3Gzd13 z8Ei2)WAMz7W9Vy`X}HnwgyE!jf{!>Pon!|7LN8)u<&o%1yprc02^5|?(D7gKGgil=U$ddrpN8t%H%wbS*Zo4cFb zt=VnV-ON43eXILTE}I+4UBf-^LGTx1&sx}1}_Xg6+#RN4Ot&@lW)Km@*DYM zGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnWh=1TmY>2oYX&IRp`F#{A zDl)1r>QS^)ba8a|EY_^#S^HjiOPpx423?lIEROmG(H@JAFg?XogQlb;dIZ zPf{y+kr|S?BlAsGMAqJ{&)IR=Ejg5&l$@hd4QZCNE7vf$D7Q~$D=U)?Nn}(WA6du22pZOfRS_cv~1-c(_QtNPk+?Gv8+Z>iHuJf);$ekg!m= zu(Q~>cv!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1`^^VQ7&C1OKHDNXF zTgC{M|V%fo{xK_dk6MK@9S!GZ+~puufM;t32jm~jUGrkaOInTZ`zyf zns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3?NO>#LI=^+SEu(FqJ)ynt=!~PC z9bO$rzPJB=?=jt*-L?N>ambo5Q@ zJJIjcfBI^`)pOVQ*DhV3dA;w(>>IakCfyvkCA#(acJ}QTcM9%I++BK)c(44v+WqPW z`VZ=VwEnSWz-{38V8CF{!&wjS4he^z{(qGJ(}&^GN6bgnBSs^QkDVVM8x0!0@?_4F z;is~v6VJ+iR{weHbF1gy{o?ye&shA}@C*5i&%dsDsq=F0tEsO#$0Nrdyv}(&@uvK( z&f9(OxbM2($Gsn!DEvVFQ1j9HW5=h^Pxn6OeE$3|_k{ENEk`)d0000WV@Og>0Dk~_ zCIA3{ga82g0001h=l}q9FaQARU;qF*m;eA5aGbhPJOBUy32;bRa{vG?BLDy{BLR4& zKXw2B0R~A#K~z|U?N%`k!Y~XxSB3{Lu;ni-dS6~%wIOMw`px_8_`0oZdGLZG(%iIj_hSGtsjG}797 ze>C~vMC2P4y6O6q28*Kn?Z@wG<$7xtMFjKd#8ngAez6v$h=7^F+_>2sPFQ9?MLQo> zFf&BtWo@-w*nF6ywlFJ*Fr5H+?%oP_E8dkAc4g%?ejCU?zj%^#9>7Ad6C(;%f)EJ?R2HIZB}xQgM8#sha(9_|GYiHTV~lx2oaR}a=GiA| z)ijU2_mkmt-E$H)#1&_NK{zWD*B5|D#txv+e+iS{&+Sjx<|{Ln2z= zUb5vn$K#N(?OU+@ z?6${o%vYSRT%X0XHJ9&!CzA>1pCgQXm*4&g2#QIYUb)@OmUYLy?~8t!xzsZ}DCm;E v|4sEh{~^vlO+SS1#R-4BG9}3C?^bgcNAvh&79I9L*E4v!`njxgN@xNA5g}!2 diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon.png index 4cac2a3aa48cb133acf6da8b69f4a2ae5137fb19..b1510211cfebdd138214c28d1a64dd1b6eb17d35 100644 GIT binary patch delta 3145 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 delta 422 zcmV;X0a^ad7{3FMBYy#gNklLS!NEzS#lbDw zn)?qL+MN6kg7(H}2pps#-6Cuegd!}LFfhm=#rK}?-rEooG~|5`!HRe0@0{~H_k8zq zsoid4ox#@HJpzaTB7oljAWVggksJmoTut%x$^aT8Ijk0QfqwuR*S(<$gb{#9Y@n1$ z;qdIrXsSgH;4Igf76gE5F;_FyHhTjj?b=Of1W>V^^ilIBUCN{mO!Up(pjNRRqjiNk zf$r3*cc)f8Oz!sxPa&7m0w zDG4wIkbsbLsGzV^^u=TR$0ynJ`h@}r(_mTrjUSgV0*C-2fPW3}0V552BVgC$ QxBvhE07*qoM6N<$f)fwK&j0`b diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon_empty.png index 72476b77c00bfc8a3f4e8bec2e28c63144d65c3b..dd4fd594d577aa569314f17abe0db142801c8edd 100644 GIT binary patch delta 3124 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..f3cf6be999d6e55f50d26513c58ddd0bed4a977d GIT binary patch literal 2883 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7563af563a7812db7e7e3884b54287d72b31e73c GIT binary patch literal 2936 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 Tr@;aZ00000NkvXXu0mjf$bOs| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..010224c48eb2dbfe4fd08d8dcfedda1804c8aa26 GIT binary patch literal 3000 zcmV;p3rF;cP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetL{N&sck?Y|iLfh74T!02>dUJQpOnt0(QWD?^KuSWx zqXTr2=?_Fw5mS(HC8i*zKqxJx-TBG*HiYz3cy;3d0000StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetxIRH_M8u z5>z6BtxqIy^neNhLV*7XAm`%ypPc&f=nEUF?Pa7Zsz)ln29UeF8m}^2sR9U+&~=*J z5{DUoK2`uFr>^l-deie!63X-}xASYze)8>QTmvPiuCe5*C;0x#b`2nRaR3i3)?e?S z>(5V2dw9vIE5K)nX5*#?aI&}aZQdtkm4aAuH8To0QaqK;G#fW%Q!ncxjHl8W+qoV9 zo1=7ht5EK{-Xsr!v%@uGfQZdGJ{$X2Rq<7M26M=CjW?L52VcheR;k~M(GB)k`d03pC%26zX4rW-pP SUx4ud0000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9ba53863e8725f6e6fd0b67970dd92370fd4f6 GIT binary patch literal 3107 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 Date: Sun, 28 Apr 2024 07:48:19 +0300 Subject: [PATCH 65/89] Added localization of groups and types: damage, metabolism (#27368) * Added localization of groups and types: damage, metabolism (displayed in the guide book). The text for the health analyzer, weapon damage inspection is now taken from damage prototypes * fix damage tests * fix damage test yml * fix damage test prototypes * Update Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs * Update Content.Shared/Damage/Prototypes/DamageTypePrototype.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Controls/GuideReagentEmbed.xaml.cs | 3 ++- .../UI/HealthAnalyzerWindow.xaml.cs | 4 ++-- .../Tests/Damageable/DamageableTest.cs | 9 +++++++ .../DestructibleTestPrototypes.cs | 8 +++++++ .../ReagentEffectConditions/OrganType.cs | 4 ++-- .../ReagentThreshold.cs | 4 ++-- .../Chemistry/ReagentEffects/AdjustReagent.cs | 4 ++-- .../Chemistry/ReagentEffects/HealthChange.cs | 4 ++-- .../Prototypes/MetabolismGroupPrototype.cs | 8 ++++++- .../Prototypes/MetabolizerTypePrototype.cs | 7 ++++-- .../Damage/Prototypes/DamageGroupPrototype.cs | 6 +++++ .../Damage/Prototypes/DamageTypePrototype.cs | 6 +++++ .../Damage/Systems/DamageExamineSystem.cs | 5 +++- Content.Tests/Shared/DamageTest.cs | 16 +++++++++++++ .../Locale/en-US/damage/damage-groups.ftl | 5 ++++ .../Locale/en-US/damage/damage-types.ftl | 13 ++++++++++ .../en-US/guidebook/chemistry/conditions.ftl | 4 +++- .../components/health-analyzer-component.ftl | 22 ----------------- .../en-US/metabolism/metabolism-groups.ftl | 7 ++++++ .../en-US/metabolism/metabolizer-types.ftl | 11 +++++++++ .../Chemistry/metabolism_groups.yml | 9 ++++++- .../Chemistry/metabolizer_types.yml | 24 +++++++++---------- Resources/Prototypes/Damage/groups.yml | 5 ++++ Resources/Prototypes/Damage/types.yml | 13 ++++++++++ 24 files changed, 150 insertions(+), 51 deletions(-) create mode 100644 Resources/Locale/en-US/damage/damage-groups.ftl create mode 100644 Resources/Locale/en-US/damage/damage-types.ftl create mode 100644 Resources/Locale/en-US/metabolism/metabolism-groups.ftl create mode 100644 Resources/Locale/en-US/metabolism/metabolizer-types.ftl diff --git a/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs b/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs index e2b09386dfb..537494933bc 100644 --- a/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs +++ b/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs @@ -4,6 +4,7 @@ using Content.Client.Guidebook.Richtext; using Content.Client.Message; using Content.Client.UserInterface.ControlExtensions; +using Content.Shared.Body.Prototypes; using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using JetBrains.Annotations; @@ -128,7 +129,7 @@ private void GenerateControl(ReagentPrototype reagent) var groupLabel = new RichTextLabel(); groupLabel.SetMarkup(Loc.GetString("guidebook-reagent-effects-metabolism-group-rate", - ("group", group), ("rate", effect.MetabolismRate))); + ("group", _prototype.Index(group).LocalizedName), ("rate", effect.MetabolismRate))); var descriptionLabel = new RichTextLabel { Margin = new Thickness(25, 0, 10, 0) diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs index 0cb3ad144d7..fcf6d4551fd 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs @@ -139,7 +139,7 @@ private void DrawDiagnosticGroups( var groupTitleText = $"{Loc.GetString( "health-analyzer-window-damage-group-text", - ("damageGroup", Loc.GetString("health-analyzer-window-damage-group-" + damageGroupId)), + ("damageGroup", _prototypes.Index(damageGroupId).LocalizedName), ("amount", damageAmount) )}"; @@ -170,7 +170,7 @@ private void DrawDiagnosticGroups( var damageString = Loc.GetString( "health-analyzer-window-damage-type-text", - ("damageType", Loc.GetString("health-analyzer-window-damage-type-" + type)), + ("damageType", _prototypes.Index(type).LocalizedName), ("amount", typeAmount) ); diff --git a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs index 16744d83dce..c40b8ed286f 100644 --- a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs @@ -19,36 +19,45 @@ public sealed class DamageableTest # Define some damage groups - type: damageType id: TestDamage1 + name: damage-type-blunt - type: damageType id: TestDamage2a + name: damage-type-blunt - type: damageType id: TestDamage2b + name: damage-type-blunt - type: damageType id: TestDamage3a + name: damage-type-blunt - type: damageType id: TestDamage3b + name: damage-type-blunt - type: damageType id: TestDamage3c + name: damage-type-blunt # Define damage Groups with 1,2,3 damage types - type: damageGroup id: TestGroup1 + name: damage-group-brute damageTypes: - TestDamage1 - type: damageGroup id: TestGroup2 + name: damage-group-brute damageTypes: - TestDamage2a - TestDamage2b - type: damageGroup id: TestGroup3 + name: damage-group-brute damageTypes: - TestDamage3a - TestDamage3b diff --git a/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs b/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs index 12292f4652d..7ff92423984 100644 --- a/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs +++ b/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs @@ -12,24 +12,31 @@ public static class DestructibleTestPrototypes public const string DamagePrototypes = $@" - type: damageType id: TestBlunt + name: damage-type-blunt - type: damageType id: TestSlash + name: damage-type-slash - type: damageType id: TestPiercing + name: damage-type-piercing - type: damageType id: TestHeat + name: damage-type-heat - type: damageType id: TestShock + name: damage-type-shock - type: damageType id: TestCold + name: damage-type-cold - type: damageGroup id: TestBrute + name: damage-group-brute damageTypes: - TestBlunt - TestSlash @@ -37,6 +44,7 @@ public static class DestructibleTestPrototypes - type: damageGroup id: TestBurn + name: damage-group-burn damageTypes: - TestHeat - TestShock diff --git a/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs b/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs index 3b7bffb9cff..4ae13b6a6e4 100644 --- a/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs +++ b/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs @@ -1,4 +1,4 @@ -using Content.Server.Body.Components; +using Content.Server.Body.Components; using Content.Shared.Body.Prototypes; using Content.Shared.Chemistry.Reagent; using Robust.Shared.Prototypes; @@ -35,7 +35,7 @@ public override bool Condition(ReagentEffectArgs args) public override string GuidebookExplanation(IPrototypeManager prototype) { return Loc.GetString("reagent-effect-condition-guidebook-organ-type", - ("name", prototype.Index(Type).Name), + ("name", prototype.Index(Type).LocalizedName), ("shouldhave", ShouldHave)); } } diff --git a/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs b/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs index 664569d7be4..6ac1549ab00 100644 --- a/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs +++ b/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Reagent; +using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; @@ -43,7 +43,7 @@ public override string GuidebookExplanation(IPrototypeManager prototype) prototype.TryIndex(Reagent, out reagentProto); return Loc.GetString("reagent-effect-condition-guidebook-reagent-threshold", - ("reagent", reagentProto?.LocalizedName ?? "this reagent"), + ("reagent", reagentProto?.LocalizedName ?? Loc.GetString("reagent-effect-condition-guidebook-this-reagent")), ("max", Max == FixedPoint2.MaxValue ? (float) int.MaxValue : Max.Float()), ("min", Min.Float())); } diff --git a/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs b/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs index e70626f1d3e..16d69edd9aa 100644 --- a/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs +++ b/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Prototypes; +using Content.Shared.Body.Prototypes; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using JetBrains.Annotations; @@ -74,7 +74,7 @@ public override void Effect(ReagentEffectArgs args) return Loc.GetString("reagent-effect-guidebook-adjust-reagent-group", ("chance", Probability), ("deltasign", MathF.Sign(Amount.Float())), - ("group", groupProto.ID), + ("group", groupProto.LocalizedName), ("amount", MathF.Abs(Amount.Float()))); } diff --git a/Content.Server/Chemistry/ReagentEffects/HealthChange.cs b/Content.Server/Chemistry/ReagentEffects/HealthChange.cs index 2a6181c7f35..24880cfd371 100644 --- a/Content.Server/Chemistry/ReagentEffects/HealthChange.cs +++ b/Content.Server/Chemistry/ReagentEffects/HealthChange.cs @@ -74,7 +74,7 @@ protected override string ReagentEffectGuidebookText(IPrototypeManager prototype damages.Add( Loc.GetString("health-change-display", - ("kind", group.ID), + ("kind", group.LocalizedName), ("amount", MathF.Abs(amount.Float())), ("deltasign", sign) )); @@ -96,7 +96,7 @@ protected override string ReagentEffectGuidebookText(IPrototypeManager prototype damages.Add( Loc.GetString("health-change-display", - ("kind", kind), + ("kind", prototype.Index(kind).LocalizedName), ("amount", MathF.Abs(amount.Float())), ("deltasign", sign) )); diff --git a/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs b/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs index 162b5f2d6c2..82f4e70ce0c 100644 --- a/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs +++ b/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Body.Prototypes { @@ -7,5 +7,11 @@ public sealed partial class MetabolismGroupPrototype : IPrototype { [IdDataField] public string ID { get; private set; } = default!; + + [DataField("name", required: true)] + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); } } diff --git a/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs b/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs index c840983ca0c..5273ac722b2 100644 --- a/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs +++ b/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Body.Prototypes { @@ -9,6 +9,9 @@ public sealed partial class MetabolizerTypePrototype : IPrototype public string ID { get; private set; } = default!; [DataField("name", required: true)] - public string Name { get; private set; } = default!; + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); } } diff --git a/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs b/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs index 807f143708c..bb5aea3a38c 100644 --- a/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs +++ b/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs @@ -17,6 +17,12 @@ public sealed partial class DamageGroupPrototype : IPrototype { [IdDataField] public string ID { get; } = default!; + [DataField(required: true)] + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); + [DataField("damageTypes", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] public List DamageTypes { get; private set; } = default!; } diff --git a/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs b/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs index cde7a8617f5..a1ae23ef676 100644 --- a/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs +++ b/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs @@ -11,6 +11,12 @@ public sealed partial class DamageTypePrototype : IPrototype [IdDataField] public string ID { get; private set; } = default!; + [DataField(required: true)] + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); + /// /// The price for each 1% damage reduction in armors /// diff --git a/Content.Shared/Damage/Systems/DamageExamineSystem.cs b/Content.Shared/Damage/Systems/DamageExamineSystem.cs index 8273719110b..fd1f191334f 100644 --- a/Content.Shared/Damage/Systems/DamageExamineSystem.cs +++ b/Content.Shared/Damage/Systems/DamageExamineSystem.cs @@ -1,8 +1,10 @@ using Content.Shared.Damage.Components; using Content.Shared.Damage.Events; +using Content.Shared.Damage.Prototypes; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Verbs; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Damage.Systems; @@ -10,6 +12,7 @@ namespace Content.Shared.Damage.Systems; public sealed class DamageExamineSystem : EntitySystem { [Dependency] private readonly ExamineSystemShared _examine = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; public override void Initialize() { @@ -66,7 +69,7 @@ private FormattedMessage GetDamageExamine(DamageSpecifier damageSpecifier, strin if (damage.Value != FixedPoint2.Zero) { msg.PushNewline(); - msg.AddMarkup(Loc.GetString("damage-value", ("type", damage.Key), ("amount", damage.Value))); + msg.AddMarkup(Loc.GetString("damage-value", ("type", _prototype.Index(damage.Key).LocalizedName), ("amount", damage.Value))); } } diff --git a/Content.Tests/Shared/DamageTest.cs b/Content.Tests/Shared/DamageTest.cs index 11b810bf36a..88beca8841c 100644 --- a/Content.Tests/Shared/DamageTest.cs +++ b/Content.Tests/Shared/DamageTest.cs @@ -168,45 +168,57 @@ public void ModifierSetTest() private string _damagePrototypes = @" - type: damageType id: Blunt + name: damage-type-blunt - type: damageType id: Slash + name: damage-type-slash - type: damageType id: Piercing + name: damage-type-piercing - type: damageType id: Heat + name: damage-type-heat - type: damageType id: Shock + name: damage-type-shock - type: damageType id: Cold + name: damage-type-cold # Poison damage. Generally caused by various reagents being metabolised. - type: damageType id: Poison + name: damage-type-poison - type: damageType id: Radiation + name: damage-type-radiation # Damage due to being unable to breathe. # Represents not enough oxygen (or equivalent) getting to the blood. # Usually healed automatically if entity can breathe - type: damageType id: Asphyxiation + name: damage-type-asphyxiation # Damage representing not having enough blood. # Represents there not enough blood to supply oxygen (or equivalent). - type: damageType id: Bloodloss + name: damage-type-bloodloss - type: damageType id: Cellular + name: damage-type-cellular - type: damageGroup id: Brute + name: damage-group-brute damageTypes: - Blunt - Slash @@ -214,6 +226,7 @@ public void ModifierSetTest() - type: damageGroup id: Burn + name: damage-group-burn damageTypes: - Heat - Shock @@ -225,6 +238,7 @@ public void ModifierSetTest() # bloodloss, not this whole group, unless you have a wonder drug that affects both. - type: damageGroup id: Airloss + name: damage-group-airloss damageTypes: - Asphyxiation - Bloodloss @@ -233,12 +247,14 @@ public void ModifierSetTest() # Though there are probably some radioactive poisons. - type: damageGroup id: Toxin + name: damage-group-toxin damageTypes: - Poison - Radiation - type: damageGroup id: Genetic + name: damage-group-genetic damageTypes: - Cellular diff --git a/Resources/Locale/en-US/damage/damage-groups.ftl b/Resources/Locale/en-US/damage/damage-groups.ftl new file mode 100644 index 00000000000..057a999f1cc --- /dev/null +++ b/Resources/Locale/en-US/damage/damage-groups.ftl @@ -0,0 +1,5 @@ +damage-group-brute = Brute +damage-group-burn = Burn +damage-group-airloss = Airloss +damage-group-toxin = Toxin +damage-group-genetic = Genetic diff --git a/Resources/Locale/en-US/damage/damage-types.ftl b/Resources/Locale/en-US/damage/damage-types.ftl new file mode 100644 index 00000000000..5c3cca156fd --- /dev/null +++ b/Resources/Locale/en-US/damage/damage-types.ftl @@ -0,0 +1,13 @@ +damage-type-asphyxiation = Asphyxiation +damage-type-bloodloss = Bloodloss +damage-type-blunt = Blunt +damage-type-cellular = Cellular +damage-type-caustic = Caustic +damage-type-cold = Cold +damage-type-heat = Heat +damage-type-piercing = Piercing +damage-type-poison = Poison +damage-type-radiation = Radiation +damage-type-shock = Shock +damage-type-slash = Slash +damage-type-structural = Structural diff --git a/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl b/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl index 7748ab9893c..6cbfc13a797 100644 --- a/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl +++ b/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl @@ -1,4 +1,4 @@ -reagent-effect-condition-guidebook-total-damage = +reagent-effect-condition-guidebook-total-damage = { $max -> [2147483648] it has at least {NATURALFIXED($min, 2)} total damage *[other] { $min -> @@ -57,3 +57,5 @@ reagent-effect-condition-guidebook-has-tag = [true] does not have *[false] has } the tag {$tag} + +reagent-effect-condition-guidebook-this-reagent = this reagent diff --git a/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl b/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl index 648db3f4ebd..8460bcc27b0 100644 --- a/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl +++ b/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl @@ -13,26 +13,4 @@ health-analyzer-window-scan-mode-text = Scan Mode: health-analyzer-window-scan-mode-active = ACTIVE health-analyzer-window-scan-mode-inactive = INACTIVE -health-analyzer-window-damage-group-Brute = Brute -health-analyzer-window-damage-type-Blunt = Blunt -health-analyzer-window-damage-type-Slash = Slash -health-analyzer-window-damage-type-Piercing = Piercing - -health-analyzer-window-damage-group-Burn = Burn -health-analyzer-window-damage-type-Heat = Heat -health-analyzer-window-damage-type-Shock = Shock -health-analyzer-window-damage-type-Cold = Cold -health-analyzer-window-damage-type-Caustic = Caustic - -health-analyzer-window-damage-group-Airloss = Airloss -health-analyzer-window-damage-type-Asphyxiation = Asphyxiation -health-analyzer-window-damage-type-Bloodloss = Bloodloss - -health-analyzer-window-damage-group-Toxin = Toxin -health-analyzer-window-damage-type-Poison = Poison -health-analyzer-window-damage-type-Radiation = Radiation - -health-analyzer-window-damage-group-Genetic = Genetic -health-analyzer-window-damage-type-Cellular = Cellular - health-analyzer-window-malnutrition = Severely malnourished diff --git a/Resources/Locale/en-US/metabolism/metabolism-groups.ftl b/Resources/Locale/en-US/metabolism/metabolism-groups.ftl new file mode 100644 index 00000000000..404d0fc7868 --- /dev/null +++ b/Resources/Locale/en-US/metabolism/metabolism-groups.ftl @@ -0,0 +1,7 @@ +metabolism-group-poison = Poison +metabolism-group-medicine = Medicine +metabolism-group-narcotic = Narcotic +metabolism-group-alcohol = Alcohol +metabolism-group-food = Food +metabolism-group-drink = Drink +metabolism-group-gas = Gas diff --git a/Resources/Locale/en-US/metabolism/metabolizer-types.ftl b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl new file mode 100644 index 00000000000..372c5c549e0 --- /dev/null +++ b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl @@ -0,0 +1,11 @@ +metabolizer-type-animal = Animal +metabolizer-type-bloodsucker = Bloodsucker +metabolizer-type-dragon = Dragon +metabolizer-type-human = Human +metabolizer-type-slime = Slime +metabolizer-type-vox = Vox +metabolizer-type-rat = Rat +metabolizer-type-plant = Plant +metabolizer-type-dwarf = Dwarf +metabolizer-type-moth = Moth +metabolizer-type-arachnid = Arachnid diff --git a/Resources/Prototypes/Chemistry/metabolism_groups.yml b/Resources/Prototypes/Chemistry/metabolism_groups.yml index fc59edd81fe..b2035671af0 100644 --- a/Resources/Prototypes/Chemistry/metabolism_groups.yml +++ b/Resources/Prototypes/Chemistry/metabolism_groups.yml @@ -1,22 +1,29 @@ -# Default human metabolism groups. +# Default human metabolism groups. - type: metabolismGroup id: Poison + name: metabolism-group-poison - type: metabolismGroup id: Medicine + name: metabolism-group-medicine - type: metabolismGroup id: Narcotic + name: metabolism-group-narcotic - type: metabolismGroup id: Alcohol + name: metabolism-group-alcohol - type: metabolismGroup id: Food + name: metabolism-group-food - type: metabolismGroup id: Drink + name: metabolism-group-drink # Used for gases that have effects on being inhaled - type: metabolismGroup id: Gas + name: metabolism-group-gas diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index 259387b6d5c..3f7bf05b35e 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -1,46 +1,46 @@ -# If your species wants to metabolize stuff differently, +# If your species wants to metabolize stuff differently, # you'll likely have to tag its metabolizers with something other than Human. - type: metabolizerType id: Animal - name: animal + name: metabolizer-type-animal - type: metabolizerType id: Bloodsucker - name: bloodsucker + name: metabolizer-type-bloodsucker - type: metabolizerType id: Dragon - name: dragon + name: metabolizer-type-dragon - type: metabolizerType id: Human - name: human + name: metabolizer-type-human - type: metabolizerType id: Slime - name: slime + name: metabolizer-type-slime - type: metabolizerType id: Vox - name: vox + name: metabolizer-type-vox - type: metabolizerType id: Rat - name: rat + name: metabolizer-type-rat - type: metabolizerType id: Plant - name: plant + name: metabolizer-type-plant - type: metabolizerType id: Dwarf - name: dwarf + name: metabolizer-type-dwarf - type: metabolizerType id: Moth - name: moth + name: metabolizer-type-moth - type: metabolizerType id: Arachnid - name: arachnid + name: metabolizer-type-arachnid diff --git a/Resources/Prototypes/Damage/groups.yml b/Resources/Prototypes/Damage/groups.yml index 07bfe2edcdd..71e4acdaeaa 100644 --- a/Resources/Prototypes/Damage/groups.yml +++ b/Resources/Prototypes/Damage/groups.yml @@ -1,5 +1,6 @@ - type: damageGroup id: Brute + name: damage-group-brute damageTypes: - Blunt - Slash @@ -7,6 +8,7 @@ - type: damageGroup id: Burn + name: damage-group-burn damageTypes: - Heat - Shock @@ -19,6 +21,7 @@ # bloodloss, not this whole group, unless you have a wonder drug that affects both. - type: damageGroup id: Airloss + name: damage-group-airloss damageTypes: - Asphyxiation - Bloodloss @@ -27,11 +30,13 @@ # Though there are probably some radioactive poisons. - type: damageGroup id: Toxin + name: damage-group-toxin damageTypes: - Poison - Radiation - type: damageGroup id: Genetic + name: damage-group-genetic damageTypes: - Cellular diff --git a/Resources/Prototypes/Damage/types.yml b/Resources/Prototypes/Damage/types.yml index bacaf1f7985..0107da24823 100644 --- a/Resources/Prototypes/Damage/types.yml +++ b/Resources/Prototypes/Damage/types.yml @@ -3,6 +3,7 @@ # Usually healed automatically if entity can breathe - type: damageType id: Asphyxiation + name: damage-type-asphyxiation armorCoefficientPrice: 5 armorFlatPrice: 50 @@ -11,57 +12,68 @@ # Represents there not enough blood to supply oxygen (or equivalent). - type: damageType id: Bloodloss + name: damage-type-bloodloss armorCoefficientPrice: 5 armorFlatPrice: 50 - type: damageType id: Blunt + name: damage-type-blunt armorCoefficientPrice: 2 armorFlatPrice: 10 - type: damageType id: Cellular + name: damage-type-cellular armorCoefficientPrice: 5 armorFlatPrice: 30 - type: damageType id: Caustic + name: damage-type-caustic armorCoefficientPrice: 5 armorFlatPrice: 30 - type: damageType id: Cold + name: damage-type-cold armorCoefficientPrice: 2.5 armorFlatPrice: 20 - type: damageType id: Heat + name: damage-type-heat armorCoefficientPrice: 2.5 armorFlatPrice: 20 - type: damageType id: Piercing + name: damage-type-piercing armorCoefficientPrice: 2 armorFlatPrice: 10 # Poison damage. Generally caused by various reagents being metabolised. - type: damageType id: Poison + name: damage-type-poison armorCoefficientPrice: 10 armorFlatPrice: 60 - type: damageType id: Radiation + name: damage-type-radiation armorCoefficientPrice: 2.5 armorFlatPrice: 16 - type: damageType id: Shock + name: damage-type-shock armorCoefficientPrice: 2.5 armorFlatPrice: 20 - type: damageType id: Slash + name: damage-type-slash armorCoefficientPrice: 2 armorFlatPrice: 10 @@ -69,5 +81,6 @@ # Exclusive for structures such as walls, airlocks and others. - type: damageType id: Structural + name: damage-type-structural armorCoefficientPrice: 1 armorFlatPrice: 1 From afbbcd35fad893ff5e6fd3ee0ff42c8525ce67f4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 04:49:25 +0000 Subject: [PATCH 66/89] 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 ef32cb526e3..4fabc6a2de7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fixed timezone issues with the admin notes window. - type: Fix - id: 5972 - time: '2024-02-20T09:13:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25280 - author: PJB3005 changes: - message: Fixed selection behavior for player lists such as the ban panel or ahelp @@ -3866,3 +3859,11 @@ id: 6471 time: '2024-04-28T04:40:07.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27406 +- author: KrasnoshchekovPavel + changes: + - message: Included damage type/group, metabolism type/group localization for weapon + damage examination and guidebook reagent effects + type: Fix + id: 6472 + time: '2024-04-28T04:48:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27368 From 9f747485e9b9aaab313f59ea15f33533d98b993e Mon Sep 17 00:00:00 2001 From: Keer-Sar <144283718+Keer-Sar@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:04:49 -0400 Subject: [PATCH 67/89] Medal case whitelist (#27428) * Create Medal tag and assign tag to medals * Update Resources/Prototypes/tags.yml --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Entities/Clothing/Neck/medals.yml | 24 +++++++++++++++++++ .../Entities/Objects/Misc/medalcase.yml | 3 +++ Resources/Prototypes/tags.yml | 3 +++ 3 files changed, 30 insertions(+) diff --git a/Resources/Prototypes/Entities/Clothing/Neck/medals.yml b/Resources/Prototypes/Entities/Clothing/Neck/medals.yml index 4d3746aad3f..031fcb99881 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/medals.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/medals.yml @@ -9,6 +9,9 @@ sprite: Clothing/Neck/Medals/bronzeheart.rsi - type: Clothing sprite: Clothing/Neck/Medals/bronzeheart.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -22,6 +25,9 @@ sprite: Clothing/Neck/Medals/gold.rsi - type: StealTarget stealGroup: ClothingNeckGoldmedal + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -33,6 +39,9 @@ sprite: Clothing/Neck/Medals/cargomedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/cargomedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -44,6 +53,9 @@ sprite: Clothing/Neck/Medals/engineermedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/engineermedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -55,6 +67,9 @@ sprite: Clothing/Neck/Medals/medicalmedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/medicalmedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -66,6 +81,9 @@ sprite: Clothing/Neck/Medals/sciencemedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/sciencemedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -77,6 +95,9 @@ sprite: Clothing/Neck/Medals/securitymedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/securitymedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -90,3 +111,6 @@ sprite: Clothing/Neck/Medals/clownmedal.rsi - type: StealTarget stealGroup: ClothingNeckClownmedal + - type: Tag + tags: + - Medal diff --git a/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml b/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml index a421c1e9e99..35000b3fba1 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml @@ -17,6 +17,9 @@ - type: Storage grid: - 0,0,7,1 + whitelist: + tags: + - Medal - type: StorageFill contents: - id: ClothingNeckGoldmedal diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index f544cd95ef0..8238bc2d536 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -863,6 +863,9 @@ - type: Tag id: Meat +- type: Tag + id: Medal + - type: Tag id: Medkit From ee35fb12a7daf24ca0eca5bf05ff42a7ac91b9f5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:05:54 +0000 Subject: [PATCH 68/89] 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 4fabc6a2de7..ba65d0df0e6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fixed selection behavior for player lists such as the ban panel or ahelp - window. - type: Fix - id: 5973 - time: '2024-02-20T09:13:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25248 - author: Tonydatguy changes: - message: Ore Crabs will now take structural damage. @@ -3867,3 +3859,10 @@ id: 6472 time: '2024-04-28T04:48:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27368 +- author: Keer-Sar + changes: + - message: Medal Cases now only hold medals + type: Tweak + id: 6473 + time: '2024-04-28T05:04:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27428 From 783d3a9aa821b91cb3c1de45efc10ebdb6c54054 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:26:55 -0400 Subject: [PATCH 69/89] Actual fix for lockers and deconstruction (#27431) actual actual locker construction fix --- Content.Server/Construction/Conditions/Locked.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Server/Construction/Conditions/Locked.cs b/Content.Server/Construction/Conditions/Locked.cs index fde704b161b..0b8c9118dc7 100644 --- a/Content.Server/Construction/Conditions/Locked.cs +++ b/Content.Server/Construction/Conditions/Locked.cs @@ -15,7 +15,7 @@ public sealed partial class Locked : IGraphCondition public bool Condition(EntityUid uid, IEntityManager entityManager) { if (!entityManager.TryGetComponent(uid, out LockComponent? lockcomp)) - return false; + return true; return lockcomp.Locked == IsLocked; } @@ -25,7 +25,8 @@ public bool DoExamine(ExaminedEvent args) var entMan = IoCManager.Resolve(); var entity = args.Examined; - if (!entMan.TryGetComponent(entity, out LockComponent? lockcomp)) return false; + if (!entMan.TryGetComponent(entity, out LockComponent? lockcomp)) + return true; switch (IsLocked) { From d90cba6eed021c92e557d16f1ab2e8096befba38 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:28:02 +0000 Subject: [PATCH 70/89] 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 ba65d0df0e6..288b2e1ab6d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Tonydatguy - changes: - - message: Ore Crabs will now take structural damage. - type: Tweak - id: 5974 - time: '2024-02-20T10:43:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25390 - author: Golinth changes: - message: The mindshield outline now flashes! @@ -3866,3 +3859,10 @@ id: 6473 time: '2024-04-28T05:04:49.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27428 +- author: EmoGarbage404 + changes: + - message: Lockers can now be deconstructed again. + type: Fix + id: 6474 + time: '2024-04-28T05:26:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27431 From f544c9129870e9c34903cc8f76fdd6b3f1d463a5 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:45:54 +0200 Subject: [PATCH 71/89] Revert Exterminator pending newmed/redesign (#26978) * Reverts Exterminator * Includes commented out parts + sprites * Readd stuff, comment out yaml * Popup ads * review --------- Co-authored-by: metalgearsloth --- .../Systems/AdminVerbSystem.Smites.cs | 25 --- .../Thresholds/Behaviors/PopupBehavior.cs | 2 +- .../TerminatorTargetOverrideComponent.cs | 12 -- .../Systems/TerminatorTargetOverrideSystem.cs | 41 ---- Content.Server/Roles/RoleSystem.cs | 1 - .../Components/TerminatorComponent.cs | 19 -- .../Components/TerminatorTargetComponent.cs | 16 -- .../Terminator/Systems/TerminatorSystem.cs | 66 ------ .../Locale/en-US/administration/smites.ftl | 2 - .../game-rules/rule-terminator.ftl | 14 -- .../ghost/roles/ghost-role-component.ftl | 4 - .../en-US/objectives/conditions/terminate.ftl | 1 - .../Locale/en-US/prototypes/roles/antags.ftl | 3 - .../Prototypes/Body/Parts/terminator.yml | 158 -------------- .../Prototypes/Body/Prototypes/terminator.yml | 85 -------- Resources/Prototypes/Damage/modifier_sets.yml | 38 ---- .../Entities/Markers/Spawners/ghost_roles.yml | 17 -- .../Entities/Mobs/Player/terminator.yml | 203 ------------------ Resources/Prototypes/GameRules/events.yml | 13 -- Resources/Prototypes/GameRules/midround.yml | 20 +- .../Prototypes/Objectives/terminator.yml | 40 ---- .../Prototypes/Roles/Antags/terminator.yml | 6 - Resources/Prototypes/Species/terminator.yml | 110 ---------- 23 files changed, 11 insertions(+), 885 deletions(-) delete mode 100644 Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs delete mode 100644 Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs delete mode 100644 Content.Server/Terminator/Components/TerminatorComponent.cs delete mode 100644 Content.Server/Terminator/Components/TerminatorTargetComponent.cs delete mode 100644 Content.Server/Terminator/Systems/TerminatorSystem.cs delete mode 100644 Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl delete mode 100644 Resources/Locale/en-US/objectives/conditions/terminate.ftl delete mode 100644 Resources/Prototypes/Body/Parts/terminator.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/terminator.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/terminator.yml delete mode 100644 Resources/Prototypes/Objectives/terminator.yml delete mode 100644 Resources/Prototypes/Roles/Antags/terminator.yml delete mode 100644 Resources/Prototypes/Species/terminator.yml diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 042bac39566..bda60e9449a 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -18,7 +18,6 @@ using Content.Server.Storage.EntitySystems; using Content.Server.Tabletop; using Content.Server.Tabletop.Components; -using Content.Server.Terminator.Systems; using Content.Shared.Administration; using Content.Shared.Administration.Components; using Content.Shared.Body.Components; @@ -31,7 +30,6 @@ using Content.Shared.Electrocution; using Content.Shared.Interaction.Components; using Content.Shared.Inventory; -using Content.Shared.Mind.Components; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; @@ -74,7 +72,6 @@ public sealed partial class AdminVerbSystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly TabletopSystem _tabletopSystem = default!; - [Dependency] private readonly TerminatorSystem _terminator = default!; [Dependency] private readonly VomitSystem _vomitSystem = default!; [Dependency] private readonly WeldableSystem _weldableSystem = default!; [Dependency] private readonly SharedContentEyeSystem _eyeSystem = default!; @@ -824,27 +821,5 @@ private void AddSmiteVerbs(GetVerbsEvent args) Impact = LogImpact.Extreme, }; args.Verbs.Add(superBonk); - - Verb terminate = new() - { - Text = "Terminate", - Category = VerbCategory.Smite, - Icon = new SpriteSpecifier.Rsi(new ("Mobs/Species/Terminator/parts.rsi"), "skull_icon"), - Act = () => - { - if (!TryComp(args.Target, out var mindContainer) || mindContainer.Mind == null) - return; - - var coords = Transform(args.Target).Coordinates; - var mindId = mindContainer.Mind.Value; - _terminator.CreateSpawner(coords, mindId); - - _popupSystem.PopupEntity(Loc.GetString("admin-smite-terminate-prompt"), args.Target, - args.Target, PopupType.LargeCaution); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-smite-terminate-description") - }; - args.Verbs.Add(terminate); } } diff --git a/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs index 59589c19aa7..1d7ce24f600 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs @@ -1,6 +1,6 @@ using Content.Shared.Popups; -namespace Content.Server.Destructible.Thresholds.Behaviors; +namespace Content.Server.Destructible.Thresholds.Behaviors; /// /// Shows a popup for everyone. diff --git a/Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs b/Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs deleted file mode 100644 index c66ff55f054..00000000000 --- a/Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Content.Server.Objectives.Systems; - -namespace Content.Server.Objectives.Components; - -/// -/// Sets this objective's target to the exterminator's target override, if it has one. -/// If not it will be random. -/// -[RegisterComponent, Access(typeof(TerminatorTargetOverrideSystem))] -public sealed partial class TerminatorTargetOverrideComponent : Component -{ -} diff --git a/Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs b/Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs deleted file mode 100644 index 0a81c2810ed..00000000000 --- a/Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Server.Objectives.Components; -using Content.Server.Terminator.Components; -using Content.Shared.Mind; -using Content.Shared.Objectives.Components; - -namespace Content.Server.Objectives.Systems; - -/// -/// Handles copying the exterminator's target override to this objective. -/// -public sealed class TerminatorTargetOverrideSystem : EntitySystem -{ - [Dependency] private readonly TargetObjectiveSystem _target = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnAssigned); - } - - private void OnAssigned(EntityUid uid, TerminatorTargetOverrideComponent comp, ref ObjectiveAssignedEvent args) - { - if (args.Mind.OwnedEntity == null) - { - args.Cancelled = true; - return; - } - - var user = args.Mind.OwnedEntity.Value; - if (!TryComp(user, out var terminator)) - { - args.Cancelled = true; - return; - } - - // this exterminator has a target override so set its objective target accordingly - if (terminator.Target != null) - _target.SetTarget(uid, terminator.Target.Value); - } -} diff --git a/Content.Server/Roles/RoleSystem.cs b/Content.Server/Roles/RoleSystem.cs index f7a51773573..c53fa1cf9eb 100644 --- a/Content.Server/Roles/RoleSystem.cs +++ b/Content.Server/Roles/RoleSystem.cs @@ -15,7 +15,6 @@ public override void Initialize() SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); - SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); diff --git a/Content.Server/Terminator/Components/TerminatorComponent.cs b/Content.Server/Terminator/Components/TerminatorComponent.cs deleted file mode 100644 index 9427f95eeda..00000000000 --- a/Content.Server/Terminator/Components/TerminatorComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Server.Terminator.Systems; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Terminator.Components; - -/// -/// Main terminator component, handles the target, if any, and objectives. -/// -[RegisterComponent, Access(typeof(TerminatorSystem))] -public sealed partial class TerminatorComponent : Component -{ - /// - /// Used to force the terminate objective's target. - /// If null it will be a random person. - /// - [DataField("target")] - public EntityUid? Target; -} diff --git a/Content.Server/Terminator/Components/TerminatorTargetComponent.cs b/Content.Server/Terminator/Components/TerminatorTargetComponent.cs deleted file mode 100644 index 786cbd1167b..00000000000 --- a/Content.Server/Terminator/Components/TerminatorTargetComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Server.Terminator.Systems; - -namespace Content.Server.Terminator.Components; - -/// -/// Sets after the ghost role spawns. -/// -[RegisterComponent, Access(typeof(TerminatorSystem))] -public sealed partial class TerminatorTargetComponent : Component -{ - /// - /// The target to set after the ghost role spawns. - /// - [DataField("target")] - public EntityUid? Target; -} diff --git a/Content.Server/Terminator/Systems/TerminatorSystem.cs b/Content.Server/Terminator/Systems/TerminatorSystem.cs deleted file mode 100644 index b6699352779..00000000000 --- a/Content.Server/Terminator/Systems/TerminatorSystem.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Content.Server.Body.Components; -using Content.Server.GenericAntag; -using Content.Server.Ghost.Roles.Events; -using Content.Server.Roles; -using Content.Server.Terminator.Components; -using Content.Shared.Roles; -using Robust.Shared.Map; - -namespace Content.Server.Terminator.Systems; - -public sealed class TerminatorSystem : EntitySystem -{ - [Dependency] private readonly SharedRoleSystem _role = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnSpawned); - SubscribeLocalEvent(OnCreated); - } - - private void OnMapInit(EntityUid uid, TerminatorComponent comp, MapInitEvent args) - { - // cyborg doesn't need to breathe - RemComp(uid); - } - - private void OnSpawned(EntityUid uid, TerminatorComponent comp, GhostRoleSpawnerUsedEvent args) - { - if (!TryComp(args.Spawner, out var target)) - return; - - comp.Target = target.Target; - } - - private void OnCreated(EntityUid uid, TerminatorComponent comp, ref GenericAntagCreatedEvent args) - { - var mindId = args.MindId; - var mind = args.Mind; - - _role.MindAddRole(mindId, new RoleBriefingComponent - { - Briefing = Loc.GetString("terminator-role-briefing") - }, mind); - _role.MindAddRole(mindId, new TerminatorRoleComponent(), mind); - } - - /// - /// Create a spawner at a position and return it. - /// - /// Coordinates to create the spawner at - /// Optional target mind to force the terminator to target - public EntityUid CreateSpawner(EntityCoordinates coords, EntityUid? target) - { - var uid = Spawn("SpawnPointGhostTerminator", coords); - if (target != null) - { - var comp = EnsureComp(uid); - comp.Target = target; - } - - return uid; - } -} diff --git a/Resources/Locale/en-US/administration/smites.ftl b/Resources/Locale/en-US/administration/smites.ftl index ae4e6f72715..ff3e3b09018 100644 --- a/Resources/Locale/en-US/administration/smites.ftl +++ b/Resources/Locale/en-US/administration/smites.ftl @@ -13,7 +13,6 @@ admin-smite-stomach-removal-self = Your stomach feels hollow... admin-smite-run-walk-swap-prompt = You have to press shift to run! admin-smite-super-speed-prompt = You move at mach 0.8! admin-smite-lung-removal-self = You can't breathe! -admin-smite-terminate-prompt = I'll be back ## Smite descriptions @@ -58,7 +57,6 @@ admin-smite-disarm-prone-description = Makes them get disarmed 100% of the time admin-smite-garbage-can-description = Turn them into a garbage bin to emphasize what they remind you of. admin-smite-super-bonk-description = Slams them on every single table on the Station and beyond. admin-smite-super-bonk-lite-description= Slams them on every single table on the Station and beyond. Stops when the target is dead. -admin-smite-terminate-description = Creates a Terminator ghost role with the sole objective of killing them. ## Tricks descriptions diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl deleted file mode 100644 index 41237a5c10d..00000000000 --- a/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl +++ /dev/null @@ -1,14 +0,0 @@ -terminator-round-end-agent-name = nt-800 - -objective-issuer-susnet = [color=#d64119]Susnet[/color] - -terminator-role-greeting = - You are the exterminator, a relentless assassin sent into the past to secure our future. - We need you to eliminate {$target}, {$job}. - Use any means at your disposal to complete the mission. - Glory to Cybersun. - -terminator-role-briefing = Kill the target at all costs. - -terminator-endoskeleton-gib-popup = All the battered flesh falls apart, revealing a titanium endoskeleton! -terminator-endoskeleton-burn-popup = The seared flesh is burned to a crisp, revealing a titanium endoskeleton! diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index d307813c26e..82c51787dcf 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -212,10 +212,6 @@ ghost-role-information-BreadDog-name = BreadDog ghost-role-information-BreadDog-description = You are the chef's favorite child. You're a living bread dog. ghost-role-information-BreadDog-rules = You're an edible dog made of bread. Your task is to find your place in this world where everything wants to eat you. -ghost-role-information-exterminator-name = Exterminator -ghost-role-information-exterminator-description = You been been sent back in time to terminate a target with high importance to the future. -ghost-role-information-exterminator-rules = You are an antagonist and may kill anyone that tries to stop you, but killing the target is always your top priority. - ghost-role-information-space-ninja-name = Space Ninja ghost-role-information-space-ninja-description = Use stealth and deception to sabotage the station. ghost-role-information-space-ninja-rules = You are an elite mercenary of the Spider Clan. You aren't required to follow your objectives, yet your NINJA HONOR demands you try. diff --git a/Resources/Locale/en-US/objectives/conditions/terminate.ftl b/Resources/Locale/en-US/objectives/conditions/terminate.ftl deleted file mode 100644 index c88c7b14dae..00000000000 --- a/Resources/Locale/en-US/objectives/conditions/terminate.ftl +++ /dev/null @@ -1 +0,0 @@ -objective-terminate-title = Terminate {$targetName}, {CAPITALIZE($job)} diff --git a/Resources/Locale/en-US/prototypes/roles/antags.ftl b/Resources/Locale/en-US/prototypes/roles/antags.ftl index d12f70cda25..5c514dba8ec 100644 --- a/Resources/Locale/en-US/prototypes/roles/antags.ftl +++ b/Resources/Locale/en-US/prototypes/roles/antags.ftl @@ -30,6 +30,3 @@ roles-antag-space-ninja-objective = Use your stealth to sabotage the station, no roles-antag-thief-name = Thief roles-antag-thief-objective = Add some NT property to your personal collection without using violence. - -roles-antag-terminator-name = Exterminator -roles-antag-terminator-objective = Kill the target at all costs, the future depends on it. diff --git a/Resources/Prototypes/Body/Parts/terminator.yml b/Resources/Prototypes/Body/Parts/terminator.yml deleted file mode 100644 index 58530da959c..00000000000 --- a/Resources/Prototypes/Body/Parts/terminator.yml +++ /dev/null @@ -1,158 +0,0 @@ -- type: entity - abstract: true - parent: BaseItem - id: PartTerminator - name: nt-800 body part - components: - - type: Sprite - sprite: Mobs/Species/Terminator/parts.rsi - - type: Icon - sprite: Mobs/Species/Terminator/parts.rsi - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Cybernetic - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: Gibbable - - type: StaticPrice - price: 200 - -- type: entity - parent: PartTerminator - id: TorsoTerminator - name: nt-800 torso - components: - - type: Sprite - state: torso_m - - type: Icon - state: torso_m - - type: BodyPart - partType: Torso - -- type: entity - parent: PartTerminator - id: HeadTerminator - name: nt-800 skull - description: Its red eyes have powered down... for now. - components: - - type: Sprite - state: skull_icon - - type: Icon - state: skull_icon - - type: BodyPart - partType: Head - # killing a terminators worth big bucks - - type: StaticPrice - price: 2000 - - type: Tag - tags: - - Head - -- type: entity - parent: PartTerminator - id: LeftArmTerminator - name: left nt-800 arm - components: - - type: Sprite - state: l_arm - - type: Icon - state: l_arm - - type: BodyPart - partType: Arm - symmetry: Left - -- type: entity - parent: PartTerminator - id: RightArmTerminator - name: right nt-800 arm - components: - - type: Sprite - state: r_arm - - type: Icon - state: r_arm - - type: BodyPart - partType: Arm - symmetry: Right - -- type: entity - parent: PartTerminator - id: LeftHandTerminator - name: left nt-800 hand - components: - - type: Sprite - state: l_hand - - type: Icon - state: l_hand - - type: BodyPart - partType: Hand - symmetry: Left - -- type: entity - parent: PartTerminator - id: RightHandTerminator - name: right nt-800 hand - components: - - type: Sprite - state: r_hand - - type: Icon - state: r_hand - - type: BodyPart - partType: Hand - symmetry: Right - -- type: entity - parent: PartTerminator - id: LeftLegTerminator - name: left nt-800 leg - components: - - type: Sprite - state: l_leg - - type: Icon - state: l_leg - - type: BodyPart - partType: Leg - symmetry: Left - - type: MovementBodyPart - -- type: entity - parent: PartTerminator - id: RightLegTerminator - name: right nt-800 leg - components: - - type: Sprite - state: r_leg - - type: Icon - state: r_leg - - type: BodyPart - partType: Leg - symmetry: Right - - type: MovementBodyPart - -- type: entity - parent: PartTerminator - id: LeftFootTerminator - name: left nt-800 foot - components: - - type: Sprite - state: l_foot - - type: Icon - state: l_foot - - type: BodyPart - partType: Foot - symmetry: Left - -- type: entity - parent: PartTerminator - id: RightFootTerminator - name: right nt-800 foot - components: - - type: Sprite - state: r_foot - - type: Icon - state: r_foot - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Prototypes/terminator.yml b/Resources/Prototypes/Body/Prototypes/terminator.yml deleted file mode 100644 index c271a89d869..00000000000 --- a/Resources/Prototypes/Body/Prototypes/terminator.yml +++ /dev/null @@ -1,85 +0,0 @@ -# not quite human... -- type: body - id: TerminatorFlesh - name: exterminator - root: torso - slots: - head: - part: HeadHuman - connections: - - torso - organs: - brain: MobTerminatorEndoskeleton - torso: - part: TorsoHuman - connections: - - left arm - - right arm - - left leg - - right leg - right arm: - part: RightArmHuman - connections: - - right hand - left arm: - part: LeftArmHuman - connections: - - left hand - right hand: - part: RightHandHuman - left hand: - part: LeftHandHuman - right leg: - part: RightLegHuman - connections: - - right foot - left leg: - part: LeftLegHuman - connections: - - left foot - right foot: - part: RightFootHuman - left foot: - part: LeftFootHuman - -# TODO: terminator body parts -- type: body - id: TerminatorEndoskeleton - name: terminatorEndoskeleton - root: torso - slots: - head: - part: HeadTerminator - connections: - - torso - torso: - part: TorsoTerminator - connections: - - left arm - - right arm - - left leg - - right leg - right arm: - part: RightArmTerminator - connections: - - right hand - left arm: - part: LeftArmTerminator - connections: - - left hand - right hand: - part: RightHandTerminator - left hand: - part: LeftHandTerminator - right leg: - part: RightLegTerminator - connections: - - right foot - left leg: - part: LeftLegTerminator - connections: - - left foot - right foot: - part: RightFootTerminator - left foot: - part: LeftFootTerminator diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index 6920dfd747e..0db13274311 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -296,41 +296,3 @@ Cellular: 0.0 Heat: 2.5 Caustic: 0.0 - -# terminator's flesh damage set -- type: damageModifierSet - id: CyberneticFlesh - coefficients: - Blunt: 0.2 - Slash: 0.2 - Piercing: 0.1 - # fire and lasers burn it good - Heat: 1.0 - # zap - Shock: 1.5 - Cold: 0.25 - Caustic: 0.25 - # doesnt have organs to poison - Poison: 0.0 - Cellular: 0.0 - -# terminator's endoskeleton damage set -- type: damageModifierSet - id: Cybernetic - coefficients: - # bonk - Blunt: 1.0 - # alloy too hard to cut or shoot - Slash: 0.0 - Piercing: 0.0 - # no burning anymore - Heat: 0.0 - # zap zap - Shock: 2.5 - Cold: 0.0 - Caustic: 0.0 - Poison: 0.0 - Cellular: 0.0 - flatReductions: - # can't punch the endoskeleton to death - Blunt: 5 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index 727b55eb4ef..eb32b48e79c 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -129,20 +129,3 @@ - state: green - sprite: Objects/Weapons/Melee/energykatana.rsi state: icon - -- type: entity - parent: MarkerBase - id: SpawnPointGhostTerminator - name: terminator spawn point - components: - - type: GhostRole - name: ghost-role-information-exterminator-name - description: ghost-role-information-exterminator-description - rules: ghost-role-information-exterminator-rules - - type: GhostRoleMobSpawner - prototype: MobHumanTerminator - - type: Sprite - layers: - - state: green - - sprite: Mobs/Species/Terminator/parts.rsi - state: full diff --git a/Resources/Prototypes/Entities/Mobs/Player/terminator.yml b/Resources/Prototypes/Entities/Mobs/Player/terminator.yml deleted file mode 100644 index 663838e01ac..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/terminator.yml +++ /dev/null @@ -1,203 +0,0 @@ -# stuff common to flesh and endoskeleton -- type: entity - abstract: true - id: MobTerminatorBase - components: - - type: ZombieImmune # yeah no - - type: FlashImmunity # no brain to brainwash, eyes are robotic - -- type: entity - parent: [MobHuman, MobTerminatorBase] - id: MobHumanTerminator - # uses random name generator dont worry - name: exterminator - components: - - type: Terminator - - type: GenericAntag - rule: Exterminator - # reduced barotrauma damage - - type: Barotrauma - damage: - types: - Blunt: 0.1 - # 4x stamina, faster recovery - - type: Stamina - decay: 6 - cooldown: 1 - critThreshold: 400 - # immune to space drugs, pax, temporary blindness - - type: StatusEffects - allowed: - - Stun - - KnockedDown - - SlowedDown - - Stutter - - Electrocution - - Drunk - - SlurredSpeech - - RatvarianLanguage - - PressureImmunity - - Muted - - ForcedSleep - - StaminaModifier - - type: MobState - allowedStates: - - Alive - - Dead - # endoskeleton need it - - type: TransferMindOnGib - - type: MobThresholds - thresholds: - 0: Alive - # used for health display its not possible to actually fall into crit - 200: Dead - # fire!!!! - - type: Flammable - damage: - types: - Heat: 6.0 - # slightly wider thresholds - - type: Temperature - heatDamageThreshold: 390 - coldDamageThreshold: 240 - # take terminator flesh damage - - type: Damageable - damageModifierSet: CyberneticFlesh - # only organ is an endoskeleton, which is transferred when flesh dies - - type: Body - prototype: TerminatorFlesh - # endoskeleton transformation when either you would get burned to crit or killed by any damage - # you will become an endoskeleton as your last chance to kill the target - - type: Destructible - thresholds: - # the burn trigger is first incase of a bombing or nuking, it might well do over 200 damage but 100 heat is more important - - trigger: - !type:DamageTypeTrigger - damageType: Heat - damage: 100 - behaviors: - - !type:PopupBehavior - popup: terminator-endoskeleton-burn-popup - popupType: LargeCaution - - !type:GibBehavior - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:PopupBehavior - popup: terminator-endoskeleton-gib-popup - popupType: LargeCaution - - !type:GibBehavior - # faster than humans when damaged - - type: SlowOnDamage - speedModifierThresholds: - 70: 0.8 - 90: 0.6 - # arnold is very strong - - type: MeleeWeapon - damage: - types: - Blunt: 10 - Structural: 10 - - type: RandomHumanoidAppearance - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - Unimplantable # no brain to mindshield, no organic body to implant into - -- type: entity - parent: - - BaseMob - - MobCombat - - MobDamageable - - MobSiliconBase - - MobTerminatorBase - id: MobTerminatorEndoskeleton - # you are now valid - name: nt-800 "exterminator" endoskeleton - description: The inner powerhouse of Susnet's infiltrator androids. Ridiculously hard alloy on the inside, unassuming flesh on the outside. - components: - - type: HumanoidAppearance - species: Terminator - - type: MovementSpeedModifier - baseWalkSpeed: 1.5 - baseSprintSpeed: 3.0 - - type: Sprite - sprite: Mobs/Species/Terminator/parts.rsi - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - # he heavy - density: 500 - mask: - - MobMask - layer: - - MobLayer - - type: MobThresholds - thresholds: - 0: Alive - # gibbed at 200 so cant go crit - 200: Dead - # incase some weird stuff happens and the crew adopts a terminator - - type: Repairable - doAfterDelay: 15 - allowSelfRepair: false - - type: Body - prototype: TerminatorEndoskeleton - # lets it sit in the terminator flesh's brain slot - - type: Organ - - type: Brain - - type: TypingIndicator - proto: robot # beep boop borp - - type: Speech - speechSounds: Pai - - type: Damageable - damageModifierSet: Cybernetic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:PlaySoundBehavior - # endoSKELETON - sound: /Audio/Effects/bone_rattle.ogg - # a keepsake or a gift for cargo - - !type:SpawnEntitiesBehavior - spawn: - HeadTerminator: - min: 1 - max: 1 - - !type:DoActsBehavior - acts: [ "Destruction" ] - # for fire spreading around, the endoskeleton cannot burn - - type: Flammable - fireSpread: true - canResistFire: true - damage: - types: - Heat: 0 - # now his only weapon, but it is stronger - - type: MeleeWeapon - damage: - types: - Blunt: 15 - Structural: 5 - - type: Puller - needsHands: false - - type: Prying - pryPowered: true - force: true - - type: Tag - tags: - - DoorBumpOpener - - ShoesRequiredStepTriggerImmune - # let mind transfer on gib work - - MindTransferTarget - # its just metal so no implants - - Unimplantable diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index a5777a7b4d9..e744545fd12 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -283,19 +283,6 @@ lightBreakChancePerSecond: 0.0003 doorToggleChancePerSecond: 0.001 -- type: entity - parent: BaseGameRule - id: TerminatorSpawn - noSpawn: true - components: - - type: StationEvent - weight: 8 - duration: 1 - earliestStart: 30 - minimumPlayers: 20 - - type: RandomSpawnRule - prototype: SpawnPointGhostTerminator - - type: entity id: VentClog parent: BaseGameRule diff --git a/Resources/Prototypes/GameRules/midround.yml b/Resources/Prototypes/GameRules/midround.yml index bb870f6007e..7d074f97e41 100644 --- a/Resources/Prototypes/GameRules/midround.yml +++ b/Resources/Prototypes/GameRules/midround.yml @@ -52,13 +52,13 @@ briefing: sound: "/Audio/Misc/thief_greeting.ogg" -- type: entity - noSpawn: true - parent: BaseGameRule - id: Exterminator - components: - - type: GenericAntagRule - agentName: terminator-round-end-agent-name - objectives: - - TerminateObjective - - ShutDownObjective +#- type: entity +# noSpawn: true +# parent: BaseGameRule +# id: Exterminator +# components: +# - type: GenericAntagRule +# agentName: terminator-round-end-agent-name +# objectives: +# - TerminateObjective +# - ShutDownObjective diff --git a/Resources/Prototypes/Objectives/terminator.yml b/Resources/Prototypes/Objectives/terminator.yml deleted file mode 100644 index 1b569599a7f..00000000000 --- a/Resources/Prototypes/Objectives/terminator.yml +++ /dev/null @@ -1,40 +0,0 @@ -- type: entity - abstract: true - parent: BaseObjective - id: BaseTerminatorObjective - components: - - type: Objective - difficulty: 1 - issuer: susnet - - type: RoleRequirement - roles: - components: - - TerminatorRole - -- type: entity - noSpawn: true - parent: [BaseTerminatorObjective, BaseKillObjective] - id: TerminateObjective - description: Follow your programming and terminate the target. - components: - - type: Objective - unique: false - - type: TargetObjective - title: objective-terminate-title - - type: PickRandomPerson - - type: TerminatorTargetOverride - - type: KillPersonCondition - requireDead: true - -- type: entity - noSpawn: true - parent: BaseTerminatorObjective - id: ShutDownObjective - name: Shut down - description: Once the mission is complete die to prevent our technology from being stolen. - components: - - type: Objective - icon: - sprite: Mobs/Species/Terminator/parts.rsi - state: skull_icon - - type: DieCondition diff --git a/Resources/Prototypes/Roles/Antags/terminator.yml b/Resources/Prototypes/Roles/Antags/terminator.yml deleted file mode 100644 index ef1f176b8de..00000000000 --- a/Resources/Prototypes/Roles/Antags/terminator.yml +++ /dev/null @@ -1,6 +0,0 @@ -- type: antag - id: Terminator - name: roles-antag-terminator-name - antagonist: true - setPreference: false - objective: roles-antag-terminator-objective diff --git a/Resources/Prototypes/Species/terminator.yml b/Resources/Prototypes/Species/terminator.yml deleted file mode 100644 index cfc5a7107ce..00000000000 --- a/Resources/Prototypes/Species/terminator.yml +++ /dev/null @@ -1,110 +0,0 @@ -- type: species - id: Terminator - name: Terminator - roundStart: false - prototype: MobTerminatorEndoskeleton - sprites: MobTerminatorSprites - defaultSkinTone: "#fff9e2" - markingLimits: MobHumanMarkingLimits - maleFirstNames: skeletonNamesFirst - femaleFirstNames: skeletonNamesFirst - dollPrototype: MobSkeletonPersonDummy - skinColoration: TintedHues - -- type: speciesBaseSprites - id: MobTerminatorSprites - sprites: - Head: MobTerminatorHead - Chest: MobTerminatorTorso - LArm: MobTerminatorLArm - RArm: MobTerminatorRArm - LHand: MobTerminatorLHand - RHand: MobTerminatorRHand - LLeg: MobTerminatorLLeg - RLeg: MobTerminatorRLeg - LFoot: MobTerminatorLFoot - RFoot: MobTerminatorRFoot - -- type: humanoidBaseSprite - id: MobTerminatorHead - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: head_m - -- type: humanoidBaseSprite - id: MobTerminatorHeadMale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: head_m - -- type: humanoidBaseSprite - id: MobTerminatorHeadFemale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: head_f - -- type: humanoidBaseSprite - id: MobTerminatorTorso - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: torso_m - -- type: humanoidBaseSprite - id: MobTerminatorTorsoMale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: torso_m - -- type: humanoidBaseSprite - id: MobTerminatorTorsoFemale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: torso_f - -- type: humanoidBaseSprite - id: MobTerminatorLLeg - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_leg - -- type: humanoidBaseSprite - id: MobTerminatorLArm - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_arm - -- type: humanoidBaseSprite - id: MobTerminatorLHand - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_hand - -- type: humanoidBaseSprite - id: MobTerminatorLFoot - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_foot - -- type: humanoidBaseSprite - id: MobTerminatorRLeg - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_leg - -- type: humanoidBaseSprite - id: MobTerminatorRArm - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_arm - -- type: humanoidBaseSprite - id: MobTerminatorRHand - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_hand - -- type: humanoidBaseSprite - id: MobTerminatorRFoot - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_foot From fe8ad485f274a5ee09f8fd04ffdf9e055095a548 Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:46:53 +0200 Subject: [PATCH 72/89] Circuit imprinter now uses less glass (#27310) * moved from 9 sheets of glass to 5 sheets of glass for all circuit recipes * Revert "moved from 9 sheets of glass to 5 sheets of glass for all circuit recipes" This reverts commit 45bb8d40150cddbbe005f5d66d34532b79143f98. * adresses merge conflict * fixed error * parents base computer board to base machine board * Revert "parents base computer board to base machine board" This reverts commit dec3a799a90b4a0cb121b6694ecf65d9a0abd6a3. * other thing was causing errors, guess it's this now --- .../Machine/base_machineboard.yml | 2 +- .../Devices/Circuitboards/computer.yml | 2 +- .../Prototypes/Recipes/Lathes/electronics.yml | 165 +++++++++--------- 3 files changed, 85 insertions(+), 84 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml index 164777284fa..360fc5ffaa3 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml @@ -15,7 +15,7 @@ price: 100 - type: PhysicalComposition materialComposition: - Glass: 400 + Glass: 230 chemicalComposition: Silicon: 20 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml index afbfdadf911..ba91f6bc535 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml @@ -14,7 +14,7 @@ price: 100 - type: PhysicalComposition materialComposition: - Glass: 400 + Glass: 230 chemicalComposition: Silicon: 20 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index a6f3e6cece6..03022b627e1 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -114,7 +114,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -124,7 +124,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -134,7 +134,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -144,7 +144,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: PortableScrubberMachineCircuitBoard @@ -153,7 +153,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -163,7 +163,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -173,7 +173,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CryoPodMachineCircuitboard @@ -182,7 +182,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -192,7 +192,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ChemDispenserMachineCircuitboard @@ -201,7 +201,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -211,7 +211,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -221,7 +221,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -231,7 +231,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AutolatheMachineCircuitboard @@ -240,7 +240,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ProtolatheMachineCircuitboard @@ -249,7 +249,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AutolatheHyperConvectionMachineCircuitboard @@ -258,7 +258,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -268,7 +268,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -278,7 +278,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ExosuitFabricatorMachineCircuitboard @@ -287,7 +287,7 @@ completetime: 5 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: UniformPrinterMachineCircuitboard @@ -296,7 +296,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: VaccinatorMachineCircuitboard @@ -305,7 +305,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -315,7 +315,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -325,7 +325,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -335,7 +335,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -345,7 +345,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AnomalyVesselExperimentalCircuitboard @@ -354,7 +354,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -374,7 +374,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ReagentGrinderMachineCircuitboard @@ -383,7 +383,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: HotplateMachineCircuitboard @@ -392,7 +392,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AnalysisComputerCircuitboard @@ -401,7 +401,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -411,7 +411,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -421,7 +421,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -431,7 +431,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: DawInstrumentMachineCircuitboard @@ -440,7 +440,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: StasisBedMachineCircuitboard @@ -449,7 +449,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -459,7 +459,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CentrifugeMachineCircuitboard @@ -468,7 +468,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MaterialReclaimerMachineCircuitboard @@ -477,7 +477,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: OreProcessorMachineCircuitboard @@ -486,7 +486,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: OreProcessorIndustrialMachineCircuitboard @@ -495,7 +495,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -505,7 +505,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -515,7 +515,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -525,7 +525,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Bananium: 100 - type: latheRecipe @@ -535,7 +535,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Bananium: 100 - type: latheRecipe @@ -545,7 +545,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Bananium: 100 - type: latheRecipe @@ -555,7 +555,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -565,7 +565,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 # Power @@ -603,7 +603,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: PortableGeneratorPacmanMachineCircuitboard @@ -657,7 +657,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SolarTrackerElectronics @@ -675,7 +675,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CloningConsoleComputerCircuitboard @@ -684,7 +684,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MicrowaveMachineCircuitboard @@ -693,7 +693,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ElectricGrillMachineCircuitboard @@ -702,7 +702,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: FatExtractorMachineCircuitboard @@ -711,7 +711,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: FlatpackerMachineCircuitboard @@ -720,7 +720,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -730,7 +730,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceCameraRouterCircuitboard @@ -739,7 +739,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceCameraWirelessRouterCircuitboard @@ -748,7 +748,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceWirelessCameraAnchoredCircuitboard @@ -757,7 +757,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceWirelessCameraMovableCircuitboard @@ -766,7 +766,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceCameraMonitorCircuitboard @@ -775,7 +775,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceWirelessCameraMonitorCircuitboard @@ -784,7 +784,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ComputerTelevisionCircuitboard @@ -793,7 +793,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: EmitterCircuitboard @@ -802,7 +802,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ThrusterMachineCircuitboard @@ -811,7 +811,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: GyroscopeMachineCircuitboard @@ -820,7 +820,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: GasRecyclerMachineCircuitboard @@ -829,7 +829,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SeedExtractorMachineCircuitboard @@ -838,7 +838,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: BoozeDispenserMachineCircuitboard @@ -847,7 +847,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CargoTelepadMachineCircuitboard @@ -856,7 +856,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -866,7 +866,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: TelecomServerCircuitboard @@ -875,7 +875,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MassMediaCircuitboard @@ -884,7 +884,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MiniGravityGeneratorCircuitboard @@ -893,7 +893,7 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -902,7 +902,7 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ShuttleGunSvalinnMachineGunCircuitboard @@ -910,7 +910,8 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + + Glass: 500 - type: latheRecipe id: ShuttleGunPerforatorCircuitboard @@ -918,7 +919,7 @@ completetime: 10 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -927,7 +928,7 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ShuttleGunFriendshipCircuitboard @@ -935,7 +936,7 @@ completetime: 8 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -944,7 +945,7 @@ completetime: 12 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -953,7 +954,7 @@ completetime: 5 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -962,4 +963,4 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 \ No newline at end of file From 47c5f0dba357277b669aa2f3885d6305a1e2765a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:47:59 +0000 Subject: [PATCH 73/89] Automatic changelog update --- Resources/Changelog/Changelog.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 288b2e1ab6d..7943156cded 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: Golinth - changes: - - message: The mindshield outline now flashes! - type: Tweak - id: 5975 - time: '2024-02-20T22:26:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25409 -- author: landwhale - changes: - - message: Resprited Nettles & Death Nettles. - type: Tweak - id: 5976 - time: '2024-02-20T23:58:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25421 - author: takemysoult changes: - message: Explosive Technology changed to tier 2 arsenal and the cost has increased @@ -3866,3 +3852,17 @@ id: 6474 time: '2024-04-28T05:26:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27431 +- author: SlamBamActionman + changes: + - message: "Removed Exterminators pending redesign. \U0001F525\U0001F44D\U0001F525" + type: Remove + id: 6475 + time: '2024-04-28T05:45:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26978 +- author: Boaz1111 + changes: + - message: Circuit imprinter recipes now cost less glass + type: Tweak + id: 6476 + time: '2024-04-28T05:46:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27310 From a8c297a374366b129a9b8c2859ffcae03a38693f Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:49:03 +0200 Subject: [PATCH 74/89] Hyperconvection Circuit Imprinter (#27283) * not done yet * i may be stupid * Update electronics.yml --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Circuitboards/Machine/production.yml | 22 ++++++++ .../Entities/Structures/Machines/lathe.yml | 16 ++++++ .../Prototypes/Recipes/Lathes/electronics.yml | 15 ++++- Resources/Prototypes/Research/industrial.yml | 1 + .../building.png | Bin 0 -> 3419 bytes .../circuit_imprinter_hypercon.rsi/icon.png | Bin 0 -> 797 bytes .../circuit_imprinter_hypercon.rsi/meta.json | 52 ++++++++++++++++++ .../circuit_imprinter_hypercon.rsi/panel.png | Bin 0 -> 244 bytes .../circuit_imprinter_hypercon.rsi/unlit.png | Bin 0 -> 4771 bytes 9 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/building.png create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/icon.png create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/unlit.png diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 63c7908432c..b3fc840aaf5 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -152,6 +152,28 @@ DefaultPrototype: Beaker ExamineName: Glass Beaker +- type: entity + parent: BaseMachineCircuitboard + id: CircuitImprinterHyperConvectionMachineCircuitboard + name: hyper convection circuit imprinter machine board + description: A machine printed circuit board for a hyper convection circuit imprinter. + components: + - type: Sprite + state: science + - type: MachineBoard + prototype: CircuitImprinterHyperConvection + requirements: + MatterBin: 2 + tagRequirements: + GlassBeaker: + Amount: 2 + DefaultPrototype: Beaker + ExamineName: Glass Beaker + Igniter: + Amount: 1 + DefaultPrototype: Igniter + ExamineName: Igniter + - type: entity id: ExosuitFabricatorMachineCircuitboard parent: BaseMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 2a080a85db0..b58544b02b1 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -416,6 +416,7 @@ - PowerComputerCircuitboard - AutolatheHyperConvectionMachineCircuitboard - ProtolatheHyperConvectionMachineCircuitboard + - CircuitImprinterHyperConvectionMachineCircuitboard - FatExtractorMachineCircuitboard - FlatpackerMachineCircuitboard - SheetifierMachineCircuitboard @@ -467,6 +468,21 @@ - RawMaterial - Ingot +- type: entity + id: CircuitImprinterHyperConvection + parent: CircuitImprinter + name: hyper convection circuit imprinter + description: A highly-experimental circuit imprinter that harnesses the power of extreme heat to slowly create objects more cost-effectively. + components: + - type: Sprite + sprite: Structures/Machines/circuit_imprinter_hypercon.rsi + - type: Lathe + materialUseMultiplier: 0.5 + timeMultiplier: 1.5 + - type: LatheHeatProducing + - type: Machine + board: CircuitImprinterHyperConvectionMachineCircuitboard + - type: entity id: ExosuitFabricator parent: BaseLathe diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 03022b627e1..b78703942e1 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -277,8 +277,19 @@ category: Circuitry completetime: 4 materials: - Steel: 100 - Glass: 500 + Steel: 100 + Glass: 500 + +- type: latheRecipe + id: CircuitImprinterHyperConvectionMachineCircuitboard + result: CircuitImprinterHyperConvectionMachineCircuitboard + category: Circuitry + completetime: 4 + materials: + Steel: 100 + Glass: 900 + Gold: 100 + - type: latheRecipe id: ExosuitFabricatorMachineCircuitboard diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index ccc6e9c0f45..4dc60314c47 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -53,6 +53,7 @@ recipeUnlocks: - AutolatheHyperConvectionMachineCircuitboard - ProtolatheHyperConvectionMachineCircuitboard + - CircuitImprinterHyperConvectionMachineCircuitboard - SheetifierMachineCircuitboard - type: technology diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/building.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/building.png new file mode 100644 index 0000000000000000000000000000000000000000..7987532f3933df65625e3ea668b7bff4f0b32a22 GIT binary patch literal 3419 zcma)8cUV(d7QacPC{0C05eUc#4qYiCC5coWP+W=>MOaagCLl-|;!8$BV3a0RzyzfU zN>K!quBbS4rKzYf5D7(Ef{?&VvM)3H?f$X*?YHmy?tSmxbMNn+bMN_`bCOORx0Tu? zzX<>!b@YgpBl0d3HgQp;ztQifjm(Q5wL0t^eP-^CSCGOh#ZGnIxB>Aon3UOOd)tEzjI`OeBU+Jt-M+wPXS+^SGMyf@MRv|K}lMoB=Xqn2}l z+`h^{g*|6W#vS(j67=(9V^zy3%ge(d-=FpL_09Lqf9{$8Ok90s;uq4U&tCu3^Zm|3 z#&$_D8|BU|Zs|To_x7VD0s87`TL30aU~w_BxAN$g8qu$m7R#*r6vf@RbK0)w_O$JP zP1_{y4Bvfj>-Ma9=h>RN%Z8>A91&kx3&z1d&MA?_-XxMJD9Fn@hjB1tND>%wB)Ag8 z`K(PVw}@uQwOx`{X5BF7dw_`*hf>p%9#{QE8(W56eK8GB`5ZZGvogOdsj7S{+nZs# zK+6k;Ey3$K>Maw8byE{@ym##7>@QlJ1IO5S9z$z(jOV7q zr9uZfssg<_=fBhs#B?KkPJ%oG(KL!?KRMqhIAz1?%Ow1xQ2{Fe@I6?aHdF~A zSkQ9JpJ4UUgfZ?Vq#uMe$m$L{bBF3fXwMX?>ONC+I!rjshLVFt~gKa`xW1W7LBG?x(MV zoCKVNnt1D@rBiCe^Ef7r`Na=QGOpw~=`q#~5&zZC$Qn-y1Eo*xC!Nx<=BRT@L)#p- zO;q2Bukwlt|5loBbX{ll{p!ibO#X@&l%cma6~b{`qGNHs3D|jhcLgVEDR#-Jb-)&T z$0uhJm&mgV5?bZ4c_fn9;#h74m1~PI*PJqdRV#j?nu;15(-g}QWX?=y?-=|{ z(O@9oQLeTK)Z|`XDs}l^qY)5Ct=yI3)Y}*d#%s>S^RSFCa(KN`5?CrFEKUqS? z+9|QkQ0v)sZV)EdnWT*fxD(7l)YN0X3bKRU-Cu^DYDAQK(a%hv>TV*q{zw(k>*_CS zq~Diy=Y@u03cE+oH+7|UMW$nOf=%&1H)X?Qs&#uBL(IANNHb~|FLck~kj(w=$SiEu z+#bBnSR~{asm)bre*zJPrOE=yqVmHA+ z78bckFP1Eitai~@-fB10u8Jr9?m60;(rX^7687MNs$kTXr$sZ z80nC4vqR0Kdr6Rgyyas1iAX5@f~|nexHGWO?gHc6bU{zHnZP~RC~&Z92DKQXIN$|unBohnvJp2!xDDu?;mpp#7H~ygaKwDd z{Qq>uai=3h2!f*3>e6;;Dcp+-qRs!2u4NRV-;e^KSP)B~!4Wg$dxE#?qd##xPPww3 z{++e6qzPVd#NWU@L1#v^1aH0NiYXc#FUUJrGJmRqDb;qMOOz7*CP=gxou-&1Eo*!F zB>uDl*h6}?@pYBS&V};YI}UR<1Fs23BUirL7gzLI@wNQGZ-g`iOs{ zzxaF3I}GACPr%1F4w%A9q7zaa`0&X7e(hS2F{-dnCO1;_$?g6eO0IkE8FD>);^S8h ze1()dn=TfIt0-;D`a5a9V<##S?dBuv%K;oW563NHY`~GW>)5xg*tcB` z;{l%wC%Akh>@1g!#DD)8Xq|J1{kQ#(QKlg{#tW^#F3(M-t3N?|%i{~AKswDBvUmXU zIP@TNB0Rpnu@aNZNT`)U0?-^{?FsfKve4R-I=ZD4g<8(^&}M|8Vh_a+{mlc74DSKt zya^D2#V${n>FSp?;ObF^A5ljd(V`RAU@`?Sgwt))EAoqPkQ!Z2l?5;QtT<+-tEN@^|7Ml zU%TS4i@z&r|Dm00thmcq`UV3zPdz`p5=lne7Vq_iD|AZas-w5x%1f4(HQ(J5Y}B)zuwCA-ncd&gC{lmnEf1t3>kpVWu1u8I)`lPe0l?td;KLsZLLG0O z6BjPi%=)Ed7Dt-!d5081$aB>CxK)*f_tk#@ Dl6j~p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/icon.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e56878a7adcd3b8f7998efc6e973a3ba711a8566 GIT binary patch literal 797 zcmV+&1LFLNP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0EE%S%hL89sdY0u@030RbL{?w+Y|M=*g!X#~z+ zxQ>G7&RYzXK>(UM00bNzOyL+CV1d#o0AKu(3P90t>GDkmJzaGMBO?>2C<0(O0AKtO z0-*Q>0Z<$xgMa`2L0OmpYY2eAmTkMCEaE{-R3MZE0gQ~0G;W};38v4TJA)AwI2`~2 zE0!&UvIqlv2UjQy0sjC04^Dje0NerC;$28soIz4j3d$o5NJxk?czfDHc@O~N^YQaT zc@O}00Lb#xlz6bf>^TTui-?GTF*#uQiY-tUCV2k*8I*+-0s(;mVA|U|kb#Sn1I&K& z<_!ZYD;tgvHmfe^+9u3x`~l|}~e5ZJJO z1DFOy0Vtl*k|V+VZ{L4_X?y_YbM*KX5D>shfB5hLOoIS8pSXKPqa;9IUr2P23pQ`w z08YH1sK7>pLgM7Htzf&sgrc&+e^@qxDWU`rG6SyzK$5Vaq7?u|0n7ndD8=b8gz^fK+%DY zkpVmxfE)p&{)>rALj(u_PhxacUS=o6SWMmZ?xOwous z815dv&!Cs2&+zNvUxw*rz6?jNzk|!e#9=hD882TwXL$Pf8r{ty^J bfPn!3_rFb(m7|jU00000NkvXXu0mjf@}x*> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json new file mode 100644 index 00000000000..faa9a362b4a --- /dev/null +++ b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json @@ -0,0 +1,52 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Piksqu for ss14, based on the circuit imprinter sprite taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "panel" + }, + { + "name": "unlit" + }, + { + "name": "building", + "delays": [ + [ + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.18 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/panel.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c369c734fec49931f352c25324996cff93b6f4 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJg`O^sArbD$DG~_>EDn4#?y*Wp zX*)3G%EfzKd3@TfUpw!OY)FhJjsTxnV=Ij3rCLKK9PbHiC=X88?T XfNTyR27yb#lR=cHtDnm{r-UW|*AG^P literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/unlit.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9e240fbc1d85b37332327522d4669f57d00e57 GIT binary patch literal 4771 zcmeHKX;c$g77ijHsE7*cV2dFxBWfj;jVuz`!V)9_0TmeqE0xMZ$U;((fN0}NBkhV} z3%KCe(kO0>Ev}%lIl?F^(6$P#f-It<4l3=zVO|0%p6NfHGyRVwmAty|-tXS~z58zE zrH6_FM%y{t5eS6QfapPbxHAXu`JBO>uI#6Z;QG*U$zM#Ph}7!fln zqy&QT-t*nUGtIL`ZD=bzn3XzxeYviO+SYBK{QIgaqNg(`%)t5s$qxEa{B0SvHkI~O zrF}IoEhh$SaV-~au?TBJnwY87oXMaKHjtI zWKrTjp4R`~VW9Cfvnt27`UaA8+p8^>vTO=26zSL-M7D3HTb&Ck@$mMFuIO0pWMu3< z+JWWU%zo#5=}ej|D*XicwPQ;PCFY)GhjRA3?ihd3>iV8r(cL@kUb(&R+^6q(ps$=8 zdwoPg$;^bD>&NqA${dvPF}2mVv~#A%<*#jtte>&~DR-G1mhUraS?0LWM;IME_n3bw-u*k=fZ1%%cU$TiG-63pujt&b&zBT&wVEY3t&` z^G4m9XRR+Pl#fV8dF($cHti0Jt@y#|x>Mir_E2T>Oo%xeVkw(~j!vo0&p*yHbT%zG zu`X?tho`@bd&d1w^-JV?6ey}p9 z?y1}mdosImx|}D%sg|&Py4QmV!{*APYYv77UAzWKPr->BXt{M2akV7twH?F;0V{D$ z$ia*UQ{zWwxtx8~wPWPS#+;TC{YpPoA^MX>+(usJy?Je8+S{@@E0?D=7Sno7mHLJFBl&dA7Wt zp>u1Qy>2^du}Hpcxo6MR-WLtCgGEL`-tgKFkJ(epyl#?f3+LTA3c9n$9ADgd3%Sphm)q%fF^YE)!Iq7h?c zqe=@p9)aNDY1AU962pmNOr}utNL?37NkoN&M_R%Z!a}VtCRYR|>#*=-Q3RT-L^%?Y z=X^U4BNqUuFdQKoRdH%P*T^H8ak*e@5>rS-vkI={ks^hmL|=^#BQnSgG7R|{6^S&` zd^@6tP9o)o@%;xNz#Wey$8jx}LNOQ&WCNY7(a9)O4u?a5X%rd_0veD$NsS{$NUfh{ zg6PNKV|rAl(BcY>nrOmA#F_-0MY+@TA}b0yjnlN0^oyUM6?tt8K$UIl))By z+%FM;3+ZDeOF<_bmVq;J^B|VP@xAJNv4V) zsQGX#zW=U&3&bhRQ$(VVAnr|$`Q2;1N(cRpgzhKf3R3mHl2>R z)1(laMP)(^CXAUz?hqgzx!>ll<4FJ1-8E7w{TTwo> zs{zhTH2#UNfwlM(Jpkw-Ctt)R9*i!y6iq5crZ2i z7i0j(nIpu-G2kd)(KJDVtko#&^t6~2MzIhE`5CncA{&AlbYyS%k8WyAg literal 0 HcmV?d00001 From 5c817ddfc13eb5133fb9a6e60d49766523140d8e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:50:09 +0000 Subject: [PATCH 75/89] 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 7943156cded..5abe4abe99d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: takemysoult - changes: - - message: Explosive Technology changed to tier 2 arsenal and the cost has increased - to 10 000 - type: Tweak - id: 5977 - time: '2024-02-21T00:56:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25397 - author: Callmore changes: - message: Shoving other people is now more consistent. @@ -3866,3 +3858,10 @@ id: 6476 time: '2024-04-28T05:46:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27310 +- author: Piksqu & Boaz1111 + changes: + - message: Added the hyperconvection circuit imprinter + type: Add + id: 6477 + time: '2024-04-28T05:49:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27283 From faa7f3461cec072e2023af3d1a93d647d66f4f78 Mon Sep 17 00:00:00 2001 From: exincore Date: Sun, 28 Apr 2024 01:12:45 -0500 Subject: [PATCH 76/89] feat(fax): Fax machines print, copy, and send paper labels (#25979) * feat(fax): Client fax file-print parses and stores label * feat(fax): Fax machines print, copy, and send paper labels * style(Fax): Comments and formatting * feat(fax): Make fax admin logging more consistent and clear * refactor(fax): Replace ternary with a simpler null coalescing * refactor(fax): Make FaxSystem Send method signature consistent with Copy, PrintFile * refactor(fax): Read entire file and process later instead of peeking first * refactor(fax): Remove local variables only used for style * style(fax): Fix some nearby style errors * fix(fax): Undo an inaccurate change to admin log formatting * refactor(fax): Separate `firstLine` variable * fix(fax): Use Environment.NewLine * bienvenidos --------- Co-authored-by: metalgearsloth --- Content.Client/Fax/UI/FaxBoundUi.cs | 23 ++++++++- Content.Server/Fax/AdminUI/AdminFaxEui.cs | 2 +- Content.Server/Fax/FaxConstants.cs | 1 + Content.Server/Fax/FaxSystem.cs | 51 ++++++++++++++----- Content.Server/Nuke/NukeCodePaperSystem.cs | 1 + .../Fax/Components/FaxMachineComponent.cs | 6 ++- Content.Shared/Fax/SharedFax.cs | 5 +- 7 files changed, 72 insertions(+), 17 deletions(-) diff --git a/Content.Client/Fax/UI/FaxBoundUi.cs b/Content.Client/Fax/UI/FaxBoundUi.cs index 9b57595d7b4..a95066a3b58 100644 --- a/Content.Client/Fax/UI/FaxBoundUi.cs +++ b/Content.Client/Fax/UI/FaxBoundUi.cs @@ -40,7 +40,7 @@ private async void OnFileButtonPressed() { if (_dialogIsOpen) return; - + _dialogIsOpen = true; var filters = new FileDialogFilters(new FileDialogFilters.Group("txt")); await using var file = await _fileDialogManager.OpenFile(filters); @@ -52,8 +52,27 @@ private async void OnFileButtonPressed() } using var reader = new StreamReader(file); + + var firstLine = await reader.ReadLineAsync(); + string? label = null; var content = await reader.ReadToEndAsync(); - SendMessage(new FaxFileMessage(content[..Math.Min(content.Length, FaxFileMessageValidation.MaxContentSize)], _window.OfficePaper)); + + if (firstLine is { }) + { + if (firstLine.StartsWith('#')) + { + label = firstLine[1..].Trim(); + } + else + { + content = firstLine + "\n" + content; + } + } + + SendMessage(new FaxFileMessage( + label?[..Math.Min(label.Length, FaxFileMessageValidation.MaxLabelSize)], + content[..Math.Min(content.Length, FaxFileMessageValidation.MaxContentSize)], + _window.OfficePaper)); } private void OnSendButtonPressed() diff --git a/Content.Server/Fax/AdminUI/AdminFaxEui.cs b/Content.Server/Fax/AdminUI/AdminFaxEui.cs index 5153e621956..452fc593d95 100644 --- a/Content.Server/Fax/AdminUI/AdminFaxEui.cs +++ b/Content.Server/Fax/AdminUI/AdminFaxEui.cs @@ -55,7 +55,7 @@ public override void HandleMessage(EuiMessageBase msg) } case AdminFaxEuiMsg.Send sendData: { - var printout = new FaxPrintout(sendData.Content, sendData.Title, null, sendData.StampState, + var printout = new FaxPrintout(sendData.Content, sendData.Title, null, null, sendData.StampState, new() { new StampDisplayInfo { StampedName = sendData.From, StampedColor = sendData.StampColor } }); _faxSystem.Receive(_entityManager.GetEntity(sendData.Target), printout); break; diff --git a/Content.Server/Fax/FaxConstants.cs b/Content.Server/Fax/FaxConstants.cs index 102510bd46e..24ed7cbcf32 100644 --- a/Content.Server/Fax/FaxConstants.cs +++ b/Content.Server/Fax/FaxConstants.cs @@ -23,6 +23,7 @@ public static class FaxConstants public const string FaxNameData = "fax_data_name"; public const string FaxPaperNameData = "fax_data_title"; + public const string FaxPaperLabelData = "fax_data_label"; public const string FaxPaperPrototypeData = "fax_data_prototype"; public const string FaxPaperContentData = "fax_data_content"; public const string FaxPaperStampStateData = "fax_data_stamp_state"; diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index c21e0db20cc..e86dbca4a13 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -4,6 +4,7 @@ using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; +using Content.Server.Labels; using Content.Server.Paper; using Content.Server.Popups; using Content.Server.Power.Components; @@ -19,6 +20,7 @@ using Content.Shared.Fax.Systems; using Content.Shared.Fax.Components; using Content.Shared.Interaction; +using Content.Shared.Labels.Components; using Content.Shared.Mobs.Components; using Content.Shared.Paper; using Robust.Server.GameObjects; @@ -39,6 +41,7 @@ public sealed class FaxSystem : EntitySystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private readonly PaperSystem _paperSystem = default!; + [Dependency] private readonly LabelSystem _labelSystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly ToolSystem _toolSystem = default!; [Dependency] private readonly QuickDialogSystem _quickDialog = default!; @@ -240,7 +243,7 @@ private void OnInteractUsing(EntityUid uid, FaxMachineComponent component, Inter } _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.User):user} renamed {ToPrettyString(uid)} from \"{component.FaxName}\" to \"{newName}\""); + $"{ToPrettyString(args.User):user} renamed {ToPrettyString(uid):tool} from \"{component.FaxName}\" to \"{newName}\""); component.FaxName = newName; _popupSystem.PopupEntity(Loc.GetString("fax-machine-popup-name-set"), uid); UpdateUserInterface(uid, component); @@ -292,11 +295,12 @@ private void OnPacketReceived(EntityUid uid, FaxMachineComponent component, Devi !args.Data.TryGetValue(FaxConstants.FaxPaperContentData, out string? content)) return; + args.Data.TryGetValue(FaxConstants.FaxPaperLabelData, out string? label); args.Data.TryGetValue(FaxConstants.FaxPaperStampStateData, out string? stampState); args.Data.TryGetValue(FaxConstants.FaxPaperStampedByData, out List? stampedBy); args.Data.TryGetValue(FaxConstants.FaxPaperPrototypeData, out string? prototypeId); - var printout = new FaxPrintout(content, name, prototypeId, stampState, stampedBy); + var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy); Receive(uid, printout, args.SenderAddress); break; @@ -311,6 +315,7 @@ private void OnToggleInterface(EntityUid uid, FaxMachineComponent component, Aft private void OnFileButtonPressed(EntityUid uid, FaxMachineComponent component, FaxFileMessage args) { + args.Label = args.Label?[..Math.Min(args.Label.Length, FaxFileMessageValidation.MaxLabelSize)]; args.Content = args.Content[..Math.Min(args.Content.Length, FaxFileMessageValidation.MaxContentSize)]; PrintFile(uid, component, args); } @@ -328,7 +333,7 @@ private void OnSendButtonPressed(EntityUid uid, FaxMachineComponent component, F if (HasComp(component.PaperSlot.Item)) _faxecute.Faxecute(uid, component); /// when button pressed it will hurt the mob. else - Send(uid, component, args.Actor); + Send(uid, component, args); } private void OnRefreshButtonPressed(EntityUid uid, FaxMachineComponent component, FaxRefreshMessage args) @@ -425,16 +430,20 @@ public void PrintFile(EntityUid uid, FaxMachineComponent component, FaxFileMessa else prototype = DefaultPaperPrototypeId; - var name = Loc.GetString("fax-machine-printed-paper-name"); + var name = Loc.GetString("fax-machine-printed-paper-name"); - var printout = new FaxPrintout(args.Content, name, prototype); + var printout = new FaxPrintout(args.Content, name, args.Label, prototype); component.PrintingQueue.Enqueue(printout); component.SendTimeoutRemaining += component.SendTimeout; UpdateUserInterface(uid, component); + // Unfortunately, since a paper entity does not yet exist, we have to emulate what LabelSystem will do. + var nameWithLabel = (args.Label is { } label) ? $"{name} ({label})" : name; _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.Actor):actor} added print job to {ToPrettyString(uid):tool} with text: {args.Content}"); + $"{ToPrettyString(args.Actor):actor} " + + $"added print job to \"{component.FaxName}\" {ToPrettyString(uid):tool} " + + $"of {nameWithLabel}: {args.Content}"); } /// @@ -454,9 +463,12 @@ public void Copy(EntityUid uid, FaxMachineComponent? component, FaxCopyMessage a !TryComp(sendEntity, out var paper)) return; + TryComp(sendEntity, out var labelComponent); + // TODO: See comment in 'Send()' about not being able to copy whole entities var printout = new FaxPrintout(paper.Content, - metadata.EntityName, + labelComponent?.OriginalName ?? metadata.EntityName, + labelComponent?.CurrentLabel, metadata.EntityPrototype?.ID ?? DefaultPaperPrototypeId, paper.StampState, paper.StampedBy); @@ -470,14 +482,16 @@ public void Copy(EntityUid uid, FaxMachineComponent? component, FaxCopyMessage a UpdateUserInterface(uid, component); _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.Actor):actor} added copy job to {ToPrettyString(uid):tool} with text: {ToPrettyString(component.PaperSlot.Item):subject}"); + $"{ToPrettyString(args.Actor):actor} " + + $"added copy job to \"{component.FaxName}\" {ToPrettyString(uid):tool} " + + $"of {ToPrettyString(sendEntity):subject}: {printout.Content}"); } /// /// Sends message to addressee if paper is set and a known fax is selected /// A timeout is set after sending, which is shared by the copy button. /// - public void Send(EntityUid uid, FaxMachineComponent? component = null, EntityUid? sender = null) + public void Send(EntityUid uid, FaxMachineComponent? component, FaxSendMessage args) { if (!Resolve(uid, ref component)) return; @@ -496,10 +510,13 @@ public void Send(EntityUid uid, FaxMachineComponent? component = null, EntityUid !TryComp(sendEntity, out var paper)) return; + TryComp(sendEntity, out var labelComponent); + var payload = new NetworkPayload() { { DeviceNetworkConstants.Command, FaxConstants.FaxPrintCommand }, - { FaxConstants.FaxPaperNameData, metadata.EntityName }, + { FaxConstants.FaxPaperNameData, labelComponent?.OriginalName ?? metadata.EntityName }, + { FaxConstants.FaxPaperLabelData, labelComponent?.CurrentLabel }, { FaxConstants.FaxPaperContentData, paper.Content }, }; @@ -520,7 +537,11 @@ public void Send(EntityUid uid, FaxMachineComponent? component = null, EntityUid _deviceNetworkSystem.QueuePacket(uid, component.DestinationFaxAddress, payload); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"{(sender != null ? ToPrettyString(sender.Value) : "Unknown"):user} sent fax from \"{component.FaxName}\" {ToPrettyString(uid)} to {faxName} ({component.DestinationFaxAddress}): {paper.Content}"); + _adminLogger.Add(LogType.Action, LogImpact.Low, + $"{ToPrettyString(args.Actor):actor} " + + $"sent fax from \"{component.FaxName}\" {ToPrettyString(uid):tool} " + + $"to \"{faxName}\" ({component.DestinationFaxAddress}) " + + $"of {ToPrettyString(sendEntity):subject}: {paper.Content}"); component.SendTimeoutRemaining += component.SendTimeout; @@ -576,7 +597,13 @@ private void SpawnPaperFromQueue(EntityUid uid, FaxMachineComponent? component = } _metaData.SetEntityName(printed, printout.Name); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"\"{component.FaxName}\" {ToPrettyString(uid)} printed {ToPrettyString(printed)}: {printout.Content}"); + + if (printout.Label is { } label) + { + _labelSystem.Label(printed, label); + } + + _adminLogger.Add(LogType.Action, LogImpact.Low, $"\"{component.FaxName}\" {ToPrettyString(uid):tool} printed {ToPrettyString(printed):subject}: {printout.Content}"); } private void NotifyAdmins(string faxName) diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index c1725536e7c..8025e2bbd51 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -66,6 +66,7 @@ public bool SendNukeCodes(EntityUid station) paperContent, Loc.GetString("nuke-codes-fax-paper-name"), null, + null, "paper_stamp-centcom", new List { diff --git a/Content.Shared/Fax/Components/FaxMachineComponent.cs b/Content.Shared/Fax/Components/FaxMachineComponent.cs index ee9459f5084..6664ce023dd 100644 --- a/Content.Shared/Fax/Components/FaxMachineComponent.cs +++ b/Content.Shared/Fax/Components/FaxMachineComponent.cs @@ -135,6 +135,9 @@ public sealed partial class FaxPrintout [DataField(required: true)] public string Name { get; private set; } = default!; + [DataField] + public string? Label { get; private set; } + [DataField(required: true)] public string Content { get; private set; } = default!; @@ -151,10 +154,11 @@ private FaxPrintout() { } - public FaxPrintout(string content, string name, string? prototypeId = null, string? stampState = null, List? stampedBy = null) + public FaxPrintout(string content, string name, string? label = null, string? prototypeId = null, string? stampState = null, List? stampedBy = null) { Content = content; Name = name; + Label = label; PrototypeId = prototypeId ?? ""; StampState = stampState; StampedBy = stampedBy ?? new List(); diff --git a/Content.Shared/Fax/SharedFax.cs b/Content.Shared/Fax/SharedFax.cs index 15674aef7e5..55c928fa95d 100644 --- a/Content.Shared/Fax/SharedFax.cs +++ b/Content.Shared/Fax/SharedFax.cs @@ -37,11 +37,13 @@ public FaxUiState(string deviceName, [Serializable, NetSerializable] public sealed class FaxFileMessage : BoundUserInterfaceMessage { + public string? Label; public string Content; public bool OfficePaper; - public FaxFileMessage(string content, bool officePaper) + public FaxFileMessage(string? label, string content, bool officePaper) { + Label = label; Content = content; OfficePaper = officePaper; } @@ -49,6 +51,7 @@ public FaxFileMessage(string content, bool officePaper) public static class FaxFileMessageValidation { + public const int MaxLabelSize = 50; // parity with Content.Server.Labels.Components.HandLabelerComponent.MaxLabelChars public const int MaxContentSize = 10000; } From cbb2554c94a612e007337a2debf7dde83a1ff310 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 06:13:51 +0000 Subject: [PATCH 77/89] 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 5abe4abe99d..6374cd9e3e3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Callmore - changes: - - message: Shoving other people is now more consistent. - type: Fix - id: 5978 - time: '2024-02-21T04:01:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25353 - author: Ubaser changes: - message: A new UI theme, "Ashen", is now available to select in the options menu. @@ -3865,3 +3858,13 @@ id: 6477 time: '2024-04-28T05:49:03.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27283 +- author: exincore + changes: + - message: Fax machines now copy the labels attached to papers. + type: Add + - message: Fax machine "Print File" functionality now applies the first line of + the file as a label when it begins with `#`. + type: Add + id: 6478 + time: '2024-04-28T06:12:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25979 From db200faf11fc6f3ed3572394c51cc8d011fcb76f Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 23:22:10 -0700 Subject: [PATCH 78/89] yml fix for locker deconstruction (#27430) Actual fix for lockers and deconstruction Co-authored-by: Plykiya --- .../Storage/Closets/Lockers/base_structurelockers.yml | 7 +------ .../Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml | 2 -- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml index 783bec3ba0d..7d7bc94bb32 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml @@ -45,7 +45,7 @@ min: 1 max: 2 - type: Construction - graph: ClosetSteel + graph: ClosetSteelSecure node: done containers: - entity_storage @@ -66,8 +66,3 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: Construction - graph: ClosetSteelSecure - node: done - containers: - - entity_storage diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml index 7e450513afe..e72c56ff44c 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml @@ -19,8 +19,6 @@ conditions: - !type:StorageWelded welded: false - - !type:Locked - locked: false completed: - !type:SpawnPrototype prototype: SheetSteel1 From 0efcd30ac6d58fe0a24565c3ddd102277997fbba Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 28 Apr 2024 00:11:46 -0700 Subject: [PATCH 79/89] Hardsuits, EVA suits, Firesuits, and others now protect your feet from Glass Shards (#26764) * Hardsuits and softsuits count as having shoes for step triggers * Add softsuit tag prototype * Change to suitEVA tag * Get rid of softsuit tag, found suitEVA tag * Full pass of ShoesRequiredStepTriggerImmune * Adds check to outerClothing for ShoesRequiredStepTriggerImmune * return * fuck Dionas * Convert to comp, space dragons immune as well * Merge conflict * Merge conflict * fix leftover tags * empty spaces * turns out the dragon didn't need it * minor optimization * Add access for system, add comp to baseShoes, check slotflags for every slot besides pockets * fix * fuck it we ball --------- Co-authored-by: Plykiya Co-authored-by: metalgearsloth --- .../Inventory/InventorySystem.Relay.cs | 5 ++ .../Inventory/InventorySystem.Slots.cs | 25 +++++++++ Content.Shared/Inventory/SlotFlags.cs | 2 + .../ClothingRequiredStepTriggerComponent.cs | 10 ++++ ...thingRequiredStepTriggerImmuneComponent.cs | 16 ++++++ .../ShoesRequiredStepTriggerComponent.cs | 11 ---- .../Components/StepTriggerImmuneComponent.cs | 9 +++ .../Systems/ShoesRequiredStepTriggerSystem.cs | 41 -------------- .../Systems/StepTriggerImmuneSystem.cs | 37 ++++++++++++ .../Weapons/Reflect/ReflectSystem.cs | 6 +- .../en-US/step-trigger/shoes-required.ftl | 2 +- .../Entities/Clothing/OuterClothing/armor.yml | 9 +++ .../OuterClothing/base_clothingouter.yml | 4 ++ .../Entities/Clothing/OuterClothing/suits.yml | 56 ++++++++++++------- .../Clothing/Shoes/base_clothingshoes.yml | 1 + .../Mobs/Cyborgs/base_borg_chassis.yml | 2 +- .../Entities/Mobs/NPCs/elemental.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 2 +- .../Entities/Objects/Devices/mousetrap.yml | 2 +- .../Prototypes/Entities/Objects/Fun/dice.yml | 2 +- .../Entities/Objects/Materials/shards.yml | 2 +- Resources/Prototypes/tags.yml | 3 - 22 files changed, 164 insertions(+), 86 deletions(-) create mode 100644 Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs create mode 100644 Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs delete mode 100644 Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs create mode 100644 Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs delete mode 100644 Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs create mode 100644 Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index b418a1d4162..6bd65622f17 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -123,6 +123,11 @@ public InventoryRelayedEvent(TEvent args) } } +public interface IClothingSlots +{ + SlotFlags Slots { get; } +} + /// /// Events that should be relayed to inventory slots should implement this interface. /// diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index c634b68e041..1da44155b95 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -27,6 +27,31 @@ private void ShutdownSlots() .RemoveHandler(HandleViewVariablesSlots, ListViewVariablesSlots); } + /// + /// Tries to find an entity in the specified slot with the specified component. + /// + public bool TryGetInventoryEntity(Entity entity, out EntityUid targetUid) + where T : IComponent, IClothingSlots + { + if (TryGetContainerSlotEnumerator(entity.Owner, out var containerSlotEnumerator)) + { + while (containerSlotEnumerator.NextItem(out var item, out var slot)) + { + if (!TryComp(item, out var required)) + continue; + + if ((((IClothingSlots) required).Slots & slot.SlotFlags) == 0x0) + continue; + + targetUid = item; + return true; + } + } + + targetUid = EntityUid.Invalid; + return false; + } + protected virtual void OnInit(EntityUid uid, InventoryComponent component, ComponentInit args) { if (!_prototypeManager.TryIndex(component.TemplateId, out InventoryTemplatePrototype? invTemplate)) diff --git a/Content.Shared/Inventory/SlotFlags.cs b/Content.Shared/Inventory/SlotFlags.cs index 8d5e33e3486..90971d1670b 100644 --- a/Content.Shared/Inventory/SlotFlags.cs +++ b/Content.Shared/Inventory/SlotFlags.cs @@ -27,4 +27,6 @@ public enum SlotFlags FEET = 1 << 14, SUITSTORAGE = 1 << 15, All = ~NONE, + + WITHOUT_POCKET = All & ~POCKET } diff --git a/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs new file mode 100644 index 00000000000..9efd78d0825 --- /dev/null +++ b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Inventory; +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + +/// +/// This is used for marking step trigger events that require the user to wear shoes, such as for glass shards. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ClothingRequiredStepTriggerComponent : Component; diff --git a/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs new file mode 100644 index 00000000000..dc76207828c --- /dev/null +++ b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs @@ -0,0 +1,16 @@ +using Content.Shared.Inventory; +using Content.Shared.StepTrigger.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + +/// +/// This is used for cancelling step trigger events if the user is wearing clothing in a valid slot. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(StepTriggerImmuneSystem))] +public sealed partial class ClothingRequiredStepTriggerImmuneComponent : Component, IClothingSlots +{ + [DataField] + public SlotFlags Slots { get; set; } = SlotFlags.FEET; +} diff --git a/Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs b/Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs deleted file mode 100644 index dd95b94a7ef..00000000000 --- a/Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.StepTrigger.Components; - -/// -/// This is used for cancelling step trigger events if the user is wearing shoes, such as for glass shards. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class ShoesRequiredStepTriggerComponent : Component -{ -} diff --git a/Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs b/Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs new file mode 100644 index 00000000000..74e10bafcea --- /dev/null +++ b/Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + +/// +/// Grants the attached entity to step triggers. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class StepTriggerImmuneComponent : Component; diff --git a/Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs b/Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs deleted file mode 100644 index 5fc9140dfd0..00000000000 --- a/Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Shared.Examine; -using Content.Shared.Inventory; -using Content.Shared.StepTrigger.Components; -using Content.Shared.Tag; - -namespace Content.Shared.StepTrigger.Systems; - -public sealed class ShoesRequiredStepTriggerSystem : EntitySystem -{ - [Dependency] private readonly InventorySystem _inventory = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnStepTriggerAttempt); - SubscribeLocalEvent(OnExamined); - } - - private void OnStepTriggerAttempt(EntityUid uid, ShoesRequiredStepTriggerComponent component, ref StepTriggerAttemptEvent args) - { - if (_tagSystem.HasTag(args.Tripper, "ShoesRequiredStepTriggerImmune")) - { - args.Cancelled = true; - return; - } - - if (!TryComp(args.Tripper, out var inventory)) - return; - - if (_inventory.TryGetSlotEntity(args.Tripper, "shoes", out _, inventory)) - { - args.Cancelled = true; - } - } - - private void OnExamined(EntityUid uid, ShoesRequiredStepTriggerComponent component, ExaminedEvent args) - { - args.PushMarkup(Loc.GetString("shoes-required-step-trigger-examine")); - } -} diff --git a/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs b/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs new file mode 100644 index 00000000000..ca72a20ae9c --- /dev/null +++ b/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs @@ -0,0 +1,37 @@ +using Content.Shared.Examine; +using Content.Shared.Inventory; +using Content.Shared.StepTrigger.Components; +using Content.Shared.Tag; + +namespace Content.Shared.StepTrigger.Systems; + +public sealed class StepTriggerImmuneSystem : EntitySystem +{ + [Dependency] private readonly InventorySystem _inventory = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnStepTriggerAttempt); + SubscribeLocalEvent(OnStepTriggerClothingAttempt); + SubscribeLocalEvent(OnExamined); + } + + private void OnStepTriggerAttempt(Entity ent, ref StepTriggerAttemptEvent args) + { + args.Cancelled = true; + } + + private void OnStepTriggerClothingAttempt(EntityUid uid, ClothingRequiredStepTriggerComponent component, ref StepTriggerAttemptEvent args) + { + if (_inventory.TryGetInventoryEntity(args.Tripper, out _)) + { + args.Cancelled = true; + } + } + + private void OnExamined(EntityUid uid, ClothingRequiredStepTriggerComponent component, ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("clothing-required-step-trigger-examine")); + } +} diff --git a/Content.Shared/Weapons/Reflect/ReflectSystem.cs b/Content.Shared/Weapons/Reflect/ReflectSystem.cs index 4a7c2f6b6a7..014b3cfe1ff 100644 --- a/Content.Shared/Weapons/Reflect/ReflectSystem.cs +++ b/Content.Shared/Weapons/Reflect/ReflectSystem.cs @@ -57,7 +57,7 @@ private void OnReflectUserHitscan(EntityUid uid, ReflectUserComponent component, if (args.Reflected) return; - foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.All & ~SlotFlags.POCKET)) + foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.WITHOUT_POCKET)) { if (!TryReflectHitscan(uid, ent, args.Shooter, args.SourceItem, args.Direction, out var dir)) continue; @@ -70,7 +70,7 @@ private void OnReflectUserHitscan(EntityUid uid, ReflectUserComponent component, private void OnReflectUserCollide(EntityUid uid, ReflectUserComponent component, ref ProjectileReflectAttemptEvent args) { - foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.All & ~SlotFlags.POCKET)) + foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.WITHOUT_POCKET)) { if (!TryReflectProjectile(uid, ent, args.ProjUid)) continue; @@ -222,7 +222,7 @@ private void OnToggleReflect(EntityUid uid, ReflectComponent comp, ref ItemToggl /// private void RefreshReflectUser(EntityUid user) { - foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(user, SlotFlags.All & ~SlotFlags.POCKET)) + foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(user, SlotFlags.WITHOUT_POCKET)) { if (!HasComp(ent)) continue; diff --git a/Resources/Locale/en-US/step-trigger/shoes-required.ftl b/Resources/Locale/en-US/step-trigger/shoes-required.ftl index 8c1369a49f4..07a4b8a84f8 100644 --- a/Resources/Locale/en-US/step-trigger/shoes-required.ftl +++ b/Resources/Locale/en-US/step-trigger/shoes-required.ftl @@ -1 +1 @@ -shoes-required-step-trigger-examine = You probably shouldn't step on this barefoot. +clothing-required-step-trigger-examine = You probably shouldn't step on this barefoot. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 9a1f1427402..ecc4156affa 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -138,6 +138,8 @@ Radiation: 0 Caustic: 0.75 - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterArmorHeavy @@ -234,6 +236,8 @@ - type: ExplosionResistance damageCoefficient: 0.5 - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBaseLarge @@ -260,6 +264,8 @@ - type: Construction graph: BoneArmor node: armor + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBaseLarge @@ -279,3 +285,6 @@ Piercing: 0.6 Heat: 0.5 - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET + diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index e5067e84c51..16b287917b5 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -134,6 +134,8 @@ tags: - Hardsuit - WhitelistChameleon + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity abstract: true @@ -152,6 +154,8 @@ - type: HeldSpeedModifier - type: Item size: Huge + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 5e82959c4e2..cc6f0131adf 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -25,6 +25,8 @@ tags: - Hardsuit - WhitelistChameleon + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterSuitBomb @@ -63,6 +65,8 @@ sprintModifier: 0.7 - type: HeldSpeedModifier - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBaseLarge @@ -70,26 +74,28 @@ name: atmos fire suit description: An expensive firesuit that protects against even the most deadly of station fires. Designed to protect even if the wearer is set aflame. components: - - type: Sprite - sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi - - type: Clothing - sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi - - type: PressureProtection - highPressureMultiplier: 0.02 - lowPressureMultiplier: 1000 - - type: TemperatureProtection - coefficient: 0.001 - - type: Armor - modifiers: - coefficients: - Slash: 0.9 - Heat: 0.3 - Cold: 0.2 - - type: ClothingSpeedModifier - walkModifier: 0.8 - sprintModifier: 0.8 - - type: HeldSpeedModifier - - type: GroupExamine + - type: Sprite + sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi + - type: PressureProtection + highPressureMultiplier: 0.02 + lowPressureMultiplier: 1000 + - type: TemperatureProtection + coefficient: 0.001 + - type: Armor + modifiers: + coefficients: + Slash: 0.9 + Heat: 0.3 + Cold: 0.2 + - type: ClothingSpeedModifier + walkModifier: 0.8 + sprintModifier: 0.8 + - type: HeldSpeedModifier + - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: [ClothingOuterBaseLarge, GeigerCounterClothing] @@ -113,7 +119,9 @@ - type: ContainerContainer containers: toggleable-clothing: !type:ContainerSlot {} - + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET + - type: entity parent: ClothingOuterBaseLarge id: ClothingOuterSuitSpaceNinja @@ -164,6 +172,8 @@ sprite: Clothing/OuterClothing/Suits/chicken.rsi - type: Clothing sprite: Clothing/OuterClothing/Suits/chicken.rsi + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase @@ -189,6 +199,8 @@ - type: ContainerContainer containers: toggleable-clothing: !type:ContainerSlot {} + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase @@ -210,6 +222,8 @@ - type: Construction graph: ClothingOuterSuitIan node: suit + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml index 1119d5cda74..a0f56966bb5 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml @@ -23,6 +23,7 @@ tags: - ClothMade - WhitelistChameleon + - type: ClothingRequiredStepTriggerImmune - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 27a19ab8994..cb846c7ddec 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -205,13 +205,13 @@ - type: StandingState - type: Tag tags: - - ShoesRequiredStepTriggerImmune - DoorBumpOpener - CanPilot - type: Emoting - type: GuideHelp guides: - Cyborgs + - type: StepTriggerImmune - type: entity id: BaseBorgChassisNT diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index c2380c40278..58d30ccfc06 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -44,7 +44,6 @@ - type: Tag tags: - DoorBumpOpener - - ShoesRequiredStepTriggerImmune - type: MobState allowedStates: - Alive @@ -73,6 +72,8 @@ - type: InputMover - type: MobMover - type: ZombieImmune + - type: ClothingRequiredStepTriggerImmune + slots: All - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index c808ed2d210..7a36046a0fd 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -66,7 +66,6 @@ - type: Tag tags: - DoorBumpOpener - - ShoesRequiredStepTriggerImmune - type: MobState allowedStates: - Alive @@ -107,6 +106,7 @@ - type: TypingIndicator proto: robot - type: ZombieImmune + - type: StepTriggerImmune - type: entity parent: MobSiliconBase diff --git a/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml b/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml index c3bd74dd751..d97cae2e6d6 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml @@ -15,7 +15,7 @@ requiredTriggeredSpeed: 0 - type: Mousetrap - type: TriggerOnStepTrigger - - type: ShoesRequiredStepTrigger + - type: ClothingRequiredStepTrigger - type: DamageUserOnTrigger damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Fun/dice.yml b/Resources/Prototypes/Entities/Objects/Fun/dice.yml index 852a1c2699c..0b534f08798 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/dice.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/dice.yml @@ -121,7 +121,7 @@ - type: StepTrigger intersectRatio: 0.2 - type: TriggerOnStepTrigger - - type: ShoesRequiredStepTrigger + - type: ClothingRequiredStepTrigger - type: Slippery slipSound: path: /Audio/Effects/glass_step.ogg diff --git a/Resources/Prototypes/Entities/Objects/Materials/shards.yml b/Resources/Prototypes/Entities/Objects/Materials/shards.yml index 834a2e7ff0a..dfd02b6fccf 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/shards.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/shards.yml @@ -63,7 +63,7 @@ acts: [ "Destruction" ] - type: StepTrigger intersectRatio: 0.2 - - type: ShoesRequiredStepTrigger + - type: ClothingRequiredStepTrigger - type: Slippery slipSound: path: /Audio/Effects/glass_step.ogg diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 8238bc2d536..f4477a8c85d 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1104,9 +1104,6 @@ - type: Tag id: Shiv -- type: Tag - id: ShoesRequiredStepTriggerImmune - - type: Tag id: Shovel From 18fa8bf633c73b7d0914194a4ddd5fed1cf93f0c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 07:12:52 +0000 Subject: [PATCH 80/89] 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 6374cd9e3e3..34e2e15da0c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: A new UI theme, "Ashen", is now available to select in the options menu. - type: Add - id: 5979 - time: '2024-02-21T05:26:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25408 - author: Holinka4ever changes: - message: Sunglasses were removed from ClothesMate @@ -3868,3 +3861,11 @@ id: 6478 time: '2024-04-28T06:12:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25979 +- author: Plykiya + changes: + - message: Hardsuits, EVA suits, firesuits and other things now protect your feet + from dangerous glass shards. + type: Tweak + id: 6479 + time: '2024-04-28T07:11:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26764 From 1efdf4a40a434e52a7c909e496c0675fef406ee4 Mon Sep 17 00:00:00 2001 From: FungiFellow <151778459+FungiFellow@users.noreply.github.com> Date: Sun, 28 Apr 2024 03:23:28 -0500 Subject: [PATCH 81/89] Bows fit on Airtank Slot (#27433) Update bow.yml --- Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml index db98c6eabe9..32b4fc6075a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml @@ -12,7 +12,8 @@ - type: Clothing quickEquip: false slots: - - Back + - Back + - suitStorage - type: Wieldable wieldSound: path: /Audio/Items/bow_pull.ogg From ab66ae9ab0fb163ece839f28b01a007f53221544 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 08:24:34 +0000 Subject: [PATCH 82/89] 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 34e2e15da0c..9cbf590a52d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Holinka4ever - changes: - - message: Sunglasses were removed from ClothesMate - type: Remove - id: 5980 - time: '2024-02-21T06:11:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25221 - author: Errant changes: - message: Rotten food is now less lethal to eat, and has a high chance to induce @@ -3869,3 +3862,10 @@ id: 6479 time: '2024-04-28T07:11:46.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26764 +- author: FungiFellow + changes: + - message: Bows now fit in Exosuit slot. + type: Tweak + id: 6480 + time: '2024-04-28T08:23:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27433 From f3e9db014194d7517bb1ae1188c71553bb49b893 Mon Sep 17 00:00:00 2001 From: osjarw <62134478+osjarw@users.noreply.github.com> Date: Sun, 28 Apr 2024 12:28:16 +0300 Subject: [PATCH 83/89] DelayedForce and Rapid anom behaviors fixed (#27435) --- Resources/Prototypes/Anomaly/behaviours.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Anomaly/behaviours.yml b/Resources/Prototypes/Anomaly/behaviours.yml index aa9ad2f90d3..dea1ddb69c3 100644 --- a/Resources/Prototypes/Anomaly/behaviours.yml +++ b/Resources/Prototypes/Anomaly/behaviours.yml @@ -58,14 +58,14 @@ id: DelayedForce earnPointModifier: 1.15 description: anomaly-behavior-delayed-force - pulseFrequencyModifier: 0.5 + pulseFrequencyModifier: 2 pulsePowerModifier: 2 - type: anomalyBehavior id: Rapid earnPointModifier: 1.15 description: anomaly-behavior-rapid - pulseFrequencyModifier: 2 + pulseFrequencyModifier: 0.5 pulsePowerModifier: 0.5 - type: anomalyBehavior From 5476daf64ec8ac16b3e600d3cacfeb2fff3ee6d4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 09:29:21 +0000 Subject: [PATCH 84/89] 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 9cbf590a52d..994ff32851e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Errant - changes: - - message: Rotten food is now less lethal to eat, and has a high chance to induce - vomiting. - type: Tweak - id: 5981 - time: '2024-02-21T06:12:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25418 - author: EdenTheLiznerd changes: - message: Deathnettles no longer penetrate hardsuit armor @@ -3869,3 +3861,10 @@ id: 6480 time: '2024-04-28T08:23:28.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27433 +- author: osjarw + changes: + - message: Fixed some anomaly behaviours pulsing at wrong rates. + type: Fix + id: 6481 + time: '2024-04-28T09:28:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27435 From 008935f6ec6f9cd5c56e943a5ce02c1f54cec893 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:07:36 +1000 Subject: [PATCH 85/89] New plant mutation: Pyrotton (#27200) * WIP * sprites n stuff * flavour * maybe fix * add stack * fix parent --- .../Locale/en-US/flavors/flavor-profiles.ftl | 1 + Resources/Locale/en-US/seeds/seeds.ftl | 2 + .../Objects/Consumable/Food/produce.yml | 33 +++++++++++ .../Entities/Objects/Materials/materials.yml | 54 +++++++++++++++++- .../Objects/Specific/Hydroponics/seeds.yml | 10 ++++ Resources/Prototypes/Flavors/flavors.yml | 7 ++- Resources/Prototypes/Hydroponics/seeds.yml | 28 +++++++++ .../Prototypes/Stacks/Materials/materials.yml | 10 +++- .../Objects/Materials/materials.rsi/meta.json | 11 +++- .../Materials/materials.rsi/pyrotton.png | Bin 0 -> 1311 bytes .../Materials/materials.rsi/pyrotton_2.png | Bin 0 -> 1394 bytes .../Materials/materials.rsi/pyrotton_3.png | Bin 0 -> 1450 bytes .../Hydroponics/pyrotton.rsi/dead.png | Bin 0 -> 1267 bytes .../Hydroponics/pyrotton.rsi/harvest.png | Bin 0 -> 1514 bytes .../Hydroponics/pyrotton.rsi/meta.json | 32 +++++++++++ .../Hydroponics/pyrotton.rsi/produce.png | Bin 0 -> 1456 bytes .../Hydroponics/pyrotton.rsi/seed.png | Bin 0 -> 1385 bytes .../Hydroponics/pyrotton.rsi/stage-1.png | Bin 0 -> 1132 bytes .../Hydroponics/pyrotton.rsi/stage-2.png | Bin 0 -> 1219 bytes .../Hydroponics/pyrotton.rsi/stage-3.png | Bin 0 -> 1295 bytes 20 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton_2.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton_3.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/dead.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/harvest.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/produce.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/seed.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-1.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-2.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-3.png diff --git a/Resources/Locale/en-US/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/flavors/flavor-profiles.ftl index 41b575b7d63..f861624fb65 100644 --- a/Resources/Locale/en-US/flavors/flavor-profiles.ftl +++ b/Resources/Locale/en-US/flavors/flavor-profiles.ftl @@ -168,6 +168,7 @@ flavor-complex-light = like a light gone out flavor-complex-profits = like profits flavor-complex-fishops = like the dreaded fishops flavor-complex-violets = like violets +flavor-complex-pyrotton = like a burning mouth flavor-complex-mothballs = like mothballs flavor-complex-paint-thinner = like paint thinner diff --git a/Resources/Locale/en-US/seeds/seeds.ftl b/Resources/Locale/en-US/seeds/seeds.ftl index bff317a7e67..4a125b17242 100644 --- a/Resources/Locale/en-US/seeds/seeds.ftl +++ b/Resources/Locale/en-US/seeds/seeds.ftl @@ -113,3 +113,5 @@ seeds-pumpkin-name = pumpkin seeds-pumpkin-display-name = pumpkins seeds-cotton-name = cotton seeds-cotton-display-name = cotton plant +seeds-pyrotton-name = pyrotton +seeds-pyrotton-display-name = pyrotton plant diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index 302c0d98b66..1bd895829bd 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -1869,3 +1869,36 @@ tags: - ClothMade - CottonBoll + +- type: entity + name: pyrotton boll + description: This will probably set you on fire. + id: PyrottonBol + parent: FoodProduceBase + components: + - type: Sprite + sprite: Objects/Specific/Hydroponics/pyrotton.rsi + - type: FlavorProfile + flavors: + - pyrotton + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Phlogiston + Quantity: 5 + - type: Log + spawnedPrototype: MaterialPyrotton1 + spawnCount: 2 + - type: Produce + seedId: pyrotton + - type: Tag + tags: + - ClothMade + - CottonBoll + - type: Extractable + grindableSolutionName: food diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index d11df5d94e8..f4ac9e7ee14 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -419,6 +419,58 @@ - type: Stack count: 1 +- type: entity + parent: MaterialBase + id: MaterialPyrotton + name: pyrotton + suffix: Full + components: + - type: Stack + stackType: Pyrotton + baseLayer: base + layerStates: + - pyrotton + - pyrotton_2 + - pyrotton_3 + - type: Sprite + state: pyrotton_3 + layers: + - state: pyrotton_3 + map: ["base"] + - type: Appearance + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Phlogiston + Quantity: 5 + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fiber + Quantity: 3 + - ReagentId: Phlogiston + Quantity: 3 + - type: Tag + tags: + - ClothMade + - RawMaterial + +- type: entity + parent: MaterialPyrotton + id: MaterialPyrotton1 + suffix: Single + components: + - type: Sprite + state: pyrotton + - type: Stack + count: 1 + - type: entity parent: MaterialBase id: MaterialBananium @@ -589,4 +641,4 @@ materialComposition: Gunpowder: 100 - type: Item - size: Tiny \ No newline at end of file + size: Tiny diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index 0a084dc2463..6e5adac65b3 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -581,3 +581,13 @@ seedId: cotton - type: Sprite sprite: Objects/Specific/Hydroponics/cotton.rsi + +- type: entity + parent: SeedBase + name: packet of pyrotton seeds + id: PyrottonSeeds + components: + - type: Seed + seedId: pyrotton + - type: Sprite + sprite: Objects/Specific/Hydroponics/pyrotton.rsi diff --git a/Resources/Prototypes/Flavors/flavors.yml b/Resources/Prototypes/Flavors/flavors.yml index 25ed9d33720..47a1bc71aa6 100644 --- a/Resources/Prototypes/Flavors/flavors.yml +++ b/Resources/Prototypes/Flavors/flavors.yml @@ -1059,6 +1059,11 @@ flavorType: Complex description: flavor-complex-violets +- type: flavor + id: pyrotton + flavorType: Complex + description: flavor-complex-pyrotton + - type: flavor id: mothballs flavorType: Complex @@ -1067,4 +1072,4 @@ - type: flavor id: paintthinner flavorType: Complex - description: flavor-complex-paint-thinner + description: flavor-complex-paint-thinner \ No newline at end of file diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index 053300b9863..c2a5e943b16 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -1520,6 +1520,8 @@ packetPrototype: CottonSeeds productPrototypes: - CottonBol + mutationPrototypes: + - pyrotton lifespan: 25 maturation: 8 production: 3 @@ -1534,3 +1536,29 @@ Max: 10 PotencyDivisor: 20 +- type: seed + id: pyrotton + name: seeds-pyrotton-name + noun: seeds-noun-seeds + displayName: seeds-pyrotton-display-name + plantRsi: Objects/Specific/Hydroponics/pyrotton.rsi + packetPrototype: PyrottonSeeds + productPrototypes: + - PyrottonBol + lifespan: 25 + maturation: 8 + production: 3 + yield: 2 + potency: 5 + idealLight: 8 + growthStages: 3 + waterConsumption: 0.80 + chemicals: + Fiber: + Min: 5 + Max: 10 + PotencyDivisor: 20 + Phlogiston: + Min: 4 + Max: 8 + PotencyDivisor: 30 diff --git a/Resources/Prototypes/Stacks/Materials/materials.yml b/Resources/Prototypes/Stacks/Materials/materials.yml index d20bb2f3473..cc963dde59a 100644 --- a/Resources/Prototypes/Stacks/Materials/materials.yml +++ b/Resources/Prototypes/Stacks/Materials/materials.yml @@ -54,6 +54,14 @@ maxCount: 30 itemSize: 1 +- type: stack + id: Pyrotton + name: pyrotton + icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: pyrotton } + spawn: MaterialPyrotton1 + maxCount: 30 + itemSize: 1 + - type: stack id: Bananium name: bananium @@ -92,4 +100,4 @@ icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile } spawn: MaterialGunpowder maxCount: 60 - itemSize: 1 \ No newline at end of file + itemSize: 1 diff --git a/Resources/Textures/Objects/Materials/materials.rsi/meta.json b/Resources/Textures/Objects/Materials/materials.rsi/meta.json index f0307208e92..78f497c0cda 100644 --- a/Resources/Textures/Objects/Materials/materials.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/materials.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 , bear pelt remade by Alekshhh, wood sprite modified by MisterMecky, wood_2 and wood_3 made by MisterMecky based on wood sprite, cardboard sprites made by MisterMecky, bananium, bananium_1 and peel made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 , bear pelt remade by Alekshhh, wood sprite modified by MisterMecky, wood_2 and wood_3 made by MisterMecky based on wood sprite, cardboard sprites made by MisterMecky, bananium, bananium_1 and peel made by brainfood1183 (github) for ss14. Pyrotton sprites are drawn by Ubaser, using the cotton material sprites as a base.", "size": { "x": 32, "y": 32 @@ -66,6 +66,15 @@ { "name": "cotton_3" }, + { + "name": "pyrotton" + }, + { + "name": "pyrotton_2" + }, + { + "name": "pyrotton_3" + }, { "name": "diamond" }, diff --git a/Resources/Textures/Objects/Materials/materials.rsi/pyrotton.png b/Resources/Textures/Objects/Materials/materials.rsi/pyrotton.png new file mode 100644 index 0000000000000000000000000000000000000000..daa6701c39d5b74c3d003e2604a184e0f6c35b1b GIT binary patch literal 1311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9O*2L4rF(iWXZRl;@CIgYZ65mH^)u8wTA50-haW97b_EAjDo zP-^>8fy=CV`CnPh%!{HjJ+_ss!ZV#YvzZvY&sho{2rOCcwm4gx>C+PJMUSQg6{QFT z_8!+dQfPCMKa53X4%^lAUOSgJ%}LW=omf$J!KL@(mM1Wx_^9#(>-thfAEJgfFPPIBWY^>x`jT zw3s^6GR1E0c-B7$!xf^vFMKmnXWHAgM)ZK`*2(|Z^dEP>^K*I0X_jBXa*LlzOgl9} uCH{Z`&&pM+3^V`8t#1fFp#4FftA;UUcg8kp$XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9Ow%yakF(iWXZK${3VFLl#fbSZj=?{2L2A-1CirDbJNqWm8o&t8g z2|5;x=?=XS$`ALMe{}IXaXe1xW>9kavzzbteq14VQaM}!1UE9h`}*R?>|5KW%symX zW;%UFm-ffG=WCKa|4rUsuW4R7?dZDPi6-+K+XPm-_@AqI)FI|D>D3ptBo#C1hd;MR zEBejp-2CN^jH(0wZqb$V%Y$SUl3w>ai=Nt4vZjrr&uLEOBbFZ$f`Lp^&Ux5w&v__O z8(`ni^VokM_j=pkYO|PEaa(Pfbor^Ap68l#6PpFB!oKTwutz*QlqUOmO<2Qh&lP;f z^(v)KYCP%IuM>FQsy9)1uU5l?WtmojHH?aPvz_aV8xs4POw#)w-Bi$25cEL0h6g<(;RipUXO@geCy?=H4d& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Materials/materials.rsi/pyrotton_3.png b/Resources/Textures/Objects/Materials/materials.rsi/pyrotton_3.png new file mode 100644 index 0000000000000000000000000000000000000000..072ba2c6d1412d74431f1bf893c0800861faaf2c GIT binary patch literal 1450 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9OcE6{KV@L$&+fYZp!v+E|0_9V>%s;e!(R|9w!FR{<1GCmW2UWXC zG8K&Z4!u=wht90o8|d-&h@)-62e018cfX!{Q^Blsw2R5LanS)M);q5^Kh`hH(Goko z{JoB7$4}88RxWl0Kc4Ngw-@ccYIJ|+UY)4#C)fmo7qKs|UzjSaaH49ru%SRSZ^8e! z_aCIso4C0k>#Wj(qw8E|E$>|;@0cWd%CU9VI@zlNj+#Ft)8{GJx4Vcjwi;h((A6&K zvCMeK;AY)b{r%2n`9&d%$`11R7L`?Y>v67`tIVeKCSrGeWBr8FHwq$-TWsd~V8FQb zaN+bdZU#a>pQuTEX1b_Zkak`uA?WtDc`W7(Dc`Louv;Zu`}p8)$gJ7TH?;#AK0G*J z%0J=9CF?p*Ije0ovMzZm*w%B11wTI2{%Kx_(>^o5Zob`W9tN!2Y>R(97G)JuTpPb> z-GNQVnQtaMD6wN$q%HK-`01&g3neA@TUY5RO^`XkaOj<9R)$x~Bku?k=CFu##hScp zhRL=+K2&`uJ@W2e*56JB{@3viYeGXkua}0MpRB;R%IIQc{evs|D$nj+{=dn;clw&= lWw*DdY+wNe`Tr#c_+3oa{xO)QU<4{BJzf1=);T3K0RWbz_XPj| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/dead.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..39d4b40f4c26a995c28769b0621a62449b002553 GIT binary patch literal 1267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9Omc!G*wiASa=_x7$tiA~0jf3ACNrOzs{>PPbjzA20Kd@QZxzcXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9O_P?i#V@L$&+bO354?FO*T`v)kQ)N({A+&%+PPBkSgu$GPf$suC z3zvk3;xgtop@t>QXZ~mErf>c@_2H&j8<+n5`YXIh$Z4WcBLvpZbND*_@9pKc&9R6p=9`usevWg+lFl|w(%2B)x@+C- zeKUl9$PLudHv{{pfJsSF4>9}%fpXvYDt{(> z@?*oj4;#!?G}gJ8UwX0p`SHR(ZvrnR&&^#BXTqtx_PO#p^<1yFTP!WTwHZD%{CoU5 zEa`sJpKWUU1YK@*+*!Snd-a8L_van&n~~>t$g5aJTbSXCW`gpBqBC#5Ueq}A?DM_n z&u0kUw=COzx8+yj&gZ9CJX9~Xwz2>IeeB-yIef!PBo-*Bw`}vAk}l`rrJF^uzDcyU$hKE}YQ7?sR1G yarvzW*UepWe9`3_B}$n-8&9*G0>V$6f0%NQu&nlI+vx);XFXm0T-G@yGywp$F(PmP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json new file mode 100644 index 00000000000..4a6e3c94fca --- /dev/null +++ b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Drawn by Ubaser, using the cotton sprites as a base.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dead" + }, + { + "name": "harvest" + }, + { + "name": "produce" + }, + { + "name": "seed" + }, + { + "name": "stage-1" + }, + { + "name": "stage-2" + }, + { + "name": "stage-3" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/produce.png new file mode 100644 index 0000000000000000000000000000000000000000..72a98653c8fcc301a849c786d6ce0ad7618fb909 GIT binary patch literal 1456 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9O_Nb?eV@L$&+t7=?hYbWu1-Q2)v6XqaYv^2%4RC+Kt{jqcz+G)Y zQd0_hn!`)Bmg@BRrF}W-ih@j<)1-c%+qe7syz>cXtio8uf)=bkCtDYMSu~hA>G{qN zdvE_VSY{#P{(NtzYR}Igp4yLQVy17TSr3RSPTTYD`P4@y@6Uz)@v%R4b1}n@2$3L# zQ=8r-e7+I%F*xH8&CQnFVzA)qZ1eOQV=RNt$ zX03g&vi}@^yLET5+#DI7Gut`s7q_2@3$uK2!>jT5_40ckue*pji25oE-n3lFuqdD< z@^D6Ovg%FCgy49`AjT_4HYo7?@4TC5wrp?QTee#HZ@>L+*D)v9?VTE%B09mNLEz-k z<>}MxD_FPezM*|#>Yb>03+@+v+T3gUw;*(LT%-RwvHa=YjoAkTejc{l*gm;7X?yeg z1b&v~%5Dr#QmR$UWB-aQ{-67e`KiXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9Ow$9VVF(iWXZKz?;VFLjh<1IX$OZOaTJUV5fyF;O>?ymK3$5T$rG}|{PF-Cmztt+-*fA8}BdL54<$35G; zZWWj93pBWH7u_%3Ci~#^@#)ORpEr2ls@D$W zg-P{ivKYlSGT-={R{Z+czc0_;reCm(RB8BqlATw{!A|UUu6fwMjcP&%R`1+iBe$ck z$E;8`JV@%1zT$uJKWsTZ?z`{Kd$mg}u{$m)sN=!MkZF_r6I*sZa41l)_>j(5!)S1+ V&LO>Fo;;|S^K|udS?83{1ONtY)y@C_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-1.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c86f85f0d252529cabfb4387fd7b0b981ca18531 GIT binary patch literal 1132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZhA(tI^ZNF(iWX?SzY*4F)`{i<@`2hpk}V(WJa{nzluQtYc-XgQo5e z?U=ftN#0WDdJZtK88k5RBrq^b95}$vobBb$U;O>~t+ij=dY&EWc>8unwd>U+hr{LP zQafLLTzIeR=?2f8sjr%w1g{_a(7=#fVZC>XlKcL1rmLGdK!)r$_`tO0i01zpr_+Ju P0Rw}ltDnm{r-UW|tvz6h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-2.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc634ce83a84fbbcd0d05fa843585a2095f086b GIT binary patch literal 1219 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZhA(>xQR`V@L$&+ld=_nGAVcYjX;==s3<6?VF}LqeC@gr|6|kEV|}Q zFQR`<+9;zZbXK&F<=DsX+dm7OoXj%GLCAy2Q-L#Q;(^af`Mal|&wYFU{_bgx=Pv|x z>2c}Wor#`z_xrsQ&kdq>Z|0u6%u~EaEJJ9+qo~&p*zfgy&F19UX#3oK;$MqbSFXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9OR>jlBF(iWXZO}&ELk>J85{%mxu)T~_^l=b0J7J)~YU{(Ijj^Xu_P z*IW9-rcj$&Bpne@bVSU3O+~FIZRjWN~+^XHW5iWC>|?^RfwB&#FIAOpcu9 zS@ST*>aD4u|4jR)hQqCQvJT}O(CSl*$k8}9=k(WKd2=lOi?218zQFQk^{zfe$HIo1 z^zOr*lJ;GD7&bGCwKqJn*c7qpq;`njxgN@xNAikPmg literal 0 HcmV?d00001 From f89133b3ad76d59140b19f082e18f1a5c285a61e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 11:08:42 +0000 Subject: [PATCH 86/89] 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 994ff32851e..de917dac2e0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: EdenTheLiznerd - changes: - - message: Deathnettles no longer penetrate hardsuit armor - type: Tweak - id: 5982 - time: '2024-02-21T06:16:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25286 - author: Tayrtahn changes: - message: Added fill level visuals to all the drinks. Cheers! @@ -3868,3 +3861,10 @@ id: 6481 time: '2024-04-28T09:28:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27435 +- author: Ubaser + changes: + - message: Pyrotton can now be mutated from cotton. + type: Add + id: 6482 + time: '2024-04-28T11:07:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27200 From 0da01909f2b0c13aa972bdfddce8c0e378c07677 Mon Sep 17 00:00:00 2001 From: Zack Backmen Date: Sun, 28 Apr 2024 21:54:28 +0300 Subject: [PATCH 87/89] upd --- .../StationGoal/StationGoalPaperSystem.cs | 11 +- .../Locale/en-US/damage/damage-groups.ftl | 5 + .../Locale/en-US/damage/damage-types.ftl | 3 + .../ru-RU/backmen/entities/vampiric.ftl | 2 + .../Prototypes/Backmen/Damage/groups.yml | 1 + Resources/Prototypes/Backmen/Damage/types.yml | 1 + .../Backmen/Entities/Mobs/NPC/mutants.yml | 149 ------------------ .../Entities/Mobs/Player/Silicons/BPLA.yml | 4 +- .../Mobs/Player/Silicons/BPLA_MED.yml | 3 +- .../Backmen/Entities/Mobs/Species/arachne.yml | 3 +- .../Backmen/Entities/Mobs/Species/golem.yml | 3 +- Resources/Prototypes/Damage/types.yml | 1 + .../Prototypes/Entities/Mobs/NPCs/animals.yml | 9 ++ .../Entities/Mobs/Player/silicon.yml | 8 +- Resources/Prototypes/Research/arsenal.yml | 18 +-- 15 files changed, 43 insertions(+), 178 deletions(-) create mode 100644 Resources/Locale/ru-RU/backmen/entities/vampiric.ftl diff --git a/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs b/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs index 515c884fa06..674f42c90c3 100644 --- a/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs +++ b/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs @@ -1,5 +1,6 @@ using System.Linq; using Content.Server.Fax; +using Content.Shared.Fax.Components; using Content.Shared.GameTicking; using Content.Shared.Paper; using Robust.Shared.Prototypes; @@ -40,22 +41,24 @@ public bool SendRandomGoal() /// True if at least one fax received paper public bool SendStationGoal(StationGoalPrototype goal) { - var faxes = EntityManager.EntityQuery(); + var faxes = EntityQueryEnumerator(); var wasSent = false; - foreach (var fax in faxes) + while (faxes.MoveNext(out var owner, out var fax)) { - if (!fax.ReceiveStationGoal) continue; + if (!fax.ReceiveStationGoal) + continue; var printout = new FaxPrintout( Loc.GetString(goal.Text), Loc.GetString("station-goal-fax-paper-name"), null, "paper_stamp-centcom", + null, new List { new() { StampedName = Loc.GetString("stamp-component-stamped-name-centcom"), StampedColor = Color.FromHex("#006600") }, }); - _faxSystem.Receive(fax.Owner, printout, null, fax); + _faxSystem.Receive(owner, printout, null, fax); wasSent = true; } diff --git a/Resources/Locale/en-US/damage/damage-groups.ftl b/Resources/Locale/en-US/damage/damage-groups.ftl index 057a999f1cc..209cc2f6496 100644 --- a/Resources/Locale/en-US/damage/damage-groups.ftl +++ b/Resources/Locale/en-US/damage/damage-groups.ftl @@ -3,3 +3,8 @@ damage-group-burn = Burn damage-group-airloss = Airloss damage-group-toxin = Toxin damage-group-genetic = Genetic + +# backmen +damage-group-immaterial = Immaterial +damage-group-holy = Holy +damage-group-stun = Stun diff --git a/Resources/Locale/en-US/damage/damage-types.ftl b/Resources/Locale/en-US/damage/damage-types.ftl index 5c3cca156fd..2b0933f60d3 100644 --- a/Resources/Locale/en-US/damage/damage-types.ftl +++ b/Resources/Locale/en-US/damage/damage-types.ftl @@ -11,3 +11,6 @@ damage-type-radiation = Radiation damage-type-shock = Shock damage-type-slash = Slash damage-type-structural = Structural + +#backmen +damage-type-stun = Stun diff --git a/Resources/Locale/ru-RU/backmen/entities/vampiric.ftl b/Resources/Locale/ru-RU/backmen/entities/vampiric.ftl new file mode 100644 index 00000000000..d1a6928d48c --- /dev/null +++ b/Resources/Locale/ru-RU/backmen/entities/vampiric.ftl @@ -0,0 +1,2 @@ + +vampiric = Вампир diff --git a/Resources/Prototypes/Backmen/Damage/groups.yml b/Resources/Prototypes/Backmen/Damage/groups.yml index 9491843bc2f..ba5914bf176 100644 --- a/Resources/Prototypes/Backmen/Damage/groups.yml +++ b/Resources/Prototypes/Backmen/Damage/groups.yml @@ -1,4 +1,5 @@ - type: damageGroup id: Immaterial + name: damage-group-immaterial damageTypes: - Holy diff --git a/Resources/Prototypes/Backmen/Damage/types.yml b/Resources/Prototypes/Backmen/Damage/types.yml index 60826594253..0ce3a8f17d3 100644 --- a/Resources/Prototypes/Backmen/Damage/types.yml +++ b/Resources/Prototypes/Backmen/Damage/types.yml @@ -1,5 +1,6 @@ # Only affects magical beings. - type: damageType id: Holy + name: damage-group-holy armorCoefficientPrice: 25 armorFlatPrice: 150 diff --git a/Resources/Prototypes/Backmen/Entities/Mobs/NPC/mutants.yml b/Resources/Prototypes/Backmen/Entities/Mobs/NPC/mutants.yml index 005e7db05c4..10bf0c4cad2 100644 --- a/Resources/Prototypes/Backmen/Entities/Mobs/NPC/mutants.yml +++ b/Resources/Prototypes/Backmen/Entities/Mobs/NPC/mutants.yml @@ -216,155 +216,6 @@ rules: No antagonist restrictions. Just don't talk in emote; you have telepathic chat. - type: GhostTakeoverAvailable -- type: entity - parent: SimpleMobBase - id: MobMouseCancer - name: Cancer Mouse - description: Oh hey Civvie... - components: - - type: BlobCarrier # backmen: blob - - type: Sprite - drawdepth: SmallMobs - sprite: Mobs/Animals/mouse.rsi - layers: - - map: ["enum.DamageStateVisualLayers.Base"] - state: mouse-0 - color: greenyellow - - type: DamageStateVisuals - rotate: true - states: - Alive: - Base: mouse-0 - Critical: - Base: dead-0 - Dead: - Base: splat-0 - - type: PointLight - color: greenyellow - - type: RadiationSource - intensity: 5 - slope: 0.5 - - type: Damageable - damageContainer: Biological - damageModifierSet: CancerMouse - - type: GhostRole - makeSentient: true - name: ghost-role-information-cancer-mouse-name - description: ghost-role-information-cancer-mouse-description - requirements: - - !type:OverallPlaytimeRequirement - time: 54000 # 15h # Corvax-RoleTime - - type: GhostTakeoverAvailable - - type: CombatMode - - type: MovementSpeedModifier - baseWalkSpeed : 3.5 - baseSprintSpeed : 3.5 - - type: InputMover - - type: MobMover - - type: Reactive - groups: - Flammable: [Touch] - Extinguish: [Touch] - - type: Physics - bodyType: KinematicController - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.2 - density: 30 #Bulky by mouse standards... - mask: - - SmallMobMask - layer: - - SmallMobLayer - - type: MobState - - type: MobThresholds - thresholds: - 0: Alive - 40: Critical - 80: Dead - - type: Item - size: Huge - - type: Stamina - critThreshold: 80 - - type: MeleeWeapon - hidden: true - soundHit: - path: /Audio/Weapons/bladeslice.ogg - angle: 0 - animation: WeaponArcClaw - damage: - types: - Slash: 5 - Piercing: 3 - - type: Body - prototype: Rat - requiredLegs: 1 # TODO: More than 1 leg - - type: Hunger # probably should be prototyped - thresholds: - Overfed: 200 - Okay: 150 - Peckish: 100 - Starving: 50 - Dead: 0 - baseDecayRate: 0.01666666666 - - type: Thirst - thresholds: - OverHydrated: 600 - Okay: 450 - Thirsty: 300 - Parched: 150 - Dead: 0 - baseDecayRate: 0.1 - - type: Appearance - - type: Puller - needsHands: false - - type: Vocal - # mice are gender neutral who cares - sounds: - unsexed: Mouse - wilhelmProbability: 0.001 - - type: Tag - tags: - - CannotSuicide - - DoorBumpOpener - - FootstepSound - - Recyclable - - type: NoSlip - - type: MobPrice - price: 100 # rat wealth - - type: FelinidFood - - type: CanEscapeInventory - - type: Extractable - grindableSolutionName: food - - type: Bloodstream - bloodReagent: Radium - bloodMaxVolume: 70 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Radium - Quantity: 70 - - type: Butcherable - spawned: - - id: FoodMeatRat - amount: 1 - - type: Grammar - attributes: - proper: true - gender: male - - type: IntrinsicRadioReceiver - - type: IntrinsicRadioTransmitter - channels: - - Common - - type: ActiveRadio - channels: - - Common - - type: entity name: Чёрная вдова parent: MobGiantSpiderVampire diff --git a/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA.yml b/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA.yml index 4aa7140339f..db293edf5fe 100644 --- a/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA.yml +++ b/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA.yml @@ -142,8 +142,8 @@ autoRot: true - type: Tag tags: - - ShoesRequiredStepTriggerImmune - CannotSuicide - type: SpecForce - + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET diff --git a/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA_MED.yml b/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA_MED.yml index 1c711c73902..a278747466b 100644 --- a/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA_MED.yml +++ b/Resources/Prototypes/Backmen/Entities/Mobs/Player/Silicons/BPLA_MED.yml @@ -179,6 +179,7 @@ autoRot: true - type: Tag tags: - - ShoesRequiredStepTriggerImmune - CannotSuicide - type: SpecForce + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET diff --git a/Resources/Prototypes/Backmen/Entities/Mobs/Species/arachne.yml b/Resources/Prototypes/Backmen/Entities/Mobs/Species/arachne.yml index e3346cf360c..25e2cfa6a1d 100644 --- a/Resources/Prototypes/Backmen/Entities/Mobs/Species/arachne.yml +++ b/Resources/Prototypes/Backmen/Entities/Mobs/Species/arachne.yml @@ -115,8 +115,9 @@ - type: Tag tags: - CanPilot - - ShoesRequiredStepTriggerImmune - DoorBumpOpener + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: Bloodstream bloodReagent: DemonsBlood - type: BloodSucker diff --git a/Resources/Prototypes/Backmen/Entities/Mobs/Species/golem.yml b/Resources/Prototypes/Backmen/Entities/Mobs/Species/golem.yml index 30288a87d82..942b017eb8f 100644 --- a/Resources/Prototypes/Backmen/Entities/Mobs/Species/golem.yml +++ b/Resources/Prototypes/Backmen/Entities/Mobs/Species/golem.yml @@ -83,9 +83,10 @@ tags: - CanPilot - DoorBumpOpener - - ShoesRequiredStepTriggerImmune # TODO: https://github.com/Backmen/Backmen/issues/1628 # - GunsDisabled + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: Reactive groups: Acidic: [Touch] diff --git a/Resources/Prototypes/Damage/types.yml b/Resources/Prototypes/Damage/types.yml index 7dd452453a2..b3af11a73a2 100644 --- a/Resources/Prototypes/Damage/types.yml +++ b/Resources/Prototypes/Damage/types.yml @@ -89,5 +89,6 @@ # Used by certain armor to counter stun weaponry. - type: damageType id: Stun + name: damage-type-stun armorCoefficientPrice: 5 armorFlatPrice: 20 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index ad7c7d6a73b..7cfdf568a3d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1745,6 +1745,15 @@ parent: MobMouse id: MobMouseCancer components: + - type: GhostTakeoverAvailable + - type: GhostRole + makeSentient: true + name: ghost-role-information-cancer-mouse-name + description: ghost-role-information-cancer-mouse-description + requirements: + - !type:OverallPlaytimeRequirement + time: 54000 # 15h # Corvax-RoleTime + - type: BlobCarrier # backmen: blob - type: Sprite color: LightGreen - type: PointLight diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 1fe549bae4e..d3f5463f4b0 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -66,9 +66,8 @@ - type: Puller - type: StandingState - type: Alerts - - type: Tag - tags: - - ShoesRequiredStepTriggerImmune + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity name: drone @@ -182,9 +181,10 @@ softness: 1 mask: /Textures/Effects/LightMasks/cone.png autoRot: true + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: Tag tags: - - ShoesRequiredStepTriggerImmune - CannotSuicide - type: entity diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index ed94ddbefaf..95f2804a109 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -48,20 +48,6 @@ - WeaponLaserCarbine - WeaponLaserPistol -- type: technology - id: NonlethalAmmunition - name: research-technology-nonlethal-ammunition - icon: - sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi - state: beanbag - discipline: Arsenal - tier: 1 - cost: 5000 - recipeUnlocks: - - ShellShotgunBeanbag - - GrenadeTearGas - - GrenadeNonletal - - type: technology id: NonlethalAmmunition name: research-technology-nonlethal-ammunition @@ -73,8 +59,8 @@ cost: 5000 recipeUnlocks: - MagazineShotgunBeanbag - - ShellTranquilizer - - BoxBeanbag + - ShellTranquilizer + - BoxBeanbag - WeaponDisabler - type: technology From 50156cd6ed82e9f3afa16227be5d666b947e4a4e Mon Sep 17 00:00:00 2001 From: Zack Backmen Date: Sun, 28 Apr 2024 22:18:15 +0300 Subject: [PATCH 88/89] fix --- .../Backmen/Body/Prototypes/drone.yml | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Backmen/Body/Prototypes/drone.yml b/Resources/Prototypes/Backmen/Body/Prototypes/drone.yml index b233420f144..802ca033189 100644 --- a/Resources/Prototypes/Backmen/Body/Prototypes/drone.yml +++ b/Resources/Prototypes/Backmen/Body/Prototypes/drone.yml @@ -4,7 +4,7 @@ root: torso slots: torso: - part: TorsoTerminator + part: TorsoDrone connections: - hand 1 - hand 2 @@ -24,3 +24,27 @@ part: RightArmBorg hand 6: part: RightArmBorg + +- type: entity + parent: BaseItem + id: TorsoDrone + name: nt-800 torso + components: + - type: Sprite + sprite: Mobs/Species/Terminator/parts.rsi + state: torso_m + - type: Icon + sprite: Mobs/Species/Terminator/parts.rsi + state: torso_m + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: ContainerContainer + containers: + bodypart: !type:Container + ents: [] + - type: Gibbable + - type: StaticPrice + price: 200 + - type: BodyPart + partType: Torso From 4d331faac6ea6d99c269a459bd6dd03165c42c7e Mon Sep 17 00:00:00 2001 From: Zack Backmen Date: Sun, 28 Apr 2024 22:42:46 +0300 Subject: [PATCH 89/89] fix --- Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs b/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs index 674f42c90c3..e6f429228c2 100644 --- a/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs +++ b/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs @@ -52,8 +52,8 @@ public bool SendStationGoal(StationGoalPrototype goal) Loc.GetString(goal.Text), Loc.GetString("station-goal-fax-paper-name"), null, - "paper_stamp-centcom", null, + "paper_stamp-centcom", new List { new() { StampedName = Loc.GetString("stamp-component-stamped-name-centcom"), StampedColor = Color.FromHex("#006600") },