From e40a34c3e426b424e83dd4324b07ea7e05f220f9 Mon Sep 17 00:00:00 2001 From: fishbait Date: Sat, 10 Aug 2024 23:38:06 +0200 Subject: [PATCH] Added Medical Patches (#452) * init * commit * typo's * component summary and changed patch white list * fixed the used medical patch * sprites and cleanups * added prefilled and added to nanomed * moved prefilled patches to own file * new patch sprite and working chem level indicator * base change, sprite border * popup changes * added Tag and a Bounty * better border sprite * added localisation, bounties shud work now * New Sprite for Prefilled * new sprites for makeshift and used * commit * commit * removed unused sprites * unused sprite was still in use. * final commit --------- Co-authored-by: unknown Co-authored-by: Fishbait --- .../MedicalPatch/MedicalPatchComponent.cs | 42 ++++ .../MedicalPatch/MedicalPatchSystem.cs | 138 ++++++++++++ Content.Server/Sticky/Systems/StickySystem.cs | 5 +- .../medical-patch/medical-patch.ftl | 2 + .../VendingMachines/Inventories/medical.yml | 2 + .../Entities/Structures/Machines/lathe.yml | 3 + .../Goobstation/Catalog/Bounties/bounties.yml | 10 + .../Specific/Medical/medical_patch.yml | 205 ++++++++++++++++++ .../Medical/medical_patch_prefilled.yml | 56 +++++ Resources/Prototypes/Goobstation/tags.yml | 3 + .../medical_patch.rsi/GenericPatch-1.png | Bin 0 -> 548 bytes .../medical_patch.rsi/GenericPatch-2.png | Bin 0 -> 554 bytes .../medical_patch.rsi/GenericPatch-3.png | Bin 0 -> 557 bytes .../medical_patch.rsi/GenericPatch-4.png | Bin 0 -> 554 bytes .../medical_patch.rsi/GenericPatch-5.png | Bin 0 -> 559 bytes .../medical_patch.rsi/GenericPatch-6.png | Bin 0 -> 555 bytes .../medical_patch.rsi/GenericPatch-7.png | Bin 0 -> 559 bytes .../medical_patch.rsi/GenericPatch-8.png | Bin 0 -> 561 bytes .../medical_patch.rsi/GenericPatch-9.png | Bin 0 -> 558 bytes .../medical_patch.rsi/GenericPatch.png | Bin 0 -> 789 bytes .../medical_patch.rsi/GenericPatchBorder.png | Bin 0 -> 648 bytes .../medical_patch.rsi/GenericPatchSmall-1.png | Bin 0 -> 4262 bytes .../medical_patch.rsi/GenericPatchSmall-2.png | Bin 0 -> 4261 bytes .../medical_patch.rsi/GenericPatchSmall-3.png | Bin 0 -> 4276 bytes .../medical_patch.rsi/GenericPatchSmall-4.png | Bin 0 -> 4279 bytes .../medical_patch.rsi/GenericPatchSmall-5.png | Bin 0 -> 4272 bytes .../medical_patch.rsi/GenericPatchSmall.png | Bin 0 -> 4515 bytes .../GenericPatchSmallCornerLayer.png | Bin 0 -> 4299 bytes .../GenericPatchSmallUsed.png | Bin 0 -> 4439 bytes .../medical_patch.rsi/MakeshiftPatch.png | Bin 0 -> 4351 bytes .../medical_patch.rsi/MakeshiftPatchUsed.png | Bin 0 -> 4379 bytes .../Medical/medical_patch.rsi/meta.json | 74 +++++++ 32 files changed, 539 insertions(+), 1 deletion(-) create mode 100644 Content.Server/Goobstation/MedicalPatch/MedicalPatchComponent.cs create mode 100644 Content.Server/Goobstation/MedicalPatch/MedicalPatchSystem.cs create mode 100644 Resources/Locale/en-US/Goobstation/medical-patch/medical-patch.ftl create mode 100644 Resources/Prototypes/Goobstation/Catalog/Bounties/bounties.yml create mode 100644 Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch.yml create mode 100644 Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch_prefilled.yml create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-1.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-2.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-3.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-4.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-5.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-6.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-7.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-8.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-9.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchBorder.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-1.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-2.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-3.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-4.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-5.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmallCornerLayer.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmallUsed.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/MakeshiftPatch.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/MakeshiftPatchUsed.png create mode 100644 Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/meta.json diff --git a/Content.Server/Goobstation/MedicalPatch/MedicalPatchComponent.cs b/Content.Server/Goobstation/MedicalPatch/MedicalPatchComponent.cs new file mode 100644 index 00000000000..fb2d448e218 --- /dev/null +++ b/Content.Server/Goobstation/MedicalPatch/MedicalPatchComponent.cs @@ -0,0 +1,42 @@ +using Content.Shared.FixedPoint; + +namespace Content.Server.Medical.Components; + +[RegisterComponent] +public sealed partial class MedicalPatchComponent : Component +{ + [DataField] + public string SolutionName = "drink"; + [DataField] + public FixedPoint2 TransferAmount = FixedPoint2.New(1); + /// + /// if this is a single use patch, gets destroyed or replaced when empty or removed. + /// + [DataField] + public bool SingleUse = false; + /// + /// if single use what the Entity shud be replaced whit + /// + [DataField] + public string? TrashObject = "UsedMedicalPatch"; + /// + /// how often the patch shud transfer sulution + /// + [DataField] + public float UpdateTime = 1f; + + [DataField] + public TimeSpan NextUpdate = TimeSpan.Zero; + /// + /// if any set ammount shud be transfered when the patch is attatched, + /// + [DataField] + public FixedPoint2 InjectAmmountOnAttatch = FixedPoint2.New(0); + /// + /// if a Percentage of the remaining soulution shud be transfered when attatched, use 0 - 100 + /// + [DataField] + public FixedPoint2 InjectPercentageOnAttatch = FixedPoint2.New(0); +} + + diff --git a/Content.Server/Goobstation/MedicalPatch/MedicalPatchSystem.cs b/Content.Server/Goobstation/MedicalPatch/MedicalPatchSystem.cs new file mode 100644 index 00000000000..108d1eea850 --- /dev/null +++ b/Content.Server/Goobstation/MedicalPatch/MedicalPatchSystem.cs @@ -0,0 +1,138 @@ +using Content.Shared.Administration.Logs; +using Content.Server.Medical.Components; +using Content.Server.Popups; +using Content.Shared.FixedPoint; +using Content.Server.Sticky.Systems; +using Content.Server.Sticky.Events; +using Content.Server.Sticky.Components; +using Robust.Shared.Timing; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Chemistry; +using Content.Server.Polymorph.Systems; +using Content.Shared.Database; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; + +namespace Content.Server.Medical; + +public sealed class MedicalPatchSystem : EntitySystem +{ + [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly StickySystem _stickySystem = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedSolutionContainerSystem _solutionContainers = default!; + [Dependency] private readonly ReactiveSystem _reactiveSystem = default!; + [Dependency] private readonly PolymorphSystem _polymorph = default!; + [Dependency] protected readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnUnstuck); + SubscribeLocalEvent(OnStuck); + } + public override void Update(float frameTime) + { + base.Update(frameTime); + + if (!_timing.IsFirstTimePredicted) + return; + + foreach (var comp in EntityManager.EntityQuery()) + { + if (_timing.CurTime < comp.NextUpdate) + continue; + var uid = comp.Owner; // TODO update thsi to the + + if (!TryComp(uid, out var stickycomp)) + continue; + if (stickycomp.StuckTo == null) + continue; + comp.NextUpdate = _timing.CurTime + TimeSpan.FromSeconds(comp.UpdateTime); + + Cycle(uid, comp); + } + } + public void Cycle(EntityUid uid, MedicalPatchComponent component) + { + if (!TryInject(uid, component, component.TransferAmount)) + { + _stickySystem.UnstickFromEntity(uid, uid); + } + } + public bool TryInject(EntityUid uid, MedicalPatchComponent component, FixedPoint2 transferAmount) + { + if (!TryComp(uid, out var stickycomp)) + return false; + + if (stickycomp.StuckTo == null) + return false; + var target = (EntityUid) stickycomp.StuckTo; + + if (!_solutionContainers.TryGetSolution(uid, component.SolutionName, out var medicalPatchSoln, out var medicalPatchSolution) || medicalPatchSolution.Volume == 0) + { + //Solution Empty + return false; + } + if (!_solutionContainers.TryGetInjectableSolution(target, out var targetSoln, out var targetSolution)) + { + //_popupSystem.PopupEntity(Loc.GetString("Medical Patch cant find a bloodsystem"), target); + return false; + } + var realTransferAmount = FixedPoint2.Min(transferAmount, targetSolution.AvailableVolume); + if (realTransferAmount <= 0) + { + _popupSystem.PopupEntity(Loc.GetString("No room to inject"), target); + return true; + } + var removedSolution = _solutionContainers.SplitSolution(medicalPatchSoln.Value, realTransferAmount); + if (!targetSolution.CanAddSolution(removedSolution)) + return true; + _reactiveSystem.DoEntityReaction(target, removedSolution, ReactionMethod.Injection); + _solutionContainers.TryAddSolution(targetSoln.Value, removedSolution); + return true; + } + public void OnStuck(EntityUid uid, MedicalPatchComponent component, EntityStuckEvent args) + { + if (!_solutionContainers.TryGetSolution(uid, component.SolutionName, out var medicalPatchSoln, out var medicalPatchSolution)) + return; + + //Logg the Patch stick to. + _adminLogger.Add(LogType.ForceFeed, $"{EntityManager.ToPrettyString(args.User):user} stuck a patch on {EntityManager.ToPrettyString(args.Target):target} using {EntityManager.ToPrettyString(uid):using} containing {SharedSolutionContainerSystem.ToPrettyString(medicalPatchSolution):medicalPatchSolution}"); + + if (component.InjectAmmountOnAttatch > 0) + { + if (!TryInject(uid, component, component.InjectAmmountOnAttatch)) + return; + } + if (component.InjectPercentageOnAttatch > 0) + { + if (medicalPatchSolution.Volume == 0) + return; + if (!TryInject(uid, component, medicalPatchSolution.Volume * (component.InjectPercentageOnAttatch / 100))) + return; + } + } + public void OnUnstuck(EntityUid uid, MedicalPatchComponent component, EntityUnstuckEvent args) + { + if (component.SingleUse) + { + if (component.TrashObject!=null) + { + var coordinates = Transform(uid).Coordinates; + var finisher = Spawn(component.TrashObject, coordinates); + // If the user is holding the item + if (_hands.IsHolding(args.User, uid, out var hand)) + { + Del(uid); + + // Put the Medicalpatch in the user's hand + _hands.TryPickup(args.User, finisher, hand); + return; + } + } + QueueDel(uid); + } + } +} diff --git a/Content.Server/Sticky/Systems/StickySystem.cs b/Content.Server/Sticky/Systems/StickySystem.cs index 21a7f4d0395..152e5d224ac 100644 --- a/Content.Server/Sticky/Systems/StickySystem.cs +++ b/Content.Server/Sticky/Systems/StickySystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Whitelist; using Robust.Shared.Containers; using Robust.Shared.Utility; +using Content.Shared.Interaction.Components; namespace Content.Server.Sticky.Systems; @@ -187,7 +188,7 @@ public void StickToEntity(EntityUid uid, EntityUid target, EntityUid user, Stick { _appearance.SetData(uid, StickyVisuals.IsStuck, true, appearance); } - + EnsureComp(uid); //Goobstation - MedicalPatch component.StuckTo = target; RaiseLocalEvent(uid, new EntityStuckEvent(target, user), true); } @@ -205,6 +206,8 @@ public void UnstickFromEntity(EntityUid uid, EntityUid user, StickyComponent? co if (attemptEv.Cancelled) return; + RemComp(uid); //Goobstation - MedicalPatch + // try to remove sticky item from target container if (!_containerSystem.TryGetContainer(stuckTo, StickerSlotId, out var container) || !_containerSystem.Remove(uid, container)) return; diff --git a/Resources/Locale/en-US/Goobstation/medical-patch/medical-patch.ftl b/Resources/Locale/en-US/Goobstation/medical-patch/medical-patch.ftl new file mode 100644 index 00000000000..3cf15a04792 --- /dev/null +++ b/Resources/Locale/en-US/Goobstation/medical-patch/medical-patch.ftl @@ -0,0 +1,2 @@ +goobstation-medicalpatch-bounty-desc = There is a medical emergency going on. Send some patches to help us out over here +goobstation-medicalpatch-bounty-name = Medical Patches diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml index 466749120bd..98d97a0dc17 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml @@ -9,4 +9,6 @@ Syringe: 5 ClothingEyesHudMedical: 2 ClothingEyesEyepatchHudMedical: 2 + MedicalPatchPrefilledBicaridine: 3 #Goobstation - MedicalPatches + MedicalPatchPrefilledDermaline: 3 #Goobstation - MedicalPatches diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7477713a39e..8f2a58c89f2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -922,6 +922,9 @@ - Hemostat - ClothingEyesGlassesChemical - WhiteCane + - MedicalPatchBasic #Goobstation - MedicalPatch + - MedicalPatchRapid #Goobstation - MedicalPatch + - MedicalPatchLarge #Goobstation - MedicalPatch dynamicRecipes: - ChemicalPayload - CryostasisBeaker diff --git a/Resources/Prototypes/Goobstation/Catalog/Bounties/bounties.yml b/Resources/Prototypes/Goobstation/Catalog/Bounties/bounties.yml new file mode 100644 index 00000000000..7a44981c1ab --- /dev/null +++ b/Resources/Prototypes/Goobstation/Catalog/Bounties/bounties.yml @@ -0,0 +1,10 @@ +- type: cargoBounty + id: BountyMedicalPatch + reward: 4000 + description: goobstation-medicalpatch-bounty-desc + entries: + - name: goobstation-medicalpatch-bounty-name + amount: 5 + whitelist: + tags: + - MedicalPatch diff --git a/Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch.yml b/Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch.yml new file mode 100644 index 00000000000..0736c459ce6 --- /dev/null +++ b/Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch.yml @@ -0,0 +1,205 @@ +- type: entity + parent: BaseHealingItem + id: BaseMedicalPatch + name: base patch + description: put this on your boo boo + abstract: true + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + state: GenericPatch + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + - type: ExaminableSolution + solution: drink + - type: Sticky + stickDelay: 3 + unstickDelay: 2 + stickPopupStart: Started placing patch + stickPopupSuccess: Patch placed + unstickPopupStart: Started removing patch + unstickPopupSuccess: Patch removed + whitelist: + components: + - Bloodstream + - type: StickyVisualizer + - type: Appearance + - type: MixableSolution + solution: drink + - type: MedicalPatch + - type: Tag + tags: + - MedicalPatch + +- type: entity + parent: BaseMedicalPatch + id: MedicalPatchBasic + name: patch + description: put this on your boo boo + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + scale: 0.9 , 0.9 + layers: + - state: GenericPatch + - state: GenericPatch-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: SolutionContainerVisuals + maxFillLevels: 9 + fillBaseName: GenericPatch- + - type: SolutionContainerManager + solutions: + drink: #drink is the same as Bottle solution, this is to prevent recoding chem master. TODO: recode chem master + maxVol: 40 + - type: Tag + tags: + - MedicalPatch + - Bottle # Bottle tag so that it can be accepted by chem master # TODO: code chemmaster + - type: Spillable # only way empty the patch is wring it out and spill it on the floor + solution: drink + +- type: entity + parent: BaseHealingItem + id: UsedMedicalPatch + name: patch used + description: EEEEWWWWWWW + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + state: GenericPatchSmallUsed + - type: Tag + tags: + - Trash + - type: PhysicalComposition #get 1 cloth form recycling a used patch + materialComposition: + Cloth: 100 + +- type: entity + parent: UsedMedicalPatch + id: UsedMedicalPatchMakeshift + name: patch used + description: EEEEWWWWWWW + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + state: MakeshiftPatchUsed + +- type: entity + parent: MedicalPatchBasic + id: MedicalPatchRapid + name: rapid patch + description: has racing cars drawn on + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + layers: + - state: GenericPatch + - state: GenericPatchBorder + color: Red + - state: GenericPatch-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: MedicalPatch + transferAmount: 2 # Twice the ammound of basic + +- type: entity + parent: MedicalPatchBasic + id: MedicalPatchLarge + name: large patch + description: put this on your Big boo boo + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + scale: 1 , 1 + layers: + - state: GenericPatch + - state: GenericPatchBorder + color: Violet + - state: GenericPatch-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: SolutionContainerManager + solutions: + drink: + maxVol: 60 # +50% from basic + - type: MedicalPatch + injectPercentageOnAttatch: 15 # 10u when full + +- type: entity + parent: BaseMedicalPatch + id: MedicalPatchMakeshift + name: makeshift patch + description: does not look hygienic + components: + - type: Sprite + state: MakeshiftPatch + - type: MedicalPatch + updateTime: 2 # slow + singleUse: true + trashObject: UsedMedicalPatchMakeshift + - type: SolutionContainerManager + solutions: + drink: + maxVol: 15 #Low volume but a full will last for 30sec + - type: RefillableSolution # So Tiders can fill ther bandages whit hotch and ventcurd + solution: drink + - type: Construction + graph: MedicalPatchMakeshift + node: medicalPatchMakeshift + +- type: latheRecipe + id: MedicalPatchBasic + result: MedicalPatchBasic + completetime: 2 + materials: + Plastic: 100 + Cloth: 100 + +- type: latheRecipe + id: MedicalPatchRapid + result: MedicalPatchRapid + completetime: 2 + materials: + Cloth: 100 + Plastic: 100 + +- type: latheRecipe + id: MedicalPatchLarge + result: MedicalPatchLarge + completetime: 2 + materials: + Plastic: 100 + Cloth: 100 + +- type: constructionGraph + id: MedicalPatchMakeshift + start: start + graph: + - node: start + edges: + - to: medicalPatchMakeshift + steps: + - material: Gauze + amount: 3 + doAfter: 10 + - node: medicalPatchMakeshift + entity: MedicalPatchMakeshift + +- type: construction + name: Makeshift Patch + id: MedicalPatchMakeshift + graph: MedicalPatchMakeshift + startNode: start + targetNode: medicalPatchMakeshift + category: construction-category-tools + objectType: Item + description: a little better then nothig + icon: + sprite: Goobstation/Objects/Medical/medical_patch.rsi + state: MakeshiftPatch + + + diff --git a/Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch_prefilled.yml b/Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch_prefilled.yml new file mode 100644 index 00000000000..ea876f957c2 --- /dev/null +++ b/Resources/Prototypes/Goobstation/Entities/Objects/Specific/Medical/medical_patch_prefilled.yml @@ -0,0 +1,56 @@ +- type: entity + parent: BaseMedicalPatch + id: MedicalPatchPrefilledBase + name: prefilled medical patch + description: Medical patch filled whit chemicals + abstract: true + components: + - type: Sprite + sprite: Goobstation/Objects/Medical/medical_patch.rsi + layers: + - state: GenericPatchSmall + - state: GenericPatchSmall-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: SolutionContainerVisuals + maxFillLevels: 5 + fillBaseName: GenericPatchSmall- + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + - type: MedicalPatch + singleUse: true + transferAmount: 0.25 + +- type: entity + parent: MedicalPatchPrefilledBase + id: MedicalPatchPrefilledBicaridine + name: brute patch + suffix: Bicaridine + components: + - type: Label + currentLabel: Bicaridine 30u + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Bicaridine + Quantity: 30 + +- type: entity + parent: MedicalPatchPrefilledBase + id: MedicalPatchPrefilledDermaline + name: burn patch + suffix: Dermaline + components: + - type: Label + currentLabel: Dermaline 30u + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Dermaline + Quantity: 30 diff --git a/Resources/Prototypes/Goobstation/tags.yml b/Resources/Prototypes/Goobstation/tags.yml index fad85c0c189..e770753c3b9 100644 --- a/Resources/Prototypes/Goobstation/tags.yml +++ b/Resources/Prototypes/Goobstation/tags.yml @@ -16,6 +16,9 @@ - type: Tag id: BreathMask +- type: Tag + id: MedicalPatch + - type: Tag id: SecurityBreathMask diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-1.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e9899e9ed73aaa38b39323c0421d35ff05c1a40f GIT binary patch literal 548 zcmV+<0^9wGP)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4HSg*Ll*!503k_4K~z}7?a)CD000O8A^Vp; mL-=xo2+RNg@L81w0In7?T?73JU*o6%0000EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4K70Xnxy~$04GUAK~z}7?a?s}000cbu<-{v s8Xbrpdu#-eG6MiWA<2FR#0CIb2dsw&;B;8SX8-^I07*qoM6N<$f@pH=dH?_b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-3.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a408fabb01247bfc31cfe2c6262d81b7360d1407 GIT binary patch literal 557 zcmV+|0@D47P)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4LdI-eog=Y04hmDK~z}7?aaXm05A*#vC#cj vF76P1lz{ZVn*jjWEXi#j=X2i=0HE~%P{jlRYkL;t00000NkvXXu0mjflcwEX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4i`4iL2dv504GUAK~z}7?awh0000aEv0nXq srXm=+Bm(|m1^}RtByD5APZ$6I2V(yO1ILq0@c;k-07*qoM6N<$f=`|7f&c&j literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-5.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-5.png new file mode 100644 index 0000000000000000000000000000000000000000..44fd9892b68535ccf75f9cf3951e1ed23f4a1328 GIT binary patch literal 559 zcmV+~0?_@5P)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4ki8v5bgi~04zyFK~z}7?a;vq06+)>LAm}b x_LD2ZhX^wTge6q~z-38#J0R1IxBa330Qh7N2l^P580i22002ovPDHLkV1jNd@gD#H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-6.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-6.png new file mode 100644 index 0000000000000000000000000000000000000000..63f6db5b8c5d14a096c5e0e0f3cc2c5f6ecd47d6 GIT binary patch literal 555 zcmV+`0@VG9P)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4mh0wd^Z3904PaBK~z}7?awh0000aEv0nXq trXm=+Bm%f+1^_4|NxQM%CjaYL+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-7.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-7.png new file mode 100644 index 0000000000000000000000000000000000000000..9566ecc8e882d1cdadbbb5fa0879f4e5488df963 GIT binary patch literal 559 zcmV+~0?_@5P)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4-L|(iB$jq04zyFK~z}7?bE>t000OAz-a%S xZHOKb+zlZ5unGV^OOkCyUyo2gf%atpt__^C1PLX|hq?d&002ovPDHLkV1jMz@WTKA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-8.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-8.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1664870de3de6d8c8d823ad177a0261bd9de77 GIT binary patch literal 561 zcmV-10?z%3P)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4;;7|siyz{04_;HK~z}7?ar|c03Z+pv4{O< zCJd1RA=!PRn*o4AlGA?da=%^&i~s@O2LQkYv2p|pP}7YS00000NkvXXu0mjfO&0MC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-9.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatch-9.png new file mode 100644 index 0000000000000000000000000000000000000000..3ccd82e00f34da34f4cb551343d9b8e8f06798f5 GIT binary patch literal 558 zcmV+}0@3}6P)EX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TB4=L`dZG->-04qsEK~z}7?a#pp000OBF>(K$ w>kvLfNCqg^DgZu9lI=!cpAaBGzEX>4Tx04R}tkv&MmKpe$iQ;S6^B6bjQ$WWc^qN0waibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZq2|2qJ(%gfJ^HQ%`0Vv+x{W_we!cF3PjK&;2?2m4e9tpGX{Ix?vG-5YKE{ zI_G`jFe^(6@j3B?K^G)`95vi~+s7K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7C8b2wtVGd000McNliru=m-TAG!^`{lnej>0TM|>K~z}7?Utbq!Y~kq|1G3J zOwG(PhlVFXPc4W&1&XJrSf-|V63{rXB%}#R1*u?&QRs%~m9T*5Z!W!FdUxNt-2g8y zuOBO*1XbC*aXmP%x1_U2l;qP{3KqrWZ599)pNeU$e_Pc|Xgq46! zt`B8V{Iq7rreDVc_M$^4to5cP^RQtsUYqNx-atv=bXP{yKo-R)iY1g3D2iog@6CU{ zkPC1kz%Xt^`6C0(rJ* z2hGFYn(NA3=h?z(W{@6%k^;#jea!-mw~yKI>(BOA#_^}qkTQt=;(x%)%ggHy6S1`R TNO^V%00000NkvXXu0mjfu&8Fm literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchBorder.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..8e574a551b132744fa271f6eb57e8d53451c75c0 GIT binary patch literal 648 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 TTRr2Xo{X=2rMGi={g(d#G_w39 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-3.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c507555f2283d11767220a561a63d131d652064b GIT binary patch literal 4276 zcmeHKe{d6Z7EcdtX?iUvc66`|+bt-?+3Y6!qsf|7+9ahp8Z2ql%E4VXyWeg1NU|Zj zY0}6q>knFrSn%dJE2G1}aGcz=VEJJ!TA^?ZsDmEPiHKaS6+tOD$^i<3-%a{+&Y7Fe zod0!aHoN=2?|t5TpYMBb@@*`iKQ~i9Rj<28p`!2Tl#gfj?TeeAS$pSa_sx6c#*Ygg{>zh# zGZ%E+bN=kX_}#NRy9(Fd$eTLtIYVv1t3k)dPxqz1_m4H6NXNRJS7NJAr9ZVdxaIy^ z{V#r3-`{_`^H|4}V^!$h)S8^E4=0}!4s<)}|Ga(Gi|f|!Y+m^UJ9&kz{PB;<(5Vic zF69}?ZZCJ)?Sl!yG&U_?Z!7JdlXLj@6?>cub1opg&70YVX*cHN%*$@7+Pph^VT95HSp=_GjfYdGJ&@$w|Ga% zn#Q~OkGyeh^|X~67MVJZRrOWQ$(}vq$fTQTU7d8siHe{HNxl5m$ty=@^?Y)BOXQQA zg?szYruQsQZQZ@M>y++np{s4*o^S3Tc4jVGw2!Wv^!n+PXJ1y2Hs>6jS263ZRaeO$ zw&f79jLU5uZ|=FW^aq`=ea9E~_Vi4?=K;@^_{Qk<2cNipwQNV%^uChthkG`r--4A_ zE5Qn@beFNb958T#>;r~aAOuTKr?Wm33vv7spdvm{Ed_1prOqxCkpvt180{w9Av>s% zO59aI11Nl03aOGDL^Mp!Cr4Bpio$hdFup*@?H+;;Dg!J)KJXY9!i@$3 z4+QX$7K-Yug&+d~{j7!Jg^h}PfFei2JaE>6pqe)lLg0t&Ly@pQk&eLQzz+gYRe@fO zqg>8)xyy$vGzzMvKqz4a$sVPtO5!kCqhixm66uT#1ey=wj?x~?J)sP>+-}w(^ARmP zm&1l?{#ilhC4o)6Ql!~T(Hw(WcphLBPpsHj|!2O1Ov zH%Jf%SU6DxoPdcw(uh%{#fNb`#b5-(3nWExMgW)*5D$kXSe2ZAWKQA0Hn29ipw zXdA=AbRe~yR;dsmA&1$p_Aua7Iqa2XzYW!bLNv>vWjAanfm1mLrveB{m?)MovjpQc zGAv266!`#QVu=y@vLK0d|4UnIAHOnaDXpu==_4$z&`wf9w79%lQHo-PS-eHV`5-T%H!2FPS=`zMiG21Scqjv{YmcmIi9`c=fQogeH+vu@sMV;g!R>An7~ z&bl=H;tf>#a|GGmHeun+x3Zgdw0!>e{Ia)CgI}%s_B6k-;biHXZ~X4byi2<4FIZ<6 o_I~x~hLZkQxURR~efPrM^O+9%OzpPmA3#Ssmvg?OwYaMOC;g%f$p8QV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-4.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmall-4.png new file mode 100644 index 0000000000000000000000000000000000000000..a16a150d1a919859cc82a6af45f7bf83d78b9e2c GIT binary patch literal 4279 zcmeHKeNYtV89%By`6x)LOjC>FvS^h$d%JhL_qE<3aCg9!93jWq5~B%wyYIqQ_V&2l z;|?Ox(oqpRiJDH*P|d`cP*WY$C^3d4jDbi@Vr^?bGD%3OLsN~SN&VJT`|k2}Of%DA zrumPX+1uUceV*U@Jiq5-_T5}jUXq?VFIA`0rF%==et1XJD_IZ!<))@9@OHc@P^I{p z7!r<1yif-ar7;W;5EpozF8+~NQJB$(B)@UHt+^$6<=Q920dC!aQ-6D~_OxZ$=3IiG zS#_h%l}fx#)93ud>u=kTD-mNUFm8#HD%H9lTZKj%j+dO%V%`Y zdtt5dk0&==H3aI{HQ#r$#6izneIXPWXniVWNPqHp+e@EE<}<@zW^~Qbivz`r?+!ov ze#`Li_dMkT&=PcM+opbk^f_$ZO+kXSVL5TjzgOkX@FwrFz%ltd&vX=#{i~ zYGIz?iIz3Tjy?I#Z-2h!P-jMG3vwgr%!R=h&!UU&;CY8zuMWPp;L=6s#ZQxpcE24s zv^aH7J9zPo(fI3!vzqsRv3qvmFIa!DbPMNpT;J^4w=l2opM7)mtGC|RcK((3r5#%`(i|km`7ih71P^|AEHdlR z_FdmOmANTv#qPB^=U;idam%5VFCYAi^JdzNMsd-}XnSreo076Hr>Hm`1gdk2_7=Bo zo;%$C`i)KV*KJ>AI{IGqP*p+J4;S{&zB8+*+njc~GUP|}SKj*YTK|&4kMC)ZetakY z)#1-l2AlPrhhOdaNcUO3cmI*DFYYA{q_0|a#N0UhwNH{ZKBt`6nth_Ia>?BF*U4KQ z*+e|;%KoEoc3rE#rQ`PO{m1tQ2Q%+m>c7_XOzifu$8KN0e{au%q2kD&x}Hh73rnv- zfF)MtyPswy(ZFz05E$ZO7}lOn=U5&OGwd3mAVE+ggq-N5?j95oI4AlOvybqFU7%Jd zZHj=(rt$#Ww1%~F=<@tjN1TQLB2XA4F4l!)I_^X@TpB*BVjM*@6=jVRt@2eME-3;K z%0L+i%o7(HOlW>8;)rlO?ROWCLcljCTB|5w8pmU?m?1_Qq(}{JwA<}CVZu!&3~FF< zV@P4*SV+!QAx1FVKxQLCSP`TUqGB>ZDXKV86s{v<{)u6qZyY`(kFo&yz~f99HyQ|B z6!An0S@ASLkWq)e) zTb6iz72_5v1vP>g)~q1elQb29pCD_JZ|aH`PNE~wd>nU@_E_wiGSu?zHcEf$i% zSewm+Q9*`O{jyjDs76~*38xDyyiU|)ASNUg zb&SG81K0yXh?8RS#8N;IL8Zc|d>XALlif_&jTXv8Qe=Ytk3mF+wWy*R2?I%K=4xVS z7!IVCQ7aV!XmS`0?TP?Kks<*}s&k^MQ;2FgzU+ey#W4!wW)uKH2@^#VHkz;mj24$FQkq4t|>7v zCFSYr`oGbYI&qi+A@~IpgGVLr;A8vXF-spTD{*TFF5OL6_d58L5-xp6*6A{O)hnrA z+QUKNEXC{d%sQK_&&bVes}fg3(W72>VW6sa_;g|Fdg9yeKX_*k{`<*u#hEjE(w3Ii zgD%grNAl*jd!OI-!3P)4uMb?#U$HS)_+8EA6aBfr+P8uL2(fCQXW-qL`+n2$^s?xg ppDjP|-L}?89xgb75hQtgL;BA1cBH$r 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmallCornerLayer.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/GenericPatchSmallCornerLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7a44f8f1b242c02c459fc5f1ec6a7852f7941f GIT binary patch literal 4299 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 wVl?6XCn^p=_-`+ zsQ}^=c$O;%h!pYx1Oz!&r3&_X@;nKfu(*d8Qv6Zz?VsMfbl|-A$j#|dTboX8?k-uI za%6q_Gbd-eqFQo$E6Yl^Y4%n}*HyhQW?T)$f}ZbI&G}Qz%GyuFmR{le{ksd0Ye)94 z-8{H=>%A{-?YMt`#z!?*Oy8+@&H5&#bJo@!lafzwIn*yb{P5&gbDoaLUDb89EVZWj z*i!$geZ9{wZ5Jp5yQ^@+^{8Os>u1wS>5hZXBo=txvG)S+ME)Z(BYx!bYYZMWuhEPSf^#@mbQ+s%b9bk4O^wAR;|7bn#hztNslRDm5EoZe)3 zHbv90vFz;G=C0pws&6}-aCjqfH}b1*zihdM&Rf5GR#9iL`=#jv>jrwR2R2+hh=2ZV zW2Ea7{L|W_ulBrGSG6LFtJZDKsBNso+g{z$clUVBZwCUp*Z#U@s4woh=$#R1+k*{X zS7)Bgu(WYs?-{C1KDZ#Iv#&ETX3e&{+xuI4_&rM!rdafD=Cglx&UC+jsY`gWt@Vwc zElbQ!dhxB7=k~RJ7^-h8I@ET@dT)v?+B2`CqUf!h;>nH{WKq_fBo{R|>qJ&vtzmDs z_20=2>6x0w)k&DJ;PsfK9XDft*mUDmYJI^@Z~pv*!P8gnbU!uYN_5e*zkHwe!R^bF zzkDU;aC^g<%Ta8)gO}QG&AfPK+UnH-LumTZYZ2AW()n$(&o5gt|B0$0{r$Hsm~YD9 zp=0aHnr{w9oXdZ27r$YXt@xziTJK_5kz0SR$~63%Ny2Tq(p5stBS z&X1#M@rXrWSTf(9H4FjYtZ1nu`ADrc5C~`jdJQj>XmtcZXfa%i<7%j(7DHZ%3aY(g zvJ4T%umh16IG@DvUPQ*E+ruBHVV=Y7} z(+@$01Nu=5(FF%pn-4_3LZCsWA9$tYu@DSBYVWHM%9V5&S_{g72dawDtL`zE*$!vk zsD(^H3Fq-CR*>w+G$oFGMAl=m$ty}aV*`QaqqvW0kL0c>LoKJ1wDWX@9G=5&MP>ga z!_yo?Dvznah~Wh8R_hG}rZzB)UQL)&X|)k^vj$3UbOS@`7$}EVlqfF^WGD!(;UEqm z7?aUx0??2JY6GBC)f9`fYQ2%bS(?%lCW;vYu}t7#S5oC;qmrQ*2t`l?n@YiGD9WUV z(GWmQ8FZ{V6*CbmVW#vtw^4y&XflfzJQOS^=b=h~*5@rz7G%Q7j68=G#WmO?NnSZ6 zvCsg{0Ow`+fcR+1#d$!1M9F;WOt@ZWFqn*l86yZhoVbFx90(%pMHy9xY4irgTrLa= z(}C1da;HK7MGmteZ33VqUU2bzxfPWm5ZQ8c*$D@Vp(M&qNdSUkxPipX@N(fgQb&+D z{v3vr*cg4D;n>js(w4^uv4o4B!->#;ND+l+ssOwceha^rbILFwh%y!=MTb)mDL)98 z3u1+r=u*mC0^t5J+^{2Z?njz|1q?+~CbQaXgso)I>2Ngx^gvC!br_B@M%GM)Ng72L zc~%Ng0>~(VJVLHugDPAh^M^~7qOdlqA1DQK9Ux_D%nYv)$_P|DoUB&fF-EerX#a~3 zi=r@Qi-C4w8Qi+yPN*H-3WxcEzJJQka2<_;vXHRfEWG)3c#b%^5^GT;4v%4y(HVN9Jo~XY$slUPm_H)D@Bzmp+o*g zbo2WeD2$aH&dk_badC->b8a*gM?%qlhdskp*m3)kF1`bs8hw$kvRVI?d+fyppOM=x z&imEw+0U-{Xyz~fDAde2*E{v^Z<^wNlitcKOxbs-xp8M-oGSBgd&KHLJaHlPLI3g7 z@3wfGs!@@s`?!lJc{j?uc76YG6kQcJ(9^j5waYasbkQ#+sTMBI_*^waT_N#?oRq3x zf8!ju{@`I!+JmX8qsy;uJooaz%v}57Ma3Kc1MNyKGynhq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/MakeshiftPatchUsed.png b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/MakeshiftPatchUsed.png new file mode 100644 index 0000000000000000000000000000000000000000..140c78a89151d181ab2b45e30b2cd30433dd74ca GIT binary patch literal 4379 zcmeHKd2kcw6<v9y5^jrDBo@S=w zndCof_W1UF@BO~_e&2g<^wm1^a^mCW#z7DiZ_l;mgEuVSvC-fuR#pyz*QH8Vp_ESr z;efz!3jqOq7n#e3UNemQsUfyIZYP442mtDWUvW~Qv%_=mQX`nS6Lb*@zpe)Vr*Zo76- z^PJ?WLwNUQRsZpXrVYQYLiW1tO^w-0=IK+m?~ErTgH^;Z{T8viAAbvJ>I0hL;n=#rsn(eXzJ~|JqP-b7dGykUDO`xSf4OZHPCr0_}Y~t#GmgrOm%%q zT&?|JSLgAqn^ru>ZBf6TS=&%awCvj4`{>jgZw>_2jelG7us1d}YP%wBTd1yoOV*i8 za|_qM=V5K~kwq!(z3sE2*VI4ScIQMVzh|*>x>@69KL1zy^X~VrT@>cDoY+5e>8zZ@ z>2@pNmH?}fIqqNd#9Y4!u~OWD6nbW!uOPiJqfCEx9^JWZ}k z&r&t4PQ-;p`=S$n_f^dIHQi^m;eze{{DsQFb6pQQl4f*86~*8DF74#K>(hE(jXu^| zcmDcwo^(4ewe~%K<$V0=)j_f%;e#&}TlPwq>wj^1>EeYy+w@TLpMz#RFn#dohgGF} zzZz8hDgXG}{A)GV;xo1zcjgT!%OBqB-d+CvMo7{Khu+Is8w9CW&VdvwbSyE^yiY|j zyqi^pd;ySq5M)jd1t_|dm0&kp!uc)8!0Gb{%rO>Zh1P*P0#Pj7fm4x62Ucru`I?AIHDqzT987A6SndK3zI5Rg`-&^uAD&9 z;$XADcue`W>|qG-WkJ?SQow{^!C+7o)Tnr&1XCN0Mhqt~ft#I3xa@oc*H+nz~LB$_lv_U06wq~6~NRg9P|0Gu@<6~RSrOg z9r{5F(FH0M%V$NtOrY7Ua@H>;kA-09QTsrd;EjaC&=~7weLz(NtE$H>nPYc2M=fLu zN;qF2Vg<+^rzvrsXJn1@O`eH_Gu9DcK8ia|dnERVGSG53Og5e_lijo1EQq|miQ#FE zF-3-i)f?SkQ)woJSM$F}nF@bOZ zwUnHx03ad<(U`0POG&)o;(4zHk)48N%h72EC@6-KC>tfQ02C)k6K(*Pi%t0UlyR^A6d8HyXgH9{GQV8g*;a>p2n){OlRALfX{ zm=*)-H{d37aKckfwEJ-sUL{i?6yo-VcWfHsPf~C8BsldjCVka>URRKuT^w7cG*w8 zQy*Q^aZPw*?UZE+F^4nY8B$x??3jJO-}U(G1uv#Id@|)y68+sL@f&t3GMsBJCJj_H zVtHlX_MNJ0Dx2pLA-Es95cZzQeNx(Z`O5A6%?M=Z?aNX@*P8}D3!7`cxe=~k(0Qw_ zrrg+mZqX`8gl;;Q_dS`n^6lT6Ec{<{9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/meta.json b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/meta.json new file mode 100644 index 00000000000..c61ff25f0a6 --- /dev/null +++ b/Resources/Textures/Goobstation/Objects/Medical/medical_patch.rsi/meta.json @@ -0,0 +1,74 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "@jorgun inspired by Studenterhue of Goonstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "GenericPatch" + }, + { + "name": "GenericPatchBorder" + }, + { + "name": "GenericPatch-1" + }, + { + "name": "GenericPatch-2" + }, + { + "name": "GenericPatch-3" + }, + { + "name": "GenericPatch-4" + }, + { + "name": "GenericPatch-5" + }, + { + "name": "GenericPatch-6" + }, + { + "name": "GenericPatch-7" + }, + { + "name": "GenericPatch-8" + }, + { + "name": "GenericPatch-9" + }, + { + "name": "GenericPatchSmall" + }, + { + "name": "GenericPatchSmallCornerLayer" + }, + { + "name": "GenericPatchSmall-1" + }, + { + "name": "GenericPatchSmall-2" + }, + { + "name": "GenericPatchSmall-3" + }, + { + "name": "GenericPatchSmall-4" + }, + { + "name": "GenericPatchSmall-5" + }, + { + "name": "MakeshiftPatch" + }, + { + "name": "MakeshiftPatchUsed" + }, + { + "name": "GenericPatchSmallUsed" + } + ] +}