diff --git a/Content.Server/ExCable/ExCableNodeGroup.cs b/Content.Server/ExCable/ExCableNodeGroup.cs new file mode 100644 index 0000000000..b505fbad94 --- /dev/null +++ b/Content.Server/ExCable/ExCableNodeGroup.cs @@ -0,0 +1,14 @@ +using Content.Server.NodeContainer.NodeGroups; +using Content.Shared.NodeContainer.NodeGroups; +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; + +namespace Content.Server.ExCable; + +/// +/// Dummy Node group class for handling the explosive cables. +/// +[NodeGroup(NodeGroupID.ExCable)] +public sealed class ExCableNodeGroup : BaseNodeGroup +{ +} diff --git a/Content.Server/Interaction/InteractionSystem.cs b/Content.Server/Interaction/InteractionSystem.cs index 9ac82b2185..c5488f458c 100644 --- a/Content.Server/Interaction/InteractionSystem.cs +++ b/Content.Server/Interaction/InteractionSystem.cs @@ -1,12 +1,6 @@ using Content.Shared.Interaction; -using Content.Shared.Storage; -using JetBrains.Annotations; -using Robust.Server.GameObjects; -using Robust.Shared.Containers; -using Robust.Shared.Player; namespace Content.Server.Interaction { - // TODO Remove Shared prefix public sealed class InteractionSystem : SharedInteractionSystem; } diff --git a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs index 7b55e20f8a..ee72f89abb 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs @@ -447,6 +447,7 @@ namespace Content.Server.NodeContainer.EntitySystems NodeGroupID.Pipe => Color.Blue, NodeGroupID.WireNet => Color.DarkMagenta, NodeGroupID.Teg => Color.Red, + NodeGroupID.ExCable => Color.Pink, _ => Color.White }; } diff --git a/Content.Server/Power/Components/CablePlacerComponent.cs b/Content.Server/Power/Components/CablePlacerComponent.cs index d52cfa118a..4674692c4a 100644 --- a/Content.Server/Power/Components/CablePlacerComponent.cs +++ b/Content.Server/Power/Components/CablePlacerComponent.cs @@ -1,16 +1,35 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Content.Shared.Power; +using Content.Shared.Whitelist; namespace Content.Server.Power.Components { [RegisterComponent] public sealed partial class CablePlacerComponent : Component { + /// + /// The structure prototype for the cable coil to place. + /// [DataField("cablePrototypeID", customTypeSerializer:typeof(PrototypeIdSerializer))] public string? CablePrototypeId = "CableHV"; + /// + /// What kind of wire prevents placing this wire over it as CableType. + /// [DataField("blockingWireType")] public CableType BlockingCableType = CableType.HighVoltage; + + /// + /// Blacklist for things the cable cannot be placed over. For things that arent cables with CableTypes. + /// + [DataField] + public EntityWhitelist Blacklist = new(); + + /// + /// Whether the placed cable should go over tiles or not. + /// + [DataField] + public bool OverTile; } } diff --git a/Content.Server/Power/EntitySystems/CableSystem.Placer.cs b/Content.Server/Power/EntitySystems/CableSystem.Placer.cs index 55d517cf7d..79ea6b5285 100644 --- a/Content.Server/Power/EntitySystems/CableSystem.Placer.cs +++ b/Content.Server/Power/EntitySystems/CableSystem.Placer.cs @@ -4,6 +4,7 @@ using Content.Shared.Database; using Content.Shared.Interaction; using Content.Shared.Maps; using Content.Shared.Stacks; +using Content.Shared.Whitelist; using Robust.Shared.Map.Components; namespace Content.Server.Power.EntitySystems; @@ -13,6 +14,7 @@ public sealed partial class CableSystem [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; private void InitializeCablePlacer() { @@ -35,12 +37,14 @@ public sealed partial class CableSystem var snapPos = _map.TileIndicesFor((gridUid, grid), args.ClickLocation); var tileDef = (ContentTileDefinition)_tileManager[_map.GetTileRef(gridUid, grid, snapPos).Tile.TypeId]; - if (!tileDef.IsSubFloor || !tileDef.Sturdy) + if ((!component.OverTile && !tileDef.IsSubFloor) || !tileDef.Sturdy) return; - foreach (var anchored in _map.GetAnchoredEntities((gridUid, grid), snapPos)) { + if (_whitelistSystem.IsBlacklistPass(component.Blacklist, anchored)) + return; + if (TryComp(anchored, out var wire) && wire.CableType == component.BlockingCableType) return; } diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index 4b5dd7290c..cdbac12d80 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -1,19 +1,11 @@ -using Content.Server.Administration.Managers; -using Content.Shared.Administration; using Content.Shared.Explosion; -using Content.Shared.Ghost; using Content.Shared.Hands; -using Content.Shared.Lock; using Content.Shared.Storage; using Content.Shared.Storage.Components; using Content.Shared.Storage.EntitySystems; -using Content.Shared.Verbs; -using Robust.Server.GameObjects; using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Prototypes; -using Robust.Shared.Utility; - namespace Content.Server.Storage.EntitySystems; public sealed partial class StorageSystem : SharedStorageSystem @@ -24,7 +16,6 @@ public sealed partial class StorageSystem : SharedStorageSystem { base.Initialize(); SubscribeLocalEvent(OnExploded); - SubscribeLocalEvent(OnStorageFillMapInit); } diff --git a/Content.Shared/NodeContainer/NodeGroups/NodeGroupID.cs b/Content.Shared/NodeContainer/NodeGroups/NodeGroupID.cs index 214e9c50ce..f76a4f9022 100644 --- a/Content.Shared/NodeContainer/NodeGroups/NodeGroupID.cs +++ b/Content.Shared/NodeContainer/NodeGroups/NodeGroupID.cs @@ -16,4 +16,5 @@ public enum NodeGroupID : byte /// /// Teg, + ExCable, } diff --git a/Content.Shared/Power/PowerMonitoringCableNetworksComponent.cs b/Content.Shared/Power/PowerMonitoringCableNetworksComponent.cs index 75ac8869ed..5a79100d5f 100644 --- a/Content.Shared/Power/PowerMonitoringCableNetworksComponent.cs +++ b/Content.Shared/Power/PowerMonitoringCableNetworksComponent.cs @@ -34,6 +34,6 @@ public struct PowerCableChunk public PowerCableChunk(Vector2i origin) { Origin = origin; - PowerCableData = new int[3]; + PowerCableData = new int[Enum.GetNames(typeof(CableType)).Length]; } } diff --git a/Content.Shared/Power/SharedPower.cs b/Content.Shared/Power/SharedPower.cs index d45fb96cac..554146b731 100644 --- a/Content.Shared/Power/SharedPower.cs +++ b/Content.Shared/Power/SharedPower.cs @@ -31,6 +31,7 @@ namespace Content.Shared.Power HighVoltage, MediumVoltage, Apc, + ExCable } [Serializable, NetSerializable] diff --git a/Resources/Locale/en-US/stack/stacks.ftl b/Resources/Locale/en-US/stack/stacks.ftl index acc7cdba64..6ff0906b83 100644 --- a/Resources/Locale/en-US/stack/stacks.ftl +++ b/Resources/Locale/en-US/stack/stacks.ftl @@ -36,6 +36,10 @@ stack-hv-cable = {$amount -> [1] hv cable *[other] hv cables } +stack-explosive-cord = {$amount -> + [1] explosive cord + *[other] explosive cords +} stack-wood-plank = {$amount -> [1] wood plank *[other] wood planks diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml index 818810d0cc..2f9decab7d 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml @@ -135,3 +135,24 @@ layers: - state: box_security - state: forensic + +- type: entity + parent: BoxCardboard + id: BoxDetonator + name: detonator box + description: A box of explosive detonators and triggers. + components: + - type: Item + shape: + - 0,0,1,1 + - type: StorageFill + contents: + - id: EmptyDetonator + amount: 3 + - id: TimerTrigger + amount: 2 + - id: VoiceTrigger + - type: Sprite + layers: + - state: box_security + - state: trigger diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml index c6943a63e3..af5538fd34 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml @@ -17,7 +17,7 @@ sprite: Objects/Devices/timer.rsi state: timer - type: Item - size: Small + size: Tiny - type: StaticPrice price: 40 - type: PayloadTrigger @@ -79,6 +79,8 @@ name: voice trigger description: Adds a machine link that is triggered by vocal keywords. components: + - type: Item + size: Tiny - type: Sprite sprite: Objects/Devices/voice.rsi state: voice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml new file mode 100644 index 0000000000..4b91c444b7 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml @@ -0,0 +1,115 @@ +# Explosive cable below +- type: entity + parent: [ CableStack, BaseSecurityContraband ] + id: CableDetStack + name: explosive cord + suffix: Full + description: Explosive cord for removing whatever is in your way. + components: + - type: Stack + stackType: CableDet + baseLayer: base + layerStates: + - coilex-10 + - coilex-20 + - coilex-30 + - type: Sprite + state: coilex-30 + layers: + - state: coilex-30 + map: ["base"] + - type: Item + heldPrefix: coilex + - type: CablePlacer + cablePrototypeID: CableDet + blockingWireType: ExCable + blacklist: + tags: + - ExCable + overTile: true + - type: Appearance + - type: Extractable + grindableSolutionName: excable + - type: SolutionContainerManager + solutions: + mvcable: + reagents: + - ReagentId: Thermite + Quantity: 3 + - ReagentId: Charcoal + Quantity: 2 + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible # should have the same general explosive behavior as in cables.yml & detonator.yml + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Structural # as close as we can get to only letting explosives trigger it. + damage: 120 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:ExplodeBehavior + - trigger: + !type:DamageTrigger # the idea here is to prevent you from just beating it until it explodes. + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - type: Explosive + explosionType: DemolitionCharge + totalIntensity: 60 + intensitySlope: 5 + maxIntensity: 30 + canCreateVacuum: false + - type: Tag + tags: + - Payload + # - type: Sticky #While cool, this doesn't actually work because the structure prevents the explosion from the cable reaching the stickied wire. + # stickDelay: 5 + # unstickDelay: 5 + # whitelist: + # components: + # - Airlock + # tags: + # - Window + # - Wall + # - type: StickyVisualizer + +- type: entity + parent: CableDetStack + id: CableDetStack10 + suffix: 10 + components: + - type: Sprite + state: coilex-10 + - type: Stack + count: 10 + - type: Explosive # TODO: some how make stacking logic handle the explosion scaling. Maybe also something for lingering stacks. + explosionType: DemolitionCharge + totalIntensity: 30 + intensitySlope: 5 + maxIntensity: 15 + canCreateVacuum: false + - type: Tag + tags: + - Payload + +- type: entity + parent: CableDetStack + id: CableDetStack1 + suffix: 1 + components: + - type: Sprite + state: coilex-10 + - type: Stack + count: 1 + - type: Explosive + explosionType: DemolitionCharge + totalIntensity: 10 + intensitySlope: 5 + maxIntensity: 5 + canCreateVacuum: false + - type: Tag + tags: + - Payload diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml new file mode 100644 index 0000000000..d92cf1f77b --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml @@ -0,0 +1,77 @@ +- type: entity + parent: [ BaseItem, BaseSecurityContraband ] + id: EmptyDetonator + name: detonator cap + description: A detonator cap. Requires a trigger and wire. + components: + - type: Sprite + sprite: Objects/Weapons/Bombs/detonator.rsi + layers: + - state: empty + map: [ "enum.ConstructionVisuals.Layer" ] + - type: Item + size: Small + - type: PayloadCase + - type: Construction + graph: DetonatorGraph + node: emptyDetonator + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Structural # as close as we can get to only letting explosives trigger it. + damage: 120 + behaviors: + - !type:TriggerBehavior + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger # the idea here is to prevent you from just beating it until it explodes. + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ConstructionVisuals.Key: + enum.ConstructionVisuals.Layer: + emptyDetonator: { state: empty } + detonatorWithTrigger: { state: addtrigger } + wiredDetonator: { state: complete } + enum.Trigger.TriggerVisuals.VisualState: + enum.ConstructionVisuals.Layer: + Primed: { state: primed } + Unprimed: { state: complete } + - type: StaticPrice + price: 25 + +- type: entity + parent: EmptyDetonator + id: WiredDetonator + name: detonator cap + description: A detonator cap. + categories: [ HideSpawnMenu ] + components: + - type: Explosive # this is the cord, but its a little smaller because I dont want these to be grenades. They need to not really break walls themselves, but do enough to set off the cable. ~125 structural. + explosionType: DemolitionCharge + totalIntensity: 2.5 + intensitySlope: 100 + maxIntensity: 2.5 + canCreateVacuum: false + - type: ExplodeOnTrigger + - type: Sticky + stickDelay: 2 + unstickDelay: 2 + stickPopupStart: comp-sticky-start-stick-bomb + stickPopupSuccess: comp-sticky-success-stick-bomb + unstickPopupStart: comp-sticky-start-unstick-bomb + unstickPopupSuccess: comp-sticky-success-unstick-bomb + whitelist: + tags: + - ExCable + blacklist: # can't stick it to other items + components: + - Item diff --git a/Resources/Prototypes/Entities/Structures/Power/cables.yml b/Resources/Prototypes/Entities/Structures/Power/cables.yml index 2a4f1c7f1c..4722b6e0b7 100644 --- a/Resources/Prototypes/Entities/Structures/Power/cables.yml +++ b/Resources/Prototypes/Entities/Structures/Power/cables.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - id: CableBase + id: CablePhysBase placement: mode: SnapgridCenter components: @@ -13,11 +13,21 @@ - type: Transform anchored: true noRot: true - # TODO: Remove both of these, same with CollideOnAnchor + # TODO: Remove both of these, same with CollideOnAnchor - type: Physics bodyType: Static canCollide: false - type: Fixtures + - type: CollideOnAnchor + - type: Appearance + +- type: entity + abstract: true + parent: CablePhysBase + id: CableBase + components: + - type: Visibility + layer: 1 - type: Sprite drawdepth: ThinWire visible: false @@ -33,8 +43,6 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: SubFloorHide - - type: CollideOnAnchor - - type: Appearance - type: Electrified onHandInteract: false onInteractUsing: false # wire-cutting handled separately. @@ -215,3 +223,72 @@ components: - type: Cable cuttingQuality: null + +# Explosive cable below +- type: entity + id: CableDet + parent: [ CablePhysBase, BaseSecurityContraband ] + name: explosive cord + description: Spaghetti for people who hate walls. + components: + - type: Cable + cableDroppedOnCutPrototype: CableDetStack1 + cableType: ExCable + - type: Sprite +# color: white # maybe change this later and move the stripes to the CableVisualizerComp layer instead + sprite: Structures/Power/Cables/ex_cable.rsi + state: excable_0 + - type: Icon + sprite: Structures/Power/Cables/ex_cable.rsi + state: excable_4 + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Structural #this is as close as we can get to only letting explosives set it off. + damage: 120 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:ExplodeBehavior + - trigger: + !type:DamageTrigger #A fallback that deletes it but doesnt explode in case something somehow gets here without exploding violently enough. + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 35 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CableDetStack1: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: CableVis + node: cordage + - type: NodeContainer + nodes: + cordage: + !type:CableNode + nodeGroupID: ExCable + - type: CableVisualizer + statePrefix: excable_ + - type: Explosive + explosionType: DemolitionCharge + totalIntensity: 10 + intensitySlope: 5 + maxIntensity: 5 + canCreateVacuum: false + - type: ExplodeOnTrigger + - type: Construction + graph: DetCable + node: detonationCable + - type: Tag + tags: + - ExCable diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml new file mode 100644 index 0000000000..aa26a1f581 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml @@ -0,0 +1,27 @@ +- type: constructionGraph + id: DetCable + start: start + graph: + - node: start + edges: + - to: detonationCable + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: Bananium + amount: 1 + doAfter: 0 + + - node: detonationCable + entity: CableDet + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CableDetStack1 + amount: 1 + - !type:DeleteEntity {} + steps: + - tool: Cutting + doAfter: 0.5 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/explosive_detonator.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/explosive_detonator.yml new file mode 100644 index 0000000000..ddd5e29efe --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/explosive_detonator.yml @@ -0,0 +1,59 @@ +- type: constructionGraph + id: DetonatorGraph + start: start + graph: + - node: start + edges: + - to: emptyDetonator + steps: + - material: Bananium + amount: 1 + doAfter: 1 + + - node: emptyDetonator + entity: EmptyDetonator + actions: + - !type:AppearanceChange + edges: + - to: detonatorWithTrigger + steps: + - component: PayloadTrigger + store: payloadTrigger + name: construction-graph-component-payload-trigger + doAfter: 0.5 + + - node: detonatorWithTrigger + entity: EmptyDetonator + actions: + - !type:AppearanceChange + - !type:PlaySound + sound: /Audio/Machines/button.ogg + edges: + - to: emptyDetonator + steps: + - tool: Prying + doAfter: 0.5 + completed: + - !type:EmptyContainer + container: payloadTrigger + - to: wiredDetonator + steps: + - material: CableDet + doAfter: 0.5 + + - node: wiredDetonator + entity: WiredDetonator + actions: + - !type:AppearanceChange + - !type:PlaySound + sound: /Audio/Machines/button.ogg + - !type:AdminLog + message: "A detonator cap was crafted" + edges: + - to: detonatorWithTrigger + steps: + - tool: Cutting + doAfter: 0.5 + completed: + - !type:SpawnPrototype + prototype: CableDetStack1 diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/security.yml b/Resources/Prototypes/Recipes/Lathes/Packs/security.yml index f3e8891b25..0dc5fe3d90 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/security.yml @@ -90,6 +90,8 @@ - ScienceExplosives # sec gets everything for modular grenade making that sci does id: SecurityExplosives recipes: + - CableDetStack1 + - EmptyDetonator - ExplosivePayload - GrenadeBlast - GrenadeEMP diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml index 62a6122342..b703aa1240 100644 --- a/Resources/Prototypes/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Recipes/Lathes/devices.yml @@ -216,3 +216,23 @@ Steel: 500 Glass: 400 Gold: 100 + +- type: latheRecipe + id: CableDetStack1 + result: CableDetStack1 + categories: + - Weapons + completetime: 2 + materials: + Plastic: 50 + Plasma: 25 + Gold: 20 + +- type: latheRecipe + id: EmptyDetonator + result: EmptyDetonator + categories: + - Weapons + completetime: 3 + materials: + Steel: 100 diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index bb12a2c25f..846eef1452 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -116,6 +116,8 @@ - FlashPayload - ExplosivePayload - ChemicalPayload + - CableDetStack1 + - EmptyDetonator - type: technology id: SpecialMeans diff --git a/Resources/Prototypes/Stacks/power_stacks.yml b/Resources/Prototypes/Stacks/power_stacks.yml index 305c85943d..40782d382c 100644 --- a/Resources/Prototypes/Stacks/power_stacks.yml +++ b/Resources/Prototypes/Stacks/power_stacks.yml @@ -18,3 +18,13 @@ icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coilhv-30 } spawn: CableHVStack1 maxCount: 30 + +# Explosive cable below + +- type: stack + id: CableDet + name: stack-explosive-cord + icon: { sprite: "/Textures/Objects/Tools/cable-coils.rsi", state: coilex-30 } + spawn: CableDetStack1 + maxCount: 30 + diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 14dfa9499e..fde9057d64 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -551,6 +551,9 @@ - type: Tag id: Enzyme +- type: Tag + id: ExCable + - type: Tag id: ExplosivePassable diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index ea483851b7..64c3fc85c1 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/ca674eff9d23e04357b7609ef7e07eadfc1a993f and modified by Flareguy (github), encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, nitrogentank modified from extendedtank by Errant, agrichemkit by Cerol, modified by ps3moira (github). sechud renamed to secglasses, new sechud, sunglasses by K-Dynamic (github). utensils by gentleman-bird (github)", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/ca674eff9d23e04357b7609ef7e07eadfc1a993f and modified by Flareguy (github), encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, nitrogentank modified from extendedtank by Errant, agrichemkit by Cerol, modified by ps3moira (github). sechud renamed to secglasses, new sechud, sunglasses by K-Dynamic (github), trigger by IProduceWidgets, utensils by gentleman-bird (github).", "size": { "x": 32, "y": 32 @@ -197,6 +197,9 @@ { "name": "vials" }, + { + "name": "trigger" + }, { "name": "envelope" }, diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/trigger.png b/Resources/Textures/Objects/Storage/boxes.rsi/trigger.png new file mode 100644 index 0000000000..5be60b4622 Binary files /dev/null and b/Resources/Textures/Objects/Storage/boxes.rsi/trigger.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-10.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-10.png new file mode 100644 index 0000000000..474a751b13 Binary files /dev/null and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-10.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-20.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-20.png new file mode 100644 index 0000000000..b9f4c45e07 Binary files /dev/null and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-20.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-30.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-30.png new file mode 100644 index 0000000000..1d04573c5c Binary files /dev/null and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-30.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-equipped-BELT.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-equipped-BELT.png new file mode 100644 index 0000000000..0ebbd08fae Binary files /dev/null and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-equipped-BELT.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-inhand-left.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-inhand-left.png new file mode 100644 index 0000000000..00ba40526d Binary files /dev/null and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-inhand-left.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-inhand-right.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-inhand-right.png new file mode 100644 index 0000000000..86ce3a5412 Binary files /dev/null and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilex-inhand-right.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/meta.json b/Resources/Textures/Objects/Tools/cable-coils.rsi/meta.json index d1fcdea7f4..95b59f691d 100644 --- a/Resources/Textures/Objects/Tools/cable-coils.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/cable-coils.rsi/meta.json @@ -31,6 +31,14 @@ "name": "coillv-inhand-right", "directions": 4 }, + { + "name": "coilex-inhand-left", + "directions": 4 + }, + { + "name": "coilex-inhand-right", + "directions": 4 + }, { "name": "coil-30" }, @@ -70,6 +78,15 @@ { "name": "coilall-30" }, + { + "name": "coilex-30" + }, + { + "name": "coilex-20" + }, + { + "name": "coilex-10" + }, { "name": "coil-equipped-BELT", "directions": 4 @@ -85,6 +102,10 @@ { "name": "coilhv-equipped-BELT", "directions": 4 + }, + { + "name": "coilex-equipped-BELT", + "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/addtrigger.png b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/addtrigger.png new file mode 100644 index 0000000000..77e4b57293 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/addtrigger.png differ diff --git a/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/complete.png b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/complete.png new file mode 100644 index 0000000000..a6c4d89d6c Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/complete.png differ diff --git a/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/empty.png b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/empty.png new file mode 100644 index 0000000000..f5e5d3b5aa Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/empty.png differ diff --git a/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/meta.json b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/meta.json new file mode 100644 index 0000000000..4b39b7a3be --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from austation at commit https://github.com/austation/austation/commit/71d8e7406d84f8ec8cb79bf153b050e7e09d2a17 and modified by IProduceWidgets", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "empty", + "directions": 1 + }, + { + "name": "wired", + "directions": 1 + }, + { + "name": "addtrigger", + "directions": 1 + }, + { + "name": "complete", + "directions": 1 + }, + { + "name": "primed", + "directions": 1, + "delays": [ + [ 0.2, 0.2 ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/primed.png b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/primed.png new file mode 100644 index 0000000000..56a28ec57c Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/primed.png differ diff --git a/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/wired.png b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/wired.png new file mode 100644 index 0000000000..c74ea20376 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Bombs/detonator.rsi/wired.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_0.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_0.png new file mode 100644 index 0000000000..dadf77beb8 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_0.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_1.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_1.png new file mode 100644 index 0000000000..c2cbf1272a Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_1.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_10.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_10.png new file mode 100644 index 0000000000..c4335bdd6b Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_10.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_11.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_11.png new file mode 100644 index 0000000000..83d067820b Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_11.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_12.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_12.png new file mode 100644 index 0000000000..9590e82dbb Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_12.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_13.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_13.png new file mode 100644 index 0000000000..b1a67c53fb Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_13.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_14.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_14.png new file mode 100644 index 0000000000..61ef8cd47c Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_14.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_15.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_15.png new file mode 100644 index 0000000000..01ce8b4944 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_15.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_2.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_2.png new file mode 100644 index 0000000000..05a9a89d9a Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_2.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_3.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_3.png new file mode 100644 index 0000000000..d2046266b6 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_3.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_4.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_4.png new file mode 100644 index 0000000000..d1edbc5b69 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_4.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_5.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_5.png new file mode 100644 index 0000000000..bb9da73f71 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_5.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_6.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_6.png new file mode 100644 index 0000000000..0736f7b9a7 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_6.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_7.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_7.png new file mode 100644 index 0000000000..c606f14cd8 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_7.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_8.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_8.png new file mode 100644 index 0000000000..d4cfcb35da Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_8.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_9.png b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_9.png new file mode 100644 index 0000000000..49abe32294 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/excable_9.png differ diff --git a/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/meta.json b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/meta.json new file mode 100644 index 0000000000..58fb0e4d29 --- /dev/null +++ b/Resources/Textures/Structures/Power/Cables/ex_cable.rsi/meta.json @@ -0,0 +1,75 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/fcf375d7d9ce6ceed5c7face899725e5655ab640, striping added by IProduceWidgets", + "states": [ + { + "name": "excable_0" + + }, + { + "name": "excable_1" + + }, + { + "name": "excable_2" + + }, + { + "name": "excable_3" + + }, + { + "name": "excable_4" + + }, + { + "name": "excable_5" + + }, + { + "name": "excable_6" + + }, + { + "name": "excable_7" + + }, + { + "name": "excable_8" + + }, + { + "name": "excable_9" + + }, + { + "name": "excable_10" + + }, + { + "name": "excable_11" + + }, + { + "name": "excable_12" + + }, + { + "name": "excable_13" + + }, + { + "name": "excable_14" + + }, + { + "name": "excable_15" + + } + ] +}