diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 174827b8d1b..f081d21bf4e 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -849,9 +849,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/floor/stone, /area/ruin/space/has_grav/hotel/bar) "id" = ( diff --git a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm index e988f85602b..689769d2d35 100644 --- a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm +++ b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm @@ -28,7 +28,7 @@ /turf/open/floor/holofloor/beach, /area/ruin/space/has_grav/powered/aesthetic) "i" = ( -/obj/structure/musician/piano, +/obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/structure/window{ dir = 8 }, diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index ae187ffc103..d6c2729f0e1 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -725,7 +725,6 @@ /obj/structure/cable, /obj/structure/musician/piano{ desc = "Very theatrical."; - icon_state = "piano"; name = "theatre piano" }, /turf/open/floor/wood, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 2e5a02b0191..f093bd7d81c 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -15876,7 +15876,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/musician/piano, +/obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/service/theater/abandoned) @@ -48834,7 +48834,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/structure/musician/piano, +/obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/machinery/door/firedoor/border_only{ dir = 8 }, diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 812db55f27b..e8cd3c0b277 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -25263,7 +25263,7 @@ /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/structure/musician/piano, +/obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/structure/sign/poster/random/directional/north, /turf/open/floor/carpet, /area/station/service/theater) @@ -67974,9 +67974,7 @@ /turf/open/floor/iron/freezer, /area/station/commons/toilet) "vmr" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/floor/wood, /area/station/maintenance/port/aft) "vms" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 101cab80eb5..08941cd23d9 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -69445,7 +69445,7 @@ /area/station/science/ordnance) "tNO" = ( /obj/structure/cable, -/obj/structure/musician/piano, +/obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/effect/turf_decal/siding/wood{ dir = 8 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 72ad600c1c2..bbbc62cb0fa 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -38005,7 +38005,7 @@ /turf/open/floor/iron, /area/station/security/checkpoint/engineering) "nxb" = ( -/obj/structure/musician/piano, +/obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/structure/window/reinforced{ dir = 8 }, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 3722e37d935..169cf19382a 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -14226,9 +14226,7 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/armory) "Pu" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/misc/beach/sand, /area/centcom/central_command_areas/holding) "Pv" = ( diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 5103dedd2d5..861e9b88bba 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -69255,9 +69255,7 @@ /turf/open/floor/iron/white, /area/station/science/lab) "xxP" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/floor/wood, /area/station/service/theater) "xxW" = ( diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index cd3a60a2fc5..4beb57538ee 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -160,9 +160,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "aF" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/floor/iron/grimy, /area/shuttle/escape) "aG" = ( diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 1c47bddf832..0d82c5664c3 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -643,9 +643,7 @@ /turf/open/floor/carpet/orange, /area/shuttle/escape/luxury) "ci" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/floor/carpet/green, /area/shuttle/escape/luxury) "cj" = ( diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate_silverscale.dmm index 03e1630574f..1b0f2df6e0b 100644 --- a/_maps/shuttles/pirate_silverscale.dmm +++ b/_maps/shuttles/pirate_silverscale.dmm @@ -612,9 +612,7 @@ /turf/open/floor/plating, /area/shuttle/pirate) "HS" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/shuttle/pirate) diff --git a/_maps/templates/holodeck_lounge.dmm b/_maps/templates/holodeck_lounge.dmm index 5dea4911fc4..c68eb7d579c 100644 --- a/_maps/templates/holodeck_lounge.dmm +++ b/_maps/templates/holodeck_lounge.dmm @@ -302,9 +302,7 @@ }, /area/template_noop) "Z" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, +/obj/structure/musician/piano, /turf/open/floor/holofloor/carpet, /area/template_noop) diff --git a/code/game/objects/effects/spawners/random/structure.dm b/code/game/objects/effects/spawners/random/structure.dm index 8075036f58d..2458bd3c7cc 100644 --- a/code/game/objects/effects/spawners/random/structure.dm +++ b/code/game/objects/effects/spawners/random/structure.dm @@ -223,3 +223,11 @@ /obj/structure/steam_vent = 50, /obj/structure/steam_vent/fast = 50, ) + +/obj/effect/spawner/random/structure/musician/piano/random_piano + name = "random piano spawner" + icon_state = "piano" + loot = list( + /obj/structure/musician/piano, + /obj/structure/musician/piano/minimoog, + ) diff --git a/code/modules/instruments/stationary.dm b/code/modules/instruments/stationary.dm index 8245ed03f00..3942132366d 100644 --- a/code/modules/instruments/stationary.dm +++ b/code/modules/instruments/stationary.dm @@ -2,6 +2,7 @@ name = "Not A Piano" desc = "Something broke, contact coderbus." interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT | INTERACT_ATOM_REQUIRES_DEXTERITY + integrity_failure = 0.25 var/can_play_unanchored = FALSE var/list/allowed_instrument_ids = list("r3grand","r3harpsi","crharpsi","crgrand1","crbright1", "crichugan", "crihamgan","piano") var/datum/song/song @@ -32,22 +33,32 @@ return TOOL_ACT_TOOLTYPE_SUCCESS /obj/structure/musician/piano - name = "space minimoog" + name = "space piano" + desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't." icon = 'icons/obj/musician.dmi' - icon_state = "minimoog" + icon_state = "piano" anchored = TRUE density = TRUE + var/broken_icon_state = "pianobroken" + +/obj/structure/musician/piano/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + playsound(src, 'sound/effects/piano_hit.ogg', 100, TRUE) + if(BURN) + playsound(src, 'sound/items/welder.ogg', 100, TRUE) + +/obj/structure/musician/piano/atom_break(damage_flag) + . = ..() + if(!broken) + broken = TRUE + icon_state = broken_icon_state /obj/structure/musician/piano/unanchored anchored = FALSE -/obj/structure/musician/piano/Initialize(mapload) - . = ..() - if(prob(50) && icon_state == initial(icon_state)) - name = "space minimoog" - desc = "This is a minimoog, like a space piano, but more spacey!" - icon_state = "minimoog" - else - name = "space piano" - desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't." - icon_state = "piano" +/obj/structure/musician/piano/minimoog + name = "space minimoog" + desc = "This is a minimoog, like a space piano, but more spacey!" + icon_state = "minimoog" + broken_icon_state = "minimoogbroken" diff --git a/icons/effects/random_spawners.dmi b/icons/effects/random_spawners.dmi index a9a83ec0e63..2eb6a40538b 100644 Binary files a/icons/effects/random_spawners.dmi and b/icons/effects/random_spawners.dmi differ diff --git a/sound/effects/piano_hit.ogg b/sound/effects/piano_hit.ogg new file mode 100644 index 00000000000..fbf74c15531 Binary files /dev/null and b/sound/effects/piano_hit.ogg differ