From baddcf1b268397c1994881f8aa805d529444dc32 Mon Sep 17 00:00:00 2001 From: Kara Date: Thu, 10 Aug 2023 07:16:25 -0700 Subject: [PATCH] Chain link fencing (#18956) --- Content.Client/Doors/DoorSystem.cs | 4 +- Content.Server/Climbing/ClimbSystem.cs | 9 +- Content.Shared/Climbing/ClimbableComponent.cs | 12 + Resources/Audio/Effects/attributions.yml | 7 +- Resources/Audio/Effects/fence_rattle1.ogg | Bin 0 -> 17597 bytes Resources/Audio/Effects/fence_rattle2.ogg | Bin 0 -> 23204 bytes Resources/Audio/Effects/fence_rattle3.ogg | Bin 0 -> 18496 bytes .../interaction-popup-component.ftl | 4 + .../Entities/Structures/Walls/fence_metal.yml | 327 ++++++++++++++++++ .../Graphs/structures/fence_metal.yml | 112 ++++++ .../Recipes/Construction/structures.yml | 69 ++++ .../SoundCollections/fence_rattle.yml | 6 + .../Structures/Walls/fence.rsi/corner.png | Bin 0 -> 1005 bytes .../Walls/fence.rsi/door_closed.png | Bin 0 -> 1253 bytes .../Walls/fence.rsi/door_opened.png | Bin 0 -> 1443 bytes .../Structures/Walls/fence.rsi/end.png | Bin 0 -> 811 bytes .../Structures/Walls/fence.rsi/icon_end.png | Bin 0 -> 455 bytes .../Walls/fence.rsi/icon_straight.png | Bin 0 -> 317 bytes .../Structures/Walls/fence.rsi/meta.json | 41 +++ .../Structures/Walls/fence.rsi/straight.png | Bin 0 -> 400 bytes .../Walls/fence.rsi/straight_broken.png | Bin 0 -> 925 bytes 21 files changed, 587 insertions(+), 4 deletions(-) create mode 100644 Resources/Audio/Effects/fence_rattle1.ogg create mode 100644 Resources/Audio/Effects/fence_rattle2.ogg create mode 100644 Resources/Audio/Effects/fence_rattle3.ogg create mode 100644 Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml create mode 100644 Resources/Prototypes/SoundCollections/fence_rattle.yml create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/corner.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/door_closed.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/door_opened.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/end.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/icon_end.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/icon_straight.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/straight.png create mode 100644 Resources/Textures/Structures/Walls/fence.rsi/straight_broken.png diff --git a/Content.Client/Doors/DoorSystem.cs b/Content.Client/Doors/DoorSystem.cs index 41680e4619..c4b88346de 100644 --- a/Content.Client/Doors/DoorSystem.cs +++ b/Content.Client/Doors/DoorSystem.cs @@ -111,11 +111,11 @@ public sealed class DoorSystem : SharedDoorSystem } break; case DoorState.Opening: - if (animPlayer != null && comp.OpeningAnimation != default) + if (animPlayer != null && comp.OpeningAnimationTime != 0.0) _animationSystem.Play(uid, animPlayer, (Animation)comp.OpeningAnimation, DoorComponent.AnimationKey); break; case DoorState.Closing: - if (animPlayer != null && comp.ClosingAnimation != default && comp.CurrentlyCrushing.Count == 0) + if (animPlayer != null && comp.ClosingAnimationTime != 0.0 && comp.CurrentlyCrushing.Count == 0) _animationSystem.Play(uid, animPlayer, (Animation)comp.ClosingAnimation, DoorComponent.AnimationKey); break; case DoorState.Denying: diff --git a/Content.Server/Climbing/ClimbSystem.cs b/Content.Server/Climbing/ClimbSystem.cs index af634976cb..8361cda62f 100644 --- a/Content.Server/Climbing/ClimbSystem.cs +++ b/Content.Server/Climbing/ClimbSystem.cs @@ -20,6 +20,7 @@ using Content.Shared.Physics; using Content.Shared.Popups; using Content.Shared.Verbs; using JetBrains.Annotations; +using Robust.Server.GameObjects; using Robust.Shared.GameStates; using Robust.Shared.Physics; using Robust.Shared.Physics.Collision.Shapes; @@ -35,6 +36,7 @@ namespace Content.Server.Climbing; public sealed class ClimbSystem : SharedClimbSystem { [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; + [Dependency] private readonly AudioSystem _audio = default!; [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly DamageableSystem _damageableSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; @@ -133,6 +135,7 @@ public sealed class ClimbSystem : SharedClimbSystem BreakOnDamage = true }; + _audio.PlayPvs(comp.StartClimbSound, climbable); _doAfterSystem.TryStartDoAfter(args, out id); return true; } @@ -148,17 +151,21 @@ public sealed class ClimbSystem : SharedClimbSystem } private void Climb(EntityUid uid, EntityUid user, EntityUid instigator, EntityUid climbable, bool silent = false, ClimbingComponent? climbing = null, - PhysicsComponent? physics = null, FixturesComponent? fixtures = null) + PhysicsComponent? physics = null, FixturesComponent? fixtures = null, ClimbableComponent? comp = null) { if (!Resolve(uid, ref climbing, ref physics, ref fixtures, false)) return; + if (!Resolve(climbable, ref comp)) + return; + if (!ReplaceFixtures(climbing, fixtures)) return; climbing.IsClimbing = true; Dirty(climbing); + _audio.PlayPvs(comp.FinishClimbSound, climbable); MoveEntityToward(uid, climbable, physics, climbing); // we may potentially need additional logic since we're forcing a player onto a climbable // there's also the cases where the user might collide with the person they are forcing onto the climbable that i haven't accounted for diff --git a/Content.Shared/Climbing/ClimbableComponent.cs b/Content.Shared/Climbing/ClimbableComponent.cs index f4859467b9..60f2cad9b9 100644 --- a/Content.Shared/Climbing/ClimbableComponent.cs +++ b/Content.Shared/Climbing/ClimbableComponent.cs @@ -19,5 +19,17 @@ namespace Content.Shared.Climbing /// [DataField("delay")] public float ClimbDelay = 0.8f; + + /// + /// Sound to be played when a climb is started. + /// + [DataField("startClimbSound")] + public SoundSpecifier? StartClimbSound = null; + + /// + /// Sound to be played when a climb finishes. + /// + [DataField("finishClimbSound")] + public SoundSpecifier? FinishClimbSound = null; } } diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index 0d5702171a..85e898997d 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -41,4 +41,9 @@ - files: ["hallelujah.ogg"] license: "CC-BY-SA-3.0" copyright: "Composer: Georg Friedrich Händel; Performed by: MIT Concert Choir; Directed by William C. Cutter; + cropped and mixed from stereo to mono" - source: "https://en.wikipedia.org/wiki/File:Handel_-_messiah_-_44_hallelujah.ogg" \ No newline at end of file + source: "https://en.wikipedia.org/wiki/File:Handel_-_messiah_-_44_hallelujah.ogg" + +- files: ["fence_rattle1.ogg", "fence_rattle2.ogg", "fence_rattle3.ogg"] + license: "CC0-1.0" + copyright: "Taken from MWsfx via freesound.org and cropped + mixed from stereo to mono." + source: "https://freesound.org/people/MWsfx/sounds/575388/" \ No newline at end of file diff --git a/Resources/Audio/Effects/fence_rattle1.ogg b/Resources/Audio/Effects/fence_rattle1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..72cec176f8b2a0889f4d58677b1aba2227e884ec GIT binary patch literal 17597 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/fence_rattle3.ogg b/Resources/Audio/Effects/fence_rattle3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8d0d963f9fe0102c284f6c352f3334e72b7aa3d6 GIT binary patch literal 18496 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%0D`+K?@YhrTD;97yY`vk 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 E08jBD3IG5A literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl index e7f38047cc..9c6324f39e 100644 --- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl @@ -58,6 +58,10 @@ petting-failure-medibot = You reach out to pet {THE($target)}, but {POSS-ADJ($ta # Shown when knocking on a window comp-window-knock = *knock knock* +## Rattling fences + +fence-rattle-success = *rattle* + ## Hugging players hugging-success-generic = You hug {THE($target)}. diff --git a/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml b/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml new file mode 100644 index 0000000000..583ea2ebb2 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml @@ -0,0 +1,327 @@ +- type: entity + parent: BaseStructure + id: BaseFenceMetal + name: chain link fence + description: A metal piece of fencing cordoning off something likely very important. + abstract: true + components: + - type: MeleeSound + soundGroups: + Brute: + path: + "/Audio/Weapons/grille_hit.ogg" + - type: Tag + tags: + - RCDDeconstructWhitelist + - type: Sprite + sprite: Structures/Walls/fence.rsi + drawdepth: WallTops + - type: Physics + bodyType: Static + - type: Transform + anchored: true + - type: Damageable + damageContainer: Inorganic + damageModifierSet: FlimsyMetallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + PartRodMetal1: + min: 3 + max: 5 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Climbable + delay: 5.0 + startClimbSound: + collection: FenceRattle + finishClimbSound: + collection: FenceRattle + - type: PowerConsumer + showInMonitor: false + - type: Electrified + requirePower: true + noWindowInTile: true + highVoltageNode: high + mediumVoltageNode: medium + lowVoltageNode: low + - type: NodeContainer + nodes: + high: + !type:CableDeviceNode + nodeGroupID: HVPower + medium: + !type:CableDeviceNode + nodeGroupID: MVPower + low: + !type:CableDeviceNode + nodeGroupID: Apc + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ElectrifiedVisuals.IsPowered: + enum.ElectrifiedLayers.Powered: + True: { visible: True } + False: { visible: False } + - type: AnimationPlayer + +- type: entity + parent: BaseFenceMetal + id: FenceMetalBroken + name: broken chain link fence + description: Someone got real mad at an inanimate object. + components: + - type: Sprite + layers: + - state: straight_broken + - state: electrified + sprite: Effects/electricity.rsi + map: ["enum.ElectrifiedLayers.Powered"] + shader: unshaded + visible: false + - type: Physics + canCollide: false + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.10,-0.5,0.10,0.5" + density: 1000 + mask: + - FullTileMask + layer: + - TableLayer + - type: InteractionPopup + interactSuccessString: fence-rattle-success + messagePerceivedByOthers: fence-rattle-success + interactSuccessSound: + collection: FenceRattle + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + PartRodMetal1: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: FenceMetal + node: broken + +- type: entity + parent: BaseFenceMetal + id: FenceMetalStraight + suffix: Straight + components: + - type: Icon + sprite: Structures/Walls/fence.rsi + state: icon_straight + - type: Sprite + layers: + - state: straight + - state: electrified + sprite: Effects/electricity.rsi + map: ["enum.ElectrifiedLayers.Powered"] + shader: unshaded + visible: false + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.10,-0.5,0.10,0.5" + density: 1000 + mask: + - FullTileMask + layer: + - TableLayer + - type: InteractionPopup + interactSuccessString: fence-rattle-success + messagePerceivedByOthers: fence-rattle-success + interactSuccessSound: + collection: FenceRattle + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Items/wirecutter.ogg + - !type:SpawnEntitiesBehavior + spawn: + PartRodMetal1: + min: 2 + max: 4 + - !type:ChangeConstructionNodeBehavior + node: broken + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: FenceMetal + node: straight + +- type: entity + parent: BaseFenceMetal + id: FenceMetalCorner + suffix: Corner + components: + - type: Sprite + layers: + - state: corner + - state: electrified + sprite: Effects/electricity.rsi + map: ["enum.ElectrifiedLayers.Powered"] + shader: unshaded + visible: false + - type: Fixtures + fixtures: + # needs two shapes to properly handle a triangle corner without weirdness + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.5" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + fix2: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,-0.1,0.1" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + - type: InteractionPopup + interactSuccessString: fence-rattle-success + messagePerceivedByOthers: fence-rattle-success + interactSuccessSound: + collection: FenceRattle + - type: Construction + graph: FenceMetal + node: corner + +- type: entity + parent: BaseFenceMetal + id: FenceMetalEnd + suffix: End + components: + - type: Icon + sprite: Structures/Walls/fence.rsi + state: icon_end + - type: Sprite + layers: + - state: end + - state: electrified + sprite: Effects/electricity.rsi + map: ["enum.ElectrifiedLayers.Powered"] + shader: unshaded + visible: false + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.5,0.1,0.0" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + - type: InteractionPopup + interactSuccessString: fence-rattle-success + messagePerceivedByOthers: fence-rattle-success + interactSuccessSound: + collection: FenceRattle + - type: Construction + graph: FenceMetal + node: end + +- type: entity + parent: BaseFenceMetal + id: FenceMetalGate + name: chain link fence gate + description: You could use the door instead of vaulting over--if you're a COWARD, that is. + components: + - type: Sprite + layers: + - state: end + map: ["enum.DoorVisualLayers.Base"] + - state: electrified + sprite: Effects/electricity.rsi + map: [ "enum.ElectrifiedLayers.Powered" ] + shader: unshaded + visible: false + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,0.5,0.1" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + - type: InteractionOutline + - type: Door + openSpriteState: door_opened + closedSpriteState: door_closed + canPry: false + occludes: false + changeAirtight: false + bumpOpen: false + clickOpen: true + canCrush: false + closeTimeOne: 0 + closeTimeTwo: 0 + openTimeOne: 0 + openTimeTwo: 0 + openingAnimationTime: 0 + closingAnimationTime: 0 + openSound: + path: /Audio/Effects/door_open.ogg + closeSound: + path: /Audio/Effects/door_close.ogg + - type: Construction + graph: FenceMetal + node: gate diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml new file mode 100644 index 0000000000..a68e1d50fb --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml @@ -0,0 +1,112 @@ +- type: constructionGraph + id: FenceMetal + start: start + graph: + - node: start + actions: + - !type:DeleteEntity { } + edges: + - to: straight + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: MetalRod + amount: 5 + doAfter: 6 + - to: corner + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: MetalRod + amount: 5 + doAfter: 6 + - to: end + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: MetalRod + amount: 5 + doAfter: 6 + - to: gate + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: MetalRod + amount: 5 + doAfter: 6 + + - node: straight + entity: FenceMetalStraight + edges: + - to: broken + completed: + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 1 + steps: + - tool: Welding + doAfter: 4.0 + - tool: Cutting + doAfter: 1.0 + + - node: corner + entity: FenceMetalCorner + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 5 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 4.0 + - tool: Cutting + doAfter: 2.0 + + - node: end + entity: FenceMetalEnd + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 5 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 4.0 + - tool: Cutting + doAfter: 2.0 + + - node: gate + entity: FenceMetalGate + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 5 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 4.0 + - tool: Cutting + doAfter: 2.0 + + - node: broken + entity: FenceMetalBroken + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 1 + - !type:DeleteEntity + steps: + - tool: Cutting + doAfter: 1.0 diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 595235e220..2b4dbf0415 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -627,6 +627,75 @@ conditions: - !type:TileNotBlocked +# Chain link fencing +- type: construction + name: chain link fence + id: FenceMetal + graph: FenceMetal + startNode: start + targetNode: straight + category: construction-category-structures + description: Part of a chain link fence meant to cordon off areas. + icon: + sprite: Structures/Walls/fence.rsi + state: straight + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: chain link fence corner + id: FenceMetalCorner + graph: FenceMetal + startNode: start + targetNode: corner + category: construction-category-structures + description: Part of a chain link fence meant to cordon off areas. + icon: + sprite: Structures/Walls/fence.rsi + state: corner + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: chain link fence end-piece + id: FenceMetalEnd + graph: FenceMetal + startNode: start + targetNode: end + category: construction-category-structures + description: Part of a chain link fence meant to cordon off areas. + icon: + sprite: Structures/Walls/fence.rsi + state: end + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: chain link fence gate + id: FenceMetalGate + graph: FenceMetal + startNode: start + targetNode: gate + category: construction-category-structures + description: An easy way to get through a chain link fence. + icon: + sprite: Structures/Walls/fence.rsi + state: door_closed + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction name: airlock id: Airlock diff --git a/Resources/Prototypes/SoundCollections/fence_rattle.yml b/Resources/Prototypes/SoundCollections/fence_rattle.yml new file mode 100644 index 0000000000..f50dd33bf1 --- /dev/null +++ b/Resources/Prototypes/SoundCollections/fence_rattle.yml @@ -0,0 +1,6 @@ +- type: soundCollection + id: FenceRattle + files: + - /Audio/Effects/fence_rattle1.ogg + - /Audio/Effects/fence_rattle2.ogg + - /Audio/Effects/fence_rattle3.ogg diff --git a/Resources/Textures/Structures/Walls/fence.rsi/corner.png b/Resources/Textures/Structures/Walls/fence.rsi/corner.png new file mode 100644 index 0000000000000000000000000000000000000000..bf793f5d106b355e5ceaacc3c852947597f57530 GIT binary patch literal 1005 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qt-49rcQE{-7;ac^fC_9+<(xXzwB!GcrMUGbqx zi%N!&6QAKl7L}N$3CsmTDov5~yXz9ShHYD&ekJzOx9KxhRiz$$FJ;d6!ZrQM$BIAG zwp8zpGqjWIe^<0~#{JjJtz`Hvo-W$iWBTRe$HY$?ciewp<*2(WZvEY|-B)FtXB08) z_;H8-bJ*WXyZLjUvewqsWxaF!z~p~MS3g7e|Guq1fBibN?uYtw-3_BVf(L$9ct&_AuXZuNM>8&Y@`SP~x_c2|Qs|+7*eo#o=T;8?SY=?klQfIYv!%^!= za@X6K0w-2W9uRonv64q=!irUe?$!t1#9BJ)Y;x6*$X?z9k7Pajvz;4PoY>2g&{2LQgiX*R?V38&>e@x%5Rmy2qCAv2V%otqUDOp2V>k909t$ znL}k&)}4!d2G!wy0^Mr@AK%MsT#)wugy6~h(TbhDO63*|D^6A~`zhjZg-u+^U8gXg zc|(Q!rN_4d6ts%;nI#^{8cua&5ehYZm%%<`ueN%J>$Mey`P&@=HkUu?c=CSjgd=Vf ztz{UlJh8o8!=-SHO|OajY168jQ;ZLcEgL2smx}jzd|c}H@xUK;GJGGu@BRE!=Zn1% z+l2QF2h;wZ`pmfea^{!$#|kgL{%ZAXvc0^)Q-){HnVTM@etFKUU?;Eebj2k7gD=|e zGcLB1XZR>Fr6}a#qTlgNV($gAa|;xUj!1nsVOaegOTgQAi8rpBhSaa8K)GOI#)@3H);r&1qrc?hjDBTHVTu=U5c2x zdbP^U7*^ceongl+u=QZ;3Bl|;ml@XFtB#T8a&ZN^)p?KdGNTTMMXQeOV_)k2Moj9iF B!uJ3G literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/fence.rsi/door_closed.png b/Resources/Textures/Structures/Walls/fence.rsi/door_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..52270ef775003a19674b2eddfda05377186cdf6f GIT binary patch literal 1253 zcmVfNA2ec3b5k+hSOR*GWR}f(vAB7?|3MxL3+&M!|m>nnCWG0)rd(8)u$s}{WFK5o= zWM)s9f{wY|M9M9RD=_)}>}!q0AQZU7tc5G=2* zu6q103>g(f5FEXF^@zQ_J^$q7M3jezhs8AvcjBe?cqD!r4%qhc^3qxZLFVUWaWAXa zNFwmbyFnW~_u}d=E-tjT1_uX$c=22=tH7{M!lkQ^dKMi2)Q0Jdot>TO1jr#Lw~4Ih zAy}T6nDFF?QpIZ8g~G8dhH(-uUA@`?I)^cxF)ldl4ID3NLQbxa5Ktplx~vr*bU@ie z19pJSuX7mF8IvPGp`>9T+v0nL^LzP`S`MSxC2Y!<)>K=0Ay1)!<2fOrYx z#D^lF$O5KW03h8PnCgqUK)j7&F3{*KpyO6G6mtQcv0^SzWPu_JWR?ZwWpSO@z%g3k z(z1Aw1v1i*EDPM;-s*^rvH&h^&&iB!C`Tes~gqhIA<{Z9UmX zKH{Z%S%V6+WuigdD3za)xEVi*9ka^Dq!H?Ixa4PG2n=VQEyOM>?*Xfabjfe*0ED{c zmN&BCH+I0lzyKT{ABW|?F|-D+=I7(0M}ro!XnBXoCngZew3JTNvk7V;k*9U0p(b^xEL!N|yn5YgG$33+37 zc2;cK@b7>>FE1~jt>tHzy*LSa0l$#bb$3su&1X-J9}(2Mn^}*3=j8L4MTU*7^Sp=-F zulu+bz#XvbVm&}!kZ}?L2L}h>61X7K-`@{+cXw7xa#lmY<+6BNTN`wAbO?Sdo1$11 zh93^AtuX}tPp+%2u`Kwlw#Me>=0tgIZ4L59R{T~&0Dq3I`zPqUkOlu=_{oBLkxk?D P00000NkvXXu0mjfaKAwr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/fence.rsi/door_opened.png b/Resources/Textures/Structures/Walls/fence.rsi/door_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..77ecdbc9495621270bffbf905ffe76a11b1116ad GIT binary patch literal 1443 zcmV;U1zh@xP)lB5DF~uChae^*x5=Q~t%->sf{3B$ z1{WB~A!s5d3bG6a1{AczQJBu3|gh~P4)AcCICi2n*I_^&Wqujn__v^_h$RW;Ky zxBbCPSH13e->d3Z@72#3V4}ajKTPG<*H?ZW930F54e0CZdp|!OYR53I(6h?!|cmi_G%*;T3em;o2@%T{}>g?_9Rq_Zse&g`)5Zc<>s+kL} zkBp3DuusHgbYO07F1)t3#>;-cpEm&Aop`Z6Jw3gSSK_DPfWJLBIM8KE6hA9hBd>u* zV1Zq=j5iUtx3{+P%F0S0UaX5{r#e)CIlYO=S|)b8>P5&CSgj zqDK)i@tWc&8|Yd5Ee<1;>+l4zjbsC50nvbJX7D;Ff`*li0i2k4h1(Guwzsz0V zfn;WZsi`Sl0Wf8e)!xuwURaNh7u*(AUV4{%p zEI=M$XM=4P(B%QCk_9Xt5M{%=ERdO*2|AF9S%BK+WdUz3;H?F`wSc!4@YVue7VxqF z$`YOh#BFi-$t<9ITinY6PP2er@R9+JU)+0$Qi%Z?;lr=m+S>nE zr&E0|mOL*nk8im6d_H&P0lH!UdSF*qSErM=F3NXzcVTsP6;zQDF~I3t7v*PXXCN+z zWs$Zq0JpVtAZ=rSF4DA(0XPJ7Ksg57+}tP|Ark|1Y~CW2V}NQ0q(lq|g+fa>5Lt83X7z4Ceu=M`LWB@h@I+j!{xlGRCgoNES=Jva$j?Al(6Y9M##` x$;;#82@Kv7YV(r!#D;5&^PsY+x-jcxz{002ovPDHLkV1iYSk469h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/fence.rsi/end.png b/Resources/Textures/Structures/Walls/fence.rsi/end.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba2d74a2259f57d22ed346421c09a2462478580 GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZuR2Brg^E{-7;ac^fC_C0bCaNVn2D5|pPX0*U0 z0f8buA(umr9UOBM3fY{taB`|UDkc2g`_;QwwR(4s#HrVHL90*2tNuP;UcE%p`t_l# ztyKvpA8t3Ae_sCi=bwdEbLC#Rntcw=%63~kvE=WPVuo6ER)wviM>kLRT^?-tN5XA1y+qwi zX7kMwtLOV8)?fd%+KoAS2bzIOeM3`5k@}@_g)X@4Hs;e&JZ?&7fb&lD9p2 z+wHeo>Yp?15c}QVBrA~T`Q`Utx#RKmqEA=*O&1Na=H6SicisFKd%jG6kYaRFto!Kt zLof0tdKJVhk4{_oSSpXB+#%6mPxhW}!(FLjEB%UWCX0bv?MyM`_q!$Tn%g& z7hlR~$(zZ#YB%SCqzM-?dVuVu?=smh3~9rTA7_rxo6fIed1be9Xyzr|&90S~R$u>L z_92!*ocGjrrll7p?ixj3-O07qbZ%T<+1?+kPkjEfHh;!lvI6;>1s;*b3=DinK$vl=HlH+5LyV`3V@QPi(dmYLEe1TUhwrpyeN!_LnKGxj zt*<#C@Iry$mgA0#5|U4xcUydS>*1Qr`7Lk$9J*h4Ct!!quYLATufEmVKQ`dGS?aKH zUA9g}Vx(AjXy}=xo#j#$Ik%q`*(J&xpJ80l#xd`*$;ptqE0@(L?0LOw4d=d3A6)I7 z>y(}^%e1Sze0mcP7yq3IpG&h>TO~6+IKR<*Pv6Ag<)#e6cX%?amNJU$_Pd`ZHrKRq z4M=7QTY)iyaJS!VhOR>{MV+(!qMi7=(rnq+GR}CA=5TqYb%I>=s>@{xE)2$@>3#}K zv{HI++grtWi+j&>qON~s6h5hIWw-wBvWo2u2IoJ&oqxIh*iQZROqzYlyBN0v1E0au L)z4*}Q$iB}XV|o0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/fence.rsi/icon_straight.png b/Resources/Textures/Structures/Walls/fence.rsi/icon_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..ce57105979cbcd7a90971f271c8fc917c5c55f53 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DinK$vl=HlH+5@RFyCV@QPi+rEv0hYfg`pLTBQY5$_4w>LK72RLpyRJMPJj_rI_5Z+X4z4YPdyN%xnUoQp4|CvMrEy0u@XV9N== zt>qHRle6p-zL@o^)JZogcP>}y@tWUy@!qtnc0~s+Dp_B>m)PU8>Tkov+cuMa^uL!*`7nBDR}dpz1MXfdh6>(GiXkrHonBi|~s%jj+j zek*(I#FAV55_``ociwk<;PD9Ph$Hi#&pdjsN2~tGg_xsvQ=O0_dMZZ{EbMNKCU7gRZ&GgN`=gxgKU#@BU zo*S23fBwGYmHvCW*b4ns$Dh8oy8S=0c}-!;@Af@6OWwqN5x#71aBSVRoB#3{3y$5> z4Jg^RKUyJw7i+}h6W_|Y8;rl@H7?rx_byZAW!(c(?m$U~IUCElMdrSJFLq*f9^*BO zO+ZP*W1DVVN_@PpZjQ*-OE>@Zr#nPVnS8D0;?}9>zVWa9|LtG)9maXdyJtP+RagWJ OVg^rFKbLh*2~7Z%)UkK~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/fence.rsi/straight_broken.png b/Resources/Textures/Structures/Walls/fence.rsi/straight_broken.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2c9e1d68e33fc0c418b307e5aa7bbd3261adc5 GIT binary patch literal 925 zcmV;O17iG%P)~*5Fc5|Z$tU0dl$5|3I75n@fs&Gfl9G}$q~Hu3 z0r62HDh_}s>G(2M26>%0Kh9*l+T@j1AqM=I$z;YJXBBuVilWbEvw`>f4g38bj>qE& z1jWVoHo#xeU;ya31_MCPH5h=iv-NuYNmG(&I&8~tWq{po2O-75Z)E_QeBh*ntS{*W z9DFYWAms6QK$0Y%IF2=ppb|fxlka5!gdiMW<1xJwy8UoCd{(Pf=LX>9x4H$U)2W_| z6C8xa!Ec=f&=r@*-Zaf};uK?=xdV!QU`7A;3dcA5F#PkG$;^2E3;C{dB;DauRM-)Y2 zI(C^3Ir)tZKvqugLw$}ei1#234Atdih@0;{5yC)(gTMix3!=ykyPghn@*5j~Iz~9& zgBXZVI1q_-05_j)IZO)?2qa&=_hN|hu-PWH3gqN_1wpz8?e(~X5xDu@F#u(5Oh{dQ zZvIdcgq~|K0Q6jg0ifsdHUQ4MsTdhTTzqvtpMyX|Sn#RSm*!E9pNdUuAC=x(hIfsEh0D>yY z0@D0%7D(Ohf{hZ-_z>KT#-aGihD$x@WM+Yoe4PbSpgy5NK=+!1kp)8X3$s8ML^HA* zKe8|jNb-MVf#>tt*|UDsCq3V1D->Tm3skKIr1>g93aVNQi1Kr50q&`2QGaD?0cn12 zEdb2Q!1KBlA!)v|BGl$e6a=!y6(K3Uvm!*365pt7f3ImpNQz%t5yGc2jpBr!Jk(&% ztK6<`MM#40tOz;Wu`pnvjKMZ4bcW{F+7~b<5q7}B_l$O*`hHNpilT^4^pjWk{2iXx zZ6~;IKcV?L2H*+pv}PZ=NVSLNs}TR_@SF4>Ws-~4JwUU<00000NkvXXu0mjf%r35` literal 0 HcmV?d00001