diff --git a/aurorastation.dme b/aurorastation.dme index e38a9c0857d..1692e089496 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -474,6 +474,7 @@ #include "code\datums\components\_component.dm" #include "code\datums\components\connect_mob_behalf.dm" #include "code\datums\components\drift.dm" +#include "code\datums\components\jukebox.dm" #include "code\datums\components\large_object_transparency.dm" #include "code\datums\components\leanable.dm" #include "code\datums\components\local_network.dm" @@ -660,7 +661,6 @@ #include "code\game\base_turf.dm" #include "code\game\periodic_news.dm" #include "code\game\shuttle_engines.dm" -#include "code\game\sound.dm" #include "code\game\supplyshuttle.dm" #include "code\game\world.dm" #include "code\game\antagonist\_antagonist_setup.dm" @@ -1531,6 +1531,9 @@ #include "code\game\objects\structures\vr\human_chair.dm" #include "code\game\objects\structures\vr\mech_chair.dm" #include "code\game\objects\structures\vr\robot_chair.dm" +#include "code\game\sound\sound.dm" +#include "code\game\sound\sound_channels.dm" +#include "code\game\sound\sound_keys\sound_keys.dm" #include "code\game\turfs\simulated.dm" #include "code\game\turfs\turf.dm" #include "code\game\turfs\turf_changing.dm" diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 6f847c58562..64ee614ec83 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -120,7 +120,7 @@ Contains helper procs for airflow, handled in /connection_group. /mob/living/carbon/human/airflow_hit(atom/A) // for(var/mob/M in hearers(src)) // M.show_message(SPAN_DANGER("[src] slams into [A]!",1,"You hear a loud slam!"),2) - playsound(src.loc, /singleton/sound_category/punch_sound, 25, 1, -1) + playsound(src.loc, SFX_PUNCH, 25, 1, -1) if (prob(33)) loc:add_blood(src) bloody_body(src) diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index 0ff525dac5a..fa9dbfe78dc 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -85,7 +85,7 @@ /* * Stoppable timer cooldowns. - * Use indexes the same as the regular tiemr cooldowns. + * Use indexes the same as the regular timer cooldowns. * They make use of the TIMER_COOLDOWN_RUNNING() and TIMER_COOLDOWN_END() macros the same, just not the TIMER_COOLDOWN_START() one. * A bit more expensive than the regular timers, but can be reset before they end and the time left can be checked. */ diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 74468334a34..3e0354689c2 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -1,32 +1,36 @@ //max channel is 1024. Only go lower from here, because byond tends to pick the first available channel to play sounds on -#define CHANNEL_LOBBYMUSIC 1024 -#define CHANNEL_ADMIN 1023 -#define CHANNEL_VOX 1022 -#define CHANNEL_JUKEBOX 1021 -#define CHANNEL_HEARTBEAT 1020 //sound channel for heartbeats -#define CHANNEL_BOSS_MUSIC 1019 +#define CHANNEL_MASTER_VOLUME 1024 +#define CHANNEL_LOBBYMUSIC 1023 +#define CHANNEL_ADMIN 1022 +#define CHANNEL_VOX 1021 +#define CHANNEL_JUKEBOX 1020 +#define CHANNEL_HEARTBEAT 1019 //sound channel for heartbeats #define CHANNEL_AMBIENCE 1018 #define CHANNEL_BUZZ 1017 -#define CHANNEL_TRAITOR 1016 -#define CHANNEL_CHARGED_SPELL 1015 -#define CHANNEL_ELEVATOR 1014 +#define CHANNEL_SOUND_EFFECTS 1016 +#define CHANNEL_SOUND_FOOTSTEPS 1015 +#define CHANNEL_WEATHER 1014 +#define CHANNEL_MACHINERY 1013 +#define CHANNEL_INSTRUMENTS 1012 +#define CHANNEL_MOB_SOUNDS 1011 -///Default range of a sound. +/// Default range of a sound. #define SOUND_RANGE 17 #define MEDIUM_RANGE_SOUND_EXTRARANGE -5 -///default extra range for sounds considered to be quieter +/// Default extra range for sounds considered to be quieter #define SHORT_RANGE_SOUND_EXTRARANGE -9 -///The range deducted from sound range for things that are considered silent / sneaky +/// The range deducted from sound range for things that are considered silent / sneaky #define SILENCED_SOUND_EXTRARANGE -11 -///Percentage of sound's range where no falloff is applied -#define SOUND_DEFAULT_FALLOFF_DISTANCE 1 //For a normal sound this would be 1 tile of no falloff -///The default exponent of sound falloff +/// Percentage of sound's range where no falloff is applied +/// For a normal sound this would be 1 tile of no falloff +#define SOUND_DEFAULT_FALLOFF_DISTANCE 1 +/// The default exponent of sound falloff #define SOUND_FALLOFF_EXPONENT 6 //THIS SHOULD ALWAYS BE THE LOWEST ONE! //KEEP IT UPDATED -#define CHANNEL_HIGHEST_AVAILABLE 1015 +#define CHANNEL_HIGHEST_AVAILABLE 1011 #define MAX_INSTRUMENT_CHANNELS (128 * 6) @@ -83,3 +87,97 @@ #define SOUND_AREA_LAVALAND SOUND_ENVIRONMENT_MOUNTAINS #define SOUND_AREA_ICEMOON SOUND_ENVIRONMENT_CAVE #define SOUND_AREA_WOODFLOOR SOUND_ENVIRONMENT_CITY + +/** + * List of all of our sound keys. + * Used with /datum/sound_effect as the key. + * See also 'code\game\sound\sound_keys\sound_keys.dm' + */ +#define SFX_ANIMAL_BEAR "animal_bear" +#define SFX_ARCADE "arcade" +#define SFX_BODYFALL "bodyfall" +#define SFX_BODYFALL_MACHINE "bodyfall_machine" +#define SFX_BODYFALL_SKRELL "bodyfall_skrell" +#define SFX_BOTTLE_HIT_BROKEN "bottle_hit_broken" +#define SFX_BOTTLE_HIT_INTACT "bottle_hit_intact" +#define SFX_BREAK_CARDBOARD "break_cardboard" +#define SFX_BREAK_GLASS "break_glass" +#define SFX_BREAK_WOOD "break_wood" +#define SFX_BULLET_MISS "bullet_miss" +#define SFX_BUTTON "button" +#define SFX_CASING_DROP "casing_drop" +#define SFX_CASING_DROP_SHOTGUN "casing_drop_shotgun" +#define SFX_COMPUTER_BEEP "computer_beep" +#define SFX_COMPUTER_BOOP "computer_boop" +#define SFX_CROWBAR "crowbar" +#define SFX_DRILL_HIT "drill_hit" +#define SFX_DROP "drop" +#define SFX_ELECTRICAL_HUM "electrical_hum" +#define SFX_ELECTRICAL_SPARK "electrical_sparm" +#define SFX_EQUIP_SWORD "equip_sword" +#define SFX_EXPLOSION "explosion" +#define SFX_FOOTSTEP_ASTEROID "footstep_asteroid" +#define SFX_FOOTSTEP_BLANK "footstep_blank" +#define SFX_FOOTSTEP_CARPET "footstep_carpet" +#define SFX_FOOTSTEP_CATWALK "footstep_catwalk" +#define SFX_FOOTSTEP_CLOWN "footstep_clown" +#define SFX_FOOTSTEP_GRASS "footstep_grass" +#define SFX_FOOTSTEP_LAVA "footstep_lava" +#define SFX_FOOTSTEP_PLATING "footstep_plating" +#define SFX_FOOTSTEP_SAND "footstep_sand" +#define SFX_FOOTSTEP_SKRELL "footstep_skrell" +#define SFX_FOOTSTEP_SNOW "footstep_snow" +#define SFX_FOOTSTEP_TILES "footstep_tiles" +#define SFX_FOOTSTEP_UNATHI "footstep_unathi" +#define SFX_FOOTSTEP_WATER "footstep_water" +#define SFX_FOOTSTEP_WOOD "footstep_wood" +#define SFX_FRACTURE "fracture" +#define SFX_GLASS_CRACK "glass_crack" +#define SFX_GRAB "grab" +#define SFX_GUNSHOT_ANY "gunshot_any" +#define SFX_GUNSHOT_BALLISTIC "gunshot_ballistic" +#define SFX_GUNSHOT_ENERGY "gunshot_energy" +#define SFX_HAMMER "hammer" +#define SFX_HATCH_CLOSE "hatch_close" +#define SFX_HATCH_OPEN "hatch_open" +#define SFX_HISS "hiss" +#define SFX_HIVEBOT_MELEE "hivebot_melee" +#define SFX_HIVEBOT_WAIL "hivebot_wail" +#define SFX_KEYBOARD "keyboard" +#define SFX_OINTMENT "ointment" +#define SFX_OUT_OF_AMMO "out_of_ammo" +#define SFX_OUT_OF_AMMO_REVOLVER "out_of_ammo_revolver" +#define SFX_OUT_OF_AMMO_RIFLE "out_of_ammo_rifle" +#define SFX_OUT_OF_AMMO_SHOTGUN "out_of_ammo_shotgun" +#define SFX_PAGE_TURN "page_turn" +#define SFX_PICKAXE "pickaxe" +#define SFX_PICKUP "pickup" +#define SFX_PICKUP_SWORD "pickup_sword" +#define SFX_POUR "pour" +#define SFX_PRINT "print" +#define SFX_PUMP_SHOTGUN "pump_shotgun" +#define SFX_PUNCH "punch" +#define SFX_PUNCH_BASSY "punch_bassy" +#define SFX_PUNCH_MISS "punch_miss" +#define SFX_RELOAD_HMG "reload_hmg" +#define SFX_RELOAD_METAL_SLIDE "reload_metal_slide" +#define SFX_RELOAD_POLYMER_SLIDE "reload_polymer_slide" +#define SFX_RELOAD_REVOLVER "reload_revolver" +#define SFX_RELOAD_RIFLE_SLIDE "reload_rifle_slide" +#define SFX_RELOAD_SHOTGUN "reload_shotgun" +#define SFX_RIP "rip" +#define SFX_ROBOT_TALK "robot_talk" +#define SFX_RUSTLE "rustle" +#define SFX_SCREWDRIVER "screwdriver" +#define SFX_SHAKER_LID_OFF "shaker_lid_off" +#define SFX_SHAKER_SHAKING "shaker_shaking" +#define SFX_SHOOT_GAUSS "shoot_gauss" +#define SFX_SHOVEL "shovel" +#define SFX_SM_CALM "sm_calm" +#define SFX_SM_DELAM "sm_delam" +#define SFX_SPARKS "sfx_sparks" +#define SFX_STEAM_PIPE "steam_pipe" +#define SFX_SWING_HIT "swing_hit" +#define SFX_SWITCH "switch" +#define SFX_TRAY_HIT "tray_hit" +#define SFX_WIELD "wield" diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index c0832ebb15f..696bcf633e7 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -412,3 +412,17 @@ for(var/key in input) UNTYPED_LIST_ADD(keys, key) return keys + +/// Compare two lists, returns TRUE if they are the same +/proc/compare_list(list/l,list/d) + if(!islist(l) || !islist(d)) + return FALSE + + if(l.len != d.len) + return FALSE + + for(var/i in 1 to l.len) + if(l[i] != d[i]) + return FALSE + + return TRUE diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 9ff9fb2cd7d..4b9f7aacf71 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -129,6 +129,45 @@ var/real_round_start_time hourT = " and [hour] hour[(hour != 1)? "s":""]" return "[day] day[(day != 1)? "s":""][hourT][minuteT][secondT]" +/** + * Returns a text value of a given # of deciseconds in hours, minutes, or seconds. + * Returns time in style of 00, 00:00, OR 00:00:00. + */ +/proc/DisplayTimeTextDense(time_value, round_seconds_to = 0.1) + var/second = FLOOR_FLOAT(time_value * 0.1, round_seconds_to) + if(second < 60 && second > 9) + return "[second]" + else if (second < 10) + return "0[second]" + var/minute = FLOOR_FLOAT(second / 60, 1) + second = FLOOR_FLOAT(MODULUS(second, 60), round_seconds_to) + var/secondT + if(second) + if(second > 9) + secondT = "[second]" + else if(second) + secondT = "0[second]" + else + secondT = "00" + if(minute < 60 && minute > 9) + return "[minute]:[secondT]" + else if (minute < 10) + return "0[minute]:[secondT]" + var/hour = FLOOR_FLOAT(minute / 60, 1) + minute = MODULUS(minute, 60) + var/minuteT + if(minute) + if(minute > 9) + minuteT = "[minute]" + else if(minute) + minuteT = "0[minute]" + else + minuteT = "00" + if(hour > 9) + return "[hour]:[minuteT]:[secondT]" + else + return "0[hour]:[minuteT]:[secondT]" + /** * The current time on Adhomai */ diff --git a/code/controllers/subsystems/explosives.dm b/code/controllers/subsystems/explosives.dm index 9d67e2870d5..24c04df7b66 100644 --- a/code/controllers/subsystems/explosives.dm +++ b/code/controllers/subsystems/explosives.dm @@ -160,10 +160,10 @@ SUBSYSTEM_DEF(explosives) // If inside the blast radius + world.view - 2 if (dist <= closedist) to_chat(M, FONT_LARGE(SPAN_WARNING("You hear the sound of a nearby explosion coming from \the [explosion_dir]."))) - M.playsound_local(epicenter, get_sfx(/singleton/sound_category/explosion_sound), min(100, volume), vary = TRUE, falloff_distance = 5) + M.playsound_local(epicenter, SFX_EXPLOSION, min(100, volume), vary = TRUE, falloff_distance = 5) else if (dist > closedist && dist <= extendeddist) // People with sensitive hearing get a better idea of how far it is to_chat(M, FONT_LARGE(SPAN_WARNING("You hear the sound of a semi-close explosion coming from \the [explosion_dir]."))) - M.playsound_local(epicenter, get_sfx(/singleton/sound_category/explosion_sound), min(100, volume), vary = TRUE, falloff_distance = 5) + M.playsound_local(epicenter, SFX_EXPLOSION, min(100, volume), vary = TRUE, falloff_distance = 5) else //You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station. volume = M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', volume, vary = TRUE, falloff_distance = 1000, pressure_affected = TRUE) if(volume) @@ -323,7 +323,7 @@ SUBSYSTEM_DEF(explosives) var/close_dist = round(power + world.view - 2, 1) - var/sound/explosion_sound = sound(get_sfx(/singleton/sound_category/explosion_sound)) + var/sound/explosion_sound = sound(SFX_EXPLOSION) if(power >= 100) new /obj/effect/shockwave(epicenter, power / 60) diff --git a/code/controllers/subsystems/responseteam.dm b/code/controllers/subsystems/responseteam.dm index 6ffc9fb4543..7429af498ac 100644 --- a/code/controllers/subsystems/responseteam.dm +++ b/code/controllers/subsystems/responseteam.dm @@ -51,7 +51,7 @@ SUBSYSTEM_DEF(distress) ert_count++ feedback_inc("responseteam_count") - command_announcement.Announce("An emergency response team has picked up the distress signal. A specialized relief team will arrive shortly.", "[SSatlas.current_map.station_name] Distress Suite", 'sound/misc/announcements/security_level_old.ogg') + command_announcement.Announce("An emergency response team has picked up the distress signal. A specialized relief team will arrive shortly.", "[SSatlas.current_map.station_name] Distress Suite", 'sound/ai/announcements/security_level_old.ogg') if(forced_choice && forced_choice != "Random") for(var/datum/responseteam/R in available_teams) @@ -84,7 +84,7 @@ SUBSYSTEM_DEF(distress) ert_count++ feedback_inc("responseteam_count") - command_announcement.Announce("A distress beacon has been broadcasted to nearby vessels in the sector. Please remain calm and make preparations for the arrival of third parties.", "[SSatlas.current_map.station_name] Distress Suite", 'sound/misc/announcements/security_level_old.ogg', zlevels = requester.map_z) + command_announcement.Announce("A distress beacon has been broadcasted to nearby vessels in the sector. Please remain calm and make preparations for the arrival of third parties.", "[SSatlas.current_map.station_name] Distress Suite", 'sound/ai/announcements/security_level_old.ogg', zlevels = requester.map_z) log_and_message_admins("has launched a distress beacon from the [requester.name] with message: [distress_message].", user) var/datum/distress_beacon/beacon = new() diff --git a/code/controllers/subsystems/sounds.dm b/code/controllers/subsystems/sounds.dm index 2bc253c5af7..4e081fc0509 100644 --- a/code/controllers/subsystems/sounds.dm +++ b/code/controllers/subsystems/sounds.dm @@ -26,11 +26,30 @@ SUBSYSTEM_DEF(sounds) /// All valid sound files in the sound directory var/list/all_sounds + /** + # assoc list of datum by key + * k = SFX_KEY (see below) + * v = singleton sound_effect datum ref + * initialized in SSsounds init + */ + var/list/sfx_datum_by_key + /datum/controller/subsystem/sounds/Initialize() setup_available_channels() find_all_available_sounds() + init_sound_keys() return SS_INIT_SUCCESS +/datum/controller/subsystem/sounds/Recover() + using_channels = SSsounds.using_channels + using_channels_by_datum = SSsounds.using_channels_by_datum + channel_list = SSsounds.channel_list + reserved_channels = SSsounds.reserved_channels + channel_random_low = SSsounds.channel_random_low + channel_reserve_high = SSsounds.channel_reserve_high + all_sounds = SSsounds.all_sounds + sfx_datum_by_key = SSsounds.sfx_datum_by_key + /datum/controller/subsystem/sounds/proc/setup_available_channels() channel_list = list() reserved_channels = list() @@ -156,4 +175,11 @@ SUBSYSTEM_DEF(sounds) /datum/controller/subsystem/sounds/proc/available_channels_left() return length(channel_list) - random_channels_min +/datum/controller/subsystem/sounds/proc/init_sound_keys() + sfx_datum_by_key = list() + for(var/datum/sound_effect/sfx as anything in subtypesof(/datum/sound_effect)) + // this is for the assoc subtype + if(!isnull(sfx.key)) + sfx_datum_by_key[sfx.key] = new sfx() + #undef DATUMLESS diff --git a/code/datums/components/jukebox.dm b/code/datums/components/jukebox.dm new file mode 100644 index 00000000000..64f15bd8c6b --- /dev/null +++ b/code/datums/components/jukebox.dm @@ -0,0 +1,98 @@ +/** + * ## Jukebox datum + * + * Plays music to nearby mobs when hosted in a movable or a turf. + */ +/datum/jukebox + /// Atom that hosts the jukebox. Can be a turf or a movable. + VAR_FINAL/atom/parent + /// List of /datum/tracks we can play. + var/list/datum/track/playlist = list() + /// Current song track selected + var/datum/track/selection + /// Whether we're playing a track or not + var/playing = FALSE + /// Range at which the sound plays to players + var/sound_range = 7 + /// The sound token being played. + var/token = null + /// Volume to play at. + var/volume = 20 + +/** + * In the future, the music_cartridge item should be able to be inserted into jukeboxes, just like they are with earphones, to be able to control + * what songs are available on the playlist - i.e. crew members should be able to use their personal music cartridges in classic jukeboxes, etc. + * Further, earphones should be refactored to create datum/jukebox/single_mob instances and be otherwise interacted w/ just like freestanding jukeboxes. + * + * In practice, this turned out to be a gigantic pain in the ass due to difficulties in passing references to cartridge objs in and out of the component + * through TGUI- they kept getting nulled. Therefore, for the present, all jukeboxes have their available tracks set in their definitions, whereas + * earphones remain able to slot in and out cartridges. The old cartridge-based code for jukeboxes has been largely commented out. + */ + +/datum/jukebox/New(atom/new_parent, var/list/datum/track/parent_playlist, var/parent_sound_range, var/parent_volume) + if(!ismovable(new_parent) && !isturf(new_parent)) + stack_trace("[type] created on non-turf or non-movable: [new_parent ? "[new_parent] ([new_parent.type])" : "null"])") + qdel(src) + return + + parent = new_parent + + for(var/datum/track/track in parent_playlist) + var/datum/track/new_track = new() + new_track.song_name = track.song_name + new_track.song_path = file(track.song_path) + new_track.song_length = track.song_length + playlist[new_track.song_name] = new_track + + sound_range = parent_sound_range + volume = parent_volume + + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(parent_delete)) + +/datum/jukebox/Destroy() + QDEL_NULL(token) + parent = null + selection = null + token = null + playing = FALSE + playlist.Cut() + return ..() + +/// When our parent is deleted, we should go too. +/datum/jukebox/proc/parent_delete(datum/source) + SIGNAL_HANDLER + qdel(src) + +/datum/jukebox/proc/StopPlaying() + playing = FALSE + QDEL_NULL(token) + +/datum/jukebox/proc/StartPlaying() + StopPlaying() + if(!selection) + return + token = GLOB.sound_player.PlayLoopingSound(parent, src, selection.song_path, volume, sound_range, 1, prefer_mute = TRUE, sound_type = ASFX_MUSIC) + playing = TRUE + +/** + * Returns a set of general data relating to the jukebox for use in TGUI. + * + * Returns + * * A list of UI data + */ +/datum/jukebox/proc/get_ui_data() + var/list/data = list() + var/list/songs_data = list() + for(var/entry in playlist) + var/datum/track/one_song = playlist[entry] + var/song_name = one_song.song_name + var/song_length = one_song.song_length + UNTYPED_LIST_ADD(songs_data, list( \ + "name" = song_name, \ + "length" = DisplayTimeTextDense(song_length) + )) + data["active"] = !!playing + data["playlist"] = songs_data + data["selection"] = selection?.song_name + return data + diff --git a/code/datums/components/overhead_emote/overhead_emote_singleton.dm b/code/datums/components/overhead_emote/overhead_emote_singleton.dm index 14b70384519..8a89597efce 100644 --- a/code/datums/components/overhead_emote/overhead_emote_singleton.dm +++ b/code/datums/components/overhead_emote/overhead_emote_singleton.dm @@ -57,7 +57,7 @@ ABSTRACT_TYPE(/singleton/overhead_emote) INVOKE_ASYNC(reciprocator, TYPE_PROC_REF(/atom/movable, do_attack_animation), original, FIST_ATTACK_ANIMATION) INVOKE_ASYNC(original, TYPE_PROC_REF(/atom/movable, do_attack_animation), reciprocator, FIST_ATTACK_ANIMATION) - playsound(reciprocator.loc, /singleton/sound_category/punchmiss_sound, 30, 1) + playsound(reciprocator.loc, SFX_PUNCH_MISS, 30, 1) original_emote_component.remove_from_mob() diff --git a/code/datums/sound_player.dm b/code/datums/sound_player.dm index 52487a87b40..ee4b4699d62 100644 --- a/code/datums/sound_player.dm +++ b/code/datums/sound_player.dm @@ -1,15 +1,14 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new) -/* - A sound player/manager for looping 3D sound effects. - Due to how the BYOND sound engine works a sound datum must be played on a specific channel for updates to work properly. - If a channel is not assigned it will just result in a new sound effect playing, even if re-using the same datum instance. - We also use the channel to play a null-sound on Stop(), just in case BYOND clients don't like having a large nuber, albeit stopped, looping sounds. - As such there is a maximum limit of 1024 sound sources, with further limitations due to some channels already being potentially in use. - However, multiple sources may share the same sound_id and there is a best-effort attempt to play the closest source where possible. - The line above is currently a lie. Will probably just have to enforce moderately short sound ranges. -*/ - +/** + * A sound player/manager for looping 3D sound effects. + * Due to how the BYOND sound engine works a sound datum must be played on a specific channel for updates to work properly. + * If a channel is not assigned it will just result in a new sound effect playing, even if re-using the same datum instance. + * We also use the channel to play a null-sound on Stop(), just in case BYOND clients don't like having a large nuber, albeit stopped, looping sounds. + * As such there is a maximum limit of 1024 sound sources, with further limitations due to some channels already being potentially in use. + * However, multiple sources may share the same sound_id and there is a best-effort attempt to play the closest source where possible. + * The line above is currently a lie. Will probably just have to enforce moderately short sound ranges. + */ /singleton/sound_player var/list/taken_channels // taken_channels and source_id_uses can be merged into one but would then require a meta-object to store the different values I desire. var/list/sound_tokens_by_sound_id @@ -20,7 +19,7 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new) sound_tokens_by_sound_id = list() -//This can be called if either we're doing whole sound setup ourselves or it will be as part of from-file sound setup +/// This can be called if either we're doing whole sound setup ourselves or it will be as part of from-file sound setup /singleton/sound_player/proc/PlaySoundDatum(atom/source, sound_id, sound/sound, range, prefer_mute, sound_type = ASFX_AMBIENCE) var/token_type = isnum(sound.environment) ? /datum/sound_token : /datum/sound_token/static_environment return new token_type(source, sound_id, sound, range, prefer_mute, sound_type) @@ -80,20 +79,29 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new) #define SOUND_STOPPED FLAG(15) -/* - Outwardly this is a merely a toke/little helper that a user utilize to adjust sounds as desired (and possible). - In reality this is where the heavy-lifting happens. -*/ +/** + * Outwardly this is a merely a toke/little helper that a user utilize to adjust sounds as desired (and possible). + * In reality this is where the heavy-lifting happens. + */ /datum/sound_token - var/atom/source // Where the sound originates from - var/list/listeners // Assoc: Atoms hearing this sound, and their sound datum - var/range // How many turfs away the sound will stop playing completely - var/prefer_mute // If sound should be muted instead of stopped when mob moves out of range. In the general case this should be avoided because listeners will remain tracked. - var/sound/sound // Sound datum, holds most sound relevant data - var/sound_id // The associated sound id, used for cleanup - var/status = 0 // Paused, muted, running? Global for all listeners - var/listener_status// Paused, muted, running? Specific for the given listener. - var/sound_type // Type of sound this token is handling, it's set by default (arbitrarily) as ambience, gets set on init with the actual one if specified. + /// Where the sound originates from + var/atom/source + /// Assoc: Atoms hearing this sound, and their sound datum + var/list/listeners + /// How many turfs away the sound will stop playing completely + var/range + /// If sound should be muted instead of stopped when mob moves out of range. In the general case this should be avoided because listeners will remain tracked. + var/prefer_mute + /// Sound datum, holds most sound relevant data + var/sound/sound + /// The associated sound id, used for cleanup + var/sound_id + /// Paused, muted, running? Global for all listeners + var/status = 0 + /// Paused, muted, running? Specific for the given listener. + var/listener_status + /// Type of sound this token is handling, it's set by default (arbitrarily) as ambience, gets set on init with the actual one if specified. + var/sound_type /datum/sound_token/New(atom/source, sound_id, sound/sound, range = 4, prefer_mute = FALSE, sound_type = ASFX_AMBIENCE) @@ -150,7 +158,7 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new) /datum/sound_token/proc/Pause() PrivUpdateStatus(status|SOUND_PAUSED) -// Normally called Resume but I don't want to give people false hope about being unable to un-stop a sound +/// Normally called Resume but I don't want to give people false hope about being unable to un-stop a sound /datum/sound_token/proc/Unpause() PrivUpdateStatus(status & ~SOUND_PAUSED) @@ -187,7 +195,8 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new) PrivRemoveListener(listener) for(var/mob/listener in new_listeners) - if((listener.client?.prefs.sfx_toggles & sound_type) && (!isdeaf(listener))) //Only give the sound token if the listener has the preference for the type of token active, and is not deaf + // Only give the sound token if the listener has the preference for the type of token active, and is not deaf + if((listener.client?.prefs.sfx_toggles & sound_type) && (!isdeaf(listener))) PrivAddListener(listener) for(var/mob/listener in current_listeners) @@ -254,7 +263,8 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new) sound.status = status|listener_status[listener] if(update_sound) sound.status |= SOUND_UPDATE - if((listener.client?.prefs.sfx_toggles & sound_type) && (!isdeaf(listener))) //Send the sound only if the preference for the type of sound is set and is not deaf, otherwise remove the listener. + // Send the sound only if the preference for the type of sound is set and is not deaf, otherwise remove the listener. + if((listener.client?.prefs.sfx_toggles & sound_type) && (!isdeaf(listener))) sound_to(listener, sound) else PrivRemoveListener(listener) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index c7695eddc18..ee8f13ca737 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -339,8 +339,8 @@ desc = "A white cane, used by the visually impaired." icon = 'icons/obj/item/whitecane.dmi' icon_state = "whitecane" - drop_sound = /singleton/sound_category/generic_drop_sound - pickup_sound = /singleton/sound_category/generic_pickup_sound + drop_sound = SFX_DROP + pickup_sound = SFX_PICKUP extended_icon_state = "whitecane_extended" extended_item_state = "whitecane" retracted_icon_state = "whitecane" diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 26722db17d0..864f60e6e13 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -17,17 +17,17 @@ newscast = do_newscast print = do_print -/datum/announcement/priority/New(var/do_log = TRUE, var/new_sound = 'sound/misc/announcements/notice.ogg', var/do_newscast = TRUE, var/do_print = FALSE) +/datum/announcement/priority/New(var/do_log = TRUE, var/new_sound = 'sound/ai/announcements/notice.ogg', var/do_newscast = TRUE, var/do_print = FALSE) ..(do_log, new_sound, do_newscast, do_print) title = "Priority Announcement" announcement_type = "Priority Announcement" -/datum/announcement/priority/command/New(var/do_log = TRUE, var/new_sound = 'sound/misc/announcements/notice.ogg', var/do_newscast = FALSE, var/do_print = FALSE) +/datum/announcement/priority/command/New(var/do_log = TRUE, var/new_sound = 'sound/ai/announcements/notice.ogg', var/do_newscast = FALSE, var/do_print = FALSE) ..(do_log, new_sound, do_newscast, do_print) title = "[SSatlas.current_map.boss_name] Update" announcement_type = "[SSatlas.current_map.boss_name] Update" -/datum/announcement/priority/security/New(var/do_log = TRUE, var/new_sound = 'sound/misc/announcements/notice.ogg', var/do_newscast = TRUE, var/do_print = FALSE) +/datum/announcement/priority/security/New(var/do_log = TRUE, var/new_sound = 'sound/ai/announcements/notice.ogg', var/do_newscast = TRUE, var/do_print = FALSE) ..(do_log, new_sound, do_newscast, do_print) title = "Security Announcement" announcement_type = "Security Announcement" @@ -123,5 +123,5 @@ rank = character.mind.role_alt_title AnnounceArrivalSimple(character.real_name, rank, join_message) -/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "has arrived on the [SSatlas.current_map.station_type]", var/new_sound = 'sound/misc/announcements/notice.ogg') +/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "has arrived on the [SSatlas.current_map.station_type]", var/new_sound = 'sound/ai/announcements/notice.ogg') GLOB.global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcer") diff --git a/code/game/atom/atom_examine.dm b/code/game/atom/atom_examine.dm index 5e9dbab4c42..3f4a3d6a249 100644 --- a/code/game/atom/atom_examine.dm +++ b/code/game/atom/atom_examine.dm @@ -256,13 +256,13 @@ * Accepted style is SPAN_NOTICE for minor damage and SPAN_ALERT for anything worse. If the object's destruction * could have major adverse consequences, you might use SPAN_DANGER for critical damage. */ -/atom/proc/condition_hints() +/atom/proc/condition_hints(mob/user, distance, is_adjacent) . = list() /** * Should return a list() of regular strings. */ -/atom/proc/mechanics_hints() +/atom/proc/mechanics_hints(mob/user, distance, is_adjacent) . = list() /* diff --git a/code/game/gamemodes/cult/items/sword.dm b/code/game/gamemodes/cult/items/sword.dm index 75d49e36131..56c13be29ce 100644 --- a/code/game/gamemodes/cult/items/sword.dm +++ b/code/game/gamemodes/cult/items/sword.dm @@ -16,8 +16,8 @@ sharp = TRUE hitsound = 'sound/weapons/bladeslice.ogg' drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD var/does_cult_check = TRUE attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") diff --git a/code/game/gamemodes/cult/structures/pylon.dm b/code/game/gamemodes/cult/structures/pylon.dm index 68ab4594026..836ec062333 100644 --- a/code/game/gamemodes/cult/structures/pylon.dm +++ b/code/game/gamemodes/cult/structures/pylon.dm @@ -466,7 +466,7 @@ /obj/structure/cult/pylon/proc/shatter() visible_message(SPAN_DANGER("The pylon shatters into shards of crystal!"), SPAN_WARNING("You hear a tinkle of crystal shards.")) - playsound(get_turf(src), /singleton/sound_category/glass_break_sound, 75, 1) + playsound(get_turf(src), SFX_BREAK_GLASS, 75, 1) isbroken = TRUE if(pylonmode == PYLON_TURRET) //If the pylon had a soul in it then it plays a creepy evil sound as the soul is released diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index f99dacddef1..d19c6912e3d 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -167,7 +167,7 @@ suppressing = !suppressing user.visible_message(SPAN_NOTICE("\The [user] switches [suppressing ? "on" : "off"] \the [src]'s neural suppressor."), intent_message = BUTTON_FLICK) - playsound(loc, /singleton/sound_category/switch_sound, 50, 1) + playsound(loc, SFX_SWITCH, 50, 1) /** * Refreshes the icon state based on the table status diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 3fc517cbe24..d117cd436d7 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -112,7 +112,7 @@ pixel_x = 10; active_power_usage = 1500 //For heating/cooling rooms. 1000 joules equates to about 1 degree every 2 seconds for a single tile of air. power_channel = AREA_USAGE_ENVIRON req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_ENGINE_EQUIP) - clicksound = /singleton/sound_category/button_sound + clicksound = SFX_BUTTON clickvol = 30 obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED diff --git a/code/game/machinery/anti_bluespace.dm b/code/game/machinery/anti_bluespace.dm index 38c44e01c4e..e7d67efa379 100644 --- a/code/game/machinery/anti_bluespace.dm +++ b/code/game/machinery/anti_bluespace.dm @@ -35,7 +35,7 @@ GLOBAL_LIST_INIT_TYPED(bluespace_inhibitors, /obj/machinery/anti_bluespace, null /obj/machinery/anti_bluespace/emag_act() spark(src, 3) - playsound(src, /singleton/sound_category/spark_sound, 50, 1) + playsound(src, SFX_SPARKS, 50, 1) emp_act(EMP_HEAVY) return TRUE diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index d7df3d7904e..5c86848204f 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -791,7 +791,7 @@ EMAG/ILLEGAL else points -= totake use_power_oneoff(totake * 0.25) - playsound(src.loc, /singleton/sound_category/switch_sound, 50, 1) + playsound(src.loc, SFX_SWITCH, 50, 1) intent_message(PING_SOUND) if(ispath(recipe.object, /obj/item/reagent_containers/pill)) if(!made_container) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index d7635427858..9c027fd09f3 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -70,7 +70,7 @@ icon_state = "light[active]" /obj/machinery/button/switch/attack_hand() - playsound(src, /singleton/sound_category/switch_sound, 30) + playsound(src, SFX_BUTTON, 30) intent_message(BUTTON_FLICK, 5) //alternate button with the same functionality, except has a door control sprite instead diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index aff4c55cb63..a16d1e20265 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -321,7 +321,7 @@ //sparks spark(loc, 5) - playsound(loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(loc, SFX_SPARKS, 50, 1) /obj/machinery/camera/proc/set_status(var/newstatus) if (status != newstatus) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index f2d969fee46..751420ec77d 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -7,7 +7,7 @@ anchored = 1.0 idle_power_usage = 300 active_power_usage = 300 - clicksound = /singleton/sound_category/keyboard_sound + clicksound = SFX_KEYBOARD /// The path to the circuit board type. If circuit==null, the computer can't be disassembled. var/circuit = null diff --git a/code/game/machinery/computer/slotmachine.dm b/code/game/machinery/computer/slotmachine.dm index ecd8697a5a9..83d79bc54a9 100644 --- a/code/game/machinery/computer/slotmachine.dm +++ b/code/game/machinery/computer/slotmachine.dm @@ -125,7 +125,7 @@ if(!emagged) emmaged = TRUE spark(src, 3) - playsound(src, /singleton/sound_category/spark_sound, 50, 1) + playsound(src, SFX_SPARKS, 50, 1) return TRUE /obj/machinery/computer/slot_machine/ui_interact(mob/living/user) @@ -168,7 +168,7 @@ spin(usr) else if(href_list["refund"]) - playsound(src, /singleton/sound_category/button_sound, clickvol) + playsound(src, SFX_BUTTON, clickvol) if(balance > 0) give_payout(balance, usr) balance = 0 diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index b49e05f8c33..473fb8edecd 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -32,7 +32,7 @@ if(req_access.len || req_one_access.len) req_access = list() req_one_access = list() - playsound(src.loc, /singleton/sound_category/spark_sound, 100, 1) + playsound(src.loc, SFX_SPARKS, 100, 1) return 1 /obj/machinery/button/remote/attack_hand(mob/user as mob) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 07c58803317..dc87ec98d82 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1511,7 +1511,7 @@ About the new airlock wires panel: cutting = TRUE else if(istype(tool,/obj/item/melee/energy/blade) || istype(tool,/obj/item/melee/energy/sword)) cut_verb = "slicing" - cut_sound = /singleton/sound_category/spark_sound + cut_sound = SFX_SPARKS cut_delay *= 1 cutting = TRUE else if(istype(tool,/obj/item/surgery/circular_saw)) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 6ec36b9ebe5..d396896dc09 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -42,7 +42,7 @@ CC.amount = 2 CC.update_icon() src.density = FALSE - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) if(display_message) visible_message("[src] shatters!") qdel(src) @@ -176,7 +176,7 @@ if (istype(attacking_item, /obj/item/melee/energy/blade)) if(emag_act(10, user)) spark(src.loc, 5) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) playsound(src.loc, 'sound/weapons/blade.ogg', 50, 1) visible_message(SPAN_WARNING("The glass door was sliced open by [user]!")) return TRUE diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm index c8a94a1af4e..3f1f73e17a7 100644 --- a/code/game/machinery/floor_light.dm +++ b/code/game/machinery/floor_light.dm @@ -65,7 +65,7 @@ if(user.a_intent == I_HURT && !issmall(user)) if(!isnull(damaged) && !(stat & BROKEN)) visible_message(SPAN_DANGER("\The [user] smashes \the [src]!")) - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) update_icon() stat |= BROKEN else diff --git a/code/game/machinery/gumball.dm b/code/game/machinery/gumball.dm index 636db622e98..38ad7d4123b 100644 --- a/code/game/machinery/gumball.dm +++ b/code/game/machinery/gumball.dm @@ -96,7 +96,7 @@ /obj/machinery/gumballmachine/proc/smashgumball() icon_state = "[initialicon]_broken" - playsound(get_turf(src), /singleton/sound_category/glass_break_sound, 75, 1) + playsound(get_turf(src), SFX_BREAK_GLASS, 75, 1) if(amountleft) var/amountleftinside = amountleft for(var/i = 1; i<=amountleftinside; i++) diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 6455fd2b2d5..e9701cc66bc 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -1,54 +1,35 @@ -/datum/track - var/title - var/sound - -/datum/track/New(var/title_name, var/audio) - title = title_name - sound = audio - /obj/machinery/media/jukebox name = "jukebox" + desc = "A classic music player." icon = 'icons/obj/jukebox.dmi' icon_state = "jukebox-nopower" var/state_base = "jukebox" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE power_channel = AREA_USAGE_EQUIP - idle_power_usage = 10 - active_power_usage = 100 + idle_power_usage = 1000 + active_power_usage = 20000 clicksound = 'sound/machines/buttonbeep.ogg' - var/token = null - - var/playing = 0 - - var/datum/track/current_track + /// The actual music player datum that handles the music + var/datum/jukebox/music_player + /// The songs this jukebox starts with. var/list/datum/track/tracks = list( - new/datum/track("Beyond", 'sound/music/ambispace.ogg'), - new/datum/track("Clouds of Fire", 'sound/music/clouds.s3m'), - new/datum/track("D`Bert", 'sound/music/title2.ogg'), - new/datum/track("Uplift", 'sound/music/title3.ogg'), - new/datum/track("Uplift II", 'sound/music/title3mk2.ogg'), - new/datum/track("D`Fort", 'sound/music/song_game.ogg'), - new/datum/track("Floating", 'sound/music/main.ogg'), - new/datum/track("Endless Space", 'sound/music/space.ogg'), - new/datum/track("Scratch", 'sound/music/title1.ogg'), - new/datum/track("Suspenseful", 'sound/music/traitor.ogg'), - new/datum/track("Thunderdome", 'sound/music/THUNDERDOME.ogg') + new/datum/track("Scratch", 'sound/music/ingame/ss13/title1.ogg', 2 MINUTES + 30 SECONDS), + new/datum/track("D`Bert", 'sound/music/ingame/ss13/title2.ogg', 1 MINUTES + 58 SECONDS), + new/datum/track("Uplift", 'sound/music/ingame/ss13/title3.ogg', 3 MINUTES + 52 SECONDS), + new/datum/track("Uplift II", 'sound/music/ingame/ss13/title3mk2.ogg', 3 MINUTES + 59 SECONDS), + new/datum/track("Suspenseful", 'sound/music/ingame/ss13/traitor.ogg', 5 MINUTES + 30 SECONDS), + new/datum/track("Beyond", 'sound/music/ingame/ss13/ambispace.ogg', 3 MINUTES + 15 SECONDS), + new/datum/track("D`Fort", 'sound/music/ingame/ss13/song_game.ogg', 3 MINUTES + 50 SECONDS), + new/datum/track("Endless Space", 'sound/music/ingame/ss13/space.ogg', 3 MINUTES + 33 SECONDS), + new/datum/track("Thunderdome", 'sound/music/ingame/ss13/THUNDERDOME.ogg', 3 MINUTES + 22 SECONDS), + new/datum/track("Rise", 'sound/music/ingame/xanu/xanu_rock_1.ogg', 3 MINUTES + 3 SECONDS), + new/datum/track("Indulgence", 'sound/music/ingame/xanu/xanu_rock_2.ogg', 3 MINUTES + 7 SECONDS), + new/datum/track("Shimmer", 'sound/music/ingame/xanu/xanu_rock_3.ogg', 4 MINUTES + 30 SECONDS) ) + var/datum/track/selection -/obj/machinery/media/jukebox/Destroy() - StopPlaying() - return ..() - -/obj/machinery/media/jukebox/power_change() - ..() - if(!anchored) - stat &= ~NOPOWER - - if(stat & (NOPOWER|BROKEN) && playing) - StopPlaying() - update_icon() - +// GENERAL PROCS /obj/machinery/media/jukebox/update_icon() ClearOverlays() if(stat & (NOPOWER|BROKEN) || !anchored) @@ -58,16 +39,34 @@ icon_state = "[state_base]-nopower" return icon_state = state_base - if(playing) + if(music_player?.playing) if(emagged) AddOverlays("[state_base]-emagged") else AddOverlays("[state_base]-running") -/obj/machinery/media/jukebox/Topic(href, href_list) - if(..() || !(Adjacent(usr) || istype(usr, /mob/living/silicon))) - return +/obj/machinery/media/jukebox/feedback_hints(mob/user, distance, is_adjacent) + . += ..() + if(music_player?.playing) + . += "Now playing: [music_player.selection?.song_name]" +/obj/machinery/media/jukebox/power_change() + ..() + if(!anchored) + stat &= ~NOPOWER + + if(stat & (NOPOWER|BROKEN) && music_player?.playing) + StopPlaying() + + update_icon() + +/obj/machinery/media/jukebox/Destroy() + StopPlaying() + if(music_player) + qdel(music_player) + return ..() + +/obj/machinery/media/jukebox/attack_hand(mob/user as mob) if(!anchored) to_chat(usr, SPAN_WARNING("You must secure \the [src] first.")) return @@ -76,79 +75,89 @@ to_chat(usr, "\The [src] doesn't appear to function.") return - if(href_list["change_track"]) - for(var/datum/track/T in tracks) - if(T.title == href_list["title"]) - current_track = T - StartPlaying() - break - else if(href_list["stop"]) - StopPlaying() - else if(href_list["play"]) - if(emagged) - playsound(src.loc, 'sound/items/AirHorn.ogg', 100, 1) - for(var/mob/living/carbon/M in ohearers(6, src)) - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.get_hearing_protection() >= EAR_PROTECTION_MAJOR) - continue - M.sleeping = 0 - M.stuttering += 20 - M.ear_deaf += 30 - M.Weaken(3) - if(prob(30)) - M.Stun(10) - M.Paralyse(4) - else - M.make_jittery(500) - spawn(15) - explode() - else if(current_track == null) - to_chat(usr, "No track selected.") - else - StartPlaying() - - return 1 - -/obj/machinery/media/jukebox/interact(mob/user) - if(stat & (NOPOWER|BROKEN)) - to_chat(usr, "\The [src] doesn't appear to function.") - return + if(!music_player) + music_player = new(src, tracks, 7, 28) ui_interact(user) -/obj/machinery/media/jukebox/ui_interact(mob/user, ui_key = "jukebox", var/datum/nanoui/ui = null, var/force_open = 1) - var/title = "Music Player" - var/data[0] - - if(!(stat & (NOPOWER|BROKEN))) - data["current_track"] = current_track != null ? current_track.title : "" - data["playing"] = playing - - var/list/nano_tracks = new - for(var/datum/track/T in tracks) - nano_tracks[++nano_tracks.len] = list("track" = T.title) - - data["tracks"] = nano_tracks - - // update the ui if it exists, returns null if no ui is passed/found - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - // the ui does not exist, so we'll create a new() one - // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "jukebox.tmpl", title, 450, 600) - // when the ui is first opened this is the data it will use - ui.set_initial_data(data) - // open the new ui window - ui.open() - /obj/machinery/media/jukebox/attack_ai(mob/user as mob) if(!ai_can_interact(user)) return return src.attack_hand(user) -/obj/machinery/media/jukebox/attack_hand(var/mob/user as mob) - interact(user) +/obj/machinery/media/jukebox/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Jukebox", name) + ui.open() + +/obj/machinery/media/jukebox/ui_data(mob/user) + return music_player.get_ui_data() + +/obj/machinery/media/jukebox/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + switch(action) + if("play") + StartPlaying() + return TRUE + + if("stop") + StopPlaying() + return TRUE + + if("changeTrack") + if(!music_player) + to_chat(usr, "This object is somehow missing a music_player datum. Please report this message on the Github Issues tracker.") + return FALSE + if(QDELETED(src)) + return FALSE + selection = music_player.playlist[params["track"]] + music_player.selection = selection + StartPlaying() + return TRUE + +/obj/machinery/media/jukebox/attackby(obj/item/attacking_item, mob/user) + if(!istype(attacking_item, /obj/item/forensics)) + src.add_fingerprint(user) + + if(attacking_item.iswrench()) + if(music_player?.playing) + StopPlaying() + user.visible_message(SPAN_WARNING("[user] has [anchored ? "un" : ""]secured \the [src]."), "You [anchored ? "un" : ""]secure \the [src].") + anchored = !anchored + attacking_item.play_tool_sound(get_turf(src), 50) + power_change() + update_icon() + return TRUE + + else + return ..() + +/obj/machinery/media/jukebox/proc/StartPlaying() + StopPlaying() + if(music_player) + if(!music_player.selection) + return + music_player.StartPlaying() + update_use_power(POWER_USE_ACTIVE) + update_icon() + +/obj/machinery/media/jukebox/proc/StopPlaying() + if(music_player) + music_player.StopPlaying() + update_use_power(POWER_USE_IDLE) + update_icon() + +/obj/machinery/media/jukebox/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + StopPlaying() + visible_message(SPAN_DANGER("\The [src] makes a fizzling sound.")) + update_icon() + return 1 /obj/machinery/media/jukebox/proc/explode() walk_to(src,0) @@ -161,101 +170,42 @@ new /obj/effect/decal/cleanable/blood/oil(src.loc) qdel(src) -/obj/machinery/media/jukebox/attackby(obj/item/attacking_item, mob/user) - if(!istype(attacking_item, /obj/item/forensics)) - src.add_fingerprint(user) - - if(attacking_item.iswrench()) - if(playing) - StopPlaying() - user.visible_message(SPAN_WARNING("[user] has [anchored ? "un" : ""]secured \the [src]."), "You [anchored ? "un" : ""]secure \the [src].") - anchored = !anchored - attacking_item.play_tool_sound(get_turf(src), 50) - power_change() - update_icon() - return TRUE - return ..() - -/obj/machinery/media/jukebox/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - emagged = 1 - StopPlaying() - visible_message(SPAN_DANGER("\The [src] makes a fizzling sound.")) - update_icon() - return 1 - -/obj/machinery/media/jukebox/proc/StopPlaying() - QDEL_NULL(token) - - playing = 0 - update_use_power(POWER_USE_IDLE) - update_icon() - - -/obj/machinery/media/jukebox/proc/StartPlaying() - StopPlaying() - if(!current_track) - return - - token = GLOB.sound_player.PlayLoopingSound(src, src, current_track.sound, 30, 7, 1, prefer_mute = TRUE, sound_type = ASFX_MUSIC) - - playing = 1 - update_use_power(POWER_USE_ACTIVE) - update_icon() - -/obj/machinery/media/jukebox/phonograph - name = "phonograph" - desc = "Play that funky music..." - icon = 'icons/obj/jukebox.dmi' - icon_state = "record" - state_base = "record" - anchored = 0 - tracks = list( - new/datum/track("Boolean Sisters", 'sound/music/phonograph/boolean_sisters.ogg'), - new/datum/track("Electro Swing", 'sound/music/phonograph/electro_swing.ogg'), - new/datum/track("Jazz Instrumental", 'sound/music/phonograph/jazz_instrumental.ogg'), - new/datum/track("Le Swing", 'sound/music/phonograph/le_swing.ogg'), - new/datum/track("Posin'", 'sound/music/phonograph/posin.ogg') - ) - -/obj/machinery/media/jukebox/phonograph/update_icon() - ClearOverlays() - icon_state = state_base - if(playing) - AddOverlays("[state_base]-running") - +// DEFINITIONS /obj/machinery/media/jukebox/audioconsole name = "audioconsole" desc = "An Idris-designed jukebox for the 25th century. Unfortunately, someone made a mistake setting this one up. It isn't connected to the extranet and only plays the demo music it was pre-programmed with." icon = 'icons/obj/audioconsole.dmi' icon_state = "audioconsole-nopower" state_base = "audioconsole" - anchored = FALSE + idle_power_usage = 4000 + active_power_usage = 80000 tracks = list( - new/datum/track("Konyang Chill A", 'sound/music/lobby/konyang/konyang-1.ogg'), - new/datum/track("Konyang Chill B", 'sound/music/lobby/konyang/konyang-2.ogg'), - new/datum/track("Konyang Chill C", 'sound/music/lobby/konyang/konyang-3.ogg'), - new/datum/track("Konyang Chill D", 'sound/music/lobby/konyang/konyang-4.ogg'), - new/datum/track("Synthetic Future A", 'sound/music/lobby/adhomai/adhomai-1.ogg'), - new/datum/track("Synthetic Future B", 'sound/music/lobby/adhomai/adhomai-2.ogg'), - new/datum/track("Synthetic Future C", 'sound/music/lobby/adhomai/adhomai-3.ogg'), - new/datum/track("Synthetic Future D", 'sound/music/lobby/adhomai/adhomai-4.ogg'), - new/datum/track("Butterflies", 'sound/music/audioconsole/Butterflies.ogg'), - new/datum/track("That Ain't Chopin", 'sound/music/audioconsole/ThatAintChopin.ogg'), - new/datum/track("Don't Rush", 'sound/music/audioconsole/DontRush.ogg'), - new/datum/track("Phoron Will Make Us Rich", 'sound/music/audioconsole/PhoronWillMakeUsRich.ogg'), - new/datum/track("Amsterdam", 'sound/music/audioconsole/Amsterdam.ogg'), - new/datum/track("When", 'sound/music/audioconsole/When.ogg'), - new/datum/track("Number 0", 'sound/music/audioconsole/Number0.ogg'), - new/datum/track("The Pianist", 'sound/music/audioconsole/ThePianist.ogg'), - new/datum/track("Lips", 'sound/music/audioconsole/Lips.ogg'), - new/datum/track("Childhood", 'sound/music/audioconsole/Childhood.ogg') + new/datum/track("Butterflies", 'sound/music/ingame/scc/Butterflies.ogg', 3 MINUTES + 37 SECONDS), + new/datum/track("That Ain't Chopin", 'sound/music/ingame/scc/ThatAintChopin.ogg', 3 MINUTES + 29 SECONDS), + new/datum/track("Don't Rush", 'sound/music/ingame/scc/DontRush.ogg', 3 MINUTES + 56 SECONDS), + new/datum/track("Phoron Will Make Us Rich", 'sound/music/ingame/scc/PhoronWillMakeUsRich.ogg', 2 MINUTES + 14 SECONDS), + new/datum/track("Amsterdam", 'sound/music/ingame/scc/Amsterdam.ogg', 3 MINUTES + 42 SECONDS), + new/datum/track("When", 'sound/music/ingame/scc/When.ogg', 2 MINUTES + 41 SECONDS), + new/datum/track("Number 0", 'sound/music/ingame/scc/Number0.ogg', 2 MINUTES + 37 SECONDS), + new/datum/track("The Pianist", 'sound/music/ingame/scc/ThePianist.ogg', 4 MINUTES + 25 SECONDS), + new/datum/track("Lips", 'sound/music/ingame/scc/Lips.ogg', 3 MINUTES + 20 SECONDS), + new/datum/track("Childhood", 'sound/music/ingame/scc/Childhood.ogg', 2 MINUTES + 13 SECONDS), + new/datum/track("Konyang Vibes #1", 'sound/music/ingame/konyang/konyang-1.ogg', 2 MINUTES + 59 SECONDS), + new/datum/track("Konyang Vibes #2", 'sound/music/ingame/konyang/konyang-2.ogg', 2 MINUTES + 58 SECONDS), + new/datum/track("Konyang Vibes #3", 'sound/music/ingame/konyang/konyang-3.ogg', 2 MINUTES + 43 SECONDS), + new/datum/track("Konyang Vibes #4", 'sound/music/ingame/konyang/konyang-4.ogg', 3 MINUTES + 8 SECONDS) ) /obj/machinery/media/jukebox/audioconsole/update_icon() ClearOverlays() + if(stat & (NOPOWER|BROKEN) || !anchored) + if(stat & BROKEN) + icon_state = "[state_base]-broken" + else + icon_state = "[state_base]-nopower" + return icon_state = state_base - if(playing) + if(music_player?.playing) AddOverlays("[state_base]-running") /obj/machinery/media/jukebox/audioconsole/wall @@ -263,23 +213,57 @@ density = FALSE anchored = TRUE +// Old-timey phonograph. +/obj/machinery/media/jukebox/phonograph + name = "phonograph" + desc = "Play that funky music..." + icon = 'icons/obj/jukebox.dmi' + icon_state = "record" + state_base = "record" + tracks = list( + new/datum/track("Boolean Sisters", 'sound/music/ingame/adhomai/boolean_sisters.ogg', 3 MINUTES + 17 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Electro Swing", 'sound/music/ingame/adhomai/electro_swing.ogg', 3 MINUTES + 18 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Le Swing", 'sound/music/ingame/adhomai/le_swing.ogg', 2 MINUTES + 11 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Posin", 'sound/music/ingame/adhomai/posin.ogg', 2 MINUTES + 50 SECONDS, /obj/item/music_cartridge/adhomai_swing) + ) + +/obj/machinery/media/jukebox/phonograph/update_icon() + ClearOverlays() + icon_state = state_base + if(music_player?.playing) + AddOverlays("[state_base]-running") + /obj/machinery/media/jukebox/gramophone name = "gramophone" desc = "Play that vintage music!" icon = 'icons/obj/jukebox.dmi' icon_state = "gramophone" state_base = "gramophone" - anchored = 0 tracks = list( - new/datum/track("Boolean Sisters", 'sound/music/phonograph/boolean_sisters.ogg'), - new/datum/track("Electro Swing", 'sound/music/phonograph/electro_swing.ogg'), - new/datum/track("Jazz Instrumental", 'sound/music/phonograph/jazz_instrumental.ogg'), - new/datum/track("Le Swing", 'sound/music/phonograph/le_swing.ogg'), - new/datum/track("Posin'", 'sound/music/phonograph/posin.ogg') + new/datum/track("Boolean Sisters", 'sound/music/ingame/adhomai/boolean_sisters.ogg', 3 MINUTES + 17 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Electro Swing", 'sound/music/ingame/adhomai/electro_swing.ogg', 3 MINUTES + 18 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Le Swing", 'sound/music/ingame/adhomai/le_swing.ogg', 2 MINUTES + 11 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Posin", 'sound/music/ingame/adhomai/posin.ogg', 2 MINUTES + 50 SECONDS, /obj/item/music_cartridge/adhomai_swing) ) /obj/machinery/media/jukebox/gramophone/update_icon() ClearOverlays() icon_state = state_base - if(playing) + if(music_player?.playing) AddOverlays("[state_base]-running") + +/obj/machinery/media/jukebox/calliope + name = "calliope" + desc = "A steam powered music instrument. This one is painted in bright colors." + icon = 'maps/away/ships/tajara/circus/circus_sprites.dmi' + icon_state = "calliope" + state_base = "calliope" + tracks = list( + new/datum/track("Boolean Sisters", 'sound/music/ingame/adhomai/boolean_sisters.ogg', 3 MINUTES + 17 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Electro Swing", 'sound/music/ingame/adhomai/electro_swing.ogg', 3 MINUTES + 18 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Le Swing", 'sound/music/ingame/adhomai/le_swing.ogg', 2 MINUTES + 11 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Posin", 'sound/music/ingame/adhomai/posin.ogg', 2 MINUTES + 50 SECONDS, /obj/item/music_cartridge/adhomai_swing) + ) + +/obj/machinery/media/jukebox/calliope/update_icon() + return diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index b75e62472ea..df1e5992c03 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -46,7 +46,7 @@ set_light(FALSE) /obj/machinery/light_switch/attack_hand(mob/user) - playsound(src, /singleton/sound_category/switch_sound, 30) + playsound(src, SFX_SWITCH, 30) on = !on sync_lights() intent_message(BUTTON_FLICK, 5) @@ -169,7 +169,7 @@ handle_preset_color(choice) /obj/machinery/light_switch/idris/proc/handle_power_toggle() - playsound(src, /singleton/sound_category/switch_sound, 30) + playsound(src, SFX_SWITCH, 30) on = !on sync_lights() intent_message(BUTTON_FLICK, 5) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index c674ba28bc6..24062854376 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -522,7 +522,7 @@ Class Procs: else return FALSE /obj/machinery/proc/dismantle() - playsound(loc, /singleton/sound_category/crowbar_sound, 50, 1) + playsound(loc, SFX_CROWBAR, 50, 1) var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(loc) M.set_dir(src.dir) M.state = 3 @@ -536,7 +536,7 @@ Class Procs: return TRUE -/obj/machinery/proc/print(var/obj/paper, var/play_sound = 1, var/print_sfx = /singleton/sound_category/print_sound, var/print_delay = 10, var/message, var/mob/user) +/obj/machinery/proc/print(var/obj/paper, var/play_sound = 1, var/print_sfx = SFX_PRINT, var/print_delay = 10, var/message, var/mob/user) if( printing ) return FALSE diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index f9cc8e29de2..6e5a22ad475 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -892,7 +892,7 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/machinery/newscaster, list()) for (var/mob/O in hearers(5, src.loc)) O.show_message("[user.name] smashes the [src.name]!" ) src.isbroken=1 - playsound(src.loc, /singleton/sound_category/glass_break_sound, 100, 1) + playsound(src.loc, SFX_BREAK_GLASS, 100, 1) else for (var/mob/O in hearers(5, src.loc)) O.show_message("[user.name] forcefully slams the [src.name] with the [attacking_item.name]!" ) @@ -1074,7 +1074,7 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/machinery/newscaster, list()) if(curr_page == 0) //We're at the start, get to the middle src.screen=1 src.curr_page++ - playsound(src.loc, /singleton/sound_category/page_sound, 50, 1) + playsound(src.loc, SFX_PAGE_TURN, 50, 1) else if(href_list["prev_page"]) if(curr_page == 0) @@ -1086,7 +1086,7 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/machinery/newscaster, list()) if(curr_page == src.pages+1) //we're at the end, let's go back to the middle. src.screen = 1 src.curr_page-- - playsound(src.loc, /singleton/sound_category/page_sound, 50, 1) + playsound(src.loc, SFX_PAGE_TURN, 50, 1) if (istype(src.loc, /mob)) src.attack_self(src.loc) @@ -1147,7 +1147,7 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/machinery/newscaster, list()) NEWSPAPER.news_content += FC if(SSnews.wanted_issue) NEWSPAPER.important_message = SSnews.wanted_issue - playsound(src.loc, 'sound/bureaucracy/print.ogg', 75, 1) + playsound(src.loc, 'sound/items/bureaucracy/print.ogg', 75, 1) usr.put_in_hands(NEWSPAPER) src.paper_remaining-- return diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 22d517d790d..268a850cb81 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -6,7 +6,7 @@ anchored = FALSE density = TRUE use_power = POWER_USE_OFF - clicksound = /singleton/sound_category/switch_sound + clicksound = SFX_SWITCH var/on = FALSE /// Currently heating or cooling the environment, if on. var/active = 0 diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 288428b821b..94147965514 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -234,7 +234,7 @@ protected = 1 if(!protected) - playsound(src.loc, /singleton/sound_category/spark_sound, 75, 1, -1) + playsound(src.loc, SFX_SPARKS, 75, 1, -1) to_chat(user, SPAN_WARNING("You try to touch the controls but you get zapped. There must be a short circuit somewhere.")) return*/ else //welp, the guy is protected, we can continue @@ -260,7 +260,7 @@ protected = 1 if(!protected) - playsound(src.loc, /singleton/sound_category/spark_sound, 75, 1, -1) + playsound(src.loc, SFX_SPARKS, 75, 1, -1) to_chat(user, SPAN_WARNING("You try to touch the controls but you get zapped. There must be a short circuit somewhere.")) return*/ else diff --git a/code/game/machinery/vending/_vending.dm b/code/game/machinery/vending/_vending.dm index 13eb4130760..275e32d690d 100644 --- a/code/game/machinery/vending/_vending.dm +++ b/code/game/machinery/vending/_vending.dm @@ -61,7 +61,7 @@ layer = STRUCTURE_LAYER anchored = 1 density = 1 - clicksound = /singleton/sound_category/button_sound + clicksound = SFX_BUTTON manufacturer = "idris" // Every vending machine has one of these. diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 091690ede4b..60b3a032be4 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -5,7 +5,7 @@ icon_state = "wm_10" density = 1 anchored = TRUE - clicksound = /singleton/sound_category/button_sound + clicksound = SFX_BUTTON clickvol = 40 var/state = 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index fad88c059e9..f6a5c58f4d9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -16,7 +16,7 @@ var/burning /// Generic hit sound - var/hitsound = /singleton/sound_category/swing_hit_sound + var/hitsound = SFX_SWING_HIT var/storage_cost @@ -147,9 +147,9 @@ /// Sound used when equipping the item into a valid slot var/equip_sound = null /// Sound uses when picking the item up (into your hands) - var/pickup_sound = /singleton/sound_category/generic_pickup_sound + var/pickup_sound = SFX_PICKUP /// Sound uses when dropping the item, or when its thrown. - var/drop_sound = /singleton/sound_category/generic_drop_sound + var/drop_sound = SFX_DROP var/list/armor /// How fast armor will degrade, multiplier to blocked damage to get armor damage value. diff --git a/code/game/objects/items/base_planning_blueprints.dm b/code/game/objects/items/base_planning_blueprints.dm index 1a90abd5087..901357ea726 100644 --- a/code/game/objects/items/base_planning_blueprints.dm +++ b/code/game/objects/items/base_planning_blueprints.dm @@ -40,7 +40,7 @@ anchored = FALSE icon_state = "blueprints" - playsound(loc, 'sound/bureaucracy/paperfold.ogg', 50, TRUE) + playsound(loc, 'sound/items/bureaucracy/paperfold.ogg', 50, TRUE) /obj/item/base_planning_blueprints/attack_hand(mob/user) if(folded) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 3e86e1f6e82..953ea2b864b 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -87,7 +87,7 @@ if (t) src.name = "body bag - " src.name += t - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + playsound(src, pick('sound/items/bureaucracy/pen1.ogg','sound/items/bureaucracy/pen2.ogg'), 20) LAZYADD(overlays, image(icon, "bodybag_label")) else src.name = "body bag" diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm index 0927e464427..022d30524fe 100644 --- a/code/game/objects/items/devices/debugger.dm +++ b/code/game/objects/items/devices/debugger.dm @@ -10,7 +10,7 @@ throwforce = 5 throw_range = 15 throw_speed = 3 - hitsound = /singleton/sound_category/switch_sound + hitsound = SFX_SWITCH matter = list(MATERIAL_PLASTIC = 50, DEFAULT_WALL_MATERIAL = 50, MATERIAL_GLASS = 20) origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) diff --git a/code/game/objects/items/devices/lighting/lamp.dm b/code/game/objects/items/devices/lighting/lamp.dm index 85967abc7d8..a6d9f93d811 100644 --- a/code/game/objects/items/devices/lighting/lamp.dm +++ b/code/game/objects/items/devices/lighting/lamp.dm @@ -9,7 +9,7 @@ power_use = FALSE on = TRUE slot_flags = 0 //No wearing desklamps - toggle_sound = /singleton/sound_category/switch_sound + toggle_sound = SFX_SWITCH activation_sound = 'sound/effects/lighton.ogg' light_system = MOVABLE_LIGHT light_range = 3 diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index ac3aa514b2e..3d4e158c98f 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -244,7 +244,7 @@ /obj/item/device/lightreplacer/emag_act(var/remaining_charges, var/mob/user) emagged = !emagged - playsound(src.loc, /singleton/sound_category/spark_sound, 100, 1) + playsound(src.loc, SFX_SPARKS, 100, 1) update_icon() return 1 diff --git a/code/game/objects/items/devices/memorywiper.dm b/code/game/objects/items/devices/memorywiper.dm index 3721dd33f80..635c7e00ad4 100644 --- a/code/game/objects/items/devices/memorywiper.dm +++ b/code/game/objects/items/devices/memorywiper.dm @@ -72,7 +72,7 @@ if(attached) to_chat(user, SPAN_NOTICE("You initialize the memory wipe protocols. This procedure will take approximately 30 seconds.")) to_chat(attached, SPAN_WARNING("The computer hums to life and you feel your memories bleed away into nothingness.")) - playsound(src.loc, /singleton/sound_category/keyboard_sound, 30, TRUE) + playsound(src.loc, SFX_KEYBOARD, 30, TRUE) wiping = TRUE update_icon() if(wipe_bar) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 5c9de85a56f..289d5b2c9de 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -55,7 +55,7 @@ var/global/list/default_interrogation_channels = list( /// Automatically set on initialize, only update if bypass_default_internal is set to TRUE var/list/internal_channels /// played sound on usage - var/clicksound = /singleton/sound_category/button_sound + var/clicksound = SFX_BUTTON /// volume of clicksound var/clickvol = 10 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9a32f6dd45c..15b9d486f43 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -744,7 +744,7 @@ BREATH ANALYZER /obj/item/device/advanced_healthanalyzer/cyborg/print_scan(var/mob/M, var/mob/living/user) var/obj/item/paper/medscan/R = new /obj/item/paper/medscan(src, connected.format_occupant_data(get_occupant_data(M)), "Scan ([M.name]) ([worldtime2text()])", M) user.visible_message(SPAN_NOTICE("\The [src] beeps, printing \the [R] after a moment.")) - playsound(user.loc, /singleton/sound_category/print_sound, 50, 1) + playsound(user.loc, SFX_PRINT, 50, 1) R.forceMove(user.loc) /obj/item/device/advanced_healthanalyzer/proc/get_occupant_data(var/mob/living/carbon/human/H) diff --git a/code/game/objects/items/devices/versebook.dm b/code/game/objects/items/devices/versebook.dm index ec5cea5c5dd..f0f3ade7b6f 100644 --- a/code/game/objects/items/devices/versebook.dm +++ b/code/game/objects/items/devices/versebook.dm @@ -27,7 +27,7 @@ reading = TRUE //begin reading user.visible_message(SPAN_NOTICE("[user] begins to flip through [src].")) - playsound(loc, 'sound/bureaucracy/bookopen.ogg', 50, 1) + playsound(loc, 'sound/items/bureaucracy/bookopen.ogg', 50, 1) var/q // recycled from tip of the day code. it just works!(TM) q = pick(randomquip) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index a8e5ccdb44a..7ff987f9c49 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -121,7 +121,7 @@ Contains: origin_tech = list(TECH_BIO = 1) heal_brute = 4 icon_has_variants = TRUE - apply_sounds = /singleton/sound_category/rip_sound + apply_sounds = SFX_RIP drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' @@ -197,7 +197,7 @@ Contains: heal_burn = 4 origin_tech = list(TECH_BIO = 1) icon_has_variants = TRUE - apply_sounds = /singleton/sound_category/ointment_sound + apply_sounds = SFX_OINTMENT drop_sound = 'sound/items/drop/herb.ogg' pickup_sound = 'sound/items/pickup/herb.ogg' @@ -248,7 +248,7 @@ Contains: icon_state = "traumakit" heal_brute = 8 origin_tech = list(TECH_BIO = 1) - apply_sounds = /singleton/sound_category/rip_sound + apply_sounds = SFX_RIP applied_sounds = 'sound/items/advkit.ogg' automatic_charge_overlays = TRUE @@ -324,7 +324,7 @@ Contains: icon_state = "burnkit" heal_burn = 8 origin_tech = list(TECH_BIO = 1) - apply_sounds = /singleton/sound_category/ointment_sound + apply_sounds = SFX_OINTMENT applied_sounds = 'sound/items/advkit.ogg' automatic_charge_overlays = TRUE diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index bba8b5050d4..f260c06af35 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -618,8 +618,8 @@ icon_state = "katana" item_state = "katana" drop_sound = 'sound/items/drop/gun.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD obj_flags = OBJ_FLAG_CONDUCTABLE slot_flags = SLOT_BELT | SLOT_BACK force = 11 @@ -1413,7 +1413,7 @@ /obj/item/toy/desk var/on = FALSE - var/activation_sound = /singleton/sound_category/switch_sound + var/activation_sound = SFX_SWITCH /obj/item/toy/desk/update_icon() if(on) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 79a6a18fe7d..1053d9d7eb3 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -90,7 +90,7 @@ /obj/item/trash/waffles name = "square tray" icon_state = "waffles" - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT /obj/item/trash/plate name = "plate" @@ -122,7 +122,7 @@ /obj/item/trash/tray name = "tray" icon_state = "tray" - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT /obj/item/trash/candle name = "candle" @@ -159,7 +159,7 @@ /obj/item/trash/brownies name = "square tray" icon_state = "brownies" - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT /obj/item/trash/snacktray name = "snacktray" @@ -206,7 +206,7 @@ /obj/item/trash/grease //used for generic plattered food. example is lasagna. name = "square tray" icon_state = "grease" - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT /obj/item/trash/cookiesnack name = "\improper Carps Ahoy! miniature cookies" diff --git a/code/game/objects/items/umbrella.dm b/code/game/objects/items/umbrella.dm index ec60d8fa6cf..2e3b2311241 100644 --- a/code/game/objects/items/umbrella.dm +++ b/code/game/objects/items/umbrella.dm @@ -34,7 +34,7 @@ force = 1 sharp = FALSE attack_verb = list("taps") - hitsound = /singleton/sound_category/punchmiss_sound + hitsound = SFX_PUNCH_MISS else to_chat(user, SPAN_NOTICE("You close up \the [src].")) item_state = "umbrella_[umbrella_color]_closed" diff --git a/code/game/objects/items/vaurca.dm b/code/game/objects/items/vaurca.dm index b849c9e4e3b..195223afa29 100644 --- a/code/game/objects/items/vaurca.dm +++ b/code/game/objects/items/vaurca.dm @@ -147,7 +147,7 @@ drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' use_sound = 'sound/items/storage/wrapper.ogg' - open_sound = /singleton/sound_category/rip_sound + open_sound = SFX_RIP open_message = "You tear open the bag, breaking the vacuum seal." make_exact_fit = TRUE diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm index 161c3273963..b5fa54fac72 100644 --- a/code/game/objects/items/weapons/autopsy.dm +++ b/code/game/objects/items/weapons/autopsy.dm @@ -145,7 +145,7 @@ for(var/mob/O in viewers(usr)) O.show_message(SPAN_NOTICE("\The [src] rattles and prints out a sheet of paper."), 1) - playsound(loc, 'sound/bureaucracy/print_short.ogg', 50, 1) + playsound(loc, 'sound/items/bureaucracy/print_short.ogg', 50, 1) sleep(10) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 50294f66ddd..1d239dbe11a 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -548,8 +548,8 @@ desc = "A high-tech holocard displaying the blood-chilling credentials of an Internal Affairs agent." icon_state = "ccia" overlay_state = "ccia" - drop_sound = /singleton/sound_category/generic_drop_sound - pickup_sound = /singleton/sound_category/generic_pickup_sound + drop_sound = SFX_DROP + pickup_sound = SFX_PICKUP vertical_card = TRUE /obj/item/card/id/ccia/update_icon() diff --git a/code/game/objects/items/weapons/grenades/fake_grenade.dm b/code/game/objects/items/weapons/grenades/fake_grenade.dm index 3d1322b03a1..fe68e65015f 100644 --- a/code/game/objects/items/weapons/grenades/fake_grenade.dm +++ b/code/game/objects/items/weapons/grenades/fake_grenade.dm @@ -6,5 +6,5 @@ /obj/item/grenade/fake/prime() active = 0 - playsound(src.loc, get_sfx(/singleton/sound_category/explosion_sound), 50, 1, 30) + playsound(src.loc, SFX_EXPLOSION, 50, 1, 30) icon_state = "frag" diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index d8fd0cb0c32..201f01f9e9b 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -1585,6 +1585,6 @@ if(src.dat) user << browse(HTML_SKELETON("Penned by [author].
" + "[dat]"), "window=book") user.visible_message("[user] opens a pamphlet titled \"[src.title]\" and begins reading intently.") - playsound(loc, 'sound/bureaucracy/paperfold.ogg', 50, 1) + playsound(loc, 'sound/items/bureaucracy/paperfold.ogg', 50, 1) onclose(user, "book") - onclose(playsound(loc, 'sound/bureaucracy/paperfold.ogg', 50, 1)) + onclose(playsound(loc, 'sound/items/bureaucracy/paperfold.ogg', 50, 1)) diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index 02bb53ec934..c2cfceb1b83 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -16,8 +16,8 @@ can_embed = 0 var/parry_chance = 40 drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD worth_multiplier = 30 /obj/item/material/sword/antagonist_hints(mob/user, distance, is_adjacent) diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 3d5c334d871..31ac7e91371 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -21,7 +21,7 @@ var/wielded = 0 var/force_wielded = 0 var/force_unwielded - var/wield_sound = /singleton/sound_category/generic_wield_sound + var/wield_sound = SFX_WIELD var/unwield_sound = null var/base_name var/unwielded_force_divisor = 0.25 @@ -33,8 +33,8 @@ slot_r_hand_str = 'icons/mob/items/weapons/righthand_twohanded.dmi' ) drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/material/twohanded/proc/wield() @@ -96,7 +96,7 @@ /obj/item/material/twohanded/handle_shield(mob/user, var/on_back, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") if(wielded && default_parry_check(user, attacker, damage_source) && prob(parry_chance)) user.visible_message(SPAN_DANGER("\The [user] parries [attack_text] with \the [src]!")) - playsound(user.loc, /singleton/sound_category/punchmiss_sound, 50, 1) + playsound(user.loc, SFX_PUNCH_MISS, 50, 1) return BULLET_ACT_BLOCK return BULLET_ACT_HIT diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 35b27235b08..8f0307865a6 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -407,8 +407,8 @@ active_w_class = WEIGHT_CLASS_NORMAL w_class = WEIGHT_CLASS_NORMAL drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD /obj/item/melee/energy/sword/powersword/activate(mob/living/user) ..() diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index ddc1c75307b..571b76fd796 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -8,8 +8,8 @@ throw_range = 5 w_class = WEIGHT_CLASS_SMALL // POKKET - geeves var/mob/affecting = null - use_sound = 'sound/bureaucracy/bookopen.ogg' - drop_sound = 'sound/bureaucracy/bookclose.ogg' + use_sound = 'sound/items/bureaucracy/bookopen.ogg' + drop_sound = 'sound/items/bureaucracy/bookclose.ogg' /obj/item/storage/bible/booze name = "bible" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 06bf030f3bf..859505916fa 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -1406,7 +1406,7 @@ ) item_state = "papersack" icon_state = "paperbag_None" - use_sound = 'sound/bureaucracy/papercrumple.ogg' + use_sound = 'sound/items/bureaucracy/papercrumple.ogg' drop_sound = 'sound/items/drop/paper.ogg' pickup_sound = 'sound/items/storage/wrapper.ogg' foldable = null diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index d06d83f6ccd..50603433227 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -42,7 +42,7 @@ var/obj/item/melee/energy/blade/blade = attacking_item blade.spark_system.queue() playsound(src.loc, 'sound/weapons/blade.ogg', 50, 1) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) if(!locked) ..() else diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index b81fad9cfc7..b63da27d6d2 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -3,7 +3,7 @@ desc = "It's a small container with dice inside." icon = 'icons/obj/dice.dmi' icon_state = "dicebag" - use_sound = /singleton/sound_category/rustle_sound + use_sound = SFX_RUSTLE drop_sound = 'sound/items/drop/hat.ogg' pickup_sound = 'sound/items/pickup/hat.ogg' starts_with = list( diff --git a/code/game/objects/items/weapons/storage/mre.dm b/code/game/objects/items/weapons/storage/mre.dm index 2a6db3e575c..a0d3b9dd4c2 100644 --- a/code/game/objects/items/weapons/storage/mre.dm +++ b/code/game/objects/items/weapons/storage/mre.dm @@ -14,7 +14,7 @@ MRE Stuff drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' use_sound = 'sound/items/storage/wrapper.ogg' - open_sound = /singleton/sound_category/rip_sound + open_sound = SFX_RIP open_message = "You tear open the bag, breaking the vacuum seal." var/main_meal = /obj/item/storage/box/fancy/mrebag var/meal_desc = "This one is menu 1, meat pizza." @@ -240,7 +240,7 @@ MRE Stuff name = "dessert" desc = "A vacuum-sealed bag containing a MRE's dessert." icon_state = "pouch_small" - open_sound = /singleton/sound_category/rip_sound + open_sound = SFX_RIP open_message = "You tear open the bag, breaking the vacuum seal." starts_with = list(/obj/random/mre/dessert = 1) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 7555ab6125a..d0bde95f159 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -39,7 +39,7 @@ ABSTRACT_TYPE(/obj/item/storage/secure) var/obj/item/melee/energy/blade/blade = attacking_item blade.spark_system.queue() playsound(src.loc, 'sound/weapons/blade.ogg', 50, 1) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) return if (attacking_item.isscrewdriver()) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index b87f837e3d6..83818e8eda9 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -73,7 +73,7 @@ var/collection_mode = TRUE ///Sound played when used. null for no sound. - var/use_sound = /singleton/sound_category/rustle_sound + var/use_sound = SFX_RUSTLE /// List of pre-filled items var/list/starts_with diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index ecbca0085f6..f2f333a2057 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -137,7 +137,7 @@ if (..()) if (contents.len) spill(3, get_turf(target_mob)) - playsound(target_mob, /singleton/sound_category/tray_hit_sound, 100, 1) //sound playin' again + playsound(target_mob, SFX_TRAY_HIT, 100, 1) //sound playin' again update_force() user.visible_message(SPAN_DANGER("[user] smashes the [src] into [target_mob], causing it to break open and strew its contents across the area")) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index ead9c57ea98..e18f71af45a 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -105,7 +105,7 @@ if(bcell && bcell.charge > hitcost) status = !status to_chat(user, SPAN_NOTICE("[src] is now [status ? "on" : "off"].")) - playsound(loc, /singleton/sound_category/spark_sound, 75, 1, -1) + playsound(loc, SFX_SPARKS, 75, 1, -1) update_icon() else status = 0 diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 33beb689db7..977cc8748f5 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -72,7 +72,7 @@ icon_state = "drill" item_state = "drill" surgerysound = 'sound/items/surgery/surgicaldrill.ogg' - hitsound = /singleton/sound_category/drillhit_sound + hitsound = SFX_DRILL_HIT matter = list(DEFAULT_WALL_MATERIAL = 15000, MATERIAL_GLASS = 10000) obj_flags = OBJ_FLAG_CONDUCTABLE force = 22 @@ -289,7 +289,7 @@ /obj/item/storage/box/fancy/tray/attack(mob/living/target_mob, mob/living/user, target_zone) if(..() && contents.len) spill(3, get_turf(target_mob)) - playsound(target_mob, /singleton/sound_category/tray_hit_sound, 50, 1) //sound playin' again + playsound(target_mob, SFX_TRAY_HIT, 50, 1) //sound playin' again user.visible_message(SPAN_DANGER("[user] smashes \the [src] into [target_mob], causing it to spill its contents across the area!")) /obj/item/storage/box/fancy/tray/throw_impact(atom/hit_atom) diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 5457cf2efb3..51d9f05b84c 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -6,7 +6,7 @@ w_class = WEIGHT_CLASS_TINY drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' - surgerysound = /singleton/sound_category/rip_sound + surgerysound = SFX_RIP /obj/item/tape_roll/attack(mob/living/target_mob, mob/living/user, target_zone) var/mob/living/carbon/human/H = target_mob @@ -34,7 +34,7 @@ if(!H || !src || !H.organs_by_name[BP_HEAD] || !H.has_eyes() || H.glasses || (H.head && (H.head.body_parts_covered & FACE))) return - playsound(src, /singleton/sound_category/rip_sound, 25) + playsound(src, SFX_RIP, 25) user.visible_message(SPAN_DANGER("\The [user] has taped up \the [H]'s eyes!")) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/blindfold/tape(H), slot_glasses) H.update_inv_glasses() @@ -53,7 +53,7 @@ to_chat(user, SPAN_WARNING("Remove their [H.head] first.")) return - playsound(src, /singleton/sound_category/rip_sound, 25) + playsound(src, SFX_RIP, 25) user.visible_message(SPAN_DANGER("\The [user] begins taping up \the [H]'s mouth!")) if(!do_after(user, 3 SECONDS, H, DO_UNIQUE)) @@ -63,13 +63,13 @@ if(!H || !src || !H.organs_by_name[BP_HEAD] || !H.check_has_mouth() || H.wear_mask || (H.head && (H.head.body_parts_covered & FACE))) return - playsound(src, /singleton/sound_category/rip_sound,25) + playsound(src, SFX_RIP,25) user.visible_message(SPAN_DANGER("\The [user] has taped up \the [H]'s mouth!")) H.equip_to_slot_or_del(new /obj/item/clothing/mask/muzzle/tape(H), slot_wear_mask) H.update_inv_wear_mask() else if(target_zone == BP_R_HAND || target_zone == BP_L_HAND) - playsound(src, /singleton/sound_category/rip_sound,25) + playsound(src, SFX_RIP,25) var/obj/item/handcuffs/cable/tape/T = new(user) if(!T.place_handcuffs(H, user)) user.unEquip(T) @@ -144,7 +144,7 @@ return // reduce papers around corners issue. user.drop_from_inventory(src,source_turf) - playsound(src, /singleton/sound_category/rip_sound,25) + playsound(src, SFX_RIP,25) if(params) var/list/mouse_control = mouse_safe_xy(params) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index d6dbe61c16d..4706a1e81b1 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -579,7 +579,7 @@ damtype = DAMAGE_BRUTE w_class = initial(w_class) welding = FALSE - hitsound = /singleton/sound_category/swing_hit_sound + hitsound = SFX_SWING_HIT attack_verb = list("hit", "bludgeoned", "whacked") set_processing(FALSE) update_icon() @@ -715,7 +715,7 @@ w_class = WEIGHT_CLASS_NORMAL drop_sound = 'sound/items/drop/crowbar.ogg' pickup_sound = 'sound/items/pickup/crowbar.ogg' - usesound = /singleton/sound_category/crowbar_sound + usesound = SFX_CROWBAR surgerysound = 'sound/items/surgery/retractor.ogg' origin_tech = list(TECH_ENGINEERING = 1) matter = list(DEFAULT_WALL_MATERIAL = 50) @@ -774,7 +774,7 @@ w_class = WEIGHT_CLASS_NORMAL drop_sound = 'sound/items/drop/crowbar.ogg' pickup_sound = 'sound/items/pickup/crowbar.ogg' - usesound = /singleton/sound_category/crowbar_sound + usesound = SFX_CROWBAR origin_tech = list(TECH_ENGINEERING = 1) matter = list(DEFAULT_WALL_MATERIAL = 50) attack_verb = list("attacked", "rammed", "battered", "bludgeoned") @@ -875,7 +875,7 @@ usesound = 'sound/items/wirecutter.ogg' surgerysound = 'sound/items/surgery/hemostat.ogg' if("crowbar") - usesound = /singleton/sound_category/crowbar_sound + usesound = SFX_CROWBAR surgerysound = 'sound/items/surgery/retractor.ogg' if("multitool") usesound = null @@ -1037,7 +1037,7 @@ attack_verb = list("smashed", "hammered") drop_sound = 'sound/items/drop/crowbar.ogg' pickup_sound = 'sound/items/pickup/crowbar.ogg' - usesound = /singleton/sound_category/hammer_sound + usesound = SFX_HAMMER /obj/item/hammer/Initialize() . = ..() diff --git a/code/game/objects/items/weapons/vaurca_items.dm b/code/game/objects/items/weapons/vaurca_items.dm index 217ff6e60f4..bb79dbf6013 100644 --- a/code/game/objects/items/weapons/vaurca_items.dm +++ b/code/game/objects/items/weapons/vaurca_items.dm @@ -449,7 +449,7 @@ icon = 'icons/obj/vaurca_items.dmi' icon_state = "gaussrifle" item_state = "gaussrifle" - fire_sound = /singleton/sound_category/gauss_fire_sound + fire_sound = SFX_SHOOT_GAUSS fire_sound_text = "a subdued boom" fire_delay = 12 slot_flags = SLOT_BACK diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 357592130c4..b0092c5912f 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -130,8 +130,8 @@ hitsound = 'sound/weapons/bladeslice.ogg' contained_sprite = TRUE drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD /obj/item/banhammer desc = "banhammer" diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 9046a45ef24..7b5f5f53cac 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -136,7 +136,7 @@ LINEN BINS if (do_after(user, 25, src)) if(user.loc != loc) user.do_attack_animation(src) - playsound(get_turf(loc), /singleton/sound_category/rustle_sound, 15, 1, -5) + playsound(get_turf(loc), SFX_RUSTLE, 15, 1, -5) var/folds = fold user.visible_message(SPAN_NOTICE("\The [user] [folds ? "unfolds" : "folds"] \the [src]."), SPAN_NOTICE("You [fold ? "unfold" : "fold"] \the [src].")) @@ -170,7 +170,7 @@ LINEN BINS if (do_after(user, 6, src)) if(user.loc != loc) user.do_attack_animation(src) - playsound(get_turf(loc), /singleton/sound_category/rustle_sound, 15, 1, -5) + playsound(get_turf(loc), SFX_RUSTLE, 15, 1, -5) var/rolls = roll user.visible_message(SPAN_NOTICE("\The [user] [rolls ? "unrolls" : "rolls"] \the [src]."), SPAN_NOTICE("You [roll ? "unroll" : "roll"] \the [src].")) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/locker.dm b/code/game/objects/structures/crates_lockers/closets/secure/locker.dm index 2b34bcf2225..6a95ecdaa35 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/locker.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/locker.dm @@ -64,7 +64,7 @@ desc += " It appears to be broken." AddOverlays("[icon_door_overlay]sparking") CUT_OVERLAY_IN("[icon_door_overlay]sparking", 6) - playsound(loc, /singleton/sound_category/spark_sound, 60, 1) + playsound(loc, SFX_SPARKS, 60, 1) broken = TRUE locked = FALSE update_icon() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index b97a7b6c8c3..38205338b2c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -70,7 +70,7 @@ if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [blade]!", "You hear metal being sliced and sparks flying.")) blade.spark_system.queue() playsound(loc, 'sound/weapons/blade.ogg', 50, 1) - playsound(loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(loc, SFX_SPARKS, 50, 1) else to_chat(user, SPAN_WARNING("Access denied")) return diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 8bbcce167ee..a801b057d87 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -53,7 +53,7 @@ density = FALSE destroyed = TRUE new /obj/item/material/shard(loc) - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) update_icon() /obj/structure/displaycase/update_icon() diff --git a/code/game/objects/structures/fireaxe_cabinet.dm b/code/game/objects/structures/fireaxe_cabinet.dm index 697b4565499..259e5267c31 100644 --- a/code/game/objects/structures/fireaxe_cabinet.dm +++ b/code/game/objects/structures/fireaxe_cabinet.dm @@ -42,7 +42,7 @@ shattered = TRUE unlocked = TRUE open = TRUE - playsound(user, /singleton/sound_category/glass_break_sound, 100, 1) + playsound(user, SFX_BREAK_GLASS, 100, 1) update_icon() /obj/structure/fireaxecabinet/update_icon() diff --git a/code/game/objects/structures/fluff/engineering/maintenance.dm b/code/game/objects/structures/fluff/engineering/maintenance.dm index 20c49822eb8..2babe872638 100644 --- a/code/game/objects/structures/fluff/engineering/maintenance.dm +++ b/code/game/objects/structures/fluff/engineering/maintenance.dm @@ -92,7 +92,7 @@ ABSTRACT_TYPE(/obj/structure/engineer_maintenance) user.visible_message("[SPAN_BOLD("[user]")] [panel_open ? "closes" : "opens"] \the [src]!", SPAN_NOTICE("You [panel_open ? "close" : "open"] \the [src]!")) panel_open = !panel_open update_icon() - playsound(get_turf(src), panel_open ? /singleton/sound_category/hatch_open : /singleton/sound_category/hatch_close, 30, TRUE) + playsound(get_turf(src), panel_open ? SFX_HATCH_OPEN : SFX_HATCH_CLOSE, 30, TRUE) return if(panel_open) for(var/tool_type in panel_tools) @@ -221,13 +221,13 @@ ABSTRACT_TYPE(/obj/structure/engineer_maintenance) playsound(get_turf(target), finish_sound, 30, TRUE) /singleton/engineer_maintenance_tool/steam_pipe - finish_sound = /singleton/sound_category/steam_pipe + finish_sound = SFX_STEAM_PIPE /singleton/engineer_maintenance_tool/electrical_hum - finish_sound = /singleton/sound_category/electrical_hum + finish_sound = SFX_ELECTRICAL_HUM /singleton/engineer_maintenance_tool/electrical_spark - finish_sound = /singleton/sound_category/electrical_spark + finish_sound = SFX_ELECTRICAL_SPARK /singleton/engineer_maintenance_tool/electrical_spark/perform_action(mob/user, obj/item/tool, obj/structure/engineer_maintenance/target) . = ..() diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index f12dd238981..3a2b1f782bd 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -20,7 +20,7 @@ /obj/structure/grille, /turf/unsimulated/mineral/asteroid ) - footstep_sound = /singleton/sound_category/catwalk_footstep + footstep_sound = SFX_FOOTSTEP_CATWALK /obj/structure/lattice/assembly_hints(mob/user, distance, is_adjacent) . += ..() @@ -250,7 +250,7 @@ icon_state = "tatami" return_amount = null smoothing_flags = null - footstep_sound = /singleton/sound_category/carpet_footstep + footstep_sound = SFX_FOOTSTEP_CARPET /obj/structure/lattice/catwalk/indoor/planks name = "flooring plank" @@ -259,7 +259,7 @@ icon_state = "plank" return_amount = null smoothing_flags = null - footstep_sound = /singleton/sound_category/wood_footstep + footstep_sound = SFX_FOOTSTEP_WOOD /obj/structure/lattice/catwalk/indoor/planks/opaque icon_state = "plank_dark" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 39ed721091a..d5627992cd4 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -48,7 +48,7 @@ if(shattered) return shattered = 1 icon_state = "mirror_broke" - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) desc = "Oh no, seven years of bad luck!" var/obj/effect/reflection/reflection = ref.resolve() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 656a39d1e34..4769cd5da38 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -418,7 +418,7 @@ var/empty_amount = RG.reagents.trans_to(src, RG.amount_per_transfer_from_this) var/max_reagents = RG.reagents.maximum_volume user.visible_message("[user] empties [empty_amount == max_reagents ? "all of \the [RG]" : "some of \the [RG]"] into \a [src].") - playsound(src.loc, /singleton/sound_category/generic_pour_sound, 10, 1) + playsound(src.loc, SFX_POUR, 10, 1) return // Filling/empying Syringes diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 54b1869e161..4ab406e4e11 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -81,15 +81,15 @@ if(health < maxhealth / 4 && initialhealth >= maxhealth / 4) if(message) visible_message(SPAN_DANGER("[src] looks like it's about to shatter!")) - playsound(loc, /singleton/sound_category/glasscrack_sound, 100, 1) + playsound(loc, SFX_GLASS_CRACK, 100, 1) else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2) if(message) visible_message(SPAN_WARNING("[src] looks seriously damaged!")) - playsound(loc, /singleton/sound_category/glasscrack_sound, 100, 1) + playsound(loc, SFX_GLASS_CRACK, 100, 1) else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4) if(message) visible_message(SPAN_WARNING("Cracks begin to appear in [src]!")) - playsound(loc, /singleton/sound_category/glasscrack_sound, 100, 1) + playsound(loc, SFX_GLASS_CRACK, 100, 1) return /obj/structure/window/proc/apply_silicate(var/amount) @@ -110,7 +110,7 @@ AddOverlays(img) /obj/structure/window/proc/shatter(var/display_message = 1) - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) if(display_message) visible_message(SPAN_WARNING("\The [src] shatters!")) if(dir == SOUTHWEST) @@ -195,7 +195,7 @@ if(ismob(hitting_atom)) if(isliving(hitting_atom)) var/mob/living/M = hitting_atom - M.turf_collision(src, throwingdatum.speed, /singleton/sound_category/glasscrack_sound) + M.turf_collision(src, throwingdatum.speed, SFX_GLASS_CRACK) return else visible_message(SPAN_DANGER("\The [src] was hit by \the [hitting_atom].")) @@ -746,7 +746,7 @@ return /obj/structure/window/full/shatter(var/display_message = 1) - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) if(display_message) visible_message(SPAN_WARNING("\The [src] shatters!")) if(reinf) @@ -772,13 +772,13 @@ playsound(loc, 'sound/effects/glass_hit.ogg', 100, 1) if(health < maxhealth / 4 && initialhealth >= maxhealth / 4) visible_message(SPAN_DANGER("[src] looks like it's about to shatter!")) - playsound(loc, /singleton/sound_category/glasscrack_sound, 100, 1) + playsound(loc, SFX_GLASS_CRACK, 100, 1) else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2) visible_message(SPAN_WARNING("[src] looks seriously damaged!")) - playsound(loc, /singleton/sound_category/glasscrack_sound, 100, 1) + playsound(loc, SFX_GLASS_CRACK, 100, 1) else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4) visible_message(SPAN_WARNING("Cracks begin to appear in [src]!")) - playsound(loc, /singleton/sound_category/glasscrack_sound, 100, 1) + playsound(loc, SFX_GLASS_CRACK, 100, 1) return /obj/structure/window/full/dismantle_window() diff --git a/code/game/sound/sound.dm b/code/game/sound/sound.dm new file mode 100644 index 00000000000..888946f3484 --- /dev/null +++ b/code/game/sound/sound.dm @@ -0,0 +1,246 @@ +///Default override for echo +/sound + echo = list( + 0, // Direct + 0, // DirectHF + -10000, // Room, -10000 means no low frequency sound reverb + -10000, // RoomHF, -10000 means no high frequency sound reverb + 0, // Obstruction + 0, // ObstructionLFRatio + 0, // Occlusion + 0.25, // OcclusionLFRatio + 1.5, // OcclusionRoomRatio + 1.0, // OcclusionDirectRatio + 0, // Exclusion + 1.0, // ExclusionLFRatio + 0, // OutsideVolumeHF + 0, // DopplerFactor + 0, // RolloffFactor + 0, // RoomRolloffFactor + 1.0, // AirAbsorptionFactor + 0, // Flags (1 = Auto Direct, 2 = Auto Room, 4 = Auto RoomHF) + ) + environment = SOUND_ENVIRONMENT_NONE //Default to none so sounds without overrides dont get reverb + +/** + * playsound is a proc used to play a 3D sound in a specific range. This uses SOUND_RANGE + extra_range to determine that. + * + * * source - Origin of sound. + * * soundin - Either a file, or a string that can be used to get an SFX. + * * vol - The volume of the sound, excluding falloff and pressure affection. + * * vary - bool that determines if the sound changes pitch every time it plays. + * * extrarange - modifier for sound range. This gets added on top of SOUND_RANGE. + * * falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive. + * * frequency - playback speed of audio. + * * channel - The channel the sound is played at. + * * pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space). + * * ignore_walls - Whether or not the sound can pass through walls. + * * falloff_distance - Distance at which falloff begins. Sound is at peak volume (in regards to falloff) aslong as it is in this range. + * + * Aurora snowflake parameters: + * + * * required_preferences - What preference is required to be on on the client, for the sound to play + * * required_asfx_toggles - What toggles are required to be on on the client, for the sound to play + */ +/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff_exponent = SOUND_FALLOFF_EXPONENT, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, use_reverb = TRUE, required_preferences, required_asfx_toggles) + if(isarea(source)) + CRASH("playsound(): source is an area") + + var/turf/turf_source = get_turf(source) + + if (!turf_source || !soundin || !vol) + return + + //allocate a channel if necessary now so its the same for everyone + channel = channel || SSsounds.random_available_channel() + + var/sound/S = isdatum(soundin) ? soundin : sound(get_sfx(soundin)) + var/maxdistance = SOUND_RANGE + extrarange + var/source_z = turf_source.z + var/list/listeners = list() + + var/list/players_by_zlevel[world.maxz][1] + var/list/dead_players_by_zlevel[world.maxz][1] + + for(var/mob/player as anything in GLOB.player_list) + if(required_preferences && (player.client.prefs.toggles & required_preferences) != required_preferences) + continue + + if(required_asfx_toggles && (player.client.prefs.sfx_toggles & required_asfx_toggles) != required_asfx_toggles) + continue + + //This is because your Z is 0 if you are inside eg. a mech + var/turf/player_turf = get_turf(player) + if(!player_turf) + continue + + if(player_turf.z == source_z) + listeners += player + + if(player_turf.z) + players_by_zlevel[player_turf.z] += player + + if(isobserver(player) && player_turf.z) + dead_players_by_zlevel[player_turf.z] += player + + . = list()//output everything that successfully heard the sound + + var/turf/above_turf = GET_TURF_ABOVE(turf_source) + var/turf/below_turf = GET_TURF_BELOW(turf_source) + + if(ignore_walls) + + if(above_turf && istype(above_turf, /turf/simulated/open)) + listeners += players_by_zlevel[above_turf.z] + + if(below_turf && istype(turf_source, /turf/simulated/open)) + listeners += players_by_zlevel[below_turf.z] + + else //these sounds don't carry through walls + listeners = get_hearers_in_view(maxdistance, turf_source) + + if(above_turf && istype(above_turf, /turf/simulated/open)) + listeners += get_hearers_in_view(maxdistance, above_turf) + + if(below_turf && istype(turf_source, /turf/simulated/open)) + listeners += get_hearers_in_view(maxdistance, below_turf) + + for(var/mob/listening_mob in listeners | dead_players_by_zlevel[source_z])//observers always hear through walls + if(get_dist(listening_mob, turf_source) <= maxdistance) + //Aurora snowflake, if we don't ignore the walls, account for wall-like obstacles to dampen the sound + if(ignore_walls) + listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb) + else + adjust_sound_based_on_path_obstacles(listening_mob, turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, use_reverb) + + . += listening_mob + +/** + * This proc takes into account walls, windows and similar when deciding the received sound for a mob, + * + * this is *NOT* meant to be called directly, use `playsound()` + * + * Use this to tweak what happens with the sound along the path from the emitter to the receiver of said sound + */ +/proc/adjust_sound_based_on_path_obstacles(mob/listening_mob, turf/turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, use_reverb) + var/turf/inbetween_turf = get_turf(listening_mob) + + for(var/step_counter in 1 to get_dist(listening_mob, turf_source)) + inbetween_turf = get_step_towards(inbetween_turf, turf_source) + + if(istype(inbetween_turf, /turf/simulated/wall)) + vol *= 0.6 + + if(locate(/obj/machinery/door) in inbetween_turf) + vol *= 0.7 + + if(locate(/obj/structure/window) in inbetween_turf) + vol *= 0.75 + + //If we're at or below zero, no point continuing, no sound + if(vol <= 0) + return + + listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb) + + +/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff_exponent = SOUND_FALLOFF_EXPONENT, channel = 0, pressure_affected = TRUE, sound/sound_to_use, max_distance, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, distance_multiplier = 1, use_reverb = TRUE) + if(!client || !can_hear()) + return + + if(!sound_to_use) + sound_to_use = sound(get_sfx(soundin)) + + sound_to_use.wait = 0 //No queue + sound_to_use.channel = channel || SSsounds.random_available_channel() + sound_to_use.volume = vol + + if(vary) + if(frequency) + sound_to_use.frequency = frequency + else + sound_to_use.frequency = get_rand_frequency() + + if(isturf(turf_source)) + var/turf/turf_loc = get_turf(src) + + //sound volume falloff with distance + var/distance = get_dist(turf_loc, turf_source) * distance_multiplier + + if(max_distance) //If theres no max_distance we're not a 3D sound, so no falloff. + sound_to_use.volume -= (max(distance - falloff_distance, 0) ** (1 / falloff_exponent)) / ((max(max_distance, distance) - falloff_distance) ** (1 / falloff_exponent)) * sound_to_use.volume + //https://www.desmos.com/calculator/sqdfl8ipgf + + if(pressure_affected) + //Atmosphere affects sound + var/pressure_factor = 1 + var/datum/gas_mixture/hearer_env = turf_loc.return_air() + var/datum/gas_mixture/source_env = turf_source.return_air() + + if(hearer_env && source_env) + var/pressure = min(hearer_env.return_pressure(), source_env.return_pressure()) + if(pressure < ONE_ATMOSPHERE) + pressure_factor = max((pressure - SOUND_MINIMUM_PRESSURE)/(ONE_ATMOSPHERE - SOUND_MINIMUM_PRESSURE), 0) + else //space + pressure_factor = 0 + + if(distance <= 1) + pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound + + sound_to_use.volume *= pressure_factor + //End Atmosphere affecting sound + + if(sound_to_use.volume <= 0) + return //No sound + + var/dx = turf_source.x - turf_loc.x // Hearing from the right/left + sound_to_use.x = dx * distance_multiplier + var/dz = turf_source.y - turf_loc.y // Hearing from infront/behind + sound_to_use.z = dz * distance_multiplier + var/dy = (turf_source.z - turf_loc.z) * 5 * distance_multiplier // Hearing from above / below, multiplied by 5 because we assume height is further along coords. + sound_to_use.y = dy + + sound_to_use.falloff = max_distance || 1 //use max_distance, else just use 1 as we are a direct sound so falloff isnt relevant. + + // Sounds can't have their own environment. A sound's environment will be: + // 1. the mob's + // 2. the area's (defaults to SOUND_ENVRIONMENT_NONE) + if(sound_environment_override != SOUND_ENVIRONMENT_NONE) + sound_to_use.environment = sound_environment_override + else + var/area/A = get_area(src) + sound_to_use.environment = A.sound_environment + + if(use_reverb && sound_to_use.environment != SOUND_ENVIRONMENT_NONE) //We have reverb, reset our echo setting + sound_to_use.echo[3] = 0 //Room setting, 0 means normal reverb + sound_to_use.echo[4] = 0 //RoomHF setting, 0 means normal reverb. + + SEND_SOUND(src, sound_to_use) + +/proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, channel = 0, pressure_affected = FALSE, sound/S) + if(!S) + S = sound(get_sfx(soundin)) + for(var/m in GLOB.player_list) + if(ismob(m) && !isnewplayer(m)) + var/mob/M = m + M.playsound_local(M, null, volume, vary, frequency, null, channel, pressure_affected, S) + +/client/proc/playtitlemusic() + set waitfor = FALSE + UNTIL(SSticker.login_music) //wait for SSticker init to set the login music + SEND_SOUND(src, sound(null, repeat = 0, wait = 0, volume = prefs.lobby_music_vol, channel = CHANNEL_LOBBYMUSIC)) + + if(prefs.lobby_music_vol) + for(var/lobby_music in SSticker.login_music) + SEND_SOUND(src, sound(lobby_music, repeat = 0, wait = TRUE, volume = prefs.lobby_music_vol, channel = CHANNEL_LOBBYMUSIC)) // MAD JAMS + +/proc/get_rand_frequency() + return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs. + +/// Randomly return one of the SFX within the keyed list. +/proc/get_sfx(soundin) + if(!istext(soundin)) + return soundin + var/datum/sound_effect/sfx = SSsounds.sfx_datum_by_key[soundin] + return sfx?.return_sfx() || soundin + diff --git a/code/game/sound/sound_channels.dm b/code/game/sound/sound_channels.dm new file mode 100644 index 00000000000..dc2445ff57f --- /dev/null +++ b/code/game/sound/sound_channels.dm @@ -0,0 +1,61 @@ +GLOBAL_LIST_INIT(used_sound_channels, list( + CHANNEL_MASTER_VOLUME, + CHANNEL_LOBBYMUSIC, + CHANNEL_ADMIN, + CHANNEL_VOX, + CHANNEL_JUKEBOX, + CHANNEL_HEARTBEAT, + CHANNEL_AMBIENCE, + CHANNEL_BUZZ, + CHANNEL_SOUND_EFFECTS, + CHANNEL_SOUND_FOOTSTEPS, + CHANNEL_WEATHER, + CHANNEL_MACHINERY, + CHANNEL_INSTRUMENTS, + CHANNEL_MOB_SOUNDS, +)) + +GLOBAL_LIST_INIT(proxy_sound_channels, list( + CHANNEL_SOUND_EFFECTS, + CHANNEL_SOUND_FOOTSTEPS, + CHANNEL_WEATHER, + CHANNEL_MACHINERY, + CHANNEL_INSTRUMENTS, + CHANNEL_MOB_SOUNDS, +)) + +GLOBAL_DATUM_INIT(cached_mixer_channels, /list, list()) + +/proc/guess_mixer_channel(soundin) + var/sound_text_string + if(istype(soundin, /sound)) + var/sound/bleh = soundin + sound_text_string = "[bleh.file]" + else + sound_text_string = "[soundin]" + if(GLOB.cached_mixer_channels[sound_text_string]) + return GLOB.cached_mixer_channels[sound_text_string] + else if(findtext(sound_text_string, "effects/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_SOUND_EFFECTS + else if(findtext(sound_text_string, "machines/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_MACHINERY + else if(findtext(sound_text_string, "creatures/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_MOB_SOUNDS + else if(findtext(sound_text_string, "/ai/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_VOX + else if(findtext(sound_text_string, "chatter/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_MOB_SOUNDS + else if(findtext(sound_text_string, "items/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_SOUND_EFFECTS + else if(findtext(sound_text_string, "weapons/")) + . = GLOB.cached_mixer_channels[sound_text_string] = CHANNEL_SOUND_EFFECTS + else + return FALSE + +/mob/proc/stop_sound_channel(chan) + SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = chan)) + +/mob/proc/set_sound_channel_volume(channel, volume) + var/sound/S = sound(null, FALSE, FALSE, channel, volume) + S.status = SOUND_UPDATE + SEND_SOUND(src, S) diff --git a/code/game/sound.dm b/code/game/sound/sound_keys/sound_keys.dm similarity index 52% rename from code/game/sound.dm rename to code/game/sound/sound_keys/sound_keys.dm index 9a59a56fa57..b27892ca5b4 100644 --- a/code/game/sound.dm +++ b/code/game/sound/sound_keys/sound_keys.dm @@ -1,271 +1,25 @@ -///Default override for echo -/sound - echo = list( - 0, // Direct - 0, // DirectHF - -10000, // Room, -10000 means no low frequency sound reverb - -10000, // RoomHF, -10000 means no high frequency sound reverb - 0, // Obstruction - 0, // ObstructionLFRatio - 0, // Occlusion - 0.25, // OcclusionLFRatio - 1.5, // OcclusionRoomRatio - 1.0, // OcclusionDirectRatio - 0, // Exclusion - 1.0, // ExclusionLFRatio - 0, // OutsideVolumeHF - 0, // DopplerFactor - 0, // RolloffFactor - 0, // RoomRolloffFactor - 1.0, // AirAbsorptionFactor - 0, // Flags (1 = Auto Direct, 2 = Auto Room, 4 = Auto RoomHF) - ) - environment = SOUND_ENVIRONMENT_NONE //Default to none so sounds without overrides dont get reverb - /** - * playsound is a proc used to play a 3D sound in a specific range. This uses SOUND_RANGE + extra_range to determine that. - * - * * source - Origin of sound. - * * soundin - Either a file, or a string that can be used to get an SFX. - * * vol - The volume of the sound, excluding falloff and pressure affection. - * * vary - bool that determines if the sound changes pitch every time it plays. - * * extrarange - modifier for sound range. This gets added on top of SOUND_RANGE. - * * falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive. - * * frequency - playback speed of audio. - * * channel - The channel the sound is played at. - * * pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space). - * * ignore_walls - Whether or not the sound can pass through walls. - * * falloff_distance - Distance at which falloff begins. Sound is at peak volume (in regards to falloff) aslong as it is in this range. - * - * Aurora snowflake parameters: - * - * * required_preferences - What preference is required to be on on the client, for the sound to play - * * required_asfx_toggles - What toggles are required to be on on the client, for the sound to play + * Sound_effect datum + * Use for when you need multiple sound files to play at random in a playsound + * Initialized and added to sfx_datum_by_key in /datum/controller/subsystem/sounds/init_sound_keys() + * See also 'code\__DEFINES\sound.dm' */ -/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff_exponent = SOUND_FALLOFF_EXPONENT, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, use_reverb = TRUE, required_preferences, required_asfx_toggles) - if(isarea(source)) - CRASH("playsound(): source is an area") +/datum/sound_effect + /// sfx key define with which we are associated with, see code\__DEFINES\sound.dm + var/key + /// list of paths to our files, use the /assoc subtype if your paths are weighted + var/list/file_paths - var/turf/turf_source = get_turf(source) +/datum/sound_effect/proc/return_sfx() + return pick(file_paths) - if (!turf_source || !soundin || !vol) - return +/datum/sound_effect/blank_footsteps + key = SFX_FOOTSTEP_BLANK + file_paths = list('sound/effects/footstep/blank.ogg') - //allocate a channel if necessary now so its the same for everyone - channel = channel || SSsounds.random_available_channel() - - var/sound/S = isdatum(soundin) ? soundin : sound(get_sfx(soundin)) - var/maxdistance = SOUND_RANGE + extrarange - var/source_z = turf_source.z - var/list/listeners = list() - - var/list/players_by_zlevel[world.maxz][1] - var/list/dead_players_by_zlevel[world.maxz][1] - - for(var/mob/player as anything in GLOB.player_list) - if(required_preferences && (player.client.prefs.toggles & required_preferences) != required_preferences) - continue - - if(required_asfx_toggles && (player.client.prefs.sfx_toggles & required_asfx_toggles) != required_asfx_toggles) - continue - - //This is because your Z is 0 if you are inside eg. a mech - var/turf/player_turf = get_turf(player) - if(!player_turf) - continue - - if(player_turf.z == source_z) - listeners += player - - if(player_turf.z) - players_by_zlevel[player_turf.z] += player - - if(isobserver(player) && player_turf.z) - dead_players_by_zlevel[player_turf.z] += player - - . = list()//output everything that successfully heard the sound - - var/turf/above_turf = GET_TURF_ABOVE(turf_source) - var/turf/below_turf = GET_TURF_BELOW(turf_source) - - if(ignore_walls) - - if(above_turf && istype(above_turf, /turf/simulated/open)) - listeners += players_by_zlevel[above_turf.z] - - if(below_turf && istype(turf_source, /turf/simulated/open)) - listeners += players_by_zlevel[below_turf.z] - - else //these sounds don't carry through walls - listeners = get_hearers_in_view(maxdistance, turf_source) - - if(above_turf && istype(above_turf, /turf/simulated/open)) - listeners += get_hearers_in_view(maxdistance, above_turf) - - if(below_turf && istype(turf_source, /turf/simulated/open)) - listeners += get_hearers_in_view(maxdistance, below_turf) - - for(var/mob/listening_mob in listeners | dead_players_by_zlevel[source_z])//observers always hear through walls - if(get_dist(listening_mob, turf_source) <= maxdistance) - //Aurora snowflake, if we don't ignore the walls, account for wall-like obstacles to dampen the sound - if(ignore_walls) - listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb) - else - adjust_sound_based_on_path_obstacles(listening_mob, turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, use_reverb) - - . += listening_mob - -/** - * This proc takes into account walls, windows and similar when deciding the received sound for a mob, - * - * this is *NOT* meant to be called directly, use `playsound()` - * - * Use this to tweak what happens with the sound along the path from the emitter to the receiver of said sound - */ -/proc/adjust_sound_based_on_path_obstacles(mob/listening_mob, turf/turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, use_reverb) - var/turf/inbetween_turf = get_turf(listening_mob) - - for(var/step_counter in 1 to get_dist(listening_mob, turf_source)) - inbetween_turf = get_step_towards(inbetween_turf, turf_source) - - if(istype(inbetween_turf, /turf/simulated/wall)) - vol *= 0.6 - - if(locate(/obj/machinery/door) in inbetween_turf) - vol *= 0.7 - - if(locate(/obj/structure/window) in inbetween_turf) - vol *= 0.75 - - //If we're at or below zero, no point continuing, no sound - if(vol <= 0) - return - - listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb) - - -/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff_exponent = SOUND_FALLOFF_EXPONENT, channel = 0, pressure_affected = TRUE, sound/sound_to_use, max_distance, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, distance_multiplier = 1, use_reverb = TRUE) - if(!client || !can_hear()) - return - - if(!sound_to_use) - sound_to_use = sound(get_sfx(soundin)) - - sound_to_use.wait = 0 //No queue - sound_to_use.channel = channel || SSsounds.random_available_channel() - sound_to_use.volume = vol - - if(vary) - if(frequency) - sound_to_use.frequency = frequency - else - sound_to_use.frequency = get_rand_frequency() - - if(isturf(turf_source)) - var/turf/turf_loc = get_turf(src) - - //sound volume falloff with distance - var/distance = get_dist(turf_loc, turf_source) * distance_multiplier - - if(max_distance) //If theres no max_distance we're not a 3D sound, so no falloff. - sound_to_use.volume -= (max(distance - falloff_distance, 0) ** (1 / falloff_exponent)) / ((max(max_distance, distance) - falloff_distance) ** (1 / falloff_exponent)) * sound_to_use.volume - //https://www.desmos.com/calculator/sqdfl8ipgf - - if(pressure_affected) - //Atmosphere affects sound - var/pressure_factor = 1 - var/datum/gas_mixture/hearer_env = turf_loc.return_air() - var/datum/gas_mixture/source_env = turf_source.return_air() - - if(hearer_env && source_env) - var/pressure = min(hearer_env.return_pressure(), source_env.return_pressure()) - if(pressure < ONE_ATMOSPHERE) - pressure_factor = max((pressure - SOUND_MINIMUM_PRESSURE)/(ONE_ATMOSPHERE - SOUND_MINIMUM_PRESSURE), 0) - else //space - pressure_factor = 0 - - if(distance <= 1) - pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound - - sound_to_use.volume *= pressure_factor - //End Atmosphere affecting sound - - if(sound_to_use.volume <= 0) - return //No sound - - var/dx = turf_source.x - turf_loc.x // Hearing from the right/left - sound_to_use.x = dx * distance_multiplier - var/dz = turf_source.y - turf_loc.y // Hearing from infront/behind - sound_to_use.z = dz * distance_multiplier - var/dy = (turf_source.z - turf_loc.z) * 5 * distance_multiplier // Hearing from above / below, multiplied by 5 because we assume height is further along coords. - sound_to_use.y = dy - - sound_to_use.falloff = max_distance || 1 //use max_distance, else just use 1 as we are a direct sound so falloff isnt relevant. - - // Sounds can't have their own environment. A sound's environment will be: - // 1. the mob's - // 2. the area's (defaults to SOUND_ENVRIONMENT_NONE) - if(sound_environment_override != SOUND_ENVIRONMENT_NONE) - sound_to_use.environment = sound_environment_override - else - var/area/A = get_area(src) - sound_to_use.environment = A.sound_environment - - if(use_reverb && sound_to_use.environment != SOUND_ENVIRONMENT_NONE) //We have reverb, reset our echo setting - sound_to_use.echo[3] = 0 //Room setting, 0 means normal reverb - sound_to_use.echo[4] = 0 //RoomHF setting, 0 means normal reverb. - - SEND_SOUND(src, sound_to_use) - -/proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, channel = 0, pressure_affected = FALSE, sound/S) - if(!S) - S = sound(get_sfx(soundin)) - for(var/m in GLOB.player_list) - if(ismob(m) && !isnewplayer(m)) - var/mob/M = m - M.playsound_local(M, null, volume, vary, frequency, null, channel, pressure_affected, S) - -/mob/proc/stop_sound_channel(chan) - SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = chan)) - -/mob/proc/set_sound_channel_volume(channel, volume) - var/sound/S = sound(null, FALSE, FALSE, channel, volume) - S.status = SOUND_UPDATE - SEND_SOUND(src, S) - -/client/proc/playtitlemusic() - set waitfor = FALSE - UNTIL(SSticker.login_music) //wait for SSticker init to set the login music - SEND_SOUND(src, sound(null, repeat = 0, wait = 0, volume = prefs.lobby_music_vol, channel = CHANNEL_LOBBYMUSIC)) - - if(prefs.lobby_music_vol) - for(var/lobby_music in SSticker.login_music) - SEND_SOUND(src, sound(lobby_music, repeat = 0, wait = TRUE, volume = prefs.lobby_music_vol, channel = CHANNEL_LOBBYMUSIC)) // MAD JAMS - -/proc/get_rand_frequency() - return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs. - -//Unlike TG, we use singletons here, so this is different, for now -/proc/get_sfx(soundin) - if(isfile(soundin) || (istext(soundin) && !ispath(soundin)) || istype(soundin, /sound)) - return soundin - - var/singleton/sound_category/SC = GET_SINGLETON(soundin) - if(!istype(SC)) - CRASH("Non-decl path in get_sfx: [soundin]") - return SC.get_sound() - -/singleton/sound_category - var/list/sounds = list() - -/singleton/sound_category/proc/get_sound() - return pick(sounds) - -/singleton/sound_category/blank_footsteps - sounds = list('sound/effects/footstep/blank.ogg') - -/singleton/sound_category/catwalk_footstep - sounds = list( +/datum/sound_effect/catwalk_footstep + key = SFX_FOOTSTEP_CATWALK + file_paths = list( 'sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', @@ -273,8 +27,9 @@ 'sound/effects/footstep/catwalk5.ogg' ) -/singleton/sound_category/wood_footstep - sounds = list( +/datum/sound_effect/wood_footstep + key = SFX_FOOTSTEP_WOOD + file_paths = list( 'sound/effects/footstep/wood1.ogg', 'sound/effects/footstep/wood2.ogg', 'sound/effects/footstep/wood3.ogg', @@ -282,8 +37,9 @@ 'sound/effects/footstep/wood5.ogg' ) -/singleton/sound_category/tiles_footstep - sounds = list( +/datum/sound_effect/tiles_footstep + key = SFX_FOOTSTEP_TILES + file_paths = list( 'sound/effects/footstep/floor1.ogg', 'sound/effects/footstep/floor2.ogg', 'sound/effects/footstep/floor3.ogg', @@ -291,8 +47,9 @@ 'sound/effects/footstep/floor5.ogg' ) -/singleton/sound_category/plating_footstep - sounds = list( +/datum/sound_effect/plating_footstep + key = SFX_FOOTSTEP_PLATING + file_paths = list( 'sound/effects/footstep/plating1.ogg', 'sound/effects/footstep/plating2.ogg', 'sound/effects/footstep/plating3.ogg', @@ -300,8 +57,9 @@ 'sound/effects/footstep/plating5.ogg' ) -/singleton/sound_category/carpet_footstep - sounds = list( +/datum/sound_effect/carpet_footstep + key = SFX_FOOTSTEP_CARPET + file_paths = list( 'sound/effects/footstep/carpet1.ogg', 'sound/effects/footstep/carpet2.ogg', 'sound/effects/footstep/carpet3.ogg', @@ -309,8 +67,9 @@ 'sound/effects/footstep/carpet5.ogg' ) -/singleton/sound_category/asteroid_footstep - sounds = list( +/datum/sound_effect/asteroid_footstep + key = SFX_FOOTSTEP_ASTEROID + file_paths = list( 'sound/effects/footstep/asteroid1.ogg', 'sound/effects/footstep/asteroid2.ogg', 'sound/effects/footstep/asteroid3.ogg', @@ -318,31 +77,35 @@ 'sound/effects/footstep/asteroid5.ogg' ) -/singleton/sound_category/grass_footstep - sounds = list( +/datum/sound_effect/grass_footstep + key = SFX_FOOTSTEP_GRASS + file_paths = list( 'sound/effects/footstep/grass1.ogg', 'sound/effects/footstep/grass2.ogg', 'sound/effects/footstep/grass3.ogg', 'sound/effects/footstep/grass4.ogg' ) -/singleton/sound_category/water_footstep - sounds = list( +/datum/sound_effect/water_footstep + key = SFX_FOOTSTEP_WATER + file_paths = list( 'sound/effects/footstep/water1.ogg', 'sound/effects/footstep/water2.ogg', 'sound/effects/footstep/water3.ogg', 'sound/effects/footstep/water4.ogg' ) -/singleton/sound_category/lava_footstep - sounds = list( +/datum/sound_effect/lava_footstep + key = SFX_FOOTSTEP_LAVA + file_paths = list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', 'sound/effects/footstep/lava3.ogg' ) -/singleton/sound_category/snow_footstep - sounds = list( +/datum/sound_effect/snow_footstep + key = SFX_FOOTSTEP_SNOW + file_paths = list( 'sound/effects/footstep/snow1.ogg', 'sound/effects/footstep/snow2.ogg', 'sound/effects/footstep/snow3.ogg', @@ -350,51 +113,58 @@ 'sound/effects/footstep/snow5.ogg' ) -/singleton/sound_category/sand_footstep - sounds = list( +/datum/sound_effect/sand_footstep + key = SFX_FOOTSTEP_SAND + file_paths = list( 'sound/effects/footstep/sand1.ogg', 'sound/effects/footstep/sand2.ogg', 'sound/effects/footstep/sand3.ogg', 'sound/effects/footstep/sand4.ogg' ) -/singleton/sound_category/glass_break_sound - sounds = list( +/datum/sound_effect/glass_break_sound + key = SFX_BREAK_GLASS + file_paths = list( 'sound/effects/glass_break1.ogg', 'sound/effects/glass_break2.ogg', 'sound/effects/glass_break3.ogg' ) -/singleton/sound_category/cardboard_break_sound - sounds = list( +/datum/sound_effect/cardboard_break_sound + key = SFX_BREAK_CARDBOARD + file_paths = list( 'sound/effects/cardboard_break1.ogg', 'sound/effects/cardboard_break2.ogg', 'sound/effects/cardboard_break3.ogg', ) -/singleton/sound_category/wood_break_sound - sounds = list( +/datum/sound_effect/wood_break_sound + key = SFX_BREAK_WOOD + file_paths = list( 'sound/effects/wood_break1.ogg', 'sound/effects/wood_break2.ogg', 'sound/effects/wood_break3.ogg' ) -/singleton/sound_category/explosion_sound - sounds = list( +/datum/sound_effect/explosion_sound + key = SFX_EXPLOSION + file_paths = list( 'sound/effects/Explosion1.ogg', 'sound/effects/Explosion2.ogg' ) -/singleton/sound_category/spark_sound - sounds = list( +/datum/sound_effect/spark_sound + key = SFX_SPARKS + file_paths = list( 'sound/effects/sparks1.ogg', 'sound/effects/sparks2.ogg', 'sound/effects/sparks3.ogg', 'sound/effects/sparks4.ogg' ) -/singleton/sound_category/rustle_sound - sounds = list( +/datum/sound_effect/rustle_sound + key = SFX_RUSTLE + file_paths = list( 'sound/items/storage/rustle1.ogg', 'sound/items/storage/rustle2.ogg', 'sound/items/storage/rustle3.ogg', @@ -402,68 +172,77 @@ 'sound/items/storage/rustle5.ogg' ) -/singleton/sound_category/punch_sound - sounds = list( +/datum/sound_effect/punch_sound + key = SFX_PUNCH + file_paths = list( 'sound/weapons/punch1.ogg', 'sound/weapons/punch2.ogg', 'sound/weapons/punch3.ogg', 'sound/weapons/punch4.ogg' ) -/singleton/sound_category/punch_bassy_sound - sounds = list( +/datum/sound_effect/punch_bassy_sound + key = SFX_PUNCH_BASSY + file_paths = list( 'sound/weapons/punch1_bass.ogg', 'sound/weapons/punch2_bass.ogg', 'sound/weapons/punch3_bass.ogg', 'sound/weapons/punch4_bass.ogg' ) -/singleton/sound_category/punchmiss_sound - sounds = list( +/datum/sound_effect/punchmiss_sound + key = SFX_PUNCH_MISS + file_paths = list( 'sound/weapons/punchmiss1.ogg', 'sound/weapons/punchmiss2.ogg' ) -/singleton/sound_category/swing_hit_sound - sounds = list( +/datum/sound_effect/swing_hit_sound + key = SFX_SWING_HIT + file_paths = list( 'sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg' ) -/singleton/sound_category/hiss_sound - sounds = list( +/datum/sound_effect/hiss_sound + key = SFX_HISS + file_paths = list( 'sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg' ) -/singleton/sound_category/page_sound - sounds = list( +/datum/sound_effect/page_sound + key = SFX_PAGE_TURN + file_paths = list( 'sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg', 'sound/effects/pageturn3.ogg' ) -/singleton/sound_category/fracture_sound - sounds = list( +/datum/sound_effect/fracture_sound + key = SFX_FRACTURE + file_paths = list( 'sound/effects/bonebreak1.ogg', 'sound/effects/bonebreak2.ogg', 'sound/effects/bonebreak3.ogg', 'sound/effects/bonebreak4.ogg' ) -/singleton/sound_category/button_sound - sounds = list( +/datum/sound_effect/button_sound + key = SFX_BUTTON + file_paths = list( 'sound/machines/button1.ogg', 'sound/machines/button2.ogg', 'sound/machines/button3.ogg', 'sound/machines/button4.ogg' ) -/singleton/sound_category/computerbeep_sound - sounds = list( +/datum/sound_effect/computerbeep_sound + key = SFX_COMPUTER_BEEP + file_paths = list( 'sound/machines/compbeep1.ogg', 'sound/machines/compbeep2.ogg', 'sound/machines/compbeep3.ogg', @@ -471,16 +250,25 @@ 'sound/machines/compbeep5.ogg' ) -/singleton/sound_category/switch_sound - sounds = list( +/datum/sound_effect/boops + key = SFX_COMPUTER_BOOP + file_paths = list( + 'sound/machines/boop1.ogg', + 'sound/machines/boop2.ogg' + ) + +/datum/sound_effect/switch_sound + key = SFX_SWITCH + file_paths = list( 'sound/machines/switch1.ogg', 'sound/machines/switch2.ogg', 'sound/machines/switch3.ogg', 'sound/machines/switch4.ogg' ) -/singleton/sound_category/keyboard_sound - sounds = list( +/datum/sound_effect/keyboard_sound + key = SFX_KEYBOARD + file_paths = list( 'sound/machines/keyboard/keyboard1.ogg', 'sound/machines/keyboard/keyboard2.ogg', 'sound/machines/keyboard/keyboard3.ogg', @@ -488,66 +276,75 @@ 'sound/machines/keyboard/keyboard5.ogg' ) -/singleton/sound_category/pickaxe_sound - sounds = list( +/datum/sound_effect/pickaxe_sound + key = SFX_PICKAXE + file_paths = list( 'sound/weapons/mine/pickaxe1.ogg', 'sound/weapons/mine/pickaxe2.ogg', 'sound/weapons/mine/pickaxe3.ogg', 'sound/weapons/mine/pickaxe4.ogg' ) -/singleton/sound_category/glasscrack_sound - sounds = list( +/datum/sound_effect/glasscrack_sound + key = SFX_GLASS_CRACK + file_paths = list( 'sound/effects/glass_crack1.ogg', 'sound/effects/glass_crack2.ogg', 'sound/effects/glass_crack3.ogg', 'sound/effects/glass_crack4.ogg' ) -/singleton/sound_category/bodyfall_sound - sounds = list( +/datum/sound_effect/bodyfall_sound + key = SFX_BODYFALL + file_paths = list( 'sound/effects/bodyfall1.ogg', 'sound/effects/bodyfall2.ogg', 'sound/effects/bodyfall3.ogg', 'sound/effects/bodyfall4.ogg' ) -/singleton/sound_category/bodyfall_skrell_sound - sounds = list( +/datum/sound_effect/bodyfall_skrell_sound + key = SFX_BODYFALL_SKRELL + file_paths = list( 'sound/effects/bodyfall_skrell1.ogg', 'sound/effects/bodyfall_skrell2.ogg', 'sound/effects/bodyfall_skrell3.ogg', 'sound/effects/bodyfall_skrell4.ogg' ) -/singleton/sound_category/bodyfall_machine_sound - sounds = list( +/datum/sound_effect/bodyfall_machine_sound + key = SFX_BODYFALL_MACHINE + file_paths = list( 'sound/effects/bodyfall_machine1.ogg', 'sound/effects/bodyfall_machine2.ogg' ) -/singleton/sound_category/bulletflyby_sound - sounds = list( +/datum/sound_effect/bulletflyby_sound + key = SFX_BULLET_MISS + file_paths = list( 'sound/effects/bulletflyby1.ogg', 'sound/effects/bulletflyby2.ogg', 'sound/effects/bulletflyby3.ogg' ) -/singleton/sound_category/screwdriver_sound - sounds = list( +/datum/sound_effect/screwdriver_sound + key = SFX_SCREWDRIVER + file_paths = list( 'sound/items/Screwdriver.ogg', 'sound/items/Screwdriver2.ogg' ) -/singleton/sound_category/crowbar_sound - sounds = list( +/datum/sound_effect/crowbar_sound + key = SFX_CROWBAR + file_paths = list( 'sound/items/crowbar1.ogg', 'sound/items/crowbar2.ogg', 'sound/items/crowbar3.ogg', 'sound/items/crowbar4.ogg' ) -/singleton/sound_category/casing_drop_sound - sounds = list( +/datum/sound_effect/casing_drop_sound + key = SFX_CASING_DROP + file_paths = list( 'sound/items/drop/casing1.ogg', 'sound/items/drop/casing2.ogg', 'sound/items/drop/casing3.ogg', @@ -574,8 +371,9 @@ 'sound/items/drop/casing25.ogg' ) -/singleton/sound_category/casing_drop_sound_shotgun - sounds = list( +/datum/sound_effect/casing_drop_sound_shotgun + key = SFX_CASING_DROP_SHOTGUN + file_paths = list( 'sound/items/drop/casing_shotgun1.ogg', 'sound/items/drop/casing_shotgun2.ogg', 'sound/items/drop/casing_shotgun3.ogg', @@ -583,8 +381,9 @@ 'sound/items/drop/casing_shotgun5.ogg' ) -/singleton/sound_category/out_of_ammo - sounds = list( +/datum/sound_effect/out_of_ammo + key = SFX_OUT_OF_AMMO + file_paths = list( 'sound/weapons/empty/empty2.ogg', 'sound/weapons/empty/empty3.ogg', 'sound/weapons/empty/empty4.ogg', @@ -592,25 +391,29 @@ 'sound/weapons/empty/empty6.ogg' ) -/singleton/sound_category/out_of_ammo_revolver - sounds = list( +/datum/sound_effect/out_of_ammo_revolver + key = SFX_OUT_OF_AMMO_REVOLVER + file_paths = list( 'sound/weapons/empty/empty_revolver.ogg', 'sound/weapons/empty/empty_revolver3.ogg' ) -/singleton/sound_category/out_of_ammo_rifle - sounds = list( +/datum/sound_effect/out_of_ammo_rifle + key = SFX_OUT_OF_AMMO_RIFLE + file_paths = list( 'sound/weapons/empty/empty_rifle1.ogg', 'sound/weapons/empty/empty_rifle2.ogg' ) -/singleton/sound_category/out_of_ammo_shotgun - sounds = list( +/datum/sound_effect/out_of_ammo_shotgun + key = SFX_OUT_OF_AMMO_SHOTGUN + file_paths = list( 'sound/weapons/empty/empty_shotgun1.ogg' ) -/singleton/sound_category/metal_slide_reload - sounds = list( +/datum/sound_effect/metal_slide_reload + key = SFX_RELOAD_METAL_SLIDE + file_paths = list( 'sound/weapons/reloads/pistol_metal_slide1.ogg', 'sound/weapons/reloads/pistol_metal_slide2.ogg', 'sound/weapons/reloads/pistol_metal_slide3.ogg', @@ -624,8 +427,9 @@ 'sound/weapons/reloads/pistol_metal_slide11.ogg' ) -/singleton/sound_category/polymer_slide_reload - sounds = list( +/datum/sound_effect/polymer_slide_reload + key = SFX_RELOAD_POLYMER_SLIDE + file_paths = list( 'sound/weapons/reloads/pistol_polymer_slide1.ogg', 'sound/weapons/reloads/pistol_polymer_slide2.ogg', 'sound/weapons/reloads/pistol_polymer_slide3.ogg', @@ -633,8 +437,9 @@ 'sound/weapons/reloads/pistol_polymer_slide5.ogg' ) -/singleton/sound_category/rifle_slide_reload - sounds = list( +/datum/sound_effect/rifle_slide_reload + key = SFX_RELOAD_RIFLE_SLIDE + file_paths = list( 'sound/weapons/reloads/rifle_slide.ogg', 'sound/weapons/reloads/rifle_slide2.ogg', 'sound/weapons/reloads/rifle_slide3.ogg', @@ -649,12 +454,14 @@ 'sound/weapons/reloads/rifle_slide12.ogg' ) -/singleton/sound_category/revolver_reload - sounds = list( +/datum/sound_effect/revolver_reload + key = SFX_RELOAD_REVOLVER + file_paths = list( 'sound/weapons/reloads/revolver_reload.ogg' ) -/singleton/sound_category/shotgun_pump - sounds = list( +/datum/sound_effect/shotgun_pump + key = SFX_PUMP_SHOTGUN + file_paths = list( 'sound/weapons/reloads/shotgun_pump2.ogg', 'sound/weapons/reloads/shotgun_pump3.ogg', 'sound/weapons/reloads/shotgun_pump4.ogg', @@ -664,96 +471,103 @@ 'sound/weapons/reloads/shotgun_pump8.ogg' ) -/singleton/sound_category/shotgun_reload - sounds = list( +/datum/sound_effect/shotgun_reload + key = SFX_RELOAD_SHOTGUN + file_paths = list( 'sound/weapons/reloads/reload_shell.ogg', 'sound/weapons/reloads/reload_shell2.ogg', 'sound/weapons/reloads/reload_shell3.ogg', 'sound/weapons/reloads/reload_shell4.ogg' ) -/singleton/sound_category/heavy_machine_gun_reload - sounds = list( +/datum/sound_effect/heavy_machine_gun_reload + key = SFX_RELOAD_HMG + file_paths = list( 'sound/weapons/reloads/hmg_reload1.ogg', 'sound/weapons/reloads/hmg_reload2.ogg', 'sound/weapons/reloads/hmg_reload3.ogg' ) -/singleton/sound_category/drillhit_sound - sounds = list( +/datum/sound_effect/drillhit_sound + key = SFX_DRILL_HIT + file_paths = list( 'sound/weapons/saw/drillhit1.ogg', 'sound/weapons/saw/drillhit2.ogg' ) -/singleton/sound_category/generic_drop_sound - sounds = list( +/datum/sound_effect/generic_drop_sound + key = SFX_DROP + file_paths = list( 'sound/items/drop/generic1.ogg', 'sound/items/drop/generic2.ogg' ) -/singleton/sound_category/generic_pickup_sound - sounds = list( +/datum/sound_effect/generic_pickup_sound + key = SFX_PICKUP + file_paths = list( 'sound/items/pickup/generic1.ogg', 'sound/items/pickup/generic2.ogg', 'sound/items/pickup/generic3.ogg' ) -/singleton/sound_category/generic_wield_sound - sounds = list( +/datum/sound_effect/generic_wield_sound + key = SFX_WIELD + file_paths = list( 'sound/items/wield/generic1.ogg', 'sound/items/wield/generic2.ogg', 'sound/items/wield/generic3.ogg' ) -/singleton/sound_category/generic_pour_sound - sounds = list( +/datum/sound_effect/generic_pour_sound + key = SFX_POUR + file_paths = list( 'sound/effects/pour1.ogg', 'sound/effects/pour2.ogg' ) -/singleton/sound_category/wield_generic_sound - sounds = list( - 'sound/items/wield/generic1.ogg', - 'sound/items/wield/generic2.ogg', - 'sound/items/wield/generic3.ogg' - ) - -/singleton/sound_category/sword_pickup_sound - sounds = list( +/datum/sound_effect/sword_pickup_sound + key = SFX_PICKUP_SWORD + file_paths = list( 'sound/items/pickup/sword1.ogg', 'sound/items/pickup/sword2.ogg', 'sound/items/pickup/sword3.ogg' ) -/singleton/sound_category/sword_equip_sound - sounds = list( +/datum/sound_effect/sword_equip_sound + key = SFX_EQUIP_SWORD + file_paths = list( 'sound/items/equip/sword1.ogg', 'sound/items/equip/sword2.ogg' ) -/singleton/sound_category/gauss_fire_sound - sounds = list( +/datum/sound_effect/gauss_fire_sound + key = SFX_SHOOT_GAUSS + file_paths = list( 'sound/weapons/gaussrifle1.ogg', 'sound/weapons/gaussrifle2.ogg' ) -/singleton/sound_category/bottle_hit_intact_sound - sounds = list( +/datum/sound_effect/bottle_hit_intact_sound + key = SFX_BOTTLE_HIT_INTACT + file_paths = list( 'sound/weapons/bottlehit_intact1.ogg', 'sound/weapons/bottlehit_intact2.ogg', 'sound/weapons/bottlehit_intact3.ogg' ) -/singleton/sound_category/bottle_hit_broken - sounds = list( +/datum/sound_effect/bottle_hit_broken + key = SFX_BOTTLE_HIT_BROKEN + file_paths = list( 'sound/weapons/bottlehit_broken1.ogg', 'sound/weapons/bottlehit_broken2.ogg', 'sound/weapons/bottlehit_broken3.ogg' ) -/singleton/sound_category/tray_hit_sound - sounds = list( +/datum/sound_effect/tray_hit_sound + key = SFX_TRAY_HIT + file_paths = list( 'sound/items/trayhit1.ogg', 'sound/items/trayhit2.ogg' ) -/singleton/sound_category/grab_sound - sounds = list( +/datum/sound_effect/grab_sound + key = SFX_GRAB + file_paths = list( 'sound/weapons/grab/grab1.ogg', 'sound/weapons/grab/grab2.ogg', 'sound/weapons/grab/grab3.ogg', @@ -761,8 +575,9 @@ 'sound/weapons/grab/grab5.ogg' ) -/singleton/sound_category/gunshots - sounds = list( +/datum/sound_effect/gunshots + key = SFX_GUNSHOT_ANY + file_paths = list( 'sound/weapons/gunshot/bolter.ogg', 'sound/weapons/laser1.ogg', 'sound/weapons/Laser2.ogg', @@ -792,8 +607,9 @@ 'sound/weapons/gunshot/slammer.ogg' ) -/singleton/sound_category/gunshots/ballistic - sounds = list( +/datum/sound_effect/gunshots/ballistic + key = SFX_GUNSHOT_BALLISTIC + file_paths = list( 'sound/weapons/gunshot/gunshot_dmr.ogg', 'sound/weapons/gunshot/gunshot_light.ogg', 'sound/weapons/gunshot/gunshot_mateba.ogg', @@ -815,8 +631,9 @@ 'sound/weapons/gunshot/slammer.ogg' ) -/singleton/sound_category/gunshots/energy - sounds = list( +/datum/sound_effect/gunshots/energy + key = SFX_GUNSHOT_ENERGY + file_paths = list( 'sound/weapons/gunshot/bolter.ogg', 'sound/weapons/laser1.ogg', 'sound/weapons/Laser2.ogg', @@ -827,8 +644,9 @@ 'sound/weapons/laserstrong.ogg' ) -/singleton/sound_category/shaker_shaking - sounds = list( +/datum/sound_effect/shaker_shaking + key = SFX_SHAKER_SHAKING + file_paths = list( 'sound/items/shaking1.ogg', 'sound/items/shaking2.ogg', 'sound/items/shaking3.ogg', @@ -837,20 +655,16 @@ 'sound/items/shaking6.ogg' ) -/singleton/sound_category/shaker_lid_off - sounds = list( +/datum/sound_effect/shaker_lid_off + key = SFX_SHAKER_LID_OFF + file_paths = list( 'sound/items/shaker_lid_off1.ogg', 'sound/items/shaker_lid_off2.ogg' ) -/singleton/sound_category/boops - sounds = list( - 'sound/machines/boop1.ogg', - 'sound/machines/boop2.ogg' - ) - -/singleton/sound_category/quick_arcade // quick punchy arcade sounds - sounds = list( +/datum/sound_effect/quick_arcade + key = SFX_ARCADE + file_paths = list( 'sound/arcade/get_fuel.ogg', 'sound/arcade/heal.ogg', 'sound/arcade/hit.ogg', @@ -860,8 +674,9 @@ 'sound/arcade/steal.ogg' ) -/singleton/sound_category/footstep_skrell_sound - sounds = list( +/datum/sound_effect/footstep_skrell_sound + key = SFX_FOOTSTEP_SKRELL + file_paths = list( 'sound/effects/footstep_skrell1.ogg', 'sound/effects/footstep_skrell2.ogg', 'sound/effects/footstep_skrell3.ogg', @@ -870,8 +685,9 @@ 'sound/effects/footstep_skrell6.ogg' ) -/singleton/sound_category/footstep_unathi_sound - sounds = list( +/datum/sound_effect/footstep_unathi_sound + key = SFX_FOOTSTEP_UNATHI + file_paths = list( 'sound/effects/footstep_unathi1.ogg', 'sound/effects/footstep_unathi2.ogg', 'sound/effects/footstep_unathi3.ogg', @@ -879,23 +695,26 @@ 'sound/effects/footstep_unathi5.ogg' ) -/singleton/sound_category/hammer_sound - sounds = list( +/datum/sound_effect/hammer_sound + key = SFX_HAMMER + file_paths = list( 'sound/items/tools/hammer1.ogg', 'sound/items/tools/hammer2.ogg', 'sound/items/tools/hammer3.ogg', 'sound/items/tools/hammer4.ogg' ) -/singleton/sound_category/shovel_sound - sounds = list( +/datum/sound_effect/shovel_sound + key = SFX_SHOVEL + file_paths = list( 'sound/items/tools/shovel1.ogg', 'sound/items/tools/shovel2.ogg', 'sound/items/tools/shovel3.ogg' ) -/singleton/sound_category/supermatter_calm - sounds = list( +/datum/sound_effect/supermatter_calm + key = SFX_SM_CALM + file_paths = list( 'sound/machines/sm/accent/normal/1.ogg', 'sound/machines/sm/accent/normal/2.ogg', 'sound/machines/sm/accent/normal/3.ogg', @@ -931,8 +750,9 @@ 'sound/machines/sm/accent/normal/33.ogg' ) -/singleton/sound_category/supermatter_delam - sounds = list( +/datum/sound_effect/supermatter_delam + key = SFX_SM_DELAM + file_paths = list( 'sound/machines/sm/accent/delam/1.ogg', 'sound/machines/sm/accent/delam/2.ogg', 'sound/machines/sm/accent/delam/3.ogg', @@ -968,89 +788,103 @@ 'sound/machines/sm/accent/delam/33.ogg' ) -/singleton/sound_category/rip_sound - sounds = list( +/datum/sound_effect/rip_sound + key = SFX_RIP + file_paths = list( 'sound/items/rip1.ogg', 'sound/items/rip2.ogg', 'sound/items/rip3.ogg', 'sound/items/rip4.ogg' ) -/singleton/sound_category/ointment_sound - sounds = list( +/datum/sound_effect/ointment_sound + key = SFX_OINTMENT + file_paths = list( 'sound/items/ointment1.ogg', 'sound/items/ointment2.ogg', 'sound/items/ointment3.ogg' ) -/singleton/sound_category/clown_sound - sounds = list( +/datum/sound_effect/clown_sound + key = SFX_FOOTSTEP_CLOWN + file_paths = list( 'sound/effects/clownstep1.ogg', 'sound/effects/clownstep2.ogg' ) -/singleton/sound_category/hivebot_melee - sounds = list( +/datum/sound_effect/hivebot_melee + key = SFX_HIVEBOT_MELEE + file_paths = list( 'sound/effects/creatures/hivebot/hivebot-attack.ogg', 'sound/effects/creatures/hivebot/hivebot-attack-001.ogg' ) -/singleton/sound_category/hivebot_wail - sounds = list( +/datum/sound_effect/hivebot_wail + key = SFX_HIVEBOT_WAIL + file_paths = list( 'sound/effects/creatures/hivebot/hivebot-bark-001.ogg', 'sound/effects/creatures/hivebot/hivebot-bark-003.ogg', 'sound/effects/creatures/hivebot/hivebot-bark-005.ogg', ) -/singleton/sound_category/print_sound - sounds = list( +/datum/sound_effect/print_sound + key = SFX_PRINT + file_paths = list( 'sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg' ) -/singleton/sound_category/hatch_open - sounds = list( +/datum/sound_effect/hatch_open + key = SFX_HATCH_OPEN + file_paths = list( 'sound/machines/hatch_open1.ogg', 'sound/machines/hatch_open2.ogg', 'sound/machines/hatch_open3.ogg', 'sound/machines/hatch_open4.ogg' ) -/singleton/sound_category/hatch_close - sounds = list( +/datum/sound_effect/hatch_close + key = SFX_HATCH_CLOSE + file_paths = list( 'sound/machines/hatch_close1.ogg', 'sound/machines/hatch_close2.ogg' ) -/singleton/sound_category/electrical_hum - sounds = list( +/datum/sound_effect/electrical_hum + key = SFX_ELECTRICAL_HUM + file_paths = list( 'sound/machines/electrical_hum1.ogg', 'sound/machines/electrical_hum2.ogg' ) -/singleton/sound_category/electrical_spark - sounds = list( +// Few seconds of sparking sounds, unlike SFX_SPARKS, which is just a single spark sound. +/datum/sound_effect/electrical_spark + key = SFX_ELECTRICAL_SPARK + file_paths = list( 'sound/machines/electrical_spark1.ogg' ) -/singleton/sound_category/steam_pipe - sounds = list( +/datum/sound_effect/steam_pipe + key = SFX_STEAM_PIPE + file_paths = list( 'sound/machines/steam_pipe1.ogg', 'sound/machines/steam_pipe2.ogg', 'sound/machines/steam_pipe3.ogg', 'sound/machines/steam_pipe4.ogg' ) -/singleton/sound_category/bear_loud - sounds = list( +/datum/sound_effect/bear_loud + key = SFX_ANIMAL_BEAR + file_paths = list( 'sound/effects/creatures/bear_loud_1.ogg', 'sound/effects/creatures/bear_loud_2.ogg', 'sound/effects/creatures/bear_loud_3.ogg', 'sound/effects/creatures/bear_loud_4.ogg' ) -/singleton/sound_category/robot_talk - sounds = list( +/datum/sound_effect/robot_talk + key = SFX_ROBOT_TALK + file_paths = list( 'sound/effects/creatures/robot_talk_1.ogg', 'sound/effects/creatures/robot_talk_2.ogg' ) diff --git a/code/game/turfs/flooring/flooring_.dm b/code/game/turfs/flooring/flooring_.dm index 11c27aa01d7..4dec45426b1 100644 --- a/code/game/turfs/flooring/flooring_.dm +++ b/code/game/turfs/flooring/flooring_.dm @@ -33,7 +33,7 @@ var/descriptor = "tiles" var/flags var/can_paint = FALSE - var/footstep_sound = /singleton/sound_category/tiles_footstep + var/footstep_sound = SFX_FOOTSTEP_TILES //How we smooth with other flooring var/decal_layer = DECAL_LAYER @@ -63,7 +63,7 @@ damage_temperature = T0C+80 flags = TURF_HAS_EDGES | TURF_OFFSET_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_SHOVEL | TURF_CAN_BREAK | TURF_CAN_BURN build_type = /obj/item/stack/tile/grass - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS floor_smooth = SMOOTH_NONE wall_smooth = SMOOTH_ALL space_smooth = SMOOTH_NONE @@ -75,7 +75,7 @@ icon_base = "asteroid" flags = TURF_HAS_EDGES | TURF_OFFSET_EDGES | TURF_REMOVE_SHOVEL build_type = null - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID /singleton/flooring/snow name = "snow" @@ -84,7 +84,7 @@ icon_base = "snow" has_base_range = 2 flags = TURF_HAS_EDGES | TURF_OFFSET_EDGES | TURF_REMOVE_SHOVEL - footstep_sound = /singleton/sound_category/snow_footstep + footstep_sound = SFX_FOOTSTEP_SNOW //Carpet /singleton/flooring/carpet @@ -95,7 +95,7 @@ build_type = /obj/item/stack/tile/carpet damage_temperature = T0C+200 flags = TURF_HAS_CORNERS | TURF_HAS_INNER_CORNERS | TURF_REMOVE_CROWBAR | TURF_CAN_BREAK | TURF_CAN_BURN | TURF_HAS_EDGES - footstep_sound = /singleton/sound_category/carpet_footstep + footstep_sound = SFX_FOOTSTEP_CARPET floor_smooth = SMOOTH_NONE wall_smooth = SMOOTH_NONE space_smooth = SMOOTH_NONE @@ -166,7 +166,7 @@ flags = TURF_REMOVE_CROWBAR | TURF_CAN_BREAK | TURF_CAN_BURN build_type = /obj/item/stack/tile/floor can_paint = TRUE - footstep_sound = /singleton/sound_category/tiles_footstep + footstep_sound = SFX_FOOTSTEP_TILES has_damage_range = 4 has_burn_range = 1 @@ -192,7 +192,7 @@ flags = TURF_REMOVE_CROWBAR | TURF_CAN_BREAK build_type = /obj/item/stack/tile/lino can_paint = TRUE - footstep_sound = /singleton/sound_category/carpet_footstep + footstep_sound = SFX_FOOTSTEP_CARPET /singleton/flooring/linoleum/diamond icon_base = "lino_diamond" @@ -323,7 +323,7 @@ descriptor = "planks" build_type = /obj/item/stack/tile/wood flags = TURF_CAN_BREAK | TURF_IS_FRAGILE | TURF_REMOVE_SCREWDRIVER | TURF_CAN_BURN - footstep_sound = /singleton/sound_category/wood_footstep + footstep_sound = SFX_FOOTSTEP_WOOD can_paint = TRUE /singleton/flooring/wood/birch @@ -366,7 +366,7 @@ apply_thermal_conductivity = 0.025 apply_heat_capacity = 325000 can_paint = TRUE - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING /singleton/flooring/reinforced/large icon = 'icons/turf/flooring/tiles.dmi' @@ -424,7 +424,7 @@ icon_base = "diona" has_base_range = 4 flags = TURF_ACID_IMMUNE | TURF_REMOVE_SHOVEL | TURF_REMOVE_WELDER - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS //material turfs diff --git a/code/game/turfs/flooring/flooring_premade_.dm b/code/game/turfs/flooring/flooring_premade_.dm index 8fd45b8ec98..5548ccc8167 100644 --- a/code/game/turfs/flooring/flooring_premade_.dm +++ b/code/game/turfs/flooring/flooring_premade_.dm @@ -1,5 +1,5 @@ /turf/simulated/floor/plating - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING // ------------------------------- grids @@ -181,7 +181,7 @@ name = "airless plating" initial_gas = null temperature = TCMB - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING roof_type = null /turf/simulated/floor/tiled/airless diff --git a/code/game/turfs/flooring/flooring_premade_fancy.dm b/code/game/turfs/flooring/flooring_premade_fancy.dm index 8c59ce3cb0a..23c24f743a6 100644 --- a/code/game/turfs/flooring/flooring_premade_fancy.dm +++ b/code/game/turfs/flooring/flooring_premade_fancy.dm @@ -8,7 +8,7 @@ tile_outline = "carpet" broken_overlay = "carpet" initial_flooring = /singleton/flooring/carpet - footstep_sound = /singleton/sound_category/carpet_footstep + footstep_sound = SFX_FOOTSTEP_CARPET /turf/simulated/floor/carpet/cyan name = "cyan carpet" @@ -70,7 +70,7 @@ icon = 'icons/turf/flooring/tiles.dmi' icon_state = "wood" initial_flooring = /singleton/flooring/wood - footstep_sound = /singleton/sound_category/wood_footstep + footstep_sound = SFX_FOOTSTEP_WOOD tile_outline = "wood" tile_decal_state = "wood" broken_overlay = "wood" diff --git a/code/game/turfs/flooring/flooring_premade_other.dm b/code/game/turfs/flooring/flooring_premade_other.dm index 39796f76668..1918d7c7c07 100644 --- a/code/game/turfs/flooring/flooring_premade_other.dm +++ b/code/game/turfs/flooring/flooring_premade_other.dm @@ -82,7 +82,7 @@ /turf/simulated/floor/plating/snow icon = 'icons/turf/flooring/snow.dmi' icon_state = "snowplating" - footstep_sound = /singleton/sound_category/snow_footstep + footstep_sound = SFX_FOOTSTEP_SNOW /turf/simulated/floor/vaurca name = "alien floor" @@ -105,7 +105,7 @@ icon = 'icons/turf/flooring/grass.dmi' icon_state = "grass0" initial_flooring = /singleton/flooring/grass - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS /turf/simulated/floor/grass/no_edge has_edge_icon = FALSE @@ -114,7 +114,7 @@ name = "biomass flooring" icon = 'icons/turf/flooring/diona.dmi' icon_state = "diona0" - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS initial_flooring = /singleton/flooring/diona /turf/simulated/floor/diona/airless diff --git a/code/game/turfs/flooring/flooring_premade_reinforced.dm b/code/game/turfs/flooring/flooring_premade_reinforced.dm index 88aa8988aae..62864ec0e0d 100644 --- a/code/game/turfs/flooring/flooring_premade_reinforced.dm +++ b/code/game/turfs/flooring/flooring_premade_reinforced.dm @@ -6,7 +6,7 @@ icon = 'icons/turf/flooring/tiles.dmi' icon_state = "reinforced" initial_flooring = /singleton/flooring/reinforced - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING tile_outline = "reinforced" tile_decal_state = "reinforced_light" diff --git a/code/game/turfs/simulated/shuttle_turfs.dm b/code/game/turfs/simulated/shuttle_turfs.dm index 8c775bd5488..8d65d513e10 100644 --- a/code/game/turfs/simulated/shuttle_turfs.dm +++ b/code/game/turfs/simulated/shuttle_turfs.dm @@ -531,7 +531,7 @@ icon = 'icons/turf/shuttle.dmi' icon_state = "floor" initial_flooring = /singleton/flooring/shuttle - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING /turf/simulated/floor/shuttle/yellow icon_state = "floor2" @@ -575,7 +575,7 @@ /turf/simulated/floor/shuttle/skrell icon_state = "skrell_purple" initial_flooring = /singleton/flooring/shuttle/skrell - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/simulated/floor/shuttle/skrell/airless initial_gas = null diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 4508e924280..5561a1f268b 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -159,7 +159,7 @@ spark(EB, 5) to_chat(user, SPAN_NOTICE("You slash \the [src] with \the [EB], igniting the thermite!")) - playsound(src, /singleton/sound_category/spark_sound, 50, 1) + playsound(src, SFX_SPARKS, 50, 1) playsound(src, 'sound/weapons/blade.ogg', 50, 1) thermitemelt(user) @@ -213,14 +213,14 @@ else if(istype(attacking_item, /obj/item/melee/energy)) var/obj/item/melee/energy/WT = attacking_item if(WT.active) - dismantle_sound = /singleton/sound_category/spark_sound + dismantle_sound = SFX_SPARKS dismantle_verb = "slicing" cut_delay *= 0.5 else to_chat(user, SPAN_NOTICE("You need to activate the weapon to do that!")) return else if(istype(attacking_item, /obj/item/melee/energy/blade)) - dismantle_sound = /singleton/sound_category/spark_sound + dismantle_sound = SFX_SPARKS dismantle_verb = "slicing" cut_delay *= 0.5 else if(istype(attacking_item, /obj/item/melee/chainsword)) @@ -238,7 +238,7 @@ dismantle_sound = P.drill_sound cut_delay -= P.digspeed else if(istype(attacking_item,/obj/item/melee/arm_blade/)) - dismantle_sound = /singleton/sound_category/pickaxe_sound + dismantle_sound = SFX_PICKAXE dismantle_verb = "slicing and stabbing" cut_delay *= 1.5 diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index b52349abb04..d7ab072c172 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -2,7 +2,7 @@ name = "beach" icon = 'icons/misc/beach.dmi' icon_state = "sand" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/simulated/floor/beach/sand name = "sand" @@ -14,12 +14,12 @@ name = "coastline" icon = 'icons/misc/beach2.dmi' icon_state = "sandwater" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER /turf/simulated/floor/beach/water name = "water" icon_state = "water" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER movement_cost = 2 var/watertype = "water5" var/obj/effect/water_effect/water_overlay diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 64bbb105ec2..42fb7f3d3c6 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -25,7 +25,7 @@ /// Has the turf been blessed? var/blessed = 0 - var/footstep_sound = /singleton/sound_category/tiles_footstep + var/footstep_sound = SFX_FOOTSTEP_TILES var/list/decals var/list/blueprints diff --git a/code/game/turfs/unsimulated/beach.dm b/code/game/turfs/unsimulated/beach.dm index eb9822eecff..22a7ebf0593 100644 --- a/code/game/turfs/unsimulated/beach.dm +++ b/code/game/turfs/unsimulated/beach.dm @@ -1,23 +1,23 @@ /turf/unsimulated/beach name = "Beach" icon = 'icons/misc/beach.dmi' - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/unsimulated/beach/sand name = "Sand" icon_state = "sand" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/unsimulated/beach/coastline name = "Coastline" icon = 'icons/misc/beach2.dmi' icon_state = "sandwater" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/unsimulated/beach/water name = "Water" icon_state = "water" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER /turf/unsimulated/beach/water/Initialize() . = ..() diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm index 2761ceace1b..4f2a2740e20 100644 --- a/code/game/turfs/unsimulated/floor.dm +++ b/code/game/turfs/unsimulated/floor.dm @@ -19,7 +19,7 @@ name = "snow" icon = 'icons/turf/flooring/snow.dmi' icon_state = "snow0" - footstep_sound = /singleton/sound_category/snow_footstep + footstep_sound = SFX_FOOTSTEP_SNOW /turf/unsimulated/floor/concrete name = "concrete" diff --git a/code/modules/background/space_sectors/coalition/coalition.dm b/code/modules/background/space_sectors/coalition/coalition.dm index f750c3f355f..84c66612046 100644 --- a/code/modules/background/space_sectors/coalition/coalition.dm +++ b/code/modules/background/space_sectors/coalition/coalition.dm @@ -93,8 +93,8 @@ starlight_range = 2 lobby_tracks = list( - 'sound/music/regional/xanu/xanu_rock_1.ogg', - 'sound/music/regional/xanu/xanu_rock_2.ogg' + 'sound/music/ingame/xanu/xanu_rock_1.ogg', + 'sound/music/ingame/xanu/xanu_rock_2.ogg' ) /datum/space_sector/burzsia diff --git a/code/modules/cargo/delivery/receptacle.dm b/code/modules/cargo/delivery/receptacle.dm index 2e731ff69db..a5b4df0d777 100644 --- a/code/modules/cargo/delivery/receptacle.dm +++ b/code/modules/cargo/delivery/receptacle.dm @@ -118,7 +118,7 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l var/obj/structure/cargo_receptacle/selected_delivery_point = get_cargo_package_delivery_point(src) if(selected_delivery_point) visible_message("\The [src] beeps, \"[SPAN_NOTICE("New package available for delivery.")]\"") - playsound(src, /singleton/sound_category/print_sound, 50, TRUE) + playsound(src, SFX_PRINT, 50, TRUE) var/obj/item/cargo_package/printed_package = new /obj/item/cargo_package/offship(get_turf(user), selected_delivery_point) printed_package.pays_horizon_account = pays_horizon_account @@ -167,7 +167,7 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l if(!found_user_account) playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, TRUE) visible_message("\The [src] buzzes harshly, \"[SPAN_WARNING("Delivery complete! User account details not found... printing cash tip...")]\"") - playsound(loc, /singleton/sound_category/print_sound, 50, TRUE) + playsound(loc, SFX_PRINT, 50, TRUE) var/obj/item/spacecash/bundle/cash_tip = new /obj/item/spacecash/bundle(loc) cash_tip.worth = package.pay_amount * 0.02 cash_tip.update_icon() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 41e2da4a85f..fef3b23cf91 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -319,7 +319,7 @@ var/obj/item/material/shard/S = material.place_shard(T) M.embed(S) - playsound(src.loc, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src.loc, SFX_BREAK_GLASS, 70, 1) qdel(src) /obj/item/clothing/suit/armor/handle_shield(mob/user, var/on_back, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") @@ -1278,7 +1278,7 @@ if(ismob(src.loc)) var/mob/M = src.loc M.update_inv_w_uniform() - playsound(M, /singleton/sound_category/rustle_sound, 15, TRUE, SILENCED_SOUND_EXTRARANGE, ignore_walls = FALSE) + playsound(M, SFX_RUSTLE, 15, TRUE, SILENCED_SOUND_EXTRARANGE, ignore_walls = FALSE) /obj/item/clothing/under/proc/set_sensors(mob/user as mob) var/mob/M = user diff --git a/code/modules/clothing/ears/earphones.dm b/code/modules/clothing/ears/earphones.dm index 57f9c2efa9a..f5ffcfef12a 100644 --- a/code/modules/clothing/ears/earphones.dm +++ b/code/modules/clothing/ears/earphones.dm @@ -19,7 +19,6 @@ /obj/item/clothing/ears/earphones name = "earphones" desc = "A pair of wireless earphones. Includes a little slot for a music cartridge." - desc_mechanics = "Shift+Click to Start/Stop a playlist. Alt+Click to Pause/Resume the current track. Click character to eject cartridge. Alternatively, use verbs." icon = 'icons/obj/clothing/ears/earmuffs.dmi' icon_state = "earphones" item_state = "earphones" @@ -48,6 +47,19 @@ /// Is a track playing? For icon updates. var/playing = FALSE + /// The current song's timer to play the next song. + var/autoplay_timer + + /// How much time is left on the autoplay timer, for handling pausing/unpausing. + var/autoplay_timeleft + +/obj/item/clothing/ears/earphones/mechanics_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Full controls can be found in the Verbs list, under Object tab -> Earphones." + . += "ALT-click \the [src] to quickly Pause/Resume the current track." + . += "SHIFT-click \the [src] to quickly Play/Stop the current playlist (this will reset the current track to the start.)" + . += "Use \the [src] while in-hand to eject the cartridge." + /obj/item/clothing/ears/earphones/Destroy() StopPlaying() QDEL_NULL(music_cartridge) @@ -107,6 +119,9 @@ soundplayer_token.Stop() QDEL_NULL(soundplayer_token) // A sound token is created per-song, so we'll be liberal with cleaning up old tokens. + reset_autoplay_timer() + + // Icon/Overlay stuff for the music notes ClearOverlays() worn_overlay = null @@ -121,16 +136,18 @@ // Make sure we aren't doubling up on soundtokens if(!soundplayer_token) if(current_playlist && (current_playlist.len > 0)) - var/sound/sound_to_play = current_playlist[playlist_index].sound - soundplayer_token = GLOB.sound_player.PlayLoopingSound(src, src, sound_to_play, volume, range, 20, prefer_mute = FALSE, sound_type = ASFX_MUSIC) + var/sound/sound_to_play = current_playlist[playlist_index].song_path + soundplayer_token = GLOB.sound_player.PlayNonloopingSound(src, src, sound_to_play, volume, range, 20, prefer_mute = FALSE, sound_type = ASFX_MUSIC) - //addtimer(CALLBACK(src, PROC_REF(next_song), user), (sound_to_play.len SECOND)) // Queue the next_song() proc when the current song ends. Clean up handled under next_song() which also calls stopplaying() to end this token - // If someone gets ^this^ to work, you can switch out PlayLoopingSound for PlayNonloopingSound - // the sound's len variable doesn't seem to actually store a length :/ + // Queue the next_song() proc when the current song ends. Clean up handled under next_song() which also calls stopplaying() to end this token + autoplay_timeleft = current_playlist[playlist_index].song_length + autoplay_timer = addtimer(CALLBACK(src, PROC_REF(next_song), user), autoplay_timeleft, TIMER_UNIQUE|TIMER_STOPPABLE) // Chat Display - var/current_track_name = current_playlist[playlist_index].title - to_chat(user,SPAN_NOTICE("Now Playing: Track [playlist_index] — '[current_track_name]'.")) + var/current_track_name = current_playlist[playlist_index].song_name + var/current_track_length = current_playlist[playlist_index].song_length + var/current_track_length_text = DisplayTimeText(current_track_length) + to_chat(user,SPAN_NOTICE("Now Playing: Track [playlist_index] — '[current_track_name]' ([current_track_length_text]).")) // Icon/Overlay stuff for the music notes worn_overlay = "music" // this is rather annoying but prevents the music notes on getting colored @@ -145,14 +162,15 @@ if(use_check_and_message(user)) return - if(!music_cartridge || (current_playlist.len == 0)) + var/playlist_length = current_playlist.len + if(!music_cartridge || !playlist_length) to_chat(user, SPAN_WARNING("No playlist loaded.")) return StopPlaying() // Stop & Cleanup previous sound token // Sound iteration - if(playlist_index + 1 <= current_playlist.len) + if(playlist_index + 1 <= playlist_length) playlist_index++ else playlist_index = 1 @@ -162,20 +180,33 @@ /obj/item/clothing/ears/earphones/proc/previous_song(mob/user) if(use_check_and_message(usr)) return - if(!music_cartridge || (current_playlist.len == 0)) + + var/playlist_length = current_playlist.len + if(!music_cartridge || !playlist_length) to_chat(user, SPAN_WARNING("No playlist loaded.")) return StopPlaying() // Stop & Cleanup previous sound token // Sound iteration - if(playlist_index - 1 < 1) - playlist_index = 1 + if(playlist_index == 1) + playlist_index = playlist_length else playlist_index-- StartPlaying(user) // New sound token created here +/** + * Saves the current timer's timeleft as autoplay_timeleft before deleting and nulling the timer. + */ +/obj/item/clothing/ears/earphones/proc/reset_autoplay_timer() + if(autoplay_timer) + autoplay_timeleft = timeleft(autoplay_timer) + deltimer(autoplay_timer) + autoplay_timer = null + return TRUE + return FALSE + /* Verbs: @@ -197,7 +228,7 @@ if(ismob(src.loc)) usr.visible_message(SPAN_NOTICE("[usr] clicks a button on [usr.get_pronoun("his")] [src].")) - playsound(usr, /singleton/sound_category/button_sound, 10) + playsound(usr, SFX_BUTTON, 10) if(soundplayer_token) StopPlaying() @@ -243,12 +274,13 @@ if(ismob(src.loc)) usr.visible_message(SPAN_NOTICE("[usr] clicks a button on [usr.get_pronoun("his")] [src].")) - playsound(usr, /singleton/sound_category/button_sound, 10) + playsound(usr, SFX_BUTTON, 10) if(soundplayer_token) if(soundplayer_token.status != SOUND_PAUSED) soundplayer_token.Pause() to_chat(usr, SPAN_NOTICE("Music paused.")) - + // Save the time remaining on the song and delete the current autoplay timer. + reset_autoplay_timer() // Icon/Overlay stuff for the music notes ClearOverlays() worn_overlay = null @@ -259,6 +291,9 @@ soundplayer_token.Unpause() to_chat(usr, SPAN_NOTICE("Music unpaused.")) + // Re-create the autoplay timer with autoplay_timeleft length. + autoplay_timer = addtimer(CALLBACK(src, PROC_REF(next_song), usr), autoplay_timeleft, TIMER_UNIQUE|TIMER_STOPPABLE) + // Icon/Overlay stuff for the music notes worn_overlay = "music" // this is rather annoying but prevents the music notes on getting colored update_icon() @@ -272,7 +307,7 @@ set src in usr usr.visible_message(SPAN_NOTICE("[usr] clicks a button on [usr.get_pronoun("his")] [src].")) - playsound(usr, /singleton/sound_category/button_sound, 10) + playsound(usr, SFX_BUTTON, 10) next_song(usr) /obj/item/clothing/ears/earphones/verb/previous_song_verb() @@ -281,7 +316,7 @@ set src in usr usr.visible_message(SPAN_NOTICE("[usr] clicks a button on [usr.get_pronoun("his")] [src].")) - playsound(usr, /singleton/sound_category/button_sound, 10) + playsound(usr, SFX_BUTTON, 10) previous_song(usr) /obj/item/clothing/ears/earphones/verb/eject_music_cartridge_verb() @@ -338,9 +373,30 @@ Earphone Variants icon_state = "earbuds" item_state = "earbuds" -/* - Music Cartridges -*/ +/// Track datums, used in jukeboxes +/datum/track + /// Readable name, used in the jukebox menu + var/song_name = "Generic" + /// Filepath of the song + var/song_path + /// How long is the song in deciseconds. Default is an arbitrary low value, should be overwritten. + var/song_length = 10 SECONDS + /// What cartridge (if any) this song came from. + var/source + +/// Track datums, used in jukeboxes +/datum/track/New(var/new_song_name, var/new_song_path, var/new_song_length, var/new_source) + . = ..() + song_name = new_song_name + song_path = new_song_path + song_length = new_song_length + source = new_source + +// Default track supplied for testing and also because it's a banger +/datum/track/default + song_name = "Tintin on the Moon" + song_path = 'sound/music/ingame/ss13/title3.ogg' + song_length = 3 MINUTES + 52 SECONDS /obj/item/music_cartridge name = "music cartridge" @@ -348,105 +404,108 @@ Earphone Variants icon = 'icons/obj/item/music_cartridges.dmi' icon_state = "generic" w_class = WEIGHT_CLASS_SMALL - - var/list/datum/track/tracks = list() + var/list/datum/track/tracks + /// Whether or not this cartridge can be removed from the datum/jukebox it belongs to. + var/hardcoded = FALSE /obj/item/music_cartridge/ss13 name = "Spacer Classics Vol. 1" desc = "An old music cartridge with a cheap-looking label." - tracks = list( - new/datum/track("Title 1", 'sound/music/title1.ogg'), - new/datum/track("Title 2", 'sound/music/title2.ogg'), - new/datum/track("Title 3", 'sound/music/title3.ogg'), - new/datum/track("Traitor", 'sound/music/traitor.ogg'), - new/datum/track("Space", 'sound/music/space.ogg'), - new/datum/track("Title 3 Mk2", 'sound/music/title3mk2.ogg') + new/datum/track("Scratch", 'sound/music/ingame/ss13/title1.ogg', 2 MINUTES + 30 SECONDS), + new/datum/track("D`Bert", 'sound/music/ingame/ss13/title2.ogg', 1 MINUTES + 58 SECONDS), + new/datum/track("Uplift", 'sound/music/ingame/ss13/title3.ogg', 3 MINUTES + 52 SECONDS), + new/datum/track("Uplift II", 'sound/music/ingame/ss13/title3mk2.ogg', 3 MINUTES + 59 SECONDS), + new/datum/track("Suspenseful", 'sound/music/ingame/ss13/traitor.ogg', 5 MINUTES + 30 SECONDS), + new/datum/track("Beyond", 'sound/music/ingame/ss13/ambispace.ogg', 3 MINUTES + 15 SECONDS), + new/datum/track("D`Fort", 'sound/music/ingame/ss13/song_game.ogg', 3 MINUTES + 50 SECONDS), + new/datum/track("Endless Space", 'sound/music/ingame/ss13/space.ogg', 3 MINUTES + 33 SECONDS), + new/datum/track("Thunderdome", 'sound/music/ingame/ss13/THUNDERDOME.ogg', 3 MINUTES + 22 SECONDS) ) +// Hardcoded variant +/obj/item/music_cartridge/ss13/demo + hardcoded = TRUE /obj/item/music_cartridge/audioconsole name = "SCC Welcome Package" desc = "A music cartridge with some company-selected songs. Nothing special, everyone got one of these in their welcome boxes..." - tracks = list( - new/datum/track("Amsterdam", 'sound/music/audioconsole/Amsterdam.ogg'), - new/datum/track("Butterflies", 'sound/music/audioconsole/Butterflies.ogg'), - new/datum/track("Childhood", 'sound/music/audioconsole/Childhood.ogg'), - new/datum/track("Don't Rush", 'sound/music/audioconsole/DontRush.ogg'), - new/datum/track("Lips", 'sound/music/audioconsole/Lips.ogg'), - new/datum/track("Number 0", 'sound/music/audioconsole/Number0.ogg'), - new/datum/track("Phoron Will Make Us Rich", 'sound/music/audioconsole/PhoronWillMakeUsRich.ogg'), - new/datum/track("That Ain't Chopin", 'sound/music/audioconsole/ThatAintChopin.ogg'), - new/datum/track("The Pianist", 'sound/music/audioconsole/ThePianist.ogg'), - new/datum/track("When", 'sound/music/audioconsole/When.ogg') + new/datum/track("Butterflies", 'sound/music/ingame/scc/Butterflies.ogg', 3 MINUTES + 37 SECONDS), + new/datum/track("That Ain't Chopin", 'sound/music/ingame/scc/ThatAintChopin.ogg', 3 MINUTES + 29 SECONDS), + new/datum/track("Don't Rush", 'sound/music/ingame/scc/DontRush.ogg', 3 MINUTES + 56 SECONDS), + new/datum/track("Phoron Will Make Us Rich", 'sound/music/ingame/scc/PhoronWillMakeUsRich.ogg', 2 MINUTES + 14 SECONDS), + new/datum/track("Amsterdam", 'sound/music/ingame/scc/Amsterdam.ogg', 3 MINUTES + 42 SECONDS), + new/datum/track("When", 'sound/music/ingame/scc/When.ogg', 2 MINUTES + 41 SECONDS), + new/datum/track("Number 0", 'sound/music/ingame/scc/Number0.ogg', 2 MINUTES + 37 SECONDS), + new/datum/track("The Pianist", 'sound/music/ingame/scc/ThePianist.ogg', 4 MINUTES + 25 SECONDS), + new/datum/track("Lips", 'sound/music/ingame/scc/Lips.ogg', 3 MINUTES + 20 SECONDS), + new/datum/track("Childhood", 'sound/music/ingame/scc/Childhood.ogg', 2 MINUTES + 13 SECONDS) ) - -/* - Regional Music Cartridges -*/ +// Hardcoded variant +/obj/item/music_cartridge/audioconsole/demo + hardcoded = TRUE /obj/item/music_cartridge/konyang_retrowave name = "Konyang Vibes 2463" desc = "A music cartridge with a Konyang flag on the hololabel." icon_state = "konyang" - tracks = list( - new/datum/track("Konyang Vibes #1", 'sound/music/lobby/konyang/konyang-1.ogg'), - new/datum/track("Konyang Vibes #2", 'sound/music/lobby/konyang/konyang-2.ogg'), - new/datum/track("Konyang Vibes #3", 'sound/music/lobby/konyang/konyang-3.ogg') + new/datum/track("Konyang Vibes #1", 'sound/music/ingame/konyang/konyang-1.ogg', 2 MINUTES + 59 SECONDS, /obj/item/music_cartridge/konyang_retrowave), + new/datum/track("Konyang Vibes #2", 'sound/music/ingame/konyang/konyang-2.ogg', 2 MINUTES + 58 SECONDS, /obj/item/music_cartridge/konyang_retrowave), + new/datum/track("Konyang Vibes #3", 'sound/music/ingame/konyang/konyang-3.ogg', 2 MINUTES + 43 SECONDS, /obj/item/music_cartridge/konyang_retrowave), + new/datum/track("Konyang Vibes #4", 'sound/music/ingame/konyang/konyang-4.ogg', 3 MINUTES + 8 SECONDS, /obj/item/music_cartridge/konyang_retrowave) ) +// Hardcoded variant +/obj/item/music_cartridge/konyang_retrowave/demo + hardcoded = TRUE /obj/item/music_cartridge/venus_funkydisco name = "Top of the Charts 66 (Venusian Hits)" desc = "A glitzy, pink music cartridge with more Venusian hits." icon_state = "venus" - tracks = list( - new/datum/track("dance させる", 'sound/music/regional/venus/dance.ogg'), - new/datum/track("love sensation", 'sound/music/regional/venus/love_sensation.ogg'), - new/datum/track("All Night", 'sound/music/regional/venus/all_night.ogg'), - new/datum/track("#billyocean", 'sound/music/regional/venus/billy_ocean.ogg'), - new/datum/track("Artificially Sweetened", 'sound/music/regional/venus/artificially_sweetened.ogg'), - new/datum/track("Real Love", 'sound/music/regional/venus/real_love.ogg'), - new/datum/track("F U N K Y G I R L <3", 'sound/music/regional/venus/funky_girl.ogg'), - new/datum/track("Break The System", 'sound/music/regional/venus/break_the_system.ogg') + new/datum/track("dance させる", 'sound/music/ingame/venus/dance.ogg', 3 MINUTES + 19 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("love sensation", 'sound/music/ingame/venus/love_sensation.ogg', 3 MINUTES + 31 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("All Night", 'sound/music/ingame/venus/all_night.ogg', 3 MINUTES + 11 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("#billyocean", 'sound/music/ingame/venus/billy_ocean.ogg', 4 MINUTES + 19 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("Artificially Sweetened", 'sound/music/ingame/venus/artificially_sweetened.ogg', 4 MINUTES + 18 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("Real Love", 'sound/music/ingame/venus/real_love.ogg', 3 MINUTES + 52 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("F U N K Y G I R L <3", 'sound/music/ingame/venus/funky_girl.ogg', 2 MINUTES + 2 SECONDS, /obj/item/music_cartridge/venus_funkydisco), + new/datum/track("Break The System", 'sound/music/ingame/venus/break_the_system.ogg', 1 MINUTES + 23 SECONDS, /obj/item/music_cartridge/venus_funkydisco) ) - /obj/item/music_cartridge/xanu_rock name = "Indulgence EP (X-Rock)" //feel free to reflavour as a more varied x-rock mixtape, instead of a single EP, if other x-rock tracks are added desc = "A music cartridge with a Xanan flag on the hololabel. Some fancy, rainbow text over it reads, 'INDULGENCE'." icon_state = "xanu" - tracks = list( - new/datum/track("Shimmer", 'sound/music/regional/xanu/xanu_rock_3.ogg'), - new/datum/track("Rise", 'sound/music/regional/xanu/xanu_rock_1.ogg'), - new/datum/track("Indulgence", 'sound/music/regional/xanu/xanu_rock_2.ogg') + new/datum/track("Rise", 'sound/music/ingame/xanu/xanu_rock_1.ogg', 3 MINUTES + 3 SECONDS, /obj/item/music_cartridge/xanu_rock), + new/datum/track("Indulgence", 'sound/music/ingame/xanu/xanu_rock_2.ogg', 3 MINUTES + 7 SECONDS, /obj/item/music_cartridge/xanu_rock), + new/datum/track("Shimmer", 'sound/music/ingame/xanu/xanu_rock_3.ogg', 4 MINUTES + 30 SECONDS, /obj/item/music_cartridge/xanu_rock) ) /obj/item/music_cartridge/adhomai_swing name = "Electro-Swing of Adhomai" desc = "A red music cartridge holding the most widely-known Adhomian electro-swing songs." icon_state = "adhomai" - tracks = list( - new/datum/track("Boolean Sisters", 'sound/music/phonograph/boolean_sisters.ogg'), - new/datum/track("Electro Swing", 'sound/music/phonograph/electro_swing.ogg'), - new/datum/track("Le Swing", 'sound/music/phonograph/le_swing.ogg'), - new/datum/track("Posin", 'sound/music/phonograph/posin.ogg') + new/datum/track("Boolean Sisters", 'sound/music/ingame/adhomai/boolean_sisters.ogg', 3 MINUTES + 17 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Electro Swing", 'sound/music/ingame/adhomai/electro_swing.ogg', 3 MINUTES + 18 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Le Swing", 'sound/music/ingame/adhomai/le_swing.ogg', 2 MINUTES + 11 SECONDS, /obj/item/music_cartridge/adhomai_swing), + new/datum/track("Posin", 'sound/music/ingame/adhomai/posin.ogg', 2 MINUTES + 50 SECONDS, /obj/item/music_cartridge/adhomai_swing) ) +// Hardcoded variant +/obj/item/music_cartridge/adhomai_swing/demo + hardcoded = TRUE /obj/item/music_cartridge/europa_various name = "Europa: Best of the 50s" desc = "A music cartridge storing the best tracks to listen to on a submarine dive." - icon_state = "generic" - tracks = list( - new/datum/track("Where The Rays Leap", 'sound/music/regional/europa/where_the_dusks_rays_leap.ogg'), - new/datum/track("Casting Faint Shadows", 'sound/music/regional/europa/casting_faint_shadows.ogg'), - new/datum/track("Weedance", 'sound/music/regional/europa/weedance.ogg'), - new/datum/track("Instrumental Park", 'sound/music/regional/europa/instrumental_park.ogg'), - new/datum/track("Way Between The Shadows", 'sound/music/regional/europa/way_between_the_shadows.ogg'), - new/datum/track("Deep Beneath the Solemn Waves a Vast Underwater Landscape, Brimming With Bizarre, Eerily Gleaming Cyclopean Structures of, What Must Surely Be, Non-Human Origin, Stretched Out Across the Ocean Floor", 'sound/music/regional/europa/deep_beneath-.ogg'), + new/datum/track("Where The Rays Leap", 'sound/music/ingame/europa/where_the_dusks_rays_leap.ogg', 3 MINUTES + 41 SECONDS, /obj/item/music_cartridge/europa_various), + new/datum/track("Casting Faint Shadows", 'sound/music/ingame/europa/casting_faint_shadows.ogg', 8 MINUTES + 56 SECONDS, /obj/item/music_cartridge/europa_various), + new/datum/track("Weedance", 'sound/music/ingame/europa/weedance.ogg', 7 MINUTES + 35 SECONDS, /obj/item/music_cartridge/europa_various), + new/datum/track("Instrumental Park", 'sound/music/ingame/europa/instrumental_park.ogg', 5 MINUTES + 39 SECONDS, /obj/item/music_cartridge/europa_various), + new/datum/track("Way Between The Shadows", 'sound/music/ingame/europa/way_between_the_shadows.ogg', 8 MINUTES + 21 SECONDS, /obj/item/music_cartridge/europa_various), + new/datum/track("Deep Beneath the Solemn Waves a Vast Underwater Landscape, Brimming With Bizarre, Eerily Gleaming Cyclopean Structures of, What Must Surely Be, Non-Human Origin, Stretched Out Across the Ocean Floor", 'sound/music/ingame/europa/deep_beneath-.ogg', 7 MINUTES + 18 SECONDS, /obj/item/music_cartridge/europa_various) ) - diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 70564936b13..170b34bae86 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -66,7 +66,7 @@ BLIND // can't see anything if(stabbed && (body_parts_covered & EYES) && !(item_flags & ITEM_FLAG_THICK_MATERIAL) && shatter_material && prob(stab_item.force * 5)) var/mob/M = loc M.visible_message(SPAN_WARNING("\The [src] [M] is wearing gets shattered!")) - playsound(loc, /singleton/sound_category/glass_break_sound, 70, TRUE) + playsound(loc, SFX_BREAK_GLASS, 70, TRUE) new shatter_material(M.loc) qdel(src) return FALSE diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 30ca330493f..6c75f3cb85d 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -226,7 +226,7 @@ matter = list(DEFAULT_WALL_MATERIAL = 1000) drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD /obj/item/clothing/gloves/powerfist name = "power fist" diff --git a/code/modules/clothing/gloves/xeno/unathi.dm b/code/modules/clothing/gloves/xeno/unathi.dm index c6b0f3c1023..419a4d45237 100644 --- a/code/modules/clothing/gloves/xeno/unathi.dm +++ b/code/modules/clothing/gloves/xeno/unathi.dm @@ -26,7 +26,7 @@ force = 5 punch_force = 5 drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD matter = list(MATERIAL_BRONZE = 1000) /obj/item/clothing/gloves/unathi/ancient/mador diff --git a/code/modules/clothing/head/xenos/unathi.dm b/code/modules/clothing/head/xenos/unathi.dm index 790127c2e2c..6b15b8a7c27 100644 --- a/code/modules/clothing/head/xenos/unathi.dm +++ b/code/modules/clothing/head/xenos/unathi.dm @@ -78,7 +78,7 @@ ) matter = list(MATERIAL_BRONZE = 1000) drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD /obj/item/clothing/head/helmet/unathi/ancient/mador name = "\improper Sinta'Mador bronze helmet" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index d8682c5d42a..f79e5cf7d1d 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -104,7 +104,7 @@ LASER = ARMOR_LASER_SMALL ) drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD matter = list(MATERIAL_BRONZE = 1000) /obj/item/clothing/shoes/ancient_unathi/mador diff --git a/code/modules/clothing/spacesuits/rig/modules/ninja.dm b/code/modules/clothing/spacesuits/rig/modules/ninja.dm index 24a93d91aeb..b2dab2c2600 100644 --- a/code/modules/clothing/spacesuits/rig/modules/ninja.dm +++ b/code/modules/clothing/spacesuits/rig/modules/ninja.dm @@ -96,7 +96,7 @@ if(!M || !T) return - playsound(T, /singleton/sound_category/spark_sound, 50, 1) + playsound(T, SFX_SPARKS, 50, 1) new phase_out_visual(T, M.dir) /obj/item/rig_module/teleporter/engage(atom/target, mob/user, var/notify_ai) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index b817df8296b..efb19fc8091 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -165,7 +165,7 @@ if(!isturf(picked)) return spark(user, 5) - playsound(user.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(user.loc, SFX_SPARKS, 50, 1) user.forceMove(picked) return BULLET_ACT_BLOCK diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index c4cf04d538a..7cfb91f1cf8 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -59,7 +59,7 @@ /obj/item/clothing/suit/storage/toggle/proc/toggle_open() opened = !opened to_chat(usr, SPAN_NOTICE("You [opened ? "unbutton" : "button up"] \the [src].")) - playsound(src, /singleton/sound_category/rustle_sound, EQUIP_SOUND_VOLUME, TRUE) + playsound(src, SFX_RUSTLE, EQUIP_SOUND_VOLUME, TRUE) icon_state = "[initial(icon_state)][opened ? "_open" : ""]" item_state = icon_state update_icon() diff --git a/code/modules/clothing/suits/xeno/unathi.dm b/code/modules/clothing/suits/xeno/unathi.dm index a4cb80d7df0..f1d45920e9e 100644 --- a/code/modules/clothing/suits/xeno/unathi.dm +++ b/code/modules/clothing/suits/xeno/unathi.dm @@ -73,7 +73,7 @@ ) matter = list(MATERIAL_BRONZE = 1000) drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD /obj/item/clothing/suit/armor/unathi/ancient/mador name = "\improper Sinta'Mador bronze armor" diff --git a/code/modules/cooking/machinery/cooking_machines/container.dm b/code/modules/cooking/machinery/cooking_machines/container.dm index 41815ba60a3..719aa995fbb 100644 --- a/code/modules/cooking/machinery/cooking_machines/container.dm +++ b/code/modules/cooking/machinery/cooking_machines/container.dm @@ -276,8 +276,8 @@ place_verb = "onto" desc = "A board for preparing food. Not chopping. I'm sorry." icon_state = "board" - drop_sound = /singleton/sound_category/generic_drop_sound - pickup_sound = /singleton/sound_category/generic_pickup_sound + drop_sound = SFX_DROP + pickup_sound = SFX_PICKUP appliancetype = MIX atom_flags = ATOM_FLAG_OPEN_CONTAINER // Will still react volume = 15 // for things like jelly sandwiches etc diff --git a/code/modules/cooking/machinery/cooking_machines/microwave.dm b/code/modules/cooking/machinery/cooking_machines/microwave.dm index d5cbc1946fe..a5e01f091ff 100644 --- a/code/modules/cooking/machinery/cooking_machines/microwave.dm +++ b/code/modules/cooking/machinery/cooking_machines/microwave.dm @@ -202,7 +202,7 @@ /obj/machinery/appliance/cooker/microwave/proc/broke() spark(loc, 2, GLOB.alldirs) - playsound(loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(loc, SFX_SPARKS, 50, 1) if (prob(100 * break_multiplier)) visible_message(SPAN_WARNING("\The [src] sputters and grinds to a halt!")) //Let them know they're stupid broken = WRENCH_BROKEN // Make it broken so it can't be used until fixed diff --git a/code/modules/cooking/plates.dm b/code/modules/cooking/plates.dm index af863192640..b8267e3f274 100644 --- a/code/modules/cooking/plates.dm +++ b/code/modules/cooking/plates.dm @@ -32,7 +32,7 @@ Plates that can hold your cooking stuff var/obj/item/material/kitchen/utensil/U = attacking_item if(istype(attacking_item,/obj/item/material/kitchen/utensil/fork)) to_chat(user, SPAN_NOTICE("You uselessly pass \the [U] through \the [src]'s contents.")) - playsound(user.loc, /singleton/sound_category/generic_pour_sound, 50, 1) + playsound(user.loc, SFX_POUR, 50, 1) return else if(U.scoop_food) @@ -215,7 +215,7 @@ Plates that can hold your cooking stuff "[SPAN_BOLD("[user]")] pours onto \the [target] from \the [src].", SPAN_NOTICE("You transfer [trans] units of the solution.") ) - playsound(get_turf(user), /singleton/sound_category/generic_pour_sound, 10, TRUE) + playsound(get_turf(user), SFX_POUR, 10, TRUE) return TRUE /obj/item/reagent_containers/bowl/gravy_boat/on_reagent_change() diff --git a/code/modules/cooking/trays.dm b/code/modules/cooking/trays.dm index 506f5b979bc..46442bd70d6 100644 --- a/code/modules/cooking/trays.dm +++ b/code/modules/cooking/trays.dm @@ -18,8 +18,8 @@ obj_flags = OBJ_FLAG_CONDUCTABLE matter = list(DEFAULT_WALL_MATERIAL = 3000) recyclable = TRUE - hitsound = /singleton/sound_category/bottle_hit_broken - drop_sound = /singleton/sound_category/bottle_hit_broken + hitsound = SFX_BOTTLE_HIT_BROKEN + drop_sound = SFX_BOTTLE_HIT_BROKEN var/max_carry = 20 var/current_weight = 0 var/cooldown = 0 //shield bash cooldown. based on world.time @@ -183,7 +183,7 @@ user.visible_message("[user] spills their tray all over the floor.", SPAN_WARNING("You spill the tray!")) else visible_message(SPAN_NOTICE("The tray scatters its contents all over the area.")) - playsound(dropspot, /singleton/sound_category/tray_hit_sound, 50, 1) + playsound(dropspot, SFX_TRAY_HIT, 50, 1) /obj/item/tray/throw_impact(atom/hit_atom) spill(null, loc) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 169f5bd922c..9e7d2e2a830 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -990,7 +990,7 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/fluff/holoconsole/attack_self(mob/user) if(on && !(world.time < last_sound + sound_delay)) - playsound(loc, /singleton/sound_category/quick_arcade, 60) + playsound(loc, SFX_ARCADE, 60) last_sound = world.time return return ..() @@ -1077,7 +1077,7 @@ All custom items with worn sprites must follow the contained sprite system: http var/obj/item/fluff/holoconsole/H = parent_console.resolve() if(H?.on) - playsound(H.loc, /singleton/sound_category/quick_arcade, 60) + playsound(H.loc, SFX_ARCADE, 60) last_sound = world.time /obj/item/fluff/holoconsole_controller/r // Holoconsole - Qoi Liuiq - shestrying diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index 91725f7ffc6..b1c622cd038 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -66,7 +66,7 @@ for(var/obj/item/spacecash/S in src) S.forceMove(src.loc) - playsound(loc, /singleton/sound_category/print_sound, 50, 1) + playsound(loc, SFX_PRINT, 50, 1) /obj/machinery/atm/emag_act(var/remaining_charges, var/mob/user) if(emagged) @@ -107,7 +107,7 @@ var/obj/item/spacecash/cash = attacking_item //consume the money authenticated_account.money += cash.worth - playsound(loc, /singleton/sound_category/print_sound, 50, 1) + playsound(loc, SFX_PRINT, 50, 1) //create a transaction log entry var/datum/transaction/T = new() @@ -329,7 +329,7 @@ release_held_id(usr) // printing ends the ATM session similar to real life + prevents spam . = TRUE - playsound(loc, /singleton/sound_category/print_sound, 50, 1) + playsound(loc, SFX_PRINT, 50, 1) if ("print_transaction") if(authenticated_account) var/obj/item/paper/R = new() @@ -371,7 +371,7 @@ R.stamps += "
This paper has been stamped by the Automatic Teller Machine." print(R, user = usr) - playsound(loc, /singleton/sound_category/print_sound, 50, 1) + playsound(loc, SFX_PRINT, 50, 1) release_held_id(usr) // printing ends the ATM session similar to real life + prevents spam . = TRUE diff --git a/code/modules/effects/map_effects/sound_emitter.dm b/code/modules/effects/map_effects/sound_emitter.dm index e589aa5690e..effec9b4934 100644 --- a/code/modules/effects/map_effects/sound_emitter.dm +++ b/code/modules/effects/map_effects/sound_emitter.dm @@ -49,12 +49,12 @@ ..() /obj/effect/map_effect/interval/sound_emitter/punching - sounds_to_play = list(/singleton/sound_category/punch_sound) + sounds_to_play = SFX_PUNCH interval_lower_bound = 5 interval_upper_bound = 1 SECOND /obj/effect/map_effect/interval/sound_emitter/explosions - sounds_to_play = list(/singleton/sound_category/explosion_sound) + sounds_to_play = SFX_EXPLOSION interval_lower_bound = 5 SECONDS interval_upper_bound = 10 SECONDS @@ -62,15 +62,15 @@ sounds_to_play = list('sound/effects/explosionfar.ogg') /obj/effect/map_effect/interval/sound_emitter/gunfight - sounds_to_play = list(/singleton/sound_category/gunshots) + sounds_to_play = SFX_GUNSHOT_ANY interval_lower_bound = 5 interval_upper_bound = 2 SECONDS /obj/effect/map_effect/interval/sound_emitter/gunfight/ballistic - sounds_to_play = list(/singleton/sound_category/gunshots/ballistic) + sounds_to_play = SFX_GUNSHOT_BALLISTIC /obj/effect/map_effect/interval/sound_emitter/gunfight/energy - sounds_to_play = list(/singleton/sound_category/gunshots/energy) + sounds_to_play = SFX_GUNSHOT_ENERGY // I'm not sorry. diff --git a/code/modules/effects/sparks/spawner.dm b/code/modules/effects/sparks/spawner.dm index 4389e72839a..d213ac1457b 100644 --- a/code/modules/effects/sparks/spawner.dm +++ b/code/modules/effects/sparks/spawner.dm @@ -27,11 +27,11 @@ if (location) var/obj/effect/visual/sparks/S = new(location, src, 0) //Trigger one on the tile it's on S.start() - playsound(location, /singleton/sound_category/spark_sound, 100, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + playsound(location, SFX_SPARKS, 100, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) QUEUE_VISUAL(S) // Queue it. while (total_sparks <= src.amount) - playsound(location, /singleton/sound_category/spark_sound, 100, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + playsound(location, SFX_SPARKS, 100, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) var/direction = 0 if (LAZYLEN(src.spread)) diff --git a/code/modules/fabrication/_fabricator.dm b/code/modules/fabrication/_fabricator.dm index fb4649b23be..3da4d5da912 100644 --- a/code/modules/fabrication/_fabricator.dm +++ b/code/modules/fabrication/_fabricator.dm @@ -4,7 +4,7 @@ ABSTRACT_TYPE(/obj/machinery/fabricator) use_power = POWER_USE_IDLE idle_power_usage = 10 active_power_usage = 2000 - clicksound = /singleton/sound_category/keyboard_sound + clicksound = SFX_KEYBOARD clickvol = 30 manufacturer = "hephaestus" @@ -214,7 +214,7 @@ ABSTRACT_TYPE(/obj/machinery/fabricator) usr.set_machine(src) add_fingerprint(usr) - playsound(src, /singleton/sound_category/keyboard_sound, 50) + playsound(src, SFX_KEYBOARD, 50) if(action == "make") START_PROCESSING_MACHINE(src, MACHINERY_PROCESS_SELF) diff --git a/code/modules/games/gamehelm.dm b/code/modules/games/gamehelm.dm index ffe307a8d0d..69f18bb2489 100644 --- a/code/modules/games/gamehelm.dm +++ b/code/modules/games/gamehelm.dm @@ -68,7 +68,7 @@ if(playing_game) if(!muted) - playsound(loc, /singleton/sound_category/quick_arcade, 20) + playsound(loc, SFX_ARCADE, 20) if(ismob(loc)) var/picked_action = pick(game_actions) var/self_action = game_actions[picked_action] @@ -77,7 +77,7 @@ loc.visible_message("[loc] [picked_action]!", SPAN_NOTICE("You [self_action]!"), range = 3) else if(!muted) - playsound(loc, /singleton/sound_category/computerbeep_sound, 20) + playsound(loc, SFX_COMPUTER_BEEP, 20) /obj/item/gamehelm/AltClick(mob/user) if(use_check(user)) @@ -123,7 +123,7 @@ else user.visible_message("[user] taps on a few buttons and \the [src] springs to life!", SPAN_NOTICE("You tap on a few buttons and \the [src] springs to life!"), range = 3) if(!muted) - playsound(loc, /singleton/sound_category/boops, 25) + playsound(loc, SFX_COMPUTER_BOOP, 25) set_game(game_type_to_state[choice]) return ..() diff --git a/code/modules/hallucinations/types/basic.dm b/code/modules/hallucinations/types/basic.dm index d7726632a90..062bb7cc3f0 100644 --- a/code/modules/hallucinations/types/basic.dm +++ b/code/modules/hallucinations/types/basic.dm @@ -66,7 +66,7 @@ "This is your directive 11. [pick("Greimorians have killed several crew.", "Boarders have taken a hostage.", "[holder] is armed and dangerous. Avoid them at all costs.", "Two black-suited individuals have taken items from the armory.")]", "Please stop [pick("drawing in blood. It's unsanitary.", "killing your fellow crew. It's rude.", "[holder] at all costs.", "falling down holes.")]", "[holder] disappoints us all once again.") - sound_to(holder, 'sound/misc/announcements/notice.ogg') + sound_to(holder, 'sound/ai/announcements/notice.ogg') to_chat(holder, "

Station Announcement

") to_chat(holder, SPAN_ALERT(pick(body))) to_chat(holder, SPAN_ALERT("-[pick(hal_sender)]")) diff --git a/code/modules/hallucinations/types/powers.dm b/code/modules/hallucinations/types/powers.dm index 17801fc8765..f1a85a1333e 100644 --- a/code/modules/hallucinations/types/powers.dm +++ b/code/modules/hallucinations/types/powers.dm @@ -19,7 +19,7 @@ duration = rand(2, 4) MINUTES switch(rand(1, 3)) if(1) - sound_to(holder, 'sound/misc/announcements/notice.ogg') + sound_to(holder, 'sound/ai/announcements/notice.ogg') to_chat(holder, "

Ion Storm?

") to_chat(holder, SPAN_ALERT("It has come to our attention that the [station_name(TRUE)] has passed through an unusual ion storm. Several crewmembers are exhibiting unusual abilities.")) if(2) @@ -106,7 +106,7 @@ duration = rand(2, 4) MINUTES switch(rand(1, 3)) if(1) - sound_to(holder, 'sound/misc/announcements/notice.ogg') + sound_to(holder, 'sound/ai/announcements/notice.ogg') to_chat(holder, "

Ion Storm?

") to_chat(holder, SPAN_ALERT("It has come to our attention that the [station_name(TRUE)] has passed through an unusual ion storm. Several crewmembers are exhibiting unusual abilities.")) if(2) diff --git a/code/modules/hallucinations/types/sound.dm b/code/modules/hallucinations/types/sound.dm index 97b01e504b7..e17f7fe1865 100644 --- a/code/modules/hallucinations/types/sound.dm +++ b/code/modules/hallucinations/types/sound.dm @@ -21,17 +21,17 @@ 'sound/misc/nymphchirp.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/windowdoor.ogg', - /singleton/sound_category/glass_break_sound, + SFX_BREAK_GLASS, 'sound/weapons/railgun.ogg', 'sound/effects/phasein.ogg', - /singleton/sound_category/spark_sound, + SFX_SPARKS, 'sound/effects/stealthoff.ogg', 'sound/voice/chitter1.ogg', 'sound/voice/chitter2.ogg', 'sound/effects/squelch1.ogg', 'sound/items/wrench.ogg', 'sound/items/Welder.ogg', - /singleton/sound_category/crowbar_sound, + SFX_CROWBAR, 'sound/items/Screwdriver.ogg', 'sound/items/drill_use.ogg', 'sound/items/air_wrench.ogg') diff --git a/code/modules/heavy_vehicle/equipment/combat.dm b/code/modules/heavy_vehicle/equipment/combat.dm index 618d600621b..568d76cd05f 100644 --- a/code/modules/heavy_vehicle/equipment/combat.dm +++ b/code/modules/heavy_vehicle/equipment/combat.dm @@ -451,7 +451,7 @@ return AURA_FALSE|AURA_CANCEL spark(get_turf(src), 5, GLOB.alldirs) - playsound(get_turf(src), /singleton/sound_category/spark_sound, 25, TRUE) + playsound(get_turf(src), SFX_SPARKS, 25, TRUE) /obj/aura/mechshield/hitby(atom/movable/hitting_atom, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) . = ..() diff --git a/code/modules/heavy_vehicle/equipment/medical.dm b/code/modules/heavy_vehicle/equipment/medical.dm index 4c10081adfe..fb1e1f01421 100644 --- a/code/modules/heavy_vehicle/equipment/medical.dm +++ b/code/modules/heavy_vehicle/equipment/medical.dm @@ -385,7 +385,7 @@ for(var/mob/pilot in user_vehicle.pilots) R.show_content(pilot) user_vehicle.visible_message(SPAN_NOTICE("\The [src] spits out a piece of paper.")) - playsound(user_vehicle.loc, /singleton/sound_category/print_sound, 50, 1) + playsound(user_vehicle.loc, SFX_PRINT, 50, 1) R.forceMove(user_vehicle.loc) /obj/item/device/healthanalyzer/mech/proc/get_medical_data(var/mob/living/carbon/human/H) diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index b519cdef6a7..eb414eef215 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -18,7 +18,7 @@ icon = 'icons/turf/flooring/carpet.dmi' icon_state = "carpet" initial_flooring = /singleton/flooring/carpet - footstep_sound = /singleton/sound_category/carpet_footstep + footstep_sound = SFX_FOOTSTEP_CARPET /turf/simulated/floor/holofloor/carpet/rubber name = "rubber carpet" @@ -83,7 +83,7 @@ initial_flooring = /singleton/flooring/reinforced name = "reinforced holofloor" icon_state = "reinforced" - footstep_sound = /singleton/sound_category/tiles_footstep + footstep_sound = SFX_FOOTSTEP_TILES /turf/simulated/floor/holofloor/space icon = 'icons/turf/space.dmi' @@ -109,7 +109,7 @@ base_icon_state = "sand" base_icon = 'icons/misc/beach.dmi' initial_flooring = null - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/simulated/floor/holofloor/beach/sand name = "sand" @@ -119,13 +119,13 @@ icon = 'icons/misc/beach2.dmi' icon_state = "sandwater" base_icon_state = "sandwater" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER /turf/simulated/floor/holofloor/beach/water name = "water" icon_state = "seashallow" base_icon_state = "seashallow" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER /turf/simulated/floor/holofloor/desert name = "desert sand" @@ -137,7 +137,7 @@ icon = 'icons/turf/flooring/asteroid.dmi' base_icon = 'icons/turf/flooring/asteroid.dmi' initial_flooring = null - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/simulated/floor/holofloor/desert/Initialize() . = ..() @@ -191,7 +191,7 @@ return /obj/structure/window/reinforced/holowindow/shatter(var/display_message = 1) - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) if(display_message) visible_message("[src] fades away as it shatters!") qdel(src) @@ -233,7 +233,7 @@ /obj/machinery/door/window/holowindoor/shatter(var/display_message = 1) src.density = 0 - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) if(display_message) visible_message("[src] fades away as it shatters!") qdel(src) @@ -330,8 +330,8 @@ hitsound = 'sound/weapons/bladeslice.ogg' can_embed = 0 drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound - equip_sound = /singleton/sound_category/sword_equip_sound + pickup_sound = SFX_PICKUP_SWORD + equip_sound = SFX_EQUIP_SWORD /obj/item/holo/practicesword/holorapier name = "fencing rapier" diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 8d3334aa01e..08b170a0a5e 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -193,7 +193,7 @@ reagents.trans_to_holder(R.reagents, R.chem_volume) user.visible_message(SPAN_NOTICE("[user] rolls a cigarette in their hands with \the [attacking_item] and [src]."), SPAN_NOTICE("You roll a cigarette in your hands with \the [attacking_item] and [src].")) - playsound(src, 'sound/bureaucracy/paperfold.ogg', 25, 1) + playsound(src, 'sound/items/bureaucracy/paperfold.ogg', 25, 1) user.put_in_active_hand(R) qdel(attacking_item) qdel(src) diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index f9a0d652dc5..7b3c7da15df 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -280,7 +280,7 @@ health -= (rand(3,5)*5) sampled = 1 else - playsound(loc, /singleton/sound_category/wood_break_sound, 50, TRUE) + playsound(loc, SFX_BREAK_WOOD, 50, TRUE) var/damage = attacking_item.force ? attacking_item.force : 1 //always do at least a little damage if(attacking_item.edge || attacking_item.sharp) damage *= 2 @@ -294,7 +294,7 @@ manual_unbuckle(user) var/mob/living/carbon/human/H = user - playsound(loc, /singleton/sound_category/wood_break_sound, 50, TRUE) + playsound(loc, SFX_BREAK_WOOD, 50, TRUE) var/damage = H.default_attack.get_unarmed_damage(H, src) ? H.default_attack.get_unarmed_damage(H, src) : 1 if(H.default_attack.edge || H.default_attack.sharp) damage *= 2 diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 9e00381b3ac..d4dc549af57 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -475,7 +475,7 @@ tray_light = new_light user.visible_message(SPAN_NOTICE("\The [user] sets \the [src] to a light level of [tray_light] lumens."), SPAN_NOTICE("You set the \the [src] to a light level of [tray_light] lumens.")) - playsound(src, /singleton/sound_category/button_sound, 50, TRUE) + playsound(src, SFX_BUTTON, 50, TRUE) /obj/machinery/portable_atmospherics/hydroponics/CtrlClick(var/mob/user) if(usr.incapacitated()) @@ -534,7 +534,7 @@ RC.reagents.remove_reagent(/singleton/reagent/water, amountToRemove, 1) waterlevel += amountToRemove user.visible_message("[user] transfers some water to the tray.", "You transfer about [amountToRemove] units of water to the tray.") - playsound(src, /singleton/sound_category/generic_pour_sound, 25, 1) + playsound(src, SFX_POUR, 25, 1) else to_chat(user, SPAN_WARNING("This tray is full of water already.")) return TRUE @@ -626,7 +626,7 @@ SPAN_DANGER("You begin to remove the weeds from \the [src].")) if(do_after(user, 1 SECOND)) - playsound(src, /singleton/sound_category/shovel_sound, 25, 1) + playsound(src, SFX_SHOVEL, 25, 1) user.visible_message(SPAN_DANGER("[user] uproots the weeds from \the [src]."), SPAN_DANGER("You successfully remove the weeds from \the [src].")) weedlevel = 0 @@ -641,7 +641,7 @@ SPAN_DANGER("You begin to uproot the contents of \the [src].")) if(do_after(user, 2 SECOND)) - playsound(src, /singleton/sound_category/shovel_sound, 25, 1) + playsound(src, SFX_SHOVEL, 25, 1) user.visible_message(SPAN_DANGER("[user] uproots the contents of \the [src]!"), SPAN_DANGER("You successfully uproot the contents of \the [src].")) health = 0 @@ -680,7 +680,7 @@ else if(attacking_item.force && seed && !closed_system) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) user.do_attack_animation(src) - playsound(loc, /singleton/sound_category/swing_hit_sound, 25, TRUE) + playsound(loc, SFX_SWING_HIT, 25, TRUE) user.visible_message(SPAN_DANGER("\The [seed.display_name] has been attacked by [user] with \the [attacking_item]!")) if(!dead) var/total_damage = attacking_item.force @@ -714,7 +714,7 @@ update_use_power(POWER_USE_ACTIVE) stasis = TRUE - playsound(src, /singleton/sound_category/button_sound, 50, TRUE) + playsound(src, SFX_BUTTON, 50, TRUE) update_icon() return diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm index 052e98e8543..8ffa14d7c4e 100644 --- a/code/modules/hydroponics/trays/tray_soil.dm +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -25,7 +25,7 @@ RC.reagents.remove_reagent(/singleton/reagent/water, amountToRemove, 1) waterlevel += amountToRemove user.visible_message("[user] pours [amountToRemove]u of water into the soil."," You pour [amountToRemove]u of water into the soil.") - playsound(src, /singleton/sound_category/generic_pour_sound, 25, 1) + playsound(src, SFX_POUR, 25, 1) else to_chat(user, "The soil is saturated with water already.") return 1 diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 11f338c2420..f4b4234780d 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -38,7 +38,7 @@ installed_gun = gun size += gun.w_class to_chat(user, SPAN_NOTICE("You slide \the [gun] into the firing mechanism.")) - playsound(src.loc, /singleton/sound_category/crowbar_sound, 50, 1) + playsound(src.loc, SFX_CROWBAR, 50, 1) else ..() @@ -47,7 +47,7 @@ installed_gun.forceMove(get_turf(src)) to_chat(user, SPAN_NOTICE("You slide \the [installed_gun] out of the firing mechanism.")) size = initial(size) - playsound(loc, /singleton/sound_category/crowbar_sound, 50, 1) + playsound(loc, SFX_CROWBAR, 50, 1) installed_gun = null else to_chat(user, SPAN_NOTICE("There's no weapon to remove from the mechanism.")) diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 21c6fe99387..d78fbca485c 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -222,7 +222,7 @@ if(src.dat) user << browse(HTML_SKELETON("Penned by [author].
" + "[dat]"), "window=book") user.visible_message("[user] opens a book titled \"[src.title]\" and begins reading intently.") - playsound(loc, 'sound/bureaucracy/bookopen.ogg', 50, TRUE) + playsound(loc, 'sound/items/bureaucracy/bookopen.ogg', 50, TRUE) onclose(user, "book") else to_chat(user, "This book is completely blank!") @@ -305,7 +305,7 @@ to_chat(user, SPAN_NOTICE("You begin to carve out [title].")) if(attacking_item.use_tool(src, user, 30, volume = 50)) to_chat(user, SPAN_NOTICE("You carve out the pages from [title]! You didn't want to read it anyway.")) - playsound(loc, 'sound/bureaucracy/papercrumple.ogg', 50, 1) + playsound(loc, 'sound/items/bureaucracy/papercrumple.ogg', 50, 1) new /obj/item/shreddedp(get_turf(src)) carved = 1 return diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index fd44a389e0a..e788674a7fd 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -448,7 +448,7 @@ if(href_list["scan"]) flick(insert_anim, src) - playsound(loc, 'sound/bureaucracy/scan.ogg', 75, 1) + playsound(loc, 'sound/items/bureaucracy/scan.ogg', 75, 1) for(var/obj/item/book/B in contents) cache = B break @@ -486,7 +486,7 @@ user.drop_from_inventory(paper,src) user.visible_message(SPAN_NOTICE("\The [user] loads some paper into \the [src]."), SPAN_NOTICE("You load some paper into \the [src].")) visible_message(SPAN_NOTICE("\The [src] begins to hum as it warms up its printing drums.")) - playsound(T, 'sound/bureaucracy/binder.ogg', 75, 1) + playsound(T, 'sound/items/bureaucracy/binder.ogg', 75, 1) binding = TRUE sleep(rand(200,400)) binding = FALSE @@ -495,7 +495,7 @@ paper.forceMove(T) return visible_message(SPAN_NOTICE("\The [src] whirs as it prints and binds a new book.")) - playsound(T, 'sound/bureaucracy/print.ogg', 75, 1) + playsound(T, 'sound/items/bureaucracy/print.ogg', 75, 1) var/obj/item/book/b = new(T) b.dat = paper.info b.name = "blank book" diff --git a/code/modules/martial_arts/skrell.dm b/code/modules/martial_arts/skrell.dm index ee59a1fca76..f0accb2d89a 100644 --- a/code/modules/martial_arts/skrell.dm +++ b/code/modules/martial_arts/skrell.dm @@ -26,7 +26,7 @@ if(D.stat || D.weakened) return 0 D.visible_message(SPAN_WARNING("[A] leg sweeps [D]!")) - playsound(get_turf(A), /singleton/sound_category/swing_hit_sound, 50, 1, -1) + playsound(get_turf(A), SFX_SWING_HIT, 50, 1, -1) D.apply_damage(5, DAMAGE_BRUTE) D.Weaken(2) return 1 @@ -34,7 +34,7 @@ /datum/martial_art/karak_virul/proc/painful_palm(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch A.do_attack_animation(D) A.visible_message(SPAN_WARNING("[A] strikes [D] with their open palm!")) - playsound(get_turf(A), /singleton/sound_category/punch_sound, 50, 1, -1) + playsound(get_turf(A), SFX_PUNCH, 50, 1, -1) var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) D.apply_damage(25, DAMAGE_PAIN, affecting) return 1 @@ -48,7 +48,7 @@ A.visible_message(SPAN_WARNING("[A] strikes [D]'s [organ.name] with their closed fist!")) D.visible_message(SPAN_DANGER("[D]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!")) admin_attack_log(A, D, "dislocated [organ.joint].", "had his [organ.joint] dislocated.", "dislocated [organ.joint] of") - playsound(get_turf(A), /singleton/sound_category/punch_sound, 50, 1, -1) + playsound(get_turf(A), SFX_PUNCH, 50, 1, -1) return 1 /datum/martial_art/karak_virul/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) diff --git a/code/modules/martial_arts/sol_combat.dm b/code/modules/martial_arts/sol_combat.dm index 788e3a8d767..a96a11da2cf 100644 --- a/code/modules/martial_arts/sol_combat.dm +++ b/code/modules/martial_arts/sol_combat.dm @@ -60,7 +60,7 @@ /datum/martial_art/sol_combat/proc/neck_chop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) A.do_attack_animation(D) A.visible_message(SPAN_WARNING("[A] karate chops [D]'s neck!")) - playsound(get_turf(A), /singleton/sound_category/punch_sound, 50, 1, -1) + playsound(get_turf(A), SFX_PUNCH, 50, 1, -1) D.apply_damage(5, DAMAGE_BRUTE) D.silent += 30 return 1 @@ -83,9 +83,9 @@ picked_hit_type = "stomped on" D.apply_damage(bonus_damage, DAMAGE_BRUTE) if(picked_hit_type == "kicked" || picked_hit_type == "stomped") - playsound(get_turf(D), /singleton/sound_category/swing_hit_sound, 50, 1, -1) + playsound(get_turf(D), SFX_SWING_HIT, 50, 1, -1) else - playsound(get_turf(D), /singleton/sound_category/punch_sound, 50, 1, -1) + playsound(get_turf(D), SFX_PUNCH, 50, 1, -1) A.visible_message(SPAN_DANGER("[A] [picked_hit_type] [D]!")) A.attack_log += "\[[time_stamp()]\] ["[picked_hit_type]"] [D.name] ([D.ckey])" @@ -113,7 +113,7 @@ A.put_in_hands(I) else A.visible_message(SPAN_DANGER("[A] attempted to disarm [D]!")) - playsound(D, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(D, SFX_PUNCH_MISS, 25, 1, -1) return 1 /datum/martial_art/sol_combat/proc/sol_combat_help() diff --git a/code/modules/martial_arts/unathi.dm b/code/modules/martial_arts/unathi.dm index 115c0f5f81b..1ff7c171d6e 100644 --- a/code/modules/martial_arts/unathi.dm +++ b/code/modules/martial_arts/unathi.dm @@ -55,7 +55,7 @@ if(!D.paralysis) A.visible_message("[SPAN_BOLD("[A]")] delivers a blow to \the [SPAN_BOLD("[D]")]'s head, making [D.get_pronoun("him")] fall unconscious!") A.do_attack_animation(D) - playsound(D.loc, /singleton/sound_category/punch_sound, 25, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE+4) + playsound(D.loc, SFX_PUNCH, 25, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE+4) D.AdjustParalysis(5) else to_chat(A, SPAN_WARNING("\The [SPAN_BOLD("[D]")] is already unconscious!")) @@ -68,7 +68,7 @@ return 0 TornadoAnimate(A) A.visible_message(SPAN_WARNING("[A] sweeps [D] with their tail!")) - playsound(get_turf(A), /singleton/sound_category/swing_hit_sound, 50, 1, -1) + playsound(get_turf(A), SFX_SWING_HIT, 50, 1, -1) D.apply_damage(5, DAMAGE_BRUTE) D.Weaken(2) return 1 @@ -90,7 +90,7 @@ playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) else D.visible_message(SPAN_DANGER("[A] attempted to disarm [D]!")) - playsound(D, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(D, SFX_PUNCH_MISS, 25, 1, -1) return 1 /datum/martial_art/kis_khan/proc/hammering_strike(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index dc6d4f86355..53435ac6582 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -111,9 +111,9 @@ //for use in material weapons. because tiles and stacks sound different. since cardboard baseball bats sound different from wooden ones and et cetera. var/weapon_drop_sound = 'sound/items/drop/metalweapon.ogg' var/weapon_pickup_sound = 'sound/items/pickup/metalweapon.ogg' - var/weapon_hitsound = /singleton/sound_category/swing_hit_sound + var/weapon_hitsound = SFX_SWING_HIT - var/shatter_sound = /singleton/sound_category/glass_break_sound //sound it makes when it breaks. + var/shatter_sound = SFX_BREAK_GLASS //sound it makes when it breaks. /// Whether this material is fusion fuel or not. var/is_fusion_fuel @@ -792,7 +792,7 @@ dooropen_noise = 'sound/effects/doorcreaky.ogg' door_icon_base = "wood" destruction_desc = "splinters" - shatter_sound = /singleton/sound_category/wood_break_sound + shatter_sound = SFX_BREAK_WOOD sheet_singular_name = "plank" sheet_plural_name = "planks" golem = SPECIES_GOLEM_WOOD @@ -901,7 +901,7 @@ stack_origin_tech = list(TECH_MATERIAL = 1) door_icon_base = "wood" destruction_desc = "crumples" - shatter_sound = /singleton/sound_category/cardboard_break_sound + shatter_sound = SFX_BREAK_CARDBOARD golem = SPECIES_GOLEM_CARDBOARD drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 6f9580f6b5b..4a2899c8811 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -326,7 +326,7 @@ P.stamps += "
This paper has been stamped by the SCC Ore Processing System." user.visible_message("\The [src] rattles and prints out a sheet of paper.") - playsound(get_turf(src), 'sound/bureaucracy/print_short.ogg', 50, 1) + playsound(get_turf(src), 'sound/items/bureaucracy/print_short.ogg', 50, 1) // reset output_mats = list() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 3c0a2159c27..f5a0c53fa1a 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -21,7 +21,7 @@ attack_verb = list("hit", "pierced", "sliced", "attacked") hitsound = 'sound/weapons/rapidslice.ogg' surgerysound = 'sound/weapons/rapidslice.ogg' - var/drill_sound = /singleton/sound_category/pickaxe_sound + var/drill_sound = SFX_PICKAXE var/drill_verb = "excavating" var/autodrill = 0 //pickaxes must be manually swung to mine, drills can mine rocks via bump sharp = TRUE @@ -30,7 +30,7 @@ var/excavation_amount = 40 var/wielded = FALSE - var/wield_sound = /singleton/sound_category/generic_wield_sound + var/wield_sound = SFX_WIELD var/unwield_sound = null var/force_unwielded = 5.0 var/force_wielded = 15.0 @@ -337,7 +337,7 @@ edge = TRUE drop_sound = 'sound/items/drop/shovel.ogg' pickup_sound = 'sound/items/pickup/shovel.ogg' - usesound = /singleton/sound_category/shovel_sound + usesound = SFX_SHOVEL /obj/item/shovel/is_shovel() return TRUE @@ -1219,13 +1219,13 @@ GLOBAL_LIST_INIT_TYPED(total_extraction_beacons, /obj/structure/extraction_point if(prob(25)) playsound(loc, 'sound/items/Screwdriver.ogg', 20, TRUE) else - playsound(loc, /singleton/sound_category/pickaxe_sound, 20, TRUE) + playsound(loc, SFX_PICKAXE, 20, TRUE) var/successfully_sculpted = FALSE while(do_after(user, 2 SECONDS) && sculpture_process_check(choice, user)) if(times_carved <= 9) times_carved++ - playsound(loc, /singleton/sound_category/pickaxe_sound, 20, TRUE) + playsound(loc, SFX_PICKAXE, 20, TRUE) continue successfully_sculpted = TRUE break @@ -1360,7 +1360,7 @@ GLOBAL_LIST_INIT_TYPED(total_extraction_beacons, /obj/structure/extraction_point /obj/structure/punching_bag/attack_hand(mob/user as mob) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) flick("[icon_state]2", src) - playsound(get_turf(src), /singleton/sound_category/swing_hit_sound, 25, 1, -1) + playsound(get_turf(src), SFX_SWING_HIT, 25, 1, -1) /obj/structure/punching_bag/attackby(obj/item/attacking_item, mob/user) if(istype(attacking_item, /obj/item/holo/practicesword)) diff --git a/code/modules/mining/mine_turf_types.dm b/code/modules/mining/mine_turf_types.dm index 9df91fea42c..874a1dfe8b6 100644 --- a/code/modules/mining/mine_turf_types.dm +++ b/code/modules/mining/mine_turf_types.dm @@ -96,7 +96,7 @@ canSmoothWith = null openspace_override_type = /turf/simulated/open/chasm/airless - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID /turf/simulated/floor/exoplanet/basalt/airless initial_gas = null @@ -129,7 +129,7 @@ canSmoothWith = null openspace_override_type = /turf/simulated/open/chasm/airless - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID /turf/simulated/floor/exoplanet/asteroid/basalt/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) underlay_appearance.icon = icon @@ -165,7 +165,7 @@ smoothing_flags = SMOOTH_MORE | SMOOTH_BORDER | SMOOTH_NO_CLEAR_ICON base_icon = 'icons/turf/smooth/ash.dmi' base_icon_state = "ash" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND does_footprint = TRUE footprint_color = COLOR_ASH track_distance = 6 diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 473aabdbdab..1997a6e7679 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -732,7 +732,7 @@ GLOBAL_LIST_INIT(mineral_can_smooth_with, list( var/dug = 0 //Increments by 1 everytime it's dug. 11 is the last integer that should ever be here. var/digging has_resources = 1 - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID does_footprint = TRUE roof_type = null diff --git a/code/modules/mob/living/carbon/alien/alien_attacks.dm b/code/modules/mob/living/carbon/alien/alien_attacks.dm index eae77767e7f..e1612c068cf 100644 --- a/code/modules/mob/living/carbon/alien/alien_attacks.dm +++ b/code/modules/mob/living/carbon/alien/alien_attacks.dm @@ -40,7 +40,7 @@ step_away(src,M,15) sleep(3) step_away(src,M,15) - playsound(loc, /singleton/sound_category/punch_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH, 25, 1, -1) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(SPAN_DANGER("[M] has punched [src]!"), 1) @@ -54,7 +54,7 @@ adjustBruteLoss(damage) updatehealth() else - playsound(loc, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH_MISS, 25, 1, -1) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(SPAN_DANGER("[M] has attempted to punch [src]!"), 1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 69e1bda6e65..bbdfc331c2c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -145,7 +145,7 @@ return 0 src.apply_damage(shock_damage, DAMAGE_BURN, def_zone, used_weapon="Electrocution") - playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1) + playsound(loc, SFX_SPARKS, 50, 1, -1) if(shock_damage > 15 || tesla_shock) src.visible_message( SPAN_WARNING("[src] was shocked by the [source]!"), \ diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 16f2f484d4c..980e6152c45 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -571,7 +571,7 @@ apply_damage(shock_damage, DAMAGE_BURN, area, used_weapon="Electrocution") shock_damage *= 0.4 - playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1) + playsound(loc, SFX_SPARKS, 50, 1, -1) if (shock_damage > 15) visible_message( @@ -1880,11 +1880,11 @@ if(self) U.visible_message(SPAN_DANGER("[U] pops their [current_limb.joint] back in!"), \ SPAN_DANGER("You pop your [current_limb.joint] back in!")) - playsound(src.loc, /singleton/sound_category/fracture_sound, 50, 1, -2) + playsound(src.loc, SFX_FRACTURE, 50, 1, -2) else U.visible_message(SPAN_DANGER("[U] pops [S]'s [current_limb.joint] back in!"), \ SPAN_DANGER("You pop [S]'s [current_limb.joint] back in!")) - playsound(src.loc, /singleton/sound_category/fracture_sound, 50, 1, -2) + playsound(src.loc, SFX_FRACTURE, 50, 1, -2) current_limb.undislocate() /mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/target = null) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 0443defb7c0..76af24f1b60 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -78,7 +78,7 @@ H.do_attack_animation(src) var/damage = rand(0, 9) if(!damage) - playsound(loc, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH_MISS, 25, 1, -1) visible_message(SPAN_DANGER("[H] has attempted to punch [src]!")) return 0 var/obj/item/organ/external/affecting = get_organ(ran_zone(H.zone_sel.selecting)) @@ -86,7 +86,7 @@ if((H.mutations & HULK) || H.is_berserk()) damage += 5 - playsound(loc, /singleton/sound_category/punch_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH, 25, 1, -1) visible_message(SPAN_DANGER("[H] has punched [src]!")) @@ -143,7 +143,7 @@ LAssailant = WEAKREF(M) H.do_attack_animation(src) - playsound(loc, /singleton/sound_category/grab_sound, 50, FALSE, -1) + playsound(loc, SFX_GRAB, 50, FALSE, -1) if(H.gloves && istype(H.gloves,/obj/item/clothing/gloves/force/syndicate)) //only antag gloves can do this for now G.state = GRAB_AGGRESSIVE G.icon_state = "grabbed1" @@ -450,7 +450,7 @@ to_chat(M, SPAN_WARNING("You cannot disarm \the [I] from \the [src], as it's attached to them!")) //No return here is intentional, as it will then try to disarm other items, and/or play a failed disarm message - playsound(loc, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH_MISS, 25, 1, -1) visible_message(SPAN_DANGER("[M] attempted to disarm [src]!")) return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 665f67ff327..602517c98af 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -17,7 +17,7 @@ emp_act var/deflection_chance = check_martial_deflection_chance() if(prob(deflection_chance)) visible_message(SPAN_WARNING("\The [src] deftly dodges \the [hitting_projectile]!"), SPAN_NOTICE("You deftly dodge \the [hitting_projectile]!")) - playsound(src, /singleton/sound_category/bulletflyby_sound, 75, TRUE) + playsound(src, SFX_BULLET_MISS, 75, TRUE) return BULLET_ACT_FORCE_PIERCE def_zone = check_zone(def_zone) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 301b443944c..eec74a16945 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -117,8 +117,8 @@ var/list/equipment_overlays = list() // Extra overlays from equipped items var/is_noisy = FALSE // if TRUE, movement should make sound. - var/bodyfall_sound = /singleton/sound_category/bodyfall_sound - var/footsound = /singleton/sound_category/blank_footsteps + var/bodyfall_sound = SFX_BODYFALL + var/footsound = SFX_FOOTSTEP_BLANK var/last_x = 0 var/last_y = 0 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 736b69a404b..4e0523f1039 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -420,10 +420,9 @@ /// What zombie species they become var/zombie_type /// Default, can be used for species specific falling sounds - var/bodyfall_sound = /singleton/sound_category/bodyfall_sound + var/bodyfall_sound = SFX_BODYFALL /// Same as above but for footsteps without shoes - var/footsound = /singleton/sound_category/blank_footsteps - + var/footsound = SFX_FOOTSTEP_BLANK /// Sets the base "tint" of the species' sprite, which is then adjusted by the skin tone var/list/character_color_presets diff --git a/code/modules/mob/living/carbon/human/species/station/golem.dm b/code/modules/mob/living/carbon/human/species/station/golem.dm index d4983e3e900..d936037921c 100644 --- a/code/modules/mob/living/carbon/human/species/station/golem.dm +++ b/code/modules/mob/living/carbon/human/species/station/golem.dm @@ -384,7 +384,7 @@ GLOBAL_LIST_INIT(golem_types, list( death_message = "shatters into many shards!" death_message_range = 7 - death_sound = /singleton/sound_category/glass_break_sound + death_sound = SFX_BREAK_GLASS heat_level_1 = T0C+350 heat_level_2 = T0C+550 diff --git a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm index b1b97b4e44c..e2f716de5d3 100644 --- a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm +++ b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm @@ -136,7 +136,7 @@ max_hydration_factor = -1 max_nutrition_factor = -1 - bodyfall_sound = /singleton/sound_category/bodyfall_machine_sound + bodyfall_sound = SFX_BODYFALL_MACHINE possible_cultures = list( /singleton/origin_item/culture/ipc_sol, diff --git a/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm index 25867e6b87e..e9e2d37969a 100644 --- a/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm @@ -75,7 +75,7 @@ /mob/living/carbon/human/proc/check_tag, /mob/living/carbon/human/proc/tie_hair) - bodyfall_sound = /singleton/sound_category/bodyfall_sound + bodyfall_sound = SFX_BODYFALL use_alt_hair_layer = FALSE /datum/species/machine/shell/get_species(var/reference, var/mob/living/carbon/human/H, var/records) diff --git a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm index e81d5dbcb26..f72b448ed52 100644 --- a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm @@ -104,8 +104,8 @@ ) zombie_type = SPECIES_ZOMBIE_SKRELL - bodyfall_sound = /singleton/sound_category/bodyfall_skrell_sound - footsound = /singleton/sound_category/footstep_skrell_sound + bodyfall_sound = SFX_BODYFALL_SKRELL + footsound = SFX_FOOTSTEP_SKRELL alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_LIVER, BP_KIDNEYS, BP_STOMACH) diff --git a/code/modules/mob/living/carbon/human/species/station/tajara/tajaran_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/tajara/tajaran_subspecies.dm index d9ef243603e..bb809c85a88 100644 --- a/code/modules/mob/living/carbon/human/species/station/tajara/tajaran_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/tajara/tajaran_subspecies.dm @@ -157,7 +157,7 @@ injection_mod = 2 - bodyfall_sound = /singleton/sound_category/bodyfall_machine_sound + bodyfall_sound = SFX_BODYFALL_MACHINE has_organ = list( BP_BRAIN = /obj/item/organ/internal/brain/tajara, diff --git a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm index 717817d46e4..3070b2abf2a 100644 --- a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm @@ -107,7 +107,7 @@ "Your scales bristle against the cold." ) - footsound = /singleton/sound_category/footstep_unathi_sound + footsound = SFX_FOOTSTEP_UNATHI has_organ = list( BP_BRAIN = /obj/item/organ/internal/brain/unathi, diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 152e4aa6537..8fbc25dd476 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -7,8 +7,8 @@ GLOBAL_LIST_EMPTY(sparring_attack_cache) var/desc = "A simple unarmed attack." var/damage = 0 // Extra empty hand attack damage. var/armor_penetration = 0 - var/attack_sound = /singleton/sound_category/punch_sound - var/miss_sound = /singleton/sound_category/punchmiss_sound + var/attack_sound = SFX_PUNCH + var/miss_sound = SFX_PUNCH_MISS var/shredding = 0 // Calls the old attack_alien() behavior on objects/mobs when on harm intent. var/attack_door = 0 // Whether the attack can damage airlocks and how much damage it does var/crowbar_door = FALSE @@ -239,7 +239,7 @@ GLOBAL_LIST_EMPTY(sparring_attack_cache) attack_name = "palm" /datum/unarmed_attack/palm/unathi // only one more damage, pretty much just for show - attack_sound = /singleton/sound_category/punch_bassy_sound + attack_sound = SFX_PUNCH_BASSY desc = "Striking your opponent with your palm. A method of dishing out damage without risking your claws or shredding your opponent to ribbons. This method of attack showcases some more restraint, the damage output is more stable, too." damage = 3 @@ -250,7 +250,7 @@ GLOBAL_LIST_EMPTY(sparring_attack_cache) /datum/unarmed_attack/kick attack_verb = list("kicked", "kicked", "kicked", "kneed") attack_noun = list("kick", "kick", "kick", "knee strike") - attack_sound = /singleton/sound_category/swing_hit_sound + attack_sound = SFX_SWING_HIT desc = "A high risk, pretty low reward move. It could be useful if your shoes has a knife sticking out the front, or if you're a trained martial arts master. Make sure to target the lower parts of the body, or else you won't be able to reach!" damage = 0 attack_name = "kick" @@ -296,7 +296,7 @@ GLOBAL_LIST_EMPTY(sparring_attack_cache) /datum/unarmed_attack/stomp attack_verb = null attack_noun = list("stomp") - attack_sound = /singleton/sound_category/swing_hit_sound + attack_sound = SFX_SWING_HIT desc = "An incredible tactic for turning a downed opponent into tenderized meat! Stomping is a safe and sound method of dispatching downed enemies, but it only works if they're already lying down." damage = 0 attack_name = "stomp" @@ -357,4 +357,4 @@ GLOBAL_LIST_EMPTY(sparring_attack_cache) desc = "Sparring: A heavy strike to your opponent. With poise and precision, no evidence will be left behind! They WILL ABSOLUTELY feel this, but will suffer no dangerous side effect, unless you punch them into cardiac arrest! Show off your might!" damage = 4 attack_name = "heavy hit" - attack_sound = /singleton/sound_category/punch_bassy_sound + attack_sound = SFX_PUNCH_BASSY diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index edc7ff39bc1..4e0067d9a48 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -300,7 +300,7 @@ if(victim == M) if(prob(60)) visible_message(SPAN_WARNING("[M] attempts to wrestle \the [name] off!")) - playsound(loc, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH_MISS, 25, 1, -1) else visible_message(SPAN_WARNING("[M] manages to wrestle \the [name] off!")) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) @@ -321,7 +321,7 @@ else if(prob(30)) visible_message(SPAN_WARNING("[M] attempts to wrestle \the [name] off of [victim]!")) - playsound(loc, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH_MISS, 25, 1, -1) else visible_message(SPAN_WARNING("[M] manages to wrestle \the [name] off of [victim]!")) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) @@ -380,14 +380,14 @@ sleep(3) step_away(src,M,15) - playsound(loc, /singleton/sound_category/punch_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH, 25, 1, -1) visible_message(SPAN_DANGER("[M] has punched [src]!"), \ SPAN_DANGER("[M] has punched [src]!")) adjustBruteLoss(damage) updatehealth() else - playsound(loc, /singleton/sound_category/punchmiss_sound, 25, 1, -1) + playsound(loc, SFX_PUNCH_MISS, 25, 1, -1) visible_message(SPAN_DANGER("[M] has attempted to punch [src]!")) return diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 34c444c136e..5cfde5bc806 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -116,7 +116,7 @@ //If the projectile was blocked and it's not at point blank range, then it missed if(blocked >= 100 && !hitting_projectile.point_blank) src.visible_message(SPAN_NOTICE("\The [hitting_projectile] misses [src] narrowly!")) - playsound(src, /singleton/sound_category/bulletflyby_sound, 50, 1) + playsound(src, SFX_BULLET_MISS, 50, 1) //Otherwise it hit else diff --git a/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm b/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm index 88da155a7d8..b451efec839 100644 --- a/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm +++ b/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm @@ -76,7 +76,7 @@ if(istype(H)) master = usr audible_emote("bwuups happily!") - playsound(src, /singleton/sound_category/hivebot_wail, 100, FALSE, 4) + playsound(src, SFX_HIVEBOT_WAIL, 100, FALSE, 4) return TRUE else if(usr == master) return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm index d30faf4a2ee..6e93b20cf3d 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm @@ -13,7 +13,7 @@ attack_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE break_stuff_probability = 25 attacktext = "slashed" - attack_sound = /singleton/sound_category/hivebot_melee + attack_sound = SFX_HIVEBOT_MELEE projectilesound = 'sound/weapons/gunshot/gunshot_suppressed.ogg' projectiletype = /obj/projectile/bullet/pistol/hivebotspike organ_names = list("head", "core", "side thruster", "bottom thruster") diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm index c0bfcd90d8d..188fc5001d0 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm @@ -208,7 +208,7 @@ update_icon() if(do_after(src, 32)) src.visible_message(SPAN_WARNING("[src] rips up \the [T].")) - playsound(src.loc, /singleton/sound_category/crowbar_sound, 100, 1) + playsound(src.loc, SFX_CROWBAR, 100, 1) T.make_plating(1) busy = 0 update_icon() diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index d6e07302eec..f80bfa9ac7e 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -421,7 +421,7 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile) Shoot(target, location, user) if(casingtype) new casingtype(loc) - playsound(src, /singleton/sound_category/casing_drop_sound, 50, TRUE) + playsound(src, SFX_CASING_DROP, 50, TRUE) /mob/living/simple_animal/hostile/proc/Shoot(var/target, var/start, var/mob/user, var/bullet = 0) if(target == start) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm index f272c63c2b9..e475be21cfb 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm @@ -93,7 +93,7 @@ melee_damage_lower = 0 melee_damage_upper = 0 attacktext = "barrels into" - attack_sound = /singleton/sound_category/punch_sound + attack_sound = SFX_PUNCH a_intent = I_HURT speak_emote = list("chirps","buzzes","whirrs") emote_hear = list("chirps cheerfully","buzzes","whirrs","hums placidly","chirps","hums") diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index af6ecb08243..efda6e67ef3 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -121,7 +121,7 @@ var/armor_penetration = 0 var/attack_flags = 0 var/attacktext = "attacked" - var/attack_sound = /singleton/sound_category/swing_hit_sound + var/attack_sound = SFX_SWING_HIT var/friendly = "nuzzles" var/environment_smash = 0 /// Damage reduction @@ -980,7 +980,7 @@ //Todo: add snowflakey shit to it. /mob/living/simple_animal/electrocute_act(var/shock_damage, var/obj/source, var/base_siemens_coeff = 1.0, var/def_zone = null, var/tesla_shock = 0, var/ground_zero) apply_damage(shock_damage, DAMAGE_BURN) - playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1) + playsound(loc, SFX_SPARKS, 50, 1, -1) spark(loc, 5, GLOB.alldirs) visible_message(SPAN_WARNING("\The [src] was shocked by \the [source]!"), SPAN_WARNING("You are shocked by \the [source]!"), SPAN_WARNING("You hear an electrical crack!")) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e94e9576e85..95ed4a1f377 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -806,7 +806,7 @@ visible_message(SPAN_WARNING("\The [src] leans down and grips \the [H]'s arms."), SPAN_NOTICE("You lean down and grip \the [H]'s arms.")) else //Otherwise we're probably just holding their arm to lead them somewhere visible_message(SPAN_WARNING("\The [src] grips \the [H]'s arm."), SPAN_NOTICE("You grip \the [H]'s arm.")) - playsound(loc, /singleton/sound_category/grab_sound, 25, FALSE, -1) //Quieter than hugging/grabbing but we still want some audio feedback + playsound(loc, SFX_GRAB, 25, FALSE, -1) //Quieter than hugging/grabbing but we still want some audio feedback if(H.pull_damage()) to_chat(src, SPAN_DANGER("Pulling \the [H] in their current condition would probably be a bad idea.")) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index f13cd49026f..b9f92f70896 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -294,7 +294,7 @@ if(isslime(affecting)) assailant.visible_message(SPAN_WARNING("[assailant] tries to squeeze [affecting], but [assailant.get_pronoun("his")] hands sink right through!"), SPAN_WARNING("You try to squeeze [affecting], but your hands sink right through!")) return - playsound(loc, /singleton/sound_category/grab_sound, 50, FALSE, -1) + playsound(loc, SFX_GRAB, 50, FALSE, -1) assailant.visible_message(SPAN_DANGER("[assailant] reinforces [assailant.get_pronoun("his")] grip on [affecting]'s neck!"), SPAN_DANGER("You reinforce your grip on [affecting]'s neck!")) state = GRAB_NECK icon_state = "grabbed+1" @@ -313,7 +313,7 @@ hud.icon_state = "kill1" hud.name = "loosen" state = GRAB_KILL - playsound(loc, /singleton/sound_category/grab_sound, 50, FALSE, -1) + playsound(loc, SFX_GRAB, 50, FALSE, -1) assailant.visible_message(SPAN_DANGER("[assailant] starts strangling [affecting]!"), SPAN_DANGER("You start strangling [affecting]!")) affecting.attack_log += "\[[time_stamp()]\] is being strangled by [assailant.name] ([assailant.ckey])" diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 6554367323a..ec12288a138 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -112,7 +112,7 @@ attacker.apply_effect(20, PARALYZE) attacker.visible_message(SPAN_DANGER("[attacker] [attacker.species.knockout_message]")) - playsound(attacker.loc, /singleton/sound_category/swing_hit_sound, 25, 1, -1) + playsound(attacker.loc, SFX_SWING_HIT, 25, 1, -1) attacker.attack_log += "\[[time_stamp()]\] Headbutted [target.name] ([target.ckey])" target.attack_log += "\[[time_stamp()]\] Headbutted by [attacker.name] ([attacker.ckey])" msg_admin_attack("[key_name(attacker)] has headbutted [key_name(target)]",ckey=key_name(attacker),ckey_target=key_name(target)) diff --git a/code/modules/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm index 66dc060f723..5a7e3381089 100644 --- a/code/modules/modular_computers/computers/modular_computer/core.dm +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -45,7 +45,7 @@ check_update_ui_need() if(looping_sound && working && enabled && world.time > ambience_last_played_time + 30 SECONDS && prob(3)) - playsound(get_turf(src), /singleton/sound_category/computerbeep_sound, 30, 1, 10, required_preferences = ASFX_AMBIENCE) + playsound(get_turf(src), SFX_COMPUTER_BEEP, 30, 1, 10, required_preferences = ASFX_AMBIENCE) ambience_last_played_time = world.time /obj/item/modular_computer/proc/get_preset_programs(preset_type) diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm index 6820b33093d..42eecec6fe5 100644 --- a/code/modules/modular_computers/hardware/nano_printer.dm +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -29,6 +29,7 @@ P.color = paper_color stored_paper-- + if(ismob(usr)) usr.put_in_hands(P, TRUE) return P diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index edfc57ee8e6..881a28ba832 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -460,7 +460,7 @@ if(status_flags & GODMODE) // Godmode visible_message(SPAN_NOTICE("\The [src] lands flawlessly on their legs, bending their knee to the floor. They promptly stand up.")) - playsound(src.loc, /singleton/sound_category/swing_hit_sound, 50, 1) + playsound(src.loc, SFX_SWING_HIT, 50, 1) return FALSE visible_message("\The [src] falls and lands on \the [loc]!", @@ -483,7 +483,7 @@ if(51 to INFINITY) playsound(src.loc, 'sound/weapons/heavysmash.ogg', 100, 1) else - playsound(src.loc, /singleton/sound_category/swing_hit_sound, 75, 1) + playsound(src.loc, SFX_SWING_HIT, 75, 1) else playsound(src.loc, 'sound/weapons/smash.ogg', 75, 1) @@ -504,7 +504,7 @@ if(status_flags & GODMODE) // Godmode visible_message(SPAN_NOTICE("\The [src] lands flawlessly on their legs, bending their knee to the floor. They promptly stand up.")) - playsound(src.loc, /singleton/sound_category/swing_hit_sound, 50, 1) + playsound(src.loc, SFX_SWING_HIT, 50, 1) return FALSE var/combat_roll = 1 @@ -639,11 +639,11 @@ if(-INFINITY to 10) playsound(src.loc, 'sound/weapons/bladeslice.ogg', 50, 1) if(11 to 50) - playsound(src.loc, /singleton/sound_category/punch_sound, 75, 1) + playsound(src.loc, SFX_PUNCH, 75, 1) if(51 to INFINITY) playsound(src.loc, 'sound/weapons/heavysmash.ogg', 100, 1) else - playsound(src.loc, /singleton/sound_category/swing_hit_sound, 75, 1) + playsound(src.loc, SFX_SWING_HIT, 75, 1) else playsound(src.loc, 'sound/weapons/smash.ogg', 75, 1) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c80fadf9e89..a27a74f914b 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1283,7 +1283,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner.species && owner.can_feel_pain()) owner.emote("scream") owner.flash_strong_pain() - playsound(src.loc, /singleton/sound_category/fracture_sound, 100, 1, -2) + playsound(src.loc, SFX_FRACTURE, 100, 1, -2) status |= ORGAN_BROKEN broken_description = pick("broken", "fracture", "hairline fracture") diff --git a/code/modules/overmap/exoplanets/decor/_turfs.dm b/code/modules/overmap/exoplanets/decor/_turfs.dm index 44221f0947b..08f160a6f82 100644 --- a/code/modules/overmap/exoplanets/decor/_turfs.dm +++ b/code/modules/overmap/exoplanets/decor/_turfs.dm @@ -7,7 +7,7 @@ icon = 'icons/turf/desert.dmi' icon_state = "desert" has_resources = TRUE - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID turf_flags = TURF_FLAG_BACKGROUND var/diggable = 1 @@ -122,20 +122,20 @@ desc = "Some water shallow enough to wade through." icon = 'icons/misc/beach.dmi' icon_state = "seashallow" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER /turf/simulated/floor/exoplanet/permafrost name = "permafrost" desc = "The ground here is frozen solid by the cold." icon = 'icons/turf/flooring/snow.dmi' icon_state = "permafrost" - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID /turf/simulated/floor/exoplanet/mineral name = "sand" desc = "It's coarse and gets everywhere." dirt_color = "#544c31" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND //Concrete /turf/simulated/floor/exoplanet/concrete diff --git a/code/modules/overmap/exoplanets/decor/turfs/carpet.dm b/code/modules/overmap/exoplanets/decor/turfs/carpet.dm index b6304faca48..ee87b3eb2e3 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/carpet.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/carpet.dm @@ -5,7 +5,7 @@ tile_outline = "carpet" broken_overlay = "carpet" initial_flooring = /singleton/flooring/carpet - footstep_sound = /singleton/sound_category/carpet_footstep + footstep_sound = SFX_FOOTSTEP_CARPET has_resources = FALSE /turf/simulated/floor/exoplanet/carpet/art diff --git a/code/modules/overmap/exoplanets/decor/turfs/ceiling.dm b/code/modules/overmap/exoplanets/decor/turfs/ceiling.dm index d66d85a69b9..14561e51889 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/ceiling.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/ceiling.dm @@ -1,6 +1,6 @@ /turf/simulated/floor/exoplanet/ceiling name = "ceiling plating" - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING roof_type = null icon = 'icons/turf/flooring/plating.dmi' icon_state = "asteroidplating" diff --git a/code/modules/overmap/exoplanets/decor/turfs/crystal.dm b/code/modules/overmap/exoplanets/decor/turfs/crystal.dm index 78863572046..98b314b9b6a 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/crystal.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/crystal.dm @@ -4,4 +4,4 @@ desc = "A tough, compacted mineral surface, polished to a mirror sheen." icon = 'icons/turf/crystal.dmi' icon_state = "crystal" - footstep_sound = /singleton/sound_category/glasscrack_sound + footstep_sound = SFX_GLASS_CRACK diff --git a/code/modules/overmap/exoplanets/decor/turfs/diona.dm b/code/modules/overmap/exoplanets/decor/turfs/diona.dm index c6f3d0d37b8..c4f7c78a3cc 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/diona.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/diona.dm @@ -3,6 +3,6 @@ gender = PLURAL icon = 'icons/turf/flooring/diona.dmi' icon_state = "diona0" - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS initial_flooring = /singleton/flooring/diona has_resources = FALSE diff --git a/code/modules/overmap/exoplanets/decor/turfs/grass.dm b/code/modules/overmap/exoplanets/decor/turfs/grass.dm index 141b9461f65..0e03a36a4c7 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/grass.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/grass.dm @@ -5,7 +5,7 @@ icon = 'icons/turf/jungle.dmi' icon_state = "greygrass" color = "#799c4b" - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS /turf/simulated/floor/exoplanet/grass/Initialize() . = ..() @@ -45,7 +45,7 @@ icon_state = "marsh" color = null has_edge_icon = null - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER /turf/simulated/floor/exoplanet/grass/marsh/Initialize() . = ..() diff --git a/code/modules/overmap/exoplanets/decor/turfs/konyang.dm b/code/modules/overmap/exoplanets/decor/turfs/konyang.dm index 2e6b6d1a8e1..9e1dfd07355 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/konyang.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/konyang.dm @@ -4,7 +4,7 @@ desc = "An alien moss covers the ground." icon = 'icons/turf/flooring/exoplanet/konyang.dmi' icon_state = "grass" - footstep_sound = /singleton/sound_category/grass_footstep + footstep_sound = SFX_FOOTSTEP_GRASS /turf/simulated/floor/exoplanet/konyang/no_edge has_edge_icon = FALSE @@ -52,7 +52,7 @@ icon = 'icons/turf/flooring/exoplanet/konyang.dmi' icon_state = "dirt" layer = 1.99//to let the grass edges go over it, which otherwise doesnt happen due to positioning and byond layering - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID has_edge_icon = FALSE /turf/simulated/floor/exoplanet/dirt_konyang/cave @@ -69,6 +69,6 @@ desc = "Some fine, white sand." icon = 'icons/turf/flooring/exoplanet/konyang/konyang_beach.dmi' icon_state = "sand" - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID smoothing_flags = SMOOTH_FALSE has_edge_icon = FALSE diff --git a/code/modules/overmap/exoplanets/decor/turfs/mineral.dm b/code/modules/overmap/exoplanets/decor/turfs/mineral.dm index 0c225625753..1c4f81a4487 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/mineral.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/mineral.dm @@ -3,7 +3,7 @@ gender = PLURAL desc = "It's coarse and gets everywhere." dirt_color = "#544c31" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/simulated/floor/exoplanet/mineral/adhomai name = "icy rock" diff --git a/code/modules/overmap/exoplanets/decor/turfs/plating.dm b/code/modules/overmap/exoplanets/decor/turfs/plating.dm index 3a2bdabb584..4f1bc3f2b9f 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/plating.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/plating.dm @@ -2,7 +2,7 @@ name = "plating" icon = 'icons/turf/flooring/plating.dmi' icon_state = "plating" - footstep_sound = /singleton/sound_category/plating_footstep + footstep_sound = SFX_FOOTSTEP_PLATING has_resources = FALSE /turf/simulated/floor/exoplanet/plating/asteroid diff --git a/code/modules/overmap/exoplanets/decor/turfs/sand.dm b/code/modules/overmap/exoplanets/decor/turfs/sand.dm index af685194eaf..632f33bd616 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/sand.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/sand.dm @@ -5,7 +5,7 @@ icon = 'icons/turf/desert.dmi' icon_state = "desert" dirt_color = "#ae9e66" - footstep_sound = /singleton/sound_category/sand_footstep + footstep_sound = SFX_FOOTSTEP_SAND /turf/simulated/floor/exoplanet/desert/Initialize() . = ..() diff --git a/code/modules/overmap/exoplanets/decor/turfs/snow.dm b/code/modules/overmap/exoplanets/decor/turfs/snow.dm index 871028010b8..ab54a39892e 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/snow.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/snow.dm @@ -5,7 +5,7 @@ icon = 'icons/turf/smooth/snow40.dmi' icon_state = "snow" dirt_color = "#e3e7e8" - footstep_sound = /singleton/sound_category/snow_footstep + footstep_sound = SFX_FOOTSTEP_SNOW smoothing_flags = SMOOTH_MORE | SMOOTH_BORDER | SMOOTH_NO_CLEAR_ICON smoothing_hints = SMOOTHHINT_CUT_F | SMOOTHHINT_ONLY_MATCH_TURF | SMOOTHHINT_TARGETS_NOT_UNIQUE canSmoothWith = list( @@ -39,7 +39,7 @@ desc = "Icy, frozen ground." icon = 'icons/turf/flooring/snow.dmi' icon_state = "permafrost" - footstep_sound = /singleton/sound_category/asteroid_footstep + footstep_sound = SFX_FOOTSTEP_ASTEROID /turf/simulated/floor/exoplanet/permafrost/cold //temperature is -5 celsius temperature = 268.15 diff --git a/code/modules/overmap/exoplanets/decor/turfs/water.dm b/code/modules/overmap/exoplanets/decor/turfs/water.dm index 1d59476c3c7..b4bc5a5f9a2 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/water.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/water.dm @@ -4,7 +4,7 @@ icon = 'icons/misc/beach.dmi' icon_state = "seadeep" desc = "It is wet." - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER movement_cost = 4 has_resources = FALSE ///How many objects are currently on this turf? Used to stop empty water turfs from processing. @@ -117,7 +117,7 @@ desc = "Some water shallow enough to wade through." icon = 'icons/misc/beach.dmi' icon_state = "seashallow" - footstep_sound = /singleton/sound_category/water_footstep + footstep_sound = SFX_FOOTSTEP_WATER deep = FALSE var/reagent_type = /singleton/reagent/water diff --git a/code/modules/overmap/exoplanets/decor/turfs/wood.dm b/code/modules/overmap/exoplanets/decor/turfs/wood.dm index 6e80b32a98c..39a3bbe9c20 100644 --- a/code/modules/overmap/exoplanets/decor/turfs/wood.dm +++ b/code/modules/overmap/exoplanets/decor/turfs/wood.dm @@ -3,7 +3,7 @@ icon = 'icons/turf/flooring/tiles.dmi' icon_state = "wood" initial_flooring = /singleton/flooring/wood - footstep_sound = /singleton/sound_category/wood_footstep + footstep_sound = SFX_FOOTSTEP_WOOD tile_outline = "wood" tile_decal_state = "wood" broken_overlay = "wood" diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index 3b6a5aa114e..9eb49351109 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -392,7 +392,7 @@ if(direction != "clear") security_announcement.Announce("Enemy fire inbound, enemy fire inbound! [sanitizeSafe(direction)]!", "Brace for shock!", sound('sound/mecha/internaldmgalarm.ogg', volume = 90), 0) else - security_announcement.Announce("No fire is incoming at the current moment, resume damage control.", "Space clear!", sound('sound/misc/announcements/security_level_old.ogg'), 0) + security_announcement.Announce("No fire is incoming at the current moment, resume damage control.", "Space clear!", sound('sound/ai/announcements/security_level_old.ogg'), 0) return TRUE /obj/machinery/shipsensors diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 1bd2bdf6cbc..d6b17b2b441 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -237,7 +237,7 @@ GLOBAL_LIST_EMPTY(admin_departments) if (!istype(incoming, /obj/item/paper) && !istype(incoming, /obj/item/photo) && !istype(incoming, /obj/item/paper_bundle)) return 0 - playsound(loc, 'sound/bureaucracy/print.ogg', 75, 1) + playsound(loc, 'sound/items/bureaucracy/print.ogg', 75, 1) // give the sprite some time to flick spawn(20) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 6e98bed78c8..2c3efa7bf60 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -59,7 +59,7 @@ to_chat(user, SPAN_NOTICE("You put [attacking_item] in [src].")) user.drop_from_inventory(attacking_item, src) flick("[initial(icon_state)]-open", src) - playsound(loc, 'sound/bureaucracy/filingcabinet.ogg', 50, 1) + playsound(loc, 'sound/items/bureaucracy/filingcabinet.ogg', 50, 1) sleep(40) icon_state = initial(icon_state) updateUsrDialog() @@ -95,7 +95,7 @@ usr.put_in_hands(P) updateUsrDialog() flick("[initial(icon_state)]-open",src) - playsound(loc, 'sound/bureaucracy/filingcabinet.ogg', 50, 1) + playsound(loc, 'sound/items/bureaucracy/filingcabinet.ogg', 50, 1) spawn(0) sleep(20) icon_state = initial(icon_state) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 9a9fdd90412..f1062c9240f 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -181,7 +181,7 @@ //crumple dat paper info = stars(info,85) user.visible_message("\The [user] crumples \the [src] into a ball!", "You crumple \the [src] into a ball.") - playsound(src, 'sound/bureaucracy/papercrumple.ogg', 50, 1) + playsound(src, 'sound/items/bureaucracy/papercrumple.ogg', 50, 1) icon_state = "scrap" throw_range = 4 //you can now make epic paper ball hoops into the disposals (kinda dumb that you could only throw crumpled paper 1 tile) -wezzy return @@ -192,7 +192,7 @@ return user.visible_message(SPAN_NOTICE("\The [user] carefully folds \the [src] into a plane."), SPAN_NOTICE("You carefully fold \the [src] into a plane."), "\The [user] folds \the [src] into a plane.") - playsound(src, 'sound/bureaucracy/paperfold.ogg', 50, 1) + playsound(src, 'sound/items/bureaucracy/paperfold.ogg', 50, 1) icon_state = "paper_plane" throw_range = 8 old_name = name @@ -206,7 +206,7 @@ return user.visible_message(SPAN_NOTICE("\The [user] carefully folds \the [src] into an origami swan."), SPAN_NOTICE("You carefully fold \the [src] into a swan."), "\The [user] folds \the [src] into a swan.") - playsound(src, 'sound/bureaucracy/paperfold.ogg', 50, 1) + playsound(src, 'sound/items/bureaucracy/paperfold.ogg', 50, 1) icon_state = "paper_swan" old_name = name name = "origami swan" @@ -215,7 +215,7 @@ if (user.a_intent == I_HELP && old_name && (icon_state == "paper_plane" || icon_state == "paper_swan")) user.visible_message(SPAN_NOTICE("\The [user] unfolds \the [src]."), SPAN_NOTICE("You unfold \the [src]."), "You hear paper rustling.") - playsound(src, 'sound/bureaucracy/paperfold.ogg', 50, 1) + playsound(src, 'sound/items/bureaucracy/paperfold.ogg', 50, 1) icon_state = base_state throw_range = initial(throw_range) name = old_name @@ -412,7 +412,7 @@ user.visible_message("[user] holds \the [P] up to \the [src], it looks like [user.get_pronoun("he")]'s trying to burn it!", \ "You hold \the [P] up to \the [src], burning it slowly.") - playsound(src.loc, 'sound/bureaucracy/paperburn.ogg', 50, 1) + playsound(src.loc, 'sound/items/bureaucracy/paperburn.ogg', 50, 1) if(icon_state == "scrap") flick("scrap_onfire", src) else @@ -576,7 +576,7 @@ if(istype(i, /obj/item/pen/typewriter)) playsound(src, ('sound/machines/typewriter.ogg'), 40) else - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + playsound(src, pick('sound/items/bureaucracy/pen1.ogg','sound/items/bureaucracy/pen2.ogg'), 20) update_icon() if(c) @@ -702,7 +702,7 @@ stamped += attacking_item.type AddOverlays(stampoverlay) - playsound(src, 'sound/bureaucracy/stamp.ogg', 50, 1) + playsound(src, 'sound/items/bureaucracy/stamp.ogg', 50, 1) to_chat(user, SPAN_NOTICE("You stamp the paper with \the [attacking_item].")) else if(attacking_item.isFlameSource()) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 4f6ab557084..7da6ab09eaf 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -194,7 +194,7 @@ var/obj/P = pages[page] page++ var/obj/A = pages[page] - playsound(src.loc, /singleton/sound_category/page_sound, 50, 1) + playsound(src.loc, SFX_PAGE_TURN, 50, 1) if(A.type != P.type) show_browser(usr, null, "window=[name]") if(href_list["prev_page"]) @@ -202,7 +202,7 @@ var/obj/P = pages[page] page-- var/obj/A = pages[page] - playsound(src.loc, /singleton/sound_category/page_sound, 50, 1) + playsound(src.loc, SFX_PAGE_TURN, 50, 1) if(A.type != P.type) show_browser(usr, null, "window=[name]") if(href_list["remove"]) diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm index 833e31be51c..a0ffda53b31 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -54,7 +54,7 @@ else flick("papershredder_on", src) qdel(attacking_item) - playsound(src.loc, 'sound/bureaucracy/papershred.ogg', 75, 1) + playsound(src.loc, 'sound/items/bureaucracy/papershred.ogg', 75, 1) to_chat(user, SPAN_NOTICE("You shred the paper.")) intent_message(MACHINE_SOUND) if(paperamount > max_paper) @@ -158,7 +158,7 @@ user.visible_message(span("[class]", "[user] holds \the [P] up to \the [src], trying to burn it!"), \ span("[class]", "You hold \the [P] up to \the [src], burning it slowly.")) - playsound(src.loc, 'sound/bureaucracy/paperburn.ogg', 50, 1) + playsound(src.loc, 'sound/items/bureaucracy/paperburn.ogg', 50, 1) flick("shredp_onfire", src) if (do_after(user, 2 SECONDS, src, DO_UNIQUE | DO_USER_CAN_MOVE)) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index b3727143fa1..a5bcab5560f 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -110,7 +110,7 @@ copy_item = attacking_item to_chat(user, SPAN_NOTICE("You insert \the [attacking_item] into \the [src].")) flick(insert_anim, src) - playsound(loc, 'sound/bureaucracy/scan.ogg', 75, 1) + playsound(loc, 'sound/items/bureaucracy/scan.ogg', 75, 1) SStgui.update_uis(src) else to_chat(user, SPAN_NOTICE("There is already something in \the [src].")) @@ -118,7 +118,7 @@ if(toner <= 10) //allow replacing when low toner is affecting the print darkness to_chat(user, SPAN_NOTICE("You insert \the [attacking_item] into \the [src].")) flick("photocopier_toner", src) - playsound(loc, /singleton/sound_category/switch_sound, 50, 1) + playsound(loc, SFX_SWITCH, 50, 1) var/obj/item/device/toner/T = attacking_item toner = min(toner + T.toner_amount, max_toner) user.drop_from_inventory(attacking_item, get_turf(src)) @@ -220,7 +220,7 @@ var/obj/machinery/photocopier/T = target flick(T.print_animation, target) --T.toner - target.print(c, use_sound, 'sound/bureaucracy/print.ogg', delay, user = user) + target.print(c, use_sound, 'sound/items/bureaucracy/print.ogg', delay, user = user) return c /proc/photocopy(var/obj/machinery/target, var/obj/item/photo/photocopy, var/toner) @@ -248,7 +248,7 @@ var/obj/machinery/photocopier/T = target T.toner -= 5 flick("photocopier_print", target) - playsound(target.loc, 'sound/bureaucracy/print.ogg', 75, 1) + playsound(target.loc, 'sound/items/bureaucracy/print.ogg', 75, 1) return p //If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 3a2fe6df01a..796a539b8d8 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -116,7 +116,7 @@ GLOBAL_VAR_INIT(photo_count, 0) var/mob/M = user if(!( istype(over, /atom/movable/screen) )) return ..() - playsound(loc, /singleton/sound_category/rustle_sound, 50, 1, -5) + playsound(loc, SFX_RUSTLE, 50, 1, -5) if((!( M.restrained() ) && !( M.stat ) && M.back == src)) switch(over.name) if("right hand") @@ -231,7 +231,7 @@ GLOBAL_VAR_INIT(photo_count, 0) on = 1 /obj/item/device/camera/proc/do_photo_sound() - playsound(loc, /singleton/sound_category/print_sound, 75, 1, -3) + playsound(loc, SFX_PRINT, 75, 1, -3) /obj/item/device/camera/detective name = "detectives camera" diff --git a/code/modules/paperwork/typewriter.dm b/code/modules/paperwork/typewriter.dm index bb35995389b..0c0e60e99a1 100644 --- a/code/modules/paperwork/typewriter.dm +++ b/code/modules/paperwork/typewriter.dm @@ -82,7 +82,7 @@ return FALSE to_chat(user, SPAN_ALERT("\The [src] ejects \the [stored_paper].")) - playsound(loc, 'sound/bureaucracy/paperfold.ogg', 60, 0) + playsound(loc, 'sound/items/bureaucracy/paperfold.ogg', 60, 0) stored_paper.forceMove(target) stored_paper = null update_icon() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 8e085c06b87..1ef6f4d0204 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -78,7 +78,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc) use_power = POWER_USE_OFF req_access = list(ACCESS_ENGINE_EQUIP) gfi_layer_rotation = GFI_ROTATION_DEFDIR - clicksound = /singleton/sound_category/switch_sound + clicksound = SFX_SWITCH obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED var/area/area var/areastring = null diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index c81314dc4c9..d92f2165456 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -34,7 +34,7 @@ density = 1 anchored = 1 use_power = POWER_USE_OFF - clicksound = /singleton/sound_category/switch_sound + clicksound = SFX_SWITCH var/health = 500 /// this it to prevent the damage text from playing repeatedly diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index c45c759b5ef..20b407c5682 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -17,7 +17,7 @@ var/obj/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed? var/spent_icon = "s-casing-spent" - drop_sound = /singleton/sound_category/casing_drop_sound + drop_sound = SFX_CASING_DROP pickup_sound = 'sound/items/pickup/ring.ogg' var/reload_sound = 'sound/weapons/reload_bullet.ogg' //sound that plays when inserted into gun. @@ -119,7 +119,7 @@ var/list/ammo_states = list() //values /// sound item plays when it is inserted into a gun. - var/insert_sound = /singleton/sound_category/metal_slide_reload + var/insert_sound = SFX_RELOAD_METAL_SLIDE /// sound item plays when it is ejected from a gun. var/eject_sound = 'sound/weapons/magazine_eject.ogg' @@ -169,7 +169,7 @@ to_chat(user, SPAN_NOTICE("You empty [src].")) for(var/obj/item/ammo_casing/C in stored_ammo) C.forceMove(user.loc) - playsound(C, /singleton/sound_category/casing_drop_sound, 50, FALSE) + playsound(C, SFX_CASING_DROP, 50, FALSE) C.set_dir(pick(GLOB.alldirs)) stored_ammo.Cut() update_icon() diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index bd05aeb6240..4e39d28c44f 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -15,7 +15,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ name = "speed loader (.357)" icon_state = "T38" caliber = "357" - insert_sound = /singleton/sound_category/revolver_reload + insert_sound = SFX_RELOAD_REVOLVER ammo_type = /obj/item/ammo_casing/a357 matter = list(DEFAULT_WALL_MATERIAL = 1260) max_ammo = 8 @@ -25,7 +25,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ name = "speed loader (.454)" icon_state = "a454" caliber = "454" - insert_sound = /singleton/sound_category/revolver_reload + insert_sound = SFX_RELOAD_REVOLVER ammo_type = /obj/item/ammo_casing/a454 matter = list(DEFAULT_WALL_MATERIAL = 1260) max_ammo = 7 @@ -35,7 +35,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ name = "speed loader (.38)" icon_state = "38" caliber = "38" - insert_sound = /singleton/sound_category/revolver_reload + insert_sound = SFX_RELOAD_REVOLVER matter = list(DEFAULT_WALL_MATERIAL = 360) ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 @@ -246,7 +246,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ origin_tech = list(TECH_COMBAT = 2) matter = list(DEFAULT_WALL_MATERIAL = 1800) caliber = "9mm" - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE ammo_type = /obj/item/ammo_casing/c9mm max_ammo = 30 @@ -260,7 +260,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ ammo_type = /obj/item/ammo_casing/c9mm matter = list(DEFAULT_WALL_MATERIAL = 1200) caliber = "9mm" - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE max_ammo = 20 multiple_sprites = 1 @@ -293,7 +293,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = "10mm" - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE matter = list(DEFAULT_WALL_MATERIAL = 1500) ammo_type = /obj/item/ammo_casing/c10mm max_ammo = 20 @@ -310,7 +310,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ matter = list(DEFAULT_WALL_MATERIAL = 1200) caliber = ".45" max_ammo = 16 - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE multiple_sprites = 1 /obj/item/ammo_magazine/c45uzi/empty @@ -323,7 +323,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ ammo_type = /obj/item/ammo_casing/c45 matter = list(DEFAULT_WALL_MATERIAL = 1500) caliber = ".45" - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE max_ammo = 20 /obj/item/ammo_magazine/submachinemag/empty @@ -336,7 +336,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ ammo_type = /obj/item/ammo_casing/c6mm matter = list(DEFAULT_WALL_MATERIAL = 1500) caliber = "6mm" - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE max_ammo = 30 /obj/item/ammo_magazine/submachinedrum @@ -347,7 +347,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ ammo_type = /obj/item/ammo_casing/c45 matter = list(DEFAULT_WALL_MATERIAL = 3750) caliber = ".45" - insert_sound = /singleton/sound_category/polymer_slide_reload + insert_sound = SFX_RELOAD_POLYMER_SLIDE max_ammo = 50 /obj/item/ammo_magazine/smg10mm @@ -369,7 +369,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = "a556" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE matter = list(DEFAULT_WALL_MATERIAL = 1800) ammo_type = /obj/item/ammo_casing/a556 max_ammo = 30 @@ -454,7 +454,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ origin_tech = list(TECH_COMBAT = 3) mag_type = MAGAZINE caliber = "a65" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE matter = list(DEFAULT_WALL_MATERIAL = 1800) ammo_type = /obj/item/ammo_casing/a65 max_ammo = 20 @@ -468,7 +468,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ icon_state = "75" mag_type = MAGAZINE caliber = "75" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE ammo_type = /obj/item/ammo_casing/a75 multiple_sprites = 1 max_ammo = 4 @@ -495,7 +495,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = "a762" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE matter = list(DEFAULT_WALL_MATERIAL = 4500) ammo_type = /obj/item/ammo_casing/a762 max_ammo = 50 @@ -509,7 +509,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ icon_state = "c762" mag_type = MAGAZINE caliber = "a762" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE matter = list(DEFAULT_WALL_MATERIAL = 1800) ammo_type = /obj/item/ammo_casing/a762 max_ammo = 20 @@ -565,7 +565,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ icon_state = "flechette" mag_type = MAGAZINE caliber = "flechette" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE matter = list(DEFAULT_WALL_MATERIAL = 1200) ammo_type = /obj/item/ammo_casing/flechette max_ammo = 40 @@ -593,7 +593,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ name = "magazine (slug)" icon_state = "csmb" caliber = "shotgun" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/shotgun max_ammo = 8 @@ -623,7 +623,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ icon = 'icons/obj/guns/xanu_shotgun_mags.dmi' icon_state = "xanu_shell_magazine" caliber = "shotgun" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/shotgun max_ammo = 8 @@ -736,7 +736,7 @@ If nothing is chosen, reload sounds revert to the default, which is metal_slide_ name = "konyang shotgun magazine" icon_state = "konyang_shotgun" caliber = "shotgun" - insert_sound = /singleton/sound_category/rifle_slide_reload + insert_sound = SFX_RELOAD_RIFLE_SLIDE mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/shotgun max_ammo = 9 diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index cd1e638fcc1..53f350ae774 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -133,8 +133,8 @@ caliber = "shotgun" projectile_type = /obj/projectile/bullet/shotgun matter = list(DEFAULT_WALL_MATERIAL = 360) - reload_sound = /singleton/sound_category/shotgun_reload - drop_sound = /singleton/sound_category/casing_drop_sound_shotgun + reload_sound = SFX_RELOAD_SHOTGUN + drop_sound = SFX_CASING_DROP_SHOTGUN max_stack = 8 /obj/item/ammo_casing/shotgun/used/Initialize() @@ -425,7 +425,7 @@ slot_flags = null max_stack = 1 reload_sound = 'sound/weapons/reloads/shotgun_pump.ogg' - drop_sound = /singleton/sound_category/generic_drop_sound + drop_sound = SFX_DROP /obj/item/ammo_casing/cannon/explosive name = "explosive cannonball" @@ -446,7 +446,7 @@ slot_flags = null desc = "A miniaturized version of a nuclear bomb." projectile_type = /obj/projectile/bullet/nuke - drop_sound = /singleton/sound_category/generic_drop_sound + drop_sound = SFX_DROP max_stack = 2 /obj/item/ammo_casing/musket diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ea69b76b439..fc6a7576822 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -84,9 +84,9 @@ var/vary_fire_sound = TRUE /// The volume of the firing sound. var/fire_sound_volume = 50 - /// Sound of the gun firing when empty (dryfiring). - var/empty_sound = /singleton/sound_category/out_of_ammo - /// Determines what a player should hear in audible_message when the gun is fired. e.g gunshot, blast. + ///Sound of the gun firing when empty (dryfiring). + var/empty_sound = SFX_OUT_OF_AMMO + ///Determines what a player should hear in audible_message when the gun is fired. e.g gunshot, blast. var/fire_sound_text = "gunshot" /// The firing sound to play when suppressed = TRUE. var/suppressed_sound = 'sound/weapons/gunshot/gunshot_suppressed.ogg' @@ -157,7 +157,7 @@ var/needspin = TRUE /// Can this weapon be dual-wielded? var/is_wieldable = FALSE - var/wield_sound = /singleton/sound_category/generic_wield_sound + var/wield_sound = SFX_WIELD var/unwield_sound = null /// Additional accuracy/dispersion penalty for using full auto one-handed var/one_hand_fa_penalty = 0 diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm index a7458026746..35efab42818 100644 --- a/code/modules/projectiles/guns/launcher/crossbow.dm +++ b/code/modules/projectiles/guns/launcher/crossbow.dm @@ -11,7 +11,7 @@ sharp = TRUE edge = FALSE drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD /obj/item/arrow/proc/removed() //Helper for metal rods falling apart. return @@ -27,7 +27,7 @@ icon_state = "metal-rod" item_state = "bolt" drop_sound = 'sound/items/drop/sword.ogg' - pickup_sound = /singleton/sound_category/sword_pickup_sound + pickup_sound = SFX_PICKUP_SWORD /obj/item/arrow/quill name = "alien quill" diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 263adede1b0..65a748abc67 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -141,7 +141,7 @@ if(EJECT_CASINGS) //eject casing onto ground. chambered.forceMove(get_turf(src)) chambered.throw_at(get_ranged_target_turf(get_turf(src),turn(loc.dir,270),1), rand(0,1), 5) - playsound(chambered, /singleton/sound_category/casing_drop_sound, 50, FALSE) + playsound(chambered, SFX_CASING_DROP, 50, FALSE) if(CYCLE_CASINGS) //cycle the casing back to the end. if(ammo_magazine) ammo_magazine.stored_ammo += chambered @@ -226,7 +226,7 @@ if(T) for(var/obj/item/ammo_casing/C in loaded) C.forceMove(T) - playsound(C, /singleton/sound_category/casing_drop_sound, 50, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_exponent = (SOUND_FALLOFF_EXPONENT+2)) + playsound(C, SFX_CASING_DROP, 50, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_exponent = (SOUND_FALLOFF_EXPONENT+2)) count++ loaded.Cut() if(count) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index fe31fb7ea21..8de28415e6f 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -202,7 +202,7 @@ slot_flags = SLOT_BACK load_method = MAGAZINE fire_sound = 'sound/weapons/gunshot/gunshot_rifle.ogg' - empty_sound = /singleton/sound_category/out_of_ammo_rifle + empty_sound = SFX_OUT_OF_AMMO_RIFLE magazine_type = /obj/item/ammo_magazine/c762 allowed_magazines = list(/obj/item/ammo_magazine/c762) fire_delay = ROF_RIFLE diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 962a33fd5dc..e69540d851d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -13,7 +13,7 @@ ammo_type = /obj/item/ammo_casing/a357 magazine_type = /obj/item/ammo_magazine/a357 fire_sound = 'sound/weapons/gunshot/gunshot_revolver.ogg' - empty_sound = /singleton/sound_category/out_of_ammo_revolver + empty_sound = SFX_OUT_OF_AMMO_REVOLVER fire_delay = ROF_RIFLE var/chamber_offset = 0 //how many empty chambers in the cylinder until you hit a round diff --git a/code/modules/projectiles/guns/projectile/rifle.dm b/code/modules/projectiles/guns/projectile/rifle.dm index b102fe28ffb..e7861ffdd76 100644 --- a/code/modules/projectiles/guns/projectile/rifle.dm +++ b/code/modules/projectiles/guns/projectile/rifle.dm @@ -338,7 +338,7 @@ item_state = "gauss_thumper" caliber = "gauss" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - fire_sound = /singleton/sound_category/gauss_fire_sound + fire_sound = SFX_SHOOT_GAUSS load_method = MAGAZINE handle_casings = DELETE_CASINGS @@ -364,7 +364,7 @@ desc = "An outdated and power hungry gauss cannon, modified to deliver high explosive rounds at high velocities." icon = 'icons/obj/guns/gauss_thumper.dmi' icon_state = "gauss_thumper" - fire_sound = /singleton/sound_category/gauss_fire_sound + fire_sound = SFX_SHOOT_GAUSS fire_delay = ROF_UNWIELDY charge_meter = 0 max_shots = 3 diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 8fb3a338bf4..5bf1d8f1b4e 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -63,7 +63,7 @@ handle_casings = HOLD_CASINGS fire_sound = 'sound/weapons/gunshot/gunshot_shotgun2.ogg' is_wieldable = TRUE - var/rack_sound = /singleton/sound_category/shotgun_pump + var/rack_sound = SFX_PUMP_SHOTGUN var/rack_verb = "pump" ///Whether the item icon has a cycling animation var/cycle_anim = TRUE @@ -237,7 +237,7 @@ caliber = "gauss" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) ammo_type = /obj/item/ammo_casing/gauss - fire_sound = /singleton/sound_category/gauss_fire_sound + fire_sound = SFX_SHOOT_GAUSS fire_delay = ROF_INTERMEDIATE can_sawoff = FALSE diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index d3ba5097fe7..f3fe3e537ab 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -268,7 +268,7 @@ /obj/projectile/magic/teleport/on_hit(atom/target, blocked, def_zone) var/turf/T = get_turf(target) single_spark(T) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) if(isliving(target)) blink_mob(target) return ..() diff --git a/code/modules/psionics/events/_psi.dm b/code/modules/psionics/events/_psi.dm index 0d606a83cff..36b5e4c6bf2 100644 --- a/code/modules/psionics/events/_psi.dm +++ b/code/modules/psionics/events/_psi.dm @@ -6,7 +6,7 @@ priority_announcement.Announce( \ "A localized disruption within the neighboring psionic continua has been detected. All psi-operant crewmembers \ are advised to cease any sensitive activities and report to medical personnel in case of damage.", \ - "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/misc/announcements/nightlight_old.ogg', zlevels = affecting_z) + "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/ai/announcements/nightlight_old.ogg', zlevels = affecting_z) /datum/event/psi/announce_end() . = ..() @@ -14,7 +14,7 @@ priority_announcement.Announce( \ "The psi-disturbance has ended and baseline normality has been re-asserted. \ Anything you still can't cope with is therefore your own problem.", \ - "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/misc/announcements/nightlight_old.ogg', zlevels = affecting_z) + "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/ai/announcements/nightlight_old.ogg', zlevels = affecting_z) /datum/event/psi/tick() for(var/thing in SSpsi.processing) diff --git a/code/modules/psionics/events/mini_spasm.dm b/code/modules/psionics/events/mini_spasm.dm index 66654b4b5de..b9030f2af71 100644 --- a/code/modules/psionics/events/mini_spasm.dm +++ b/code/modules/psionics/events/mini_spasm.dm @@ -18,7 +18,7 @@ SIGNAL SOURCE TRIANGULATED TO DISTANT SITE: All personnel are advised to avoid \ exposure to active audio transmission equipment including radio headsets and intercoms \ for the duration of the signal broadcast.", \ - "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/misc/announcements/security_level_old.ogg', zlevels = affecting_z) + "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/ai/announcements/security_level_old.ogg', zlevels = affecting_z) /datum/event/minispasm/start() ..() @@ -62,4 +62,4 @@ if(.) command_announcement.Announce( \ "PRIORITY ALERT: SIGNAL BROADCAST HAS CEASED. Personnel are cleared to resume use of non-hardened radio transmission equipment. Have a nice day.", \ - "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/misc/announcements/nightlight_old.ogg', zlevels = affecting_z) + "Nralakk Federation Observation Probe TC-203 Sensor Array", new_sound = 'sound/ai/announcements/nightlight_old.ogg', zlevels = affecting_z) diff --git a/code/modules/random_map/automata/diona.dm b/code/modules/random_map/automata/diona.dm index 229390b9f3a..5608dd40d71 100644 --- a/code/modules/random_map/automata/diona.dm +++ b/code/modules/random_map/automata/diona.dm @@ -44,7 +44,7 @@ user.visible_message(SPAN_DANGER("\The [user] [pick(attacking_item.attack_verb)] \the [src] with \the [attacking_item]!"), SPAN_NOTICE("You [pick(attacking_item.attack_verb)] \the [src] with \the [attacking_item]!")) playsound(loc, attacking_item.hitsound, attacking_item.get_clamped_volume(), TRUE) - playsound(loc, /singleton/sound_category/wood_break_sound, 50, TRUE) + playsound(loc, SFX_BREAK_WOOD, 50, TRUE) health -= attacking_item.force if(health <= 0) qdel(src) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 7bd962bcaeb..d909a13941d 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -18,7 +18,7 @@ use_power = POWER_USE_IDLE idle_power_usage = 20 layer = BELOW_OBJ_LAYER - clicksound = /singleton/sound_category/button_sound + clicksound = SFX_BUTTON var/obj/item/reagent_containers/glass/beaker = null var/obj/item/storage/pill_bottle/loaded_pill_bottle = null diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 1b647af15e0..7951824bed1 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -2035,7 +2035,7 @@ result = /singleton/reagent/alcohol/goldschlager required_reagents = list(/singleton/reagent/alcohol/vodka = 10, /singleton/reagent/gold = 1) mix_message = null - reaction_sound = /singleton/sound_category/generic_pour_sound + reaction_sound = SFX_POUR result_amount = 10 /datum/chemical_reaction/drink/patron diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm index 1cdc185e15a..5371e4b8911 100644 --- a/code/modules/reagents/dispenser/dispenser2.dm +++ b/code/modules/reagents/dispenser/dispenser2.dm @@ -2,7 +2,7 @@ name = "chemical dispenser" icon = 'icons/obj/chemical.dmi' icon_state = "dispenser" - clicksound = /singleton/sound_category/button_sound + clicksound = SFX_BUTTON idle_power_usage = 100 density = TRUE anchored = TRUE diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 323f2dcbde8..1d4e02d3563 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -11,7 +11,7 @@ var/filling_states // List of percentages full that have icons var/accuracy = 1 var/fragile = 0 // If nonzero, above what force do we shatter? - var/shatter_sound = /singleton/sound_category/glass_break_sound + var/shatter_sound = SFX_BREAK_GLASS var/material/shatter_material = MATERIAL_GLASS //slight typecasting abuse here, gets converted to a material in initializee var/can_be_placed_into = list( /obj/machinery/chem_master, @@ -354,4 +354,4 @@ return 1 /obj/item/reagent_containers/proc/on_pour() - playsound(src, /singleton/sound_category/generic_pour_sound, 25, 1) + playsound(src, SFX_POUR, 25, 1) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index c5418f15f7d..64df99f9ae4 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -194,7 +194,7 @@ target.reagents.add_reagent(rid, amt, temperature = temp) reagent_volumes[rid] -= amt to_chat(user, SPAN_NOTICE("You transfer [amt] units of [R.name] to [target].")) - playsound(src.loc, /singleton/sound_category/generic_pour_sound, 50, 1) + playsound(src.loc, SFX_POUR, 50, 1) dispense() return diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 8c2c3294b46..5aed876cf70 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -418,7 +418,7 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e user.put_in_hands(cap) atom_flags |= ATOM_FLAG_OPEN_CONTAINER cap = null - playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1) + playsound(src.loc, SFX_SHAKER_LID_OFF, 50, 1) update_icon() return if(top) @@ -428,7 +428,7 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e return if(last_shake <= world.time - 10) //Spam limiter. last_shake = world.time - playsound(src.loc, /singleton/sound_category/shaker_shaking, 50, 1) + playsound(src.loc, SFX_SHAKER_SHAKING, 50, 1) src.add_fingerprint(user) return @@ -448,7 +448,7 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e user.drop_from_inventory(attacking_item, src) atom_flags ^= ATOM_FLAG_OPEN_CONTAINER cap = attacking_item - playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1) + playsound(src.loc, SFX_SHAKER_LID_OFF, 50, 1) update_icon() return TRUE if(istype(attacking_item, /obj/item/shaker_top)) @@ -459,7 +459,7 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e amount_per_transfer_from_this = 10 user.drop_from_inventory(attacking_item, src) top = attacking_item - playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1) + playsound(src.loc, SFX_SHAKER_LID_OFF, 50, 1) update_icon() return TRUE return ..() @@ -497,7 +497,7 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e amount_per_transfer_from_this = 120 usr.put_in_hands(top) top = null - playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1) + playsound(src.loc, SFX_SHAKER_LID_OFF, 50, 1) update_icon() /obj/item/shaker_top diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index a04312158ce..a5f7d9c2f12 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -12,7 +12,7 @@ volume = 100 item_state = "broken_beer" //Generic held-item sprite until unique ones are made. force = 11 - hitsound = /singleton/sound_category/bottle_hit_intact_sound + hitsound = SFX_BOTTLE_HIT_INTACT var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets) matter = list(MATERIAL_GLASS = 800) @@ -80,7 +80,7 @@ var/mob/living/L = against L.IgniteMob() - playsound(src, /singleton/sound_category/glass_break_sound, 70, 1) + playsound(src, SFX_BREAK_GLASS, 70, 1) src.transfer_fingerprints_to(B) qdel(src) @@ -241,7 +241,7 @@ attack_verb = list("stabbed", "slashed", "attacked") sharp = TRUE edge = FALSE - hitsound = /singleton/sound_category/bottle_hit_broken + hitsound = SFX_BOTTLE_HIT_BROKEN ///The mask image for mimicking a broken-off bottom of the bottle var/static/icon/broken_outline = icon('icons/obj/item/reagent_containers/food/drinks/drink_effects.dmi', "broken") ///The mask image for mimicking a broken-off neck of the bottle diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 36a2e4e7092..c03c9a0d9d3 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -187,7 +187,7 @@ var/obj/item/material/kitchen/utensil/U = attacking_item if(istype(attacking_item, /obj/item/material/kitchen/utensil/fork) && (is_liquid)) to_chat(user, SPAN_NOTICE("You uselessly pass \the [U] through \the [src].")) - playsound(user.loc, /singleton/sound_category/generic_pour_sound, 10, 1) + playsound(user.loc, SFX_POUR, 10, 1) return else if(U.scoop_food) diff --git a/code/modules/reagents/reagent_containers/food/snacks/baked.dm b/code/modules/reagents/reagent_containers/food/snacks/baked.dm index 1b16eb6785c..4f3f03a7d34 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/baked.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/baked.dm @@ -207,7 +207,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/lasagna_meat_slice slices_num = 6 trash = /obj/item/trash/grease - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT center_of_mass = list("x"=16, "y"=17) filling_color = "#e08b2a" reagents_to_add = list(/singleton/reagent/nutriment = 24, /singleton/reagent/nutriment/protein = 24, /singleton/reagent/nutriment/protein/cheese = 12) @@ -240,7 +240,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/lasagna_veggie_slice slices_num = 6 trash = /obj/item/trash/grease - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT center_of_mass = list("x"=16, "y"=17) filling_color = "#e08b2a" reagents_to_add = list(/singleton/reagent/nutriment = 48, /singleton/reagent/nutriment/protein/cheese = 12) diff --git a/code/modules/reagents/reagent_containers/food/snacks/cultural/vaurca.dm b/code/modules/reagents/reagent_containers/food/snacks/cultural/vaurca.dm index 6ce9c55aaad..2294e3cb00b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/cultural/vaurca.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/cultural/vaurca.dm @@ -79,7 +79,7 @@ icon = 'icons/obj/item/reagent_containers/food/cultural/vaurca.dmi' icon_state = "koiswaffles" trash = /obj/item/trash/waffles - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT filling_color = "#E6E600" bitesize = 8 reagents_to_add = list(/singleton/reagent/kois = 25, /singleton/reagent/toxin/phoron = 15) diff --git a/code/modules/reagents/reagent_containers/food/snacks/fish.dm b/code/modules/reagents/reagent_containers/food/snacks/fish.dm index 6b664398e5b..008909ef4b7 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/fish.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/fish.dm @@ -99,7 +99,7 @@ shell_type = /obj/item/trash/mollusc_shell/clam /obj/item/mollusc/proc/crack_shell(var/mob/user) - playsound(loc, /singleton/sound_category/pickaxe_sound, 40, TRUE) + playsound(loc, SFX_PICKAXE, 40, TRUE) if(user && loc == user) user.drop_from_inventory(src) if(meat_type) diff --git a/code/modules/reagents/reagent_containers/food/snacks/pastries.dm b/code/modules/reagents/reagent_containers/food/snacks/pastries.dm index 1577a70affe..dab6e71107c 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/pastries.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/pastries.dm @@ -145,7 +145,7 @@ icon = 'icons/obj/item/reagent_containers/food/pastries.dmi' icon_state = "waffles" trash = /obj/item/trash/waffles - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT filling_color = "#E6DEB5" center_of_mass = list("x"=15, "y"=11) reagents_to_add = list(/singleton/reagent/nutriment = 8) @@ -239,7 +239,7 @@ icon = 'icons/obj/item/reagent_containers/food/pastries.dmi' icon_state = "soylent_yellow" trash = /obj/item/trash/waffles - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT filling_color = "#E6FA61" center_of_mass = list("x"=15, "y"=11) reagents_to_add = list(/singleton/reagent/nutriment = 10) @@ -252,7 +252,7 @@ icon = 'icons/obj/item/reagent_containers/food/pastries.dmi' icon_state = "rofflewaffles" trash = /obj/item/trash/waffles - drop_sound = /singleton/sound_category/tray_hit_sound + drop_sound = SFX_TRAY_HIT filling_color = "#FF00F7" center_of_mass = list("x"=15, "y"=11) reagents_to_add = list(/singleton/reagent/nutriment = 8, /singleton/reagent/drugs/psilocybin = 8) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 159e28be83f..331335435c6 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -64,7 +64,7 @@ user.visible_message("\The [user] titles \the [src] with \a [attacking_item], marking down: \"[str]\"",\ SPAN_NOTICE("You title \the [src]: \"[str]\""),\ "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + playsound(src, pick('sound/items/bureaucracy/pen1.ogg','sound/items/bureaucracy/pen2.ogg'), 20) name = "[name] ([str])" if(!examtext && !nameset) nameset = 1 @@ -84,7 +84,7 @@ user.visible_message("\The [user] labels \the [src] with \a [attacking_item], scribbling down: \"[examtext]\"",\ SPAN_NOTICE("You label \the [src]: \"[examtext]\""),\ "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + playsound(src, pick('sound/items/bureaucracy/pen1.ogg','sound/items/bureaucracy/pen2.ogg'), 20) return /obj/structure/bigDelivery/update_icon() @@ -179,7 +179,7 @@ user.visible_message("\The [user] titles \the [src] with \a [attacking_item], marking down: \"[str]\"",\ SPAN_NOTICE("You title \the [src]: \"[str]\""),\ "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + playsound(src, pick('sound/items/bureaucracy/pen1.ogg','sound/items/bureaucracy/pen2.ogg'), 20) name = "[name] ([str])" if(!examtext && !nameset) nameset = 1 @@ -200,7 +200,7 @@ user.visible_message("\The [user] labels \the [src] with \a [attacking_item], scribbling down: \"[examtext]\"",\ SPAN_NOTICE("You label \the [src]: \"[examtext]\""),\ "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + playsound(src, pick('sound/items/bureaucracy/pen1.ogg','sound/items/bureaucracy/pen2.ogg'), 20) return /obj/item/smallDelivery/feedback_hints(mob/user, distance, is_adjacent) diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm index 4997b1e1379..b6d590ead93 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm @@ -146,7 +146,7 @@ force = 15 desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)." excavation_amount = 15 - drill_sound = /singleton/sound_category/pickaxe_sound + drill_sound = SFX_PICKAXE drill_verb = "clearing" w_class = WEIGHT_CLASS_NORMAL can_wield = 0 diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index 5ea1c9d3063..9e48e82a753 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -6,7 +6,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) //4 = code delta //config.alert_desc_blue_downto -/var/datum/announcement/priority/security/security_announcement_sound = new(do_log = FALSE, do_newscast = TRUE, new_sound = sound('sound/misc/announcements/security_level.ogg')) +/var/datum/announcement/priority/security/security_announcement_sound = new(do_log = FALSE, do_newscast = TRUE, new_sound = sound('sound/ai/announcements/security_level.ogg')) /var/datum/announcement/priority/security/security_announcement = new(do_log = FALSE, do_newscast = TRUE) /proc/set_security_level(var/level) diff --git a/code/modules/spell_system/artifacts/items/poppet.dm b/code/modules/spell_system/artifacts/items/poppet.dm index 67616a5c4fe..c26d0a41dc6 100644 --- a/code/modules/spell_system/artifacts/items/poppet.dm +++ b/code/modules/spell_system/artifacts/items/poppet.dm @@ -69,7 +69,7 @@ H.confused += 10 H.stuttering += 5 to_chat(H, SPAN_DANGER("You suddenly feel as if your head was hit by something!")) - playsound(get_turf(H), /singleton/sound_category/punch_sound, 50, 1, -1) + playsound(get_turf(H), SFX_PUNCH, 50, 1, -1) cooldown = world.time + cooldown_time diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 62376a44ba6..5222502093a 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -240,9 +240,9 @@ if(last_accent_sound < world.time && prob(20)) var/aggression = min(((damage / 800) * (power / 2500)), 1.0) * 100 if(damage >= 300) - playsound(src, /singleton/sound_category/supermatter_delam, clamp(aggression, 50, 75), FALSE, 10) + playsound(src, SFX_SM_DELAM, clamp(aggression, 50, 75), FALSE, 10) else - playsound(src, /singleton/sound_category/supermatter_calm, clamp(aggression, 50, 75), FALSE, 10) + playsound(src, SFX_SM_CALM, clamp(aggression, 50, 75), FALSE, 10) var/next_sound = round((100 - aggression) * 5) last_accent_sound = world.time + max(SUPERMATTER_ACCENT_SOUND_MIN_COOLDOWN, next_sound) diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm index 557fed5e661..2929171c1b1 100644 --- a/code/modules/tables/interactions.dm +++ b/code/modules/tables/interactions.dm @@ -311,7 +311,7 @@ var/obj/item/melee/energy/blade/blade = attacking_item blade.spark_system.queue() playsound(src.loc, 'sound/weapons/blade.ogg', 50, 1) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) user.visible_message(SPAN_DANGER("\The [src] was sliced apart by [user]!")) break_to_parts() return diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index eec67ef4fb7..619bd0370e3 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -21,7 +21,7 @@ user.visible_message(SPAN_WARNING("[user] crushes [src]!"), SPAN_DANGER("You crush [src]!")) single_spark(loc) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) blink_mob(user) user.unEquip(src) qdel(src) @@ -34,7 +34,7 @@ visible_message(SPAN_NOTICE("[src] fizzles and disappears upon impact!")) var/turf/T = get_turf(hit_atom) single_spark(T) - playsound(src.loc, /singleton/sound_category/spark_sound, 50, 1) + playsound(src.loc, SFX_SPARKS, 50, 1) if(isliving(hit_atom)) blink_mob(hit_atom) qdel(src) diff --git a/code/modules/vehicles/animal.dm b/code/modules/vehicles/animal.dm index 221fb6faa5d..6bdf0a19a43 100644 --- a/code/modules/vehicles/animal.dm +++ b/code/modules/vehicles/animal.dm @@ -166,7 +166,7 @@ M.attack_log += "\[[time_stamp()]\] rammed[M.name] ([M.ckey]) rammed [H.name] ([H.ckey]) with the [src]." msg_admin_attack("[src] crashed into [key_name(H)] at (JMP)" ) src.visible_message(SPAN_DANGER("\The [src] smashes into \the [H]!")) - playsound(src, /singleton/sound_category/swing_hit_sound, 50, 1) + playsound(src, SFX_SWING_HIT, 50, 1) H.apply_damage(20, DAMAGE_BRUTE) H.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1) H.apply_effect(4, WEAKEN) @@ -176,7 +176,7 @@ else var/mob/living/L = AM src.visible_message(SPAN_DANGER("\The [src] smashes into \the [L]!")) - playsound(src, /singleton/sound_category/swing_hit_sound, 50, 1) + playsound(src, SFX_SWING_HIT, 50, 1) L.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1) L.apply_damage(20, DAMAGE_BRUTE) M.setMoveCooldown(10) diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index d4452b627ea..b2ef6471fa7 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -308,7 +308,7 @@ M.attack_log += "\[[time_stamp()]\] rammed[M.name] ([M.ckey]) rammed [H.name] ([H.ckey]) with the [src]." msg_admin_attack("[src] crashed into [key_name(H)] at (JMP)" ) src.visible_message(SPAN_DANGER("\The [src] smashes into \the [H]!")) - playsound(src, /singleton/sound_category/swing_hit_sound, 50, 1) + playsound(src, SFX_SWING_HIT, 50, 1) H.apply_damage(20, DAMAGE_BRUTE) H.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1) H.apply_effect(4, WEAKEN) @@ -318,7 +318,7 @@ else var/mob/living/L = AM src.visible_message(SPAN_DANGER("\The [src] smashes into \the [L]!")) - playsound(src, /singleton/sound_category/swing_hit_sound, 50, 1) + playsound(src, SFX_SWING_HIT, 50, 1) L.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1) L.apply_damage(20, DAMAGE_BRUTE) M.setMoveCooldown(10) diff --git a/html/changelogs/Bat-Jukebox.yml b/html/changelogs/Bat-Jukebox.yml new file mode 100644 index 00000000000..2d56f0d001c --- /dev/null +++ b/html/changelogs/Bat-Jukebox.yml @@ -0,0 +1,22 @@ +# Your name. +author: Batrachophrenoboocosmomachia + +# 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. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - refactor: "Ported Jukebox's NanoUI interface to TGUI." + - refactor: "Ported Jukebox audio playing functionality to a component." + - refactor: "Sound keys refactored from singletons to datums, along with larger breakout of sound.dm to allow for easier SFX updates in future." + - code_imp: "Expanded track datums to include track lengths." + - code_imp: "Reorganized music file folders for more intuitive access." + - rscadd: "Earphone status feedback text now includes track length." + - rscadd: "Added autoplay functionality to earphones." + - bugfix: "Fixed earphones' 'Previous Song' verb not sending you to the end of the playlist when used while the first track is selected." + - bugfix: "Fixed gain adjustment for 'Konyang-1' (-23 dB -> standard -9.8 dB)." + - bugfix: "Fixed y-offset of audioconsole-running overlay animation to line up with the actual screen." diff --git a/icons/mecha/mech_equipment.dmi b/icons/mecha/mech_equipment.dmi index 16e3f1b4c5e..ea0c94db732 100644 Binary files a/icons/mecha/mech_equipment.dmi and b/icons/mecha/mech_equipment.dmi differ diff --git a/icons/mecha/mecha_weapon_overlays.dmi b/icons/mecha/mecha_weapon_overlays.dmi index 5802e928508..3d896a90f6b 100644 Binary files a/icons/mecha/mecha_weapon_overlays.dmi and b/icons/mecha/mecha_weapon_overlays.dmi differ diff --git a/icons/obj/audioconsole.dmi b/icons/obj/audioconsole.dmi index 093733e65bb..b85276ebf33 100644 Binary files a/icons/obj/audioconsole.dmi and b/icons/obj/audioconsole.dmi differ diff --git a/maps/_common/areas/asteroid_areas.dm b/maps/_common/areas/asteroid_areas.dm index cbf8f65a09a..37f7dced581 100644 --- a/maps/_common/areas/asteroid_areas.dm +++ b/maps/_common/areas/asteroid_areas.dm @@ -2,7 +2,7 @@ /area/mine icon_state = "mining" - music = list('sound/music/ambimine.ogg', 'sound/music/song_game.ogg') + music = list('sound/music/ambimine.ogg', 'sound/music/ingame/ss13/song_game.ogg') sound_environment = SOUND_AREA_ASTEROID area_flags = AREA_FLAG_IS_BACKGROUND diff --git a/maps/away/away_site/konyang/point_verdant/point_verdant.dmm b/maps/away/away_site/konyang/point_verdant/point_verdant.dmm index 43d2881fe80..8a0a5d6c4b5 100644 --- a/maps/away/away_site/konyang/point_verdant/point_verdant.dmm +++ b/maps/away/away_site/konyang/point_verdant/point_verdant.dmm @@ -421,12 +421,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/outdoors) -"ane" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/wood, -/area/point_verdant/outdoors) "anl" = ( /obj/structure/table/steel, /obj/effect/floor_decal/corner/blue/diagonal, @@ -618,18 +612,6 @@ /obj/structure/dispenser/oxygen, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"arY" = ( -/obj/structure/ledge/corner, -/obj/structure/ledge/corner{ - dir = 1 - }, -/obj/structure/chainlink_fence, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "ase" = ( /obj/structure/sink/kitchen{ pixel_y = 20 @@ -727,13 +709,6 @@ }, /turf/simulated/floor/lino, /area/point_verdant/interior/restaurant) -"awl" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "awM" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -822,12 +797,6 @@ /obj/effect/map_effect/window_spawner/full/reinforced/grille, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/offices) -"ayh" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/tiled/full, -/area/point_verdant/outdoors) "ayj" = ( /obj/structure/chainlink_fence{ dir = 1 @@ -908,6 +877,12 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/maint_janitorial) +"azQ" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "aAR" = ( /obj/machinery/light/small, /turf/simulated/floor/lino/diamond, @@ -950,6 +925,14 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/police) +"aCq" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/structure/table/rack/clothing, +/turf/simulated/floor/wood, +/area/point_verdant/outdoors) "aCN" = ( /obj/structure/filingcabinet/filingcabinet{ pixel_x = 10; @@ -1163,6 +1146,15 @@ /obj/random/dirt_75, /turf/simulated/floor/concrete, /area/point_verdant/outdoors) +"aFN" = ( +/obj/structure/lattice/catwalk/indoor/urban, +/obj/structure/chainlink_fence, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/outdoors) "aGC" = ( /obj/effect/decal/road_marking{ dir = 1 @@ -1326,16 +1318,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior) -"aMA" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff1-bottom"; - pixel_y = 19 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/interior/tunnels) "aMG" = ( /obj/effect/decal/exterior_stairs/half, /obj/effect/decal/curb{ @@ -1563,6 +1545,13 @@ }, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) +"aUB" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water/deep) "aUK" = ( /obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 10 @@ -1883,12 +1872,13 @@ /obj/random/dirt_75, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"bdx" = ( +"bdN" = ( /obj/effect/step_trigger/thrower{ - tiles = 1 + tiles = 1; + dir = 10 }, -/turf/simulated/wall, -/area/point_verdant/outdoors) +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "bdQ" = ( /obj/structure/road_barrier, /obj/random/dirt_75, @@ -2356,34 +2346,6 @@ /obj/structure/utility_pole/street/classic/on, /turf/simulated/floor/concrete, /area/point_verdant/interior/shallow) -"bpn" = ( -/obj/effect/decal/fake_object{ - color = "#ff0000"; - dir = 4; - icon = 'icons/atmos/pipes.dmi'; - icon_state = "intact-scrubbers"; - name = "pipe" - }, -/obj/effect/decal/fake_object{ - color = "#0000ff"; - dir = 4; - icon = 'icons/atmos/pipes.dmi'; - icon_state = "intact-supply"; - name = "pipe" - }, -/obj/effect/decal/fake_object{ - color = "#ff0000"; - icon = 'icons/obj/power_cond_white.dmi'; - icon_state = "4-8"; - name = "cable" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "bpr" = ( /obj/effect/konyang_waterfall{ icon_state = "waterfall_topleft"; @@ -2771,6 +2733,16 @@ /obj/effect/floor_decal/spline/fancy/wood/corner, /turf/simulated/floor/wood, /area/point_verdant/interior/hotel) +"bzp" = ( +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/flora/bush/konyang_reeds, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "bzq" = ( /obj/effect/decal/exterior_stairs/half/center{ dir = 8 @@ -3168,16 +3140,17 @@ }, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) -"bJO" = ( -/obj/structure/chainlink_fence{ - dir = 1 +"bKi" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 }, -/obj/structure/closet/crate/bin/urban/dumpster, /obj/effect/step_trigger/thrower{ - tiles = 1 + tiles = 1; + dir = 8 }, -/turf/simulated/floor/sidewalk/flat, -/area/point_verdant/outdoors) +/obj/random/dirt_75, +/turf/simulated/floor/asphalt, +/area/point_verdant/sewer) "bKx" = ( /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/water/deep) @@ -3298,6 +3271,14 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices) +"bNe" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "bNh" = ( /obj/structure/table/fancy, /obj/item/clothing/shoes/konyang{ @@ -3311,12 +3292,6 @@ }, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/tailor) -"bNl" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/sidewalk, -/area/point_verdant/outdoors) "bNz" = ( /obj/structure/table/rack/retail_shelf, /obj/item/storage/box/magnetic_locks{ @@ -3463,13 +3438,6 @@ }, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/offices/kaf) -"bUu" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/sewer) "bUF" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -3840,17 +3808,6 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang/sand, /area/point_verdant/outdoors) -"cei" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/obj/random/dirt_75, -/turf/simulated/floor/asphalt, -/area/point_verdant/sewer) "cek" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 10 @@ -4452,6 +4409,18 @@ /obj/random/junk, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) +"cyX" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/obj/random/dirt_75, +/obj/random/dirt_75, +/turf/simulated/floor/asphalt, +/area/point_verdant/sewer) "czD" = ( /obj/effect/decal/curb/corner, /turf/simulated/floor/asphalt, @@ -4515,12 +4484,6 @@ /obj/structure/reagent_dispensers/keg/beerkeg/rice, /turf/simulated/floor/wood, /area/point_verdant/interior/cafe) -"cBJ" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "cBQ" = ( /obj/structure/konyang_cliff{ icon_state = "cliff-top1" @@ -4859,13 +4822,6 @@ /obj/structure/extinguisher_cabinet/north, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices/basement) -"cKO" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "cKR" = ( /obj/structure/chainlink_fence{ dir = 8 @@ -4928,13 +4884,6 @@ /obj/effect/decal/curb, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"cMP" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/wall, -/area/point_verdant/outdoors) "cMQ" = ( /obj/structure/ledge, /obj/structure/rod_railing{ @@ -5059,6 +5008,16 @@ /obj/structure/closet/crate/bin/urban/compact, /turf/simulated/floor/sidewalk, /area/point_verdant/interior) +"cQO" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff2-bottom"; + pixel_y = 19 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, +/area/point_verdant/interior/tunnels) "cQS" = ( /obj/structure/flora/pottedplant/woodyshrub, /turf/simulated/floor/tiled/full, @@ -5158,15 +5117,6 @@ }, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/cafe) -"cSw" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/effect/decal/road_marking/thin{ - dir = 8 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "cSx" = ( /obj/structure/ledge/quarter{ dir = 1 @@ -5725,12 +5675,6 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/pharmacy) -"dfj" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/tiled, -/area/point_verdant/outdoors) "dfO" = ( /obj/structure/table/standard, /obj/item/storage/box/syringes, @@ -5760,16 +5704,6 @@ /obj/random/dirt_75, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/minimart) -"dgo" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff2-bottom"; - pixel_y = 19 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, -/area/point_verdant/interior/tunnels) "dgv" = ( /obj/random/dirt_75, /turf/simulated/floor/exoplanet/dirt_konyang, @@ -5805,13 +5739,6 @@ /obj/structure/lattice/catwalk/indoor/urban, /turf/simulated/floor/asphalt, /area/point_verdant/sewer) -"dgZ" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 9 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "dhw" = ( /obj/effect/decal/road_marking/crosswalk, /obj/effect/decal/road_marking{ @@ -5875,21 +5802,6 @@ /obj/item/bedsheet/black, /turf/simulated/floor/carpet/orange, /area/point_verdant/interior/hotel) -"dix" = ( -/obj/structure/ledge{ - dir = 4 - }, -/obj/effect/decal/road_marking{ - dir = 4 - }, -/obj/effect/decal/curb{ - dir = 8 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "diJ" = ( /obj/item/broken_bottle{ pixel_y = 2; @@ -5970,13 +5882,6 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/hotel/basement) -"dld" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "dlj" = ( /obj/structure/table/standard, /obj/effect/floor_decal/corner/black{ @@ -6197,6 +6102,12 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/sidewalk, /area/point_verdant/interior) +"drr" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, +/area/point_verdant/interior/tunnels) "drx" = ( /obj/structure/table/wood, /obj/item/paper_scanner{ @@ -6236,6 +6147,13 @@ }, /turf/simulated/floor/concrete, /area/point_verdant/interior/shallow) +"dso" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water/deep) "dss" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 4 @@ -6434,16 +6352,6 @@ /obj/random/junk, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"dwp" = ( -/obj/structure/cart/storage/janitorialcart/full{ - dir = 4 - }, -/obj/effect/floor_decal/corner_wide/black{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled, -/area/point_verdant/interior/offices) "dwq" = ( /obj/structure/table/rack/clothing{ dir = 4 @@ -6477,6 +6385,16 @@ /obj/machinery/door/urban, /turf/simulated/floor/wood, /area/point_verdant/interior/hotel/basement) +"dxe" = ( +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/structure/closet/crate/bin/urban/dumpster, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/sidewalk/flat, +/area/point_verdant/outdoors) "dxy" = ( /obj/structure/utility_pole/street/traffic/inverted{ dir = 4; @@ -6914,16 +6832,6 @@ /obj/item/storage/box/autoinjectors, /turf/simulated/floor/tiled, /area/point_verdant/interior/pharmacy) -"dMx" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff1-bottom" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "dMY" = ( /obj/effect/decal/road_marking/no_park{ dir = 4 @@ -7057,6 +6965,12 @@ }, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/arcade) +"dSS" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/sidewalk, +/area/point_verdant/outdoors) "dST" = ( /obj/effect/decal/road_marking/reflector{ dir = 8 @@ -7298,6 +7212,15 @@ }, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/pharmacy) +"dZU" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/effect/decal/road_marking/thin{ + dir = 4 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "dZW" = ( /obj/structure/ledge{ dir = 4 @@ -7316,13 +7239,6 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior) -"eai" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/wall/wood, -/area/point_verdant/outdoors) "ean" = ( /obj/structure/stairs/urban/south, /turf/simulated/floor/concrete, @@ -7343,6 +7259,19 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) +"ebG" = ( +/obj/structure/ledge/corner, +/obj/effect/decal/road_marking{ + dir = 8 + }, +/obj/effect/decal/curb{ + dir = 4 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "ebO" = ( /obj/structure/ledge{ dir = 1 @@ -7742,13 +7671,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/outdoors) -"emr" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/table/rack/clothing, -/turf/simulated/floor/tiled, -/area/point_verdant/outdoors) "emt" = ( /obj/effect/decal/curb{ dir = 4 @@ -8041,15 +7963,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/water) -"esc" = ( -/obj/structure/lattice/catwalk/indoor/urban, -/obj/structure/chainlink_fence, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/outdoors) "esd" = ( /obj/machinery/light{ dir = 1 @@ -8345,6 +8258,23 @@ /obj/item/clothing/head/griffin_hat, /turf/simulated/floor/wood, /area/point_verdant/interior/arcade) +"eyA" = ( +/obj/effect/decal/road_marking/center{ + dir = 8 + }, +/obj/effect/decal/road_marking/reflector{ + dir = 8 + }, +/obj/effect/decal/road_marking/no_pass{ + dir = 1 + }, +/obj/effect/decal/road_marking/no_pass, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "eyB" = ( /obj/structure/table/standard, /obj/item/storage/firstaid/surgery, @@ -8535,15 +8465,6 @@ /obj/structure/lattice/catwalk/indoor/urban, /turf/simulated/floor/airless, /area/point_verdant/outdoors) -"eEv" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/effect/decal/road_marking/thin{ - dir = 4 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "eEF" = ( /obj/structure/neon_sign{ icon_state = "believe"; @@ -8612,22 +8533,6 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) -"eHH" = ( -/obj/structure/ledge/corner{ - dir = 4 - }, -/obj/structure/ledge/corner{ - dir = 8 - }, -/obj/structure/ledge/quarter{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, -/area/point_verdant/water) "eHO" = ( /obj/structure/bed/stool/chair{ dir = 1 @@ -8766,6 +8671,17 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/laundromat) +"eLz" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/obj/random/dirt_75, +/turf/simulated/floor/asphalt, +/area/point_verdant/sewer) "eLR" = ( /obj/structure/bed/stool/chair/sofa/right/blue{ dir = 8 @@ -8805,6 +8721,13 @@ }, /turf/simulated/floor/concrete, /area/point_verdant/outdoors) +"eNn" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "eNK" = ( /obj/structure/table/rack/retail_shelf, /obj/item/stack/medical/splint/full, @@ -8920,18 +8843,6 @@ }, /turf/simulated/floor/tiled/freezer, /area/point_verdant/interior/restaurant) -"ePE" = ( -/obj/effect/decal/fake_object{ - icon = 'icons/obj/smoothtrack.dmi'; - icon_state = "track12"; - name = "tram track" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "eQd" = ( /obj/structure/ledge/quarter{ dir = 4 @@ -9367,13 +9278,6 @@ "fcQ" = ( /turf/simulated/floor/asphalt, /area/point_verdant/interior) -"fcV" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water/deep) "fcZ" = ( /obj/structure/table/steel, /obj/item/device/flash{ @@ -9593,6 +9497,13 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior/offices) +"fko" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 9 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "fks" = ( /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/restaurant) @@ -9660,15 +9571,6 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/point_verdant/interior/maint_janitorial) -"fmd" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/chainlink_fence{ - dir = 1 - }, -/turf/simulated/floor/sidewalk/flat, -/area/point_verdant/outdoors) "fmG" = ( /obj/structure/stairs/urban/left{ icon_state = "stairs-left-bot" @@ -9963,6 +9865,14 @@ /obj/effect/decal/cleanable/generic/beet_tree_petals, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) +"fsA" = ( +/obj/structure/flora/bush/konyang_reeds/water, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "fsH" = ( /obj/structure/flora/bush/konyang_reeds, /turf/simulated/floor/exoplanet/konyang/no_edge, @@ -10168,6 +10078,16 @@ /obj/random/junk, /turf/simulated/floor/tiled, /area/point_verdant/interior/hotel/basement) +"fyA" = ( +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/closet/crate/bin/urban/dumpster, +/turf/simulated/floor/sidewalk/flat, +/area/point_verdant/outdoors) "fyK" = ( /obj/structure/ledge/quarter, /turf/simulated/floor/exoplanet/dirt_konyang, @@ -10210,6 +10130,13 @@ }, /turf/simulated/floor/concrete, /area/point_verdant/outdoors) +"fzw" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water/deep) "fzG" = ( /obj/structure/table/glass, /obj/item/newspaper{ @@ -10241,17 +10168,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) -"fAq" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/obj/structure/ledge/quarter{ - dir = 1 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "fAv" = ( /obj/machinery/photocopier, /turf/simulated/floor/sidewalk/dark/detail, @@ -10271,16 +10187,6 @@ }, /turf/simulated/floor/sidewalk/detail, /area/point_verdant/outdoors) -"fBm" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/structure/flora/bush/konyang_reeds, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "fBY" = ( /obj/machinery/photocopier, /turf/simulated/floor/lino/diamond, @@ -10472,6 +10378,18 @@ /obj/machinery/light, /turf/simulated/floor/wood, /area/point_verdant/interior/offices) +"fGm" = ( +/obj/effect/decal/fake_object{ + icon = 'icons/obj/smoothtrack.dmi'; + icon_state = "track12"; + name = "tram track" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "fGE" = ( /obj/structure/neon_sign{ icon_state = "shibata_moto"; @@ -10499,6 +10417,13 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices/kaf) +"fIi" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "fIm" = ( /obj/structure/chainlink_fence{ dir = 8 @@ -10650,13 +10575,6 @@ /obj/random/dirt_75, /turf/simulated/floor/lino, /area/point_verdant/interior/hotel/basement) -"fNv" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water/deep) "fNw" = ( /obj/structure/table/stone/marble, /obj/machinery/door/window/desk/southright, @@ -10769,14 +10687,6 @@ }, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/bar) -"fPk" = ( -/obj/structure/lattice/catwalk/indoor/urban, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/outdoors) "fPx" = ( /obj/effect/map_effect/window_spawner/full/reinforced/grille, /obj/machinery/door/blast/shutters/open{ @@ -10966,23 +10876,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/outdoors) -"fYo" = ( -/obj/effect/decal/road_marking/center{ - dir = 8 - }, -/obj/effect/decal/road_marking/reflector{ - dir = 8 - }, -/obj/effect/decal/road_marking/no_pass{ - dir = 1 - }, -/obj/effect/decal/road_marking/no_pass, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "fYE" = ( /obj/structure/ledge{ dir = 5 @@ -11048,14 +10941,6 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/police) -"gaa" = ( -/obj/structure/flora/bush/konyang_reeds/water, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "gag" = ( /obj/machinery/papershredder{ pixel_x = -6 @@ -11579,13 +11464,6 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices/basement) -"gts" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/automobile_filler, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "guc" = ( /obj/effect/decal/road_marking/thin, /obj/structure/automobile_filler, @@ -11604,6 +11482,15 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior) +"gvB" = ( +/obj/structure/konyang_cliff{ + icon_state = "botcorner_east" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "gvY" = ( /obj/structure/bed/stool/chair/sofa/left/blue{ dir = 8 @@ -11997,13 +11884,6 @@ }, /turf/simulated/floor/carpet/rubber, /area/point_verdant/interior/pharmacy) -"gHH" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water/deep) "gHI" = ( /obj/effect/decal/curb/corner{ dir = 8 @@ -12547,34 +12427,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/interior/offices/kaf) -"gZz" = ( -/obj/effect/decal/fake_object{ - color = "#ff0000"; - dir = 4; - icon = 'icons/atmos/pipes.dmi'; - icon_state = "intact-scrubbers"; - name = "pipe" - }, -/obj/effect/decal/fake_object{ - color = "#0000ff"; - dir = 4; - icon = 'icons/atmos/pipes.dmi'; - icon_state = "intact-supply"; - name = "pipe" - }, -/obj/effect/decal/fake_object{ - color = "#ff0000"; - icon = 'icons/obj/power_cond_white.dmi'; - icon_state = "4-8"; - name = "cable" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "gZH" = ( /obj/effect/decal/curb{ dir = 8 @@ -12689,13 +12541,6 @@ /obj/random/dirt_75, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"hdd" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/media/jukebox, -/turf/simulated/floor/wood, -/area/point_verdant/interior/tailor) "hdn" = ( /obj/effect/decal/curb/corner{ dir = 8 @@ -12991,13 +12836,6 @@ /obj/structure/table/rack/cafe_table, /turf/simulated/floor/wood, /area/point_verdant/interior/bar) -"hom" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "hox" = ( /obj/structure/table/rack/retail_shelf, /obj/item/reagent_containers/glass/bottle/perconol{ @@ -13030,19 +12868,6 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"hoV" = ( -/obj/structure/ledge/corner, -/obj/effect/decal/road_marking{ - dir = 8 - }, -/obj/effect/decal/curb{ - dir = 4 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "hoZ" = ( /obj/effect/floor_decal/corner/dark_green/diagonal, /obj/structure/table/stone/marble, @@ -13260,6 +13085,14 @@ }, /turf/simulated/floor/bluegrid, /area/point_verdant/interior/offices) +"hyk" = ( +/obj/structure/lattice/catwalk/indoor/urban, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/random/dirt_75, +/turf/simulated/floor/asphalt, +/area/point_verdant/sewer) "hyo" = ( /obj/effect/decal/fake_object{ density = 1; @@ -13422,13 +13255,6 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/offices) -"hBR" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water/deep) "hCt" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -13764,20 +13590,6 @@ }, /turf/simulated/floor/carpet/magenta, /area/point_verdant/interior/hotel) -"hNA" = ( -/obj/effect/decal/fake_object{ - icon = 'icons/obj/smoothtrack.dmi'; - icon_state = "track12"; - name = "tram track" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/obj/random/dirt_75, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "hNR" = ( /obj/random/dirt_75, /obj/structure/structural_support, @@ -13843,6 +13655,12 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) +"hPU" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/tiled, +/area/point_verdant/outdoors) "hQd" = ( /obj/structure/rope_post{ dir = 4 @@ -13957,13 +13775,6 @@ /obj/random/dirt_75, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/decrepit) -"hTc" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/interior/tunnels) "hTd" = ( /obj/random/automobile{ dir = 4 @@ -14109,15 +13920,6 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"hWO" = ( -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "hWQ" = ( /obj/structure/lattice/catwalk/indoor/urban, /obj/effect/shuttle_landmark/point_verdant/water/dock_05{ @@ -14310,14 +14112,6 @@ /obj/random/dirt_75, /turf/simulated/floor/wood, /area/point_verdant/interior/hotel/basement) -"iaS" = ( -/obj/structure/lattice/catwalk/indoor/urban, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/random/dirt_75, -/turf/simulated/floor/asphalt, -/area/point_verdant/sewer) "ibn" = ( /obj/structure/konyang_cliff{ icon_state = "cliff-top1" @@ -14344,6 +14138,12 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"ics" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "ict" = ( /obj/machinery/light/small{ dir = 1 @@ -14588,6 +14388,34 @@ /obj/machinery/iv_drip, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices/basement) +"ikf" = ( +/obj/effect/decal/fake_object{ + color = "#ff0000"; + dir = 4; + icon = 'icons/atmos/pipes.dmi'; + icon_state = "intact-scrubbers"; + name = "pipe" + }, +/obj/effect/decal/fake_object{ + color = "#0000ff"; + dir = 4; + icon = 'icons/atmos/pipes.dmi'; + icon_state = "intact-supply"; + name = "pipe" + }, +/obj/effect/decal/fake_object{ + color = "#ff0000"; + icon = 'icons/obj/power_cond_white.dmi'; + icon_state = "4-8"; + name = "cable" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "ikl" = ( /obj/structure/utility_pole/street/on{ dir = 8 @@ -14893,6 +14721,13 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"iuG" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "iuI" = ( /obj/structure/table/standard, /obj/item/pen/fountain/black{ @@ -14949,15 +14784,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/outdoors) -"ivj" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff1-bottom" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "ivu" = ( /obj/machinery/vending/minimart/alcohol{ pixel_y = 32 @@ -15008,13 +14834,13 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior/police) -"ixt" = ( +"ixv" = ( /obj/effect/step_trigger/thrower{ tiles = 1; - dir = 1 + dir = 8 }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "ixG" = ( /turf/simulated/wall/wood, /area/point_verdant/interior/hotel/basement) @@ -15050,19 +14876,6 @@ }, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/pharmacy) -"izT" = ( -/obj/effect/decal/fake_object{ - icon = 'icons/obj/smoothtrack.dmi'; - icon_state = "track12"; - name = "tram track" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "iAB" = ( /obj/random/dirt_75, /obj/random/dirt_75, @@ -15540,13 +15353,6 @@ }, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) -"iKJ" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "iKO" = ( /obj/machinery/lapvend, /turf/simulated/floor/wood, @@ -15711,13 +15517,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/asphalt, /area/point_verdant/interior/offices/basement) -"iPa" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 9 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water/deep) "iPi" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/sidewalk/dark, @@ -15796,16 +15595,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"iSk" = ( -/obj/structure/ledge{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 9 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "iSQ" = ( /obj/effect/decal/road_marking/no_pass, /turf/simulated/floor/asphalt, @@ -15868,6 +15657,18 @@ }, /turf/simulated/floor/lino, /area/point_verdant/interior/bar) +"iVf" = ( +/obj/structure/ledge/corner, +/obj/structure/ledge/corner{ + dir = 1 + }, +/obj/structure/chainlink_fence, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "iVw" = ( /obj/effect/decal/road_marking{ dir = 8 @@ -16006,6 +15807,16 @@ }, /turf/simulated/floor/tiled/freezer, /area/point_verdant/interior/offices) +"iZA" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff-west" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, +/area/point_verdant/water) "iZR" = ( /obj/structure/table/stone/marble, /obj/structure/window/reinforced{ @@ -16253,17 +16064,6 @@ /obj/structure/lattice/catwalk/indoor/urban, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) -"jhE" = ( -/obj/structure/dam{ - icon_state = "dam2"; - opacity = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/outdoors) "jhN" = ( /obj/machinery/recharger{ pixel_x = -10 @@ -16736,6 +16536,15 @@ /obj/structure/flora/bush/konyang_reeds, /turf/simulated/floor/exoplanet/konyang, /area/point_verdant/outdoors) +"jud" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/chainlink_fence{ + dir = 1 + }, +/turf/simulated/floor/sidewalk/flat, +/area/point_verdant/outdoors) "jup" = ( /turf/simulated/floor/sidewalk/paved, /area/point_verdant/interior/shallow) @@ -17382,6 +17191,13 @@ /obj/item/pen, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices) +"jPv" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/interior/tunnels) "jPy" = ( /obj/structure/flora/pottedplant/aquatic, /turf/simulated/floor/lino, @@ -17390,17 +17206,20 @@ /obj/effect/decal/curb, /turf/simulated/floor/exoplanet/dirt_konyang/sand, /area/point_verdant/outdoors) -"jPG" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 +"jQb" = ( +/obj/effect/decal/fake_object{ + icon = 'icons/obj/smoothtrack.dmi'; + icon_state = "track12"; + name = "tram track" }, /obj/effect/step_trigger/thrower{ tiles = 1; dir = 4 }, /obj/random/dirt_75, -/turf/simulated/floor/asphalt, -/area/point_verdant/sewer) +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "jQd" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 4 @@ -17605,13 +17424,6 @@ /obj/random/dirt_75, /turf/simulated/floor/wood, /area/point_verdant/interior/cafe) -"jVB" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "jVS" = ( /obj/structure/closet/crate/trashcart, /obj/random/junk, @@ -17668,6 +17480,12 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) +"jXa" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "jXg" = ( /obj/structure/ledge{ dir = 1 @@ -17898,6 +17716,12 @@ /obj/effect/decal/cleanable/liquid_fuel, /turf/simulated/floor/sidewalk/blocks, /area/point_verdant/outdoors) +"kcH" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "kcN" = ( /obj/structure/table/rack, /obj/item/gun/projectile/automatic/rifle/z8{ @@ -18328,13 +18152,6 @@ }, /turf/simulated/floor/exoplanet/konyang, /area/point_verdant/outdoors) -"knT" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "koo" = ( /obj/structure/konyang_cliff{ icon_state = "cliff-top1" @@ -18542,6 +18359,17 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/restaurant) +"kuO" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/obj/structure/ledge/quarter{ + dir = 1 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "kuX" = ( /turf/simulated/floor/wood, /area/point_verdant/interior/robotics) @@ -18571,12 +18399,6 @@ /obj/structure/rod_railing, /turf/simulated/floor/wood, /area/point_verdant/interior/cafe) -"kvH" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water/deep) "kvQ" = ( /obj/structure/bed/padded, /obj/item/bedsheet/brown, @@ -18596,6 +18418,17 @@ /obj/structure/flora/bush/konyang_reeds, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) +"kwr" = ( +/obj/structure/dam{ + icon_state = "dam2"; + opacity = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/outdoors) "kwI" = ( /obj/structure/table/wood, /obj/item/storage/box/fancy/cigarettes/cigar{ @@ -18671,6 +18504,22 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang, /area/point_verdant/interior/tunnels) +"kyr" = ( +/obj/structure/ledge/corner{ + dir = 4 + }, +/obj/structure/ledge/corner{ + dir = 8 + }, +/obj/structure/ledge/quarter{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, +/area/point_verdant/water) "kys" = ( /obj/effect/decal/curb/corner, /obj/random/dirt_75, @@ -18704,14 +18553,6 @@ /obj/effect/floor_decal/corner/grey/diagonal, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/restaurant) -"kzW" = ( -/obj/structure/boat, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/automobile_filler, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "kAr" = ( /obj/structure/lattice/catwalk/indoor/urban, /turf/simulated/floor/airless, @@ -19095,13 +18936,6 @@ }, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/tailor) -"kIA" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "kIF" = ( /obj/effect/floor_decal/corner_wide/mauve/full{ dir = 1 @@ -19156,6 +18990,13 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"kKt" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 9 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "kKK" = ( /obj/effect/decal/road_marking{ dir = 4 @@ -19242,6 +19083,13 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/pharmacy) +"kOH" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "kOJ" = ( /obj/structure/barricade/wooden, /turf/simulated/floor/sidewalk/flat, @@ -19279,6 +19127,13 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled, /area/point_verdant/interior/robotics) +"kPV" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/media/jukebox, +/turf/simulated/floor/wood, +/area/point_verdant/interior/tailor) "kQQ" = ( /turf/unsimulated/wall/konyang, /area/point_verdant/interior) @@ -19310,6 +19165,35 @@ /obj/effect/decal/road_marking/no_park, /turf/simulated/floor/sidewalk/blocks, /area/point_verdant/interior) +"kRJ" = ( +/obj/effect/decal/fake_object{ + color = "#ff0000"; + dir = 4; + icon = 'icons/atmos/pipes.dmi'; + icon_state = "intact-scrubbers"; + name = "pipe" + }, +/obj/effect/decal/fake_object{ + color = "#0000ff"; + dir = 4; + icon = 'icons/atmos/pipes.dmi'; + icon_state = "intact-supply"; + name = "pipe" + }, +/obj/effect/decal/fake_object{ + color = "#ff0000"; + icon = 'icons/obj/power_cond_white.dmi'; + icon_state = "4-8"; + name = "cable" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/random/dirt_75, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "kRU" = ( /obj/structure/chainlink_fence, /obj/structure/konyang_cliff{ @@ -19347,14 +19231,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang, /area/point_verdant/water) -"kSZ" = ( -/obj/structure/flora/rock/konyang/water, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "kTb" = ( /obj/structure/konyang_cliff{ icon_state = "cliff1-bottom" @@ -19582,16 +19458,6 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/hotel/basement) -"kZG" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/effect/floor_decal/konyang_flowers, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "kZH" = ( /obj/structure/chainlink_fence{ dir = 1 @@ -19633,13 +19499,6 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"lbi" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "lbn" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -20308,6 +20167,16 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices) +"lwf" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/effect/floor_decal/konyang_flowers, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "lws" = ( /obj/structure/table/wood, /obj/item/newspaper{ @@ -20536,6 +20405,14 @@ /obj/random/dirt_75, /turf/simulated/floor/carpet/darkblue, /area/point_verdant/interior/hotel) +"lBj" = ( +/obj/structure/flora/rock/konyang/water, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "lBr" = ( /obj/random/dirt_75, /obj/random/dirt_75, @@ -20629,16 +20506,6 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices) -"lEi" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff-west" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, -/area/point_verdant/water) "lEB" = ( /obj/effect/decal/road_marking/no_park, /obj/effect/decal/curb{ @@ -21166,16 +21033,6 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/interior) -"lRx" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff-west" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, -/area/point_verdant/water) "lRJ" = ( /obj/structure/ore_box, /turf/simulated/floor/sidewalk/dark, @@ -21399,6 +21256,13 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/interior) +"lWP" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/table/rack/clothing, +/turf/simulated/floor/tiled, +/area/point_verdant/outdoors) "lXa" = ( /obj/structure/automobile_filler, /turf/simulated/floor/asphalt, @@ -21714,6 +21578,14 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"mji" = ( +/obj/structure/flora/bush/konyang_reeds/water, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "mjx" = ( /obj/effect/floor_decal/corner_wide/white, /turf/simulated/floor/tiled, @@ -21905,10 +21777,15 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/offices) -"mpm" = ( -/obj/machinery/media/jukebox, -/turf/simulated/floor/tiled/full, -/area/point_verdant/interior/bar) +"mpk" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff-west" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/outdoors) "mpn" = ( /obj/machinery/papershredder{ pixel_x = -8 @@ -22000,6 +21877,14 @@ "mrZ" = ( /turf/simulated/wall/r_wall, /area/point_verdant/outdoors) +"mse" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/obj/structure/table/rack/clothing, +/turf/simulated/floor/wood, +/area/point_verdant/outdoors) "msi" = ( /obj/structure/ledge/quarter{ dir = 1 @@ -22186,6 +22071,16 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior/tunnels) +"mxb" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/structure/flora/bush/konyang_reeds, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "mxs" = ( /obj/structure/flora/rock/konyang, /obj/effect/decal/curb{ @@ -22295,6 +22190,10 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/restaurant) +"mBn" = ( +/obj/machinery/media/jukebox, +/turf/simulated/floor/tiled/full, +/area/point_verdant/interior/bar) "mBt" = ( /obj/effect/decal/curb, /obj/random/dirt_75, @@ -22476,13 +22375,6 @@ /obj/structure/closet/crate, /turf/simulated/floor/tiled/full, /area/point_verdant/outdoors) -"mGD" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "mGK" = ( /obj/structure/window/reinforced/crescent, /obj/effect/floor_decal/industrial/warning, @@ -22827,14 +22719,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"mRq" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "mRK" = ( /obj/structure/lattice/catwalk/indoor/planks, /obj/structure/beach_umbrella, @@ -23438,6 +23322,13 @@ /obj/random/dirt_75, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/outdoors) +"niy" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/wall/wood, +/area/point_verdant/outdoors) "niz" = ( /obj/effect/decal/road_marking/thin{ dir = 1 @@ -24186,13 +24077,6 @@ /obj/random/dirt_75, /turf/simulated/floor/asphalt, /area/point_verdant/sewer) -"nEP" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 9 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "nEQ" = ( /obj/structure/konyang_cliff{ icon_state = "cliff2-bottom" @@ -24211,6 +24095,16 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior/parking) +"nFa" = ( +/obj/structure/cart/storage/janitorialcart/full{ + dir = 4 + }, +/obj/effect/floor_decal/corner_wide/black{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled, +/area/point_verdant/interior/offices) "nFL" = ( /obj/machinery/light/spot{ dir = 4 @@ -24227,6 +24121,13 @@ icon_state = "rub_carpet" }, /area/point_verdant/interior/offices/basement) +"nFN" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "nFP" = ( /obj/effect/decal/curb, /obj/structure/ledge/quarter, @@ -24285,21 +24186,6 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"nHN" = ( -/obj/effect/decal/road_marking/thin{ - dir = 1 - }, -/obj/effect/decal/road_marking{ - dir = 8 - }, -/obj/effect/decal/curb{ - dir = 4 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "nIc" = ( /obj/effect/decal/cleanable/generic, /turf/simulated/floor/sidewalk/flat, @@ -24722,13 +24608,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/offices/basement) -"nXd" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "nXs" = ( /obj/structure/konyang_cliff{ icon_state = "cliff-top1" @@ -24861,6 +24740,12 @@ /obj/effect/decal/road_marking/thin, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"obO" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/sewage, +/area/point_verdant/sewer) "ocg" = ( /obj/structure/barricade/wooden, /obj/effect/decal/road_marking/no_pass, @@ -24925,6 +24810,16 @@ /obj/item/reagent_containers/chem_disp_cartridge/iron, /turf/simulated/floor/tiled, /area/point_verdant/interior/pharmacy) +"oeQ" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff1-bottom"; + pixel_y = 19 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/interior/tunnels) "ofv" = ( /obj/structure/shipping_container_old{ icon_state = "green1" @@ -25023,6 +24918,14 @@ }, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) +"ojt" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/obj/structure/flora/bush/konyang_reeds, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "ojX" = ( /turf/simulated/floor/carpet/lightblue, /area/point_verdant/interior/offices/basement) @@ -25619,23 +25522,6 @@ /obj/structure/flora/rock/konyang/moss, /turf/simulated/floor/exoplanet/konyang/wilting, /area/point_verdant/outdoors) -"oyH" = ( -/obj/structure/flora/rock/konyang/water, -/obj/structure/flora/bush/konyang_reeds/water, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) -"oyM" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/obj/structure/table/rack/clothing, -/turf/simulated/floor/wood, -/area/point_verdant/outdoors) "oyZ" = ( /obj/structure/table/rack/retail_shelf, /obj/item/reagent_containers/chem_disp_cartridge/copper, @@ -25825,17 +25711,6 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/laundromat) -"oEg" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/obj/structure/ledge/quarter{ - dir = 1 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "oEh" = ( /obj/effect/decal/exterior_stairs/right{ dir = 4; @@ -26374,6 +26249,16 @@ "oVt" = ( /turf/simulated/floor/sidewalk/dark, /area/point_verdant/interior/offices/kaf) +"oVD" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff1-bottom" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "oWj" = ( /obj/structure/closet/crate/bin/urban/dumpster, /obj/effect/decal/cleanable/cobweb, @@ -26386,6 +26271,13 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/maint_janitorial) +"oWr" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/automobile_filler, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "oWE" = ( /obj/structure/rod_railing{ name = "imposing rod railing" @@ -26443,13 +26335,6 @@ /obj/structure/automobile_filler, /turf/simulated/floor/asphalt, /area/point_verdant/interior/offices) -"oXl" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water/deep) "oXt" = ( /obj/machinery/computer/security/telescreen{ name = "Spec. Ops. Monitor"; @@ -26693,13 +26578,6 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/hotel/basement) -"pgo" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 5 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "pgq" = ( /obj/structure/bed/stool/chair, /obj/effect/floor_decal/corner/blue{ @@ -26722,6 +26600,13 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/police) +"pgC" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 5 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "pgG" = ( /obj/structure/rod_railing{ name = "imposing rod railing" @@ -26756,13 +26641,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"phF" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "pip" = ( /obj/structure/closet/crate/secure/large, /obj/item/extinguisher, @@ -27231,6 +27109,16 @@ /obj/random/dirt_75, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) +"pwf" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff-west" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, +/area/point_verdant/water) "pwr" = ( /obj/structure/table/standard, /obj/item/folder/white{ @@ -27451,6 +27339,14 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) +"pDg" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/structure/structural_support/side, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "pDi" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 5 @@ -27798,6 +27694,21 @@ /obj/structure/flora/rock/konyang/water, /turf/simulated/floor/exoplanet/water/shallow/konyang, /area/point_verdant/outdoors) +"pSB" = ( +/obj/effect/decal/road_marking/thin{ + dir = 1 + }, +/obj/effect/decal/road_marking{ + dir = 8 + }, +/obj/effect/decal/curb{ + dir = 4 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "pSZ" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 10 @@ -27893,12 +27804,6 @@ /obj/item/trash/cigbutt, /turf/simulated/floor/tiled, /area/point_verdant/interior/police) -"pWe" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/sewage, -/area/point_verdant/sewer) "pWB" = ( /obj/structure/ledge/quarter/corner{ dir = 4 @@ -27965,6 +27870,15 @@ /obj/random/junk, /turf/simulated/floor/asphalt, /area/point_verdant/sewer) +"pZq" = ( +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "pZC" = ( /obj/effect/decal/curb{ dir = 8 @@ -28412,6 +28326,13 @@ /obj/machinery/vending/snack/konyang, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/outdoors) +"qqO" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "qrt" = ( /obj/structure/ledge/corner{ dir = 1 @@ -28435,6 +28356,19 @@ }, /turf/simulated/open, /area/point_verdant/outdoors) +"qrT" = ( +/obj/effect/decal/fake_object{ + icon = 'icons/obj/smoothtrack.dmi'; + icon_state = "track12"; + name = "tram track" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "qrZ" = ( /obj/structure/road_barrier, /obj/structure/utility_pole/street/on, @@ -28477,11 +28411,25 @@ /obj/structure/crane, /turf/simulated/floor/concrete, /area/point_verdant/outdoors) +"qto" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 5 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "qtu" = ( /obj/structure/flora/rock/konyang/small, /obj/structure/rod_railing, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) +"qtK" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "qtL" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -28636,6 +28584,13 @@ /obj/random/dirt_75, /turf/simulated/floor/asphalt, /area/point_verdant/sewer) +"qxO" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/sewer) "qxQ" = ( /obj/structure/closet/crate/medical, /obj/item/roller, @@ -28671,6 +28626,15 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/arcade) +"qyF" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff2-bottom" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "qyW" = ( /obj/structure/table/wood, /obj/item/pen{ @@ -28806,6 +28770,13 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/offices/kaf) +"qCr" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "qCu" = ( /obj/random/dirt_75, /turf/simulated/floor/tiled, @@ -29159,16 +29130,6 @@ /obj/random/dirt_75, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"qMe" = ( -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "qMh" = ( /obj/effect/floor_decal/corner_wide/black/diagonal, /obj/structure/table/standard, @@ -29560,16 +29521,6 @@ }, /turf/simulated/floor/carpet/green, /area/point_verdant/interior/offices/kaf) -"qXq" = ( -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/closet/crate/bin/urban, -/turf/simulated/floor/sidewalk/flat, -/area/point_verdant/outdoors) "qXz" = ( /obj/structure/bed/stool/bar/padded/black{ dir = 4 @@ -29579,14 +29530,12 @@ }, /turf/simulated/floor/lino, /area/point_verdant/interior/bar) -"qXK" = ( +"qXD" = ( /obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 + tiles = 1 }, -/obj/structure/structural_support/side, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) +/turf/simulated/floor/tiled/full, +/area/point_verdant/outdoors) "qXP" = ( /obj/structure/rope_railing, /obj/structure/rope_post, @@ -29870,14 +29819,6 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"rib" = ( -/obj/structure/flora/bush/konyang_reeds/water, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "rip" = ( /obj/item/modular_computer/console, /obj/machinery/light{ @@ -30035,6 +29976,13 @@ /obj/machinery/door/urban/glass_sliding/double, /turf/simulated/floor/lino/diamond, /area/point_verdant/interior/pharmacy) +"rmv" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/wall, +/area/point_verdant/outdoors) "rmX" = ( /obj/effect/floor_decal/industrial/warning/dust/corner, /obj/random/junk, @@ -30093,15 +30041,6 @@ /obj/structure/chainlink_fence, /turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, /area/point_verdant/outdoors) -"roC" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/chainlink_fence{ - dir = 1 - }, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "roJ" = ( /obj/item/ore, /turf/simulated/floor/exoplanet/dirt_konyang, @@ -30318,6 +30257,15 @@ }, /turf/simulated/floor/roofing_tiles, /area/point_verdant/outdoors) +"rum" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/effect/decal/road_marking/thin{ + dir = 8 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "ruq" = ( /obj/machinery/door/urban, /obj/structure/sign/urban/staff{ @@ -30348,13 +30296,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior/shallow) -"rvH" = ( -/obj/structure/flora/bush/konyang_reeds/water, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "rvO" = ( /turf/simulated/floor/tiled, /area/point_verdant/interior/robotics) @@ -30965,15 +30906,6 @@ }, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/police) -"rQX" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff-west" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/outdoors) "rRl" = ( /obj/structure/table/standard, /obj/effect/floor_decal/corner_wide/black/diagonal, @@ -30989,12 +30921,6 @@ /obj/random/dirt_75, /turf/simulated/floor/sidewalk/blocks, /area/point_verdant/interior/tunnels) -"rRY" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "rSs" = ( /obj/structure/neon_sign{ icon_state = "sign6" @@ -31259,6 +31185,21 @@ }, /turf/simulated/floor/exoplanet/konyang/pink, /area/point_verdant/outdoors) +"sbd" = ( +/obj/structure/ledge{ + dir = 4 + }, +/obj/effect/decal/road_marking{ + dir = 4 + }, +/obj/effect/decal/curb{ + dir = 8 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "sbj" = ( /obj/structure/utility_pole/street/on, /obj/structure/ledge{ @@ -31297,13 +31238,6 @@ /obj/structure/road_barrier, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) -"scm" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 5 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "scs" = ( /obj/structure/bed/stool/chair/sofa/right/blue{ dir = 4 @@ -31350,6 +31284,17 @@ /obj/effect/decal/curb/corner, /turf/simulated/floor/asphalt, /area/point_verdant/interior/parking) +"sey" = ( +/obj/effect/decal/road_marking/center, +/obj/effect/decal/road_marking/no_pass{ + dir = 8 + }, +/obj/effect/decal/road_marking/reflector, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "seF" = ( /obj/effect/decal/curb{ dir = 1 @@ -31545,6 +31490,16 @@ /obj/random/dirt_75, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) +"skQ" = ( +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "skS" = ( /obj/item/modular_computer/console{ dir = 4 @@ -31605,6 +31560,13 @@ /obj/effect/floor_decal/konyang_flowers, /turf/simulated/floor/exoplanet/konyang/wilting, /area/point_verdant/outdoors) +"sng" = ( +/obj/structure/flora/bush/konyang_reeds/water, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "snr" = ( /obj/effect/konyang_waterfall{ pixel_y = -16 @@ -31695,17 +31657,6 @@ /obj/structure/flora/rock/konyang, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) -"srs" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/obj/random/dirt_75, -/turf/simulated/floor/asphalt, -/area/point_verdant/sewer) "srD" = ( /obj/structure/rope_post{ dir = 8 @@ -31948,15 +31899,6 @@ }, /turf/simulated/floor/exoplanet/konyang/no_edge, /area/point_verdant/outdoors) -"sxS" = ( -/obj/structure/konyang_cliff{ - icon_state = "cliff2-bottom" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) "syd" = ( /obj/structure/dam{ opacity = 1 @@ -32262,18 +32204,6 @@ }, /turf/simulated/floor/exoplanet/water/shallow/konyang, /area/point_verdant/outdoors) -"sEL" = ( -/obj/effect/decal/fake_object{ - icon = 'icons/obj/smoothtrack.dmi'; - icon_state = "track12"; - name = "tram track" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "sFj" = ( /obj/structure/ledge/quarter/corner, /turf/simulated/floor/lino/diamond, @@ -32473,6 +32403,15 @@ }, /turf/simulated/floor/concrete, /area/point_verdant/outdoors) +"sNV" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/chainlink_fence{ + dir = 1 + }, +/turf/simulated/floor/exoplanet/konyang, +/area/point_verdant/outdoors) "sNW" = ( /obj/structure/konyang_cliff{ icon_state = "innercorner6" @@ -32696,14 +32635,6 @@ /obj/structure/bed/stool/chair/office/dark, /turf/simulated/floor/lino, /area/point_verdant/interior/decrepit) -"sWJ" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/obj/structure/table/rack/clothing, -/turf/simulated/floor/wood, -/area/point_verdant/outdoors) "sWZ" = ( /obj/structure/table/wood, /obj/structure/window/reinforced{ @@ -32740,15 +32671,6 @@ "sYr" = ( /turf/simulated/open, /area/point_verdant/interior/arcade) -"sYD" = ( -/obj/effect/decal/road_marking/thin{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "sZv" = ( /obj/structure/konyang_cliff, /turf/simulated/floor/exoplanet/water/shallow/konyang, @@ -32927,6 +32849,13 @@ /obj/structure/ledge/quarter, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) +"teY" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "tfa" = ( /obj/structure/neon_sign{ icon_state = "sign7"; @@ -33095,6 +33024,13 @@ /obj/random/dirt_75, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) +"tkq" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 9 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "tkR" = ( /obj/structure/window/reinforced{ dir = 4 @@ -33978,17 +33914,6 @@ }, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/outdoors) -"tHf" = ( -/obj/effect/decal/road_marking/center, -/obj/effect/decal/road_marking/no_pass{ - dir = 8 - }, -/obj/effect/decal/road_marking/reflector, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "tHg" = ( /obj/structure/structural_support/side, /turf/simulated/floor/exoplanet/water/shallow/konyang, @@ -34047,13 +33972,6 @@ /obj/structure/lattice, /turf/simulated/open, /area/point_verdant/outdoors) -"tJO" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/wall/wood, -/area/point_verdant/outdoors) "tJQ" = ( /obj/structure/table/standard, /obj/item/storage/box/folders{ @@ -34350,16 +34268,6 @@ "tST" = ( /turf/simulated/floor/exoplanet/water/konyang, /area/point_verdant/interior/tunnels) -"tTA" = ( -/obj/structure/konyang_cliff{ - icon_state = "topcorner_west" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "tTB" = ( /obj/effect/floor_decal/corner_wide/mauve/full{ dir = 1 @@ -34394,6 +34302,15 @@ /obj/structure/table/wood, /turf/simulated/floor/carpet/magenta, /area/point_verdant/interior/tailor) +"tVw" = ( +/obj/structure/flora/rock/konyang/water, +/obj/structure/flora/bush/konyang_reeds/water, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "tVF" = ( /obj/structure/table/stone/marble, /obj/random/soap{ @@ -34491,6 +34408,18 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/police) +"tYd" = ( +/obj/effect/decal/fake_object{ + icon = 'icons/obj/smoothtrack.dmi'; + icon_state = "track12"; + name = "tram track" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "tYt" = ( /obj/item/grenade/smokebomb{ pixel_x = 5 @@ -34939,6 +34868,17 @@ /obj/effect/decal/curb, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"unU" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/random/dirt_75, +/turf/simulated/floor/asphalt, +/area/point_verdant/sewer) "unW" = ( /obj/effect/decal/road_marking, /obj/random/dirt_75, @@ -34957,12 +34897,6 @@ /obj/machinery/door/window/desk/southright, /turf/simulated/floor/wood, /area/point_verdant/interior/spaceport) -"uoW" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/asphalt, -/area/point_verdant/outdoors) "upg" = ( /obj/effect/decal/curb, /obj/structure/table/reinforced/steel, @@ -35002,6 +34936,17 @@ /obj/structure/trash_pile, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/maint_janitorial) +"urh" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/structure/ledge/quarter{ + dir = 1 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "urU" = ( /obj/structure/road_barrier/bot_in{ dir = 1 @@ -35620,6 +35565,15 @@ /obj/random/dirt_75, /turf/simulated/floor/carpet/lightblue, /area/point_verdant/interior/police) +"uJY" = ( +/obj/effect/decal/road_marking/thin{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/asphalt, +/area/point_verdant/outdoors) "uKj" = ( /obj/structure/ledge/quarter{ dir = 1 @@ -35653,10 +35607,28 @@ }, /turf/simulated/floor/concrete, /area/point_verdant/outdoors) +"uLp" = ( +/obj/structure/lattice/catwalk/indoor/urban, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/outdoors) "uLu" = ( /obj/structure/table/glass, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/offices) +"uLz" = ( +/obj/structure/ledge{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 9 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "uLL" = ( /obj/item/modular_computer/laptop/preset/civilian, /obj/structure/table/wood, @@ -36083,6 +36055,14 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"uWX" = ( +/obj/structure/boat, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/automobile_filler, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "uXa" = ( /obj/effect/decal/cleanable/generic/beet_tree_petals, /obj/effect/decal/curb, @@ -36315,6 +36295,12 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/offices) +"vci" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/wood, +/area/point_verdant/outdoors) "vcC" = ( /obj/effect/decal/curb/corner, /turf/simulated/floor/asphalt, @@ -36439,6 +36425,13 @@ /obj/random/dirt_75, /turf/simulated/floor/sidewalk/blocks, /area/point_verdant/interior) +"veX" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "vfc" = ( /obj/structure/lattice/catwalk/indoor/planks/deep, /obj/item/reagent_containers/food/drinks/drinkingglass/newglass/coffeecup/teacup{ @@ -36565,6 +36558,13 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/outdoors) +"viA" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "vji" = ( /turf/simulated/floor/asphalt, /area/point_verdant/interior/parking) @@ -36743,18 +36743,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/full, /area/point_verdant/interior/offices/basement) -"voh" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/obj/random/dirt_75, -/obj/random/dirt_75, -/turf/simulated/floor/asphalt, -/area/point_verdant/sewer) "vov" = ( /obj/effect/floor_decal/spline/fancy/wood, /turf/simulated/floor/wood, @@ -37002,6 +36990,15 @@ /obj/effect/decal/curb/corner, /turf/simulated/floor/exoplanet/dirt_konyang/sand, /area/point_verdant/outdoors) +"vwJ" = ( +/obj/structure/konyang_cliff{ + icon_state = "cliff1-bottom" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "vwP" = ( /obj/effect/decal/road_marking/thin{ dir = 4 @@ -37809,6 +37806,13 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/freezer, /area/point_verdant/interior/police) +"vTO" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 9 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water/deep) "vTP" = ( /obj/effect/decal/curb{ dir = 1 @@ -37872,22 +37876,6 @@ }, /turf/simulated/floor/wood, /area/point_verdant/interior/police) -"vXa" = ( -/obj/structure/konyang_cliff{ - icon_state = "botcorner_east" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang, -/area/point_verdant/water) -"vXd" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "vXl" = ( /obj/machinery/light{ dir = 1; @@ -37895,6 +37883,13 @@ }, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/robotics) +"vXq" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/wall/wood, +/area/point_verdant/outdoors) "vXH" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -37969,6 +37964,12 @@ /obj/random/dirt_75, /turf/simulated/floor/lino, /area/point_verdant/interior/minimart) +"vZy" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water/deep) "vZR" = ( /obj/effect/decal/exterior_stairs/half{ dir = 8 @@ -37986,6 +37987,16 @@ /obj/structure/closet/crate/bin/urban/dumpster, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior/tunnels) +"wac" = ( +/obj/structure/chainlink_fence{ + dir = 1 + }, +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/obj/structure/closet/crate/bin/urban, +/turf/simulated/floor/sidewalk/flat, +/area/point_verdant/outdoors) "waf" = ( /obj/structure/dam{ icon_state = "dam3"; @@ -38104,6 +38115,16 @@ /obj/machinery/door/window/eastleft, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/robotics) +"wdJ" = ( +/obj/structure/konyang_cliff{ + icon_state = "topcorner_west" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water) "wdK" = ( /obj/effect/decal/curb/corner{ dir = 4 @@ -38499,14 +38520,6 @@ /obj/random/dirt_75, /turf/simulated/floor/sidewalk/blocks, /area/point_verdant/outdoors) -"wsA" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/obj/structure/flora/bush/konyang_reeds, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "wsO" = ( /obj/effect/floor_decal/corner/grey/diagonal, /obj/structure/closet/crate/bin, @@ -38783,13 +38796,6 @@ }, /turf/simulated/floor/asphalt, /area/point_verdant/interior/parking) -"wzZ" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "wAa" = ( /turf/unsimulated/mineral/konyang, /area/point_verdant/outdoors) @@ -38835,19 +38841,16 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices) +"wBa" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water/deep) "wBI" = ( /turf/simulated/floor/sidewalk/blocks, /area/point_verdant/interior) -"wBL" = ( -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/closet/crate/bin/urban/dumpster, -/turf/simulated/floor/sidewalk/flat, -/area/point_verdant/outdoors) "wBT" = ( /obj/structure/table/stone/marble, /obj/structure/window/reinforced{ @@ -39286,19 +39289,6 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/police) -"wOc" = ( -/obj/effect/decal/fake_object{ - icon = 'icons/obj/smoothtrack.dmi'; - icon_state = "track12"; - name = "tram track" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "wOO" = ( /obj/structure/dock_structure, /obj/structure/utility_pole/street/on{ @@ -39580,12 +39570,6 @@ }, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices) -"wWW" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/shallow/konyang/no_smooth, -/area/point_verdant/interior/tunnels) "wXg" = ( /obj/effect/decal/curb{ dir = 1 @@ -39771,6 +39755,13 @@ /obj/structure/reagent_dispensers/cookingoil, /turf/simulated/floor/lino, /area/point_verdant/interior/decrepit) +"xaV" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/point_verdant/water/deep) "xaX" = ( /obj/effect/floor_decal/corner/dark_green/diagonal, /obj/random/dirt_75, @@ -39956,24 +39947,17 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"xfT" = ( +"xfV" = ( /obj/effect/step_trigger/thrower{ tiles = 1; dir = 4 }, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) +/turf/simulated/floor/exoplanet/water/shallow/konyang, +/area/point_verdant/water) "xfZ" = ( /obj/item/stack/material/wood/branch, /turf/simulated/floor/wood, /area/point_verdant/interior/hotel/basement) -"xgh" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "xgi" = ( /obj/structure/ledge/corner, /obj/structure/ledge/corner{ @@ -40130,6 +40114,14 @@ /obj/structure/bed, /turf/simulated/floor/exoplanet/dirt_konyang, /area/point_verdant/interior) +"xkI" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 8 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "xkL" = ( /obj/structure/table/stone/marble, /obj/item/tray{ @@ -40252,6 +40244,13 @@ }, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/robotics) +"xmO" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "xnn" = ( /obj/structure/closet/crate/bin/urban/dumpster, /obj/effect/decal/cleanable/cobweb, @@ -41012,13 +41011,6 @@ }, /turf/simulated/open, /area/point_verdant/outdoors) -"xLm" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 9 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/point_verdant/water) "xLr" = ( /obj/structure/dam{ opacity = 1 @@ -41216,35 +41208,6 @@ }, /turf/simulated/floor/sidewalk/flat, /area/point_verdant/interior/tunnels) -"xPb" = ( -/obj/effect/decal/fake_object{ - color = "#ff0000"; - dir = 4; - icon = 'icons/atmos/pipes.dmi'; - icon_state = "intact-scrubbers"; - name = "pipe" - }, -/obj/effect/decal/fake_object{ - color = "#0000ff"; - dir = 4; - icon = 'icons/atmos/pipes.dmi'; - icon_state = "intact-supply"; - name = "pipe" - }, -/obj/effect/decal/fake_object{ - color = "#ff0000"; - icon = 'icons/obj/power_cond_white.dmi'; - icon_state = "4-8"; - name = "cable" - }, -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 4 - }, -/obj/random/dirt_75, -/obj/random/dirt_75, -/turf/unsimulated/floor/plating, -/area/point_verdant/interior) "xPd" = ( /obj/effect/decal/curb/corner, /obj/structure/chainlink_fence{ @@ -41406,16 +41369,6 @@ /obj/structure/road_barrier/bot_end, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) -"xVb" = ( -/obj/structure/chainlink_fence{ - dir = 1 - }, -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/obj/structure/flora/bush/konyang_reeds, -/turf/simulated/floor/exoplanet/konyang, -/area/point_verdant/outdoors) "xVg" = ( /obj/effect/decal/exterior_stairs/half, /turf/simulated/floor/tiled/full, @@ -41608,6 +41561,12 @@ }, /turf/simulated/floor/tiled/white, /area/point_verdant/interior/pharmacy) +"ybP" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/wall, +/area/point_verdant/outdoors) "ybT" = ( /obj/item/reagent_containers/food/drinks/bottle, /obj/item/reagent_containers/food/drinks/bottle{ @@ -41634,6 +41593,34 @@ }, /turf/simulated/floor/sidewalk, /area/point_verdant/outdoors) +"ycr" = ( +/obj/effect/decal/fake_object{ + color = "#ff0000"; + dir = 4; + icon = 'icons/atmos/pipes.dmi'; + icon_state = "intact-scrubbers"; + name = "pipe" + }, +/obj/effect/decal/fake_object{ + color = "#0000ff"; + dir = 4; + icon = 'icons/atmos/pipes.dmi'; + icon_state = "intact-supply"; + name = "pipe" + }, +/obj/effect/decal/fake_object{ + color = "#ff0000"; + icon = 'icons/obj/power_cond_white.dmi'; + icon_state = "4-8"; + name = "cable" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) "ycx" = ( /obj/structure/ledge/quarter{ dir = 1 @@ -42121,6 +42108,19 @@ /obj/random/pottedplant, /turf/simulated/floor/tiled, /area/point_verdant/interior/offices/basement) +"ymg" = ( +/obj/effect/decal/fake_object{ + icon = 'icons/obj/smoothtrack.dmi'; + icon_state = "track12"; + name = "tram track" + }, +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/obj/random/dirt_75, +/turf/unsimulated/floor/plating, +/area/point_verdant/interior) (1,1,1) = {" soq @@ -50656,7 +50656,7 @@ soq cEt gSY qQw -dwp +nFa cEt xHh qQw @@ -59899,12 +59899,12 @@ lOJ iaI fyq iaI -wzZ -lbi -ePE -gZz -wOc -xfT +kOH +xmO +fGm +ycr +ymg +bNe fbl fbl fbl @@ -60156,7 +60156,7 @@ lOJ iaI fyq iaI -rRY +ics lOJ iaI spF @@ -60413,7 +60413,7 @@ lOJ iaI fyq iaI -rRY +ics lOJ iaI spF @@ -60670,7 +60670,7 @@ lOJ iaI fyq iaI -rRY +ics xUn xUn xUn @@ -60927,7 +60927,7 @@ lOJ iaI fyq iaI -rRY +ics xUn qpJ nlw @@ -61184,7 +61184,7 @@ lOJ iaI fyq iaI -rRY +ics xUn otj nlw @@ -61441,7 +61441,7 @@ lOJ iaI fyq iaI -rRY +ics xUn gBb nlw @@ -61698,7 +61698,7 @@ lOJ iaI fyq iaI -rRY +ics xUn qpJ ttL @@ -61955,7 +61955,7 @@ lOJ iaI fyq iaI -rRY +ics xUn qpJ ttL @@ -62212,7 +62212,7 @@ lOJ iaI fyq iaI -rRY +ics xUn qpJ ttL @@ -62469,7 +62469,7 @@ lOJ iaI fyq iaI -rRY +ics xUn gBb ttL @@ -62726,7 +62726,7 @@ lOJ iaI fyq iaI -rRY +ics xUn otj ttL @@ -62983,7 +62983,7 @@ lOJ iaI fyq iaI -rRY +ics xUn gKQ nlw @@ -63240,7 +63240,7 @@ lOJ iaI fyq iaI -rRY +ics xUn xUn xUn @@ -63497,7 +63497,7 @@ lOJ iaI fyq iaI -rRY +ics xCA byy spF @@ -63754,7 +63754,7 @@ lOJ iaI fyq iaI -rRY +ics xUn xUn xUn @@ -64011,7 +64011,7 @@ lOJ iaI fyq iaI -rRY +ics xUn qpJ ttL @@ -64268,7 +64268,7 @@ lOJ iaI fyq iaI -rRY +ics xUn otj ttL @@ -64525,7 +64525,7 @@ lOJ iaI fyq iaI -rRY +ics xUn gBb ttL @@ -64782,7 +64782,7 @@ lOJ iaI fyq iaI -rRY +ics xUn rdp jne @@ -65039,7 +65039,7 @@ lOJ iaI fyq iaI -rRY +ics xUn bTl jne @@ -65296,7 +65296,7 @@ lOJ iaI fyq iaI -rRY +ics xUn bTl jne @@ -65553,7 +65553,7 @@ lOJ iaI fyq iaI -rRY +ics xUn aio ttL @@ -65810,7 +65810,7 @@ lOJ iaI fyq iaI -rRY +ics xUn gvk ttL @@ -66067,7 +66067,7 @@ lOJ iaI fyq iaI -rRY +ics xUn gKQ nlw @@ -66324,7 +66324,7 @@ lOJ iaI fyq iaI -rRY +ics xUn xUn xUn @@ -66581,7 +66581,7 @@ lOJ iaI fyq iaI -rRY +ics lOJ iaI spF @@ -66838,12 +66838,12 @@ lOJ iaI fyq iaI -jVB -mGD -sEL -bpn -izT -mRq +bdN +qtK +tYd +ikf +qrT +xkI fbl fbl fbl @@ -67744,12 +67744,12 @@ fbl fbl fbl fbl -fAq -hNA -xPb -wOc -lbi -scm +urh +jQb +kRJ +ymg +xmO +pgC iaI fyq iaI @@ -68006,7 +68006,7 @@ byy spF iaI lOJ -iKJ +eNn iaI fyq iaI @@ -68263,7 +68263,7 @@ xUn xUn xUn xUn -iKJ +eNn iaI fyq iaI @@ -68520,7 +68520,7 @@ gKQ ttL ucx xUn -iKJ +eNn iaI fyq iaI @@ -68777,7 +68777,7 @@ aio ttL rcg xUn -iKJ +eNn iaI fyq iaI @@ -68944,7 +68944,7 @@ qWF duW vWM cUW -mpm +mBn lqn wUq cqj @@ -69034,7 +69034,7 @@ aio ttL gBb xUn -iKJ +eNn iaI fyq iaI @@ -69291,7 +69291,7 @@ gKQ ttL pSm xUn -iKJ +eNn iaI fyq iaI @@ -69548,7 +69548,7 @@ gKQ ttL pSm xUn -iKJ +eNn iaI fyq iaI @@ -69805,7 +69805,7 @@ gKQ nlw ucx xUn -iKJ +eNn iaI fyq iaI @@ -70062,7 +70062,7 @@ aio nlw gBb xUn -iKJ +eNn iaI fyq iaI @@ -70319,7 +70319,7 @@ aio nlw rcg xUn -iKJ +eNn iaI fyq iaI @@ -70576,7 +70576,7 @@ gKQ nlw wJw xUn -iKJ +eNn iaI fyq iaI @@ -70833,7 +70833,7 @@ xUn xUn xUn xUn -iKJ +eNn iaI fyq iaI @@ -71090,7 +71090,7 @@ byy spF byy xCA -iKJ +eNn iaI fyq iaI @@ -71347,7 +71347,7 @@ xUn xUn xUn xUn -iKJ +eNn iaI fyq iaI @@ -71604,7 +71604,7 @@ gKQ nlw wJw xUn -iKJ +eNn iaI fyq iaI @@ -71861,7 +71861,7 @@ aio nlw wRx xUn -iKJ +eNn iaI fyq iaI @@ -72118,7 +72118,7 @@ aio nlw gBb xUn -iKJ +eNn iaI fyq iaI @@ -72375,7 +72375,7 @@ bTl wIX gBb xUn -iKJ +eNn iaI fyq iaI @@ -72632,7 +72632,7 @@ rdp wIX gBb xUn -iKJ +eNn iaI fyq iaI @@ -72889,7 +72889,7 @@ rdp wIX gBb xUn -iKJ +eNn iaI fyq iaI @@ -73146,7 +73146,7 @@ gBb ttL ckx xUn -iKJ +eNn iaI fyq iaI @@ -73403,7 +73403,7 @@ gBb ttL rcg xUn -iKJ +eNn iaI fyq iaI @@ -73660,7 +73660,7 @@ gKQ ttL ucx xUn -iKJ +eNn iaI fyq iaI @@ -73917,7 +73917,7 @@ xUn xUn xUn xUn -iKJ +eNn iaI fyq iaI @@ -74174,7 +74174,7 @@ byy spF iaI lOJ -iKJ +eNn iaI fyq iaI @@ -74320,8 +74320,8 @@ rMj rMj rMj wUm -voh -jPG +cyX +unU tch bBY oqN @@ -74426,12 +74426,12 @@ oGP fbl fbl fbl -oEg -izT -bpn -sEL -mGD -dgZ +kuO +qrT +ikf +tYd +qtK +kKt iaI fyq iaI @@ -74577,7 +74577,7 @@ kXO kXO kXO kXO -iaS +hyk kXO sXh jxt @@ -74834,7 +74834,7 @@ dbk dbk dbk dbk -pWe +obO dbk onv oEM @@ -75091,7 +75091,7 @@ dbk dbk dbk dbk -pWe +obO dbk onv oEM @@ -75348,7 +75348,7 @@ dbk dbk dbk dbk -pWe +obO dbk onv oEM @@ -75605,7 +75605,7 @@ kXO kXO kXO kXO -iaS +hyk kXO sXh jxt @@ -75862,8 +75862,8 @@ apC apC apC apC -cei -srs +eLz +bKi tch apC ced @@ -76702,11 +76702,11 @@ dgM glm afo klo -hTc +jPv xDH cWj gJs -aMA +oeQ cWj aRI vpa @@ -76957,13 +76957,13 @@ dbk glm oJb oJb -bUu -bUu -hTc +qxO +qxO +jPv cWj uOk btd -dgo +cQO cWj rQI vpa @@ -77215,12 +77215,12 @@ dbk glm oJb oJb -bUu -hTc +qxO +jPv cWj bWX sMe -wWW +drr cWj kUp nek @@ -77472,12 +77472,12 @@ glm glm glm oJb -bUu -hTc +qxO +jPv cWj eAt lKP -dgo +cQO cWj rQI vpa @@ -77730,11 +77730,11 @@ glm glm dFW pgU -hTc +jPv cWj cWj kyf -aMA +oeQ xDH rQI vpa @@ -79953,12 +79953,12 @@ azf gZO gZO gZO -oXl +aUB gZO -oXl -oXl -oXl -oXl +aUB +aUB +aUB +aUB gZO gZO gZO @@ -80195,7 +80195,7 @@ vEA vEA vEA roL -jhE +kwr waf pCy pCy @@ -80206,22 +80206,22 @@ pHN iiU gBU ebO -xLm -iPa -oXl -oXl -oXl -oXl -oXl +tkq +vTO +aUB +aUB +aUB +aUB +aUB vEA vEA -oXl -oXl -oXl -oXl -oXl -oXl -fNv +aUB +aUB +aUB +aUB +aUB +aUB +xaV gZO gZO azf @@ -80243,30 +80243,30 @@ azf azf azf azf -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO azf azf azf azf azf -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO azf azf azf -nXd -nXd +qqO +qqO azf -nXd -hom -hom +qqO +veX +veX azf azf jXy @@ -80453,7 +80453,7 @@ vEA vEA vEA vEA -fNv +xaV bKx bKx bKx @@ -80463,7 +80463,7 @@ sho iiU uZa ebO -nEP +fko vEA vEA vEA @@ -80478,7 +80478,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -80497,34 +80497,34 @@ azf azf azf azf -nXd -nXd -nXd -xLm +qqO +qqO +qqO +tkq aoj aoj -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO aoj aoj aoj aoj -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO aoj -xgh -xgh +jXa +jXa azf jXy uqn @@ -80710,9 +80710,9 @@ vEA vEA vEA vEA -fNv -fNv -fcV +xaV +xaV +dso bKx sho sho @@ -80720,7 +80720,7 @@ sho iiU iiU ebO -knT +nFN vEA vEA vEA @@ -80735,7 +80735,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -80748,13 +80748,13 @@ azf azf gZO gZO -oXl -oXl -oXl -oXl -oXl -oXl -iPa +aUB +aUB +aUB +aUB +aUB +aUB +vTO vEA vEA vEA @@ -80781,7 +80781,7 @@ aoj aoj aoj aoj -xgh +jXa azf jXy uqn @@ -80969,15 +80969,15 @@ vEA vEA vEA vEA -fNv -fcV +xaV +dso sho sho azf wMS gBU ebO -knT +nFN vEA vEA vEA @@ -80992,7 +80992,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -81002,10 +81002,10 @@ iiU ebO azf azf -xLm -oXl -oXl -iPa +tkq +aUB +aUB +vTO vEA vEA vEA @@ -81038,7 +81038,7 @@ aoj aoj aoj aoj -xgh +jXa azf jXy uqn @@ -81227,7 +81227,7 @@ vEA vEA vEA vEA -fcV +dso sho azf azf @@ -81249,7 +81249,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -81259,7 +81259,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -81294,8 +81294,8 @@ aoj aoj aoj aoj -xgh -xgh +jXa +jXa azf jXy uqn @@ -81484,7 +81484,7 @@ vEA vEA vEA vEA -fcV +dso azf azf azf @@ -81506,7 +81506,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -81516,7 +81516,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -81551,7 +81551,7 @@ aoj aoj aoj aoj -xgh +jXa azf azf jXy @@ -81741,14 +81741,14 @@ vEA vEA vEA vEA -fNv -dld +xaV +iuG azf azf wMS gBU ebO -hBR +wBa vEA vEA vEA @@ -81763,7 +81763,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -81773,7 +81773,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -81807,8 +81807,8 @@ aoj aoj aoj aoj -xgh -xgh +jXa +jXa azf azf jXy @@ -81999,13 +81999,13 @@ vEA vEA vEA vEA -hom +veX azf azf iiU iiU ebO -hBR +wBa vEA vEA vEA @@ -82020,8 +82020,8 @@ vEA vEA vEA vEA -kvH -kvH +vZy +vZy gZO azf wMS @@ -82029,8 +82029,8 @@ iiU gBU ebO azf -knT -knT +nFN +nFN vEA vEA vEA @@ -82064,7 +82064,7 @@ aoj aoj aoj aoj -xgh +jXa azf azf azf @@ -82256,13 +82256,13 @@ vEA vEA vEA vEA -hom +veX azf azf iiU iiU ebO -hBR +wBa vEA vEA vEA @@ -82277,8 +82277,8 @@ vEA vEA vEA vEA -kvH -kvH +vZy +vZy gZO azf iiU @@ -82286,7 +82286,7 @@ iiU iiU ebO azf -knT +nFN aoj vEA vEA @@ -82321,7 +82321,7 @@ aoj aoj aoj aoj -cBJ +kcH azf azf azf @@ -82513,13 +82513,13 @@ vEA vEA vEA vEA -hom +veX azf azf wMS gBU ebO -hBR +wBa vEA vEA vEA @@ -82534,7 +82534,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -82543,8 +82543,8 @@ iiU iiU ebO azf -knT -knT +nFN +nFN vEA vEA vEA @@ -82578,8 +82578,8 @@ aoj aoj aoj aoj -cBJ -cBJ +kcH +kcH azf azf jXy @@ -82770,13 +82770,13 @@ vEA vEA vEA vEA -hom +veX azf azf iiU iiU ebO -hBR +wBa vEA vEA vEA @@ -82791,7 +82791,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -82801,7 +82801,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -82836,7 +82836,7 @@ aoj aoj aoj azf -cBJ +kcH azf azf jXy @@ -83027,13 +83027,13 @@ vEA vEA vEA vEA -hom +veX azf azf iiU iiU ebO -hBR +wBa vEA vEA vEA @@ -83048,7 +83048,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -83058,7 +83058,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -83093,7 +83093,7 @@ aoj azf rJf rJf -kzW +uWX azf azf jXy @@ -83284,13 +83284,13 @@ aoj aoj aoj aoj -hom +veX azf azf wMS gBU ebO -hBR +wBa vEA vEA vEA @@ -83305,7 +83305,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -83315,7 +83315,7 @@ gBU ebO azf azf -knT +nFN vEA vEA vEA @@ -83350,7 +83350,7 @@ aoj azf rJf rJf -gts +oWr azf azf jXy @@ -83547,7 +83547,7 @@ cIo iiU iiU ebO -gHH +fzw vEA vEA vEA @@ -83562,7 +83562,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -83607,7 +83607,7 @@ aoj azf rJf rJf -gts +oWr azf azf jXy @@ -83804,7 +83804,7 @@ cIo iiU iiU ebO -gHH +fzw vEA vEA vEA @@ -83819,7 +83819,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -83864,7 +83864,7 @@ aoj azf rJf rJf -gts +oWr azf azf jXy @@ -84055,13 +84055,13 @@ aoj aoj aoj aoj -hom -hom -dld +veX +veX +iuG wMS mGZ -iSk -iPa +uLz +vTO vEA vEA vEA @@ -84076,7 +84076,7 @@ vEA vEA vEA vEA -kvH +vZy gZO gZO azf @@ -84086,7 +84086,7 @@ gBU ebO azf azf -knT +nFN vEA vEA vEA @@ -84121,7 +84121,7 @@ aoj azf rJf rJf -gts +oWr azf azf jXy @@ -84343,7 +84343,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -84378,7 +84378,7 @@ aoj azf rJf rJf -gts +oWr azf azf jXy @@ -84599,8 +84599,8 @@ iiU iiU ebO azf -knT -knT +nFN +nFN vEA vEA vEA @@ -84635,7 +84635,7 @@ aoj azf rJf rJf -gts +oWr azf azf jXy @@ -84847,7 +84847,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -84856,7 +84856,7 @@ iiU gBU ebO azf -knT +nFN aoj vEA vEA @@ -84892,7 +84892,7 @@ aoj azf rJf rJf -gts +oWr azf azf sho @@ -85104,7 +85104,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -85113,7 +85113,7 @@ iiU iiU ebO azf -knT +nFN aoj vEA vEA @@ -85149,7 +85149,7 @@ aoj azf rJf rJf -gts +oWr azf azf sho @@ -85361,7 +85361,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -85370,8 +85370,8 @@ iiU iiU ebO azf -knT -knT +nFN +nFN vEA vEA vEA @@ -85406,7 +85406,7 @@ aoj azf rJf rJf -gts +oWr azf azf sho @@ -85618,8 +85618,8 @@ vEA vEA vEA vEA -xgh -xgh +jXa +jXa azf azf iiU @@ -85628,7 +85628,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -85663,7 +85663,7 @@ aoj azf rJf rJf -gts +oWr azf azf sho @@ -85876,7 +85876,7 @@ vEA vEA vEA aoj -xgh +jXa azf azf iiU @@ -85885,7 +85885,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -85920,7 +85920,7 @@ aoj azf rJf rJf -gts +oWr azf azf sho @@ -86133,7 +86133,7 @@ vEA vEA vEA aoj -xgh +jXa azf azf wMS @@ -86142,7 +86142,7 @@ gBU ebO azf azf -knT +nFN vEA vEA vEA @@ -86177,7 +86177,7 @@ aoj azf rJf rJf -gts +oWr azf azf sho @@ -86390,7 +86390,7 @@ vEA vEA vEA aoj -xgh +jXa azf azf iiU @@ -86399,7 +86399,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -86428,13 +86428,13 @@ vEA vEA vEA vEA -kIA -kIA -kIA -awl -awl -awl -awl +qCr +qCr +qCr +fIi +fIi +fIi +fIi azf azf sho @@ -86646,8 +86646,8 @@ vEA vEA vEA vEA -xgh -xgh +jXa +jXa azf azf iiU @@ -86656,7 +86656,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -86685,7 +86685,7 @@ vEA vEA vEA vEA -xgh +jXa aoj azf azf @@ -86903,7 +86903,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -86913,7 +86913,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -86942,7 +86942,7 @@ vEA vEA vEA vEA -xgh +jXa aoj azf azf @@ -87160,7 +87160,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -87170,7 +87170,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -87199,7 +87199,7 @@ vEA vEA vEA vEA -xgh +jXa aoj aoj azf @@ -87334,7 +87334,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -87417,7 +87417,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -87427,7 +87427,7 @@ gBU ebO azf azf -knT +nFN vEA vEA vEA @@ -87591,7 +87591,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -87684,7 +87684,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -87848,7 +87848,7 @@ rGT azf azf azf -knT +nFN aoj aoj aoj @@ -87941,7 +87941,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -87970,7 +87970,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho wMS @@ -88105,7 +88105,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -88188,7 +88188,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -88198,7 +88198,7 @@ gBU ebO azf azf -knT +nFN vEA vEA vEA @@ -88227,7 +88227,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho uZa @@ -88362,7 +88362,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -88445,7 +88445,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -88484,7 +88484,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -88619,7 +88619,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -88702,7 +88702,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -88741,7 +88741,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -88876,7 +88876,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -88959,7 +88959,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -88969,7 +88969,7 @@ gBU ebO azf azf -knT +nFN vEA vEA vEA @@ -88998,7 +88998,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -89133,7 +89133,7 @@ azf jBd jBd azf -knT +nFN aoj aoj aoj @@ -89216,7 +89216,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -89226,7 +89226,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -89255,7 +89255,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -89390,7 +89390,7 @@ azf jBd jBd azf -knT +nFN aoj aoj aoj @@ -89473,7 +89473,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -89483,7 +89483,7 @@ iiU ebO azf azf -knT +nFN vEA vEA vEA @@ -89512,7 +89512,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -89647,7 +89647,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -89730,8 +89730,8 @@ vEA vEA vEA vEA -hom -hom +veX +veX azf azf azf @@ -89739,8 +89739,8 @@ wMS gBU ebO azf -xLm -xLm +tkq +tkq vEA vEA vEA @@ -89769,8 +89769,8 @@ vEA vEA vEA vEA -xgh -xgh +jXa +jXa sho iiU glp @@ -89904,7 +89904,7 @@ rGT azf azf azf -knT +nFN aoj aoj aoj @@ -89988,7 +89988,7 @@ vEA vEA vEA aoj -hom +veX azf azf azf @@ -89996,7 +89996,7 @@ scv scv azf azf -xLm +tkq aoj vEA vEA @@ -90027,7 +90027,7 @@ vEA vEA vEA aoj -xgh +jXa sho iiU nGN @@ -90161,7 +90161,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -90245,15 +90245,15 @@ vEA vEA vEA aoj -hom -hom +veX +veX azf azf scv scv azf azf -xLm +tkq aoj vEA vEA @@ -90284,7 +90284,7 @@ vEA vEA vEA aoj -xgh +jXa sho iiU nGN @@ -90418,8 +90418,8 @@ azf azf azf azf -knT -knT +nFN +nFN aoj aoj aoj @@ -90503,14 +90503,14 @@ vEA vEA aoj aoj -hom -hom +veX +veX azf scv scv azf -xLm -xLm +tkq +tkq aoj vEA vEA @@ -90541,7 +90541,7 @@ vEA vEA vEA aoj -xgh +jXa sho iiU nGN @@ -90676,7 +90676,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -90761,12 +90761,12 @@ vEA aoj aoj aoj -hom +veX azf scv scv azf -xLm +tkq aoj aoj vEA @@ -90797,8 +90797,8 @@ vEA vEA vEA vEA -xgh -xgh +jXa +jXa sho iiU glp @@ -90933,7 +90933,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -91018,12 +91018,12 @@ vEA aoj aoj aoj -hom +veX azf scv scv azf -xLm +tkq aoj aoj vEA @@ -91054,7 +91054,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -91190,7 +91190,7 @@ jBd azf azf azf -knT +nFN aoj aoj aoj @@ -91275,12 +91275,12 @@ vEA aoj aoj aoj -hom -hom +veX +veX scv scv azf -xLm +tkq aoj aoj vEA @@ -91311,7 +91311,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho iiU @@ -91447,7 +91447,7 @@ jBd azf azf azf -knT +nFN aoj aoj aoj @@ -91533,11 +91533,11 @@ aoj aoj aoj aoj -hom +veX scv scv -xLm -xLm +tkq +tkq aoj aoj vEA @@ -91568,7 +91568,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho gVk @@ -91704,7 +91704,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -91790,10 +91790,10 @@ aoj aoj aoj aoj -hom +veX fKN scv -xLm +tkq aoj aoj aoj @@ -91825,7 +91825,7 @@ vEA vEA vEA vEA -xgh +jXa azf sho wMS @@ -91960,8 +91960,8 @@ azf azf azf azf -knT -knT +nFN +nFN aoj aoj aoj @@ -92082,7 +92082,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -92217,7 +92217,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -92339,7 +92339,7 @@ vEA vEA vEA vEA -xgh +jXa azf azf azf @@ -92474,7 +92474,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -92596,9 +92596,9 @@ vEA vEA vEA vEA -hom -hom -hom +veX +veX +veX azf azf azf @@ -92731,7 +92731,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -92855,10 +92855,10 @@ vEA vEA aoj aoj -hom -hom -hom -hom +veX +veX +veX +veX azf azf azf @@ -92988,7 +92988,7 @@ azf azf azf azf -knT +nFN aoj aoj aoj @@ -93115,7 +93115,7 @@ aoj aoj aoj aoj -hom +veX azf azf azf @@ -93245,7 +93245,7 @@ azf azf azf azf -xLm +tkq aoj aoj aoj @@ -93372,8 +93372,8 @@ aoj aoj aoj aoj -hom -hom +veX +veX azf azf rDD @@ -93501,8 +93501,8 @@ azf azf azf azf -xLm -xLm +tkq +tkq aoj aoj aoj @@ -93630,8 +93630,8 @@ aoj aoj aoj aoj -hom -hom +veX +veX azf ght cwS @@ -93758,7 +93758,7 @@ azf azf azf azf -xLm +tkq aoj aoj aoj @@ -93888,7 +93888,7 @@ aoj aoj aoj aoj -hom +veX azf azf scv @@ -94015,7 +94015,7 @@ azf azf azf azf -xLm +tkq aoj aoj aoj @@ -94145,8 +94145,8 @@ aoj aoj aoj aoj -hom -hom +veX +veX azf scv scv @@ -94271,8 +94271,8 @@ azf azf azf azf -xLm -xLm +tkq +tkq aoj aoj aoj @@ -94403,45 +94403,45 @@ aoj aoj aoj aoj -hom -nXd +veX +qqO jpA scv -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO xMC scv -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO azf azf azf @@ -94525,10 +94525,10 @@ azf azf azf azf -xLm -xLm -xLm -xLm +tkq +tkq +tkq +tkq aoj aoj aoj @@ -94685,7 +94685,7 @@ vEA vEA vEA vEA -fNv +xaV vEA vEA vEA @@ -94698,9 +94698,9 @@ vEA vEA vEA vEA -oXl -oXl -oXl +aUB +aUB +aUB azf azf azf @@ -94712,14 +94712,14 @@ azf azf azf azf -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO azf azf azf @@ -94729,14 +94729,14 @@ azf azf azf azf -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO azf azf azf @@ -94746,15 +94746,15 @@ azf azf azf azf -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO +qqO azf azf azf @@ -94764,12 +94764,12 @@ azf azf azf azf -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO azf azf azf @@ -94777,12 +94777,12 @@ azf azf azf azf -nXd -nXd -nXd -nXd -nXd -xLm +qqO +qqO +qqO +qqO +qqO +tkq aoj aoj aoj @@ -94957,53 +94957,53 @@ vEA vEA vEA vEA -oXl -oXl -oXl -oXl +aUB +aUB +aUB +aUB azf azf azf azf azf -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO aoj aoj aoj aoj aoj aoj -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO azf azf azf azf -nXd -nXd -nXd +qqO +qqO +qqO aoj aoj aoj aoj aoj aoj -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO azf azf -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO aoj aoj aoj @@ -95011,30 +95011,30 @@ aoj aoj aoj aoj -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO azf azf azf -nXd -nXd -nXd +qqO +qqO +qqO aoj aoj aoj aoj -nXd -nXd -nXd +qqO +qqO +qqO azf azf -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO aoj aoj aoj @@ -95217,13 +95217,13 @@ vEA vEA vEA vEA -oXl -oXl -oXl -oXl -oXl -oXl -nXd +aUB +aUB +aUB +aUB +aUB +aUB +qqO aoj aoj aoj @@ -95236,12 +95236,12 @@ aoj aoj aoj aoj -nXd -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO +qqO aoj aoj aoj @@ -95253,10 +95253,10 @@ aoj aoj aoj aoj -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO aoj aoj aoj @@ -95272,11 +95272,11 @@ aoj aoj aoj aoj -nXd -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO +qqO aoj aoj aoj @@ -95285,10 +95285,10 @@ aoj aoj aoj aoj -nXd -nXd -nXd -nXd +qqO +qqO +qqO +qqO aoj aoj aoj @@ -113651,24 +113651,24 @@ aoj aoj aoj aoj -kIA -vXd -phF -arY -fPk -fPk -fYo -fPk -esc -eHH -qXK -vXd -vXd -vXd -vXd -phF -phF -pgo +qCr +teY +xfV +iVf +uLp +uLp +eyA +uLp +aFN +kyr +pDg +teY +teY +teY +teY +xfV +xfV +qto aoj sOE azf @@ -113904,11 +113904,11 @@ azf azf aoj aoj -kIA -vXd -vXd -vXd -kIA +qCr +teY +teY +teY +qCr azf azf clM @@ -113925,8 +113925,8 @@ azf azf azf azf -pgo -pgo +qto +qto aoj aoj azf @@ -114148,9 +114148,9 @@ aoj aoj aoj aoj -vXd -vXd -vXd +teY +teY +teY aoj aoj aoj @@ -114160,8 +114160,8 @@ azf azf azf azf -awl -awl +fIi +fIi azf azf azf @@ -114183,7 +114183,7 @@ azf azf azf azf -pgo +qto aoj aoj aoj @@ -114398,26 +114398,26 @@ aoj aoj aoj aoj -kIA -vXd -vXd -vXd -vXd -vXd -vXd -vXd +qCr +teY +teY +teY +teY +teY +teY +teY azf -vXd -vXd -vXd -vXd -vXd -phF -phF -phF -phF -phF -awl +teY +teY +teY +teY +teY +xfV +xfV +xfV +xfV +xfV +fIi azf azf azf @@ -114440,8 +114440,8 @@ azf azf azf azf -pgo -pgo +qto +qto aoj aoj azf @@ -114654,8 +114654,8 @@ aoj aoj aoj aoj -kIA -kIA +qCr +qCr azf azf azf @@ -114698,7 +114698,7 @@ qfj hag azf rGT -pgo +qto aoj aoj azf @@ -114911,7 +114911,7 @@ aoj aoj aoj aoj -xgh +jXa azf azf azf @@ -114955,7 +114955,7 @@ jvR nEQ azf azf -ixt +viA azf azf azf @@ -115168,7 +115168,7 @@ aoj aoj aoj aoj -xgh +jXa azf azf azf @@ -115212,7 +115212,7 @@ jvR nEQ azf azf -ixt +viA azf azf azf @@ -115425,7 +115425,7 @@ aoj aoj aoj aoj -xgh +jXa azf azf oZY @@ -115469,7 +115469,7 @@ jvR nEQ azf azf -ixt +viA azf azf azf @@ -115680,9 +115680,9 @@ aoj aoj aoj aoj -kIA -kIA -kIA +qCr +qCr +qCr azf azf lUm @@ -115726,7 +115726,7 @@ jvR nEQ azf azf -ixt +viA azf azf azf @@ -115932,12 +115932,12 @@ azf aoj aoj aoj -vXd -vXd -vXd -vXd -vXd -kIA +teY +teY +teY +teY +teY +qCr azf azf azf @@ -115983,7 +115983,7 @@ jvR nEQ azf azf -ixt +viA jBd rGT azf @@ -116182,18 +116182,18 @@ ryP qIo ewI keU -dMx -phF -phF -awl -vXd -kIA -vXd -vXd +oVD +xfV +xfV +fIi +teY +qCr +teY +teY azf azf -vXd -vXd +teY +teY azf azf azf @@ -116240,7 +116240,7 @@ jvR nEQ azf azf -ixt +viA jBd jBd azf @@ -116439,12 +116439,12 @@ ryP qIo dmy vYl -sxS +qyF azf azf azf aoj -xgh +jXa azf azf azf @@ -116497,7 +116497,7 @@ sZv kTb azf azf -ixt +viA aoj wLy azf @@ -116696,12 +116696,12 @@ ryP qIo srP vYl -sxS +qyF azf azf azf aoj -xgh +jXa azf azf oZY @@ -116754,7 +116754,7 @@ sZv kTb azf azf -knT +nFN aoj wLy jBd @@ -116953,12 +116953,12 @@ ryP qIo srP vYl -sxS +qyF azf azf azf azf -xgh +jXa azf azf lUm @@ -117011,7 +117011,7 @@ cYu qot azf azf -knT +nFN aoj aoj wLy @@ -117210,12 +117210,12 @@ ryP qIo eRZ vYl -sxS +qyF azf azf azf azf -xgh +jXa azf azf lUm @@ -117268,7 +117268,7 @@ azf azf azf rGT -knT +nFN aoj aoj wLy @@ -117467,12 +117467,12 @@ ryP qIo srP vYl -sxS +qyF azf azf azf azf -xgh +jXa azf azf lUm @@ -117525,7 +117525,7 @@ azf azf azf azf -knT +nFN aoj aoj wLy @@ -117579,7 +117579,7 @@ aoj aoj aoj aoj -kIA +qCr aoj aoj aoj @@ -117724,13 +117724,13 @@ ryP qIo srP vYl -sxS +qyF azf azf azf aoj -hom -xgh +veX +jXa azf lUm igI @@ -117781,8 +117781,8 @@ jBd aoj aoj azf -knT -knT +nFN +nFN aoj sOE aoj @@ -117835,8 +117835,8 @@ aoj aoj aoj aoj -vXd -vXd +teY +teY sho sho aoj @@ -117981,13 +117981,13 @@ ryP qIo ewI keU -ivj +vwJ azf azf azf aoj aoj -xgh +jXa azf lUm igI @@ -118038,8 +118038,8 @@ wLy aoj aoj azf -knT -knT +nFN +nFN aoj wLy aoj @@ -118090,9 +118090,9 @@ aoj aoj aoj aoj -vXd -vXd -oyH +teY +teY +tVw jBd sho sho @@ -118238,13 +118238,13 @@ kvs qIo srP vYl -sxS +qyF azf azf azf aoj -kIA -xgh +qCr +jXa azf lUm xsB @@ -118295,8 +118295,8 @@ aoj aoj aoj azf -knT -knT +nFN +nFN wLy wLy aoj @@ -118345,9 +118345,9 @@ wLy aoj aoj aoj -vXd -vXd -vXd +teY +teY +teY azf jBd jBd @@ -118495,12 +118495,12 @@ gRK qIo srP vYl -sxS +qyF azf azf azf -kIA -kIA +qCr +qCr azf azf lUm @@ -118553,7 +118553,7 @@ wLy wLy azf azf -knT +nFN wLy wLy wLy @@ -118598,11 +118598,11 @@ vEA vEA vEA aoj -kIA -oyH -rib -vXd -vXd +qCr +tVw +fsA +teY +teY jBd vJv azf @@ -118752,11 +118752,11 @@ dmm qIo srP vYl -sxS +qyF azf azf aoj -xgh +jXa azf azf azf @@ -118810,7 +118810,7 @@ wLy wLy aoj azf -knT +nFN wLy gAZ aoj @@ -118854,8 +118854,8 @@ vEA vEA oEi jHl -kSZ -awl +lBj +fIi jBd jBd azf @@ -119009,11 +119009,11 @@ kEJ qIo srP vYl -sxS +qyF azf azf aoj -xgh +jXa azf azf azf @@ -119067,7 +119067,7 @@ gAZ wLy aoj azf -pgo +qto aoj wLy wLy @@ -119108,10 +119108,10 @@ oEi oEi vEA vEA -kIA -awl -awl -kSZ +qCr +fIi +fIi +lBj azf azf azf @@ -119266,11 +119266,11 @@ qIo qIo srP vYl -sxS +qyF azf azf aoj -xgh +jXa azf azf azf @@ -119324,21 +119324,21 @@ aoj aoj aoj azf -pgo -pgo +qto +qto aoj aoj wLy aoj -vXd -vXd -vXd -vXd -rib -vXd -vXd -vXd -vXd +teY +teY +teY +teY +fsA +teY +teY +teY +teY frp sil frp @@ -119357,15 +119357,15 @@ ogx ogx ogx vHE -pgo -rib -rib -vXd -rib -rib -tTA -lRx -lEi +qto +fsA +fsA +teY +fsA +fsA +wdJ +pwf +iZA uuZ uuZ uuZ @@ -119523,11 +119523,11 @@ erP njU kqr keU -ivj +vwJ azf aoj -kIA -kIA +qCr +qCr azf azf azf @@ -119582,12 +119582,12 @@ aoj aoj azf azf -pgo -pgo -vXd -vXd -vXd -vXd +qto +qto +teY +teY +teY +teY azf jBd kEz @@ -119780,10 +119780,10 @@ gJa gJa kSU xDs -vXa +gvB azf aoj -xgh +jXa azf azf azf @@ -119842,8 +119842,8 @@ azf azf azf azf -vXd -vXd +teY +teY azf azf azf @@ -120037,10 +120037,10 @@ azf azf azf azf -cBJ +kcH azf aoj -xgh +jXa azf azf azf @@ -120294,10 +120294,10 @@ azf azf aoj aoj -xgh +jXa aoj -xgh -xgh +jXa +jXa azf azf azf @@ -120551,9 +120551,9 @@ aoj aoj aoj aoj -xgh +jXa aoj -xgh +jXa azf azf azf @@ -120808,9 +120808,9 @@ aoj aoj aoj aoj -xgh +jXa aoj -xgh +jXa azf oZY bbP @@ -121065,9 +121065,9 @@ aoj aoj aoj aoj -xgh +jXa aoj -xgh +jXa azf lUm igI @@ -121322,9 +121322,9 @@ aoj aoj aoj aoj -xgh +jXa aoj -xgh +jXa azf lUm xsB @@ -121579,9 +121579,9 @@ aoj aoj aoj aoj -xgh +jXa aoj -xgh +jXa azf lUm xsB @@ -121836,10 +121836,10 @@ aoj aoj aoj aoj -xgh +jXa aoj -xgh -xgh +jXa +jXa lUm igI wiW @@ -122093,10 +122093,10 @@ aoj aoj aoj aoj -xgh +jXa azf aoj -xgh +jXa lUm igI wiW @@ -122350,10 +122350,10 @@ aoj aoj azf azf -cBJ +kcH azf aoj -xgh +jXa lUm igI wiW @@ -122607,10 +122607,10 @@ azf azf azf azf -cBJ +kcH azf azf -xgh +jXa lUm igI wiW @@ -122864,10 +122864,10 @@ azf azf azf azf -cBJ +kcH azf aoj -xgh +jXa lUm igI wiW @@ -123121,10 +123121,10 @@ azf azf azf azf -cBJ +kcH aoj -kIA -kIA +qCr +qCr lUm igI bKY @@ -123378,9 +123378,9 @@ azf azf azf azf -xgh -kIA -kIA +jXa +qCr +qCr azf wFT kRf @@ -123635,8 +123635,8 @@ azf azf azf aoj -gaa -gaa +mji +mji jBd jBd azf @@ -123892,7 +123892,7 @@ azf azf azf aoj -gaa +mji jBd jBd rGT @@ -124149,7 +124149,7 @@ azf azf azf aoj -rvH +sng jBd vJv azf @@ -124406,7 +124406,7 @@ azf azf azf azf -rvH +sng jBd jBd azf @@ -124663,7 +124663,7 @@ bbP bbP bbP bbP -rQX +mpk bbP bbP bbP @@ -124920,7 +124920,7 @@ szY szY szY tmd -roC +sNV xsB xsB xsB @@ -125177,7 +125177,7 @@ lxf ofv tEF uqn -hWO +pZq xsB igI igI @@ -125434,10 +125434,10 @@ lxf nZy cJz uqn -qMe -cKO -cKO -wsA +skQ +ixv +ixv +ojt igI igI wiW @@ -125694,7 +125694,7 @@ uqn tmd tmd tmd -hWO +pZq igI igI wiW @@ -125951,7 +125951,7 @@ wEt iiU iiU uqn -hWO +pZq xsB xsB xsB @@ -126208,7 +126208,7 @@ wEt iiU iiU uqn -hWO +pZq xsB xsB rUN @@ -126465,7 +126465,7 @@ wEt iiU iiU uqn -hWO +pZq xsB xsB xsB @@ -126722,7 +126722,7 @@ wEt iiU iiU uqn -xVb +bzp igI xsB xsB @@ -126979,7 +126979,7 @@ wEt wEt wEt uqn -xVb +bzp igI xsB xsB @@ -127236,7 +127236,7 @@ iiU iiU iiU uqn -hWO +pZq xsB xsB xsB @@ -127493,7 +127493,7 @@ iiU wEt iiU uqn -hWO +pZq xsB ggG xsB @@ -127750,7 +127750,7 @@ wEt iiU iiU uqn -hWO +pZq xsB igI xsB @@ -128007,7 +128007,7 @@ wEt wEt iiU uqn -hWO +pZq lhR igI xsB @@ -128264,7 +128264,7 @@ uqn uqn wsx uqn -hWO +pZq siH igI igI @@ -128520,8 +128520,8 @@ dTY dTY dTY dTY -cMP -cMP +rmv +rmv siH lhR igI @@ -128777,7 +128777,7 @@ dTY hkY dTw xfA -emr +lWP dTY dgv dgv @@ -129034,7 +129034,7 @@ dTY hkY dTw dTw -dfj +hPU dTY dgv siH @@ -129291,7 +129291,7 @@ dTY dTw dTw dTw -dfj +hPU dTY siH lhR @@ -129548,7 +129548,7 @@ dTY pEu mUB kEG -ane +vci dTY siH lhR @@ -129805,7 +129805,7 @@ gBz tIw tIw tIw -ane +vci dTY tli pAO @@ -130058,11 +130058,11 @@ cHT cHT dTY nif -cMP -sWJ -sWJ -sWJ -oyM +rmv +aCq +aCq +aCq +mse dTY xbP xsB @@ -130315,7 +130315,7 @@ wfE wfE dTY ipp -bdx +ybP wfE wfE wfE @@ -130572,7 +130572,7 @@ rNy rNy rNy rNy -bNl +dSS rNy rNy rNy @@ -130829,7 +130829,7 @@ wFU wFU wFU wFU -hoV +ebG kCs sIV iYu @@ -131086,7 +131086,7 @@ lxf lxf lxf lxf -uoW +azQ nwA aeb lxf @@ -131343,7 +131343,7 @@ noL noL noL noL -tHf +sey xuv noL lxf @@ -131600,7 +131600,7 @@ lxf lxf lxf lxf -uoW +azQ nwA lxf lxf @@ -131857,7 +131857,7 @@ ctQ ctQ ctQ ctQ -dix +sbd nko iSg czD @@ -132114,7 +132114,7 @@ rNy rNy rNy rNy -bNl +dSS rNy mwh unM @@ -132371,7 +132371,7 @@ dTY dTY dTY dTY -bdx +ybP dTY keQ bDn @@ -132628,7 +132628,7 @@ dTY eXG eXG eXG -cSw +rum dTY uqn quY @@ -132885,7 +132885,7 @@ dTY lxf lxf lxf -uoW +azQ tLz lJA omA @@ -133142,7 +133142,7 @@ dTY xyG xyG xyG -uoW +azQ tLz lxf lxf @@ -133399,7 +133399,7 @@ dTY eXG eXG eXG -uoW +azQ tLz lxf lxf @@ -133656,7 +133656,7 @@ dTY lxf lxf lxf -uoW +azQ tLz xMH czD @@ -133913,7 +133913,7 @@ dTY xyG xyG xyG -eEv +dZU dTY uqn quY @@ -134168,9 +134168,9 @@ dTY iiU dTY dTY -cMP -cMP -cMP +rmv +rmv +rmv dTY keQ quY @@ -134425,7 +134425,7 @@ wEt iiU iiU iiU -bJO +dxe ipp ipp ipp @@ -134682,7 +134682,7 @@ iiU iiU iiU iiU -wBL +fyA ipp ipp ipp @@ -134939,7 +134939,7 @@ wEt iiU iiU iiU -qXq +wac ipp ipp ipp @@ -135196,9 +135196,9 @@ nCO qFX nCO nCO -eai -eai -eai +vXq +vXq +vXq nCO uqn xhH @@ -135455,7 +135455,7 @@ dTw nCO dTw bPF -dfj +hPU nCO rHl xhH @@ -135712,7 +135712,7 @@ dTw gBz bnB bnB -ayh +qXD nCO uqn xhH @@ -135969,7 +135969,7 @@ dTw nCO bPF dTw -dfj +hPU nCO uqn xhH @@ -136226,7 +136226,7 @@ dTw nCO bPF dTw -dfj +hPU nCO keQ xhH @@ -136483,7 +136483,7 @@ dTw nCO mGB mGB -ayh +qXD nCO uqn quY @@ -136740,7 +136740,7 @@ dTw nCO bPF bPF -dfj +hPU nCO uqn quY @@ -136996,8 +136996,8 @@ nCO nCO nCO nCO -tJO -tJO +niy +niy nCO uqn quY @@ -137253,7 +137253,7 @@ igI qQg igI igI -fmd +jud ipp ipp uqn @@ -137510,7 +137510,7 @@ dTY dTY dTY dTY -bdx +ybP dTY ipp uqn @@ -137767,7 +137767,7 @@ rEL uBh rEL icr -nHN +pSB wfE ipp uqn @@ -138024,7 +138024,7 @@ jKB nRZ jKB nRZ -sYD +uJY wfE ipp rHl @@ -138281,7 +138281,7 @@ jKB nRZ jKB nRZ -sYD +uJY wfE ipp keQ @@ -138538,7 +138538,7 @@ lxf lxf lxf lxf -uoW +azQ tLz lJA lJA @@ -138795,7 +138795,7 @@ lxf lxf lxf lxf -uoW +azQ tLz lxf lxf @@ -139052,7 +139052,7 @@ lxf lxf lxf lxf -uoW +azQ tLz xMH xMH @@ -139309,7 +139309,7 @@ dTY dTY dTY dTY -bdx +ybP dTY ipp uqn @@ -139566,7 +139566,7 @@ sho sho uZB fCY -roC +sNV xsB igI uqn @@ -139823,7 +139823,7 @@ aoj azf jBd fCY -fBm +mxb qQI xsB uqn @@ -140080,7 +140080,7 @@ aoj azf azf fCY -roC +sNV igI xsB uqn @@ -140337,7 +140337,7 @@ aoj azf azf fCY -roC +sNV xsB xsB keQ @@ -140594,7 +140594,7 @@ azf rGT azf fCY -roC +sNV xsB igI uqn @@ -140851,7 +140851,7 @@ azf azf jBd fCY -roC +sNV igI qQI uqn @@ -141108,7 +141108,7 @@ azf azf jBd fCY -roC +sNV xsB xsB uqn @@ -141365,7 +141365,7 @@ aoj azf jBd fCY -fBm +mxb xsB xsB uqn @@ -141622,7 +141622,7 @@ aoj azf azf fCY -roC +sNV igI xsB uqn @@ -141879,7 +141879,7 @@ sho sho sho fCY -kZG +lwf igI xsB uqn @@ -203097,7 +203097,7 @@ bwK eyV eeT xtW -hdd +kPV hes hes tvv diff --git a/maps/away/away_site/quarantined_outpost/quarantined_outpost_holopads.dm b/maps/away/away_site/quarantined_outpost/quarantined_outpost_holopads.dm index 09999ac716a..396456db382 100644 --- a/maps/away/away_site/quarantined_outpost/quarantined_outpost_holopads.dm +++ b/maps/away/away_site/quarantined_outpost/quarantined_outpost_holopads.dm @@ -160,7 +160,7 @@ holo_accent_tag = ACCENT_SOL holo_color = COLOR_PURPLE_GRAY loop_sleep_time = 12 SECONDS - soundblock = "/singleton/sound_category/robot_talk" + soundblock = SFX_ROBOT_TALK things_to_say = list() /obj/structure/environmental_storytelling_holopad/quarantined_outpost/greet diff --git a/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm b/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm index 365928e04e4..7b059c3d7e2 100644 --- a/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm +++ b/maps/away/away_site/quarantined_outpost/quarantined_outpost_objects.dm @@ -63,7 +63,7 @@ GLOBAL_LIST_EMPTY(trackables_pool) /// Did we yell at our unfortunate victim the moment we spot them? This prevents yell spams. var/recently_yelled = FALSE /// The mob will yell at its targets with the sound path set here. Leave as null to disable. - var/mob_soundblock_yell = "/singleton/sound_category/bear_loud" + var/mob_soundblock_yell = SFX_ANIMAL_BEAR /// Changes the mobs description after death if set. var/desc_after_death = "One might wonder if the evolution ever had a hand in its creation. Whatever it was, it's now dead, hopefully..." @@ -736,7 +736,7 @@ GLOBAL_LIST_EMPTY(trackables_pool) var/list/areas_with_objects /obj/machinery/computer/terminal/mob_tracker/proc/categorize_trackables(mob/user) - playsound(get_turf(src), /singleton/sound_category/keyboard_sound, 30, TRUE) + playsound(get_turf(src), SFX_KEYBOARD, 30, TRUE) if(cooldown_until > world.time) to_chat(user, SPAN_WARNING("Terminal declines your input. Scanners are still preparing for the queries, you may try again in [time2text(cooldown_until - world.time, "mm:ss")] seconds.")) return @@ -832,10 +832,10 @@ GLOBAL_LIST_EMPTY(trackables_pool) visible_message(SPAN_NOTICE("\The [user] starts tinkering with \the [src]...")) to_chat(user, SPAN_NOTICE("You start pulsing \the [src] with \the [attacking_item], this should take a while...")) - playsound(get_turf(src), /singleton/sound_category/electrical_hum, 30, TRUE) + playsound(get_turf(src), SFX_ELECTRICAL_HUM, 30, TRUE) if(do_after(user, 15 SECONDS)) to_chat(user, SPAN_NOTICE("With the last impulse, \the [src] comes to life!")) - playsound(get_turf(src), /singleton/sound_category/electrical_spark, 30, TRUE) + playsound(get_turf(src), SFX_ELECTRICAL_SPARK, 30, TRUE) active = TRUE update_icon() post_activation() @@ -888,7 +888,7 @@ GLOBAL_LIST_EMPTY(trackables_pool) used = TRUE if(LAZYLEN(GLOB.quarantined_outpost_creatures)) // extraction isn't allowed without clearing the ruin to_chat(user, SPAN_WARNING("\The [src] doesn't notice your input. The notice on the screen informs you about a present lockdown and quarantine protocols.")) - playsound(get_turf(src), /singleton/sound_category/keyboard_sound, 30, TRUE) + playsound(get_turf(src), SFX_KEYBOARD, 30, TRUE) used = FALSE return if(tgui_alert(user, "As you stand before \the [src] a wave doubt washes over you. This machine hasn't been maintained for a long time. This may be the only chance you have got.", "Irreversible Action!", list("Confirm", "I changed my mind")) != "Confirm") diff --git a/maps/away/ships/biesel/tcaf_corvette/tcaf_corvette.dmm b/maps/away/ships/biesel/tcaf_corvette/tcaf_corvette.dmm index 20247ee7c74..909903209fb 100644 --- a/maps/away/ships/biesel/tcaf_corvette/tcaf_corvette.dmm +++ b/maps/away/ships/biesel/tcaf_corvette/tcaf_corvette.dmm @@ -2641,6 +2641,18 @@ }, /turf/simulated/floor/tiled/full, /area/tcaf_corvette/hydroponics) +"jy" = ( +/obj/effect/floor_decal/industrial/outline/custodial, +/obj/machinery/alarm/south{ + req_one_access = list(204) + }, +/obj/structure/cart/storage/janitorialcart/full{ + dir = 4 + }, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/full, +/area/tcaf_corvette/custodial) "jz" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -4467,6 +4479,18 @@ }, /turf/simulated/floor/carpet/rubber, /area/tcaf_corvette/storage) +"qp" = ( +/obj/effect/floor_decal/corner_wide/brown{ + dir = 6 + }, +/obj/machinery/media/jukebox{ + anchored = 1; + density = 0 + }, +/obj/effect/floor_decal/industrial/outline/service, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/white, +/area/tcaf_corvette/messhall) "qq" = ( /obj/effect/floor_decal/corner/brown{ dir = 5 @@ -11169,18 +11193,6 @@ }, /turf/simulated/floor, /area/tcaf_corvette/workshop) -"Sd" = ( -/obj/effect/floor_decal/industrial/outline/custodial, -/obj/machinery/alarm/south{ - req_one_access = list(204) - }, -/obj/structure/cart/storage/janitorialcart/full{ - dir = 4 - }, -/obj/item/reagent_containers/glass/bucket, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/full, -/area/tcaf_corvette/custodial) "Sf" = ( /obj/effect/floor_decal/corner_wide/brown{ dir = 10 @@ -11667,18 +11679,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled, /area/tcaf_corvette/central_ring) -"TG" = ( -/obj/effect/floor_decal/corner_wide/brown{ - dir = 6 - }, -/obj/machinery/media/jukebox{ - anchored = 1; - density = 0 - }, -/obj/effect/floor_decal/industrial/outline/service, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/white, -/area/tcaf_corvette/messhall) "TI" = ( /obj/machinery/atmospherics/unary/engine, /turf/simulated/floor, @@ -110861,7 +110861,7 @@ qQ bU Rq lm -TG +qp Ps GP zF @@ -113677,7 +113677,7 @@ Ne ml UP KO -Sd +jy ml uY Ro diff --git a/maps/away/ships/coc/coc_scarab/coc_scarab.dmm b/maps/away/ships/coc/coc_scarab/coc_scarab.dmm index 6edaeb23322..4840c58e2a3 100644 --- a/maps/away/ships/coc/coc_scarab/coc_scarab.dmm +++ b/maps/away/ships/coc/coc_scarab/coc_scarab.dmm @@ -5757,6 +5757,16 @@ /obj/structure/lattice/catwalk/indoor, /turf/simulated/open/airless, /area/ship/coc_scarab/exterior) +"xd" = ( +/obj/effect/floor_decal/corner_wide/dark_green/diagonal, +/obj/effect/floor_decal/spline/plain/black{ + dir = 6 + }, +/obj/machinery/media/jukebox{ + anchored = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/coc_scarab/mess) "xe" = ( /turf/simulated/wall/shuttle/space_ship/mercenary, /area/ship/coc_scarab/telecommunications) @@ -10948,16 +10958,6 @@ /obj/structure/railing/mapped, /turf/simulated/floor/plating, /area/ship/coc_scarab/thrust1) -"Rl" = ( -/obj/effect/floor_decal/corner_wide/dark_green/diagonal, -/obj/effect/floor_decal/spline/plain/black{ - dir = 6 - }, -/obj/machinery/media/jukebox{ - anchored = 1 - }, -/turf/simulated/floor/tiled/dark, -/area/ship/coc_scarab/mess) "Rn" = ( /obj/effect/floor_decal/corner_wide/paleblue/full{ dir = 1 @@ -112979,7 +112979,7 @@ vH bJ CW ng -Rl +xd ht KA zD diff --git a/maps/away/ships/golden_deep/golden_deep.dmm b/maps/away/ships/golden_deep/golden_deep.dmm index 01858a5879b..b5e7a6033f0 100644 --- a/maps/away/ships/golden_deep/golden_deep.dmm +++ b/maps/away/ships/golden_deep/golden_deep.dmm @@ -4969,6 +4969,15 @@ }, /turf/simulated/floor/lino/diamond, /area/golden_deep/hoplan) +"uy" = ( +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 5 + }, +/obj/machinery/media/jukebox{ + anchored = 1 + }, +/turf/simulated/floor/wood, +/area/golden_deep/lounge) "uz" = ( /obj/machinery/door/airlock/external, /obj/effect/map_effect/marker_helper/airlock/interior, @@ -6775,20 +6784,6 @@ }, /turf/simulated/floor/carpet/rubber, /area/golden_deep/workshop) -"Cr" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/cart/storage/janitorialcart/full{ - dir = 4 - }, -/obj/item/reagent_containers/glass/bucket, -/obj/structure/reagent_dispensers/peppertank/spacecleaner{ - pixel_y = 29 - }, -/obj/effect/floor_decal/industrial/outline/custodial, -/turf/simulated/floor/tiled/dark/full, -/area/golden_deep/custodial) "Cs" = ( /obj/effect/floor_decal/corner_wide/dark_blue{ dir = 6 @@ -8153,15 +8148,6 @@ }, /turf/simulated/floor/wood, /area/golden_deep/private_lounge) -"HD" = ( -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 5 - }, -/obj/machinery/media/jukebox{ - anchored = 1 - }, -/turf/simulated/floor/wood, -/area/golden_deep/lounge) "HE" = ( /obj/structure/cable{ d1 = 4; @@ -9726,16 +9712,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/golden_deep/eva) -"Ob" = ( -/obj/machinery/media/jukebox{ - anchored = 1 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/sign/poster/engineering/bay_65{ - pixel_y = -32 - }, -/turf/simulated/floor/tiled/dark/full, -/area/golden_deep/owned_lounge) "Od" = ( /obj/machinery/atmospherics/unary/engine{ dir = 4 @@ -10744,6 +10720,20 @@ /obj/effect/floor_decal/industrial/hatch_tiny/yellow, /turf/simulated/floor/tiled/dark, /area/golden_deep/portprop) +"RP" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cart/storage/janitorialcart/full{ + dir = 4 + }, +/obj/item/reagent_containers/glass/bucket, +/obj/structure/reagent_dispensers/peppertank/spacecleaner{ + pixel_y = 29 + }, +/obj/effect/floor_decal/industrial/outline/custodial, +/turf/simulated/floor/tiled/dark/full, +/area/golden_deep/custodial) "RR" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 1 @@ -12275,6 +12265,16 @@ }, /turf/simulated/floor/marble/dark, /area/golden_deep/hoplan) +"Ym" = ( +/obj/machinery/media/jukebox{ + anchored = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/sign/poster/engineering/bay_65{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/dark/full, +/area/golden_deep/owned_lounge) "Yn" = ( /obj/machinery/atmospherics/portables_connector/aux{ dir = 4 @@ -45275,7 +45275,7 @@ pL tM jK jK -Ob +Ym Uw Rt Rt @@ -110003,7 +110003,7 @@ Bu SG pG mk -Cr +RP Yf WF Hj @@ -113628,7 +113628,7 @@ oC Re IR mS -HD +uy SS eO Rt diff --git a/maps/away/ships/tajara/circus/adhomian_circus_items.dm b/maps/away/ships/tajara/circus/adhomian_circus_items.dm index ba22efdbf30..badfb99a7b2 100644 --- a/maps/away/ships/tajara/circus/adhomian_circus_items.dm +++ b/maps/away/ships/tajara/circus/adhomian_circus_items.dm @@ -103,11 +103,11 @@ if(!running) if(footstep >= 2) footstep = 0 - playsound(src, /singleton/sound_category/clown_sound, 20, 1) + playsound(src, SFX_FOOTSTEP_CLOWN, 20, 1) else footstep++ else - playsound(src, /singleton/sound_category/clown_sound, 50, 1) // Running is louder and funnier + playsound(src, SFX_FOOTSTEP_CLOWN, 50, 1) // Running is louder and funnier /obj/item/clothing/mask/clown name = "clown mask" @@ -134,24 +134,6 @@ var/obj/item/toy/balloon/color/B = new(get_turf(src)) user.put_in_active_hand(B) -/obj/machinery/media/jukebox/calliope - name = "calliope" - desc = "A steam powered music instrument. This one is painted in bright colors." - icon = 'maps/away/ships/tajara/circus/circus_sprites.dmi' - icon_state = "calliope" - state_base = "calliope" - anchored = FALSE - tracks = list( - new/datum/track("Boolean Sisters", 'sound/music/phonograph/boolean_sisters.ogg'), - new/datum/track("Electro Swing", 'sound/music/phonograph/electro_swing.ogg'), - new/datum/track("Jazz Instrumental", 'sound/music/phonograph/jazz_instrumental.ogg'), - new/datum/track("Le Swing", 'sound/music/phonograph/le_swing.ogg'), - new/datum/track("Posin'", 'sound/music/phonograph/posin.ogg') - ) - -/obj/machinery/media/jukebox/calliope/update_icon() - return - /obj/item/dumbbell name = "adhomian dumbbell" desc = "A heavy piece of metal used in weight lifting." diff --git a/maps/event/idris_cruise/idris_cruise-1.dmm b/maps/event/idris_cruise/idris_cruise-1.dmm index b0099589108..86ce66d60d0 100644 --- a/maps/event/idris_cruise/idris_cruise-1.dmm +++ b/maps/event/idris_cruise/idris_cruise-1.dmm @@ -40,24 +40,6 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) -"aag" = ( -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_l"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/obj/structure/bed/stool/chair/wood{ - dir = 4 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "aah" = ( /obj/machinery/door/airlock/centcom{ dir = 1 @@ -93,21 +75,6 @@ icon_state = "wood_preview" }, /area/cruise/pool/sauna2) -"aaC" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush2"; - name = "bush"; - pixel_x = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "aaR" = ( /turf/unsimulated/floor, /area/cruise/centerline) @@ -334,24 +301,6 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) -"akd" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_r"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "als" = ( /obj/structure/window/reinforced/crescent{ dir = 1 @@ -1004,25 +953,6 @@ icon_state = "wood" }, /area/cruise/main_bar) -"aJa" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree3" - }, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks1"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "aJc" = ( /obj/structure/bed/stool/padded/red, /obj/effect/floor_decal/spline/fancy/wood{ @@ -1069,18 +999,6 @@ icon_state = "dark" }, /area/cruise/centerline) -"aLK" = ( -/obj/structure/flora/grass/jungle{ - pixel_y = 20 - }, -/obj/structure/flora/rock/pile, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "aLP" = ( /obj/structure/sink{ dir = 8; @@ -1252,6 +1170,20 @@ icon_state = "carpet10-8" }, /area/cruise/escort) +"aRz" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush"; + name = "bush"; + pixel_x = -16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "aSD" = ( /obj/machinery/recharger, /obj/structure/table/wood, @@ -1394,16 +1326,6 @@ icon_state = "dark_preview" }, /area/cruise/pool) -"aXk" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "rock2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "aXI" = ( /obj/machinery/telecomms/processor/preset_three, /turf/unsimulated/floor{ @@ -1834,6 +1756,17 @@ icon_state = "dark_preview" }, /area/cruise/aft) +"bmo" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle{ + pixel_y = 20 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "bny" = ( /obj/structure/closet/crate/medical, /obj/item/roller, @@ -2015,25 +1948,6 @@ icon_state = "floor7" }, /area/cruise/arcade) -"brz" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree2" - }, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks3"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "bsm" = ( /obj/machinery/door/airlock{ id_tag = "c3"; @@ -2051,6 +1965,22 @@ dir = 8 }, /area/cruise/centerline) +"btA" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "btQ" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 @@ -2184,23 +2114,19 @@ icon_state = "wood" }, /area/cruise/main_bar) -"bzs" = ( -/obj/structure/bed/stool/chair/wood{ - dir = 4 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "bAc" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, /turf/unsimulated/floor, /area/cruise/hangar) +"bAf" = ( +/obj/structure/flora/tree/jungle/small, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "bAB" = ( /obj/structure/railing/mapped{ dir = 1 @@ -2246,6 +2172,23 @@ icon_state = "white" }, /area/cruise/escort) +"bBo" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_r"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "bCg" = ( /obj/effect/decal/fake_object{ icon = 'icons/obj/mining.dmi'; @@ -2320,6 +2263,20 @@ /obj/machinery/door/window/westleft, /turf/simulated/floor/wood, /area/cruise/dining_hall) +"bFj" = ( +/obj/effect/decal/fake_object/light_source{ + icon = 'icons/obj/mining.dmi'; + icon_state = "purpflag_open"; + light_color = "#A97FAA"; + name = "beacon"; + pixel_y = -2 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "bFr" = ( /obj/machinery/body_scanconsole{ dir = 4 @@ -2374,19 +2331,6 @@ icon_state = "dark_preview" }, /area/cruise/escort) -"bJl" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1"; - pixel_x = -13 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "bJt" = ( /turf/unsimulated/floor{ icon_state = "carpet7-3" @@ -2520,16 +2464,13 @@ name = "gloomy grass" }, /area/cruise/virtual_reality) -"bRs" = ( -/obj/structure/flora/grass/jungle, +"bQX" = ( /obj/structure/flora/grass/jungle{ - pixel_y = 20 + icon_state = "rock" }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" + icon_state = "asteroid"; + name = "dirt" }, /area/cruise/jungle) "bRB" = ( @@ -2639,6 +2580,13 @@ icon_state = "wood_birch" }, /area/cruise/escort) +"bXz" = ( +/obj/structure/flora/grass/jungle/b, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "bZF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/stool/padded/red, @@ -2672,16 +2620,6 @@ icon_state = "wood_cherry" }, /area/cruise/centerline) -"ccf" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/tree/jungle/small, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "cco" = ( /obj/effect/floor_decal/spline/fancy{ dir = 4 @@ -2813,17 +2751,23 @@ icon_state = "dark_preview" }, /area/cruise/aft_s) -"cho" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2"; - pixel_x = 14; - pixel_y = 27 - }, -/obj/structure/flora/grass/jungle{ - icon_state = "rock" +"cgB" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush"; + name = "bush"; + pixel_x = -16 }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) +"cgF" = ( +/obj/item/reagent_containers/glass/bucket/wood, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; icon_state = "asteroid"; name = "dirt" }, @@ -2854,27 +2798,22 @@ icon_state = "desert" }, /area/cruise/beach_cave) -"ciG" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush"; - name = "bush"; - pixel_x = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "cjH" = ( /obj/effect/floor_decal/industrial/warning/dust, /turf/unsimulated/floor{ icon_state = "asteroidfloor" }, /area/cruise/beach) +"ckz" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp{ + pixel_y = 5 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "clw" = ( /obj/effect/floor_decal/corner/mauve/diagonal, /obj/structure/table/stone/marble, @@ -3051,6 +2990,22 @@ icon_state = "floor7" }, /area/cruise/fore) +"cqB" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "cqO" = ( /obj/effect/floor_decal/spline/fancy{ dir = 4 @@ -3277,6 +3232,16 @@ icon_state = "dark" }, /area/cruise/jungle) +"cCB" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/railing/mapped{ + color = "#6e472b" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "cDg" = ( /obj/structure/table/standard, /obj/machinery/vending/wallmed1{ @@ -3408,15 +3373,6 @@ /obj/item/device/megaphone/stagemicrophone, /turf/unsimulated/floor, /area/cruise/main_bar/aft) -"cIz" = ( -/obj/structure/table/wood, -/obj/item/storage/toolbox/mechanical, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "cIA" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/structure/railing/mapped{ @@ -3474,25 +3430,6 @@ dir = 8 }, /area/cruise/arcade) -"cLb" = ( -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) -"cLg" = ( -/obj/structure/flora/grass/jungle{ - pixel_y = 20 - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "cLz" = ( /obj/item/flame/candle, /obj/effect/floor_decal/spline/fancy/wood{ @@ -3535,6 +3472,27 @@ /obj/machinery/light, /turf/unsimulated/floor, /area/cruise/aft_s) +"cLV" = ( +/obj/effect/decal/fake_object/light_source{ + density = 1; + icon_state = "bonfire_on_fire"; + light_color = "#FA644B"; + light_range = 6; + name = "bonfire" + }, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "cMg" = ( /obj/structure/railing/mapped, /turf/unsimulated/floor{ @@ -3633,17 +3591,6 @@ "cPr" = ( /turf/simulated/wall/shuttle/idris, /area/cruise/pool/sauna1) -"cPE" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle{ - icon_state = "tree2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "cPQ" = ( /turf/simulated/wall/shuttle/idris, /area/cruise/beach_cave) @@ -4088,6 +4035,20 @@ icon_state = "wood_birch" }, /area/cruise/escort) +"dgS" = ( +/obj/effect/decal/fake_object/light_source{ + icon_state = "lantern-on"; + light_color = "#FAA019"; + light_range = 6; + name = "lantern"; + pixel_x = -8; + pixel_y = 16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "dhz" = ( /obj/structure/railing/mapped, /turf/simulated/floor/tiled/ramp{ @@ -4211,22 +4172,6 @@ icon_state = "dark_preview" }, /area/cruise/aft) -"dlP" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "dme" = ( /turf/simulated/floor/tiled/ramp, /area/cruise/aft) @@ -4241,21 +4186,6 @@ icon_state = "wood_preview" }, /area/cruise/main_bar) -"dou" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks1"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "dpm" = ( /obj/effect/floor_decal/corner/blue{ dir = 6 @@ -4363,22 +4293,6 @@ icon_state = "wood" }, /area/cruise/virtual_reality) -"dxO" = ( -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_l"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/obj/structure/flora/grass/jungle/b, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "dxP" = ( /obj/structure/window/reinforced/crescent{ dir = 8 @@ -4507,15 +4421,6 @@ icon_state = "turquoise" }, /area/cruise/aft) -"dEl" = ( -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "dEt" = ( /obj/structure/window/reinforced/crescent, /obj/structure/window/reinforced/crescent{ @@ -4539,22 +4444,6 @@ icon_state = "wood_preview" }, /area/cruise/main_bar) -"dFf" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks1"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "dFp" = ( /obj/structure/window/reinforced/crescent, /obj/structure/window/reinforced/crescent{ @@ -4674,16 +4563,6 @@ /obj/machinery/mech_recharger, /turf/unsimulated/floor, /area/cruise/virtual_reality) -"dMa" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "dNn" = ( /obj/structure/bed/stool/chair/padded/blue{ dir = 4 @@ -4727,15 +4606,6 @@ icon_state = "dark" }, /area/cruise/aft_s) -"dQM" = ( -/obj/structure/flora/grass/jungle/b, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "dRq" = ( /obj/structure/lattice/catwalk/indoor/grate, /obj/structure/window/reinforced/polarized{ @@ -4774,10 +4644,26 @@ icon_state = "dark_preview" }, /area/cruise/hangar) -"dUV" = ( -/obj/structure/flora/rock, +"dUa" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle{ + icon_state = "tree2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) +"dUY" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks1"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; icon = 'icons/jungle.dmi'; icon_state = "grass1"; name = "lush grass" @@ -4808,20 +4694,6 @@ icon_state = "dark_preview" }, /area/cruise/security) -"dXc" = ( -/obj/structure/railing/mapped{ - color = "#6e472b" - }, -/obj/structure/flora/grass/jungle{ - icon_state = "grassa2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "dXh" = ( /obj/machinery/light{ dir = 8 @@ -4905,14 +4777,6 @@ icon_state = "dark_preview" }, /area/cruise/fore_p) -"eak" = ( -/obj/structure/flora/tree/jungle/small, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "ebS" = ( /obj/effect/landmark/force_spawnpoint{ job_tag = "Off-Duty Crew Member" @@ -4921,6 +4785,15 @@ icon_state = "dark" }, /area/cruise/centerline) +"ecj" = ( +/obj/structure/bed/stool/chair/wood{ + dir = 8 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "ecq" = ( /obj/structure/bed/stool/chair/wood{ dir = 1 @@ -5046,6 +4919,20 @@ icon_state = "wood" }, /area/cruise/library) +"ejf" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2"; + pixel_x = 14; + pixel_y = 27 + }, +/obj/structure/flora/grass/jungle{ + icon_state = "rock" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "ejQ" = ( /obj/item/device/radio/intercom/east, /obj/effect/landmark/force_spawnpoint{ @@ -5125,6 +5012,17 @@ icon_state = "dark" }, /area/cruise/fore_p) +"elz" = ( +/obj/structure/flora/grass/jungle{ + pixel_y = 20 + }, +/obj/structure/flora/rock/pile, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "emn" = ( /obj/effect/floor_decal/corner/green/diagonal, /obj/effect/floor_decal/spline/fancy, @@ -5156,6 +5054,17 @@ icon_state = "wood_birch" }, /area/cruise/centerline) +"enR" = ( +/obj/structure/flora/grass/jungle{ + pixel_y = 20 + }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "eoi" = ( /obj/structure/closet/emcloset, /turf/unsimulated/floor{ @@ -5200,18 +5109,6 @@ name = "extranet" }, /area/cruise/virtual_reality) -"epX" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/grass/jungle{ - icon_state = "rock" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "eqh" = ( /obj/structure/railing/mapped{ color = "#f5c542" @@ -5242,17 +5139,6 @@ /obj/effect/floor_decal/spline/fancy, /turf/unsimulated/floor, /area/cruise/main_bar/aft) -"erg" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "grassa2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "erm" = ( /obj/machinery/door/firedoor, /obj/effect/floor_decal/corner/green/diagonal, @@ -5810,6 +5696,15 @@ icon_state = "wood_preview" }, /area/cruise/beach) +"eOV" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/tree/jungle/small, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "ePi" = ( /obj/machinery/light{ dir = 1 @@ -5974,6 +5869,20 @@ icon_state = "dark_preview" }, /area/cruise/hangar) +"eXj" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "eXL" = ( /obj/effect/floor_decal/spline/fancy{ dir = 1 @@ -5982,15 +5891,6 @@ icon_state = "wood_willow" }, /area/cruise/centerline) -"eYb" = ( -/obj/structure/table/wood, -/obj/item/watertank, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "eYc" = ( /obj/structure/coatrack{ pixel_x = -10; @@ -6147,6 +6047,15 @@ /obj/item/hullbeacon/red, /turf/unsimulated/floor, /area/template_noop) +"feb" = ( +/obj/structure/bed/stool/chair/wood{ + dir = 1 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "feC" = ( /obj/structure/filingcabinet/chestdrawer, /turf/unsimulated/floor{ @@ -6468,19 +6377,6 @@ }, /turf/simulated/wall/shuttle/idris, /area/cruise/dining_hall) -"fqE" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2"; - pixel_y = 9 - }, -/obj/structure/flora/tree/jungle/small, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "fqV" = ( /obj/structure/railing/mapped, /turf/unsimulated/floor, @@ -6509,23 +6405,6 @@ icon_state = "dark_preview" }, /area/cruise/central) -"fsh" = ( -/obj/structure/flora/tree/jungle/small, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks1"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "fso" = ( /obj/structure/table/rack, /obj/item/storage/toolbox/mechanical{ @@ -6615,17 +6494,6 @@ icon_state = "dark" }, /area/cruise/central) -"fvN" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/railing/mapped{ - color = "#6e472b" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "fvZ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/multi_tile/glass{ @@ -6688,17 +6556,6 @@ }, /turf/unsimulated/floor, /area/cruise/jungle) -"fAw" = ( -/obj/structure/railing/mapped, -/obj/structure/flora/grass/jungle{ - icon_state = "grassa2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "fAD" = ( /obj/machinery/telecomms/processor/preset_four, /turf/unsimulated/floor{ @@ -6852,21 +6709,6 @@ icon_state = "wood_birch" }, /area/cruise/centerline) -"fGi" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush"; - name = "bush"; - pixel_x = -16 - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "fGs" = ( /obj/structure/flora/grass/jungle, /obj/machinery/light{ @@ -6924,6 +6766,18 @@ icon_state = "wood" }, /area/cruise/library) +"fIr" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1"; + pixel_x = -13; + pixel_y = -14 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "fIt" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/closet/crate, @@ -6953,24 +6807,6 @@ }, /turf/unsimulated/floor, /area/template_noop) -"fJY" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1" - }, -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_l"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "fKk" = ( /obj/effect/floor_decal/spline/fancy{ dir = 4 @@ -7353,6 +7189,15 @@ icon_state = "white" }, /area/cruise/pool) +"gaW" = ( +/obj/structure/flora/rock{ + icon_state = "basalt3" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "gbh" = ( /obj/machinery/washing_machine, /turf/unsimulated/floor, @@ -7444,17 +7289,6 @@ icon_state = "white" }, /area/cruise/virtual_reality) -"gdM" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "grassa2" - }, -/obj/structure/blocker, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "geN" = ( /obj/item/device/flashlight, /obj/item/device/flashlight, @@ -7482,22 +7316,6 @@ icon_state = "wood_birch" }, /area/cruise/jungle) -"gfh" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush"; - name = "bush"; - pixel_x = -16 - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "gfE" = ( /obj/structure/bed/stool/padded/red, /obj/item/device/radio/intercom/west, @@ -7558,6 +7376,16 @@ icon_state = "wood_birch" }, /area/cruise/dining_hall) +"ghi" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "grassa2" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "ghv" = ( /obj/effect/floor_decal/corner/mauve/diagonal, /obj/machinery/appliance/mixer/candy{ @@ -7636,14 +7464,6 @@ icon_state = "floor7" }, /area/cruise/e_supplies) -"gjw" = ( -/obj/machinery/floodlight, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "gjF" = ( /obj/effect/floor_decal/corner/lime{ dir = 5 @@ -7664,6 +7484,22 @@ icon_state = "white" }, /area/cruise/medical) +"gjU" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks1"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "gkf" = ( /obj/machinery/light, /turf/unsimulated/floor{ @@ -7769,21 +7605,6 @@ icon_state = "dark" }, /area/cruise/beach) -"gnW" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks3"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "god" = ( /obj/structure/lattice/catwalk, /turf/unsimulated/floor, @@ -7878,14 +7699,6 @@ /obj/effect/map_effect/window_spawner/reinforced/crescent, /turf/unsimulated/floor/plating, /area/template_noop) -"gqC" = ( -/obj/structure/bed/stool/chair/wood, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "grr" = ( /obj/structure/table/rack, /obj/item/tank/emergency_oxygen/double{ @@ -8086,16 +7899,6 @@ /obj/effect/floor_decal/industrial/warning/full, /turf/unsimulated/floor, /area/cruise/fore_p) -"gBq" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle/small, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "gCK" = ( /obj/machinery/vending/cola, /obj/effect/floor_decal/industrial/outline/yellow, @@ -8222,6 +8025,14 @@ icon_state = "wood_cherry" }, /area/cruise/dining_hall) +"gIk" = ( +/obj/structure/flora/tree/jungle/small, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "gIw" = ( /obj/structure/railing/mapped{ dir = 8 @@ -8494,35 +8305,18 @@ icon_state = "dark_preview" }, /area/cruise/hydroponics) -"gTo" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks3"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/obj/structure/flora/tree/jungle{ - icon_state = "tree3" +"gTu" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1"; + pixel_x = -13; + pixel_y = -14 }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; icon_state = "asteroid"; name = "dirt" }, /area/cruise/jungle) -"gTK" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "rock" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "gTZ" = ( /obj/effect/decal/fake_object{ desc = "A descriptive sign."; @@ -8578,22 +8372,35 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) +"gXb" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks3"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) +"gXt" = ( +/obj/structure/railing/mapped{ + color = "#6e472b" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "gXu" = ( /obj/machinery/light, /turf/unsimulated/floor{ icon_state = "dark_preview" }, /area/cruise/aft) -"gYk" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "gYu" = ( /obj/structure/lattice/catwalk/indoor/grate, /obj/effect/floor_decal/industrial/warning{ @@ -8674,7 +8481,7 @@ icon_state = "dark_preview" }, /area/cruise/hydroponics) -"haX" = ( +"hbo" = ( /obj/effect/decal/fake_object/light_source{ desc = "A cozy lamp."; icon = 'icons/effects/32x96.dmi'; @@ -8685,7 +8492,6 @@ }, /obj/structure/flora/grass/jungle/b, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; icon_state = "asteroid"; name = "dirt" }, @@ -8794,6 +8600,16 @@ icon_state = "dark_preview" }, /area/cruise/central) +"hhh" = ( +/obj/structure/bed/stool/chair/wood{ + dir = 4 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "hhy" = ( /obj/structure/window/reinforced/crescent{ dir = 8 @@ -8857,6 +8673,16 @@ icon_state = "wood_preview" }, /area/cruise/security) +"hkJ" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "rock2" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "hla" = ( /obj/effect/floor_decal/corner/blue{ dir = 6 @@ -9047,17 +8873,6 @@ icon_state = "wood_preview" }, /area/cruise/pool) -"hrK" = ( -/obj/structure/railing/mapped, -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "hrN" = ( /obj/effect/floor_decal/corner/beige/diagonal, /obj/structure/railing/mapped{ @@ -9241,6 +9056,12 @@ dir = 8 }, /area/cruise/arcade) +"hAg" = ( +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "hAl" = ( /turf/unsimulated/floor, /area/cruise/escort) @@ -9261,14 +9082,6 @@ icon_state = "white" }, /area/cruise/medical) -"hBy" = ( -/obj/structure/bed/stool/padded/red, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "hBF" = ( /obj/structure/bed/stool/chair/padded/black, /turf/unsimulated/floor{ @@ -9387,6 +9200,20 @@ /obj/machinery/vending/dinnerware/plastic, /turf/simulated/floor/wood, /area/cruise/dining_hall) +"hHP" = ( +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_l"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "hHX" = ( /obj/structure/table/wood, /obj/item/paper_scanner, @@ -9440,6 +9267,21 @@ /obj/machinery/status_display, /turf/simulated/wall/shuttle/idris, /area/cruise/central) +"hLi" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush"; + name = "bush"; + pixel_x = -16 + }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "hLn" = ( /obj/structure/lattice/catwalk/indoor/grate, /turf/unsimulated/floor/plating, @@ -9539,6 +9381,23 @@ dir = 8 }, /area/cruise/pool) +"hRJ" = ( +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_l"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/obj/structure/bed/stool/chair/wood{ + dir = 4 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "hRY" = ( /obj/structure/table/stone/marble, /obj/machinery/door/firedoor, @@ -9620,6 +9479,20 @@ /obj/structure/lattice/catwalk/indoor, /turf/unsimulated/floor, /area/cruise/arcade) +"hVo" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush"; + name = "bush"; + pixel_x = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "hVw" = ( /obj/effect/floor_decal/industrial/warning, /turf/unsimulated/floor{ @@ -9750,6 +9623,18 @@ icon_state = "desert" }, /area/cruise/beach) +"ibL" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2"; + pixel_y = 9 + }, +/obj/structure/flora/tree/jungle/small, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "ibO" = ( /obj/effect/floor_decal/industrial/warning{ dir = 9 @@ -9855,25 +9740,6 @@ icon_state = "wood_preview" }, /area/cruise/jungle) -"igm" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "igv" = ( /obj/structure/flora/grass/jungle{ density = 1 @@ -10203,17 +10069,6 @@ icon_state = "dark" }, /area/cruise/fore) -"isP" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree3" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "ita" = ( /obj/structure/railing/mapped{ dir = 8 @@ -10335,21 +10190,6 @@ icon_state = "beach" }, /area/cruise/jungle) -"ixz" = ( -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_l"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "ixF" = ( /turf/unsimulated/beach/coastline{ dir = 5; @@ -10381,19 +10221,6 @@ icon_state = "dark_preview" }, /area/cruise/pool) -"izD" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1"; - pixel_x = -13; - pixel_y = -14 - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "iAG" = ( /obj/machinery/door/airlock/service{ name = "Public Backup Custodial Closet"; @@ -10485,16 +10312,6 @@ icon_state = "dark_preview" }, /area/cruise/hangar) -"iHu" = ( -/obj/structure/bed/stool/chair/wood{ - dir = 8 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "iIm" = ( /obj/structure/lattice/catwalk/indoor/grate, /obj/structure/window/reinforced/crescent{ @@ -10517,6 +10334,21 @@ icon_state = "dark_preview" }, /area/cruise/escort) +"iIK" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_l"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "iIR" = ( /obj/effect/floor_decal/industrial/warning, /obj/structure/tank_wall/carbon_dioxide{ @@ -10550,6 +10382,16 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) +"iKc" = ( +/obj/structure/flora/rock{ + icon_state = "basalt3" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "iKg" = ( /obj/structure/railing/mapped, /turf/unsimulated/floor{ @@ -11133,14 +10975,6 @@ }, /turf/template_noop, /area/template_noop) -"jgQ" = ( -/obj/item/storage/box/tactical/frags, -/obj/item/storage/box/tactical/frags, -/obj/item/storage/box/tactical/frags, -/obj/item/storage/box/tactical/frags, -/obj/structure/table/rack, -/turf/simulated/floor/reinforced, -/area/cruise/virtual_reality) "jhi" = ( /obj/item/storage/toolbox/mechanical{ pixel_y = 9 @@ -11271,14 +11105,6 @@ color = "#4b0082" }, /area/cruise/main_bar/aft) -"jlw" = ( -/obj/structure/flora/grass/jungle/b, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "jlN" = ( /obj/structure/window/reinforced/crescent{ dir = 8 @@ -11330,17 +11156,6 @@ icon_state = "tiles_small" }, /area/cruise/aft_s) -"joZ" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "rock2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "jpA" = ( /obj/structure/curtain/open/privacy, /obj/machinery/button/remote/airlock{ @@ -11456,21 +11271,6 @@ }, /turf/unsimulated/floor/plating, /area/template_noop) -"jtU" = ( -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_r"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "juG" = ( /obj/machinery/status_display, /turf/simulated/wall/shuttle/idris, @@ -11508,23 +11308,6 @@ icon_state = "freezer" }, /area/cruise/washroom_aft) -"jwi" = ( -/obj/structure/flora/tree/jungle/small, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "jwp" = ( /obj/structure/table/stone/marble, /obj/item/reagent_containers/food/drinks/shaker{ @@ -11586,6 +11369,21 @@ }, /turf/unsimulated/floor, /area/cruise/tcomms_sat) +"jyW" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_r"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "jzd" = ( /turf/unsimulated/floor{ icon_state = "wood_cherry" @@ -11682,6 +11480,14 @@ icon_state = "dark" }, /area/cruise/central) +"jHp" = ( +/obj/structure/table/wood, +/obj/item/storage/toolbox/mechanical, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "jHC" = ( /turf/simulated/floor/tiled/ramp, /area/cruise/centerline) @@ -11789,20 +11595,6 @@ icon_state = "dark_preview" }, /area/cruise/aft) -"jOH" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2" - }, -/obj/structure/flora/grass/jungle{ - icon_state = "rock" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "jOP" = ( /obj/structure/barricade/metal{ dir = 4 @@ -11851,6 +11643,19 @@ icon_state = "wood" }, /area/cruise/pool/sauna1) +"jRm" = ( +/obj/structure/railing/mapped{ + color = "#6e472b" + }, +/obj/structure/flora/grass/jungle{ + icon_state = "grassa2" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "jRv" = ( /obj/random/pottedplant, /obj/structure/sign/flag/idris{ @@ -12167,17 +11972,6 @@ icon_state = "dark_preview" }, /area/cruise/centerline) -"kfK" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "kgi" = ( /obj/item/towel_flat{ color = "#ff0000" @@ -12193,6 +11987,15 @@ "kgH" = ( /turf/simulated/floor/exoplanet/water/shallow, /area/cruise/virtual_reality) +"kgK" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "rock2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "khs" = ( /obj/machinery/telecomms/server/presets/service, /turf/unsimulated/floor{ @@ -12717,14 +12520,6 @@ icon_state = "grass_stalk" }, /area/cruise/main_bar/aft) -"kBn" = ( -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "kBq" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/machinery/light{ @@ -12763,14 +12558,16 @@ icon_state = "asteroidfloor" }, /area/cruise/beach) -"kCY" = ( +"kCI" = ( +/obj/structure/flora/grass/jungle, /obj/structure/flora/grass/jungle{ - icon_state = "bushb1" + icon_state = "bushb1"; + pixel_x = -13 }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" }, /area/cruise/jungle) "kDq" = ( @@ -12893,6 +12690,14 @@ icon_state = "dark" }, /area/cruise/fore_s) +"kJu" = ( +/obj/item/storage/box/tactical/frags, +/obj/item/storage/box/tactical/frags, +/obj/item/storage/box/tactical/frags, +/obj/item/storage/box/tactical/frags, +/obj/structure/table/rack, +/turf/simulated/floor/reinforced, +/area/cruise/virtual_reality) "kJv" = ( /turf/unsimulated/beach/coastline{ dir = 8; @@ -12900,16 +12705,6 @@ icon_state = "beachcorner" }, /area/cruise/jungle) -"kJz" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "kJC" = ( /obj/machinery/door/firedoor, /obj/machinery/light/small, @@ -13093,6 +12888,16 @@ icon_state = "tiles_small" }, /area/cruise/fore_s) +"kRg" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "kRt" = ( /obj/structure/railing/mapped{ dir = 8 @@ -13101,6 +12906,83 @@ icon_state = "wood_cherry" }, /area/cruise/centerline) +"kRC" = ( +/obj/effect/floor_decal/corner/mauve/diagonal, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/turf/unsimulated/floor{ + icon_state = "white" + }, +/area/cruise/escort) "kTh" = ( /obj/structure/lattice/catwalk/indoor/grate, /turf/unsimulated/floor/plating, @@ -13371,18 +13253,6 @@ icon_state = "white" }, /area/cruise/main_bar) -"lcS" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2"; - pixel_y = 9 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "ldq" = ( /obj/structure/bed/stool/padded/red, /turf/unsimulated/floor, @@ -13418,22 +13288,6 @@ name = "gloomy grass" }, /area/cruise/virtual_reality) -"lfz" = ( -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_r"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "lgf" = ( /obj/item/storage/toolbox/electrical{ pixel_x = 6; @@ -13515,6 +13369,13 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) +"ljb" = ( +/obj/structure/flora/rock, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "ljm" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -13629,21 +13490,6 @@ }, /turf/unsimulated/floor, /area/cruise/centerline) -"lpS" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush"; - name = "bush"; - pixel_x = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "lrr" = ( /obj/effect/floor_decal/industrial/outline/emergency_closet, /turf/unsimulated/floor{ @@ -13651,6 +13497,17 @@ icon_state = "rub_carpet" }, /area/cruise/main_bar) +"lrt" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2"; + pixel_y = 9 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "lrG" = ( /obj/structure/window/reinforced{ dir = 1 @@ -13819,77 +13676,6 @@ icon_state = "wood_birch" }, /area/cruise/aft) -"lzR" = ( -/obj/effect/floor_decal/corner/mauve/diagonal, -/obj/structure/table/stone/marble, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/turf/unsimulated/floor{ - icon_state = "white" - }, -/area/cruise/main_bar) "lAa" = ( /obj/structure/table/wood, /obj/effect/decal/fake_object{ @@ -14178,17 +13964,6 @@ icon_state = "asteroidfloor" }, /area/cruise/beach) -"lJJ" = ( -/obj/structure/flora/rock{ - icon_state = "basalt3" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "lJU" = ( /obj/machinery/recharge_station, /turf/unsimulated/floor, @@ -14471,14 +14246,6 @@ /obj/structure/table/stone/marble, /turf/simulated/floor/wood, /area/cruise/dining_hall) -"lTe" = ( -/obj/structure/flora/rock, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "lTU" = ( /obj/machinery/light/small{ dir = 4 @@ -14512,6 +14279,16 @@ }, /turf/unsimulated/floor/concrete, /area/cruise/virtual_reality) +"lUZ" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "rock" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "lWi" = ( /obj/machinery/door/window/westright, /obj/effect/floor_decal/corner/mauve{ @@ -14552,39 +14329,6 @@ icon_state = "wood" }, /area/cruise/pool/sauna1) -"lXB" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) -"lXH" = ( -/obj/structure/flora/grass/jungle/b, -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_r"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "lXO" = ( /obj/machinery/reagentgrinder{ pixel_y = 6 @@ -14666,6 +14410,24 @@ icon_state = "tiles_small" }, /area/cruise/security) +"mcY" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks3"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "mds" = ( /obj/structure/bed/stool/chair/wood{ dir = 8 @@ -15041,34 +14803,6 @@ }, /turf/template_noop, /area/cruise/main_bar/aft) -"mte" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1"; - pixel_x = -13; - pixel_y = -14 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) -"mtj" = ( -/obj/effect/decal/fake_object/light_source{ - icon = 'icons/obj/mining.dmi'; - icon_state = "purpflag_open"; - light_color = "#A97FAA"; - name = "beacon"; - pixel_y = -2 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "mts" = ( /obj/machinery/cryopod/living_quarters{ pixel_y = 8 @@ -15322,17 +15056,6 @@ /obj/item/hullbeacon/red, /turf/unsimulated/floor, /area/template_noop) -"mEF" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2"; - pixel_y = 9 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "mEY" = ( /obj/machinery/door/firedoor, /obj/machinery/light{ @@ -15418,18 +15141,6 @@ icon_state = "wood" }, /area/cruise/main_bar/aft) -"mHP" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "mIp" = ( /obj/structure/tank_wall/carbon_dioxide{ density = 0; @@ -15445,6 +15156,21 @@ icon_state = "tiles_small" }, /area/cruise/central) +"mKh" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "mKn" = ( /obj/machinery/atm{ pixel_x = 28; @@ -15524,83 +15250,6 @@ icon_state = "wood_cherry" }, /area/cruise/centerline) -"mOf" = ( -/obj/effect/floor_decal/corner/mauve/diagonal, -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/box/large/produce{ - pixel_x = 3; - pixel_y = 5 - }, -/turf/unsimulated/floor{ - icon_state = "white" - }, -/area/cruise/escort) "mOt" = ( /obj/structure/window/reinforced/crescent{ dir = 8 @@ -15681,6 +15330,23 @@ icon_state = "dark_preview" }, /area/cruise/escort) +"mRf" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1" + }, +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_l"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "mRm" = ( /obj/structure/railing/mapped, /obj/structure/railing/mapped{ @@ -15742,6 +15408,16 @@ icon_state = "white" }, /area/cruise/medical) +"mVb" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2"; + pixel_y = 9 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "mVh" = ( /obj/structure/flora/grass/jungle/b, /turf/unsimulated/floor{ @@ -15848,18 +15524,6 @@ }, /turf/simulated/floor/tiled/ramp, /area/cruise/jungle) -"mYa" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree3" - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "mZn" = ( /obj/structure/table/steel, /obj/effect/floor_decal/corner/blue{ @@ -15975,21 +15639,6 @@ icon_state = "white" }, /area/cruise/main_bar) -"ndw" = ( -/obj/structure/table/rack, -/obj/item/storage/box/tactical/flashbangs{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/tactical/teargas{ - pixel_x = -1; - pixel_y = -4 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/unsimulated/floor{ - icon_state = "dark_preview" - }, -/area/cruise/security) "ndE" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/eastright{ @@ -16042,6 +15691,27 @@ icon_state = "wood_willow" }, /area/cruise/centerline) +"niy" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks1"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush2"; + name = "bush"; + pixel_x = -16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "njd" = ( /obj/machinery/vending/wallmed1{ pixel_x = -32; @@ -16103,6 +15773,13 @@ icon_state = "dark_preview" }, /area/cruise/hangar) +"nnJ" = ( +/obj/machinery/floodlight, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "nov" = ( /obj/machinery/door/airlock{ name = "Emergency Supplies Closet"; @@ -16169,6 +15846,16 @@ icon_state = "white" }, /area/cruise/pool) +"nqg" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "grassa2" + }, +/obj/structure/blocker, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "nrB" = ( /turf/unsimulated/beach/coastline{ icon = 'icons/misc/beach.dmi'; @@ -16276,18 +15963,6 @@ }, /turf/unsimulated/floor, /area/cruise/virtual_reality) -"nxB" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree2" - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "nxF" = ( /obj/effect/map_effect/window_spawner/reinforced/crescent, /turf/unsimulated/floor/plating, @@ -16371,6 +16046,16 @@ icon_state = "wood_preview" }, /area/cruise/pool/sauna2) +"nzQ" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "nzW" = ( /obj/structure/bed/stool/chair/wood{ dir = 8 @@ -16463,6 +16148,14 @@ icon_state = "turquoise" }, /area/cruise/aft) +"nCg" = ( +/obj/structure/table/wood, +/obj/item/watertank, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "nCl" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/light/spot{ @@ -16517,6 +16210,15 @@ icon_state = "dark_preview" }, /area/cruise/custodial_s) +"nGr" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "nGs" = ( /obj/item/storage/toolbox/mechanical{ pixel_y = 9 @@ -16526,6 +16228,25 @@ icon_state = "asteroidfloor" }, /area/cruise/beach) +"nGu" = ( +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_r"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp"; + pixel_x = 8; + pixel_y = -2 + }, +/obj/structure/flora/grass/jungle{ + icon_state = "grassa2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "nGD" = ( /obj/structure/table/standard, /obj/machinery/vending/wallmed1{ @@ -16629,6 +16350,23 @@ icon_state = "carpet" }, /area/cruise/centerline) +"nLD" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks3"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/obj/structure/flora/tree/jungle{ + icon_state = "tree3" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "nLU" = ( /turf/unsimulated/floor{ icon_state = "wood_birch" @@ -16792,6 +16530,14 @@ icon_state = "wood-broken3" }, /area/cruise/jungle) +"nRP" = ( +/obj/structure/flora/tree/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "nRX" = ( /obj/structure/flora/rock/pile, /turf/simulated/floor/exoplanet/water/shallow, @@ -16807,14 +16553,6 @@ icon_state = "dark" }, /area/cruise/security) -"nSK" = ( -/obj/item/reagent_containers/glass/bucket/wood, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "nSN" = ( /obj/structure/table/steel, /obj/item/device/multitool, @@ -16843,14 +16581,6 @@ }, /turf/unsimulated/floor, /area/cruise/centerline) -"nTq" = ( -/obj/structure/blocker, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "nTt" = ( /obj/structure/window/reinforced/crescent, /obj/item/hullbeacon/red, @@ -16875,6 +16605,17 @@ /obj/structure/flora/rock, /turf/simulated/floor/exoplanet/water/shallow, /area/cruise/jungle) +"nTH" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "nUk" = ( /obj/structure/bed/stool/padded/red, /turf/unsimulated/floor{ @@ -16882,6 +16623,16 @@ icon_state = "carpet" }, /area/cruise/centerline) +"nVi" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "nWh" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/unsimulated/floor{ @@ -17021,6 +16772,21 @@ icon_state = "dark" }, /area/cruise/fore_p) +"obS" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush"; + name = "bush"; + pixel_x = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "obZ" = ( /obj/structure/closet/crate/bin, /obj/effect/floor_decal/industrial/outline/yellow, @@ -17102,6 +16868,21 @@ icon_state = "dark_preview" }, /area/cruise/main_bar) +"ofG" = ( +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_l"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/obj/structure/flora/grass/jungle/b, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "ogj" = ( /obj/effect/floor_decal/spline/fancy, /turf/unsimulated/floor{ @@ -17157,21 +16938,6 @@ }, /turf/unsimulated/floor, /area/cruise/fore_s) -"ojz" = ( -/obj/effect/decal/fake_object/light_source{ - icon_state = "lantern-on"; - light_color = "#FAA019"; - light_range = 6; - name = "lantern"; - pixel_x = -8; - pixel_y = 16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "ojJ" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 @@ -17191,16 +16957,6 @@ icon_state = "dark_preview" }, /area/cruise/escort) -"ojR" = ( -/obj/structure/bed/stool/chair/wood{ - dir = 1 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "okc" = ( /obj/structure/window/reinforced/crescent{ dir = 8 @@ -17395,23 +17151,6 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/ramp, /area/cruise/pool) -"otm" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/effect/decal/fake_object{ - desc = "A descriptive sign."; - icon = 'icons/effects/ship_idris_cruise.dmi'; - icon_state = "sign_washroom"; - name = "washroom indicator"; - pixel_y = 32 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "otn" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -17637,6 +17376,24 @@ }, /turf/unsimulated/floor, /area/cruise/main_bar/aft) +"oCI" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree3" + }, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks3"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "oDr" = ( /obj/structure/barricade/plasteel/wired{ dir = 8 @@ -17785,6 +17542,24 @@ icon_state = "wood" }, /area/cruise/main_bar/aft) +"oMn" = ( +/obj/structure/table/rack, +/obj/item/melee/energy/sword/knife/sol, +/obj/item/melee/energy/sword/knife/sol, +/obj/item/melee/energy/sword/knife/sol, +/obj/item/melee/energy/sword/knife/sol, +/obj/item/gun/projectile/shotgun/pump/combat/sol, +/obj/item/gun/projectile/shotgun/pump/combat/sol, +/obj/item/gun/projectile/shotgun/pump/combat/sol, +/obj/item/gun/projectile/shotgun/pump/combat/sol, +/obj/item/storage/box/shells/incendiaryshells, +/obj/item/storage/box/shells/buckshot, +/obj/item/storage/box/shells/buckshot, +/obj/item/storage/box/shells/buckshot, +/obj/item/storage/box/shells/buckshot, +/obj/item/storage/box/shells/buckshot, +/turf/simulated/floor/reinforced, +/area/cruise/virtual_reality) "oNq" = ( /turf/simulated/floor/grass, /area/cruise/hydroponics) @@ -18243,15 +18018,6 @@ icon_state = "floor7" }, /area/cruise/fore) -"pfY" = ( -/obj/structure/flora/tree/jungle/small, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "phj" = ( /obj/effect/floor_decal/spline/fancy, /obj/machinery/door/firedoor, @@ -18274,6 +18040,16 @@ icon_state = "wood" }, /area/cruise/virtual_reality) +"phT" = ( +/obj/structure/railing/mapped, +/obj/structure/flora/grass/jungle{ + icon_state = "grassa2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "pin" = ( /obj/structure/closet/crate/bin, /obj/effect/floor_decal/industrial/outline/yellow, @@ -18345,6 +18121,20 @@ icon_state = "dark_preview" }, /area/cruise/fore) +"plT" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks1"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "pmh" = ( /obj/structure/undies_wardrobe, /turf/unsimulated/floor, @@ -18388,22 +18178,6 @@ icon_state = "dark" }, /area/cruise/jungle) -"pnl" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush"; - name = "bush"; - pixel_x = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "pnu" = ( /obj/machinery/door/airlock{ name = "Central Washroom"; @@ -18589,6 +18363,15 @@ dir = 1 }, /area/cruise/jungle) +"psD" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "psJ" = ( /obj/effect/floor_decal/corner/lime{ dir = 10 @@ -18628,14 +18411,22 @@ icon_state = "wood" }, /area/cruise/escort) -"pul" = ( -/obj/structure/bed/stool/chair/wood{ - dir = 4 +"puj" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" }, /area/cruise/jungle) "pvG" = ( @@ -18971,6 +18762,16 @@ "pMK" = ( /turf/unsimulated/floor, /area/cruise/beach_bar) +"pNI" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree3" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "pOp" = ( /obj/structure/table/stone/marble, /obj/machinery/door/window/westright, @@ -19093,6 +18894,20 @@ /obj/structure/lattice/catwalk/indoor/grate, /turf/unsimulated/floor/plating, /area/cruise/e_supplies) +"pRZ" = ( +/obj/structure/bed/stool/chair/wood{ + dir = 4 + }, +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2"; + pixel_x = 14; + pixel_y = 27 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "pSl" = ( /obj/machinery/vending/tool, /obj/structure/fireaxecabinet/west{ @@ -19442,6 +19257,15 @@ "qjQ" = ( /turf/unsimulated/floor/concrete, /area/cruise/virtual_reality) +"qjX" = ( +/obj/structure/bed/stool/chair/wood{ + dir = 4 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "qkr" = ( /obj/structure/table/wood, /obj/item/storage/box/fancy/cookiesnack, @@ -19905,15 +19729,6 @@ icon_state = "grass_stalk" }, /area/cruise/hydroponics) -"qEZ" = ( -/obj/structure/flora/tree/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "qFg" = ( /turf/unsimulated/mineral, /area/cruise/beach_cave) @@ -19987,6 +19802,20 @@ icon_state = "dark_preview" }, /area/cruise/pool) +"qIC" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A lush and healthy bush."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "bush2"; + name = "bush"; + pixel_x = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "qIG" = ( /obj/effect/floor_decal/corner/blue{ dir = 9 @@ -20139,14 +19968,6 @@ icon_state = "turquoise" }, /area/cruise/aft) -"qQP" = ( -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "qQW" = ( /obj/effect/floor_decal/corner/beige/diagonal, /obj/effect/floor_decal/industrial/outline/yellow, @@ -20172,25 +19993,6 @@ icon_state = "white" }, /area/cruise/main_bar) -"qSc" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree3" - }, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks3"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "qSo" = ( /obj/structure/table/rack, /obj/item/reagent_containers/food/snacks/muffin/berry, @@ -20465,6 +20267,15 @@ icon_state = "dark_preview" }, /area/cruise/security) +"rgQ" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "grassa2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "rhb" = ( /obj/structure/sign/flag/scc{ pixel_y = 32 @@ -20548,6 +20359,13 @@ }, /turf/unsimulated/floor, /area/cruise/e_supplies) +"rnM" = ( +/obj/structure/bed/stool/padded/red, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "rnP" = ( /obj/item/towel_flat{ color = "#ff0000" @@ -20598,6 +20416,21 @@ icon_state = "beach" }, /area/cruise/beach) +"roK" = ( +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_r"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "roY" = ( /obj/effect/floor_decal/spline/fancy{ dir = 8 @@ -20768,6 +20601,24 @@ }, /turf/template_noop, /area/template_noop) +"ruv" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree3" + }, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "ruD" = ( /turf/simulated/floor/tiled/ramp{ dir = 4 @@ -20810,6 +20661,17 @@ /obj/effect/decal/remains, /turf/unsimulated/floor/plating, /area/template_noop) +"rwz" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "rxO" = ( /obj/effect/decal/fake_object{ desc = "A descriptive sign."; @@ -21229,23 +21091,13 @@ icon_state = "freezer" }, /area/cruise/washroom_aft) -"rQF" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree3" - }, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 +"rQH" = ( +/obj/structure/flora/grass/jungle{ + pixel_y = 20 }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" + icon_state = "asteroid"; + name = "dirt" }, /area/cruise/jungle) "rRs" = ( @@ -21317,28 +21169,6 @@ icon_state = "dark_preview" }, /area/cruise/custodial_s) -"rWT" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks1"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush2"; - name = "bush"; - pixel_x = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "rXc" = ( /obj/structure/table/stone/marble, /obj/item/glass_jar{ @@ -21363,21 +21193,6 @@ icon_state = "panelscorched" }, /area/cruise/tcomms_sat) -"rXR" = ( -/obj/structure/bed/stool/chair/wood{ - dir = 4 - }, -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2"; - pixel_x = 14; - pixel_y = 27 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "rYr" = ( /obj/effect/decal{ anchored = 1; @@ -21558,15 +21373,6 @@ icon_state = "wood" }, /area/cruise/centerline) -"sey" = ( -/obj/structure/bed/stool/chair/wood, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "sfj" = ( /obj/machinery/telecomms/bus/preset_four, /turf/unsimulated/floor{ @@ -22088,16 +21894,6 @@ /obj/item/material/ashtray/bronze, /turf/unsimulated/floor, /area/cruise/beach_bar) -"sGy" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "grassa2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "sGG" = ( /turf/unsimulated/beach/coastline{ dir = 8; @@ -22119,6 +21915,15 @@ icon_state = "grass_stalk" }, /area/cruise/hydroponics) +"sGS" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "sGU" = ( /obj/effect/floor_decal/industrial/warning, /turf/unsimulated/floor{ @@ -22219,6 +22024,15 @@ icon_state = "dark" }, /area/cruise/central) +"sMH" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "sNa" = ( /obj/structure/table/wood, /obj/effect/floor_decal/corner/green/diagonal, @@ -22240,16 +22054,6 @@ icon_state = "dark_preview" }, /area/cruise/pool) -"sOe" = ( -/obj/structure/railing/mapped{ - color = "#6e472b" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "sOi" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -22272,6 +22076,21 @@ }, /turf/unsimulated/floor, /area/cruise/main_bar/aft) +"sPi" = ( +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks3"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "sPo" = ( /obj/machinery/computer/arcade/orion_trail, /obj/effect/floor_decal/industrial/outline/yellow, @@ -22742,6 +22561,26 @@ "tec" = ( /turf/simulated/wall/shuttle/idris, /area/cruise/tcomms_sat) +"teR" = ( +/obj/structure/bed/stool/chair/wood, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) +"teV" = ( +/obj/effect/decal/fake_object/light_source{ + icon = 'icons/obj/mining.dmi'; + icon_state = "purpflag_open"; + light_color = "#A97FAA"; + name = "beacon"; + pixel_y = -2 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "tfW" = ( /obj/structure/window/reinforced/crescent{ dir = 1 @@ -22958,22 +22797,6 @@ icon_state = "grass_stalk" }, /area/cruise/hydroponics) -"tpO" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks3"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "tqr" = ( /obj/item/clothing/suit/armor/tactical, /obj/item/clothing/suit/armor/tactical, @@ -23046,17 +22869,6 @@ icon_state = "wood_birch" }, /area/cruise/centerline) -"ttv" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp{ - pixel_y = 5 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "tua" = ( /turf/unsimulated/floor, /area/cruise/virtual_reality) @@ -23127,6 +22939,14 @@ icon_state = "floor7" }, /area/cruise/tcomms_sat) +"txD" = ( +/obj/structure/flora/rock, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "txV" = ( /obj/effect/floor_decal/corner/green/diagonal, /turf/unsimulated/floor{ @@ -23363,6 +23183,17 @@ icon_state = "dark_preview" }, /area/cruise/escort) +"tDp" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree2" + }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "tDB" = ( /obj/structure/lattice/catwalk/indoor/grate, /obj/machinery/light/small{ @@ -23397,6 +23228,17 @@ icon_state = "wood_birch" }, /area/cruise/jungle) +"tFW" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/grass/jungle{ + icon_state = "rock" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "tGY" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/drinkingglass{ @@ -23435,6 +23277,22 @@ icon_state = "rub_carpet" }, /area/cruise/beach) +"tId" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks2"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "tIr" = ( /obj/machinery/vending/security, /turf/unsimulated/floor{ @@ -23584,6 +23442,14 @@ }, /turf/unsimulated/floor/plating, /area/cruise/arcade) +"tNG" = ( +/obj/structure/flora/grass/jungle/b, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "tOD" = ( /obj/structure/barricade/metal{ dir = 4 @@ -23663,6 +23529,14 @@ icon_state = "plating" }, /area/cruise/tcomms_sat) +"tSu" = ( +/obj/structure/bed/stool/chair/wood, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "tTB" = ( /obj/structure/window/reinforced/crescent, /obj/structure/window/reinforced/crescent{ @@ -23834,6 +23708,22 @@ "tXV" = ( /turf/simulated/floor/wood, /area/cruise/dining_hall) +"tYe" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/effect/decal/fake_object{ + desc = "A descriptive sign."; + icon = 'icons/effects/ship_idris_cruise.dmi'; + icon_state = "sign_washroom"; + name = "washroom indicator"; + pixel_y = 32 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "tYk" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp/green, @@ -24046,6 +23936,19 @@ icon_state = "dark_preview" }, /area/cruise/pool) +"ueZ" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb2" + }, +/obj/structure/flora/grass/jungle{ + icon_state = "rock" + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "ufB" = ( /obj/structure/railing/mapped{ dir = 4 @@ -24160,6 +24063,20 @@ icon_state = "wood" }, /area/cruise/library) +"uiv" = ( +/obj/effect/decal/fake_object/light_source{ + desc = "A cozy lamp."; + icon = 'icons/effects/32x96.dmi'; + icon_state = "rustlamp_r"; + light_color = "#FA644B"; + light_range = 6; + name = "rusty lamp" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "ujg" = ( /turf/unsimulated/floor{ icon_state = "asteroid" @@ -24325,16 +24242,9 @@ icon_state = "rub_carpet" }, /area/cruise/beach) -"upB" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A lush and healthy bush."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "bush"; - name = "bush"; - pixel_x = -16 - }, +"uqs" = ( +/obj/structure/flora/grass/jungle, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; icon_state = "asteroid"; name = "dirt" }, @@ -24441,6 +24351,15 @@ icon_state = "dark_preview" }, /area/cruise/escort) +"uuG" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "uvq" = ( /obj/structure/bed/stool/chair/wood, /turf/unsimulated/floor, @@ -24656,6 +24575,13 @@ icon_state = "floor7" }, /area/cruise/pool/sauna2) +"uEa" = ( +/obj/structure/blocker, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "uEI" = ( /obj/structure/curtain/black{ icon_state = "open"; @@ -24879,6 +24805,77 @@ /obj/item/storage/box/drinkingglasses, /turf/unsimulated/floor, /area/cruise/beach_bar) +"uND" = ( +/obj/effect/floor_decal/corner/mauve/diagonal, +/obj/structure/table/stone/marble, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/box/large/produce{ + pixel_x = 3; + pixel_y = 5 + }, +/turf/unsimulated/floor{ + icon_state = "white" + }, +/area/cruise/main_bar) "uNI" = ( /obj/effect/floor_decal/corner/beige/diagonal, /obj/machinery/light{ @@ -24906,17 +24903,6 @@ icon_state = "desert" }, /area/cruise/beach) -"uQJ" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "uRy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/stool/padded/red, @@ -25154,6 +25140,14 @@ icon_state = "dark_preview" }, /area/cruise/security) +"vaK" = ( +/obj/structure/closet/crate/coffin, +/obj/item/reagent_containers/food/snacks/donut/normal/psdonut, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "vbl" = ( /obj/item/towel, /obj/effect/floor_decal/spline/fancy/wood/corner{ @@ -25202,6 +25196,18 @@ icon_state = "plating" }, /area/cruise/tcomms_sat) +"vcZ" = ( +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1"; + pixel_x = -13; + pixel_y = -14 + }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "vdd" = ( /obj/effect/overlay/palmtree_l, /turf/unsimulated/beach/sand{ @@ -25230,17 +25236,6 @@ /obj/structure/bed/stool/padded/red, /turf/unsimulated/floor/concrete, /area/cruise/pool) -"vdS" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "veA" = ( /turf/unsimulated/floor/plating, /area/cruise/pool/sauna1) @@ -25554,16 +25549,6 @@ icon_state = "beachcorner" }, /area/cruise/jungle) -"vuG" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "bushb2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "vuJ" = ( /obj/machinery/light, /turf/unsimulated/floor{ @@ -25599,6 +25584,15 @@ }, /turf/unsimulated/floor/plating, /area/cruise/pool) +"vwS" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "vxi" = ( /obj/structure/lattice/catwalk/indoor/grate, /obj/machinery/light/small{ @@ -25919,6 +25913,24 @@ icon_state = "white" }, /area/cruise/virtual_reality) +"vPg" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree3" + }, +/obj/structure/flora/tree/jungle/small{ + desc = "A pile of unassuming rocks."; + icon = 'icons/obj/flora/largejungleflora.dmi'; + icon_state = "rocks1"; + name = "rocks"; + pixel_x = -16; + pixel_y = -16 + }, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "vPo" = ( /obj/machinery/light{ dir = 8 @@ -26166,28 +26178,6 @@ icon_state = "dark_preview" }, /area/cruise/custodial_p) -"vZg" = ( -/obj/effect/decal/fake_object/light_source{ - density = 1; - icon_state = "bonfire_on_fire"; - light_color = "#FA644B"; - light_range = 6; - name = "bonfire" - }, -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "vZC" = ( /obj/effect/floor_decal/corner/blue{ dir = 5 @@ -26202,22 +26192,6 @@ "vZG" = ( /turf/simulated/wall/shuttle/idris, /area/cruise/dining_hall) -"vZS" = ( -/obj/structure/flora/grass/jungle, -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_l"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "wab" = ( /obj/effect/floor_decal/spline/fancy{ dir = 4 @@ -26255,30 +26229,6 @@ /obj/structure/bed/stool/chair/wood, /turf/unsimulated/floor, /area/cruise/virtual_reality) -"wdg" = ( -/obj/effect/decal/fake_object/light_source{ - icon = 'icons/obj/mining.dmi'; - icon_state = "purpflag_open"; - light_color = "#A97FAA"; - name = "beacon"; - pixel_y = -2 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) -"wdh" = ( -/obj/structure/flora/rock{ - icon_state = "basalt3" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "wdG" = ( /turf/unsimulated/beach/coastline{ dir = 9; @@ -26354,26 +26304,6 @@ icon_state = "dark_preview" }, /area/cruise/escort) -"wgD" = ( -/obj/effect/decal/fake_object/light_source{ - desc = "A cozy lamp."; - icon = 'icons/effects/32x96.dmi'; - icon_state = "rustlamp_r"; - light_color = "#FA644B"; - light_range = 6; - name = "rusty lamp"; - pixel_x = 8; - pixel_y = -2 - }, -/obj/structure/flora/grass/jungle{ - icon_state = "grassa2" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "wgV" = ( /obj/effect/decal/fake_object{ desc = "A descriptive arrow connected to the adjacent sign."; @@ -26653,15 +26583,6 @@ }, /turf/unsimulated/floor, /area/cruise/main_bar/aft) -"wsh" = ( -/obj/structure/closet/crate/coffin, -/obj/item/reagent_containers/food/snacks/donut/normal/psdonut, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "wsC" = ( /turf/simulated/floor/beach/water/pool, /area/cruise/main_bar/aft) @@ -27146,21 +27067,17 @@ }, /turf/unsimulated/floor, /area/cruise/beach_bar) -"wQN" = ( -/obj/structure/flora/tree/jungle, +"wPt" = ( /obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; + desc = "A lush and healthy bush."; icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 + icon_state = "bush"; + name = "bush"; + pixel_x = -16 }, /turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" + icon_state = "asteroid"; + name = "dirt" }, /area/cruise/jungle) "wRd" = ( @@ -27170,18 +27087,6 @@ icon_state = "beach" }, /area/cruise/beach_cave) -"wSg" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree2" - }, -/obj/structure/flora/grass/jungle, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon = 'icons/jungle.dmi'; - icon_state = "grass1"; - name = "lush grass" - }, -/area/cruise/jungle) "wSm" = ( /obj/effect/decal/fake_object{ color = "#ff0000"; @@ -27219,19 +27124,6 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) -"wTb" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/grass/jungle{ - icon_state = "bushb1"; - pixel_x = -13; - pixel_y = -14 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "wTt" = ( /obj/structure/railing/mapped, /obj/machinery/door/firedoor, @@ -27615,6 +27507,17 @@ }, /turf/unsimulated/floor/plating, /area/cruise/arcade) +"xkm" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree3" + }, +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "xky" = ( /obj/effect/engine_exhaust{ dir = 1; @@ -27661,6 +27564,13 @@ }, /turf/unsimulated/floor, /area/cruise/arcade) +"xlt" = ( +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "xmg" = ( /obj/structure/blocker, /turf/unsimulated/floor{ @@ -27723,16 +27633,6 @@ icon_state = "white" }, /area/cruise/medical) -"xni" = ( -/obj/structure/flora/grass/jungle{ - pixel_y = 20 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "xnP" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -28264,21 +28164,6 @@ }, /turf/unsimulated/floor, /area/cruise/main_bar/aft) -"xHn" = ( -/obj/structure/flora/tree/jungle/small{ - desc = "A pile of unassuming rocks."; - icon = 'icons/obj/flora/largejungleflora.dmi'; - icon_state = "rocks2"; - name = "rocks"; - pixel_x = -16; - pixel_y = -16 - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "xHt" = ( /obj/structure/table/reinforced/steel, /turf/unsimulated/floor{ @@ -28418,24 +28303,6 @@ }, /turf/unsimulated/floor, /area/cruise/centerline) -"xOJ" = ( -/obj/structure/table/rack, -/obj/item/melee/energy/sword/knife/sol, -/obj/item/melee/energy/sword/knife/sol, -/obj/item/melee/energy/sword/knife/sol, -/obj/item/melee/energy/sword/knife/sol, -/obj/item/gun/projectile/shotgun/pump/combat/sol, -/obj/item/gun/projectile/shotgun/pump/combat/sol, -/obj/item/gun/projectile/shotgun/pump/combat/sol, -/obj/item/gun/projectile/shotgun/pump/combat/sol, -/obj/item/storage/box/shells/incendiaryshells, -/obj/item/storage/box/shells/buckshot, -/obj/item/storage/box/shells/buckshot, -/obj/item/storage/box/shells/buckshot, -/obj/item/storage/box/shells/buckshot, -/obj/item/storage/box/shells/buckshot, -/turf/simulated/floor/reinforced, -/area/cruise/virtual_reality) "xOU" = ( /obj/effect/floor_decal/spline/fancy{ dir = 1 @@ -28515,6 +28382,14 @@ icon_state = "tiles_small" }, /area/cruise/aft_p) +"xUu" = ( +/obj/structure/flora/grass/jungle, +/turf/unsimulated/floor{ + icon = 'icons/jungle.dmi'; + icon_state = "grass1"; + name = "lush grass" + }, +/area/cruise/jungle) "xUz" = ( /obj/structure/window/reinforced/crescent, /obj/machinery/light/small, @@ -28580,16 +28455,6 @@ icon_state = "dark" }, /area/cruise/fore_p) -"xXH" = ( -/obj/structure/flora/grass/jungle{ - icon_state = "rock" - }, -/turf/unsimulated/floor{ - footstep_sound = /singleton/sound_category/grass_footstep; - icon_state = "asteroid"; - name = "dirt" - }, -/area/cruise/jungle) "xXJ" = ( /obj/structure/bed/stool/chair/folding{ dir = 4 @@ -28605,6 +28470,21 @@ icon_state = "beachcorner" }, /area/cruise/beach_cave) +"xXS" = ( +/obj/structure/table/rack, +/obj/item/storage/box/tactical/flashbangs{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/tactical/teargas{ + pixel_x = -1; + pixel_y = -4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/unsimulated/floor{ + icon_state = "dark_preview" + }, +/area/cruise/security) "xZi" = ( /obj/machinery/telecomms/server/presets/engineering, /turf/unsimulated/floor{ @@ -28712,6 +28592,16 @@ /obj/item/hullbeacon/red, /turf/unsimulated/floor, /area/template_noop) +"yew" = ( +/obj/structure/railing/mapped, +/obj/structure/flora/grass/jungle{ + icon_state = "bushb1" + }, +/turf/unsimulated/floor{ + icon_state = "asteroid"; + name = "dirt" + }, +/area/cruise/jungle) "yeJ" = ( /obj/machinery/door/window/southleft, /turf/unsimulated/floor{ @@ -50392,7 +50282,7 @@ jjH pxm pxm jjH -ndw +xXS bWr paL xSK @@ -60413,7 +60303,7 @@ osf aaU kFj iUS -lzR +uND aiT aiT lNL @@ -62679,9 +62569,9 @@ sTC feP qzh soG -gjw -cIz -aag +nnJ +jHp +hRJ onn onn cCc @@ -62936,16 +62826,16 @@ soG vbV soG soG -gjw -cLb -cLb -cLb +nnJ +hAg +hAg +hAg vfH nLU nLU geN -qQP -qQP +xlt +xlt onn qsn qsn @@ -63193,16 +63083,16 @@ pfD pfD soG hUO -dEl -lpS -tpO -cLb +xUu +hVo +sPi +hAg sDZ nLU nLU pyo -qQP -vdS +xlt +nzQ onn onn onn @@ -63214,8 +63104,8 @@ onn onn onn hUO -erg -jlw +ghi +bXz kFu dBx gEF @@ -63450,18 +63340,18 @@ pfD cqp soG hUO -vdS -qQP -qQP -cLb -fAw +nzQ +xlt +xlt +hAg +phT ruD dhz -qQP -qQP -qQP -kfK -qQP +xlt +xlt +xlt +kRg +xlt onn onn onn @@ -63471,8 +63361,8 @@ hUO hUO hUO hUO -erg -cLb +ghi +hAg onn onn onn @@ -63707,33 +63597,33 @@ pfD pfD soG hUO -qQP -qQP -brz -qQP -hrK +xlt +xlt +mcY +xlt +yew uMn uLN -qQP -qQP -qQP -qQP -qQP -qQP -qQP -qQP -qQP +xlt +xlt +xlt +xlt +xlt +xlt +xlt +xlt +xlt hUO hUO -cLb -cLb -jlw -sGy -vuG -jlw +hAg +hAg +bXz +rgQ +sMH +bXz hUO -qQP -qQP +xlt +xlt omf omf lIu @@ -63964,34 +63854,34 @@ soG soG soG hUO -qQP -qQP -qSc -qQP -sGy -cLb -jlw -qQP -qQP -qQP -isP -kfK -qQP -qQP -ixz -qQP +xlt +xlt +oCI +xlt +rgQ +hAg +bXz +xlt +xlt +xlt +pNI +kRg +xlt +xlt +hHP +xlt hUO -cLb -jlw +hAg +bXz hUO -aaC -erg -erg -cLb +qIC +ghi +ghi +hAg hUO hUO -qQP -qQP +xlt +xlt omf omf asj @@ -64221,35 +64111,35 @@ hUO hUO hUO hUO -pfY -tpO -qQP -qQP -kfK -cLb -sGy -qQP -qQP -qQP -qQP -qQP -qQP -jlw -kBn -cLb +gIk +sPi +xlt +xlt +kRg +hAg +rgQ +xlt +xlt +xlt +xlt +xlt +xlt +bXz +uqs +hAg hUO -cLb +hAg hUO hUO -erg -erg -cLb -vuG -jlw +ghi +ghi +hAg +sMH +bXz hUO hUO -qQP -qQP +xlt +xlt omf omf lIu @@ -64475,39 +64365,39 @@ omf omf hUO hUO -vdS -qQP +nzQ +xlt hUO -qQP -qQP -qQP -qQP -lpS -kCY -cLb -sGy -sGy -sGy -sGy -sGy -jlw -cLb -sGy -cLb +xlt +xlt +xlt +xlt +hVo +sGS +hAg +rgQ +rgQ +rgQ +rgQ +rgQ +bXz +hAg +rgQ +hAg hUO -cLb +hAg hUO hUO hUO -qQP -cLb -erg -cLb +xlt +hAg +ghi +hAg hUO hUO -qQP -qQP -ixz +xlt +xlt +hHP omf omf oSt @@ -64729,43 +64619,43 @@ oSt oSt omf omf -dEl -dEl -qQP -dEl -dEl +xUu +xUu +xlt +xUu +xUu hUO -dEl -dEl -dEl -uQJ -cLb -cLb -kCY -cLb -vuG -cLb -cLb -jlw -cLb -qQP -qQP -upB -kBn -jlw +xUu +xUu +xUu +nVi +hAg +hAg +sGS +hAg +sMH +hAg +hAg +bXz +hAg +xlt +xlt +wPt +uqs +bXz hUO onn onn onn -dMa -qQP -cLb +uuG +xlt +hAg hUO hUO -jlw -hBy -hBy -nSK +bXz +rnM +rnM +cgF omf omf oSt @@ -64985,45 +64875,45 @@ oSt oSt omf omf -mtj -vdS -qQP -qQP -dEl -wSg -dEl -qQP -qQP -dEl -cLb -cLb -cLb -qQP -jtU -qQP -qQP -qQP -cLb -cLb -qQP -aJa -qQP -sGy -qQP +bFj +nzQ +xlt +xlt +xUu +rwz +xUu +xlt +xlt +xUu +hAg +hAg +hAg +xlt +uiv +xlt +xlt +xlt +hAg +hAg +xlt +vPg +xlt +rgQ +xlt hUO onn iRQ gAl -dMa -cLb -sGy +uuG +hAg +rgQ hUO hUO -kCY -ttv -cIz -hBy -qQP +sGS +ckz +jHp +rnM +xlt omf omf asj @@ -65241,47 +65131,47 @@ oSt oSt oSt omf -dQM -qQP -qQP -qQP -qQP -wSg -dEl -qQP -kCY -ixz -kBn -jlw -kCY -qQP +tNG +xlt +xlt +xlt +xlt +rwz +xUu +xlt +sGS +hHP +uqs +bXz +sGS +xlt hUO hUO -aaC -qQP -pfY -cLb -cLb -cLb -qQP -dUV -cLb -kBn +qIC +xlt +gIk +hAg +hAg +hAg +xlt +txD +hAg +uqs hUO onn onn onn -otm -qQP -cLb +tYe +xlt +hAg hUO -qQP -hBy -eYb -eYb -cLb -dEl -qQP +xlt +rnM +nCg +nCg +hAg +xUu +xlt omf asj oSt @@ -65498,47 +65388,47 @@ oSt oSt omf omf -dEl -vdS -qQP -qQP -qQP -dEl -dEl -qQP -pul -kBn -pul -cLb -qQP +xUu +nzQ +xlt +xlt +xlt +xUu +xUu +xlt +qjX +uqs +qjX +hAg +xlt hUO hUO hUO hUO -uQJ -qQP -tpO -cLb -jlw -cLb -kBn -cLb -cLb +nVi +xlt +sPi +hAg +bXz +hAg +uqs +hAg +hAg hUO onn pPQ kVS -dMa -qQP -cLb -qQP -dEl -kBn -hBy -hBy -kCY -qQP -lpS +uuG +xlt +hAg +xlt +xUu +uqs +rnM +rnM +sGS +xlt +hVo omf onn omf @@ -65754,49 +65644,49 @@ oSt oSt oSt omf -dEl -dEl -qQP -qQP -qQP -qQP -dEl -mYa -dEl -gqC -cLb -cLb -ojR -qQP -nTq +xUu +xUu +xlt +xlt +xlt +xlt +xUu +xkm +xUu +teR +hAg +hAg +feb +xlt +uEa qWo -wsh +vaK hUO -qQP -qQP -isP -qQP -cLb -jlw -cLb -cLb -qQP +xlt +xlt +pNI +xlt +hAg +bXz +hAg +hAg +xlt hUO onn onn onn -akd -qQP -vuG -cLb -dEl -dEl -qQP -jtU -cLb -dEl -vdS -kfK +bBo +xlt +sMH +hAg +xUu +xUu +xlt +uiv +hAg +xUu +nzQ +kRg fAU asw onn @@ -66011,49 +65901,49 @@ oSt oSt omf omf -dEl -qQP -qQP -qQP -uQJ -qQP -dEl -dEl -wSg -cLb -vZg -cLb -kCY -qQP +xUu +xlt +xlt +xlt +nVi +xlt +xUu +xUu +rwz +hAg +cLV +hAg +sGS +xlt hUO hUO hUO hUO hUO -qQP -uQJ -dlP -cLb -cLb -jlw -aaC -qQP +xlt +nVi +mKh +hAg +hAg +bXz +qIC +xlt hUO hUO hUO hUO -kfK -qQP -cLb -cLb -gBq -dEl -kfK -qQP -jlw -kfK -dEl -fJY +kRg +xlt +hAg +hAg +psD +xUu +kRg +xlt +bXz +kRg +xUu +mRf klL nLU sVV @@ -66267,48 +66157,48 @@ oSt oSt oSt omf -dEl -qQP -dEl -pfY -cLb -cLb -cLb -kBn -kBn -kBn -jlw -cLb -cLb -hBy -dEl -vdS -dFf -vdS -qQP -qQP -vdS -qQP -qQP -qQP -cLb -kBn -erg -qQP -vdS +xUu +xlt +xUu +gIk +hAg +hAg +hAg +uqs +uqs +uqs +bXz +hAg +hAg +rnM +xUu +nzQ +dUY +nzQ +xlt +xlt +nzQ +xlt +xlt +xlt +hAg +uqs +ghi +xlt +nzQ hUO hUO -tpO -dFf -qQP -qQP -kBn -kBn -kBn -cLb -cLb -cLb -jlw +sPi +dUY +xlt +xlt +uqs +uqs +uqs +hAg +hAg +hAg +bXz bkh jsv nLU @@ -66524,48 +66414,48 @@ oSt oSt oSt omf -kCY -xXH -xHn -cLb -kBn -qQP -lpS -qQP -uQJ -dFf -kCY -iHu -iHu -cLb -qQP -qQP -qQP -qQP -qQP -qQP -qQP -qQP -qQP -lpS -cLb -kCY -vZS -qQP -qQP -kfK +sGS +bQX +eXj +hAg +uqs +xlt +hVo +xlt +nVi +dUY +sGS +ecj +ecj +hAg +xlt +xlt +xlt +xlt +xlt +xlt +xlt +xlt +xlt +hVo +hAg +sGS +iIK +xlt +xlt +kRg hUO -kfK -qQP -qQP -kCY -cLb -cLb -cLb -cLb -jlw -cLb -cLb +kRg +xlt +xlt +sGS +hAg +hAg +hAg +hAg +bXz +hAg +hAg prY lhn nLU @@ -66783,48 +66673,48 @@ oSt omf dZt dZt -cLb -jlw -qQP -qQP +hAg +bXz +xlt +xlt hUO hUO hUO -qQP -cLb -haX -kBn -kBn -qQP -vdS -qQP -sGy -dou -cLb -qQP -lpS -qQP -qQP -jlw -cLb -vuG -qQP -qQP -qQP -qQP -qQP -qQP -kBn -cLb -cLb -cLb -kBn -kBn -dQM -qQP -dEl -qQP -lXH +xlt +hAg +hbo +uqs +uqs +xlt +nzQ +xlt +rgQ +plT +hAg +xlt +hVo +xlt +xlt +bXz +hAg +sMH +xlt +xlt +xlt +xlt +xlt +xlt +uqs +hAg +hAg +hAg +uqs +uqs +tNG +xlt +xUu +xlt +jyW klL nLU sVV @@ -67041,47 +66931,47 @@ omf bHf aYO dZt -cLb -kBn -dEl +hAg +uqs +xUu hUO hUO hUO -vdS -qQP -qQP -dEl -dEl -qQP -qQP -sGy -cLb +nzQ +xlt +xlt +xUu +xUu +xlt +xlt +rgQ +hAg cun -cLb -eak -jlw -cLb -lpS -kCY -cLb -cLb -dEl -aaC -dEl -qQP -jlw -cLb -cLb -kBn -kBn -jtU -qQP -qQP -pfY -jOH -qQP -dQM -vdS +hAg +bAf +bXz +hAg +hVo +sGS +hAg +hAg +xUu +qIC +xUu +xlt +bXz +hAg +hAg +uqs +uqs +uiv +xlt +xlt +gIk +ueZ +xlt +tNG +nzQ sZT hSd onn @@ -67298,47 +67188,47 @@ nTu pnc dfq htw -vZS -kBn -dEl +iIK +uqs +xUu hUO hUO -nTq -qQP -dEl -qQP -qQP -pfY -qQP -tpO -cLb +uEa +xlt +xUu +xlt +xlt +gIk +xlt +sPi +hAg cBi dZt cun cun lDe -kBn -cLb -kBn -cLb -cLb -jlw -dEl -qQP -kBn -cLb -cLb -kCY -joZ -gTK -gTK -gTK -epX -dlP -qQP -qQP -jwi -qQP +uqs +hAg +uqs +hAg +hAg +bXz +xUu +xlt +uqs +hAg +hAg +sGS +hkJ +lUZ +lUZ +lUZ +tFW +mKh +xlt +xlt +btA +xlt onn omf onn @@ -67556,37 +67446,37 @@ pnc fYO uZF gKA -aXk -qQP +kgK +xlt hUO hUO hUO -qQP -pnl -dEl -gYk -qQP -vdS -kCY -cLb +xlt +obS +xUu +nGr +xlt +nzQ +sGS +hAg dZt vuo bHf kJv hNH hao -cLb -rWT -cLb -kCY -cLb -cLb -cLb -cLb -kCY -qQP -qQP -dlP +hAg +niy +hAg +sGS +hAg +hAg +hAg +hAg +sGS +xlt +xlt +mKh hUO hUO hUO @@ -67594,10 +67484,10 @@ hUO hUO hUO hUO -dlP -joZ -joZ -gTK +mKh +hkJ +hkJ +lUZ omf oSt lIu @@ -67813,19 +67703,19 @@ pnc pnc dfq pyG -jlw -dQM +bXz +tNG hUO hUO hUO -qQP -dEl -dEl -dEl -qQP -qQP -vuG -lTe +xlt +xUu +xUu +xUu +xlt +xlt +sMH +ljb cun ixn pnc @@ -67834,15 +67724,15 @@ kJv cun cun cun -cLb -cLb -cLb -kBn -kCY -kBn -upB -aaC -joZ +hAg +hAg +hAg +uqs +sGS +uqs +wPt +qIC +hkJ hUO hUO hUO @@ -68070,18 +67960,18 @@ pnc pnc dfq dZt -jlw -qQP +bXz +xlt hUO hUO hUO -ccf -qQP -vdS -qQP -dFf -qQP -cLb +eOV +xlt +nzQ +xlt +dUY +xlt +hAg fBw cun ixn @@ -68091,14 +67981,14 @@ fYO kJv cun cun -dou -cLb -cLb -dEl -nxB -vdS -jlw -joZ +plT +hAg +hAg +xUu +tDp +nzQ +bXz +hkJ hUO hUO hUO @@ -68327,18 +68217,18 @@ pnc pnc dfq mZW -cLb -dEl +hAg +xUu hUO hUO hUO -qQP -dEl -dEl -qQP -qQP -qQP -fGi +xlt +xUu +xUu +xlt +xlt +xlt +cgB cun wZV ixn @@ -68349,12 +68239,12 @@ sXr kJv cun htw -cLb -cLb -qQP -dEl -dEl -lpS +hAg +hAg +xlt +xUu +xUu +hVo hUO hUO hUO @@ -68584,18 +68474,18 @@ pnc pnc dfq dZt -jlw -dEl -nTq +bXz +xUu +uEa hUO hUO -vdS -dEl -dEl -lpS -qQP -qQP -kCY +nzQ +xUu +xUu +hVo +xlt +xlt +sGS cun wZV ixn @@ -68607,10 +68497,10 @@ cAb kiu tFS tFS -jlw -dEl -dEl -dlP +bXz +xUu +xUu +mKh hUO hUO hUO @@ -68618,12 +68508,12 @@ hUO hUO hUO hUO -dlP -dFf -qEZ -dFf -dlP -igm +mKh +dUY +nRP +dUY +mKh +puj hUO hUO onn @@ -68841,19 +68731,19 @@ pnc pnc iok cun -cLb -dEl +hAg +xUu hUO hUO hUO -qQP -qQP -dEl -dEl -qQP -qQP -cLb -gnW +xlt +xlt +xUu +xUu +xlt +xlt +hAg +gXb cun ixn pnc @@ -68864,23 +68754,23 @@ daI hph nLU nLU -cLb -jlw -jlw -lXB +hAg +bXz +bXz +cqB hUO hUO hUO hUO hUO hUO -uQJ -isP -qQP -qQP -lpS -qQP -qQP +nVi +pNI +xlt +xlt +hVo +xlt +xlt hUO hUO onn @@ -69098,19 +68988,19 @@ pnc ovC ijB cun -cho -dEl +ejf +xUu hUO hUO hUO -dEl -qQP -dEl -gBq -qQP -qQP -uQJ -cLb +xUu +xlt +xUu +psD +xlt +xlt +nVi +hAg cun ixn pnc @@ -69121,23 +69011,23 @@ nQg nLU nLU dHr -kBn -kBn -cLb -jlw +uqs +uqs +hAg +bXz hUO hUO hUO hUO hUO -pfY -kBn -bzs -rXR -dEl -qQP -qQP -fsh +gIk +uqs +hhh +pRZ +xUu +xlt +xlt +gjU hUO hUO onn @@ -69354,20 +69244,20 @@ xqn pnc dfq pyG -jtU -qQP -qQP +uiv +xlt +xlt hUO hUO hUO -uQJ -dEl -qQP -qQP -qQP -qQP -qQP -kCY +nVi +xUu +xlt +xlt +xlt +xlt +xlt +sGS pyG sqA sWm @@ -69378,22 +69268,22 @@ kmY gMu gMu vWC -dEl -dEl -kBn -aXk +xUu +xUu +uqs +kgK hUO hUO hUO hUO hUO -gTo -sey -xni -cLb -hBy -aLK -lpS +nLD +tSu +rQH +hAg +rnM +elz +hVo hUO hUO hUO @@ -69611,21 +69501,21 @@ omf rrZ ijB dZt -kBn -qQP -qQP +uqs +xlt +xlt hUO hUO hUO -qQP -qQP -dEl -lpS -dQM -qQP -lpS -jlw -jlw +xlt +xlt +xUu +hVo +tNG +xlt +hVo +bXz +bXz bOz sqA sWm @@ -69633,24 +69523,24 @@ pnc pnc dfq cun -cPE -cLb -qQP -lpS -kBn -cLb +dUa +hAg +xlt +hVo +uqs +hAg hUO hUO hUO hUO hUO -kJz -gqC -xni -vZg -cLb -bRs -tpO +vwS +teR +rQH +cLV +hAg +bmo +sPi hUO hUO onn @@ -69867,47 +69757,47 @@ oSt omf dZt cun -jlw -fqE -qQP -qQP +bXz +ibL +xlt +xlt hUO hUO hUO -qQP -pfY -qQP -dEl -dEl -uQJ -qQP -qQP -jlw -mte +xlt +gIk +xlt +xUu +xUu +nVi +xlt +xlt +bXz +gTu cun sqA rrZ rrZ ijB cun -mEF -qQP -qQP +mVb +xlt +xlt hUO -gnW -cLb +gXb +hAg hUO hUO hUO hUO hUO -dFf -dEl -xni -cLb -cLb -cLg -lpS +dUY +xUu +rQH +hAg +hAg +enR +hVo hUO hUO onn @@ -70122,49 +70012,49 @@ oSt oSt oSt omf -cLb -gnW -kBn -mEF -jlw +hAg +gXb +uqs +mVb +bXz hUO hUO -nTq +uEa hUO hUO -cLb -kBn -kBn -kBn -qQP -qQP -qQP -qEZ -jlw +hAg +uqs +uqs +uqs +xlt +xlt +xlt +nRP +bXz ave cun frp cun pdS -kBn -cLb -qQP +uqs +hAg +xlt hUO hUO -cLb -cLb +hAg +hAg hUO hUO hUO hUO hUO -dlP -gfh -bJl -iHu -izD -qQP -jwi +mKh +hLi +kCI +ecj +vcZ +xlt +btA hUO hUO onn @@ -70379,48 +70269,48 @@ oSt oSt oSt omf -kBn -kBn -cLb -cLb -jlw -cLb -cLb -cLb -jlw -cLb -cLb -ciG -kBn -kBn -cLb -qQP -qQP -vdS -wTb -cLb -xHn -wdh -kCY -cLb -cLb -qQP -lfz +uqs +uqs +hAg +hAg +bXz +hAg +hAg +hAg +bXz +hAg +hAg +aRz +uqs +uqs +hAg +xlt +xlt +nzQ +fIr +hAg +eXj +gaW +sGS +hAg +hAg +xlt +roK hUO hUO -xHn -cLb -jlw -ixz +eXj +hAg +bXz +hHP hUO hUO hUO -dlP -dUV -erg -kBn -kBn -dEl +mKh +txD +ghi +uqs +uqs +xUu hUO hUO hUO @@ -70637,48 +70527,48 @@ oSt oSt omf omf -cLb -lcS -cLb -qQP -cLb -jlw -wdg -cLb -cLb -qQP -dEl -pfY -cLb -cLb -kCY -dQM -qQP -wgD -cLb -cLb -cLb -sGy +hAg +lrt +hAg +xlt +hAg +bXz +teV +hAg +hAg +xlt +xUu +gIk +hAg +hAg +sGS +tNG +xlt +nGu +hAg +hAg +hAg +rgQ hUO hUO hUO hUO hUO hUO -aXk -cLb -cLb -qQP -dlP +kgK +hAg +hAg +xlt +mKh hUO hUO hUO -dlP -qQP -sGy -erg -gTK -dlP +mKh +xlt +rgQ +ghi +lUZ +mKh hUO onn onn @@ -70894,10 +70784,10 @@ oSt oSt oSt omf -qQP -qQP -jlw -qQP +xlt +xlt +bXz +xlt hUO hUO hUO @@ -70905,13 +70795,13 @@ hUO hUO hUO hUO -qQP -dEl -ciG -kBn -kBn -vdS -fvN +xlt +xUu +aRz +uqs +uqs +nzQ +cCB her jMW wli @@ -70923,19 +70813,19 @@ hUO hUO hUO hUO -cLb -cLb -jlw -qQP +hAg +hAg +bXz +xlt hUO hUO hUO hUO hUO -xXH -qQP -qQP -qQP +bQX +xlt +xlt +xlt hUO onn oSt @@ -71152,23 +71042,23 @@ oSt oSt omf omf -vdS -cLb -cLb -dEl -vdS +nzQ +hAg +hAg +xUu +nzQ hUO hUO hUO hUO hUO hUO -dEl -dEl -kBn -kBn -sGy -sOe +xUu +xUu +uqs +uqs +rgQ +gXt leB nRv vKK @@ -71180,19 +71070,19 @@ uDB rcq hDo hUO -aXk -cLb -cLb -lpS +kgK +hAg +hAg +hVo hUO hUO -aXk -ojz -sGy -cLb -erg -qQP -gTK +kgK +dgS +rgQ +hAg +ghi +xlt +lUZ hUO onn oSt @@ -71409,23 +71299,23 @@ oSt oSt oSt omf -qQP -vdS -jlw -cLb -gqC -jlw -cLb -jlw +xlt +nzQ +bXz +hAg +teR +bXz +hAg +bXz hUO hUO hUO -dEl -kBn -kBn -mHP -cLb -fvN +xUu +uqs +uqs +nTH +hAg +cCB oYb qUf ont @@ -71438,17 +71328,17 @@ oYb obI cJJ mXZ -cLb -sGy -erg +hAg +rgQ +ghi hUO hUO -cLb -qQP -qQP -qQP -qQP -joZ +hAg +xlt +xlt +xlt +xlt +hkJ hUO hUO onn @@ -71667,22 +71557,22 @@ oSt oSt omf omf -qQP -jwi -kBn -cLb -cLb -vZg -cLb +xlt +btA +uqs +hAg +hAg +cLV +hAg hUO hUO hUO hUO -cLb -jlw +hAg +bXz hUO -kCY -cLb +sGS +hAg rte oYb sSL @@ -71695,13 +71585,13 @@ cLH qUf voy tJO -jlw -qQP -pfY +bXz +xlt +gIk hUO hUO -cLb -joZ +hAg +hkJ hUO hUO hUO @@ -71925,18 +71815,18 @@ oSt oSt omf omf -qQP -cLb -gqC -cLb -cLb -cLb +xlt +hAg +teR +hAg +hAg +hAg hUO hUO hUO -nTq -cLb -cLb +uEa +hAg +hAg hUO hUO hUO @@ -71951,17 +71841,17 @@ fBs wON uRy hUO -aXk -sGy -erg -erg +kgK +rgQ +ghi +ghi hUO hUO -cLb -qQP -qQP -erg -aag +hAg +xlt +xlt +ghi +hRJ hUO onn onn @@ -72183,17 +72073,17 @@ oSt oSt omf omf -cLb -kCY -iHu -iHu -kCY -cLb -qQP +hAg +sGS +ecj +ecj +sGS +hAg +xlt hUO hUO -cLb -jlw +hAg +bXz hUO hUO hUO @@ -72208,18 +72098,18 @@ wON gLF bZF omf -cLb -cLb -erg -erg -erg -qQP -aXk -qQP -joZ -cLb -cLb -cLb +hAg +hAg +ghi +ghi +ghi +xlt +kgK +xlt +hkJ +hAg +hAg +hAg omf vqj oSt @@ -72441,22 +72331,22 @@ oSt oSt omf omf -cLb -cLb -jlw -cLb -kBn -qQP -qEZ +hAg +hAg +bXz +hAg +uqs +xlt +nRP hUO -cLb -cLb +hAg +hAg hUO -qQP -pfY -dXc +xlt +gIk +jRm xGq -cLb +hAg hUO hUO hUO @@ -72465,18 +72355,18 @@ sSL cLH wYV omf -nTq -cLb -erg -joZ +uEa +hAg +ghi +hkJ hUO hUO -xHn -aXk -nTq +eXj +kgK +uEa hUO -cLb -cLb +hAg +hAg omf vqj oSt @@ -72699,23 +72589,23 @@ oSt oSt omf omf -qQP -qQP -qQP -cLb -cLb -cLb -qQP -jlw -cLb -erg -qQP -qQP -erg -cLb -cLb -cLb -dxO +xlt +xlt +xlt +hAg +hAg +hAg +xlt +bXz +hAg +ghi +xlt +xlt +ghi +hAg +hAg +hAg +ofG hUO taC cUc @@ -72723,17 +72613,17 @@ hUO hUO hUO hUO -cLb -qQP -qQP +hAg +xlt +xlt hUO hUO hUO hUO hUO hUO -aXk -sGy +kgK +rgQ omf vqj oSt @@ -72957,34 +72847,34 @@ oSt oSt omf omf -qQP -qQP -qQP -dEl -kBn -cLb -cLb -cLb -jlw -cLb -cLb -lJJ -cLb -qQP -pfY -qQP -lpS -qQP -jlw +xlt +xlt +xlt +xUu +uqs +hAg +hAg +hAg +bXz +hAg +hAg +iKc +hAg +xlt +gIk +xlt +hVo +xlt +bXz hUO hUO hUO -joZ -cLb -sGy -cLb -cLb -sGy +hkJ +hAg +rgQ +hAg +hAg +rgQ hUO hUO hUO @@ -73215,35 +73105,35 @@ oSt oSt omf omf -qQP -qQP -pfY -qQP -qQP -cLb -cLb -cLb -lpS -jlw -cLb -cLb -jlw -cLb -cLb -cLb -cLb -cLb -cLb -jlw -cLb -cLb -cLb -qQP -jtU +xlt +xlt +gIk +xlt +xlt +hAg +hAg +hAg +hVo +bXz +hAg +hAg +bXz +hAg +hAg +hAg +hAg +hAg +hAg +bXz +hAg +hAg +hAg +xlt +uiv hUO -cLb -cLb -aXk +hAg +hAg +kgK hUO onn sOi @@ -73473,34 +73363,34 @@ oSt oSt omf omf -qQP -qQP -qQP -qQP -qQP -wQN -qQP -qQP -qQP -erg -erg -vdS -qQP -lpS -vdS -qQP -dQM -qQP -qQP -qQP -pfY -qQP -erg +xlt +xlt +xlt +xlt +xlt +tId +xlt +xlt +xlt +ghi +ghi +nzQ +xlt +hVo +nzQ +xlt +tNG +xlt +xlt +xlt +gIk +xlt +ghi hUO hUO -gqC -cLb -gdM +teR +hAg +nqg hUO onn qsn @@ -73732,32 +73622,32 @@ oSt omf omf omf -qQP -qQP -qQP -qQP -qQP -jwi -qQP -qQP -qQP -qQP -qQP -qQP -qQP -pfY -qQP -lpS -qQP -qQP -qQP -joZ -qQP +xlt +xlt +xlt +xlt +xlt +btA +xlt +xlt +xlt +xlt +xlt +xlt +xlt +gIk +xlt +hVo +xlt +xlt +xlt +hkJ +xlt hUO hUO -xXH -cLb -upB +bQX +hAg +wPt hUO onn qsn @@ -73991,25 +73881,25 @@ oSt omf omf omf -qQP -qQP -qQP -qQP -qQP -qQP -qQP -rQF -vdS -vdS -qQP -erg -cLb +xlt +xlt +xlt +xlt +xlt +xlt +xlt +ruv +nzQ +nzQ +xlt +ghi +hAg hUO hUO hUO -qQP -lpS -qQP +xlt +hVo +xlt hUO onn omf @@ -74252,15 +74142,15 @@ omf omf omf omf -qQP -qQP -qQP -qQP -qQP -erg -qQP -cLb -haX +xlt +xlt +xlt +xlt +xlt +ghi +xlt +hAg +hbo onn onn onn @@ -80257,7 +80147,7 @@ oSt tnn tnn xeN -mOf +kRC fRP bAE xeN @@ -80592,7 +80482,7 @@ dzw dzw oog sGm -jgQ +kJu rzU oog luH @@ -80848,7 +80738,7 @@ oog dzw dzw hwP -xOJ +oMn dzw rzU oog @@ -81105,7 +80995,7 @@ oog dzw dzw hwP -xOJ +oMn dzw rzU oog @@ -81362,7 +81252,7 @@ oog dzw dzw hwP -xOJ +oMn dzw rzU hwP @@ -81619,7 +81509,7 @@ kPa dzw dzw oog -xOJ +oMn dzw rzU oog @@ -87788,7 +87678,7 @@ dzw dzw oog sGm -jgQ +kJu iYa oog luH diff --git a/maps/random_ruins/exoplanets/konyang/swamp_4.dmm b/maps/random_ruins/exoplanets/konyang/swamp_4.dmm index f777ba579c6..957d4dcc35d 100644 --- a/maps/random_ruins/exoplanets/konyang/swamp_4.dmm +++ b/maps/random_ruins/exoplanets/konyang/swamp_4.dmm @@ -1,11 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"al" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 6 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/exoplanet/grass/konyang) "aH" = ( /obj/structure/lattice/catwalk/indoor/planks, /obj/structure/rope_post, @@ -37,6 +30,13 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) +"dm" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 6 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/exoplanet/grass/konyang) "dD" = ( /obj/structure/flora/bush/konyang_reeds, /turf/simulated/floor/exoplanet/konyang/wilting, @@ -75,12 +75,6 @@ "hM" = ( /turf/template_noop, /area/space) -"ia" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/exoplanet/grass/konyang) "if" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/reedbush, @@ -99,10 +93,10 @@ /mob/living/simple_animal/aquatic/fish/cod, /turf/simulated/floor/exoplanet/water/shallow/konyang, /area/exoplanet/grass/konyang) -"jZ" = ( +"jD" = ( /obj/effect/step_trigger/thrower{ tiles = 1; - dir = 5 + dir = 8 }, /turf/simulated/floor/exoplanet/water/konyang, /area/exoplanet/grass/konyang) @@ -110,13 +104,6 @@ /obj/item/stack/material/wood/branch/full, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) -"kY" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 9 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/exoplanet/grass/konyang) "kZ" = ( /obj/structure/flora/bush/konyang_reeds, /turf/simulated/floor/exoplanet/konyang/wilting, @@ -133,6 +120,13 @@ }, /turf/simulated/floor/exoplanet/konyang/pink, /area/konyang_swamp_4) +"mX" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 4 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/exoplanet/grass/konyang) "nA" = ( /obj/random/dirt_75, /obj/structure/bed/stool/chair/folding{ @@ -140,13 +134,6 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) -"nU" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 1 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/exoplanet/grass/konyang) "ot" = ( /turf/simulated/floor/exoplanet/dirt_konyang, /area/exoplanet/grass/konyang) @@ -174,15 +161,6 @@ /obj/structure/flora/rock/konyang/moss, /turf/simulated/floor/exoplanet/konyang, /area/exoplanet/grass/konyang) -"qA" = ( -/obj/machinery/media/jukebox{ - anchored = 1; - pixel_x = 20; - density = 0; - pixel_y = 2 - }, -/turf/simulated/floor/exoplanet/dirt_konyang, -/area/konyang_swamp_4) "qQ" = ( /obj/structure/flora/rock/konyang/moss, /turf/simulated/floor/exoplanet/konyang/wilting, @@ -192,10 +170,10 @@ /obj/effect/floor_decal/konyang_flowers, /turf/simulated/floor/exoplanet/konyang, /area/konyang_swamp_4) -"rG" = ( +"rz" = ( /obj/effect/step_trigger/thrower{ tiles = 1; - dir = 4 + dir = 9 }, /turf/simulated/floor/exoplanet/water/konyang, /area/exoplanet/grass/konyang) @@ -226,6 +204,13 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) +"tS" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 10 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/exoplanet/grass/konyang) "ux" = ( /obj/structure/rope_post{ dir = 4 @@ -380,13 +365,6 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) -"Dr" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 10 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/exoplanet/grass/konyang) "DL" = ( /mob/living/simple_animal/aquatic/fish, /turf/simulated/floor/exoplanet/water/shallow/konyang, @@ -416,13 +394,6 @@ /obj/structure/flora/bush/konyang_reeds, /turf/simulated/floor/exoplanet/konyang, /area/exoplanet/grass/konyang) -"FK" = ( -/obj/effect/step_trigger/thrower{ - tiles = 1; - dir = 8 - }, -/turf/simulated/floor/exoplanet/water/konyang, -/area/exoplanet/grass/konyang) "FP" = ( /obj/structure/table/wood/bamboo, /obj/item/material/twohanded/spear/steel, @@ -432,6 +403,15 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) +"Gs" = ( +/obj/machinery/media/jukebox{ + anchored = 1; + pixel_x = 20; + density = 0; + pixel_y = 2 + }, +/turf/simulated/floor/exoplanet/dirt_konyang, +/area/konyang_swamp_4) "GB" = ( /turf/simulated/floor/exoplanet/konyang, /area/exoplanet/grass/konyang) @@ -466,6 +446,13 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/exoplanet/konyang, /area/exoplanet/grass/konyang) +"Jh" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 5 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/exoplanet/grass/konyang) "JJ" = ( /obj/structure/lattice/catwalk/indoor/planks, /obj/structure/rope_post{ @@ -612,6 +599,13 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) +"Vb" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1; + dir = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/exoplanet/grass/konyang) "Vx" = ( /turf/simulated/floor/exoplanet/konyang/wilting, /area/konyang_swamp_4) @@ -686,6 +680,12 @@ }, /turf/simulated/floor/exoplanet/dirt_konyang, /area/konyang_swamp_4) +"Zs" = ( +/obj/effect/step_trigger/thrower{ + tiles = 1 + }, +/turf/simulated/floor/exoplanet/water/konyang, +/area/exoplanet/grass/konyang) "ZG" = ( /obj/structure/lattice/catwalk/indoor/planks/stairs{ dir = 4 @@ -1408,14 +1408,14 @@ cZ cZ cZ cZ -FK -FK -FK +jD +jD +jD cZ cZ -FK -FK -Dr +jD +jD +tS cZ cZ cZ @@ -1459,19 +1459,19 @@ sF cZ cZ cZ -kY -FK -kY +rz +jD +rz Oz -Dr -FK -FK -kY +tS +jD +jD +rz Oz -Dr -FK -FK -Dr +tS +jD +jD +tS cZ cZ cZ @@ -1511,8 +1511,8 @@ sF cZ cZ cZ -kY -kY +rz +rz Oz Oz Oz @@ -1524,10 +1524,10 @@ Oz Oz Oz Oz -Dr -FK -FK -Dr +tS +jD +jD +tS cZ cZ cZ @@ -1563,8 +1563,8 @@ sF cZ cZ cZ -kY -kY +rz +rz Oz Oz Oz @@ -1580,8 +1580,8 @@ Oz Oz Oz Oz -Dr -Dr +tS +tS cZ cZ cZ @@ -1615,8 +1615,8 @@ cZ sF fl cZ -nU -kY +Vb +rz Oz Oz Oz @@ -1634,8 +1634,8 @@ Oz Oz Oz Oz -Dr -Dr +tS +tS cZ cZ cZ @@ -1668,7 +1668,7 @@ sF sF cZ cZ -nU +Vb Oz Oz Oz @@ -1688,7 +1688,7 @@ Oz Oz Oz Oz -ia +Zs cZ cZ cZ @@ -1720,8 +1720,8 @@ sF sF cZ cZ -nU -kY +Vb +rz Oz Oz Oz @@ -1741,8 +1741,8 @@ Oz Oz Oz Oz -Dr -ia +tS +Zs cZ cZ cZ @@ -1773,7 +1773,7 @@ cZ sF cZ cZ -nU +Vb Oz Oz Oz @@ -1795,8 +1795,8 @@ Oz Oz Oz Oz -Dr -ia +tS +Zs cZ Sw cZ @@ -1826,7 +1826,7 @@ cZ sF fl cZ -nU +Vb Oz Oz Oz @@ -1849,7 +1849,7 @@ Oz Oz Oz Oz -ia +Zs cZ cc es @@ -1879,8 +1879,8 @@ sF sF cZ cZ -nU -jZ +Vb +Jh Oz Oz Oz @@ -1902,7 +1902,7 @@ Oz Oz Oz Oz -ia +Zs cZ YE es @@ -1933,7 +1933,7 @@ cZ cZ cZ cZ -nU +Vb Oz Oz Oz @@ -1955,7 +1955,7 @@ Oz Oz Oz Oz -ia +Zs cZ Cs cZ @@ -1986,8 +1986,8 @@ sF sF cZ cZ -nU -jZ +Vb +Jh Oz Oz Oz @@ -2007,8 +2007,8 @@ Oz Oz Oz Oz -al -ia +dm +Zs cZ cZ cZ @@ -2040,8 +2040,8 @@ sF sF jB cZ -nU -jZ +Vb +Jh Oz Oz Oz @@ -2060,7 +2060,7 @@ Oz Oz Oz Oz -ia +Zs cZ cZ cZ @@ -2094,7 +2094,7 @@ sF sF cZ cZ -nU +Vb Oz Oz Oz @@ -2112,8 +2112,8 @@ Oz Oz Oz Oz -al -ia +dm +Zs cZ cZ cZ @@ -2147,8 +2147,8 @@ sF sF sF cZ -jZ -jZ +Jh +Jh Oz Oz Oz @@ -2165,7 +2165,7 @@ Oz Oz Oz Oz -ia +Zs cZ cZ cZ @@ -2201,8 +2201,8 @@ cZ sF cZ cZ -jZ -jZ +Jh +Jh Oz Oz Oz @@ -2217,8 +2217,8 @@ Oz Oz Oz Oz -al -ia +dm +Zs cZ DL cZ @@ -2255,11 +2255,11 @@ cZ Od cZ cZ -rG -rG -rG -rG -jZ +mX +mX +mX +mX +Jh Oz Oz Oz @@ -2268,9 +2268,9 @@ Oz Oz Oz Oz -al -rG -al +dm +mX +dm cZ cZ cZ @@ -2312,16 +2312,16 @@ cZ cZ cZ cZ -rG -rG -rG -jZ +mX +mX +mX +Jh Oz Oz -al -rG -rG -rG +dm +mX +mX +mX cZ cZ cZ @@ -2368,10 +2368,10 @@ cZ cZ cZ cZ -rG -rG -rG -rG +mX +mX +mX +mX cZ cZ cZ @@ -2871,7 +2871,7 @@ Eu Eu jo bA -qA +Gs AH GY "} diff --git a/maps/runtime/runtime.dmm b/maps/runtime/runtime.dmm index 4397697f2b8..1d518f095b3 100644 --- a/maps/runtime/runtime.dmm +++ b/maps/runtime/runtime.dmm @@ -2054,6 +2054,12 @@ temperature = 278 }, /area/turret_protected/ai) +"nQ" = ( +/obj/effect/landmark/minimap_poi{ + desc = "Minimap description ayup" + }, +/turf/simulated/floor/plating, +/area/construction) "ob" = ( /obj/machinery/light{ brightness_range = 16; @@ -2948,12 +2954,6 @@ /obj/machinery/shipsensors, /turf/template_noop, /area/engineering) -"EY" = ( -/obj/effect/landmark/minimap_poi{ - desc = "Minimap description ayup" - }, -/turf/simulated/floor/plating, -/area/construction) "Fn" = ( /obj/machinery/light{ brightness_range = 16; @@ -9337,7 +9337,7 @@ de yk dq dq -EY +nQ de rE WV diff --git a/maps/sccv_horizon/code/sccv_horizon_holodeck.dm b/maps/sccv_horizon/code/sccv_horizon_holodeck.dm index d25046f9bae..00a9aa9fa18 100644 --- a/maps/sccv_horizon/code/sccv_horizon_holodeck.dm +++ b/maps/sccv_horizon/code/sccv_horizon_holodeck.dm @@ -1,16 +1,16 @@ /datum/map/sccv_horizon holodeck_programs = list( "emptycourt" = new /datum/holodeck_program(/area/horizon/holodeck/source_emptycourt, - list('sound/music/THUNDERDOME.ogg') + list('sound/music/ingame/ss13/THUNDERDOME.ogg') ), "boxingcourt" = new /datum/holodeck_program(/area/horizon/holodeck/source_boxingcourt, - list('sound/music/THUNDERDOME.ogg') + list('sound/music/ingame/ss13/THUNDERDOME.ogg') ), "basketball" = new /datum/holodeck_program(/area/horizon/holodeck/source_basketball, - list('sound/music/THUNDERDOME.ogg') + list('sound/music/ingame/ss13/THUNDERDOME.ogg') ), "thunderdomecourt" = new /datum/holodeck_program(/area/horizon/holodeck/source_thunderdomecourt, - list('sound/music/THUNDERDOME.ogg') + list('sound/music/ingame/ss13/THUNDERDOME.ogg') ), "beach" = new /datum/holodeck_program(/area/horizon/holodeck/source_beach), "desert" = new /datum/holodeck_program(/area/horizon/holodeck/source_desert, @@ -35,22 +35,22 @@ ), "space" = new /datum/holodeck_program(/area/horizon/holodeck/source_space, list( - 'sound/music/ambispace.ogg', + 'sound/music/ingame/ss13/ambispace.ogg', 'sound/music/main.ogg', - 'sound/music/space.ogg', - 'sound/music/traitor.ogg' + 'sound/music/ingame/ss13/space.ogg', + 'sound/music/ingame/ss13/traitor.ogg' ) ), "picnicarea" = new /datum/holodeck_program(/area/horizon/holodeck/source_picnicarea, - list('sound/music/title2.ogg') + list('sound/music/ingame/ss13/title2.ogg') ), "dininghall" = new /datum/holodeck_program(/area/horizon/holodeck/source_dininghall, - list('sound/music/title2.ogg') + list('sound/music/ingame/ss13/title2.ogg') ), "theatre" = new /datum/holodeck_program(/area/horizon/holodeck/source_theatre), "meetinghall" = new /datum/holodeck_program(/area/horizon/holodeck/source_meetinghall), "courtroom" = new /datum/holodeck_program(/area/horizon/holodeck/source_courtroom, - list('sound/music/traitor.ogg') + list('sound/music/ingame/ss13/traitor.ogg') ), "burntest" = new /datum/holodeck_program(/area/horizon/holodeck/source_burntest, list()), "wildlifecarp" = new /datum/holodeck_program(/area/horizon/holodeck/source_wildlife, list()), @@ -83,10 +83,10 @@ ) ), "lasertag" = new /datum/holodeck_program(/area/horizon/holodeck/source_lasertag, - list('sound/music/THUNDERDOME.ogg') + list('sound/music/ingame/ss13/THUNDERDOME.ogg') ), "combat_training" = new /datum/holodeck_program(/area/horizon/holodeck/source_combat_training, - list('sound/music/THUNDERDOME.ogg') + list('sound/music/ingame/ss13/THUNDERDOME.ogg') ), "chapel_tribunal" = new /datum/holodeck_program(/area/horizon/holodeck/source_tribunal), "chapel_trinary" = new /datum/holodeck_program(/area/horizon/holodeck/source_trinary), diff --git a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm index ce4a9d7f6dc..50313ed22f3 100644 --- a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm +++ b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm @@ -102,6 +102,11 @@ /obj/item/clothing/mask/gas/alt, /turf/template_noop, /area/template_noop) +"bA" = ( +/obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, +/obj/structure/reagent_dispensers/radioactive_waste, +/turf/template_noop, +/area/template_noop) "bU" = ( /obj/vehicle/bike/motor/green, /turf/template_noop, @@ -282,6 +287,10 @@ /obj/structure/closet/masks, /turf/template_noop, /area/template_noop) +"gV" = ( +/obj/effect/decal/cleanable/greenglow/radioactive/low, +/turf/template_noop, +/area/template_noop) "ha" = ( /obj/structure/table/rack/no_cargo, /obj/structure/closet/crate/loot/contraband, @@ -308,11 +317,6 @@ /obj/vehicle/bike/motor/brown, /turf/template_noop, /area/template_noop) -"hL" = ( -/obj/machinery/power/portgen/basic/fusion, -/obj/effect/decal/cleanable/greenglow/radioactive/medium, -/turf/template_noop, -/area/template_noop) "hY" = ( /obj/structure/table/rack/no_cargo, /obj/item/stack/material/glass/wired/full, @@ -714,11 +718,6 @@ /obj/item/bluespace_crystal/artificial, /turf/template_noop, /area/template_noop) -"qT" = ( -/obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, -/obj/structure/reagent_dispensers/radioactive_waste, -/turf/template_noop, -/area/template_noop) "rx" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, /obj/machinery/media/jukebox/calliope, @@ -1085,11 +1084,6 @@ /obj/item/clothing/gloves/janitor/vaurca, /turf/template_noop, /area/template_noop) -"zH" = ( -/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low, -/obj/effect/decal/cleanable/greenglow/radioactive/low, -/turf/template_noop, -/area/template_noop) "zP" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, /obj/random/pottedplant, @@ -1476,9 +1470,9 @@ }, /turf/template_noop, /area/template_noop) -"Mh" = ( +"Mk" = ( /obj/effect/decal/cleanable/greenglow/radioactive/low, -/obj/structure/reagent_dispensers/radioactive_waste, +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low, /turf/template_noop, /area/template_noop) "Ms" = ( @@ -1490,17 +1484,16 @@ /obj/random/maintenance_junk_or_loot, /turf/template_noop, /area/template_noop) +"MJ" = ( +/obj/machinery/power/portgen/basic/fusion, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, +/turf/template_noop, +/area/template_noop) "MQ" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, /obj/machinery/vending/hydronutrients, /turf/template_noop, /area/template_noop) -"MR" = ( -/obj/structure/warp_drive{ - anchored = 0 - }, -/turf/template_noop, -/area/template_noop) "MW" = ( /obj/structure/bed/stool/bar/padded/green, /turf/template_noop, @@ -1616,11 +1609,6 @@ /obj/random/action_figure, /turf/template_noop, /area/template_noop) -"Pz" = ( -/obj/effect/decal/cleanable/greenglow/radioactive/low, -/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low, -/turf/template_noop, -/area/template_noop) "PD" = ( /obj/machinery/food_cart, /turf/template_noop, @@ -1700,10 +1688,6 @@ /obj/effect/decal/cleanable/liquid_fuel, /turf/template_noop, /area/template_noop) -"Rs" = ( -/obj/effect/decal/cleanable/greenglow/radioactive/low, -/turf/template_noop, -/area/template_noop) "Rz" = ( /obj/item/storage/box/fancy/yoke/alcoholic/random, /obj/item/storage/box/fancy/yoke/alcoholic/random, @@ -1718,6 +1702,11 @@ /obj/random/dirt_75, /turf/template_noop, /area/template_noop) +"RD" = ( +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low, +/obj/effect/decal/cleanable/greenglow/radioactive/low, +/turf/template_noop, +/area/template_noop) "RG" = ( /obj/machinery/vending/cigarette/hacked, /turf/template_noop, @@ -1878,6 +1867,11 @@ /obj/random/pizzabox, /turf/template_noop, /area/template_noop) +"Vz" = ( +/obj/effect/decal/cleanable/greenglow/radioactive/low, +/obj/structure/reagent_dispensers/radioactive_waste, +/turf/template_noop, +/area/template_noop) "VO" = ( /obj/structure/table/rack/no_cargo, /obj/item/toy/figure/janitor, @@ -2015,6 +2009,12 @@ /obj/machinery/portable_atmospherics/canister/empty/oxygen, /turf/template_noop, /area/template_noop) +"ZK" = ( +/obj/structure/warp_drive{ + anchored = 0 + }, +/turf/template_noop, +/area/template_noop) "ZM" = ( /obj/structure/closet/crate/extinguisher_cartridges, /obj/item/reagent_containers/extinguisher_refill/filled, @@ -2418,7 +2418,7 @@ Gz sW uO Gz -MR +ZK Gz tG Gz @@ -2692,11 +2692,11 @@ Gz Gz Gz sW -zH +RD xM NI -Pz -qT +Mk +bA Gz Gz Gz @@ -2738,11 +2738,11 @@ Gz Gz Gz Gz -hL +MJ Gz -Rs +gV Gz -Mh +Vz Gz Gz Gz diff --git a/sound/misc/announcements/nightlight.ogg b/sound/AI/announcements/nightlight.ogg similarity index 100% rename from sound/misc/announcements/nightlight.ogg rename to sound/AI/announcements/nightlight.ogg diff --git a/sound/misc/announcements/nightlight_old.ogg b/sound/AI/announcements/nightlight_old.ogg similarity index 100% rename from sound/misc/announcements/nightlight_old.ogg rename to sound/AI/announcements/nightlight_old.ogg diff --git a/sound/misc/announcements/notice.ogg b/sound/AI/announcements/notice.ogg similarity index 100% rename from sound/misc/announcements/notice.ogg rename to sound/AI/announcements/notice.ogg diff --git a/sound/misc/announcements/notice_old.ogg b/sound/AI/announcements/notice_old.ogg similarity index 100% rename from sound/misc/announcements/notice_old.ogg rename to sound/AI/announcements/notice_old.ogg diff --git a/sound/misc/announcements/security_level.ogg b/sound/AI/announcements/security_level.ogg similarity index 100% rename from sound/misc/announcements/security_level.ogg rename to sound/AI/announcements/security_level.ogg diff --git a/sound/misc/announcements/security_level_old.ogg b/sound/AI/announcements/security_level_old.ogg similarity index 100% rename from sound/misc/announcements/security_level_old.ogg rename to sound/AI/announcements/security_level_old.ogg diff --git a/sound/bureaucracy/binder.ogg b/sound/items/bureaucracy/binder.ogg similarity index 100% rename from sound/bureaucracy/binder.ogg rename to sound/items/bureaucracy/binder.ogg diff --git a/sound/bureaucracy/bookclose.ogg b/sound/items/bureaucracy/bookclose.ogg similarity index 100% rename from sound/bureaucracy/bookclose.ogg rename to sound/items/bureaucracy/bookclose.ogg diff --git a/sound/bureaucracy/bookopen.ogg b/sound/items/bureaucracy/bookopen.ogg similarity index 100% rename from sound/bureaucracy/bookopen.ogg rename to sound/items/bureaucracy/bookopen.ogg diff --git a/sound/bureaucracy/filingcabinet.ogg b/sound/items/bureaucracy/filingcabinet.ogg similarity index 100% rename from sound/bureaucracy/filingcabinet.ogg rename to sound/items/bureaucracy/filingcabinet.ogg diff --git a/sound/bureaucracy/paperburn.ogg b/sound/items/bureaucracy/paperburn.ogg similarity index 100% rename from sound/bureaucracy/paperburn.ogg rename to sound/items/bureaucracy/paperburn.ogg diff --git a/sound/bureaucracy/papercrumple.ogg b/sound/items/bureaucracy/papercrumple.ogg similarity index 100% rename from sound/bureaucracy/papercrumple.ogg rename to sound/items/bureaucracy/papercrumple.ogg diff --git a/sound/bureaucracy/paperfold.ogg b/sound/items/bureaucracy/paperfold.ogg similarity index 100% rename from sound/bureaucracy/paperfold.ogg rename to sound/items/bureaucracy/paperfold.ogg diff --git a/sound/bureaucracy/papershred.ogg b/sound/items/bureaucracy/papershred.ogg similarity index 100% rename from sound/bureaucracy/papershred.ogg rename to sound/items/bureaucracy/papershred.ogg diff --git a/sound/bureaucracy/pen1.ogg b/sound/items/bureaucracy/pen1.ogg similarity index 100% rename from sound/bureaucracy/pen1.ogg rename to sound/items/bureaucracy/pen1.ogg diff --git a/sound/bureaucracy/pen2.ogg b/sound/items/bureaucracy/pen2.ogg similarity index 100% rename from sound/bureaucracy/pen2.ogg rename to sound/items/bureaucracy/pen2.ogg diff --git a/sound/bureaucracy/print.ogg b/sound/items/bureaucracy/print.ogg similarity index 100% rename from sound/bureaucracy/print.ogg rename to sound/items/bureaucracy/print.ogg diff --git a/sound/bureaucracy/print_short.ogg b/sound/items/bureaucracy/print_short.ogg similarity index 100% rename from sound/bureaucracy/print_short.ogg rename to sound/items/bureaucracy/print_short.ogg diff --git a/sound/bureaucracy/scan.ogg b/sound/items/bureaucracy/scan.ogg similarity index 100% rename from sound/bureaucracy/scan.ogg rename to sound/items/bureaucracy/scan.ogg diff --git a/sound/bureaucracy/stamp.ogg b/sound/items/bureaucracy/stamp.ogg similarity index 100% rename from sound/bureaucracy/stamp.ogg rename to sound/items/bureaucracy/stamp.ogg diff --git a/sound/music/phonograph/boolean_sisters.ogg b/sound/music/ingame/adhomai/boolean_sisters.ogg similarity index 100% rename from sound/music/phonograph/boolean_sisters.ogg rename to sound/music/ingame/adhomai/boolean_sisters.ogg diff --git a/sound/music/phonograph/electro_swing.ogg b/sound/music/ingame/adhomai/electro_swing.ogg similarity index 100% rename from sound/music/phonograph/electro_swing.ogg rename to sound/music/ingame/adhomai/electro_swing.ogg diff --git a/sound/music/phonograph/le_swing.ogg b/sound/music/ingame/adhomai/le_swing.ogg similarity index 100% rename from sound/music/phonograph/le_swing.ogg rename to sound/music/ingame/adhomai/le_swing.ogg diff --git a/sound/music/phonograph/licensing_information.txt b/sound/music/ingame/adhomai/licensing_information.txt similarity index 100% rename from sound/music/phonograph/licensing_information.txt rename to sound/music/ingame/adhomai/licensing_information.txt diff --git a/sound/music/phonograph/posin.ogg b/sound/music/ingame/adhomai/posin.ogg similarity index 100% rename from sound/music/phonograph/posin.ogg rename to sound/music/ingame/adhomai/posin.ogg diff --git a/sound/music/regional/europa/casting_faint_shadows.ogg b/sound/music/ingame/europa/casting_faint_shadows.ogg similarity index 100% rename from sound/music/regional/europa/casting_faint_shadows.ogg rename to sound/music/ingame/europa/casting_faint_shadows.ogg diff --git a/sound/music/regional/europa/deep_beneath-.ogg b/sound/music/ingame/europa/deep_beneath-.ogg similarity index 100% rename from sound/music/regional/europa/deep_beneath-.ogg rename to sound/music/ingame/europa/deep_beneath-.ogg diff --git a/sound/music/regional/europa/instrumental_park.ogg b/sound/music/ingame/europa/instrumental_park.ogg similarity index 100% rename from sound/music/regional/europa/instrumental_park.ogg rename to sound/music/ingame/europa/instrumental_park.ogg diff --git a/sound/music/regional/europa/way_between_the_shadows.ogg b/sound/music/ingame/europa/way_between_the_shadows.ogg similarity index 100% rename from sound/music/regional/europa/way_between_the_shadows.ogg rename to sound/music/ingame/europa/way_between_the_shadows.ogg diff --git a/sound/music/regional/europa/weedance.ogg b/sound/music/ingame/europa/weedance.ogg similarity index 100% rename from sound/music/regional/europa/weedance.ogg rename to sound/music/ingame/europa/weedance.ogg diff --git a/sound/music/regional/europa/where_the_dusks_rays_leap.ogg b/sound/music/ingame/europa/where_the_dusks_rays_leap.ogg similarity index 100% rename from sound/music/regional/europa/where_the_dusks_rays_leap.ogg rename to sound/music/ingame/europa/where_the_dusks_rays_leap.ogg diff --git a/sound/music/ingame/konyang/konyang-1.ogg b/sound/music/ingame/konyang/konyang-1.ogg new file mode 100644 index 00000000000..313339bbaf3 Binary files /dev/null and b/sound/music/ingame/konyang/konyang-1.ogg differ diff --git a/sound/music/ingame/konyang/konyang-2.ogg b/sound/music/ingame/konyang/konyang-2.ogg new file mode 100644 index 00000000000..653866f3c4d Binary files /dev/null and b/sound/music/ingame/konyang/konyang-2.ogg differ diff --git a/sound/music/ingame/konyang/konyang-3.ogg b/sound/music/ingame/konyang/konyang-3.ogg new file mode 100644 index 00000000000..4306c091a00 Binary files /dev/null and b/sound/music/ingame/konyang/konyang-3.ogg differ diff --git a/sound/music/ingame/konyang/konyang-4.ogg b/sound/music/ingame/konyang/konyang-4.ogg new file mode 100644 index 00000000000..16f3a5d0353 Binary files /dev/null and b/sound/music/ingame/konyang/konyang-4.ogg differ diff --git a/sound/music/audioconsole/Amsterdam.ogg b/sound/music/ingame/scc/Amsterdam.ogg similarity index 100% rename from sound/music/audioconsole/Amsterdam.ogg rename to sound/music/ingame/scc/Amsterdam.ogg diff --git a/sound/music/audioconsole/Butterflies.ogg b/sound/music/ingame/scc/Butterflies.ogg similarity index 100% rename from sound/music/audioconsole/Butterflies.ogg rename to sound/music/ingame/scc/Butterflies.ogg diff --git a/sound/music/audioconsole/Childhood.ogg b/sound/music/ingame/scc/Childhood.ogg similarity index 100% rename from sound/music/audioconsole/Childhood.ogg rename to sound/music/ingame/scc/Childhood.ogg diff --git a/sound/music/audioconsole/DontRush.ogg b/sound/music/ingame/scc/DontRush.ogg similarity index 100% rename from sound/music/audioconsole/DontRush.ogg rename to sound/music/ingame/scc/DontRush.ogg diff --git a/sound/music/audioconsole/Lips.ogg b/sound/music/ingame/scc/Lips.ogg similarity index 100% rename from sound/music/audioconsole/Lips.ogg rename to sound/music/ingame/scc/Lips.ogg diff --git a/sound/music/audioconsole/Number0.ogg b/sound/music/ingame/scc/Number0.ogg similarity index 100% rename from sound/music/audioconsole/Number0.ogg rename to sound/music/ingame/scc/Number0.ogg diff --git a/sound/music/audioconsole/PhoronWillMakeUsRich.ogg b/sound/music/ingame/scc/PhoronWillMakeUsRich.ogg similarity index 100% rename from sound/music/audioconsole/PhoronWillMakeUsRich.ogg rename to sound/music/ingame/scc/PhoronWillMakeUsRich.ogg diff --git a/sound/music/audioconsole/ThatAintChopin.ogg b/sound/music/ingame/scc/ThatAintChopin.ogg similarity index 100% rename from sound/music/audioconsole/ThatAintChopin.ogg rename to sound/music/ingame/scc/ThatAintChopin.ogg diff --git a/sound/music/audioconsole/ThePianist.ogg b/sound/music/ingame/scc/ThePianist.ogg similarity index 100% rename from sound/music/audioconsole/ThePianist.ogg rename to sound/music/ingame/scc/ThePianist.ogg diff --git a/sound/music/audioconsole/When.ogg b/sound/music/ingame/scc/When.ogg similarity index 100% rename from sound/music/audioconsole/When.ogg rename to sound/music/ingame/scc/When.ogg diff --git a/sound/music/audioconsole/licensing.txt b/sound/music/ingame/scc/licensing.txt similarity index 100% rename from sound/music/audioconsole/licensing.txt rename to sound/music/ingame/scc/licensing.txt diff --git a/sound/music/THUNDERDOME.ogg b/sound/music/ingame/ss13/THUNDERDOME.ogg similarity index 100% rename from sound/music/THUNDERDOME.ogg rename to sound/music/ingame/ss13/THUNDERDOME.ogg diff --git a/sound/music/ambispace.ogg b/sound/music/ingame/ss13/ambispace.ogg similarity index 100% rename from sound/music/ambispace.ogg rename to sound/music/ingame/ss13/ambispace.ogg diff --git a/sound/music/song_game.ogg b/sound/music/ingame/ss13/song_game.ogg similarity index 100% rename from sound/music/song_game.ogg rename to sound/music/ingame/ss13/song_game.ogg diff --git a/sound/music/space.ogg b/sound/music/ingame/ss13/space.ogg similarity index 100% rename from sound/music/space.ogg rename to sound/music/ingame/ss13/space.ogg diff --git a/sound/music/title1.ogg b/sound/music/ingame/ss13/title1.ogg similarity index 100% rename from sound/music/title1.ogg rename to sound/music/ingame/ss13/title1.ogg diff --git a/sound/music/title2.ogg b/sound/music/ingame/ss13/title2.ogg similarity index 100% rename from sound/music/title2.ogg rename to sound/music/ingame/ss13/title2.ogg diff --git a/sound/music/title3.ogg b/sound/music/ingame/ss13/title3.ogg similarity index 100% rename from sound/music/title3.ogg rename to sound/music/ingame/ss13/title3.ogg diff --git a/sound/music/title3mk2.ogg b/sound/music/ingame/ss13/title3mk2.ogg similarity index 100% rename from sound/music/title3mk2.ogg rename to sound/music/ingame/ss13/title3mk2.ogg diff --git a/sound/music/traitor.ogg b/sound/music/ingame/ss13/traitor.ogg similarity index 100% rename from sound/music/traitor.ogg rename to sound/music/ingame/ss13/traitor.ogg diff --git a/sound/music/regional/venus/all_night.ogg b/sound/music/ingame/venus/all_night.ogg similarity index 100% rename from sound/music/regional/venus/all_night.ogg rename to sound/music/ingame/venus/all_night.ogg diff --git a/sound/music/regional/venus/artificially_sweetened.ogg b/sound/music/ingame/venus/artificially_sweetened.ogg similarity index 100% rename from sound/music/regional/venus/artificially_sweetened.ogg rename to sound/music/ingame/venus/artificially_sweetened.ogg diff --git a/sound/music/regional/venus/billy_ocean.ogg b/sound/music/ingame/venus/billy_ocean.ogg similarity index 100% rename from sound/music/regional/venus/billy_ocean.ogg rename to sound/music/ingame/venus/billy_ocean.ogg diff --git a/sound/music/regional/venus/break_the_system.ogg b/sound/music/ingame/venus/break_the_system.ogg similarity index 100% rename from sound/music/regional/venus/break_the_system.ogg rename to sound/music/ingame/venus/break_the_system.ogg diff --git a/sound/music/regional/venus/dance.ogg b/sound/music/ingame/venus/dance.ogg similarity index 100% rename from sound/music/regional/venus/dance.ogg rename to sound/music/ingame/venus/dance.ogg diff --git a/sound/music/regional/venus/funky_girl.ogg b/sound/music/ingame/venus/funky_girl.ogg similarity index 100% rename from sound/music/regional/venus/funky_girl.ogg rename to sound/music/ingame/venus/funky_girl.ogg diff --git a/sound/music/regional/venus/love_sensation.ogg b/sound/music/ingame/venus/love_sensation.ogg similarity index 100% rename from sound/music/regional/venus/love_sensation.ogg rename to sound/music/ingame/venus/love_sensation.ogg diff --git a/sound/music/regional/venus/real_love.ogg b/sound/music/ingame/venus/real_love.ogg similarity index 100% rename from sound/music/regional/venus/real_love.ogg rename to sound/music/ingame/venus/real_love.ogg diff --git a/sound/music/regional/xanu/xanu_rock_1.ogg b/sound/music/ingame/xanu/xanu_rock_1.ogg similarity index 100% rename from sound/music/regional/xanu/xanu_rock_1.ogg rename to sound/music/ingame/xanu/xanu_rock_1.ogg diff --git a/sound/music/regional/xanu/xanu_rock_2.ogg b/sound/music/ingame/xanu/xanu_rock_2.ogg similarity index 100% rename from sound/music/regional/xanu/xanu_rock_2.ogg rename to sound/music/ingame/xanu/xanu_rock_2.ogg diff --git a/sound/music/regional/xanu/xanu_rock_3.ogg b/sound/music/ingame/xanu/xanu_rock_3.ogg similarity index 100% rename from sound/music/regional/xanu/xanu_rock_3.ogg rename to sound/music/ingame/xanu/xanu_rock_3.ogg diff --git a/sound/music/phonograph/jazz_instrumental.ogg b/sound/music/jazz_instrumental.ogg similarity index 100% rename from sound/music/phonograph/jazz_instrumental.ogg rename to sound/music/jazz_instrumental.ogg diff --git a/sound/music/licensing_information.txt b/sound/music/licensing_information_main.txt similarity index 100% rename from sound/music/licensing_information.txt rename to sound/music/licensing_information_main.txt diff --git a/tgui/packages/tgui/interfaces/Jukebox.tsx b/tgui/packages/tgui/interfaces/Jukebox.tsx new file mode 100644 index 00000000000..e210fabf1ef --- /dev/null +++ b/tgui/packages/tgui/interfaces/Jukebox.tsx @@ -0,0 +1,103 @@ +import { sortBy } from 'es-toolkit'; +import { Button, LabeledList, Section, Table } from '../components'; +import type { BooleanLike } from '../../common/react'; + +import { useBackend } from '../backend'; +import { Window } from '../layouts'; + +type Song = { + name: string; + length: string; +}; + +export type Data = { + active: BooleanLike; + selection: string | null; + playlist: Song[]; +}; + +export const Jukebox = (props, context) => { + const { act, data } = useBackend(context); + const { active, selection, playlist } = data; + + const playlist_sorted: Song[] = sortBy(playlist, [(song: Song) => song.name]); + const song_selected: Song | undefined = playlist.find( + (song) => song.name === selection + ); + + return ( + + +
+
+
+ + + Title + Length + + {playlist_sorted.sort().map((song) => ( + + + {''} +
+
+
+
+ ); +};