From 9d31a42880d18c53e3dbb325654608f8becc6af5 Mon Sep 17 00:00:00 2001 From: ThereDrD0 <88589686+ThereDrD0@users.noreply.github.com> Date: Fri, 23 Feb 2024 22:10:38 +0300 Subject: [PATCH] add: funny keys that can lock doors (#113) --- .../_White/Keyhole/KeyholeSystem.cs | 110 ++++++++++++++++++ .../Doors/Systems/SharedDoorSystem.cs | 16 +++ .../Keyhole/Components/KeyBaseComponent.cs | 9 ++ .../_White/Keyhole/Components/KeyComponent.cs | 7 ++ .../Keyhole/Components/KeyFormComponent.cs | 15 +++ .../Keyhole/Components/KeyholeComponent.cs | 27 +++++ .../_White/Keyhole/KeyInsertEvent.cs | 8 ++ .../_White/Keyhole/KeyformVisuals.cs | 9 ++ .../Audio/White/Object/Tools/Form/hit.ogg | Bin 0 -> 4250 bytes .../Audio/White/Object/Tools/Form/pickup.ogg | Bin 0 -> 6021 bytes .../Audio/White/Object/Tools/Form/press.ogg | Bin 0 -> 5733 bytes .../Audio/White/Object/Tools/Key/drop.ogg | Bin 0 -> 7299 bytes .../Audio/White/Object/Tools/Key/pickup.ogg | Bin 0 -> 8102 bytes .../Audio/White/Object/Tools/Keyhole/lock.ogg | Bin 0 -> 21810 bytes .../White/Object/Tools/Keyhole/locked.ogg | Bin 0 -> 5323 bytes .../White/Object/Tools/Keyhole/unlock.ogg | Bin 0 -> 19297 bytes .../Locale/ru-RU/White/object/tools/key.ftl | 5 + .../ru-RU/white/object/tools/keyform.ftl | 5 + .../ru-RU/white/object/tools/keyhole.ftl | 1 + .../Doors/MaterialDoors/material_doors.yml | 1 + .../Prototypes/White/Objects/Tools/crafts.yml | 54 +++++++++ .../Prototypes/White/Objects/Tools/form.yml | 34 ++++++ .../Prototypes/White/Objects/Tools/key.yml | 38 ++++++ .../White/Objects/Tools/form.rsi/empty.png | Bin 0 -> 544 bytes .../Objects/Tools/form.rsi/inhand-left.png | Bin 0 -> 298 bytes .../Objects/Tools/form.rsi/inhand-right.png | Bin 0 -> 302 bytes .../White/Objects/Tools/form.rsi/meta.json | 25 ++++ .../White/Objects/Tools/form.rsi/withkey.png | Bin 0 -> 541 bytes .../White/Objects/Tools/key.rsi/icon.png | Bin 0 -> 300 bytes .../Objects/Tools/key.rsi/inhand-left.png | Bin 0 -> 204 bytes .../Objects/Tools/key.rsi/inhand-right.png | Bin 0 -> 198 bytes .../White/Objects/Tools/key.rsi/meta.json | 22 ++++ 32 files changed, 386 insertions(+) create mode 100644 Content.Server/_White/Keyhole/KeyholeSystem.cs create mode 100644 Content.Shared/_White/Keyhole/Components/KeyBaseComponent.cs create mode 100644 Content.Shared/_White/Keyhole/Components/KeyComponent.cs create mode 100644 Content.Shared/_White/Keyhole/Components/KeyFormComponent.cs create mode 100644 Content.Shared/_White/Keyhole/Components/KeyholeComponent.cs create mode 100644 Content.Shared/_White/Keyhole/KeyInsertEvent.cs create mode 100644 Content.Shared/_White/Keyhole/KeyformVisuals.cs create mode 100644 Resources/Audio/White/Object/Tools/Form/hit.ogg create mode 100644 Resources/Audio/White/Object/Tools/Form/pickup.ogg create mode 100644 Resources/Audio/White/Object/Tools/Form/press.ogg create mode 100644 Resources/Audio/White/Object/Tools/Key/drop.ogg create mode 100644 Resources/Audio/White/Object/Tools/Key/pickup.ogg create mode 100644 Resources/Audio/White/Object/Tools/Keyhole/lock.ogg create mode 100644 Resources/Audio/White/Object/Tools/Keyhole/locked.ogg create mode 100644 Resources/Audio/White/Object/Tools/Keyhole/unlock.ogg create mode 100644 Resources/Locale/ru-RU/White/object/tools/key.ftl create mode 100644 Resources/Locale/ru-RU/white/object/tools/keyform.ftl create mode 100644 Resources/Locale/ru-RU/white/object/tools/keyhole.ftl create mode 100644 Resources/Prototypes/White/Objects/Tools/crafts.yml create mode 100644 Resources/Prototypes/White/Objects/Tools/form.yml create mode 100644 Resources/Prototypes/White/Objects/Tools/key.yml create mode 100644 Resources/Textures/White/Objects/Tools/form.rsi/empty.png create mode 100644 Resources/Textures/White/Objects/Tools/form.rsi/inhand-left.png create mode 100644 Resources/Textures/White/Objects/Tools/form.rsi/inhand-right.png create mode 100644 Resources/Textures/White/Objects/Tools/form.rsi/meta.json create mode 100644 Resources/Textures/White/Objects/Tools/form.rsi/withkey.png create mode 100644 Resources/Textures/White/Objects/Tools/key.rsi/icon.png create mode 100644 Resources/Textures/White/Objects/Tools/key.rsi/inhand-left.png create mode 100644 Resources/Textures/White/Objects/Tools/key.rsi/inhand-right.png create mode 100644 Resources/Textures/White/Objects/Tools/key.rsi/meta.json diff --git a/Content.Server/_White/Keyhole/KeyholeSystem.cs b/Content.Server/_White/Keyhole/KeyholeSystem.cs new file mode 100644 index 0000000000..7bba988ae4 --- /dev/null +++ b/Content.Server/_White/Keyhole/KeyholeSystem.cs @@ -0,0 +1,110 @@ +using Content.Shared._White.Keyhole.Components; +using Content.Shared._White.Keyhole; +using Content.Shared.DoAfter; +using Content.Shared.Doors.Components; +using Content.Shared.Interaction; +using Content.Shared.Popups; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Random; + +namespace Content.Server._White.Keyhole; + +public sealed partial class KeyholeSystem : EntitySystem +{ + + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnKeyInit); + + SubscribeLocalEvent(OnKeyInsert); + SubscribeLocalEvent(OnDoAfter); + } + + private void OnKeyInit(EntityUid uid, KeyComponent component, ComponentInit ev) + { + component.FormId = _random.Next(1000); + } + + private void OnKeyInsert(EntityUid uid, KeyComponent component, AfterInteractEvent ev) + { + if (TryComp(ev.Target, out var keyformComponent)) + OnKeyInsertForm(uid, component, keyformComponent, ev); + + if (!TryComp(ev.Target, out var keyholeComponent)) + return; + + keyholeComponent.FormId ??= component.FormId; + + if (!CanLock(keyholeComponent.Owner, keyholeComponent, component)) + return; + + var doAfterEventArgs = + new DoAfterArgs(EntityManager, ev.User, keyholeComponent.Delay, new KeyInsertDoAfterEvent(), ev.Target, ev.Used) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + BreakOnDamage = true + }; + _doAfter.TryStartDoAfter(doAfterEventArgs); + } + + private bool CanLock(EntityUid uid, KeyholeComponent keyholeComponent, KeyComponent keyComponent) + { + var can = TryComp(uid, out var doorComponent) && + keyholeComponent.FormId == keyComponent.FormId && + doorComponent.State == DoorState.Closed; + + return can; + } + + private void OnDoAfter(EntityUid uid, KeyholeComponent component, KeyInsertDoAfterEvent args) + { + if (args.Handled || args.Cancelled) + return; + + Lock(uid, component, args.User); + + args.Handled = true; + } + + private void Lock(EntityUid uid, KeyholeComponent component, EntityUid user) + { + var sound = component.Locked ? component.UnlockSound : component.LockSound; + var message = Loc.GetString(component.Locked ? "key-unlock-message" : "key-lock-message", ("name", user), ("door", uid)); + + var audioParams = new AudioParams().WithVolume(-5f); + + _audio.PlayPvs(sound, user, audioParams); + _popupSystem.PopupEntity(message, uid); + + component.Locked = !component.Locked; + } + + private void OnKeyInsertForm(EntityUid uid, KeyComponent keyComponent, KeyformComponent keyformComponent, AfterInteractEvent args) + { + if (!keyformComponent.IsUsed) + { + keyformComponent.FormId ??= keyComponent.FormId; + _appearance.SetData(keyformComponent.Owner, KeyformVisuals.IsUsed, true); + + _audio.PlayPvs(keyformComponent.PressSound, uid); + _popupSystem.PopupEntity(Loc.GetString("key-pressed-in-keyform-message-first", ("user", args.User), ("key", uid)), uid); + + keyformComponent.IsUsed = true; + } + else + { + keyComponent.FormId = keyformComponent.FormId; + _popupSystem.PopupEntity(Loc.GetString("key-pressed-in-keyform-message", ("user", args.User), ("key", uid)), uid); + } + + } + +} diff --git a/Content.Shared/Doors/Systems/SharedDoorSystem.cs b/Content.Shared/Doors/Systems/SharedDoorSystem.cs index 20ea94b9df..3400d67d60 100644 --- a/Content.Shared/Doors/Systems/SharedDoorSystem.cs +++ b/Content.Shared/Doors/Systems/SharedDoorSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared._White.Keyhole.Components; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Damage; @@ -6,6 +7,7 @@ using Content.Shared.Doors.Components; using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Physics; +using Content.Shared.Popups; using Content.Shared.Prying.Components; using Content.Shared.Stunnable; using Content.Shared.Tag; @@ -30,6 +32,7 @@ public abstract class SharedDoorSystem : EntitySystem [Dependency] protected readonly SharedAppearanceSystem AppearanceSystem = default!; [Dependency] private readonly OccluderSystem _occluder = default!; [Dependency] private readonly AccessReaderSystem _accessReaderSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; //WD edit /// /// A body must have an intersection percentage larger than this in order to be considered as colliding with a @@ -211,6 +214,19 @@ public abstract class SharedDoorSystem : EntitySystem if (!Resolve(uid, ref door)) return false; + // WD edit start + if (TryComp(uid, out var keyholeComponent)) + { + if (keyholeComponent.Locked) + { + PlaySound(uid, keyholeComponent.DoorLockedSound, AudioParams.Default.WithVolume(-3), uid, true); + _popupSystem.PopupEntity(Loc.GetString("door-locked-via-key", ("door", uid)), uid); + return false; + } + + } + // WD edit end + if (door.State is DoorState.Closed or DoorState.Denying) { return TryOpen(uid, door, user, predicted, quiet: door.State == DoorState.Denying); diff --git a/Content.Shared/_White/Keyhole/Components/KeyBaseComponent.cs b/Content.Shared/_White/Keyhole/Components/KeyBaseComponent.cs new file mode 100644 index 0000000000..8a6b818cab --- /dev/null +++ b/Content.Shared/_White/Keyhole/Components/KeyBaseComponent.cs @@ -0,0 +1,9 @@ +namespace Content.Shared._White.Keyhole.Components; + +[RegisterComponent] +public partial class KeyBaseComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public int? FormId; +} diff --git a/Content.Shared/_White/Keyhole/Components/KeyComponent.cs b/Content.Shared/_White/Keyhole/Components/KeyComponent.cs new file mode 100644 index 0000000000..fe03179142 --- /dev/null +++ b/Content.Shared/_White/Keyhole/Components/KeyComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared._White.Keyhole.Components; + +[RegisterComponent] +public sealed partial class KeyComponent : KeyBaseComponent +{ + +} diff --git a/Content.Shared/_White/Keyhole/Components/KeyFormComponent.cs b/Content.Shared/_White/Keyhole/Components/KeyFormComponent.cs new file mode 100644 index 0000000000..a9b97a1597 --- /dev/null +++ b/Content.Shared/_White/Keyhole/Components/KeyFormComponent.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Audio; + +namespace Content.Shared._White.Keyhole.Components; + +[RegisterComponent] +public sealed partial class KeyformComponent : KeyBaseComponent +{ + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public bool IsUsed; + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public SoundSpecifier PressSound = new SoundPathSpecifier("/Audio/White/Object/Tools/Form/press.ogg"); +} diff --git a/Content.Shared/_White/Keyhole/Components/KeyholeComponent.cs b/Content.Shared/_White/Keyhole/Components/KeyholeComponent.cs new file mode 100644 index 0000000000..ecff5f9abd --- /dev/null +++ b/Content.Shared/_White/Keyhole/Components/KeyholeComponent.cs @@ -0,0 +1,27 @@ +using Robust.Shared.Audio; + +namespace Content.Shared._White.Keyhole.Components; + +[RegisterComponent] +public sealed partial class KeyholeComponent: KeyBaseComponent +{ + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public bool Locked = false; + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float Delay = 1f; + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public SoundSpecifier DoorLockedSound = new SoundPathSpecifier("/Audio/White/Object/Tools/Keyhole/locked.ogg"); + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public SoundSpecifier UnlockSound = new SoundPathSpecifier("/Audio/White/Object/Tools/Keyhole/unlock.ogg"); + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public SoundSpecifier LockSound = new SoundPathSpecifier("/Audio/White/Object/Tools/Keyhole/lock.ogg"); +} diff --git a/Content.Shared/_White/Keyhole/KeyInsertEvent.cs b/Content.Shared/_White/Keyhole/KeyInsertEvent.cs new file mode 100644 index 0000000000..48a6f2c049 --- /dev/null +++ b/Content.Shared/_White/Keyhole/KeyInsertEvent.cs @@ -0,0 +1,8 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared._White.Keyhole; + +[Serializable, NetSerializable] +public sealed partial class KeyInsertDoAfterEvent : SimpleDoAfterEvent {} + diff --git a/Content.Shared/_White/Keyhole/KeyformVisuals.cs b/Content.Shared/_White/Keyhole/KeyformVisuals.cs new file mode 100644 index 0000000000..6874ea8000 --- /dev/null +++ b/Content.Shared/_White/Keyhole/KeyformVisuals.cs @@ -0,0 +1,9 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared._White.Keyhole; + +[Serializable, NetSerializable] +public enum KeyformVisuals : byte +{ + IsUsed +} diff --git a/Resources/Audio/White/Object/Tools/Form/hit.ogg b/Resources/Audio/White/Object/Tools/Form/hit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..78604d212a5fcfc2fa20539945fe0e455087e9f8 GIT binary patch literal 4250 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 P)*{Fg0PnT`0O0=tS-sQV literal 0 HcmV?d00001 diff --git a/Resources/Audio/White/Object/Tools/Form/pickup.ogg b/Resources/Audio/White/Object/Tools/Form/pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cc3fe905ab3f27aab212c7885776048303b6cb90 GIT binary patch literal 6021 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 Vl>(lYs$U(hm{fH+u?nFD{tuE4f{XwF literal 0 HcmV?d00001 diff --git a/Resources/Audio/White/Object/Tools/Key/drop.ogg b/Resources/Audio/White/Object/Tools/Key/drop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..74aff50dda0980b846f10e85170a62e1c2a830e5 GIT binary patch literal 7299 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

C|gm+^wy z5lU`Gr^=TGwjY{o{Lr{8J$J*5Bl|1&yTzJ~)55m;B;8n|?}cS8pXw8Lo>>3$)aV4| z#urOHo@rOrBbH5=h&(CJAJ3Ol7{ zV2Qle<&By2nRV(DWQ%0*8&&s^D`eYsseC==>C5qNV$1H2WfqP~VSBD$iJhN_T5!8< zZerc1=U9Hbw0#TyyH>urZ^`+ts>Q!bULGs*+j(E=<-BP^mUVYdvpv%{;lKmgmg@8y zC6`_%J$77mOLKkGS0k#()X|%(L69X?9s4~^%bswaeQ4Ced)32YTzhT+!7^%(%|9my zRh;ThXJ$jwd9VIuvs`oX~2<#a1(N49R*GoKF@BWR%H)A@@{AkN>Qh0OdBZj3} iqcOfpJ4P2yoqE>Qs|~qzKULe>3B6E*{;EVdK>q>4+0qjL literal 0 HcmV?d00001 diff --git a/Resources/Audio/White/Object/Tools/Keyhole/unlock.ogg b/Resources/Audio/White/Object/Tools/Keyhole/unlock.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09cc0cbc9dbd81783ddecb75ac87a0be06b9796f GIT binary patch literal 19297 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 S%O(Kt4tzMYWn}|*6zBjt&}P>F literal 0 HcmV?d00001 diff --git a/Resources/Locale/ru-RU/White/object/tools/key.ftl b/Resources/Locale/ru-RU/White/object/tools/key.ftl new file mode 100644 index 0000000000..d28ec271a6 --- /dev/null +++ b/Resources/Locale/ru-RU/White/object/tools/key.ftl @@ -0,0 +1,5 @@ +ent-KeyMetal = металлический ключ + .desc = заостренный кусок металла + +key-lock-message = {$name} проворачивает ключ в замке {$door} и закрывает {POSS-ADJ($door)} +key-unlock-message = {$name} проворачивает ключ в замке {$door} и открывает {POSS-ADJ($door)} diff --git a/Resources/Locale/ru-RU/white/object/tools/keyform.ftl b/Resources/Locale/ru-RU/white/object/tools/keyform.ftl new file mode 100644 index 0000000000..7a6ad6026a --- /dev/null +++ b/Resources/Locale/ru-RU/white/object/tools/keyform.ftl @@ -0,0 +1,5 @@ +ent-KeyForm = пластиковая форма + .desc = мягкий кусок пластика + +key-pressed-in-keyform-message-first = {$user} вдавливает {$key} в пластик, создавая в нем форму ключа +key-pressed-in-keyform-message = {$user} вставляет {$key} в форму, заставляя его скопировать уникальный узор diff --git a/Resources/Locale/ru-RU/white/object/tools/keyhole.ftl b/Resources/Locale/ru-RU/white/object/tools/keyhole.ftl new file mode 100644 index 0000000000..788328b305 --- /dev/null +++ b/Resources/Locale/ru-RU/white/object/tools/keyhole.ftl @@ -0,0 +1 @@ +door-locked-via-key = {$door} закрыта diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml index 05ca51d5eb..e5473dfa35 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml @@ -57,6 +57,7 @@ mode: NoSprite - type: Occluder - type: ReflectAspectMark + - type: Keyhole - type: entity parent: BaseMaterialDoor diff --git a/Resources/Prototypes/White/Objects/Tools/crafts.yml b/Resources/Prototypes/White/Objects/Tools/crafts.yml new file mode 100644 index 0000000000..527d2d9dd6 --- /dev/null +++ b/Resources/Prototypes/White/Objects/Tools/crafts.yml @@ -0,0 +1,54 @@ +- type: constructionGraph + id: KeyFormGraph + start: start + graph: + - node: start + edges: + - to: KeyFormNode + steps: + - material: Plastic + amount: 1 + doAfter: 2 + - node: KeyFormNode + entity: KeyForm + +- type: construction + name: ent-KeyForm + id: KeyForm + graph: KeyFormGraph + startNode: start + targetNode: KeyFormNode + category: construction-category-tools + objectType: Item + description: ent-KeyForm.desc + icon: + sprite: White/Objects/Tools/form.rsi + state: empty + + +- type: constructionGraph + id: KeyGraph + start: start + graph: + - node: start + edges: + - to: KeyNode + steps: + - material: Steel + amount: 1 + doAfter: 2 + - node: KeyNode + entity: KeyMetal + +- type: construction + name: ent-KeyMetal + id: KeyMetal + graph: KeyGraph + startNode: start + targetNode: KeyNode + category: construction-category-tools + objectType: Item + description: ent-KeyMetal.desc + icon: + sprite: White/Objects/Tools/key.rsi + state: icon diff --git a/Resources/Prototypes/White/Objects/Tools/form.yml b/Resources/Prototypes/White/Objects/Tools/form.yml new file mode 100644 index 0000000000..07b4d4aab9 --- /dev/null +++ b/Resources/Prototypes/White/Objects/Tools/form.yml @@ -0,0 +1,34 @@ +- type: entity + name: form + parent: BaseItem + id: KeyForm + description: Makeshift piece of plastic + components: + - type: EmitSoundOnPickup + sound: + path: /Audio/White/Object/Tools/Form/pickup.ogg + - type: EmitSoundOnLand + sound: + path: /Audio/White/Object/Tools/Form/hit.ogg + - type: Sprite + sprite: White/Objects/Tools/form.rsi + state: empty + - type: Item + sprite: White/Objects/Tools/form.rsi + storedRotation: -180 + - type: PhysicalComposition + materialComposition: + Steel: 100 + - type: StaticPrice + price: 10 + - type: Keyform + - type: GenericVisualizer + visuals: + enum.KeyformVisuals.IsUsed: + base: + True: { state: withkey } + False: { state: empty } + - type: Appearance + - type: Construction + graph: KeyFormGraph + node: KeyFormNode diff --git a/Resources/Prototypes/White/Objects/Tools/key.yml b/Resources/Prototypes/White/Objects/Tools/key.yml new file mode 100644 index 0000000000..fc05973197 --- /dev/null +++ b/Resources/Prototypes/White/Objects/Tools/key.yml @@ -0,0 +1,38 @@ +- type: entity + name: key + parent: BaseItem + id: KeyMetal + description: Makeshift sharp piece of metal + components: + - type: EmitSoundOnPickup + sound: + path: /Audio/White/Object/Tools/Key/pickup.ogg + - type: EmitSoundOnDrop + sound: + path: /Audio/White/Object/Tools/Key/drop.ogg + - type: EmitSoundOnLand + sound: + path: /Audio/White/Object/Tools/Key/drop.ogg + - type: Sprite + sprite: White/Objects/Tools/key.rsi + state: icon + - type: Item + sprite: White/Objects/Tools/key.rsi + storedRotation: -180 + - type: MeleeWeapon + wideAnimationRotation: -180 + attackRate: 1 + damage: + types: + Piercing: 1 + soundHit: + path: "/Audio/Weapons/bladeslice.ogg" + - type: PhysicalComposition + materialComposition: + Steel: 100 + - type: StaticPrice + price: 10 + - type: Key + - type: Construction + graph: KeyGraph + node: KeyNode diff --git a/Resources/Textures/White/Objects/Tools/form.rsi/empty.png b/Resources/Textures/White/Objects/Tools/form.rsi/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8300b19f1eec1d64fb2d5cbdc9ba7ee6e319ad GIT binary patch literal 544 zcmV+*0^j|KP)Px$z)3_wR9J=WRZY(7Fbo_gZrTNB;Yys0OR?c1h?3MlZ}Gn5Yk3QTROxLx5(^T` zo{YyXaNxj!{|xF0x?Zmi0L%;#!8nfXF2)E|g{rnQ5dkyfa=CoW&%I2~=QC6lDJ7Ir z006@#1b2t3 zHWgAzAnNjWKLInt>-7TgR|Vi#c6V2LtzM4RdOgs-NcPJ+9Gh%nFd#t&w;@j(y1 z^1xaFGlQx^M4CBkTuKQ!=dQfn3gny-V+0Yk*R54y=6}w1C9qyBmB3o&$K!!%ngF2f zi(LtX5TL3EAvD($QG2bKp_J0jc3(vGGrV3p)p%TF0000h;J=m6SBP%i_+f%=_Kx%d>9 zyu7pR?W^i}>**W}Z9~B64)y zn#yy3x-Bj}Wc9dY(N|PH^QLCew3MH$%f!pR2S3p{8RT%;WcevZuoWPpVgC1B(h<9r zPi*4T%Juzn4_K!+Z~qY{^=xt>zxy0Ka1q|t;QTWq~2d5avF#KN%QtZ+-8dl%bp lk08~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Objects/Tools/form.rsi/inhand-right.png b/Resources/Textures/White/Objects/Tools/form.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..4e04590af2cb6fb255e5ddb1e74932e973f8b959 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=w>@1PLn`LHy>&3N)j_27;p7QI zd8&DD59_6PZD8vzs@C4XB3@>Yud3phZ=~?($G?2lGX^qzJFJC(dV%2H>Ejn2y)^Uh zKemv&w|n*fXaBq8UjB}obY)xayIt#M2|cSkH|fc{S<5u{{FaoRHS>&*@8v%kU(N-2 z{j7eszlBxjv{L!>nRCTHaH;M*9G_5q;O=?PvWb)KBr+a0m^1lB($;4nr$Ru1@P2cq ztvPH;5A71pZ`)VV^@!<=&+A>!mWu?&IILYgQTd@ml0S$(%DQ161B1Px$y-7qtR9J=WmAk6yKoo|*OcFyb21I=W1uL-;8{foN5PUD6!%|Re#LCJ_j1n}& zBr~2u40wvYXKyxV7bjnn%bNM~uUWG)P*G9wzhmeQT(8%UMxz0M5aKQ7`#zRsJp~Pe zq9_13olbN*oe#euJ_`N|EZu=Y5R}>FdCq)3r`PK}MJx-`G%*Z=@pw!WMcM|mSD;p_ zVObWw@1vALN=csQ^!t4Vg8`e(hBQry;~3BL@H|gTS9=A75GbW^9EWzhjbRuFAy}|j=A6O+T(w{4YdszhCvVnz%$Dziio0!EX$BmvRp1n zk_5+b2*Z#t41d-DfNk5fS}mH*Ca&w^x-O<^lIJ z9=`9Frt0-Nv)PRE`Akt1IF6&8)Q|0f#bWWTdD@53;c$4oTI_XwVcRyQX(FX0%d+w> zc)46YJ&d$V;JR*kf4yGcVp*2GJts+`EBpIxSW!_?@dwz@o2u@`5VHUP01jnXNoGw= f04e|g00;m8000000Mb*F00000NkvXXu0mjf@xtq> literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Objects/Tools/key.rsi/icon.png b/Resources/Textures/White/Objects/Tools/key.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4325e0bcc82663a9250f67c8849fff6adebafdd5 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}XFOdTLn2z= zPT9?M$U(sMeb$|=T@&sL>*(@4v1bv!;O2XP-=tq{wu4#ZwNqctHDx}V!dz^5rj=2m zEpbMx;FP60yLT3dFM4marunQ*zyI<1pP9NGBEu(mDS0L_GMxYORKqfb(U_-VzxR`) zrz5jB3Nd+kPCC%FX-eF=MY*QSP9Cy!(Cj>%=)dZ6x5@5Zdlt->SBQJiy;UrFX^qk! zmMzyV#O|NNpm4#2_g#NeO!M@HDMEoFi6(7x9%^nlXfo@k{GZqZGXz85hBF>E;Q7p` q_|=1BH^c3dK!5S2MtG+A`Z8z%*&IL&0+)g(gD6i|KbLh*2~7a>0CO+^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Objects/Tools/key.rsi/inhand-left.png b/Resources/Textures/White/Objects/Tools/key.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..01d5f195b413426e96291960963eb248e061b207 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`@C5jTxB}^d z{Cqh%IW;x4Q_FP9fqa&dAirRS|NsAQ)^+Fr@?AV#977^n-(EB1Vo>05zWD6l^fGZR z&bx2wXHOE@9>vNqe{$t?p9=*}_pX=vJ>_L!*jBXdnfBw{yLL~%?Vj`d{EU4JuVvPy pGf2$1(%S_zk1sXCGtJkRK?}&{0Adih6g(M3dAjk44ofy`glX(f`@C5jTxc>kD zUrtW0AU|JCO>K@x=5nAoOG%JlFauCxv#vu2kZTz&ugxvdOrT}ftLygPqxRy3b`|NA}$hPGAv&zx(!|1SER^YY7V4)Yl_i|zgd i15M&fjqptK^<~fkvN?bl1TF