diff --git a/Content.Server/SurveillanceCamera/Components/SurveillanceBodyCameraComponent.cs b/Content.Server/SurveillanceCamera/Components/SurveillanceBodyCameraComponent.cs new file mode 100644 index 0000000000..99235dd7a5 --- /dev/null +++ b/Content.Server/SurveillanceCamera/Components/SurveillanceBodyCameraComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.SurveillanceCamera; + +[RegisterComponent] +public sealed partial class SurveillanceBodyCameraComponent : Component +{ + [DataField("wattage"), ViewVariables(VVAccess.ReadWrite)] + public float Wattage = 0.3f; + + public bool lastState = false; +} diff --git a/Content.Server/SurveillanceCamera/Components/SurveillanceCameraComponent.cs b/Content.Server/SurveillanceCamera/Components/SurveillanceCameraComponent.cs index 8473462f80..0cbaba66ca 100644 --- a/Content.Server/SurveillanceCamera/Components/SurveillanceCameraComponent.cs +++ b/Content.Server/SurveillanceCamera/Components/SurveillanceCameraComponent.cs @@ -4,7 +4,7 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy namespace Content.Server.SurveillanceCamera; [RegisterComponent] -[Access(typeof(SurveillanceCameraSystem))] +[Access(typeof(SurveillanceCameraSystem), typeof(SurveillanceBodyCameraSystem))] public sealed partial class SurveillanceCameraComponent : Component { // List of active viewers. This is for bookkeeping purposes, diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceBodyCameraSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceBodyCameraSystem.cs new file mode 100644 index 0000000000..6435623dd5 --- /dev/null +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceBodyCameraSystem.cs @@ -0,0 +1,116 @@ +using Content.Server.Popups; +using Content.Server.PowerCell; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.Examine; +using Content.Shared.Interaction; +using Content.Shared.Item; +using Content.Shared.PowerCell.Components; +using Content.Shared.Toggleable; + +namespace Content.Server.SurveillanceCamera; + +/// +/// This handles the bodycamera all itself. Activation, examine,init, powercell stuff. +/// +public sealed class SurveillanceBodyCameraSystem : EntitySystem +{ + [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly SurveillanceCameraSystem _surveillanceCameras = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedItemSystem _item = default!; + [Dependency] private readonly ClothingSystem _clothing = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnActivate); + SubscribeLocalEvent(OnPowerCellChanged); + SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnInit); + } + + public void OnInit(EntityUid uid, SurveillanceBodyCameraComponent comp, ComponentInit args) + { + + if (!TryComp(uid, out var surComp)) + return; + + _surveillanceCameras.SetActive(uid, false, surComp); + surComp.NetworkSet = true; + AppearanceChange(uid, surComp.Active); + } + public override void Update(float frameTime) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var cam)) + { + if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery)) + continue; + + if (!TryComp(uid, out var surComp)) + continue; + + if (!surComp.Active) + continue; + + if (!battery.TryUseCharge(cam.Wattage * frameTime)) + { + _surveillanceCameras.SetActive(uid, false, surComp); + AppearanceChange(uid, surComp.Active); + } + } + } + public void OnActivate(EntityUid uid, SurveillanceBodyCameraComponent comp, ActivateInWorldEvent args) + { + if (!TryComp(uid, out var surComp)) + return; + + if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery)) + return; + + _surveillanceCameras.SetActive(uid, battery.CurrentCharge > comp.Wattage && !surComp.Active, surComp); + AppearanceChange(uid, surComp.Active); + + var message = Loc.GetString(surComp.Active ? "surveillance-body-camera-on" : "surveillance-body-camera-off"); + _popup.PopupEntity(message, args.User, args.User); + args.Handled = true; + } + + public void OnPowerCellChanged(EntityUid uid, SurveillanceBodyCameraComponent comp, PowerCellChangedEvent args) + { + if (!TryComp(uid, out var surComp)) + return; + + if (args.Ejected) + { + _surveillanceCameras.SetActive(uid, false, surComp); + AppearanceChange(uid, surComp.Active); + } + } + + public void OnExamine(EntityUid uid, SurveillanceBodyCameraComponent comp, ExaminedEvent args) + { + if (!TryComp(uid, out var surComp)) + return; + + if (args.IsInDetailsRange) + { + var message = + Loc.GetString(surComp.Active ? "surveillance-body-camera-on" : "surveillance-body-camera-off"); + args.PushMarkup(message); + } + } + + public void AppearanceChange(EntityUid uid, Boolean isActive) + { + if (TryComp(uid, out var appearance) && + TryComp(uid, out var item)) + { + _item.SetHeldPrefix(uid, isActive ? "on" : "off", false, item); + _clothing.SetEquippedPrefix(uid, isActive ? null : "off"); + _appearance.SetData(uid, ToggleVisuals.Toggled, isActive, appearance); + } + } +} diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsComponent.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsComponent.cs index c1b46c3d91..7c389f5a8d 100644 --- a/Content.Shared/Containers/ItemSlot/ItemSlotsComponent.cs +++ b/Content.Shared/Containers/ItemSlot/ItemSlotsComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Clothing.EntitySystems; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.Containers; diff --git a/Resources/Locale/ru-RU/prototypes/catalog/fills/crates/security-crates.ftl b/Resources/Locale/ru-RU/prototypes/catalog/fills/crates/security-crates.ftl index 14d20802f7..3213b1025d 100644 --- a/Resources/Locale/ru-RU/prototypes/catalog/fills/crates/security-crates.ftl +++ b/Resources/Locale/ru-RU/prototypes/catalog/fills/crates/security-crates.ftl @@ -14,3 +14,5 @@ ent-CrateSecurityBiosuit = ящик биокостюмов безопаснос .desc = Содержит 2 костюма биологической защиты, гарантирующих, что никакая болезнь не отвлечет вас от ваших обязанностей. Для открытия требуется доступ СБ. ent-CreateSecurityMindShield = ящик имплантов защиты разума .desc = Содержит в себе 5 имплантов защиты разума. Чтобы открыть необходим уровень доступа Служба безопасности. +ent-CrateSecurityBodyCamera = ящик нагрудных камер + .desc = Содержит 10 нагрудных камер. Чтобы открыть необходим уровень доступа Служба безопасности. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/boxes/security.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/boxes/security.ftl index 38a1b55087..2792ae52bf 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/boxes/security.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/boxes/security.ftl @@ -16,3 +16,6 @@ ent-BoxZiptie = коробка стяжек ent-BoxForensicPad = коробка криминалистических пластинок .desc = Коробка криминалистических пластинок. .suffix = { "" } +ent-BoxBodyCamera = коробка бодикамер + .desc = Коробка нагрудных камер службы безопасности. + .suffix = { "" } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/security.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/security.ftl index ceaccd2212..36c0645131 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/security.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/security.ftl @@ -10,3 +10,6 @@ ent-PortableFlasher = переносная вспышка ent-DeskBell = настольный звонок .desc = Краеугольный камень любой работы по обслуживанию клиентов. Вы испытываете непреодолимое желание позвонить в него. .suffix = { "" } +ent-SurveillanceBodyCamera = бодикамера + .desc = Следи за собой! Или за другими. Или за всеми сразу. Или ни за кем. Как хочешь. Нательная камера, записывающая все, что происходит вокруг. + .suffix = { "" } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/surveillance_camera_routers.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/surveillance_camera_routers.ftl index 5da4e56c19..05bb76bc2e 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/surveillance_camera_routers.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/surveillance_camera_routers.ftl @@ -31,6 +31,9 @@ ent-SurveillanceCameraRouterGeneral = { ent-SurveillanceCameraRouterBase } ent-SurveillanceCameraWirelessRouterBase = маршрутизатор беспроводных камер .desc = Маршрутизатор для беспроводных камер наблюдения. Он маршрутизирует. Возможно. .suffix = { "" } +ent-SurveillanceCameraWirelessRouterSecurity = { ent-SurveillanceCameraWirelessRouterBase } + .suffix = Охранный + .desc = { ent-SurveillanceCameraWirelessRouterBase.desc } ent-SurveillanceCameraWirelessRouterConstructed = { ent-SurveillanceCameraWirelessRouterBase } .suffix = Построенный .desc = { ent-SurveillanceCameraWirelessRouterBase.desc } diff --git a/Resources/Locale/ru-RU/surveillance-camera/surveillance-camera-ui.ftl b/Resources/Locale/ru-RU/surveillance-camera/surveillance-camera-ui.ftl index 4b0c5535fa..4ab4bbecf0 100644 --- a/Resources/Locale/ru-RU/surveillance-camera/surveillance-camera-ui.ftl +++ b/Resources/Locale/ru-RU/surveillance-camera/surveillance-camera-ui.ftl @@ -9,3 +9,5 @@ surveillance-camera-monitor-ui-status-disconnected = Отключено surveillance-camera-monitor-ui-no-subnets = Нет подсетей surveillance-camera-setup = Настроить surveillance-camera-setup-ui-set = Установить +surveillance-body-camera-on = Камера включена +surveillance-body-camera-off = Камера выключена diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml index 091501b7fd..10fa382a3c 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml @@ -77,3 +77,13 @@ cost: 1000 category: Security group: market + +- type: cargoProduct + id: SecurityBodycam + icon: + sprite: Objects/Specific/Security/body-camera.rsi + state: unpowered + product: CrateSecurityBodyCamera + cost: 2000 + category: Security + group: market diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml index 9975f4f3f0..2a4a444d23 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml @@ -81,3 +81,20 @@ layers: - state: box_security - state: forensic + +#White + +- type: entity + name: body camera box + parent: BoxCardboard + id: BoxBodyCamera + description: A box full of body cameras. + components: + - type: StorageFill + contents: + - id: SurveillanceBodyCamera + amount: 5 + - type: Sprite + layers: + - state: box_security + - state: bodycam diff --git a/Resources/Prototypes/Catalog/Fills/Crates/security.yml b/Resources/Prototypes/Catalog/Fills/Crates/security.yml index ea8c7ce0d3..87b3344237 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/security.yml @@ -97,5 +97,14 @@ amount: 4 - id: TrackingImplanter amount: 4 - + # Cosmetic Crates + +- type: entity + id: CrateSecurityBodyCamera + parent: CrateSecgear + components: + - type: StorageFill + contents: + - id: BoxBodyCamera + amount: 2 diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 1334ffd23e..ca35ae0952 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -21,6 +21,7 @@ - id: ClothingOuterHardsuitWarden - id: HoloprojectorSecurity - id: ClothingEyesHudSecurity + - id: BoxBodyCamera - type: entity id: LockerWardenFilled @@ -45,6 +46,7 @@ - id: DoorRemoteArmory - id: HoloprojectorSecurity - id: ClothingEyesHudSecurity + - id: BoxBodyCamera - type: entity id: LockerSecurityFilled diff --git a/Resources/Prototypes/Entities/Objects/Specific/Security/body-camera.yml b/Resources/Prototypes/Entities/Objects/Specific/Security/body-camera.yml new file mode 100644 index 0000000000..65b71eed02 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Specific/Security/body-camera.yml @@ -0,0 +1,73 @@ +- type: entity + parent: BaseItem + id: SurveillanceBodyCamera + name: Security Body Camera + description: MP3 player sized pocket camera for security officers. + components: + - type: SurveillanceBodyCamera + - type: Sprite # Sprites section + sprite: Objects/Specific/Security/body-camera.rsi + layers: + - state: unpowered + - state: active-animated + map: ["active"] + visible: false + - type: Clothing + sprite: Objects/Specific/Security/body-camera.rsi + quickEquip: false + slots: + - neck + - type: ToggleableLightVisuals + spriteLayer: active + inhandVisuals: + left: + - state: inhand-left-active + shader: unshaded + right: + - state: inhand-left-active + shader: unshaded + - type: Item + heldPrefix: off + sprite: Objects/Specific/Security/body-camera.rsi + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ToggleVisuals.Toggled: + enum.ToggleVisuals.Layer: + True: { state: active-animated } + False: { state: unpowered } # END + - type: Eye + - type: WirelessNetworkConnection + range: 300 + - type: ActiveListener + range: 5 + - type: SurveillanceCameraMicrophone + blacklist: + components: + - SurveillanceCamera + - SurveillanceCameraMonitor + - RadioSpeaker + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: SurveillanceCameraSecurity + transmitFrequencyId: SurveillanceCamera + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraSecurity + - type: PowerCellSlot + cellSlotId: cell_slot + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: UserInterface + interfaces: + - key: enum.SurveillanceCameraSetupUiKey.Camera + type: SurveillanceCameraSetupBoundUi + - type: Tag + tags: + - SurveillanceBodyCamera diff --git a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml index 1eeaec9b7c..f7021fbe52 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml @@ -135,6 +135,7 @@ - type: SurveillanceCameraRouter setupAvailableNetworks: - SurveillanceCameraEntertainment + - SurveillanceCameraSecurity - type: entity parent: SurveillanceCameraWirelessRouterBase @@ -143,3 +144,12 @@ components: - type: SurveillanceCameraRouter subnetFrequency: SurveillanceCameraEntertainment + +# Body Camera Separate Router +- type: entity + parent: SurveillanceCameraWirelessRouterBase + id: SurveillanceCameraWirelessRouterSecurity + suffix: Security + components: + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraSecurity diff --git a/Resources/Prototypes/White/tags.yml b/Resources/Prototypes/White/tags.yml index 9b53e3b41c..febef3d7ce 100644 --- a/Resources/Prototypes/White/tags.yml +++ b/Resources/Prototypes/White/tags.yml @@ -42,3 +42,6 @@ - type: Tag id: Telecrystal + +- type: Tag + id: SurveillanceBodyCamera diff --git a/Resources/Textures/Clothing/Uniforms/Overlay.rsi/camera.png b/Resources/Textures/Clothing/Uniforms/Overlay.rsi/camera.png new file mode 100644 index 0000000000..32cb4e7ab2 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Overlay.rsi/camera.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Overlay.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Overlay.rsi/meta.json new file mode 100644 index 0000000000..f96e46ffda --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Overlay.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version" : 1, + "license" : "CC-BY-SA-3.0", + "copyright" : "Copyright (c) White Dream Space Station 14", + "size" : { + "x" : 32, + "y" : 32 + }, + "states" : [ + { + "name" : "camera" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/active-animated.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/active-animated.png new file mode 100644 index 0000000000..070a9a42b7 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/active-animated.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/active.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/active.png new file mode 100644 index 0000000000..dceb8e3976 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/active.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..c2716229e0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/equipped-NECK.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/equipped-NECK.png new file mode 100644 index 0000000000..66c5cdbfe2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/inactive.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/inactive.png new file mode 100644 index 0000000000..87a051d173 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/inactive.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/meta.json b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/meta.json new file mode 100644 index 0000000000..6e6fd3aec3 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/meta.json @@ -0,0 +1,108 @@ +{ + "version" : 1, + "license" : "CC-BY-SA-3.0", + "copyright" : "Copyright (c) White Dream Space Station 14", + "size" : { + "x" : 32, + "y" : 32 + }, + "states" : [ + { + "name" : "unpowered" + }, + { + "name" : "active" + }, + { + "name" : "active-animated", + "delays" : [ + [ + 1, + 2 + ] + ] + }, + { + "name" : "off-inhand-right", + "directions" : 4 + }, + { + "name" : "off-inhand-left", + "directions" : 4 + }, + { + "name" : "on-inhand-right", + "directions" : 4, + "delays" : [ + [ + 1, + 2 + ], + [ + 1, + 2 + ], + [ + 1, + 2 + ], + [ + 1, + 2 + ] + ] + }, + { + "name" : "on-inhand-left", + "directions" : 4, + "delays" : [ + [ + 1, + 2 + ], + [ + 1, + 2 + ], + [ + 1, + 2 + ], + [ + 1, + 2 + ] + ] + }, + { + "name": "equipped-NECK", + "directions": 4, + "delays" : [ + [ + 1, + 2 + ], + [ + 1, + 2 + ], + [ + 1, + 2 + ], + [ + 1, + 2 + ] + ] + }, + { + "name" : "off-equipped-NECK", + "directions" : 4 + }, + { + "name": "equipped-INNERCLOTHING", + "directions" : 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-equipped-NECK.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-equipped-NECK.png new file mode 100644 index 0000000000..7587e067f3 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-equipped-NECK.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-inhand-left.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-inhand-left.png new file mode 100644 index 0000000000..043847e22b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-inhand-right.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-inhand-right.png new file mode 100644 index 0000000000..ecae3b2b56 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/off-inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/on-inhand-left.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/on-inhand-left.png new file mode 100644 index 0000000000..87e1b4346b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/on-inhand-right.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/on-inhand-right.png new file mode 100644 index 0000000000..e5e017579b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Security/body-camera.rsi/unpowered.png b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/unpowered.png new file mode 100644 index 0000000000..edd9c172d0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Security/body-camera.rsi/unpowered.png differ diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/bodycam.png b/Resources/Textures/Objects/Storage/boxes.rsi/bodycam.png new file mode 100644 index 0000000000..8958224c6f Binary files /dev/null and b/Resources/Textures/Objects/Storage/boxes.rsi/bodycam.png differ diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index 47c69de027..d47a015fd4 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -205,6 +205,9 @@ }, { "name": "vials" + }, + { + "name": "bodycam" } ] } diff --git a/Resources/Textures/Structures/Machines/computers.rsi/bodycammonitor.png b/Resources/Textures/Structures/Machines/computers.rsi/bodycammonitor.png new file mode 100644 index 0000000000..d203398790 Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/bodycammonitor.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/bodycamprogram.png b/Resources/Textures/Structures/Machines/computers.rsi/bodycamprogram.png new file mode 100644 index 0000000000..1282216d16 Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/bodycamprogram.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/meta.json b/Resources/Textures/Structures/Machines/computers.rsi/meta.json index b6741b195d..bfb9a8ccff 100644 --- a/Resources/Textures/Structures/Machines/computers.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/computers.rsi/meta.json @@ -7,6 +7,12 @@ "y": 32 }, "states": [ + { + "name" : "bodycammonitor" + }, + { + "name" : "bodycamprogram" + }, { "name": "ai-fixer", "directions": 4