Holopads (#32711)
* Initial resources commit * Initial code commit * Added additional resources * Continuing to build holopad and telephone systems * Added hologram shader * Added hologram system and entity * Holo calls now have a hologram of the user appear on them * Initial implementation of holopads transmitting nearby chatter * Added support for linking across multiple telephones/holopads/entities * Fixed a bunch of bugs * Tried simplifying holopad entity dependence, added support for mid-call user switching * Replaced PVS expansion with manually networked sprite states * Adjusted volume of ring tone * Added machine board * Minor features and tweaks * Resolving merge conflict * Recommit audio attributions * Telephone chat adjustments * Added support for AI interactions with holopads * Building the holopad UI * Holopad UI finished * Further UI tweaks * Station AI can hear local chatter when being projected from a holopad * Minor bug fixes * Added wire panels to holopads * Basic broadcasting * Start of emergency broadcasting code * Fixing issues with broadcasting * More work on emergency broadcasting * Updated holopad visuals * Added cooldown text to emergency broadcast and control lock out screen * Code clean up * Fixed issue with timing * Broadcasting now requires command access * Fixed some bugs * Added multiple holopad prototypes with different ranges * The AI no longer requires power to interact with holopads * Fixed some additional issues * Addressing more issues * Added emote support for holograms * Changed the broadcast lockout durations to their proper values * Added AI vision wire to holopads * Bug fixes * AI vision and interaction wires can be added to the same wire panel * Fixed error * More bug fixes * Fixed test fail * Embellished the emergency call lock out window * Holopads play borg sounds when speaking * Borg and AI names are listed as the caller ID on the holopad * Borg chassis can now be seen on holopad holograms * Holopad returns to a machine frame when badly damaged * Clarified some text * Fix merge conflict * Fixed merge conflict * Fixing merge conflict * Fixing merge conflict * Fixing merge conflict * Offset menu on open * AI can alt click on holopads to activate the projector * Bug fixes for intellicard interactions * Fixed speech issue with intellicards * The UI automatically opens for the AI when it alt-clicks on the holopad * Simplified shader math * Telephones will auto hang up 60 seconds after the last person on a call stops speaking * Added better support for AI requests when multiple AI cores are on the station * The call controls pop up for the AI when they accept a summons from a holopad * Compatibility mode fix for the hologram shader * Further shader fixes for compatibility mode * File clean up * More cleaning up * Removed access requirements from quantum holopads so they can used by nukies * The title of the holopad window now reflects the name of the device * Linked telephones will lose their connection if both move out of range of each other
This commit is contained in:
@@ -70,6 +70,10 @@
|
||||
canShuttle: false
|
||||
title: comms-console-announcement-title-station-ai
|
||||
color: "#5ed7aa"
|
||||
- type: HolographicAvatar
|
||||
layerData:
|
||||
- sprite: Mobs/Silicon/station_ai.rsi
|
||||
state: default
|
||||
- type: ShowJobIcons
|
||||
|
||||
- type: entity
|
||||
@@ -364,6 +368,19 @@
|
||||
unshaded:
|
||||
Empty: { state: ai_empty }
|
||||
Occupied: { state: ai }
|
||||
- type: Telephone
|
||||
listeningRange: 0
|
||||
speakerVolume: Speak
|
||||
unlistedNumber: true
|
||||
requiresPower: false
|
||||
- type: Holopad
|
||||
- type: StationAiWhitelist
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.HolopadUiKey.AiRequestWindow:
|
||||
type: HolopadBoundUserInterface
|
||||
enum.HolopadUiKey.AiActionWindow:
|
||||
type: HolopadBoundUserInterface
|
||||
|
||||
# The job-ready version of an AI spawn.
|
||||
- type: entity
|
||||
@@ -446,6 +463,28 @@
|
||||
shader: unshaded
|
||||
map: ["base"]
|
||||
|
||||
# The holographic representation of the AI that is projected from a holopad.
|
||||
- type: entity
|
||||
id: StationAiHoloLocal
|
||||
name: AI hologram
|
||||
description: A holographic representation of an AI.
|
||||
categories: [ HideSpawnMenu ]
|
||||
suffix: DO NOT MAP
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: true
|
||||
- type: WarpPoint
|
||||
follow: true
|
||||
- type: Eye
|
||||
- type: ContentEye
|
||||
- type: Examiner
|
||||
- type: Actions
|
||||
- type: Alerts
|
||||
- type: FTLSmashImmune
|
||||
- type: CargoSellBlacklist
|
||||
- type: StationAiVision
|
||||
range: 20
|
||||
|
||||
# Borgs
|
||||
- type: entity
|
||||
id: PlayerBorgBattery
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
- type: entity
|
||||
id: HolopadMachineCircuitboard
|
||||
parent: BaseMachineCircuitboard
|
||||
name: holopad machine board
|
||||
description: A machine printed circuit board for a holopad.
|
||||
components:
|
||||
- type: MachineBoard
|
||||
prototype: Holopad
|
||||
stackRequirements:
|
||||
Capacitor: 4
|
||||
Cable: 4
|
||||
Glass: 2
|
||||
158
Resources/Prototypes/Entities/Structures/Machines/holopad.yml
Normal file
158
Resources/Prototypes/Entities/Structures/Machines/holopad.yml
Normal file
@@ -0,0 +1,158 @@
|
||||
- type: entity
|
||||
parent: [ BaseMachinePowered, ConstructibleMachine ]
|
||||
id: Holopad
|
||||
name: holopad
|
||||
description: "A floor-mounted device for projecting holographic images."
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: true
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeCircle
|
||||
radius: 0.25
|
||||
mask:
|
||||
- SubfloorMask
|
||||
layer:
|
||||
- LowImpassable
|
||||
hard: false
|
||||
- type: ApcPowerReceiver
|
||||
powerLoad: 300
|
||||
- type: StationAiVision
|
||||
- type: Sprite
|
||||
sprite: Structures/Machines/holopad.rsi
|
||||
snapCardinals: true
|
||||
layers:
|
||||
- state: base
|
||||
- map: [ "lights" ]
|
||||
state: blank
|
||||
shader: unshaded
|
||||
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
|
||||
state: unpowered
|
||||
- map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
|
||||
state: panel_open
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.TelephoneVisuals.Key:
|
||||
lights:
|
||||
Idle: { state: blank }
|
||||
Calling: { state: lights_calling }
|
||||
Ringing: { state: lights_ringing }
|
||||
InCall: { state: lights_in_call }
|
||||
EndingCall: { state: lights_hanging_up }
|
||||
enum.PowerDeviceVisuals.Powered:
|
||||
enum.PowerDeviceVisualLayers.Powered:
|
||||
False: { visible: true }
|
||||
True: { visible: false }
|
||||
enum.WiresVisuals.MaintenancePanelState:
|
||||
enum.WiresVisualLayers.MaintenancePanel:
|
||||
True: { visible: false }
|
||||
False: { visible: true }
|
||||
- type: Machine
|
||||
board: HolopadMachineCircuitboard
|
||||
- type: StationAiWhitelist
|
||||
- type: PointLight
|
||||
radius: 1.3
|
||||
energy: 1.8
|
||||
color: "#afe1fe"
|
||||
enabled: false
|
||||
- type: AmbientSound
|
||||
enabled: false
|
||||
volume: -5
|
||||
range: 3
|
||||
sound:
|
||||
path: /Audio/Ambience/Objects/buzzing.ogg
|
||||
- type: Holopad
|
||||
hologramProtoId: HolopadHologram
|
||||
- type: Speech
|
||||
speechVerb: Robotic
|
||||
speechSounds: Borg
|
||||
speechBubbleOffset: 0.45
|
||||
- type: Telephone
|
||||
transmissionRange: Map
|
||||
ringTone: /Audio/Machines/double_ring.ogg
|
||||
listeningRange: 4
|
||||
speakerVolume: Speak
|
||||
- type: AccessReader
|
||||
access: [[ "Command" ]]
|
||||
- type: ActivatableUI
|
||||
key: enum.HolopadUiKey.InteractionWindow
|
||||
- type: ActivatableUIRequiresPower
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.HolopadUiKey.InteractionWindow:
|
||||
type: HolopadBoundUserInterface
|
||||
enum.WiresUiKey.Key:
|
||||
type: WiresBoundUserInterface
|
||||
- type: WiresPanel
|
||||
- type: WiresVisuals
|
||||
- type: Wires
|
||||
boardName: wires-board-name-holopad
|
||||
layoutId: Holopad
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 100
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: MetalBreak
|
||||
- !type:ChangeConstructionNodeBehavior
|
||||
node: machineFrame
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
|
||||
- type: entity
|
||||
name: long-range holopad
|
||||
description: "A floor-mounted device for projecting holographic images to other devices that are far away."
|
||||
parent: Holopad
|
||||
id: HolopadLongRange
|
||||
suffix: For calls between maps
|
||||
components:
|
||||
- type: Telephone
|
||||
transmissionRange: Long
|
||||
|
||||
- type: entity
|
||||
name: quantum entangling holopad
|
||||
description: "An experimental floor-mounted device for projecting holographic images at extreme distances."
|
||||
parent: Holopad
|
||||
id: HolopadUnlimitedRange
|
||||
suffix: Unlimited range
|
||||
components:
|
||||
- type: Telephone
|
||||
transmissionRange: Unlimited
|
||||
- type: AccessReader
|
||||
access: [[]]
|
||||
|
||||
# These are spawned by holopads
|
||||
- type: entity
|
||||
id: HolopadHologram
|
||||
categories: [ HideSpawnMenu ]
|
||||
suffix: DO NOT MAP
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: true
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
drawdepth: Mobs
|
||||
offset: -0.02, 0.45
|
||||
overrideDir: South
|
||||
enableOverrideDir: true
|
||||
- type: Appearance
|
||||
- type: TypingIndicator
|
||||
proto: robot
|
||||
- type: HolopadHologram
|
||||
rsiPath: Structures/Machines/holopad.rsi
|
||||
rsiState: icon_in_call
|
||||
shaderName: Hologram
|
||||
color1: "#65b8e2"
|
||||
color2: "#3a6981"
|
||||
alpha: 0.9
|
||||
intensity: 2
|
||||
scrollRate: 0.125
|
||||
- type: Tag
|
||||
tags:
|
||||
- HideContextMenu
|
||||
@@ -104,3 +104,8 @@
|
||||
id: Cataracts
|
||||
kind: source
|
||||
path: "/Textures/Shaders/cataracts.swsl"
|
||||
|
||||
- type: shader
|
||||
id: Hologram
|
||||
kind: source
|
||||
path: "/Textures/Shaders/hologram.swsl"
|
||||
@@ -190,10 +190,18 @@
|
||||
- !type:PowerWireAction
|
||||
- !type:AiInteractWireAction
|
||||
|
||||
- type: wireLayout
|
||||
id: Holopad
|
||||
dummyWires: 2
|
||||
wires:
|
||||
- !type:PowerWireAction
|
||||
- !type:AiInteractWireAction
|
||||
- !type:AiVisionWireAction
|
||||
|
||||
- type: wireLayout
|
||||
id: BarSign
|
||||
dummyWires: 2
|
||||
wires:
|
||||
- !type:PowerWireAction
|
||||
- !type:AiInteractWireAction
|
||||
- !type:AccessWireAction
|
||||
- !type:AccessWireAction
|
||||
Reference in New Issue
Block a user