diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index 8347b6a76c..3268bed49b 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -303,6 +303,20 @@ - HydroponicsTrayMachineCircuitboard - SolarControlComputerCircuitboard +- type: technology + name: "applied musicology" + id: AppliedMusicology + description: Bringing you the latest in audio-audio technology. + icon: + sprite: Objects/Fun/Instruments/guitar.rsi + state: icon + requiredPoints: 10000 + requiredTechnologies: + - ElectromagneticTheory + unlockedRecipes: + - SynthesizerInstrument + - DawInstrumentMachineCircuitboard + # Basic Parts Technology Tree - type: technology diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 586951632e..7f28a73702 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -136,6 +136,42 @@ CableMV: 5 CableHV: 5 +- type: entity + parent: BaseMachineCircuitboard + id: DawInstrumentMachineCircuitboard + name: Digital Audio Workstation (Machine Board) + components: + - type: MachineBoard + prototype: DawInstrument + requirements: + Capacitor: 4 + ScanningModule: 5 + materialRequirements: + Glass: 1 + tagRequirements: +# One instrument to bring them all and in the darkness bind them... + KeyedInstrument: + Amount: 1 + DefaultPrototype: SynthesizerInstrument + ExamineName: Keyed Instrument + StringInstrument: + Amount: 1 + DefaultPrototype: AcousticGuitarInstrument + ExamineName: String Instrument + PercussionInstrument: + Amount: 1 + DefaultPrototype: GlockenspielInstrument + ExamineName: Percussion Instrument + BrassInstrument: + Amount: 1 + DefaultPrototype: TrumpetInstrument + ExamineName: Brass Instrument + WoodwindInstrument: + Amount: 1 + DefaultPrototype: SaxophoneInstrument + ExamineName: Woodwind Instrument + + - type: entity id: KitchenReagentGrinderMachineCircuitboard #unsure why the reagent grinder has 'kitchen' in the id name when multiple departments use it but that's for another time parent: BaseMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Fun/instruments.yml b/Resources/Prototypes/Entities/Objects/Fun/instruments.yml index 04eb8c0567..ca6311f55a 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/instruments.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/instruments.yml @@ -29,6 +29,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/h_synthesizer.rsi + - type: Tag + tags: + - KeyedInstrument - type: entity parent: BaseHandheldInstrument @@ -43,6 +46,10 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/guitar.rsi + - type: Tag + tags: + - StringInstrument + - type: entity parent: BaseHandheldInstrument @@ -57,6 +64,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/violin.rsi + - type: Tag + tags: + - StringInstrument - type: entity parent: BaseHandheldInstrument @@ -71,6 +81,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/trumpet.rsi + - type: Tag + tags: + - BrassInstrument - type: entity parent: BaseHandheldInstrument @@ -86,6 +99,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/gunpet.rsi + - type: Tag + tags: + - BrassInstrument - type: entity parent: BaseHandheldInstrument @@ -100,6 +116,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/eguitar.rsi + - type: Tag + tags: + - StringInstrument - type: entity parent: BaseHandheldInstrument @@ -114,6 +133,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/accordion.rsi + - type: Tag + tags: + - KeyedInstrument - type: entity parent: BaseHandheldInstrument @@ -128,6 +150,9 @@ - type: Item size: 10 sprite: Objects/Fun/Instruments/harmonica.rsi + - type: Tag + tags: + - WoodwindInstrument - type: entity parent: BaseHandheldInstrument @@ -142,6 +167,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/recorder.rsi + - type: Tag + tags: + - WoodwindInstrument - type: entity parent: BaseHandheldInstrument @@ -156,6 +184,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/trombone.rsi + - type: Tag + tags: + - BrassInstrument - type: entity parent: BaseHandheldInstrument @@ -171,6 +202,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/saxophone.rsi + - type: Tag + tags: + - WoodwindInstrument - type: Extractable grindableSolutionName: sax - type: SolutionContainerManager @@ -180,7 +214,6 @@ - ReagentId: Saxoite Quantity: 10 - - type: entity parent: BaseHandheldInstrument id: GlockenspielInstrument @@ -194,6 +227,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/glockenspiel.rsi + - type: Tag + tags: + - PercussionInstrument - type: entity parent: BaseHandheldInstrument @@ -208,6 +244,9 @@ - type: Item size: 24 sprite: Objects/Fun/Instruments/banjo.rsi + - type: Tag + tags: + - StringInstrument - type: entity parent: BaseHandheldInstrument @@ -221,6 +260,9 @@ - type: Sprite sprite: Objects/Fun/Instruments/bike_horn.rsi state: icon + - type: Tag + tags: + - BrassInstrument #Go figure. - type: Clothing size: 24 sprite: Objects/Fun/Instruments/bike_horn.rsi @@ -255,6 +297,9 @@ - type: Sprite sprite: Structures/Furniture/instruments.rsi state: xylophone + - type: Tag + tags: + - PercussionInstrument - type: entity parent: BaseHandheldInstrument diff --git a/Resources/Prototypes/Entities/Structures/Furniture/instruments.yml b/Resources/Prototypes/Entities/Structures/Furniture/instruments.yml index a8db507061..c9afe0ba5b 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/instruments.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/instruments.yml @@ -10,8 +10,6 @@ singleUser: true key: enum.InstrumentUiKey.Key - type: InteractionOutline - - type: Rotatable - rotateWhileAnchored: true - type: Sprite sprite: Structures/Furniture/instruments.rsi - type: Damageable @@ -31,8 +29,17 @@ type: InstrumentBoundUserInterface - type: entity - name: piano parent: BasePlaceableInstrument + id: BasePlaceableInstrumentRotatable + name: baseinstrumentrotatable + abstract: true + components: + - type: Rotatable + rotateWhileAnchored: true + +- type: entity + name: piano + parent: BasePlaceableInstrumentRotatable id: PianoInstrument description: Play Needles Piano Now. components: @@ -44,7 +51,7 @@ - type: entity name: minimoog - parent: BasePlaceableInstrument + parent: BasePlaceableInstrumentRotatable id: MinimoogInstrument description: This is a minimoog, like a space piano, but more spacey! components: @@ -55,7 +62,7 @@ - type: entity name: church organ - parent: BasePlaceableInstrument + parent: BasePlaceableInstrumentRotatable id: ChurchOrganInstrument description: This thing really blows! components: @@ -63,3 +70,31 @@ program: 20 - type: Sprite state: church-organ + +- type: entity + parent: BasePlaceableInstrument + id: DawInstrument + name: digital audio workstaiton + description: Cutting edge music technology, straight from the 90s. + components: + - type: Sprite + layers: + - state: daw-base + - state: daw-display + shader: unshaded + - state: daw-panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: Appearance + visuals: + - type: WiresVisualizer + - type: Construction + graph: Machine + node: machine + - type: Wires + BoardName: "DawInstrument" + LayoutId: DawInstrument + - type: Machine + board: DawInstrumentMachineCircuitboard + - type: Instrument + allowPercussion: true + allowProgramChange: true diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 85fb4b3c34..d373fd4754 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -195,6 +195,8 @@ - KitchenReagentGrinderMachineCircuitboard - CrewMonitoringComputerCircuitboard - ShuttleConsoleCircuitboard + - DawInstrumentMachineCircuitboard + - SynthesizerInstrument - Bucket - MopItem - SprayBottle diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 64f6f3202b..9755b4f715 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -159,3 +159,12 @@ materials: Steel: 100 Plastic: 100 + +- type: latheRecipe + id: DawInstrumentMachineCircuitboard + icon: Objects/Misc/module.rsi/id_mod.png + result: DawInstrumentMachineCircuitboard + completetime: 1000 + materials: + Steel: 100 + Plastic: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index 5f4af0a8e3..13616025b8 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -70,3 +70,15 @@ completetime: 10 materials: Wood: 100 + +- type: latheRecipe + id: SynthesizerInstrument + icon: + sprite: Objects/Fun/Instruments/h_synthesizer.rsi + state: icon + result: SynthesizerInstrument + completetime: 1000 + materials: + Steel: 300 + Plastic: 300 + Glass: 100 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index db7b93250b..8bdfad2188 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -9,6 +9,9 @@ - type: Tag id: Bee +- type: Tag + id: BrassInstrument + - type: Tag id: Brutepack @@ -174,6 +177,9 @@ - type: Tag id: Katana +- type: Tag + id: KeyedInstrument + - type: Tag id: Knife @@ -198,6 +204,9 @@ - type: Tag id: Ore +- type: Tag + id: PercussionInstrument + - type: Tag id: Pill @@ -252,6 +261,9 @@ - type: Tag id: Spear +- type: Tag + id: StringInstrument + - type: Tag id: Taser @@ -267,6 +279,9 @@ - type: Tag id: Wooden # just like our atmos +- type: Tag + id: WoodwindInstrument # even more like our atmos + - type: Tag id: Wrench diff --git a/Resources/Textures/Structures/Furniture/instruments.rsi/daw-base.png b/Resources/Textures/Structures/Furniture/instruments.rsi/daw-base.png new file mode 100644 index 0000000000..5c7f0f5e49 Binary files /dev/null and b/Resources/Textures/Structures/Furniture/instruments.rsi/daw-base.png differ diff --git a/Resources/Textures/Structures/Furniture/instruments.rsi/daw-display.png b/Resources/Textures/Structures/Furniture/instruments.rsi/daw-display.png new file mode 100644 index 0000000000..a3319bb09a Binary files /dev/null and b/Resources/Textures/Structures/Furniture/instruments.rsi/daw-display.png differ diff --git a/Resources/Textures/Structures/Furniture/instruments.rsi/daw-panel.png b/Resources/Textures/Structures/Furniture/instruments.rsi/daw-panel.png new file mode 100644 index 0000000000..f4f6ea1a49 Binary files /dev/null and b/Resources/Textures/Structures/Furniture/instruments.rsi/daw-panel.png differ diff --git a/Resources/Textures/Structures/Furniture/instruments.rsi/meta.json b/Resources/Textures/Structures/Furniture/instruments.rsi/meta.json index 58223fccbe..e84fc5bfc7 100644 --- a/Resources/Textures/Structures/Furniture/instruments.rsi/meta.json +++ b/Resources/Textures/Structures/Furniture/instruments.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/vgstation-coders/vgstation13 at 8d9c91e19cb52713c7f7f1804c2b6f7203f8d331", + "copyright": "https://github.com/vgstation-coders/vgstation13 at 8d9c91e19cb52713c7f7f1804c2b6f7203f8d331, daw-base/display from /tg/staiton at commit https://github.com/tgstation/tgstation/commit/ebcf2ab180037d400a7e8ac7a2ba011a0f03edf3", "states": [ { "name": "minimoog", @@ -34,6 +34,25 @@ { "name": "xylophone-broken", "directions": 4 + }, + { + "name": "daw-base", + "directions": 1 + }, + { + "name": "daw-panel", + "directions": 1 + }, + { + "name": "daw-display", + "directions": 1, + "delays": [ + [ + 0.3, + 0.3, + 0.3 + ] + ] } ] }