From 649b94303ec49b9ee41cf8dacb8fd321d94afcd2 Mon Sep 17 00:00:00 2001 From: Peptide90 <78795277+Peptide90@users.noreply.github.com> Date: Mon, 4 Jul 2022 08:10:29 +0100 Subject: [PATCH] Telescreens and big flat screen TV (#8842) * first pass wall tv * telescreen first pass * adds flat screen television * removed duplicate assets * code changes and construction graph start * Update lv stack to apc * completed graphs and fixed bb sizes * Proto update Co-authored-by: metalgearsloth --- .../Wallmounts/monitors_televisions.yml | 171 +++++++++++++++++ .../utilities/wallmount_telemonitors.yml | 176 ++++++++++++++++++ .../Recipes/Construction/utilities.yml | 15 ++ .../Machines/computers.rsi/meta.json | 7 +- .../Machines/computers.rsi/telescreen.png | Bin 0 -> 723 bytes .../computers.rsi/telescreen_broken.png | Bin 0 -> 881 bytes .../Wallmounts/flatscreentv.rsi/meta.json | 33 ++++ .../flatscreentv.rsi/television_wall.png | Bin 0 -> 336 bytes .../flatscreentv.rsi/television_wall_off.png | Bin 0 -> 336 bytes .../television_wallbroken.png | Bin 0 -> 277 bytes .../television_wallscreen.png | Bin 0 -> 746 bytes 11 files changed, 401 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_telemonitors.yml create mode 100644 Resources/Textures/Structures/Machines/computers.rsi/telescreen.png create mode 100644 Resources/Textures/Structures/Machines/computers.rsi/telescreen_broken.png create mode 100644 Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/meta.json create mode 100644 Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall.png create mode 100644 Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wall_off.png create mode 100644 Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallbroken.png create mode 100644 Resources/Textures/Structures/Wallmounts/flatscreentv.rsi/television_wallscreen.png 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 0000000000000000000000000000000000000000..6659b1736adae5b9dadb30da6b01643d2fc7af81 GIT binary patch literal 723 zcmV;^0xbQBP)}6<8K9X{I-=dlP41KY=V~kJEI=9}0rwz5IC($~b2g1UgesVC8h~f45aB|(_^N>breS^yFkAuGFuws9-WI}Dec9&vIu7qE zVfAI7YrsW(syBDs@sHxut3ryKid*LkZy< zZ9y-sYXhEE_aqUtj_wMaRXtG#&1(RVy|xfqM{1w4w*_ZKuQ7$cQ6_6K1Q_fd_HnL~ zxfyKXY%YpoKx)srw*ui0@gUUx;_QBrp#03v3Q~is9Zu@MVYGXQn@ufNVZh-4%%G5b z9h`+E@fNa88vv5c5cm+YQ5w)(!1=+zcvF$09%P$>{l%3gMnx*VN`9c4w?X-}_y$X{FDc^%hV}pe002ovPDHLk FV1iGDE;0ZB literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e6faf190db97a0148a944454297c7a887c093e68 GIT binary patch literal 881 zcmV-%1CIQOP)fFDZ*Bkpc$`yK zaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBS zBsC|sIJqb_H7`kti!&v&s2HS`i!-e#F*g;&Hss>W$HF{anD-001*e9~A>c zt9}3g0$NE#K~z|U?N{B_n;;MrMS;SK2J`-}+Sw)jqJXC9cY4!ib74+|*&mjjN!NYs zA2LGTLZuoZzYKX4?DaY0Xq*VMa}^q)2qYleTn!vHfn%v+nq=X z;im!sVIe`EC`y?Q8S;w3AbCpn`+cJrJ;e$Dz!Zo!c)-(^0NUbLFYmbyR7C)M9g zq87kSI%Hb8UC=d00PWCQycN#5U+LWlMkoE9k2sX4+`YUlYP98L>&xqSd0&+-FMD4C zys+=in~#0$KeF#$6}7vmHFf@m2h~4kMNM4YW8{qbbR6*D=8*;7ndYSl0NgJh)j(o^ zz^ujtcV627w;AM-nXL(sx!H%)2-aEXD>ir~N5IoIUIG|qmlJ^DQ3LYkEQNK>6wXoB z0NPL{o@lQCC<(!s8ep_S;Gj--kwOHyCit;K4d9SJ-cxdC5lkrJ#`GR5eUbS+vcTBL zV&zE$F2Mu*_)_6y{`Db2;>6P;F5Cy3$PZfs^hV@ex@aWyLCi9aOq~My;BiJ50ERn} zPiv}+C^C(O)_ET+^Ta}p^;)}?1s($I5+G}oHb7Qc=z~hgcF#tV3)ha|OG2E?1CD?% zi`1Y2@aqqQ9-9+M=D|~@)cWGpOq7YV`&aS@Q}ZKG{+j&+;ruVzok+Uw00000NkvXX Hu0mjfXSj#> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..af87be387a3b751e90105eac8041b4984ad7deb9 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QjEnx?oJHr&dIz4a%=*8LR=3V zI3OmauB4=EamT(fM}DL7@WzJT5!GG)?~h z|GE*Iw$RnA<>J*Z9L=mhaV_0;Z}PsCSO4iL>d9Vy#I)zS+UZ3-FRw5D{k1`%!1DR0 z?YaJ}jR&I~Bonm~jy%Y8kWvixvU9j0mcqu(m>9fmm)l(<=0}SdOJkERu$3%lXRcrq zI3VjK;gfJ6NAADu6&5z}7YkJkJnWu*3eb7O(aKo<`$a;$jmGKxN7v?CF)o^^61b{x S`XQie89ZJ6T-G@yGywp=-;Tln literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..af87be387a3b751e90105eac8041b4984ad7deb9 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QjEnx?oJHr&dIz4a%=*8LR=3V zI3OmauB4=EamT(fM}DL7@WzJT5!GG)?~h z|GE*Iw$RnA<>J*Z9L=mhaV_0;Z}PsCSO4iL>d9Vy#I)zS+UZ3-FRw5D{k1`%!1DR0 z?YaJ}jR&I~Bonm~jy%Y8kWvixvU9j0mcqu(m>9fmm)l(<=0}SdOJkERu$3%lXRcrq zI3VjK;gfJ6NAADu6&5z}7YkJkJnWu*3eb7O(aKo<`$a;$jmGKxN7v?CF)o^^61b{x S`XQie89ZJ6T-G@yGywp=-;Tln literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..35c51f62f412d21307ee33965c5d273c8536ca44 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QjEnx?oJHr&dIz4a%=*8LR=3V zI3OmauB4=vZA7O-n@A$R;<{vWy_j1Yfhd#?d0Tf z^UnPS1_oIrlN-kvJOhP8W5shyWW6gVivRsxkzzl&&Nj-+HYQc#_|a59Kbz^w%B30_ zlP7<2_7q-gkSJF^w8#tICxJ3A z`yDvy^c7ASc}~)tzh873@03#xqVw$6I83_Jv5m>+Q)|cuqY2@!_|D6JJCI(v`=vHR zufQTkY38X9bq~GcKUsgLeyTl-Lg=Iy+6w9llYCaOt56WH&<1=rnLI=ZGZ89e|S#l9ohNU+x8k}qIODH7NH*8~ER&)E;K23)c{}|pHh!w1OKU-jveFEQu zfcxfb95>_z^nW`UKM1*BZ}&A_!=pa&#YEq~yRUs;UajC#pZNXPzV|