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