diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml new file mode 100644 index 0000000000..54e1f8f6d1 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml @@ -0,0 +1,171 @@ +- type: entity + parent: BaseComputer + id: WallmountTelescreenFrame + name: telescreen frame + description: Finally, some decent reception around here... + components: + - type: Appearance + visuals: + - type: ComputerVisualizer + body: telescreen + bodyBroken: telescreen_broken + screen: telescreen + - type: Construction + graph: WallmountTelescreen + node: TelescreenFrame + - type: Sprite + drawdepth: WallMountedItems + netsync: false + sprite: Structures/Machines/computers.rsi + layers: + - map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ] + visible: false + - map: [ "enum.ComputerVisualizer+Layers.Keyboard" ] + visible: false + - map: [ "enum.ComputerVisualizer+Layers.Body"] + state: television + - map: [ "enum.ComputerVisualizer+Layers.Screen" ] + state: telescreen + shader: shaded + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.20,-0.10,0.25,0.35" + mass: 50 + mask: + - FullTileMask + layer: + - WallLayer + - type: WallMount + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: #excess damage, don't spawn entities. + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + SheetSteel1: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Transform + anchored: true + +- type: entity + parent: WallmountTelescreenFrame + id: WallmountTelescreen + suffix: camera monitor + name: telescreen + description: Finally, some decent reception around here... + components: + - type: Construction + graph: WallmountTelescreen + node: Telescreen + - type: PointLight + radius: 1.5 + energy: 1.6 + color: "#b89f25" + - type: DeviceNetwork + deviceNetId: Wired + receiveFrequencyId: SurveillanceCamera + transmitFrequencyId: SurveillanceCamera + - type: WiredNetworkConnection + - type: SurveillanceCameraMonitor + - type: ActivatableUI + key: enum.SurveillanceCameraMonitorUiKey.Key + - type: ActivatableUIRequiresPower + - type: UserInterface + interfaces: + - key: enum.SurveillanceCameraMonitorUiKey.Key + type: SurveillanceCameraMonitorBoundUserInterface + +# Wall Televisions + +- type: entity + parent: WallmountTelescreenFrame + id: WallmountTelevisionFrame + name: television frame + description: Finally, some decent reception around here... + components: + - type: Appearance + visuals: + - type: ComputerVisualizer + key: television_wall + body: television_wall + bodyBroken: television_wallbroken + screen: television_wall + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.75,-0.10,0.75,0.35" + mass: 50 + mask: + - FullTileMask + layer: + - WallLayer + - type: Construction + graph: WallmountTelevision + node: TelevisionFrame + - type: Sprite + drawdepth: WallMountedItems + netsync: false + sprite: Structures/Wallmounts/flatscreentv.rsi + layers: + - map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ] + visible: false + - map: [ "enum.ComputerVisualizer+Layers.Keyboard" ] + visible: false + - map: [ "enum.ComputerVisualizer+Layers.Body"] + state: television_wall + - map: [ "enum.ComputerVisualizer+Layers.Screen" ] + state: television_wall + shader: shaded + +- type: entity + parent: WallmountTelevisionFrame + id: WallmountTelevision + suffix: entertainment + name: television + description: Finally, some decent reception around here... + components: + - type: Appearance + visuals: + - type: ComputerVisualizer + key: television_wall + body: television_wall + bodyBroken: television_wallbroken + screen: television_wallscreen + - type: Construction + graph: WallmountTelevision + node: Television + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: SurveillanceCamera + transmitFrequencyId: SurveillanceCamera + - type: WirelessNetworkConnection + range: 200 + - type: SurveillanceCameraMonitor + - type: ActivatableUI + key: enum.SurveillanceCameraMonitorUiKey.Key + - type: ActivatableUIRequiresPower + - type: UserInterface + interfaces: + - key: enum.SurveillanceCameraMonitorUiKey.Key + type: SurveillanceCameraMonitorBoundUserInterface + - type: PointLight + radius: 1.5 + energy: 1.6 + color: "#b89f25" diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_telemonitors.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_telemonitors.yml new file mode 100644 index 0000000000..a6c0629e87 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_telemonitors.yml @@ -0,0 +1,176 @@ +- type: constructionGraph + id: WallmountTelescreen + start: start + graph: + - node: start + edges: + - to: TelescreenFrame + steps: + - material: Steel + amount: 2 + doAfter: 2 + + + - node: TelescreenFrame + entity: WallmountTelescreenFrame + edges: + - to: Wired + steps: + - material: Cable + amount: 5 + doAfter: 3 + + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Welding + doAfter: 2 + + + - node: Wired + edges: + - to: Screen + steps: + - tool: Screwing + doAfter: 2 + - prototype: SurveillanceCameraMonitorCircuitboard + name: surveillance camera monitor board + icon: + sprite: Objects/Misc/module.rsi + state: cpuboard + + - to: TelescreenFrame + completed: + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 5 + - !type:SpawnPrototype + prototype: SurveillanceCameraMonitorCircuitboard + amount: 1 + steps: + - tool: Cutting + doAfter: 2 + + + - node: Screen + entity: WallmountTelescreenFrame + edges: + - to: Telescreen + steps: + - tool: Screwing + doAfter: 2 + - material: Glass + amount: 2 + doAfter: 2 + + - to: Wired + completed: + - !type:SpawnPrototype + prototype: SheetGlass1 + amount: 2 + steps: + - tool: Prying + doAfter: 2 + + + - node: Telescreen + entity: WallmountTelescreen + edges: + - to: Screen + steps: + - tool: Screwing + doAfter: 3 + +# TVs + +- type: constructionGraph + id: WallmountTelevision + start: start + graph: + - node: start + edges: + - to: TelevisionFrame + steps: + - material: Steel + amount: 2 + doAfter: 2 + + + - node: TelevisionFrame + entity: WallmountTelevisionFrame + edges: + - to: Wired + steps: + - material: Cable + amount: 5 + doAfter: 3 + + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Welding + doAfter: 2 + + + - node: Wired + edges: + - to: Screen + steps: + - tool: Screwing + doAfter: 2 + - prototype: ComputerTelevisionCircuitboard + name: television board + icon: + sprite: Objects/Misc/module.rsi + state: cpuboard + + - to: TelevisionFrame + completed: + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 5 + - !type:SpawnPrototype + prototype: ComputerTelevisionCircuitboard + amount: 1 + steps: + - tool: Cutting + doAfter: 2 + + + - node: Screen + entity: WallmountTelevisionFrame + edges: + - to: Television + steps: + - tool: Screwing + doAfter: 2 + - material: Glass + amount: 2 + doAfter: 2 + + - to: Wired + completed: + - !type:SpawnPrototype + prototype: SheetGlass1 + amount: 2 + steps: + - tool: Prying + doAfter: 2 + + + - node: Television + entity: WallmountTelevision + edges: + - to: Screen + steps: + - tool: Screwing + doAfter: 3 + diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index 7f75369e70..3642fe0dea 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -1,3 +1,4 @@ +# SURVEILLANCE - type: construction name: camera id: camera @@ -11,6 +12,20 @@ state: camera objectType: Structure placementMode: SnapgridCenter + +- type: construction + name: telescreen + id: WallmountTelescreen + graph: WallmountTelescreen + startNode: start + targetNode: Telescreen + category: Utilities + description: "A surveillance camera monitor for the wall." + icon: + sprite: Structures/Machines/computers.rsi + state: telescreen + objectType: Structure + placementMode: SnapgridCenter # POWER - type: construction diff --git a/Resources/Textures/Structures/Machines/computers.rsi/meta.json b/Resources/Textures/Structures/Machines/computers.rsi/meta.json index 2ea8b234f6..653238d34c 100644 --- a/Resources/Textures/Structures/Machines/computers.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/computers.rsi/meta.json @@ -1558,7 +1558,12 @@ "name": "television" }, { - "name": "television_broken" + "name": "telescreen", + "directions": 4 + }, + { + "name": "telescreen_broken", + "directions": 4 }, { "name": "detective_television" diff --git a/Resources/Textures/Structures/Machines/computers.rsi/telescreen.png b/Resources/Textures/Structures/Machines/computers.rsi/telescreen.png new file mode 100644 index 0000000000..6659b1736a Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/telescreen.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/telescreen_broken.png b/Resources/Textures/Structures/Machines/computers.rsi/telescreen_broken.png new file mode 100644 index 0000000000..e6faf190db Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/telescreen_broken.png differ diff --git a/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/meta.json new file mode 100644 index 0000000000..437216e96a --- /dev/null +++ b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by Peptide90 for SS14", + "size": { + "x": 64, + "y": 32 + }, + "states": [ + { + "name": "television_wall" + }, + { + "name": "television_wall_off" + }, + { + "name": "television_wallbroken" + }, + { + "name": "television_wallscreen", + "delays": [ + [ + 0.7, + 0.7, + 0.7, + 0.7, + 0.7, + 0.7 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall.png b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall.png new file mode 100644 index 0000000000..af87be387a Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall.png differ diff --git a/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall_off.png b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall_off.png new file mode 100644 index 0000000000..af87be387a Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall_off.png differ diff --git a/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallbroken.png b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallbroken.png new file mode 100644 index 0000000000..35c51f62f4 Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallbroken.png differ diff --git a/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallscreen.png b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallscreen.png new file mode 100644 index 0000000000..c23028d3c6 Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallscreen.png differ