diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index c0bf24259d5..8007151c661 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -283,8 +283,9 @@ var/list/all_supply_groups = list("Supplies","Clothing","Security","Hospitality" /obj/item/mounted/poster, /obj/item/stack/package_wrap/gift, /obj/item/stack/package_wrap/gift, - /obj/item/stack/package_wrap/gift) - cost = 10 + /obj/item/stack/package_wrap/gift, + /obj/item/device/instrument/guitar) + cost = 30 containertype = "/obj/structure/closet/crate" containername = "Arts and Crafts crate" group = "Supplies" diff --git a/code/game/gamemodes/meteor/meteor_supply.dm b/code/game/gamemodes/meteor/meteor_supply.dm index 7401cacd4ba..595d7557659 100644 --- a/code/game/gamemodes/meteor/meteor_supply.dm +++ b/code/game/gamemodes/meteor/meteor_supply.dm @@ -103,7 +103,7 @@ /obj/structure/closet/crate/meteor_panic/New() - new /obj/item/device/violin(src) //My tune will go on + new /obj/item/device/instrument/violin(src) //My tune will go on new /obj/item/weapon/phone(src) new /obj/item/weapon/storage/fancy/flares(src) new /obj/item/weapon/storage/fancy/flares(src) diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm new file mode 100644 index 00000000000..a3daa9a038c --- /dev/null +++ b/code/game/objects/items/devices/instruments.dm @@ -0,0 +1,61 @@ +//copy pasta of the space piano, don't hurt me -Pete +/obj/item/device/instrument + name = "generic instrument" + var/datum/song/handheld/song + var/instrumentId = "generic" + var/instrumentExt = "ogg" + +/obj/item/device/instrument/New() + song = new(instrumentId, src) + song.instrumentExt = instrumentExt + +/obj/item/device/instrument/Destroy() + qdel(song) + song = null + ..() + +/obj/item/device/instrument/initialize() + song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded + ..() + +/obj/item/device/instrument/attack_self(mob/user as mob) + if(!user.dexterity_check()) + to_chat(user, "You don't have the dexterity to do this!") + return 1 + interact(user) + +/obj/item/device/instrument/interact(mob/user as mob) + if(!user) + return + + if(user.incapacitated() || user.lying) + return + + user.set_machine(src) + song.interact(user) + +/obj/item/device/instrument/suicide_act(mob/user) + user.visible_message("[user] begins trying to play Faerie's Aire and Death Waltz with \the [src]! It looks like \he's trying to commit suicide.") + playsound(loc, 'sound/effects/applause.ogg', 50, 1, -1) + return BRUTELOSS + +/obj/item/device/instrument/violin + name = "space violin" + desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" + icon = 'icons/obj/musician.dmi' + icon_state = "violin" + item_state = "violin" + force = 10 + attack_verb = list("smashed") + instrumentId = "violin" + instrumentExt= "mid" + +/obj/item/device/instrument/guitar + name = "guitar" + desc = "It's made of wood and has bronze strings." + icon = 'icons/obj/musician.dmi' + icon_state = "guitar" + item_state = "guitar" + force = 10 + attack_verb = list("played metal on", "serenaded", "crashed", "smashed") + instrumentId = "guitar" \ No newline at end of file diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm deleted file mode 100644 index 2a5f1bbce79..00000000000 --- a/code/game/objects/items/devices/violin.dm +++ /dev/null @@ -1,396 +0,0 @@ -//copy pasta of the space piano, don't hurt me -Pete - -/obj/item/device/violin - name = "space violin" - desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" - icon = 'icons/obj/musician.dmi' - icon_state = "violin" - item_state = "violin" - force = 10 - var/datum/song/song - var/playing = 0 - var/help = 0 - var/edit = 1 - var/repeat = 0 - -/obj/item/device/violin/proc/playnote(var/note as text) -// to_chat(world, "Note: [note]") - var/soundfile - /*BYOND loads resource files at compile time if they are ''. This means you can't really manipulate them dynamically. - Tried doing it dynamically at first but its more trouble than its worth. Would have saved many lines tho.*/ - switch(note) - if("Cn1") soundfile = 'sound/violin/Cn1.mid' - if("C#1") soundfile = 'sound/violin/C#1.mid' - if("Db1") soundfile = 'sound/violin/Db1.mid' - if("Dn1") soundfile = 'sound/violin/Dn1.mid' - if("D#1") soundfile = 'sound/violin/D#1.mid' - if("Eb1") soundfile = 'sound/violin/Eb1.mid' - if("En1") soundfile = 'sound/violin/En1.mid' - if("E#1") soundfile = 'sound/violin/E#1.mid' - if("Fb1") soundfile = 'sound/violin/Fb1.mid' - if("Fn1") soundfile = 'sound/violin/Fn1.mid' - if("F#1") soundfile = 'sound/violin/F#1.mid' - if("Gb1") soundfile = 'sound/violin/Gb1.mid' - if("Gn1") soundfile = 'sound/violin/Gn1.mid' - if("G#1") soundfile = 'sound/violin/G#1.mid' - if("Ab1") soundfile = 'sound/violin/Ab1.mid' - if("An1") soundfile = 'sound/violin/An1.mid' - if("A#1") soundfile = 'sound/violin/A#1.mid' - if("Bb1") soundfile = 'sound/violin/Bb1.mid' - if("Bn1") soundfile = 'sound/violin/Bn1.mid' - if("B#1") soundfile = 'sound/violin/B#1.mid' - if("Cb2") soundfile = 'sound/violin/Cb2.mid' - if("Cn2") soundfile = 'sound/violin/Cn2.mid' - if("C#2") soundfile = 'sound/violin/C#2.mid' - if("Db2") soundfile = 'sound/violin/Db2.mid' - if("Dn2") soundfile = 'sound/violin/Dn2.mid' - if("D#2") soundfile = 'sound/violin/D#2.mid' - if("Eb2") soundfile = 'sound/violin/Eb2.mid' - if("En2") soundfile = 'sound/violin/En2.mid' - if("E#2") soundfile = 'sound/violin/E#2.mid' - if("Fb2") soundfile = 'sound/violin/Fb2.mid' - if("Fn2") soundfile = 'sound/violin/Fn2.mid' - if("F#2") soundfile = 'sound/violin/F#2.mid' - if("Gb2") soundfile = 'sound/violin/Gb2.mid' - if("Gn2") soundfile = 'sound/violin/Gn2.mid' - if("G#2") soundfile = 'sound/violin/G#2.mid' - if("Ab2") soundfile = 'sound/violin/Ab2.mid' - if("An2") soundfile = 'sound/violin/An2.mid' - if("A#2") soundfile = 'sound/violin/A#2.mid' - if("Bb2") soundfile = 'sound/violin/Bb2.mid' - if("Bn2") soundfile = 'sound/violin/Bn2.mid' - if("B#2") soundfile = 'sound/violin/B#2.mid' - if("Cb3") soundfile = 'sound/violin/Cb3.mid' - if("Cn3") soundfile = 'sound/violin/Cn3.mid' - if("C#3") soundfile = 'sound/violin/C#3.mid' - if("Db3") soundfile = 'sound/violin/Db3.mid' - if("Dn3") soundfile = 'sound/violin/Dn3.mid' - if("D#3") soundfile = 'sound/violin/D#3.mid' - if("Eb3") soundfile = 'sound/violin/Eb3.mid' - if("En3") soundfile = 'sound/violin/En3.mid' - if("E#3") soundfile = 'sound/violin/E#3.mid' - if("Fb3") soundfile = 'sound/violin/Fb3.mid' - if("Fn3") soundfile = 'sound/violin/Fn3.mid' - if("F#3") soundfile = 'sound/violin/F#3.mid' - if("Gb3") soundfile = 'sound/violin/Gb3.mid' - if("Gn3") soundfile = 'sound/violin/Gn3.mid' - if("G#3") soundfile = 'sound/violin/G#3.mid' - if("Ab3") soundfile = 'sound/violin/Ab3.mid' - if("An3") soundfile = 'sound/violin/An3.mid' - if("A#3") soundfile = 'sound/violin/A#3.mid' - if("Bb3") soundfile = 'sound/violin/Bb3.mid' - if("Bn3") soundfile = 'sound/violin/Bn3.mid' - if("B#3") soundfile = 'sound/violin/B#3.mid' - if("Cb4") soundfile = 'sound/violin/Cb4.mid' - if("Cn4") soundfile = 'sound/violin/Cn4.mid' - if("C#4") soundfile = 'sound/violin/C#4.mid' - if("Db4") soundfile = 'sound/violin/Db4.mid' - if("Dn4") soundfile = 'sound/violin/Dn4.mid' - if("D#4") soundfile = 'sound/violin/D#4.mid' - if("Eb4") soundfile = 'sound/violin/Eb4.mid' - if("En4") soundfile = 'sound/violin/En4.mid' - if("E#4") soundfile = 'sound/violin/E#4.mid' - if("Fb4") soundfile = 'sound/violin/Fb4.mid' - if("Fn4") soundfile = 'sound/violin/Fn4.mid' - if("F#4") soundfile = 'sound/violin/F#4.mid' - if("Gb4") soundfile = 'sound/violin/Gb4.mid' - if("Gn4") soundfile = 'sound/violin/Gn4.mid' - if("G#4") soundfile = 'sound/violin/G#4.mid' - if("Ab4") soundfile = 'sound/violin/Ab4.mid' - if("An4") soundfile = 'sound/violin/An4.mid' - if("A#4") soundfile = 'sound/violin/A#4.mid' - if("Bb4") soundfile = 'sound/violin/Bb4.mid' - if("Bn4") soundfile = 'sound/violin/Bn4.mid' - if("B#4") soundfile = 'sound/violin/B#4.mid' - if("Cb5") soundfile = 'sound/violin/Cb5.mid' - if("Cn5") soundfile = 'sound/violin/Cn5.mid' - if("C#5") soundfile = 'sound/violin/C#5.mid' - if("Db5") soundfile = 'sound/violin/Db5.mid' - if("Dn5") soundfile = 'sound/violin/Dn5.mid' - if("D#5") soundfile = 'sound/violin/D#5.mid' - if("Eb5") soundfile = 'sound/violin/Eb5.mid' - if("En5") soundfile = 'sound/violin/En5.mid' - if("E#5") soundfile = 'sound/violin/E#5.mid' - if("Fb5") soundfile = 'sound/violin/Fb5.mid' - if("Fn5") soundfile = 'sound/violin/Fn5.mid' - if("F#5") soundfile = 'sound/violin/F#5.mid' - if("Gb5") soundfile = 'sound/violin/Gb5.mid' - if("Gn5") soundfile = 'sound/violin/Gn5.mid' - if("G#5") soundfile = 'sound/violin/G#5.mid' - if("Ab5") soundfile = 'sound/violin/Ab5.mid' - if("An5") soundfile = 'sound/violin/An5.mid' - if("A#5") soundfile = 'sound/violin/A#5.mid' - if("Bb5") soundfile = 'sound/violin/Bb5.mid' - if("Bn5") soundfile = 'sound/violin/Bn5.mid' - if("B#5") soundfile = 'sound/violin/B#5.mid' - if("Cb6") soundfile = 'sound/violin/Cb6.mid' - if("Cn6") soundfile = 'sound/violin/Cn6.mid' - if("C#6") soundfile = 'sound/violin/C#6.mid' - if("Db6") soundfile = 'sound/violin/Db6.mid' - if("Dn6") soundfile = 'sound/violin/Dn6.mid' - if("D#6") soundfile = 'sound/violin/D#6.mid' - if("Eb6") soundfile = 'sound/violin/Eb6.mid' - if("En6") soundfile = 'sound/violin/En6.mid' - if("E#6") soundfile = 'sound/violin/E#6.mid' - if("Fb6") soundfile = 'sound/violin/Fb6.mid' - if("Fn6") soundfile = 'sound/violin/Fn6.mid' - if("F#6") soundfile = 'sound/violin/F#6.mid' - if("Gb6") soundfile = 'sound/violin/Gb6.mid' - if("Gn6") soundfile = 'sound/violin/Gn6.mid' - if("G#6") soundfile = 'sound/violin/G#6.mid' - if("Ab6") soundfile = 'sound/violin/Ab6.mid' - if("An6") soundfile = 'sound/violin/An6.mid' - if("A#6") soundfile = 'sound/violin/A#6.mid' - if("Bb6") soundfile = 'sound/violin/Bb6.mid' - if("Bn6") soundfile = 'sound/violin/Bn6.mid' - if("B#6") soundfile = 'sound/violin/B#6.mid' - if("Cb7") soundfile = 'sound/violin/Cb7.mid' - if("Cn7") soundfile = 'sound/violin/Cn7.mid' - if("C#7") soundfile = 'sound/violin/C#7.mid' - if("Db7") soundfile = 'sound/violin/Db7.mid' - if("Dn7") soundfile = 'sound/violin/Dn7.mid' - if("D#7") soundfile = 'sound/violin/D#7.mid' - if("Eb7") soundfile = 'sound/violin/Eb7.mid' - if("En7") soundfile = 'sound/violin/En7.mid' - if("E#7") soundfile = 'sound/violin/E#7.mid' - if("Fb7") soundfile = 'sound/violin/Fb7.mid' - if("Fn7") soundfile = 'sound/violin/Fn7.mid' - if("F#7") soundfile = 'sound/violin/F#7.mid' - if("Gb7") soundfile = 'sound/violin/Gb7.mid' - if("Gn7") soundfile = 'sound/violin/Gn7.mid' - if("G#7") soundfile = 'sound/violin/G#7.mid' - if("Ab7") soundfile = 'sound/violin/Ab7.mid' - if("An7") soundfile = 'sound/violin/An7.mid' - if("A#7") soundfile = 'sound/violin/A#7.mid' - if("Bb7") soundfile = 'sound/violin/Bb7.mid' - if("Bn7") soundfile = 'sound/violin/Bn7.mid' - if("B#7") soundfile = 'sound/violin/B#7.mid' - if("Cb8") soundfile = 'sound/violin/Cb8.mid' - if("Cn8") soundfile = 'sound/violin/Cn8.mid' - if("C#8") soundfile = 'sound/violin/C#8.mid' - if("Db8") soundfile = 'sound/violin/Db8.mid' - if("Dn8") soundfile = 'sound/violin/Dn8.mid' - if("D#8") soundfile = 'sound/violin/D#8.mid' - if("Eb8") soundfile = 'sound/violin/Eb8.mid' - if("En8") soundfile = 'sound/violin/En8.mid' - if("E#8") soundfile = 'sound/violin/E#8.mid' - if("Fb8") soundfile = 'sound/violin/Fb8.mid' - if("Fn8") soundfile = 'sound/violin/Fn8.mid' - if("F#8") soundfile = 'sound/violin/F#8.mid' - if("Gb8") soundfile = 'sound/violin/Gb8.mid' - if("Gn8") soundfile = 'sound/violin/Gn8.mid' - if("G#8") soundfile = 'sound/violin/G#8.mid' - if("Ab8") soundfile = 'sound/violin/Ab8.mid' - if("An8") soundfile = 'sound/violin/An8.mid' - if("A#8") soundfile = 'sound/violin/A#8.mid' - if("Bb8") soundfile = 'sound/violin/Bb8.mid' - if("Bn8") soundfile = 'sound/violin/Bn8.mid' - if("B#8") soundfile = 'sound/violin/B#8.mid' - if("Cb9") soundfile = 'sound/violin/Cb9.mid' - if("Cn9") soundfile = 'sound/violin/Cn9.mid' - else return - - hearers(15, get_turf(src)) << sound(soundfile) - -/obj/item/device/violin/proc/playsong() - do - var/cur_oct[7] - var/cur_acc[7] - for(var/i = 1 to 7) - cur_oct[i] = "3" - cur_acc[i] = "n" - - for(var/line in song.lines) -// to_chat(world, line) - for(var/beat in splittext(lowertext(line), ",")) -// to_chat(world, "beat: [beat]") - var/list/notes = splittext(beat, "/") - for(var/note in splittext(notes[1], "-")) -// to_chat(world, "note: [note]") - if(!playing || !isliving(loc))//If the violin is playing, or isn't held by a person - playing = 0 - return - if(length(note) == 0) - continue -// to_chat(world, "Parse: [copytext(note,1,2)]") - var/cur_note = text2ascii(note) - 96 - if(cur_note < 1 || cur_note > 7) - continue - for(var/i=2 to length(note)) - var/ni = copytext(note,i,i+1) - if(!text2num(ni)) - if(ni == "#" || ni == "b" || ni == "n") - cur_acc[cur_note] = ni - else if(ni == "s") - cur_acc[cur_note] = "#" // so shift is never required - else - cur_oct[cur_note] = ni - playnote(uppertext(copytext(note,1,2)) + cur_acc[cur_note] + cur_oct[cur_note]) - if(notes.len >= 2 && text2num(notes[2])) - sleep(song.tempo / text2num(notes[2])) - else - sleep(song.tempo) - if(repeat > 0) - repeat-- //Infinite loops are baaaad. - while(repeat > 0) - playing = 0 - -/obj/item/device/violin/attack_self(mob/user as mob) - if(!isliving(user) || user.stat || user.restrained() || user.lying) return - user.set_machine(src) - - var/dat = "Violin" - - if(song) - if(song.lines.len > 0 && !(playing)) - - dat += {"Play Song

- Repeat Song: [repeat] times.

"} - if(playing) - - dat += {"Stop Playing
- Repeats left: [repeat].

"} - if(!edit) - dat += "Show Editor

" - else - - dat += {"Hide Editor
- Start a New Song
- Import a Song

"} - if(song) - var/calctempo = (10/song.tempo)*60 - dat += "Tempo : -- [calctempo] BPM ++

" - var/linecount = 0 - for(var/line in song.lines) - linecount += 1 - dat += "Line [linecount]: [line] Delete Line Modify Line
" - dat += "Add Line

" - if(help) - dat += "Hide Help
" - dat += {" - Lines are a series of chords, separated by commas (,), each with notes seperated by hyphens (-).
- Every note in a chord will play together, with chord timed by the tempo.
-
- Notes are played by the names of the note, and optionally, the accidental, and/or the octave number.
- By default, every note is natural and in octave 3. Defining otherwise is remembered for each note.
- Example: C,D,E,F,G,A,B will play a C major scale.
- After a note has an accidental placed, it will be remembered: C,C4,C,C3 is C3,C4,C4,C3
- Chords can be played simply by seperating each note with a hyphon: A-C#,Cn-E,E-G#,Gn-B
- A pause may be denoted by an empty chord: C,E,,C,G
- To make a chord be a different time, end it with /x, where the chord length will be length
- defined by tempo / x: C,G/2,E/4
- Combined, an example is: E-E4/4,/2,G#/8,B/8,E3-E4/4 -
- Lines may be up to 50 characters.
- A song may only contain up to 50 lines.
- "} - else - dat += "Show Help
" - dat += "" - user << browse(dat, "window=violin;size=700x300") - onclose(user, "violin") - -/obj/item/device/violin/Topic(href, href_list) - if(..()) - return - - usr.set_machine(src) - - if(href_list["newsong"]) - song = new() - else if(song) - if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops. - if(playing) return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing. - var/tempnum = input("How many times do you want to repeat this piece? (max:10)") as num|null - if(tempnum > 10) - tempnum = 10 - if(tempnum < 0) - tempnum = 0 - repeat = round(tempnum) - - else if(href_list["tempo"]) - song.tempo += round(text2num(href_list["tempo"])) - if(song.tempo < 1) - song.tempo = 1 - - else if(href_list["play"]) - if(song) - playing = 1 - spawn() playsong() - - else if(href_list["newline"]) - var/newline = html_encode(input("Enter your line: ", "violin") as text|null) - if(!newline) - return - if(song.lines.len > 50) - return - if(length(newline) > 50) - newline = copytext(newline, 1, 50) - song.lines.Add(newline) - - else if(href_list["deleteline"]) - var/num = round(text2num(href_list["deleteline"])) - if(num > song.lines.len || num < 1) - return - song.lines.Cut(num, num+1) - - else if(href_list["modifyline"]) - var/num = round(text2num(href_list["modifyline"]),1) - var/content = html_encode(input("Enter your line: ", "violin", song.lines[num]) as text|null) - if(!content) - return - if(length(content) > 50) - content = copytext(content, 1, 50) - if(num > song.lines.len || num < 1) - return - song.lines[num] = content - - else if(href_list["stop"]) - playing = 0 - - else if(href_list["help"]) - help = text2num(href_list["help"]) - 1 - - else if(href_list["edit"]) - edit = text2num(href_list["edit"]) - 1 - - else if(href_list["import"]) - var/t = "" - do - t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message) - if(!in_range(src, usr)) - return - - if(length(t) >= 3072) - var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") - if(cont == "no") - break - while(length(t) > 3072) - - //split into lines - spawn() - var/list/lines = splittext(t, "\n") - var/tempo = 5 - if(copytext(lines[1],1,6) == "BPM: ") - tempo = 600 / text2num(copytext(lines[1],6)) - lines.Cut(1,2) - if(lines.len > 50) - to_chat(usr, "Too many lines!") - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(length(l) > 50) - to_chat(usr, "Line [linenum] too long!") - lines.Remove(l) - else - linenum++ - song = new() - song.lines = lines - song.tempo = tempo - - add_fingerprint(usr) - src.updateUsrDialog() - //for(var/mob/M in viewers(1, loc)) - // if((M.client && M.machine == src)) - // attack_self(M) - return \ No newline at end of file diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 60feef19601..553e3bec50a 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -145,7 +145,7 @@ /obj/item/clothing/mask/cigarette/blunt/deus, /obj/item/clothing/mask/cigarette/blunt/cruciatus, /obj/item/device/paicard, - /obj/item/device/violin, + /obj/item/device/instrument/violin, /obj/item/weapon/storage/belt/utility/complete, /obj/item/clothing/accessory/tie/horrible, /obj/item/device/maracas, diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index cad421c7e4d..aa6f118ae80 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -3,239 +3,102 @@ /datum/song var/name = "Untitled" var/list/lines = new() - var/tempo = 5 + var/tempo = 5 // delay between notes -/obj/structure/device/piano - name = "space minimoog" - icon = 'icons/obj/musician.dmi' - icon_state = "minimoog" - anchored = 1 - density = 1 - var/datum/song/song - var/playing = 0 - var/help = 0 - var/edit = 1 - var/repeat = 0 + var/playing = 0 // if we're playing + var/help = 0 // if help is open + var/edit = 1 // if we're in editing mode + var/repeat = 0 // number of times remaining to repeat + var/max_repeats = 10 // maximum times we can repeat -/obj/structure/device/piano/New() + var/instrumentDir = "piano" // the folder with the sounds + var/instrumentExt = "ogg" // the file extension + var/obj/instrumentObj = null // the associated obj playing the sound + +/datum/song/New(dir, obj) + tempo = sanitize_tempo(tempo) + instrumentDir = dir + instrumentObj = obj + +/datum/song/Destroy() + instrumentObj = null ..() - if(prob(50)) - name = "space minimoog" - desc = "This is a minimoog, like a space piano, but more spacey!" - icon_state = "minimoog" + +// note is a number from 1-7 for A-G +// acc is either "b", "n", or "#" +// oct is 1-8 (or 9 for C) +/datum/song/proc/playnote(note, acc as text, oct) + // handle accidental -> B<>C of E<>F + if(acc == "b" && (note == 3 || note == 6)) // C or F + if(note == 3) + oct-- + note-- + acc = "n" + else if(acc == "#" && (note == 2 || note == 5)) // B or E + if(note == 2) + oct++ + note++ + acc = "n" + else if(acc == "#" && (note == 7)) //G# + note = 1 + acc = "b" + else if(acc == "#") // mass convert all sharps to flats, octave jump already handled + acc = "b" + note++ + + // check octave, C is allowed to go to 9 + if(oct < 1 || (note == 3 ? oct > 9 : oct > 8)) + return + + // now generate name + var/soundfile = "sound/[instrumentDir]/[ascii2text(note+64)][acc][oct].[instrumentExt]" + soundfile = file(soundfile) + // make sure the note exists + if(!fexists(soundfile)) + return + // and play + var/turf/source = get_turf(instrumentObj) + for(var/mob/M in get_hearers_in_view(15, source)) + if(!M.client) + continue + M.playsound_local(source, soundfile, 100, falloff = 5) + +/datum/song/proc/updateDialog(mob/user) + instrumentObj.updateDialog() // assumes it's an object in world, override if otherwise + +/datum/song/proc/shouldStopPlaying(mob/user) + if(instrumentObj) + if(!instrumentObj.Adjacent(user) || user.stat) + return 1 + return !instrumentObj.anchored // add special cases to stop in subclasses 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" + return 1 -/obj/structure/device/piano/proc/playnote(var/note as text) -// to_chat(world, "Note: [note]") - var/soundfile - /*BYOND loads resource files at compile time if they are ''. This means you can't really manipulate them dynamically. - Tried doing it dynamically at first but its more trouble than its worth. Would have saved many lines tho.*/ - switch(note) - if("Cn1") soundfile = 'sound/piano/Cn1.ogg' - if("C#1") soundfile = 'sound/piano/C#1.ogg' - if("Db1") soundfile = 'sound/piano/Db1.ogg' - if("Dn1") soundfile = 'sound/piano/Dn1.ogg' - if("D#1") soundfile = 'sound/piano/D#1.ogg' - if("Eb1") soundfile = 'sound/piano/Eb1.ogg' - if("En1") soundfile = 'sound/piano/En1.ogg' - if("E#1") soundfile = 'sound/piano/E#1.ogg' - if("Fb1") soundfile = 'sound/piano/Fb1.ogg' - if("Fn1") soundfile = 'sound/piano/Fn1.ogg' - if("F#1") soundfile = 'sound/piano/F#1.ogg' - if("Gb1") soundfile = 'sound/piano/Gb1.ogg' - if("Gn1") soundfile = 'sound/piano/Gn1.ogg' - if("G#1") soundfile = 'sound/piano/G#1.ogg' - if("Ab1") soundfile = 'sound/piano/Ab1.ogg' - if("An1") soundfile = 'sound/piano/An1.ogg' - if("A#1") soundfile = 'sound/piano/A#1.ogg' - if("Bb1") soundfile = 'sound/piano/Bb1.ogg' - if("Bn1") soundfile = 'sound/piano/Bn1.ogg' - if("B#1") soundfile = 'sound/piano/B#1.ogg' - if("Cb2") soundfile = 'sound/piano/Cb2.ogg' - if("Cn2") soundfile = 'sound/piano/Cn2.ogg' - if("C#2") soundfile = 'sound/piano/C#2.ogg' - if("Db2") soundfile = 'sound/piano/Db2.ogg' - if("Dn2") soundfile = 'sound/piano/Dn2.ogg' - if("D#2") soundfile = 'sound/piano/D#2.ogg' - if("Eb2") soundfile = 'sound/piano/Eb2.ogg' - if("En2") soundfile = 'sound/piano/En2.ogg' - if("E#2") soundfile = 'sound/piano/E#2.ogg' - if("Fb2") soundfile = 'sound/piano/Fb2.ogg' - if("Fn2") soundfile = 'sound/piano/Fn2.ogg' - if("F#2") soundfile = 'sound/piano/F#2.ogg' - if("Gb2") soundfile = 'sound/piano/Gb2.ogg' - if("Gn2") soundfile = 'sound/piano/Gn2.ogg' - if("G#2") soundfile = 'sound/piano/G#2.ogg' - if("Ab2") soundfile = 'sound/piano/Ab2.ogg' - if("An2") soundfile = 'sound/piano/An2.ogg' - if("A#2") soundfile = 'sound/piano/A#2.ogg' - if("Bb2") soundfile = 'sound/piano/Bb2.ogg' - if("Bn2") soundfile = 'sound/piano/Bn2.ogg' - if("B#2") soundfile = 'sound/piano/B#2.ogg' - if("Cb3") soundfile = 'sound/piano/Cb3.ogg' - if("Cn3") soundfile = 'sound/piano/Cn3.ogg' - if("C#3") soundfile = 'sound/piano/C#3.ogg' - if("Db3") soundfile = 'sound/piano/Db3.ogg' - if("Dn3") soundfile = 'sound/piano/Dn3.ogg' - if("D#3") soundfile = 'sound/piano/D#3.ogg' - if("Eb3") soundfile = 'sound/piano/Eb3.ogg' - if("En3") soundfile = 'sound/piano/En3.ogg' - if("E#3") soundfile = 'sound/piano/E#3.ogg' - if("Fb3") soundfile = 'sound/piano/Fb3.ogg' - if("Fn3") soundfile = 'sound/piano/Fn3.ogg' - if("F#3") soundfile = 'sound/piano/F#3.ogg' - if("Gb3") soundfile = 'sound/piano/Gb3.ogg' - if("Gn3") soundfile = 'sound/piano/Gn3.ogg' - if("G#3") soundfile = 'sound/piano/G#3.ogg' - if("Ab3") soundfile = 'sound/piano/Ab3.ogg' - if("An3") soundfile = 'sound/piano/An3.ogg' - if("A#3") soundfile = 'sound/piano/A#3.ogg' - if("Bb3") soundfile = 'sound/piano/Bb3.ogg' - if("Bn3") soundfile = 'sound/piano/Bn3.ogg' - if("B#3") soundfile = 'sound/piano/B#3.ogg' - if("Cb4") soundfile = 'sound/piano/Cb4.ogg' - if("Cn4") soundfile = 'sound/piano/Cn4.ogg' - if("C#4") soundfile = 'sound/piano/C#4.ogg' - if("Db4") soundfile = 'sound/piano/Db4.ogg' - if("Dn4") soundfile = 'sound/piano/Dn4.ogg' - if("D#4") soundfile = 'sound/piano/D#4.ogg' - if("Eb4") soundfile = 'sound/piano/Eb4.ogg' - if("En4") soundfile = 'sound/piano/En4.ogg' - if("E#4") soundfile = 'sound/piano/E#4.ogg' - if("Fb4") soundfile = 'sound/piano/Fb4.ogg' - if("Fn4") soundfile = 'sound/piano/Fn4.ogg' - if("F#4") soundfile = 'sound/piano/F#4.ogg' - if("Gb4") soundfile = 'sound/piano/Gb4.ogg' - if("Gn4") soundfile = 'sound/piano/Gn4.ogg' - if("G#4") soundfile = 'sound/piano/G#4.ogg' - if("Ab4") soundfile = 'sound/piano/Ab4.ogg' - if("An4") soundfile = 'sound/piano/An4.ogg' - if("A#4") soundfile = 'sound/piano/A#4.ogg' - if("Bb4") soundfile = 'sound/piano/Bb4.ogg' - if("Bn4") soundfile = 'sound/piano/Bn4.ogg' - if("B#4") soundfile = 'sound/piano/B#4.ogg' - if("Cb5") soundfile = 'sound/piano/Cb5.ogg' - if("Cn5") soundfile = 'sound/piano/Cn5.ogg' - if("C#5") soundfile = 'sound/piano/C#5.ogg' - if("Db5") soundfile = 'sound/piano/Db5.ogg' - if("Dn5") soundfile = 'sound/piano/Dn5.ogg' - if("D#5") soundfile = 'sound/piano/D#5.ogg' - if("Eb5") soundfile = 'sound/piano/Eb5.ogg' - if("En5") soundfile = 'sound/piano/En5.ogg' - if("E#5") soundfile = 'sound/piano/E#5.ogg' - if("Fb5") soundfile = 'sound/piano/Fb5.ogg' - if("Fn5") soundfile = 'sound/piano/Fn5.ogg' - if("F#5") soundfile = 'sound/piano/F#5.ogg' - if("Gb5") soundfile = 'sound/piano/Gb5.ogg' - if("Gn5") soundfile = 'sound/piano/Gn5.ogg' - if("G#5") soundfile = 'sound/piano/G#5.ogg' - if("Ab5") soundfile = 'sound/piano/Ab5.ogg' - if("An5") soundfile = 'sound/piano/An5.ogg' - if("A#5") soundfile = 'sound/piano/A#5.ogg' - if("Bb5") soundfile = 'sound/piano/Bb5.ogg' - if("Bn5") soundfile = 'sound/piano/Bn5.ogg' - if("B#5") soundfile = 'sound/piano/B#5.ogg' - if("Cb6") soundfile = 'sound/piano/Cb6.ogg' - if("Cn6") soundfile = 'sound/piano/Cn6.ogg' - if("C#6") soundfile = 'sound/piano/C#6.ogg' - if("Db6") soundfile = 'sound/piano/Db6.ogg' - if("Dn6") soundfile = 'sound/piano/Dn6.ogg' - if("D#6") soundfile = 'sound/piano/D#6.ogg' - if("Eb6") soundfile = 'sound/piano/Eb6.ogg' - if("En6") soundfile = 'sound/piano/En6.ogg' - if("E#6") soundfile = 'sound/piano/E#6.ogg' - if("Fb6") soundfile = 'sound/piano/Fb6.ogg' - if("Fn6") soundfile = 'sound/piano/Fn6.ogg' - if("F#6") soundfile = 'sound/piano/F#6.ogg' - if("Gb6") soundfile = 'sound/piano/Gb6.ogg' - if("Gn6") soundfile = 'sound/piano/Gn6.ogg' - if("G#6") soundfile = 'sound/piano/G#6.ogg' - if("Ab6") soundfile = 'sound/piano/Ab6.ogg' - if("An6") soundfile = 'sound/piano/An6.ogg' - if("A#6") soundfile = 'sound/piano/A#6.ogg' - if("Bb6") soundfile = 'sound/piano/Bb6.ogg' - if("Bn6") soundfile = 'sound/piano/Bn6.ogg' - if("B#6") soundfile = 'sound/piano/B#6.ogg' - if("Cb7") soundfile = 'sound/piano/Cb7.ogg' - if("Cn7") soundfile = 'sound/piano/Cn7.ogg' - if("C#7") soundfile = 'sound/piano/C#7.ogg' - if("Db7") soundfile = 'sound/piano/Db7.ogg' - if("Dn7") soundfile = 'sound/piano/Dn7.ogg' - if("D#7") soundfile = 'sound/piano/D#7.ogg' - if("Eb7") soundfile = 'sound/piano/Eb7.ogg' - if("En7") soundfile = 'sound/piano/En7.ogg' - if("E#7") soundfile = 'sound/piano/E#7.ogg' - if("Fb7") soundfile = 'sound/piano/Fb7.ogg' - if("Fn7") soundfile = 'sound/piano/Fn7.ogg' - if("F#7") soundfile = 'sound/piano/F#7.ogg' - if("Gb7") soundfile = 'sound/piano/Gb7.ogg' - if("Gn7") soundfile = 'sound/piano/Gn7.ogg' - if("G#7") soundfile = 'sound/piano/G#7.ogg' - if("Ab7") soundfile = 'sound/piano/Ab7.ogg' - if("An7") soundfile = 'sound/piano/An7.ogg' - if("A#7") soundfile = 'sound/piano/A#7.ogg' - if("Bb7") soundfile = 'sound/piano/Bb7.ogg' - if("Bn7") soundfile = 'sound/piano/Bn7.ogg' - if("B#7") soundfile = 'sound/piano/B#7.ogg' - if("Cb8") soundfile = 'sound/piano/Cb8.ogg' - if("Cn8") soundfile = 'sound/piano/Cn8.ogg' - if("C#8") soundfile = 'sound/piano/C#8.ogg' - if("Db8") soundfile = 'sound/piano/Db8.ogg' - if("Dn8") soundfile = 'sound/piano/Dn8.ogg' - if("D#8") soundfile = 'sound/piano/D#8.ogg' - if("Eb8") soundfile = 'sound/piano/Eb8.ogg' - if("En8") soundfile = 'sound/piano/En8.ogg' - if("E#8") soundfile = 'sound/piano/E#8.ogg' - if("Fb8") soundfile = 'sound/piano/Fb8.ogg' - if("Fn8") soundfile = 'sound/piano/Fn8.ogg' - if("F#8") soundfile = 'sound/piano/F#8.ogg' - if("Gb8") soundfile = 'sound/piano/Gb8.ogg' - if("Gn8") soundfile = 'sound/piano/Gn8.ogg' - if("G#8") soundfile = 'sound/piano/G#8.ogg' - if("Ab8") soundfile = 'sound/piano/Ab8.ogg' - if("An8") soundfile = 'sound/piano/An8.ogg' - if("A#8") soundfile = 'sound/piano/A#8.ogg' - if("Bb8") soundfile = 'sound/piano/Bb8.ogg' - if("Bn8") soundfile = 'sound/piano/Bn8.ogg' - if("B#8") soundfile = 'sound/piano/B#8.ogg' - if("Cb9") soundfile = 'sound/piano/Cb9.ogg' - if("Cn9") soundfile = 'sound/piano/Cn9.ogg' - else return - -// hearers(15, src) << sound(soundfile) - var/turf/source = get_turf(src) - for(var/mob/M in hearers(15, source)) - M.playsound_local(source, file(soundfile), 100, falloff = 5) - - -/obj/structure/device/piano/proc/playsong() - do +/datum/song/proc/playsong(mob/user) + while(repeat >= 0) var/cur_oct[7] var/cur_acc[7] for(var/i = 1 to 7) - cur_oct[i] = "3" + cur_oct[i] = 3 cur_acc[i] = "n" - for(var/line in song.lines) -// to_chat(world, line) + for(var/line in lines) + //world << line for(var/beat in splittext(lowertext(line), ",")) -// to_chat(world, "beat: [beat]") + //world << "beat: [beat]" var/list/notes = splittext(beat, "/") for(var/note in splittext(notes[1], "-")) -// to_chat(world, "note: [note]") - if(!playing || !anchored)//If the piano is playing, or is loose + //world << "note: [note]" + if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case playing = 0 return - if(length(note) == 0) + if(lentext(note) == 0) continue -// to_chat(world, "Parse: [copytext(note,1,2)]") + //world << "Parse: [copytext(note,1,2)]" var/cur_note = text2ascii(note) - 96 if(cur_note < 1 || cur_note > 7) continue - for(var/i=2 to length(note)) + for(var/i=2 to lentext(note)) var/ni = copytext(note,i,i+1) if(!text2num(ni)) if(ni == "#" || ni == "b" || ni == "n") @@ -243,58 +106,48 @@ else if(ni == "s") cur_acc[cur_note] = "#" // so shift is never required else - cur_oct[cur_note] = ni - playnote(uppertext(copytext(note,1,2)) + cur_acc[cur_note] + cur_oct[cur_note]) + cur_oct[cur_note] = text2num(ni) + playnote(cur_note, cur_acc[cur_note], cur_oct[cur_note]) if(notes.len >= 2 && text2num(notes[2])) - sleep(song.tempo / text2num(notes[2])) + sleep(sanitize_tempo(tempo / text2num(notes[2]))) else - sleep(song.tempo) - if(repeat > 0) - repeat-- //Infinite loops are baaaad. - while(repeat > 0) + sleep(tempo) + repeat-- + if(repeat >= 0) // don't show the last -1 repeat + updateDialog(user) playing = 0 - updateUsrDialog() - -/obj/structure/device/piano/attack_paw(var/mob/user) - if (!user.dexterity_check()) - to_chat(user, "You don't have the dexterity to do this!") - return - attack_hand(user) - -/obj/structure/device/piano/attack_hand(var/mob/user as mob) - if(!anchored) - return - - usr.machine = src - var/dat = "Piano" - - if(song) - if(song.lines.len > 0 && !(playing)) - - dat += {"Play Song

- Repeat Song: [repeat] times.

"} - if(playing) - - dat += {"Stop Playing
- Repeats left: [repeat].

"} + repeat = 0 + updateDialog(user) +/datum/song/proc/interact(mob/user) + var/dat = "" + if(lines.len > 0) + dat += "

Playback

" + if(!playing) + dat += {"Play Stop

+ Repeat Song: + [repeat > 0 ? "--" : "--"] + [repeat] times + [repeat < max_repeats ? "++" : "++"] +
"} + else + dat += {"Play Stop
+ Repeats left: [repeat]
"} if(!edit) - dat += "Show Editor

" + dat += "
Show Editor
" else - - dat += {"Hide Editor
- Start a New Song
- Import a Song

"} - if(song) - var/calctempo = (10/song.tempo)*60 - dat += "Tempo : -- [calctempo] BPM ++

" - var/linecount = 0 - for(var/line in song.lines) - linecount += 1 - dat += "Line [linecount]: [line] Delete Line Modify Line
" - dat += "Add Line

" + var/bpm = round(600 / tempo) + dat += {"

Editing

+ Hide Editor + Start a New Song + Import a Song

+ Tempo: - [bpm] BPM +

"} + var/linecount = 0 + for(var/line in lines) + linecount += 1 + dat += "Line [linecount]: Edit X [line]
" + dat += "Add Line

" if(help) - dat += "Hide Help
" - dat += {" + dat += {"Hide Help
Lines are a series of chords, separated by commas (,), each with notes seperated by hyphens (-).
Every note in a chord will play together, with chord timed by the tempo.

@@ -306,141 +159,176 @@ A pause may be denoted by an empty chord: C,E,,C,G
To make a chord be a different time, end it with /x, where the chord length will be length
defined by tempo / x: C,G/2,E/4
- Combined, an example is: E-E4/4,/2,G#/8,B/8,E3-E4/4 + Combined, an example is: E-E4/4,F#/2,G#/8,B/8,E3-E4/4
Lines may be up to 50 characters.
A song may only contain up to 50 lines.
"} else - dat += "Show Help
" - dat += "" - user << browse(dat, "window=piano;size=700x300") - onclose(user, "piano") - -/obj/structure/device/piano/Topic(href, href_list) - if(..()) + dat += "Show Help
" + var/datum/browser/popup = new(user, "instrument", instrumentObj.name, 700, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(instrumentObj.icon, instrumentObj.icon_state)) + popup.open() +/datum/song/Topic(href, href_list) + if(!instrumentObj.Adjacent(usr) || usr.stat) + usr << browse(null, "window=instrument") + usr.unset_machine() return - if(issilicon(usr) || !anchored || !usr.canmove) - return - - usr.set_machine(src) - + instrumentObj.add_fingerprint(usr) if(href_list["newsong"]) - song = new() - else if(song) - if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops. - if(playing) return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing. - var/tempnum = input("How many times do you want to repeat this piece? (max:10)") as num|null - if(tempnum > 10) - tempnum = 10 - if(tempnum < 0) - tempnum = 0 - repeat = round(tempnum) - - else if(href_list["tempo"]) - song.tempo += round(text2num(href_list["tempo"])) - if(song.tempo < 1) - song.tempo = 1 - - else if(href_list["play"]) - if(song) - playing = 1 - spawn() playsong() - - else if(href_list["newline"]) - var/newline = html_encode(input("Enter your line: ", "Piano") as text|null) - if(!newline) + lines = new() + tempo = sanitize_tempo(5) // default 120 BPM + name = "" + else if(href_list["import"]) + var/t = "" + do + t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message) + if(!in_range(instrumentObj, usr)) return - if(song.lines.len > 50) - return - if(length(newline) > 50) - newline = copytext(newline, 1, 50) - song.lines.Add(newline) - - else if(href_list["deleteline"]) - var/num = round(text2num(href_list["deleteline"])) - if(num > song.lines.len || num < 1) - return - song.lines.Cut(num, num+1) - - else if(href_list["modifyline"]) - var/num = round(text2num(href_list["modifyline"]),1) - var/content = html_encode(input("Enter your line: ", "Piano", song.lines[num]) as text|null) - if(!content) - return - if(length(content) > 50) - content = copytext(content, 1, 50) - if(num > song.lines.len || num < 1) - return - song.lines[num] = content - - else if(href_list["stop"]) - playing = 0 - - else if(href_list["help"]) - help = text2num(href_list["help"]) - 1 - - else if(href_list["edit"]) - edit = text2num(href_list["edit"]) - 1 - - else if(href_list["import"]) - var/t = "" - do - t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", src.name), t) as message) - if (!in_range(src, usr)) - return - - if(length(t) >= 3072) - var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") - if(cont == "no") - break - while(length(t) > 3072) - - //split into lines - spawn() - var/list/lines = splittext(t, "\n") - var/tempo = 5 - if(copytext(lines[1],1,6) == "BPM: ") - tempo = 600 / text2num(copytext(lines[1],6)) - lines.Cut(1,2) - if(lines.len > 50) - to_chat(usr, "Too many lines!") - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(length(l) > 50) - to_chat(usr, "Line [linenum] too long!") - lines.Remove(l) - else - linenum++ - song = new() - song.lines = lines - song.tempo = tempo - src.updateUsrDialog() - - add_fingerprint(usr) - src.updateUsrDialog() + if(lentext(t) >= 3072) + var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") + if(cont == "no") + break + while(lentext(t) > 3072) + //split into lines + spawn() + lines = splittext(t, "\n") + if(copytext(lines[1],1,6) == "BPM: ") + tempo = sanitize_tempo(600 / text2num(copytext(lines[1],6))) + lines.Cut(1,2) + else + tempo = sanitize_tempo(5) // default 120 BPM + if(lines.len > 50) + usr << "Too many lines!" + lines.Cut(51) + var/linenum = 1 + for(var/l in lines) + if(lentext(l) > 50) + usr << "Line [linenum] too long!" + lines.Remove(l) + else + linenum++ + updateDialog(usr) // make sure updates when complete + else if(href_list["help"]) + help = text2num(href_list["help"]) - 1 + else if(href_list["edit"]) + edit = text2num(href_list["edit"]) - 1 + if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops. + if(playing) + return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing. + repeat += round(text2num(href_list["repeat"])) + if(repeat < 0) + repeat = 0 + if(repeat > max_repeats) + repeat = max_repeats + else if(href_list["tempo"]) + tempo = sanitize_tempo(tempo + text2num(href_list["tempo"])) + else if(href_list["play"]) + playing = 1 + spawn() + playsong(usr) + else if(href_list["newline"]) + var/newline = html_encode(input("Enter your line: ", instrumentObj.name) as text|null) + if(!newline || !in_range(instrumentObj, usr)) + return + if(lines.len > 50) + return + if(lentext(newline) > 50) + newline = copytext(newline, 1, 50) + lines.Add(newline) + else if(href_list["deleteline"]) + var/num = round(text2num(href_list["deleteline"])) + if(num > lines.len || num < 1) + return + lines.Cut(num, num+1) + else if(href_list["modifyline"]) + var/num = round(text2num(href_list["modifyline"]),1) + var/content = html_encode(input("Enter your line: ", instrumentObj.name, lines[num]) as text|null) + if(!content || !in_range(instrumentObj, usr)) + return + if(lentext(content) > 50) + content = copytext(content, 1, 50) + if(num > lines.len || num < 1) + return + lines[num] = content + else if(href_list["stop"]) + playing = 0 + updateDialog(usr) return +/datum/song/proc/sanitize_tempo(new_tempo) + new_tempo = abs(new_tempo) + return max(round(new_tempo, world.tick_lag), world.tick_lag) +// subclass for handheld instruments, like violin +/datum/song/handheld +/datum/song/handheld/updateDialog(mob/user) + instrumentObj.interact(user) +/datum/song/handheld/shouldStopPlaying() + if(instrumentObj) + return !isliving(instrumentObj.loc) + else + return 1 +////////////////////////////////////////////////////////////////////////// +/obj/structure/piano + name = "space minimoog" + icon = 'icons/obj/musician.dmi' + icon_state = "minimoog" + anchored = 1 + density = 1 + var/datum/song/song +/obj/structure/piano/New() + song = new("piano", src) + if(prob(50)) + 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/piano/Destroy() + qdel(song) + song = null + ..() +/obj/structure/piano/initialize() + song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded + ..() -/obj/structure/device/piano/attackby(obj/item/O as obj, mob/user as mob) - if (iswrench(O)) - if (anchored) - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "You begin to loosen \the [src]'s casters...") - if (do_after(user, src, 40)) - user.visible_message( \ - "[user] loosens \the [src]'s casters.", \ - "You have loosened \the [src]. Now it can be pulled somewhere else.", \ - "You hear ratchet.") - src.anchored = 0 - else - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "You begin to tighten \the [src] to the floor...") - if (do_after(user, src, 20)) +/obj/structure/piano/attack_hand(mob/user) + if(!user.IsAdvancedToolUser()) + user << "You don't have the dexterity to do this!" + return 1 + interact(user) + +/obj/structure/piano/attack_paw(mob/user) + return src.attack_hand(user) + +/obj/structure/piano/interact(mob/user) + if(!user || !anchored) + return + + user.set_machine(src) + song.interact(user) + +/obj/structure/piano/attackby(obj/item/O, mob/user, params) + if (istype(O, /obj/item/weapon/wrench)) + if (!anchored && !istype(get_turf(src),/turf/space)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << " You begin to tighten \the [src] to the floor..." + if (do_after(user, 20, target = src)) user.visible_message( \ "[user] tightens \the [src]'s casters.", \ - "You have tightened \the [src]'s casters. Now it can be played again.", \ - "You hear ratchet.") - src.anchored = 1 + "You tighten \the [src]'s casters. Now it can be played again.", \ + "You hear a ratchet.") + anchored = 1 + else if(anchored) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << " You begin to loosen \the [src]'s casters..." + if (do_after(user, 40, target = src)) + user.visible_message( \ + "[user] loosens \the [src]'s casters.", \ + "You loosen \the [src]. Now it can be pulled somewhere else.", \ + "You hear a ratchet.") + anchored = 0 else - ..() + ..() \ No newline at end of file diff --git a/code/modules/maps/spawners/spawners.dm b/code/modules/maps/spawners/spawners.dm index e3bd5ef18b6..3bf7873cf80 100644 --- a/code/modules/maps/spawners/spawners.dm +++ b/code/modules/maps/spawners/spawners.dm @@ -201,7 +201,7 @@ /obj/machinery/vending/robotics, /obj/machinery/vending/sovietsoda, /obj/structure/AIcore, - /obj/structure/device/piano, + /obj/structure/piano, /obj/structure/displaycase_frame, /obj/structure/particle_accelerator/fuel_chamber, /obj/structure/reagent_dispensers/fueltank, diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 8e44fef1cf3..b2f1dd876da 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -350,7 +350,7 @@ var/global/list/item_mimic_disguises = list( /obj/item/device/aicard, /obj/item/device/analyzer, /obj/item/device/assembly/igniter, /obj/item/device/camera, /obj/item/device/codebreaker, /obj/item/device/device_analyser,\ /obj/item/device/flash, /obj/item/device/flashlight, /obj/item/device/hailer, /obj/item/device/material_synth, /obj/item/device/megaphone, /obj/item/device/paicard,\ /obj/item/device/pda/clown, /obj/item/device/rcd/matter/engineering, /obj/item/device/radio, /obj/item/device/robotanalyzer, /obj/item/device/soulstone,\ - /obj/item/device/soundsynth, /obj/item/device/violin, /obj/item/device/wormhole_jaunter, /obj/item/weapon/gun/portalgun, /obj/item/target), //Common items + /obj/item/device/soundsynth, /obj/item/device/instrument/violin, /obj/item/device/wormhole_jaunter, /obj/item/weapon/gun/portalgun, /obj/item/target), //Common items "medbay" = list(/obj/item/weapon/circular_saw, /obj/item/weapon/melee/defibrillator, /obj/item/weapon/surgicaldrill, /obj/item/weapon/hemostat, /obj/item/weapon/dnainjector/nofail/hulkmut,\ /obj/item/weapon/bonesetter, /obj/item/weapon/autopsy_scanner, /obj/item/weapon/FixOVein, /obj/item/stack/medical/ointment, /obj/item/weapon/storage/firstaid,\ diff --git a/html/changelogs/JustSumMusic.yml b/html/changelogs/JustSumMusic.yml new file mode 100644 index 00000000000..989bfd83654 --- /dev/null +++ b/html/changelogs/JustSumMusic.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscdel (general deleting of nice things) +# rscadd (general adding of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: JustSumGuy + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# There needs to be a space after the - and before the prefix. Don't use tabs anywhere in this file. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# If you're using characters such as # ' : - or the like in your changelog, surround the entire change with quotes as shown in the second example. These quotes don't show up on the changelog once it's merged and prevent errors. +# SCREW ANY OF THIS UP AND IT WON'T WORK. +changes: +- rscadd: "Added(ported) a new instrument: the guitar! Orderable from cargo through the arts and crafts crate." +- tweak: "Retuned the musical instrument interface to be a little neater." \ No newline at end of file diff --git a/icons/mob/in-hand/left/items_lefthand.dmi b/icons/mob/in-hand/left/items_lefthand.dmi index 6a58f2540b4..1e6fb3aee90 100644 Binary files a/icons/mob/in-hand/left/items_lefthand.dmi and b/icons/mob/in-hand/left/items_lefthand.dmi differ diff --git a/icons/mob/in-hand/right/items_righthand.dmi b/icons/mob/in-hand/right/items_righthand.dmi index e61de57eb8d..061c5fa94ee 100644 Binary files a/icons/mob/in-hand/right/items_righthand.dmi and b/icons/mob/in-hand/right/items_righthand.dmi differ diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi index b0a0efe03af..f191f97fca6 100644 Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ diff --git a/maps/RandomZLevels/broken/spacebattle.dmm b/maps/RandomZLevels/broken/spacebattle.dmm index f191cb12470..8f8f25103cb 100644 --- a/maps/RandomZLevels/broken/spacebattle.dmm +++ b/maps/RandomZLevels/broken/spacebattle.dmm @@ -396,7 +396,7 @@ "hF" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor{icon_state = "white"},/area/awaymission/spacebattle/cruiser) "hG" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor{icon_state = "white"},/area/awaymission/spacebattle/cruiser) "hH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hI" = (/obj/structure/table/woodentable,/obj/item/device/violin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"hI" = (/obj/structure/table/woodentable,/obj/item/device/instrument/violin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) "hJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) "hK" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) "hL" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/awaymission/spacebattle/cruiser) diff --git a/maps/RandomZLevels/broken/zresearchlabs.dmm b/maps/RandomZLevels/broken/zresearchlabs.dmm index f9419691bb5..50cb8bfb116 100644 --- a/maps/RandomZLevels/broken/zresearchlabs.dmm +++ b/maps/RandomZLevels/broken/zresearchlabs.dmm @@ -519,7 +519,7 @@ "jY" = (/obj/machinery/turretcover,/turf/unsimulated/desert,/area/awaymission/desert{dynamic_lighting = 1; luminosity = 1; name = "Desert"}) "jZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision) "ka" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -2; pixel_y = 8},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/labs/militarydivision) -"kb" = (/obj/item/device/violin,/turf/simulated/floor,/area/awaymission/labs/militarydivision) +"kb" = (/obj/item/device/instrument/violin,/turf/simulated/floor,/area/awaymission/labs/militarydivision) "kc" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light,/turf/simulated/floor{temperature = 393.15},/area/awaymission/labs/researchdivision) "kd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "delivery"; name = "floor"; temperature = 393.15},/area/awaymission/labs/researchdivision) "ke" = (/obj/machinery/bot/mulebot,/turf/simulated/floor{temperature = 393.15},/area/awaymission/labs/researchdivision) diff --git a/maps/RandomZLevels/unused/example.dmm b/maps/RandomZLevels/unused/example.dmm index be31476d725..34c3006b4ab 100644 --- a/maps/RandomZLevels/unused/example.dmm +++ b/maps/RandomZLevels/unused/example.dmm @@ -94,7 +94,7 @@ "bP" = (/obj/structure/bed/chair/wood{tag = "icon-wooden_chair (NORTH)"; icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/example) "bQ" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/awaymission/example) "bR" = (/obj/structure/table,/obj/machinery/light/small,/obj/item/weapon/paper{info = "X X O
X O X
O X"},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/example) -"bS" = (/obj/structure/device/piano,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/example) +"bS" = (/obj/structure/piano,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/example) "bT" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/example) "bU" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/validsalad,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/example) "bV" = (/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/awaymission/example) diff --git a/maps/busstation.dmm b/maps/busstation.dmm index cbc0cfe3126..bd0fe4ecc2d 100644 --- a/maps/busstation.dmm +++ b/maps/busstation.dmm @@ -2815,7 +2815,7 @@ "bcg" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/r_n_d/fabricator/mechanic_fab/autolathe,/turf/simulated/floor,/area/supply/office) "bch" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/hallway/primary/aft{name = "\improper Central Civillian Hallway"}) "bci" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bcj" = (/obj/structure/device/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor{icon_state = "cult"},/area/crew_quarters/bar) +"bcj" = (/obj/structure/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor{icon_state = "cult"},/area/crew_quarters/bar) "bck" = (/obj/structure/rack,/obj/item/stack/package_wrap,/obj/item/stack/package_wrap,/turf/simulated/floor/plating,/area/maintenance/port) "bcl" = (/obj/structure/window/reinforced{dir = 8; layer = 2.9},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcm" = (/obj/machinery/cooking/candy,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -5723,7 +5723,7 @@ "cgc" = (/turf/simulated/floor{dir = 5; icon_state = "dark vault stripe"},/area/derelict/singularity_engine{icon_state = "showroom"; name = "\improper Derelict Marketplace"}) "cgd" = (/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "cge" = (/obj/structure/table,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) -"cgf" = (/obj/structure/table,/obj/item/device/violin,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) +"cgf" = (/obj/structure/table,/obj/item/device/instrument/violin,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "cgg" = (/obj/machinery/vending/suitdispenser,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "cgh" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "cgi" = (/obj/structure/table,/obj/map/spawner/set_spawner/theater,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) @@ -5819,7 +5819,7 @@ "chU" = (/obj/machinery/door/airlock/glass{name = "Door"},/turf/simulated/floor{dir = 10; icon_state = "caution"},/area/derelict/singularity_engine{icon_state = "showroom"; name = "\improper Derelict Marketplace"}) "chV" = (/obj/item/weapon/crowbar,/turf/simulated/floor/plating,/area/derelict/hallway/primary) "chW" = (/obj/structure/window/barricade/full,/turf/simulated/floor{icon_state = "bar"},/area/maintenance/ghettobar) -"chX" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/device/piano,/turf/simulated/floor{icon_state = "cult"},/area/maintenance/ghettobar) +"chX" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/piano,/turf/simulated/floor{icon_state = "cult"},/area/maintenance/ghettobar) "chY" = (/turf/simulated/floor{icon_state = "cult"},/area/maintenance/ghettobar) "chZ" = (/turf/simulated/floor/carpet,/area/maintenance/ghettobar) "cia" = (/turf/simulated/floor/plating,/area/maintenance/ghettobar) diff --git a/maps/defficiency.dmm b/maps/defficiency.dmm index f6edc56f3d6..63e4894fc93 100644 --- a/maps/defficiency.dmm +++ b/maps/defficiency.dmm @@ -4880,7 +4880,7 @@ "bPR" = (/obj/machinery/door/airlock{id_tag = "RDorm3"; name = "Dorm 3"},/turf/simulated/floor,/area/crew_quarters/sleep) "bPS" = (/obj/effect/decal/warning_stripes/unshielded_area,/turf/simulated/wall,/area/derelictparts/apderelict) "bPT" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep) -"bPU" = (/obj/structure/table/woodentable,/obj/item/device/violin,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/fitness) +"bPU" = (/obj/structure/table/woodentable,/obj/item/device/instrument/violin,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/fitness) "bPV" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness) "bPW" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor,/area/crew_quarters/fitness) "bPX" = (/obj/item/weapon/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) @@ -5133,7 +5133,7 @@ "bUK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/screwdriver,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/derelictparts/port) "bUL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/derelictparts/port) "bUM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/silicate,/turf/simulated/floor/plating,/area/derelictparts/port) -"bUN" = (/obj/structure/rack,/obj/item/device/violin,/obj/item/device/camera,/turf/simulated/floor{icon_state = "dark vault full"},/area/crew_quarters/theatre) +"bUN" = (/obj/structure/rack,/obj/item/device/instrument/violin,/obj/item/device/camera,/turf/simulated/floor{icon_state = "dark vault full"},/area/crew_quarters/theatre) "bUO" = (/obj/structure/rack,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/item/weapon/reagent_containers/food/snacks/pie,/turf/simulated/floor{icon_state = "dark vault full"},/area/crew_quarters/theatre) "bUP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep) "bUQ" = (/obj/item/weapon/stool/piano{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -6260,7 +6260,7 @@ "cqt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-darkred (WEST)"; icon_state = "darkred"; dir = 8},/area/security/prison) "cqu" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/brig) "cqv" = (/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/brig) -"cqw" = (/obj/structure/device/piano,/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"cqw" = (/obj/structure/piano,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "cqx" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/brig) "cqy" = (/turf/simulated/floor{icon_state = "bar"},/area/security/prison) "cqz" = (/obj/machinery/atmospherics/unary/vent_pump/on{tag = "icon-out"; icon_state = "out"; dir = 2},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/brig) @@ -7829,7 +7829,7 @@ "cUC" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "cUD" = (/obj/machinery/cloning/clonepod/full,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "cUE" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"cUF" = (/obj/structure/device/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) +"cUF" = (/obj/structure/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "cUG" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "cUH" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/living) "cUI" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/living) diff --git a/maps/exodus.dmm b/maps/exodus.dmm index ffc38694eb5..bef80c080ea 100644 --- a/maps/exodus.dmm +++ b/maps/exodus.dmm @@ -3572,7 +3572,7 @@ "bqJ" = (/obj/structure/stool{pixel_y = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) "bqK" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) "bqL" = (/obj/structure/window/reinforced/tinted,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) -"bqM" = (/obj/structure/device/piano{dir = 4},/obj/structure/window/reinforced/tinted,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) +"bqM" = (/obj/structure/piano{dir = 4},/obj/structure/window/reinforced/tinted,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) "bqN" = (/obj/structure/stool{pixel_y = 5},/obj/structure/window/reinforced/tinted,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) "bqO" = (/obj/effect/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 28; pixel_y = 4},/obj/structure/window/reinforced/tinted,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) "bqP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria) @@ -6735,7 +6735,7 @@ "czA" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "czB" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "czC" = (/obj/machinery/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"czD" = (/obj/structure/device/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) +"czD" = (/obj/structure/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "czE" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "czF" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "czG" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) @@ -7401,7 +7401,7 @@ "cMq" = (/obj/structure/table/reinforced,/turf/unsimulated/floor,/area) "cMr" = (/obj/liquid_fuel/flamethrower_fuel,/turf/unsimulated/floor,/area) "cMs" = (/turf/unsimulated/floor{icon_state = "platingdmg1"},/area) -"cMt" = (/obj/structure/device/piano{dir = 4},/turf/unsimulated/floor{icon_state = "grimy"},/area) +"cMt" = (/obj/structure/piano{dir = 4},/turf/unsimulated/floor{icon_state = "grimy"},/area) "cMu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "grimy"},/area) "cMv" = (/obj/structure/rack,/obj/item/weapon/secstorage/sbriefcase,/obj/item/weapon/cigpacket,/obj/item/weapon/lighter/zippo,/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{icon_state = "grimy"},/area) "cMw" = (/obj/structure/closet/acloset,/turf/unsimulated/floor,/area) diff --git a/maps/fixes/tg-to-vg.txt b/maps/fixes/tg-to-vg.txt index 97728b4011a..3470f6cc53e 100644 --- a/maps/fixes/tg-to-vg.txt +++ b/maps/fixes/tg-to-vg.txt @@ -87,7 +87,7 @@ TYPE: /obj/structure/table/glass > /obj/structure/table TYPE: /obj/structure/closet/wardrobe/white/medical > /obj/structure/closet/wardrobe/medic_white TYPE: /obj/structure/bodycontainer/morgue > /obj/structure/morgue TYPE: /obj/structure/janitorialcart > /obj/structure/stool/bed/chair/vehicle/janicart -TYPE: /obj/structure/piano > /obj/structure/device/piano +TYPE: /obj/structure/piano > /obj/structure/piano TYPE: /obj/structure/closet/secure_closet/security/sec > /obj/structure/closet/secure_closet/security TYPE: /obj/structure/closet/secure_closet/atmospherics > /obj/structure/closet/secure_closet/engineering_atmos TYPE: /obj/structure/bodycontainer/crematorium > /obj/structure/crematorium diff --git a/maps/heartstation.0.1.0.dmm b/maps/heartstation.0.1.0.dmm index f5fe94d3f0c..67a38ecc0e9 100644 --- a/maps/heartstation.0.1.0.dmm +++ b/maps/heartstation.0.1.0.dmm @@ -2341,7 +2341,7 @@ "aTa" = (/obj/machinery/conveyor{dir = 4; id_tag = "QMLoad"},/obj/structure/plasticflaps,/turf/simulated/floor/plating,/area/quartermaster/qm) "aTb" = (/obj/machinery/conveyor{dir = 4; id_tag = "QMLoad"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/qm) "aTc" = (/obj/machinery/conveyor{dir = 1; id_tag = "QMLoad"; pixel_x = -4; pixel_y = 2},/obj/structure/cable{icon_state = "1-2"; pixel_y = 0; d1 = 1; d2 = 2},/turf/simulated/floor/plating,/area/quartermaster/qm) -"aTd" = (/obj/structure/device/piano,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "loungefloor"},/area/research_outpost/iso3) +"aTd" = (/obj/structure/piano,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "loungefloor"},/area/research_outpost/iso3) "aTe" = (/obj/structure/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/general/hidden,/obj/structure/stool,/turf/simulated/floor{icon_state = "loungefloor"},/area/research_outpost/iso3) "aTf" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "dark"},/area/research_outpost/iso3) "aTg" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/item/device/eftpos{dir = 2; pixel_y = 35},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/cafeteria) @@ -2746,7 +2746,7 @@ "baP" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/crew_quarters/bar) "baQ" = (/obj/structure/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/airlock{name = "Bar"; req_access_txt = "25"},/turf/simulated/floor,/area/crew_quarters/cafeteria) "baR" = (/turf/simulated/wall,/area/crew_quarters/bar) -"baS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/device/piano,/turf/simulated/floor{icon_state = "cafeteria"},/area/crew_quarters/cafeteria) +"baS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/piano,/turf/simulated/floor{icon_state = "cafeteria"},/area/crew_quarters/cafeteria) "baT" = (/obj/structure/disposalpipe/segment,/obj/structure/stool,/turf/simulated/floor{icon_state = "cafeteria"},/area/crew_quarters/cafeteria) "baU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor{icon_state = "cafeteria"},/area/crew_quarters/cafeteria) "baV" = (/obj/structure/cable{icon_state = "4-8"; pixel_y = 0; d1 = 4; d2 = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"},/area/crew_quarters/cafeteria) @@ -4320,7 +4320,7 @@ "bFd" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible,/turf/simulated/floor{tag = "icon-warnwhite (SOUTHEAST)"; icon_state = "warnwhite"; dir = 6},/area/atmos) "bFe" = (/obj/machinery/door/window{dir = 4; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_station/start) "bFf" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_station/start) -"bFg" = (/obj/structure/device/piano,/turf/simulated/floor{icon_state = "engine"},/area/shuttle/escape/centcom) +"bFg" = (/obj/structure/piano,/turf/simulated/floor{icon_state = "engine"},/area/shuttle/escape/centcom) "bFh" = (/obj/structure/stool,/obj/machinery/status_display{pixel_x = -32; pixel_y = -32; pixel_z = 0},/turf/simulated/floor{icon_state = "engine"},/area/shuttle/escape/centcom) "bFi" = (/obj/structure/shuttle/engine/propulsion{dir = 1},/turf/space,/area/supply/dock) "bFj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/greengrid,/area/turret_protected/ai_upload) diff --git a/maps/metaclub.dmm b/maps/metaclub.dmm index ca7af2c3fbd..87f8cb531e8 100644 --- a/maps/metaclub.dmm +++ b/maps/metaclub.dmm @@ -4283,7 +4283,7 @@ "bEs" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/bed/chair/wood/wings{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bEt" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/obj/machinery/computer/slot_machine,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bEu" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/computer/slot_machine,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bEv" = (/obj/structure/device/piano{pixel_x = 6},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bEv" = (/obj/structure/piano{pixel_x = 6},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bEw" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/stool/piano{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bEx" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bEy" = (/obj/structure/table/woodentable,/obj/item/weapon/staff/broom,/obj/item/weapon/wrench,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -4830,7 +4830,7 @@ "bOT" = (/obj/machinery/door/window{base_state = "right"; dir = 8; name = "Cabaret Stage"; req_access_txt = "0"},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bOU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bOV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bOW" = (/obj/structure/table/woodentable,/obj/item/device/violin{pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bOW" = (/obj/structure/table/woodentable,/obj/item/device/instrument/violin{pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bOX" = (/obj/structure/table,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/starboard) "bOY" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/starboard) "bOZ" = (/turf/simulated/wall/r_wall,/area/maintenance/starboard) @@ -8611,7 +8611,7 @@ "djE" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "djF" = (/obj/machinery/cloning/clonepod/full,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "djG" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"djH" = (/obj/structure/device/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) +"djH" = (/obj/structure/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "djI" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "djJ" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/living) "djK" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/living) diff --git a/maps/ministation.dmm b/maps/ministation.dmm index 3abff71272e..f5cfafb9b60 100644 --- a/maps/ministation.dmm +++ b/maps/ministation.dmm @@ -1143,7 +1143,7 @@ "vY" = (/obj/structure/table/reinforced,/obj/machinery/door/window{base_state = "right"; dir = 2; name = "Chemistry Desk"; req_access_txt = "33"},/obj/item/clothing/glasses/science,/obj/machinery/door/firedoor/border_only{layer = 2.5; name = "Firelock South"},/turf/simulated/floor/plating,/area/medical/medbay) "vZ" = (/turf/simulated/wall,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "wa" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet,/turf/simulated/floor/plating,/area/hallway/primary/central) -"wb" = (/obj/structure/device/piano,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) +"wb" = (/obj/structure/piano,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "wc" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/machinery/light,/obj/effect/landmark/start{name = "Clown"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "wd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "we" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) diff --git a/maps/taxistation.dmm b/maps/taxistation.dmm index 9e33e92e4df..a3d2c04d4af 100644 --- a/maps/taxistation.dmm +++ b/maps/taxistation.dmm @@ -1474,7 +1474,7 @@ "aCr" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/kitchenspike,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aCs" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aCt" = (/obj/machinery/alarm{dir = 8; pixel_x = 22},/obj/machinery/processor,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"aCu" = (/obj/structure/rack,/obj/item/device/violin,/obj/item/device/camera,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/item/device/soundsynth,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"aCu" = (/obj/structure/rack,/obj/item/device/instrument/violin,/obj/item/device/camera,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/item/device/soundsynth,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aCv" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aCw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/decal/cleanable/blood/oil{dir = 4; icon_state = "floor6"},/obj/item/weapon/bananapeel/traitorpeel,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aCx" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/light{dir = 4},/obj/item/mounted/poster,/turf/simulated/floor/wood,/area/crew_quarters/theatre) @@ -1791,7 +1791,7 @@ "aIw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Clinic"}) "aIx" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/apc{dir = 4; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Clinic"}) "aIy" = (/obj/structure/bed/chair/wood/normal,/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aIz" = (/obj/structure/device/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aIz" = (/obj/structure/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aIA" = (/obj/item/weapon/stool/piano{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aIB" = (/obj/structure/bed/chair/wood/normal,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aIC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/crew_quarters/bar) @@ -5557,7 +5557,7 @@ "ccS" = (/turf/simulated/floor{dir = 5; icon_state = "dark vault stripe"},/area/derelict/singularity_engine{icon_state = "showroom"; name = "\improper Derelict Marketplace"}) "ccT" = (/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "ccU" = (/obj/structure/table,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) -"ccV" = (/obj/structure/table,/obj/item/device/violin,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) +"ccV" = (/obj/structure/table,/obj/item/device/instrument/violin,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "ccW" = (/obj/machinery/vending/suitdispenser,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "ccX" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) "ccY" = (/obj/structure/table,/obj/map/spawner/set_spawner/theater,/turf/simulated/floor/wood,/area/derelict/hallway{name = "\improper Derelict Theatre"}) @@ -5653,7 +5653,7 @@ "ceK" = (/obj/machinery/door/airlock/glass{name = "Door"},/turf/simulated/floor{dir = 10; icon_state = "caution"},/area/derelict/singularity_engine{icon_state = "showroom"; name = "\improper Derelict Marketplace"}) "ceL" = (/obj/item/weapon/crowbar,/turf/simulated/floor/plating,/area/derelict/hallway/primary) "ceM" = (/obj/structure/window/barricade/full,/turf/simulated/floor{icon_state = "bar"},/area/maintenance/ghettobar) -"ceN" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/device/piano,/turf/simulated/floor{icon_state = "cult"},/area/maintenance/ghettobar) +"ceN" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/piano,/turf/simulated/floor{icon_state = "cult"},/area/maintenance/ghettobar) "ceO" = (/turf/simulated/floor{icon_state = "cult"},/area/maintenance/ghettobar) "ceP" = (/turf/simulated/floor/carpet,/area/maintenance/ghettobar) "ceQ" = (/turf/simulated/floor/plating,/area/maintenance/ghettobar) diff --git a/maps/test_box.dmm b/maps/test_box.dmm index 8e69083b566..2251c870aa7 100644 --- a/maps/test_box.dmm +++ b/maps/test_box.dmm @@ -1630,12 +1630,12 @@ "aFr" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness) "aFs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aFt" = (/obj/machinery/computer/HolodeckControl,/turf/simulated/floor,/area/crew_quarters/fitness) -"aFu" = (/obj/structure/device/piano{icon_state = "piano"; name = "space piano"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) +"aFu" = (/obj/structure/piano{icon_state = "piano"; name = "space piano"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) "aFv" = (/obj/item/weapon/stool/piano{dir = 8},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/carpet,/area/maintenance/ghettotheatre) "aFw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/maintenance/ghettotheatre) "aFx" = (/obj/effect/decal/cleanable/soot,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/carpet,/area/maintenance/ghettotheatre) "aFy" = (/obj/effect/decal/cleanable/soot,/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/light{dir = 4},/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) -"aFz" = (/obj/structure/table/woodentable,/obj/item/device/violin,/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) +"aFz" = (/obj/structure/table/woodentable,/obj/item/device/instrument/violin,/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) "aFA" = (/obj/structure/table/woodentable,/obj/item/clothing/under/owl,/obj/item/clothing/mask/gas/owl_mask,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken4"},/area/maintenance/ghettotheatre) "aFB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_construct/small{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aFC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2419,7 +2419,7 @@ "aUA" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aUB" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aUC" = (/obj/machinery/camera{c_tag = "Theatre"},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken6"},/area/crew_quarters/theatre) -"aUD" = (/obj/structure/rack,/obj/item/device/violin,/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"aUD" = (/obj/structure/rack,/obj/item/device/instrument/violin,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aUE" = (/obj/machinery/door/window{dir = 2; base_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/warning_stripes{icon_state = "unloading"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/kitchen) "aUF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aUG" = (/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -2698,7 +2698,7 @@ "aZT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/central) "aZU" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central) "aZV" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=EVA2"; location = "Dorm"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/central) -"aZW" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/device/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aZW" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/stool/piano{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZY" = (/obj/structure/bed/chair/wood/wings{dir = 1},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) diff --git a/maps/tgstation.dmm b/maps/tgstation.dmm index 46abb197c80..f2b0ac82920 100644 --- a/maps/tgstation.dmm +++ b/maps/tgstation.dmm @@ -1620,12 +1620,12 @@ "aFh" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness) "aFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aFj" = (/obj/machinery/computer/HolodeckControl,/turf/simulated/floor,/area/crew_quarters/fitness) -"aFk" = (/obj/structure/device/piano{icon_state = "piano"; name = "space piano"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) +"aFk" = (/obj/structure/piano{icon_state = "piano"; name = "space piano"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) "aFl" = (/obj/item/weapon/stool/piano{dir = 8},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/carpet,/area/maintenance/ghettotheatre) "aFm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/maintenance/ghettotheatre) "aFn" = (/obj/effect/decal/cleanable/soot,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/carpet,/area/maintenance/ghettotheatre) "aFo" = (/obj/effect/decal/cleanable/soot,/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/light{dir = 4},/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) -"aFp" = (/obj/structure/table/woodentable,/obj/item/device/violin,/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) +"aFp" = (/obj/structure/table/woodentable,/obj/item/device/instrument/violin,/turf/simulated/floor/plating,/area/maintenance/ghettotheatre) "aFq" = (/obj/structure/table/woodentable,/obj/item/clothing/under/owl,/obj/item/clothing/mask/gas/owl_mask,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken4"},/area/maintenance/ghettotheatre) "aFr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_construct/small{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aFs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2399,7 +2399,7 @@ "aUg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aUh" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aUi" = (/obj/machinery/camera{c_tag = "Theatre"},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken6"},/area/crew_quarters/theatre) -"aUj" = (/obj/structure/rack,/obj/item/device/violin,/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"aUj" = (/obj/structure/rack,/obj/item/device/instrument/violin,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aUk" = (/obj/machinery/door/window{dir = 2; base_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/warning_stripes{icon_state = "unloading"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/kitchen) "aUl" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aUm" = (/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -2678,7 +2678,7 @@ "aZz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/central) "aZA" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central) "aZB" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=EVA2"; location = "Dorm"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/hallway/primary/central) -"aZC" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/device/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aZC" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/piano{icon_state = "piano"; name = "space piano"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/weapon/stool/piano{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZE" = (/obj/structure/bed/chair/wood/wings{dir = 1},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) @@ -8419,7 +8419,7 @@ "dfU" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "dfV" = (/obj/machinery/cloning/clonepod/full,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "dfW" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"dfX" = (/obj/structure/device/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) +"dfX" = (/obj/structure/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "dfY" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "dfZ" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/living) "dga" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/living) diff --git a/sound/guitar/Ab3.ogg b/sound/guitar/Ab3.ogg new file mode 100644 index 00000000000..6e242786c40 Binary files /dev/null and b/sound/guitar/Ab3.ogg differ diff --git a/sound/guitar/Ab4.ogg b/sound/guitar/Ab4.ogg new file mode 100644 index 00000000000..6f854ea5d3f Binary files /dev/null and b/sound/guitar/Ab4.ogg differ diff --git a/sound/guitar/Ab5.ogg b/sound/guitar/Ab5.ogg new file mode 100644 index 00000000000..53ba1c01520 Binary files /dev/null and b/sound/guitar/Ab5.ogg differ diff --git a/sound/guitar/Ab6.ogg b/sound/guitar/Ab6.ogg new file mode 100644 index 00000000000..d0a238ba607 Binary files /dev/null and b/sound/guitar/Ab6.ogg differ diff --git a/sound/guitar/An3.ogg b/sound/guitar/An3.ogg new file mode 100644 index 00000000000..1f06e6d4f28 Binary files /dev/null and b/sound/guitar/An3.ogg differ diff --git a/sound/guitar/An4.ogg b/sound/guitar/An4.ogg new file mode 100644 index 00000000000..f3354df46b9 Binary files /dev/null and b/sound/guitar/An4.ogg differ diff --git a/sound/guitar/An5.ogg b/sound/guitar/An5.ogg new file mode 100644 index 00000000000..fc3b1b345c9 Binary files /dev/null and b/sound/guitar/An5.ogg differ diff --git a/sound/guitar/An6.ogg b/sound/guitar/An6.ogg new file mode 100644 index 00000000000..f58a50d2a65 Binary files /dev/null and b/sound/guitar/An6.ogg differ diff --git a/sound/guitar/Bb3.ogg b/sound/guitar/Bb3.ogg new file mode 100644 index 00000000000..e88343d88fb Binary files /dev/null and b/sound/guitar/Bb3.ogg differ diff --git a/sound/guitar/Bb4.ogg b/sound/guitar/Bb4.ogg new file mode 100644 index 00000000000..11b883285da Binary files /dev/null and b/sound/guitar/Bb4.ogg differ diff --git a/sound/guitar/Bb5.ogg b/sound/guitar/Bb5.ogg new file mode 100644 index 00000000000..5d9b10f87a6 Binary files /dev/null and b/sound/guitar/Bb5.ogg differ diff --git a/sound/guitar/Bb6.ogg b/sound/guitar/Bb6.ogg new file mode 100644 index 00000000000..c7f11ef59a6 Binary files /dev/null and b/sound/guitar/Bb6.ogg differ diff --git a/sound/guitar/Bn3.ogg b/sound/guitar/Bn3.ogg new file mode 100644 index 00000000000..0d6022369fa Binary files /dev/null and b/sound/guitar/Bn3.ogg differ diff --git a/sound/guitar/Bn4.ogg b/sound/guitar/Bn4.ogg new file mode 100644 index 00000000000..7e8682d5ff0 Binary files /dev/null and b/sound/guitar/Bn4.ogg differ diff --git a/sound/guitar/Bn5.ogg b/sound/guitar/Bn5.ogg new file mode 100644 index 00000000000..1912da7f66c Binary files /dev/null and b/sound/guitar/Bn5.ogg differ diff --git a/sound/guitar/Bn6.ogg b/sound/guitar/Bn6.ogg new file mode 100644 index 00000000000..985ec744dfb Binary files /dev/null and b/sound/guitar/Bn6.ogg differ diff --git a/sound/guitar/Cn4.ogg b/sound/guitar/Cn4.ogg new file mode 100644 index 00000000000..0279b73f8bd Binary files /dev/null and b/sound/guitar/Cn4.ogg differ diff --git a/sound/guitar/Cn5.ogg b/sound/guitar/Cn5.ogg new file mode 100644 index 00000000000..ece600a6c1a Binary files /dev/null and b/sound/guitar/Cn5.ogg differ diff --git a/sound/guitar/Cn6.ogg b/sound/guitar/Cn6.ogg new file mode 100644 index 00000000000..8c2fecc62aa Binary files /dev/null and b/sound/guitar/Cn6.ogg differ diff --git a/sound/guitar/Db4.ogg b/sound/guitar/Db4.ogg new file mode 100644 index 00000000000..8a14f1f8365 Binary files /dev/null and b/sound/guitar/Db4.ogg differ diff --git a/sound/guitar/Db5.ogg b/sound/guitar/Db5.ogg new file mode 100644 index 00000000000..46a67f20ce0 Binary files /dev/null and b/sound/guitar/Db5.ogg differ diff --git a/sound/guitar/Db6.ogg b/sound/guitar/Db6.ogg new file mode 100644 index 00000000000..a07095c6033 Binary files /dev/null and b/sound/guitar/Db6.ogg differ diff --git a/sound/guitar/Dn4.ogg b/sound/guitar/Dn4.ogg new file mode 100644 index 00000000000..587099a0ddc Binary files /dev/null and b/sound/guitar/Dn4.ogg differ diff --git a/sound/guitar/Dn5.ogg b/sound/guitar/Dn5.ogg new file mode 100644 index 00000000000..d6a9c38415a Binary files /dev/null and b/sound/guitar/Dn5.ogg differ diff --git a/sound/guitar/Dn6.ogg b/sound/guitar/Dn6.ogg new file mode 100644 index 00000000000..4e44d5e72fe Binary files /dev/null and b/sound/guitar/Dn6.ogg differ diff --git a/sound/guitar/Eb4.ogg b/sound/guitar/Eb4.ogg new file mode 100644 index 00000000000..1f93c8273d1 Binary files /dev/null and b/sound/guitar/Eb4.ogg differ diff --git a/sound/guitar/Eb5.ogg b/sound/guitar/Eb5.ogg new file mode 100644 index 00000000000..5b795377f38 Binary files /dev/null and b/sound/guitar/Eb5.ogg differ diff --git a/sound/guitar/Eb6.ogg b/sound/guitar/Eb6.ogg new file mode 100644 index 00000000000..5febf7a37b3 Binary files /dev/null and b/sound/guitar/Eb6.ogg differ diff --git a/sound/guitar/En3.ogg b/sound/guitar/En3.ogg new file mode 100644 index 00000000000..d9679bd78ea Binary files /dev/null and b/sound/guitar/En3.ogg differ diff --git a/sound/guitar/En4.ogg b/sound/guitar/En4.ogg new file mode 100644 index 00000000000..50dad80f506 Binary files /dev/null and b/sound/guitar/En4.ogg differ diff --git a/sound/guitar/En5.ogg b/sound/guitar/En5.ogg new file mode 100644 index 00000000000..8617c069201 Binary files /dev/null and b/sound/guitar/En5.ogg differ diff --git a/sound/guitar/En6.ogg b/sound/guitar/En6.ogg new file mode 100644 index 00000000000..a487ce33e4b Binary files /dev/null and b/sound/guitar/En6.ogg differ diff --git a/sound/guitar/Fn3.ogg b/sound/guitar/Fn3.ogg new file mode 100644 index 00000000000..4e37dc58126 Binary files /dev/null and b/sound/guitar/Fn3.ogg differ diff --git a/sound/guitar/Fn4.ogg b/sound/guitar/Fn4.ogg new file mode 100644 index 00000000000..3bf9957d48a Binary files /dev/null and b/sound/guitar/Fn4.ogg differ diff --git a/sound/guitar/Fn5.ogg b/sound/guitar/Fn5.ogg new file mode 100644 index 00000000000..ad0a0ecec79 Binary files /dev/null and b/sound/guitar/Fn5.ogg differ diff --git a/sound/guitar/Fn6.ogg b/sound/guitar/Fn6.ogg new file mode 100644 index 00000000000..50457e7bf4c Binary files /dev/null and b/sound/guitar/Fn6.ogg differ diff --git a/sound/guitar/Gb3.ogg b/sound/guitar/Gb3.ogg new file mode 100644 index 00000000000..1b2e6c503de Binary files /dev/null and b/sound/guitar/Gb3.ogg differ diff --git a/sound/guitar/Gb4.ogg b/sound/guitar/Gb4.ogg new file mode 100644 index 00000000000..122a0c5c17d Binary files /dev/null and b/sound/guitar/Gb4.ogg differ diff --git a/sound/guitar/Gb5.ogg b/sound/guitar/Gb5.ogg new file mode 100644 index 00000000000..b0346e2f365 Binary files /dev/null and b/sound/guitar/Gb5.ogg differ diff --git a/sound/guitar/Gb6.ogg b/sound/guitar/Gb6.ogg new file mode 100644 index 00000000000..4f873de27cf Binary files /dev/null and b/sound/guitar/Gb6.ogg differ diff --git a/sound/guitar/Gn3.ogg b/sound/guitar/Gn3.ogg new file mode 100644 index 00000000000..783cded9fe5 Binary files /dev/null and b/sound/guitar/Gn3.ogg differ diff --git a/sound/guitar/Gn4.ogg b/sound/guitar/Gn4.ogg new file mode 100644 index 00000000000..92f9cd2fd9d Binary files /dev/null and b/sound/guitar/Gn4.ogg differ diff --git a/sound/guitar/Gn5.ogg b/sound/guitar/Gn5.ogg new file mode 100644 index 00000000000..42fdebc209b Binary files /dev/null and b/sound/guitar/Gn5.ogg differ diff --git a/sound/guitar/Gn6.ogg b/sound/guitar/Gn6.ogg new file mode 100644 index 00000000000..a36bf38f001 Binary files /dev/null and b/sound/guitar/Gn6.ogg differ diff --git a/sound/piano/A#1.ogg b/sound/piano/A#1.ogg deleted file mode 100644 index b40cc723334..00000000000 Binary files a/sound/piano/A#1.ogg and /dev/null differ diff --git a/sound/piano/A#2.ogg b/sound/piano/A#2.ogg deleted file mode 100644 index 2b0677d44ae..00000000000 Binary files a/sound/piano/A#2.ogg and /dev/null differ diff --git a/sound/piano/A#3.ogg b/sound/piano/A#3.ogg deleted file mode 100644 index e8fc263d8f4..00000000000 Binary files a/sound/piano/A#3.ogg and /dev/null differ diff --git a/sound/piano/A#4.ogg b/sound/piano/A#4.ogg deleted file mode 100644 index 8ba7c40d331..00000000000 Binary files a/sound/piano/A#4.ogg and /dev/null differ diff --git a/sound/piano/A#5.ogg b/sound/piano/A#5.ogg deleted file mode 100644 index 65c14d3320f..00000000000 Binary files a/sound/piano/A#5.ogg and /dev/null differ diff --git a/sound/piano/A#6.ogg b/sound/piano/A#6.ogg deleted file mode 100644 index 88317f7d55c..00000000000 Binary files a/sound/piano/A#6.ogg and /dev/null differ diff --git a/sound/piano/A#7.ogg b/sound/piano/A#7.ogg deleted file mode 100644 index e7354522fee..00000000000 Binary files a/sound/piano/A#7.ogg and /dev/null differ diff --git a/sound/piano/A#8.ogg b/sound/piano/A#8.ogg deleted file mode 100644 index 7d8014c059a..00000000000 Binary files a/sound/piano/A#8.ogg and /dev/null differ diff --git a/sound/piano/B#1.ogg b/sound/piano/B#1.ogg deleted file mode 100644 index b82c6cff8a4..00000000000 Binary files a/sound/piano/B#1.ogg and /dev/null differ diff --git a/sound/piano/B#2.ogg b/sound/piano/B#2.ogg deleted file mode 100644 index e2183806292..00000000000 Binary files a/sound/piano/B#2.ogg and /dev/null differ diff --git a/sound/piano/B#3.ogg b/sound/piano/B#3.ogg deleted file mode 100644 index b4dd559a24e..00000000000 Binary files a/sound/piano/B#3.ogg and /dev/null differ diff --git a/sound/piano/B#4.ogg b/sound/piano/B#4.ogg deleted file mode 100644 index 578c45e452e..00000000000 Binary files a/sound/piano/B#4.ogg and /dev/null differ diff --git a/sound/piano/B#5.ogg b/sound/piano/B#5.ogg deleted file mode 100644 index 6dfd56115ff..00000000000 Binary files a/sound/piano/B#5.ogg and /dev/null differ diff --git a/sound/piano/B#6.ogg b/sound/piano/B#6.ogg deleted file mode 100644 index 32996328c8b..00000000000 Binary files a/sound/piano/B#6.ogg and /dev/null differ diff --git a/sound/piano/B#7.ogg b/sound/piano/B#7.ogg deleted file mode 100644 index 89b771aa375..00000000000 Binary files a/sound/piano/B#7.ogg and /dev/null differ diff --git a/sound/piano/B#8.ogg b/sound/piano/B#8.ogg deleted file mode 100644 index cca99040dec..00000000000 Binary files a/sound/piano/B#8.ogg and /dev/null differ diff --git a/sound/piano/C#1.ogg b/sound/piano/C#1.ogg deleted file mode 100644 index dc3c859caee..00000000000 Binary files a/sound/piano/C#1.ogg and /dev/null differ diff --git a/sound/piano/C#2.ogg b/sound/piano/C#2.ogg deleted file mode 100644 index 5a36e244a76..00000000000 Binary files a/sound/piano/C#2.ogg and /dev/null differ diff --git a/sound/piano/C#3.ogg b/sound/piano/C#3.ogg deleted file mode 100644 index af3e49f21e4..00000000000 Binary files a/sound/piano/C#3.ogg and /dev/null differ diff --git a/sound/piano/C#4.ogg b/sound/piano/C#4.ogg deleted file mode 100644 index 8b18a4ce418..00000000000 Binary files a/sound/piano/C#4.ogg and /dev/null differ diff --git a/sound/piano/C#5.ogg b/sound/piano/C#5.ogg deleted file mode 100644 index 690bd2763e9..00000000000 Binary files a/sound/piano/C#5.ogg and /dev/null differ diff --git a/sound/piano/C#6.ogg b/sound/piano/C#6.ogg deleted file mode 100644 index 3a27950bd3f..00000000000 Binary files a/sound/piano/C#6.ogg and /dev/null differ diff --git a/sound/piano/C#7.ogg b/sound/piano/C#7.ogg deleted file mode 100644 index 9a7bc071ead..00000000000 Binary files a/sound/piano/C#7.ogg and /dev/null differ diff --git a/sound/piano/C#8.ogg b/sound/piano/C#8.ogg deleted file mode 100644 index 9adc2dbbbc5..00000000000 Binary files a/sound/piano/C#8.ogg and /dev/null differ diff --git a/sound/piano/Cb2.ogg b/sound/piano/Cb2.ogg deleted file mode 100644 index 7c36759c95a..00000000000 Binary files a/sound/piano/Cb2.ogg and /dev/null differ diff --git a/sound/piano/Cb3.ogg b/sound/piano/Cb3.ogg deleted file mode 100644 index b8569638545..00000000000 Binary files a/sound/piano/Cb3.ogg and /dev/null differ diff --git a/sound/piano/Cb4.ogg b/sound/piano/Cb4.ogg deleted file mode 100644 index fb693c0cadb..00000000000 Binary files a/sound/piano/Cb4.ogg and /dev/null differ diff --git a/sound/piano/Cb5.ogg b/sound/piano/Cb5.ogg deleted file mode 100644 index b114181e3fc..00000000000 Binary files a/sound/piano/Cb5.ogg and /dev/null differ diff --git a/sound/piano/Cb6.ogg b/sound/piano/Cb6.ogg deleted file mode 100644 index 42470f9f3a3..00000000000 Binary files a/sound/piano/Cb6.ogg and /dev/null differ diff --git a/sound/piano/Cb7.ogg b/sound/piano/Cb7.ogg deleted file mode 100644 index adeb34cacdf..00000000000 Binary files a/sound/piano/Cb7.ogg and /dev/null differ diff --git a/sound/piano/Cb8.ogg b/sound/piano/Cb8.ogg deleted file mode 100644 index 1f2cbb94dd2..00000000000 Binary files a/sound/piano/Cb8.ogg and /dev/null differ diff --git a/sound/piano/Cb9.ogg b/sound/piano/Cb9.ogg deleted file mode 100644 index 25c0d646c3b..00000000000 Binary files a/sound/piano/Cb9.ogg and /dev/null differ diff --git a/sound/piano/D#1.ogg b/sound/piano/D#1.ogg deleted file mode 100644 index bd58c7dd75a..00000000000 Binary files a/sound/piano/D#1.ogg and /dev/null differ diff --git a/sound/piano/D#2.ogg b/sound/piano/D#2.ogg deleted file mode 100644 index fc01076810a..00000000000 Binary files a/sound/piano/D#2.ogg and /dev/null differ diff --git a/sound/piano/D#3.ogg b/sound/piano/D#3.ogg deleted file mode 100644 index e437f444663..00000000000 Binary files a/sound/piano/D#3.ogg and /dev/null differ diff --git a/sound/piano/D#4.ogg b/sound/piano/D#4.ogg deleted file mode 100644 index 0804aa03de0..00000000000 Binary files a/sound/piano/D#4.ogg and /dev/null differ diff --git a/sound/piano/D#5.ogg b/sound/piano/D#5.ogg deleted file mode 100644 index 40889dbae51..00000000000 Binary files a/sound/piano/D#5.ogg and /dev/null differ diff --git a/sound/piano/D#6.ogg b/sound/piano/D#6.ogg deleted file mode 100644 index 616481d2f90..00000000000 Binary files a/sound/piano/D#6.ogg and /dev/null differ diff --git a/sound/piano/D#7.ogg b/sound/piano/D#7.ogg deleted file mode 100644 index 5c191fb7f69..00000000000 Binary files a/sound/piano/D#7.ogg and /dev/null differ diff --git a/sound/piano/D#8.ogg b/sound/piano/D#8.ogg deleted file mode 100644 index 5955ed7f8d0..00000000000 Binary files a/sound/piano/D#8.ogg and /dev/null differ diff --git a/sound/piano/E#1.ogg b/sound/piano/E#1.ogg deleted file mode 100644 index c192032dc0f..00000000000 Binary files a/sound/piano/E#1.ogg and /dev/null differ diff --git a/sound/piano/E#2.ogg b/sound/piano/E#2.ogg deleted file mode 100644 index da09b649798..00000000000 Binary files a/sound/piano/E#2.ogg and /dev/null differ diff --git a/sound/piano/E#3.ogg b/sound/piano/E#3.ogg deleted file mode 100644 index e7a2f935350..00000000000 Binary files a/sound/piano/E#3.ogg and /dev/null differ diff --git a/sound/piano/E#4.ogg b/sound/piano/E#4.ogg deleted file mode 100644 index b3b14b7266d..00000000000 Binary files a/sound/piano/E#4.ogg and /dev/null differ diff --git a/sound/piano/E#5.ogg b/sound/piano/E#5.ogg deleted file mode 100644 index 08bc2cf5a80..00000000000 Binary files a/sound/piano/E#5.ogg and /dev/null differ diff --git a/sound/piano/E#6.ogg b/sound/piano/E#6.ogg deleted file mode 100644 index 6060576f36e..00000000000 Binary files a/sound/piano/E#6.ogg and /dev/null differ diff --git a/sound/piano/E#7.ogg b/sound/piano/E#7.ogg deleted file mode 100644 index 77a81ed5702..00000000000 Binary files a/sound/piano/E#7.ogg and /dev/null differ diff --git a/sound/piano/E#8.ogg b/sound/piano/E#8.ogg deleted file mode 100644 index 5502fedbdac..00000000000 Binary files a/sound/piano/E#8.ogg and /dev/null differ diff --git a/sound/piano/F#1.ogg b/sound/piano/F#1.ogg deleted file mode 100644 index ad9e0a563ce..00000000000 Binary files a/sound/piano/F#1.ogg and /dev/null differ diff --git a/sound/piano/F#2.ogg b/sound/piano/F#2.ogg deleted file mode 100644 index b1e86bfeaa6..00000000000 Binary files a/sound/piano/F#2.ogg and /dev/null differ diff --git a/sound/piano/F#3.ogg b/sound/piano/F#3.ogg deleted file mode 100644 index 53b56c5017d..00000000000 Binary files a/sound/piano/F#3.ogg and /dev/null differ diff --git a/sound/piano/F#4.ogg b/sound/piano/F#4.ogg deleted file mode 100644 index e9d71303a1a..00000000000 Binary files a/sound/piano/F#4.ogg and /dev/null differ diff --git a/sound/piano/F#5.ogg b/sound/piano/F#5.ogg deleted file mode 100644 index c4cc3165ab1..00000000000 Binary files a/sound/piano/F#5.ogg and /dev/null differ diff --git a/sound/piano/F#6.ogg b/sound/piano/F#6.ogg deleted file mode 100644 index 09420951163..00000000000 Binary files a/sound/piano/F#6.ogg and /dev/null differ diff --git a/sound/piano/F#7.ogg b/sound/piano/F#7.ogg deleted file mode 100644 index c37dc8fb37a..00000000000 Binary files a/sound/piano/F#7.ogg and /dev/null differ diff --git a/sound/piano/F#8.ogg b/sound/piano/F#8.ogg deleted file mode 100644 index 0241e9beaba..00000000000 Binary files a/sound/piano/F#8.ogg and /dev/null differ diff --git a/sound/piano/Fb1.ogg b/sound/piano/Fb1.ogg deleted file mode 100644 index fbcb29c2de9..00000000000 Binary files a/sound/piano/Fb1.ogg and /dev/null differ diff --git a/sound/piano/Fb2.ogg b/sound/piano/Fb2.ogg deleted file mode 100644 index 4cece2d9cd0..00000000000 Binary files a/sound/piano/Fb2.ogg and /dev/null differ diff --git a/sound/piano/Fb3.ogg b/sound/piano/Fb3.ogg deleted file mode 100644 index 3675271a157..00000000000 Binary files a/sound/piano/Fb3.ogg and /dev/null differ diff --git a/sound/piano/Fb4.ogg b/sound/piano/Fb4.ogg deleted file mode 100644 index 26087702274..00000000000 Binary files a/sound/piano/Fb4.ogg and /dev/null differ diff --git a/sound/piano/Fb5.ogg b/sound/piano/Fb5.ogg deleted file mode 100644 index f8016a6d247..00000000000 Binary files a/sound/piano/Fb5.ogg and /dev/null differ diff --git a/sound/piano/Fb6.ogg b/sound/piano/Fb6.ogg deleted file mode 100644 index 397714bdaae..00000000000 Binary files a/sound/piano/Fb6.ogg and /dev/null differ diff --git a/sound/piano/Fb7.ogg b/sound/piano/Fb7.ogg deleted file mode 100644 index d9f630f11d8..00000000000 Binary files a/sound/piano/Fb7.ogg and /dev/null differ diff --git a/sound/piano/Fb8.ogg b/sound/piano/Fb8.ogg deleted file mode 100644 index 28ae958d82d..00000000000 Binary files a/sound/piano/Fb8.ogg and /dev/null differ diff --git a/sound/piano/G#1.ogg b/sound/piano/G#1.ogg deleted file mode 100644 index 3ef68c0d87f..00000000000 Binary files a/sound/piano/G#1.ogg and /dev/null differ diff --git a/sound/piano/G#2.ogg b/sound/piano/G#2.ogg deleted file mode 100644 index 4d921693655..00000000000 Binary files a/sound/piano/G#2.ogg and /dev/null differ diff --git a/sound/piano/G#3.ogg b/sound/piano/G#3.ogg deleted file mode 100644 index 21a03c7805c..00000000000 Binary files a/sound/piano/G#3.ogg and /dev/null differ diff --git a/sound/piano/G#4.ogg b/sound/piano/G#4.ogg deleted file mode 100644 index 070ad2b4532..00000000000 Binary files a/sound/piano/G#4.ogg and /dev/null differ diff --git a/sound/piano/G#5.ogg b/sound/piano/G#5.ogg deleted file mode 100644 index 233256500fb..00000000000 Binary files a/sound/piano/G#5.ogg and /dev/null differ diff --git a/sound/piano/G#6.ogg b/sound/piano/G#6.ogg deleted file mode 100644 index 3c387fcfab0..00000000000 Binary files a/sound/piano/G#6.ogg and /dev/null differ diff --git a/sound/piano/G#7.ogg b/sound/piano/G#7.ogg deleted file mode 100644 index 4ba6c8b6581..00000000000 Binary files a/sound/piano/G#7.ogg and /dev/null differ diff --git a/sound/piano/G#8.ogg b/sound/piano/G#8.ogg deleted file mode 100644 index b847ab1c86b..00000000000 Binary files a/sound/piano/G#8.ogg and /dev/null differ diff --git a/sound/violin/A#1.mid b/sound/violin/A#1.mid deleted file mode 100644 index 693b73f5420..00000000000 Binary files a/sound/violin/A#1.mid and /dev/null differ diff --git a/sound/violin/A#2.mid b/sound/violin/A#2.mid deleted file mode 100644 index 40da5f3da15..00000000000 Binary files a/sound/violin/A#2.mid and /dev/null differ diff --git a/sound/violin/A#3.mid b/sound/violin/A#3.mid deleted file mode 100644 index 5bab6ccd636..00000000000 Binary files a/sound/violin/A#3.mid and /dev/null differ diff --git a/sound/violin/A#4.mid b/sound/violin/A#4.mid deleted file mode 100644 index dce830448ef..00000000000 Binary files a/sound/violin/A#4.mid and /dev/null differ diff --git a/sound/violin/A#5.mid b/sound/violin/A#5.mid deleted file mode 100644 index fda796e27b9..00000000000 Binary files a/sound/violin/A#5.mid and /dev/null differ diff --git a/sound/violin/A#6.mid b/sound/violin/A#6.mid deleted file mode 100644 index 9e5da684f43..00000000000 Binary files a/sound/violin/A#6.mid and /dev/null differ diff --git a/sound/violin/A#7.mid b/sound/violin/A#7.mid deleted file mode 100644 index 215c56cbe7e..00000000000 Binary files a/sound/violin/A#7.mid and /dev/null differ diff --git a/sound/violin/A#8.mid b/sound/violin/A#8.mid deleted file mode 100644 index 4b55c34691f..00000000000 Binary files a/sound/violin/A#8.mid and /dev/null differ diff --git a/sound/violin/B#1.mid b/sound/violin/B#1.mid deleted file mode 100644 index d83b176edd8..00000000000 Binary files a/sound/violin/B#1.mid and /dev/null differ diff --git a/sound/violin/B#2.mid b/sound/violin/B#2.mid deleted file mode 100644 index cddff75625f..00000000000 Binary files a/sound/violin/B#2.mid and /dev/null differ diff --git a/sound/violin/B#3.mid b/sound/violin/B#3.mid deleted file mode 100644 index 8bd7ec2fa9d..00000000000 Binary files a/sound/violin/B#3.mid and /dev/null differ diff --git a/sound/violin/B#4.mid b/sound/violin/B#4.mid deleted file mode 100644 index 4c7ab84b57b..00000000000 Binary files a/sound/violin/B#4.mid and /dev/null differ diff --git a/sound/violin/B#5.mid b/sound/violin/B#5.mid deleted file mode 100644 index d7f990b2d6c..00000000000 Binary files a/sound/violin/B#5.mid and /dev/null differ diff --git a/sound/violin/B#6.mid b/sound/violin/B#6.mid deleted file mode 100644 index e124ccb8e2b..00000000000 Binary files a/sound/violin/B#6.mid and /dev/null differ diff --git a/sound/violin/B#7.mid b/sound/violin/B#7.mid deleted file mode 100644 index 231c9e428db..00000000000 Binary files a/sound/violin/B#7.mid and /dev/null differ diff --git a/sound/violin/B#8.mid b/sound/violin/B#8.mid deleted file mode 100644 index 981943c08f0..00000000000 Binary files a/sound/violin/B#8.mid and /dev/null differ diff --git a/sound/violin/C#1.mid b/sound/violin/C#1.mid deleted file mode 100644 index 88dba851452..00000000000 Binary files a/sound/violin/C#1.mid and /dev/null differ diff --git a/sound/violin/C#2.mid b/sound/violin/C#2.mid deleted file mode 100644 index b510926b45f..00000000000 Binary files a/sound/violin/C#2.mid and /dev/null differ diff --git a/sound/violin/C#3.mid b/sound/violin/C#3.mid deleted file mode 100644 index 9954bbe478a..00000000000 Binary files a/sound/violin/C#3.mid and /dev/null differ diff --git a/sound/violin/C#4.mid b/sound/violin/C#4.mid deleted file mode 100644 index 2c5ff74db0a..00000000000 Binary files a/sound/violin/C#4.mid and /dev/null differ diff --git a/sound/violin/C#5.mid b/sound/violin/C#5.mid deleted file mode 100644 index e5850a3fd04..00000000000 Binary files a/sound/violin/C#5.mid and /dev/null differ diff --git a/sound/violin/C#6.mid b/sound/violin/C#6.mid deleted file mode 100644 index 217c0ad014c..00000000000 Binary files a/sound/violin/C#6.mid and /dev/null differ diff --git a/sound/violin/C#7.mid b/sound/violin/C#7.mid deleted file mode 100644 index ec32bdbf904..00000000000 Binary files a/sound/violin/C#7.mid and /dev/null differ diff --git a/sound/violin/C#8.mid b/sound/violin/C#8.mid deleted file mode 100644 index 555bce3db0d..00000000000 Binary files a/sound/violin/C#8.mid and /dev/null differ diff --git a/sound/violin/Cb1.mid b/sound/violin/Cb1.mid deleted file mode 100644 index a00f09dfb08..00000000000 Binary files a/sound/violin/Cb1.mid and /dev/null differ diff --git a/sound/violin/Cb2.mid b/sound/violin/Cb2.mid deleted file mode 100644 index 4085711bf12..00000000000 Binary files a/sound/violin/Cb2.mid and /dev/null differ diff --git a/sound/violin/Cb3.mid b/sound/violin/Cb3.mid deleted file mode 100644 index f647983ef05..00000000000 Binary files a/sound/violin/Cb3.mid and /dev/null differ diff --git a/sound/violin/Cb4.mid b/sound/violin/Cb4.mid deleted file mode 100644 index 24f22f09eec..00000000000 Binary files a/sound/violin/Cb4.mid and /dev/null differ diff --git a/sound/violin/Cb5.mid b/sound/violin/Cb5.mid deleted file mode 100644 index 057e97c5e0d..00000000000 Binary files a/sound/violin/Cb5.mid and /dev/null differ diff --git a/sound/violin/Cb6.mid b/sound/violin/Cb6.mid deleted file mode 100644 index 887e65fc13d..00000000000 Binary files a/sound/violin/Cb6.mid and /dev/null differ diff --git a/sound/violin/Cb7.mid b/sound/violin/Cb7.mid deleted file mode 100644 index 99668bc192c..00000000000 Binary files a/sound/violin/Cb7.mid and /dev/null differ diff --git a/sound/violin/Cb8.mid b/sound/violin/Cb8.mid deleted file mode 100644 index 53ea61d1b25..00000000000 Binary files a/sound/violin/Cb8.mid and /dev/null differ diff --git a/sound/violin/Cb9.mid b/sound/violin/Cb9.mid deleted file mode 100644 index 1e8c3afadf1..00000000000 Binary files a/sound/violin/Cb9.mid and /dev/null differ diff --git a/sound/violin/D#1.mid b/sound/violin/D#1.mid deleted file mode 100644 index 829e6fcf185..00000000000 Binary files a/sound/violin/D#1.mid and /dev/null differ diff --git a/sound/violin/D#2.mid b/sound/violin/D#2.mid deleted file mode 100644 index 66029b340cc..00000000000 Binary files a/sound/violin/D#2.mid and /dev/null differ diff --git a/sound/violin/D#3.mid b/sound/violin/D#3.mid deleted file mode 100644 index c982375941e..00000000000 Binary files a/sound/violin/D#3.mid and /dev/null differ diff --git a/sound/violin/D#4.mid b/sound/violin/D#4.mid deleted file mode 100644 index 016ed4f1edf..00000000000 Binary files a/sound/violin/D#4.mid and /dev/null differ diff --git a/sound/violin/D#5.mid b/sound/violin/D#5.mid deleted file mode 100644 index ddb511795df..00000000000 Binary files a/sound/violin/D#5.mid and /dev/null differ diff --git a/sound/violin/D#6.mid b/sound/violin/D#6.mid deleted file mode 100644 index b7242b9ab99..00000000000 Binary files a/sound/violin/D#6.mid and /dev/null differ diff --git a/sound/violin/D#7.mid b/sound/violin/D#7.mid deleted file mode 100644 index 773538340a5..00000000000 Binary files a/sound/violin/D#7.mid and /dev/null differ diff --git a/sound/violin/D#8.mid b/sound/violin/D#8.mid deleted file mode 100644 index 4ad074e173b..00000000000 Binary files a/sound/violin/D#8.mid and /dev/null differ diff --git a/sound/violin/E#1.mid b/sound/violin/E#1.mid deleted file mode 100644 index 3f130ee126c..00000000000 Binary files a/sound/violin/E#1.mid and /dev/null differ diff --git a/sound/violin/E#2.mid b/sound/violin/E#2.mid deleted file mode 100644 index f67c2d0a267..00000000000 Binary files a/sound/violin/E#2.mid and /dev/null differ diff --git a/sound/violin/E#3.mid b/sound/violin/E#3.mid deleted file mode 100644 index bb393382d6c..00000000000 Binary files a/sound/violin/E#3.mid and /dev/null differ diff --git a/sound/violin/E#4.mid b/sound/violin/E#4.mid deleted file mode 100644 index a96520c595d..00000000000 Binary files a/sound/violin/E#4.mid and /dev/null differ diff --git a/sound/violin/E#5.mid b/sound/violin/E#5.mid deleted file mode 100644 index d1378af1972..00000000000 Binary files a/sound/violin/E#5.mid and /dev/null differ diff --git a/sound/violin/E#6.mid b/sound/violin/E#6.mid deleted file mode 100644 index 7abe40bd824..00000000000 Binary files a/sound/violin/E#6.mid and /dev/null differ diff --git a/sound/violin/E#7.mid b/sound/violin/E#7.mid deleted file mode 100644 index df278c20d6b..00000000000 Binary files a/sound/violin/E#7.mid and /dev/null differ diff --git a/sound/violin/E#8.mid b/sound/violin/E#8.mid deleted file mode 100644 index 35254cd5b25..00000000000 Binary files a/sound/violin/E#8.mid and /dev/null differ diff --git a/sound/violin/F#1.mid b/sound/violin/F#1.mid deleted file mode 100644 index d18668e8911..00000000000 Binary files a/sound/violin/F#1.mid and /dev/null differ diff --git a/sound/violin/F#2.mid b/sound/violin/F#2.mid deleted file mode 100644 index 302f0c6fdc1..00000000000 Binary files a/sound/violin/F#2.mid and /dev/null differ diff --git a/sound/violin/F#3.mid b/sound/violin/F#3.mid deleted file mode 100644 index 1f592fc9039..00000000000 Binary files a/sound/violin/F#3.mid and /dev/null differ diff --git a/sound/violin/F#4.mid b/sound/violin/F#4.mid deleted file mode 100644 index 45854126f98..00000000000 Binary files a/sound/violin/F#4.mid and /dev/null differ diff --git a/sound/violin/F#5.mid b/sound/violin/F#5.mid deleted file mode 100644 index fb1e1da339a..00000000000 Binary files a/sound/violin/F#5.mid and /dev/null differ diff --git a/sound/violin/F#6.mid b/sound/violin/F#6.mid deleted file mode 100644 index bfa896bb784..00000000000 Binary files a/sound/violin/F#6.mid and /dev/null differ diff --git a/sound/violin/F#7.mid b/sound/violin/F#7.mid deleted file mode 100644 index a27763c1d47..00000000000 Binary files a/sound/violin/F#7.mid and /dev/null differ diff --git a/sound/violin/F#8.mid b/sound/violin/F#8.mid deleted file mode 100644 index aaab80a7276..00000000000 Binary files a/sound/violin/F#8.mid and /dev/null differ diff --git a/sound/violin/Fb1.mid b/sound/violin/Fb1.mid deleted file mode 100644 index c89b3f36b43..00000000000 Binary files a/sound/violin/Fb1.mid and /dev/null differ diff --git a/sound/violin/Fb2.mid b/sound/violin/Fb2.mid deleted file mode 100644 index 3db6af1aa45..00000000000 Binary files a/sound/violin/Fb2.mid and /dev/null differ diff --git a/sound/violin/Fb3.mid b/sound/violin/Fb3.mid deleted file mode 100644 index 5f601f3ac42..00000000000 Binary files a/sound/violin/Fb3.mid and /dev/null differ diff --git a/sound/violin/Fb4.mid b/sound/violin/Fb4.mid deleted file mode 100644 index f1abc8109d1..00000000000 Binary files a/sound/violin/Fb4.mid and /dev/null differ diff --git a/sound/violin/Fb5.mid b/sound/violin/Fb5.mid deleted file mode 100644 index 2ec1b2e5128..00000000000 Binary files a/sound/violin/Fb5.mid and /dev/null differ diff --git a/sound/violin/Fb6.mid b/sound/violin/Fb6.mid deleted file mode 100644 index b8bdf7fee07..00000000000 Binary files a/sound/violin/Fb6.mid and /dev/null differ diff --git a/sound/violin/Fb7.mid b/sound/violin/Fb7.mid deleted file mode 100644 index 51f5f1bcdb4..00000000000 Binary files a/sound/violin/Fb7.mid and /dev/null differ diff --git a/sound/violin/Fb8.mid b/sound/violin/Fb8.mid deleted file mode 100644 index 47928f38475..00000000000 Binary files a/sound/violin/Fb8.mid and /dev/null differ diff --git a/sound/violin/G#1.mid b/sound/violin/G#1.mid deleted file mode 100644 index b1b38856858..00000000000 Binary files a/sound/violin/G#1.mid and /dev/null differ diff --git a/sound/violin/G#2.mid b/sound/violin/G#2.mid deleted file mode 100644 index e827cfc635e..00000000000 Binary files a/sound/violin/G#2.mid and /dev/null differ diff --git a/sound/violin/G#3.mid b/sound/violin/G#3.mid deleted file mode 100644 index 57e1f76c976..00000000000 Binary files a/sound/violin/G#3.mid and /dev/null differ diff --git a/sound/violin/G#4.mid b/sound/violin/G#4.mid deleted file mode 100644 index 59e95a6d997..00000000000 Binary files a/sound/violin/G#4.mid and /dev/null differ diff --git a/sound/violin/G#5.mid b/sound/violin/G#5.mid deleted file mode 100644 index 9bd3436287b..00000000000 Binary files a/sound/violin/G#5.mid and /dev/null differ diff --git a/sound/violin/G#6.mid b/sound/violin/G#6.mid deleted file mode 100644 index 3c90af807e2..00000000000 Binary files a/sound/violin/G#6.mid and /dev/null differ diff --git a/sound/violin/G#7.mid b/sound/violin/G#7.mid deleted file mode 100644 index b51afd323c6..00000000000 Binary files a/sound/violin/G#7.mid and /dev/null differ diff --git a/sound/violin/G#8.mid b/sound/violin/G#8.mid deleted file mode 100644 index d3f5c898d47..00000000000 Binary files a/sound/violin/G#8.mid and /dev/null differ diff --git a/vgstation13.dme b/vgstation13.dme index 9bc9f39c791..5928ba3cecd 100644 --- a/vgstation13.dme +++ b/vgstation13.dme @@ -611,6 +611,7 @@ #include "code\game\objects\items\devices\fuse_bomb.dm" #include "code\game\objects\items\devices\handtv.dm" #include "code\game\objects\items\devices\holomap.dm" +#include "code\game\objects\items\devices\instruments.dm" #include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\maracas.dm" #include "code\game\objects\items\devices\mat_synth.dm" @@ -627,7 +628,6 @@ #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" #include "code\game\objects\items\devices\uplinks.dm" -#include "code\game\objects\items\devices\violin.dm" #include "code\game\objects\items\devices\whistle.dm" #include "code\game\objects\items\devices\PDA\apps.dm" #include "code\game\objects\items\devices\PDA\cart.dm"