* 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:
chromiumboy
2024-12-17 13:18:15 -06:00
committed by GitHub
parent ab8447956c
commit 7780b867ac
43 changed files with 3129 additions and 8 deletions

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -104,3 +104,8 @@
id: Cataracts
kind: source
path: "/Textures/Shaders/cataracts.swsl"
- type: shader
id: Hologram
kind: source
path: "/Textures/Shaders/hologram.swsl"

View File

@@ -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