diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index b32899dc5e..d59291c362 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Inventory; using Content.Server.Pulling; using Content.Server.Stack; using Content.Server.Stunnable; +using Content.Shared._White.MagGloves; using Content.Shared.ActionBlocker; using Content.Shared.Body.Part; using Content.Shared.CombatMode; @@ -93,6 +94,9 @@ namespace Content.Server.Hands.Systems if (args.Handled) return; + if (HasComp(uid)) + return; + // Break any pulls if (TryComp(uid, out SharedPullerComponent? puller) && puller.Pulling is EntityUid pulled && TryComp(pulled, out SharedPullableComponent? pullable)) diff --git a/Content.Server/Standing/StandingStateSystem.cs b/Content.Server/Standing/StandingStateSystem.cs index e2b6495844..903c88d0f3 100644 --- a/Content.Server/Standing/StandingStateSystem.cs +++ b/Content.Server/Standing/StandingStateSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Standing; using Content.Shared.Throwing; +using Content.Shared._White.MagGloves; using Robust.Shared.Physics.Components; using Robust.Shared.Random; @@ -31,8 +32,11 @@ public sealed class StandingStateSystem : EntitySystem if (hand.HeldEntity is not EntityUid held) continue; - if (!_handsSystem.TryDrop(uid, hand, null, checkActionBlocker: false, handsComp: handsComp)) - continue; + if (!HasComp(uid)) + { + if (!_handsSystem.TryDrop(uid, hand, null, checkActionBlocker: false, handsComp: handsComp)) + continue; + } _throwingSystem.TryThrow(held, _random.NextAngle().RotateVec(direction / dropAngle + worldRotation / 50), diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index 50a9cb9b69..fa825d6231 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -18,6 +18,7 @@ using Content.Shared.Popups; using Content.Shared.Strip; using Content.Shared.Strip.Components; using Content.Shared.Verbs; +using Content.Shared._White.MagGloves; using Robust.Server.GameObjects; using Robust.Shared.Player; using Robust.Shared.Utility; @@ -71,6 +72,13 @@ namespace Content.Server.Strip !TryComp(user, out var userHands)) return; + if ((args.Slot == "gloves" || args.IsHand) && TryComp(strippable, out PreventStrippingFromHandsAndGlovesComponent? mag)) + { + var message = Loc.GetString("maggloves-cant-strip"); + _popup.PopupEntity(message, user, user); + return; + } + if (args.IsHand) { StripHand(user, args.Slot, strippable, userHands); diff --git a/Content.Server/_White/MagGloves/MagneticGlovesSystem.cs b/Content.Server/_White/MagGloves/MagneticGlovesSystem.cs new file mode 100644 index 0000000000..37f61b0522 --- /dev/null +++ b/Content.Server/_White/MagGloves/MagneticGlovesSystem.cs @@ -0,0 +1,116 @@ +using Content.Server.Emp; +using Content.Server.Power.Components; +using Content.Shared.Examine; +using Content.Shared.Inventory.Events; +using Content.Shared._White.MagGloves; +using Content.Shared.Popups; +using Robust.Shared.Containers; +using Robust.Shared.Timing; + +namespace Content.Server._White.MagGloves; + +/// +/// This handles... +/// +public sealed class MagneticGlovesSystem : EntitySystem +{ + + [Dependency] private readonly SharedContainerSystem _sharedContainer = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + /// + public override void Initialize() + { + SubscribeLocalEvent(OnGotEquipped); + SubscribeLocalEvent(OnGotUnequipped); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnEmp); + } + + public override void Update(float frameTime) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var gloves)) + { + if (_gameTiming.CurTime > gloves.GlovesLastActivation + gloves.GlovesActiveTime && gloves.Enabled) + { + RaiseLocalEvent(uid, new ToggleMagneticGlovesEvent()); + } + + } + } + + public void OnEmp(EntityUid uid, MagneticGlovesComponent component, EmpPulseEvent args) + { + if (component.Enabled) + { + RaiseLocalEvent(uid, new ToggleMagneticGlovesEvent()); + } + } + + public void OnGotUnequipped(EntityUid uid, MagneticGlovesComponent component, GotUnequippedEvent args) + { + if (args.Slot == "gloves") + { + ToggleGloves(args.Equipee, component, false, uid); + } + + if (component.Enabled) + { + _popup.PopupEntity(Loc.GetString("maggloves-deactivated"), uid, args.Equipee); + RaiseLocalEvent(uid, new ToggleMagneticGlovesEvent()); + } + } + + public void OnGotEquipped(EntityUid uid, MagneticGlovesComponent component, GotEquippedEvent args) + { + if (args.Slot == "gloves") + { + ToggleGloves(args.Equipee, component, true, uid); + } + } + + public void ToggleGloves(EntityUid owner, MagneticGlovesComponent component, bool active, EntityUid uid) + { + if (!active) + { + RemComp(owner); + if (TryComp(uid, out var adv)) + { + RemComp(owner); + RemComp(owner); + } + } + else if (component.Enabled) + { + EnsureComp(owner); + if (TryComp(uid, out var adv)) + { + EnsureComp(owner); + EnsureComp(owner); + } + } + } + + public void OnExamined(EntityUid uid, MagneticGlovesComponent component, ExaminedEvent args) + { + + if (!args.IsInDetailsRange) + return; + + var message = Loc.GetString("maggloves-ready-in") + " " + component.GlovesReadyAt.Subtract(_gameTiming.CurTime).TotalSeconds.ToString("0"); + + if (component.GlovesReadyAt < _gameTiming.CurTime) + { + message = Loc.GetString("maggloves-ready"); + } + + if (component.Enabled) + { + message = Loc.GetString("maggloves-enabled-till") + " " + (component.GlovesLastActivation + .Add(component.GlovesActiveTime).Subtract(_gameTiming.CurTime).TotalSeconds.ToString("0")); + } + + args.PushMarkup(message); + } +} diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index dacf2910cb..3ca1a057c9 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -22,6 +22,7 @@ using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; using Content.Shared._White; +using Content.Shared._White.MagGloves; using Content.Shared._White.Chaplain; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; diff --git a/Content.Shared/_White/MagGloves/KeepItemsOnFallComponent.cs b/Content.Shared/_White/MagGloves/KeepItemsOnFallComponent.cs new file mode 100644 index 0000000000..bdfb39dbf5 --- /dev/null +++ b/Content.Shared/_White/MagGloves/KeepItemsOnFallComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared._White.MagGloves; + +/// +/// This is used to prevent entity loose it's items on fall. +/// +[RegisterComponent] +public sealed partial class KeepItemsOnFallComponent : Component +{ + +} diff --git a/Content.Shared/_White/MagGloves/MagneticGlovesAdvancedComponent.cs b/Content.Shared/_White/MagGloves/MagneticGlovesAdvancedComponent.cs new file mode 100644 index 0000000000..1a0755a012 --- /dev/null +++ b/Content.Shared/_White/MagGloves/MagneticGlovesAdvancedComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._White.MagGloves; + +/// +/// This is used as a marker for advanced magnetic gloves. +/// +[RegisterComponent, AutoGenerateComponentState] +public sealed partial class MagneticGlovesAdvancedComponent : Component +{ + [DataField, AutoNetworkedField] + public EntityUid? ToggleActionEntity; + + [DataField] + public EntProtoId ToggleAction = "ActionToggleMagneticGlovesAdvanced"; +} diff --git a/Content.Shared/_White/MagGloves/MagneticGlovesComponent.cs b/Content.Shared/_White/MagGloves/MagneticGlovesComponent.cs new file mode 100644 index 0000000000..ed2319f299 --- /dev/null +++ b/Content.Shared/_White/MagGloves/MagneticGlovesComponent.cs @@ -0,0 +1,31 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._White.MagGloves; + +/// +/// This is used for... +/// +[RegisterComponent, AutoGenerateComponentState] +public sealed partial class MagneticGlovesComponent : Component +{ + [ViewVariables] + public bool Enabled { get; set; } = false; + + [DataField, AutoNetworkedField] + public EntityUid? ToggleActionEntity; + + [DataField("action")] + public EntProtoId ToggleAction = "ActionToggleMagneticGloves"; + + [ViewVariables(VVAccess.ReadOnly)] + public TimeSpan GlovesReadyAt = TimeSpan.Zero; + + [ViewVariables(VVAccess.ReadOnly)] + public TimeSpan GlovesLastActivation = TimeSpan.Zero; + + [DataField("glovesCooldown")] + public TimeSpan GlovesCooldown = TimeSpan.FromSeconds(60); + + [DataField("glovesActiveTime")] + public TimeSpan GlovesActiveTime = TimeSpan.FromSeconds(60); +} diff --git a/Content.Shared/_White/MagGloves/PreventDisarmComponent.cs b/Content.Shared/_White/MagGloves/PreventDisarmComponent.cs new file mode 100644 index 0000000000..7298e192d7 --- /dev/null +++ b/Content.Shared/_White/MagGloves/PreventDisarmComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared._White.MagGloves; + +/// +/// This is used to prevent disarming when magnetic gloves are enabled. +/// +[RegisterComponent] +public sealed partial class PreventDisarmComponent : Component +{ + +} diff --git a/Content.Shared/_White/MagGloves/PreventStrippingFromHandsAndGlovesComponent.cs b/Content.Shared/_White/MagGloves/PreventStrippingFromHandsAndGlovesComponent.cs new file mode 100644 index 0000000000..ffc7d878df --- /dev/null +++ b/Content.Shared/_White/MagGloves/PreventStrippingFromHandsAndGlovesComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared._White.MagGloves; + +/// +/// This is used to block stripping when magnetic gloves are enabled. +/// +[RegisterComponent] +public sealed partial class PreventStrippingFromHandsAndGlovesComponent : Component +{ + +} diff --git a/Content.Shared/_White/MagGloves/SharedMagneticGlovesSystem.cs b/Content.Shared/_White/MagGloves/SharedMagneticGlovesSystem.cs new file mode 100644 index 0000000000..052395f93d --- /dev/null +++ b/Content.Shared/_White/MagGloves/SharedMagneticGlovesSystem.cs @@ -0,0 +1,107 @@ +using Content.Shared.Actions; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.Inventory; +using Content.Shared.Item; +using Content.Shared.Popups; +using Content.Shared.Toggleable; +using Robust.Shared.Containers; +using Robust.Shared.Network; +using Robust.Shared.Timing; + +namespace Content.Shared._White.MagGloves; + +/// +/// This handles... +/// +public sealed class SharedMagneticGlovesSystem : EntitySystem + +{ + [Dependency] private readonly SharedActionsSystem _sharedActions = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedContainerSystem _sharedContainer = default!; + [Dependency] private readonly SharedItemSystem _item = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly ClothingSystem _clothing = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly INetManager _net = default!; + public override void Initialize() + { + SubscribeLocalEvent(OnGetActions); + SubscribeLocalEvent(OnToggleGloves); + } + + public void OnGetActions(EntityUid uid, MagneticGlovesComponent component, GetItemActionsEvent args) + { + if (!args.InHands) + { + args.AddAction(ref component.ToggleActionEntity, component.ToggleAction); + } + + } + + public void OnToggleGloves(EntityUid uid, MagneticGlovesComponent component, ToggleMagneticGlovesEvent args) + { + if (args.Handled || _net.IsClient) + return; + + _sharedContainer.TryGetContainingContainer(uid, out var container); + + if (!component.Enabled) + { + if (component.GlovesReadyAt > _gameTiming.CurTime) + { + if (container != null) + { + _popup.PopupEntity(Loc.GetString("maggloves-not-ready"), uid, container.Owner); + } + return; + } + // If the gloves are not enabled, we want to activate them. + component.Enabled = true; + component.GlovesLastActivation = _gameTiming.CurTime; + _sharedActions.SetToggled(component.ToggleActionEntity, component.Enabled); + + if (container != null) + { + _popup.PopupEntity(Loc.GetString("maggloves-activated"), uid, container.Owner); + EnsureComp(container.Owner); + if (TryComp(uid, out var adv)) + { + EnsureComp(container.Owner); + EnsureComp(container.Owner); + } + } + } + else + { + component.Enabled = false; + _sharedActions.SetToggled(component.ToggleActionEntity, component.Enabled); + component.GlovesReadyAt = _gameTiming.CurTime + component.GlovesCooldown; + + if (container != null) + { + _popup.PopupEntity(Loc.GetString("maggloves-deactivated"), uid, container.Owner); + RemComp(container.Owner); + if (TryComp(uid, out var adv)) + { + RemComp(container.Owner); + RemComp(container.Owner); + } + } + } + + if (TryComp(uid, out var appearance) && + TryComp(uid, out var item)) + { + _item.SetHeldPrefix(uid, component.Enabled ? "on" : "off", false, item); + _appearance.SetData(uid, ToggleVisuals.Toggled, component.Enabled, appearance); + _clothing.SetEquippedPrefix(uid, component.Enabled ? "on" : null); + } + + args.Handled = true; + } + +} + +public sealed partial class ToggleMagneticGlovesEvent : InstantActionEvent {} diff --git a/Resources/Locale/en-US/white/magnetic-gloves.ftl b/Resources/Locale/en-US/white/magnetic-gloves.ftl new file mode 100644 index 0000000000..235951a52a --- /dev/null +++ b/Resources/Locale/en-US/white/magnetic-gloves.ftl @@ -0,0 +1,10 @@ +maggloves-ready = Gloves are ready to use. +maggloves-ready-in = Gloves will be ready in +research-technology-lightweight-magnets = Lightweight Magnets +research-technology-advanced-grips = Advanced Grips +maggloves-not-ready = The gloves are not ready yet +maggloves-already-active = The gloves are already active +maggloves-enabled-till = The gloves are enabled for +maggloves-cant-strip = Magnetic gloves are strongly attached to the item +maggloves-activated = Magnetic gloves activated +maggloves-deactivated = Magnetic gloves deactivated diff --git a/Resources/Locale/ru-RU/White/magnetic-gloves.ftl b/Resources/Locale/ru-RU/White/magnetic-gloves.ftl new file mode 100644 index 0000000000..40a1d0c71f --- /dev/null +++ b/Resources/Locale/ru-RU/White/magnetic-gloves.ftl @@ -0,0 +1,19 @@ +ent-ClothingHandsGlovesMagnetic = магнитные перчатки + .desc = перчатки оснащенные специальными магнитными захватами, что позволяют вещам оставаться в ваших руках после свободного падения. +ent-ClothingHandsGlovesMagneticAdvanced = продвинутые магнитные перчатки + .desc = продвинутые магнитные перчатки оснащенные более мощными захватами, что дополнительно предотвращают возможность разоружения и кражи из рук носителя. +ent-ActionToggleMagneticGloves = активировать магнитные перчатки + .desc = Предотвращает выпадение предметов из рук при падении. +ent-ActionToggleMagneticGlovesAdvanced = активировать продвинутые магнитные перчатки + .desc = Предотвращает выпадение предметов из рук при падении и предотвращает возможность разоружения и кражи из рук носителя. + +maggloves-ready = Перчатки готовы к использованию +maggloves-ready-in = Перчатки будут готовы к использованию через +research-technology-lightweight-magnets = Облегчённые магниты +research-technology-advanced-grips = Продвинутые захваты +maggloves-not-ready = Перчатки не готовы к использованию +maggloves-already-active = Перчатки уже активированы +maggloves-enabled-till = Перчатки будут активны еще +maggloves-cant-strip = Магнитные перчатки надежно удерживают предмет +maggloves-activated = Магнитные перчатки включены +maggloves-deactivated = Магнитные перчатки выключены diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7d4858eca9..d4d549f26d 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -762,6 +762,8 @@ - ShuttleGunPerforatorCircuitboard - ShuttleGunFriendshipCircuitboard - ShuttleGunDusterCircuitboard + - ClothingHandsGlovesMagnetic + - ClothingHandsGlovesMagneticAdvanced - type: EmagLatheRecipes emagStaticRecipes: - MagazineLightRifleBox diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index 217be21cd6..7cde196832 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -166,6 +166,7 @@ - ProjectileBatteryAmmoProvider - Stunbaton - TwoModeEnergyAmmoProvider + - MagneticGloves - type: entity parent: BaseItemRecharger @@ -190,6 +191,7 @@ - Stunbaton - TwoModeEnergyAmmoProvider - PowerCell + - MagneticGloves blacklist: tags: - PotatoBattery diff --git a/Resources/Prototypes/Entities/White/mag-gloves.yml b/Resources/Prototypes/Entities/White/mag-gloves.yml new file mode 100644 index 0000000000..ff87e36ddb --- /dev/null +++ b/Resources/Prototypes/Entities/White/mag-gloves.yml @@ -0,0 +1,77 @@ +- type: entity + parent: ClothingHandsBase + id: ClothingHandsGlovesMagnetic + name: magnetic gloves + description: A pair of gloves with magnetic palms. Slip proof. + components: + - type: Sprite + sprite: White/MagGloves/maggloves.rsi + layers: + - state: icon +# map: [ "enum.ToggleVisuals.Layer" ] + - type: Clothing + sprite: White/MagGloves/maggloves.rsi + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ToggleVisuals.Toggled: + enum.ToggleVisuals.Layer: + True: {state: icon-on} + False: {state: icon} + - type: GloveHeatResistance + heatResistance: 1400 + - type: Fiber + fiberMaterial: fibers-nanomachines + - type: FingerprintMask + - type: MagneticGloves + glovesActiveTime: 60 + glovesCooldown: 60 + +- type: entity + id: ClothingHandsGlovesMagneticAdvanced + parent: ClothingHandsGlovesMagnetic + name: advanced magnetic gloves + description: A pair of gloves with magnetic palms. Slip proof. + components: + - type: Sprite + sprite: White/MagGloves/magglovesadvanced.rsi + layers: + - state: icon + - type: Clothing + sprite: White/MagGloves/magglovesadvanced.rsi + - type: MagneticGlovesAdvanced + - type: MagneticGloves + action: ActionToggleMagneticGlovesAdvanced + glovesActiveTime: 80 + +- type: entity + id: ActionToggleMagneticGlovesBase + name: Toggle Magnetic Gloves + description: Toggles Magnetic Gloves on and off + noSpawn: true + components: + - type: InstantAction + itemIconStyle: NoItem + event: !type:ToggleMagneticGlovesEvent + +- type: entity + id: ActionToggleMagneticGloves + parent: ActionToggleMagneticGlovesBase + name: Toggle Magnetic Gloves + description: Prevents owner from losing items from hands on fall. + noSpawn: true + components: + - type: InstantAction + icon: { sprite: White/MagGloves/maggloves.rsi, state: icon } + iconOn: { sprite: White/MagGloves/maggloves.rsi, state: icon-on } + +- type: entity + id: ActionToggleMagneticGlovesAdvanced + parent: ActionToggleMagneticGlovesBase + name: Toggle Magnetic Gloves + description: Prevents owner from losing items from hands on fall, being disarmed or robbed. + noSpawn: true + components: + - type: InstantAction + icon: { sprite: White/MagGloves/magglovesadvanced.rsi, state: icon } + iconOn: { sprite: White/MagGloves/magglovesadvanced.rsi, state: icon-on } diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 56fb788940..5e16440cd1 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -647,3 +647,21 @@ Plastic: 100 Glass: 20 +- type: latheRecipe + id: ClothingHandsGlovesMagnetic + result: ClothingHandsGlovesMagnetic + completetime: 3 + materials: + Cloth: 200 + Steel: 100 + Plastic: 50 + +- type: latheRecipe + id: ClothingHandsGlovesMagneticAdvanced + result: ClothingHandsGlovesMagneticAdvanced + completetime: 3 + materials: + Cloth: 200 + Steel: 100 + Plastic: 50 + Silver: 50 diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 38ed0ceec8..1166b65417 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -104,6 +104,18 @@ # Tier 2 +- type: technology + id: LightweightMagnets + name: research-technology-lightweight-magnets + icon: + sprite: White/MagGloves/maggloves.rsi + state: icon + discipline: Arsenal + tier: 2 + cost: 7500 + recipeUnlocks: + - ClothingHandsGlovesMagnetic + - type: technology id: ExplosiveTechnology name: research-technology-explosive-technology @@ -149,7 +161,7 @@ - type: technology id: BasicShuttleArmament name: research-technology-basic-shuttle-armament - icon: + icon: sprite: Structures/Power/cage_recharger.rsi state: full discipline: Arsenal @@ -169,6 +181,18 @@ # Tier 3 +- type: technology + id: AdvancedGrips + name: research-technology-advanced-grips + icon: + sprite: White/MagGloves/magglovesadvanced.rsi + state: icon + discipline: Arsenal + tier: 3 + cost: 10000 + recipeUnlocks: + - ClothingHandsGlovesMagneticAdvanced + - type: technology id: PortableMicrofusionWeaponry name: research-technology-portable-microfusion-weaponry @@ -192,11 +216,11 @@ cost: 15000 recipeUnlocks: - WeaponLaserSvalinn - + - type: technology id: AdvancedShuttleWeapon name: research-technology-advanced-shuttle-weapon - icon: + icon: sprite: Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi state: icon discipline: Arsenal diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/equipped-HAND.png b/Resources/Textures/White/MagGloves/maggloves.rsi/equipped-HAND.png new file mode 100644 index 0000000000..4bfc6c769c Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/icon-on.png b/Resources/Textures/White/MagGloves/maggloves.rsi/icon-on.png new file mode 100644 index 0000000000..c5dd0ca2a2 Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/icon-on.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/icon.png b/Resources/Textures/White/MagGloves/maggloves.rsi/icon.png new file mode 100644 index 0000000000..3d11bb1581 Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/icon.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/inhand-left.png b/Resources/Textures/White/MagGloves/maggloves.rsi/inhand-left.png new file mode 100644 index 0000000000..09920df2b6 Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/inhand-right.png b/Resources/Textures/White/MagGloves/maggloves.rsi/inhand-right.png new file mode 100644 index 0000000000..9d58d8aeea Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/meta.json b/Resources/Textures/White/MagGloves/maggloves.rsi/meta.json new file mode 100644 index 0000000000..29234d0c52 --- /dev/null +++ b/Resources/Textures/White/MagGloves/maggloves.rsi/meta.json @@ -0,0 +1,41 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 edited by Skarletto (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-on" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "on-equipped-HAND", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "on-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/on-equipped-HAND.png b/Resources/Textures/White/MagGloves/maggloves.rsi/on-equipped-HAND.png new file mode 100644 index 0000000000..c118d5cba7 Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/on-equipped-HAND.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/on-inhand-left.png b/Resources/Textures/White/MagGloves/maggloves.rsi/on-inhand-left.png new file mode 100644 index 0000000000..4bd3632e4e Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/White/MagGloves/maggloves.rsi/on-inhand-right.png b/Resources/Textures/White/MagGloves/maggloves.rsi/on-inhand-right.png new file mode 100644 index 0000000000..813c7e8090 Binary files /dev/null and b/Resources/Textures/White/MagGloves/maggloves.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/equipped-HAND.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/equipped-HAND.png new file mode 100644 index 0000000000..eb12afbf7a Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/icon-on.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/icon-on.png new file mode 100644 index 0000000000..8197fff968 Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/icon-on.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/icon.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/icon.png new file mode 100644 index 0000000000..fefad2bf3b Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/icon.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/inhand-left.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/inhand-left.png new file mode 100644 index 0000000000..bba01d8b9b Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/inhand-right.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/inhand-right.png new file mode 100644 index 0000000000..62babe2897 Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/meta.json b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/meta.json new file mode 100644 index 0000000000..29234d0c52 --- /dev/null +++ b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/meta.json @@ -0,0 +1,41 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 edited by Skarletto (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-on" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "on-equipped-HAND", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "on-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-equipped-HAND.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-equipped-HAND.png new file mode 100644 index 0000000000..1c05b04654 Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-equipped-HAND.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-inhand-left.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-inhand-left.png new file mode 100644 index 0000000000..b655cc9b67 Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-inhand-right.png b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-inhand-right.png new file mode 100644 index 0000000000..457c1c6492 Binary files /dev/null and b/Resources/Textures/White/MagGloves/magglovesadvanced.rsi/on-inhand-right.png differ