diff --git a/_build_dependencies.sh b/_build_dependencies.sh index 597b844932..164aa71c48 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -6,6 +6,6 @@ export NODE_VERSION=16 # Byond Major export BYOND_MAJOR=514 # Byond Minor -export BYOND_MINOR=1569 +export BYOND_MINOR=1585 # Macro Count -export MACRO_COUNT=4 \ No newline at end of file +export MACRO_COUNT=4 diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index 85d9472d9a..5631fa8807 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -53,7 +53,7 @@ // atoms/items/objects can be pretty and whatnot var/atom/A = item if(output_icons && isicon(A.icon) && !ismob(A)) // mobs tend to have unusable icons - item_str += "[bicon(A)] " + item_str += "\icon[A][bicon(A)] " switch(determiners) if(DET_NONE) item_str += A.name if(DET_DEFINITE) item_str += "\the [A]" diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 953df677ab..208984584a 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -232,7 +232,8 @@ var/global/list/edible_trash = list(/obj/item/broken_device, /obj/item/weapon/storage/wallet, /obj/item/weapon/storage/vore_egg, /obj/item/weapon/bikehorn/tinytether, - /obj/item/capture_crystal + /obj/item/capture_crystal, + /obj/item/roulette_ball ) var/global/list/contamination_flavors = list( diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index 79f43551e7..daf02d38a2 100644 --- a/code/_helpers/text.dm +++ b/code/_helpers/text.dm @@ -343,8 +343,15 @@ if(!text_tag_cache[tagname]) var/icon/tag = icon(text_tag_icons, tagname) text_tag_cache[tagname] = bicon(tag, TRUE, "text_tag") + if(C.chatOutput.broken) + return "[tagdesc]" return text_tag_cache[tagname] +/proc/create_text_tag_old(var/tagname, var/tagdesc = tagname, var/client/C = null) + if(!(C && C.is_preference_enabled(/datum/client_preference/chat_tags))) + return tagdesc + return "[tagdesc]" + /proc/contains_az09(var/input) for(var/i=1, i<=length(input), i++) var/ascii_char = text2ascii(input,i) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 03fd9bac74..8954bf45bc 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -19,7 +19,7 @@ /obj/screen/Destroy() master = null return ..() - + /obj/screen/proc/component_click(obj/screen/component_button/component, params) return @@ -46,9 +46,8 @@ object_overlays.Cut() /obj/screen/inventory/proc/add_overlays() - var/mob/user = hud.mymob - - if(hud && user && slot_id) + if(hud && hud.mymob && slot_id) + var/mob/user = hud.mymob var/obj/item/holding = user.get_active_hand() if(!holding || user.get_equipped_item(slot_id)) @@ -619,7 +618,7 @@ var/mob/living/carbon/C = hud.mymob if(C.handcuffed) add_overlay(handcuff_overlay) - + // PIP stuff /obj/screen/component_button var/obj/screen/parent @@ -634,7 +633,7 @@ // Character setup stuff /obj/screen/setup_preview - + var/datum/preferences/pref /obj/screen/setup_preview/Destroy() @@ -704,7 +703,7 @@ * size of the screen. This is not ideal, as filter() is faster, and has * alpha masks, but the alpha masks it has can't be animated, so the 'ping' * mode of this device isn't possible using that technique. - * + * * The markers use that technique, though, so at least there's that. */ /obj/screen/movable/mapper_holder @@ -722,7 +721,7 @@ var/obj/screen/mapper/mask_full/mask_full var/obj/screen/mapper/mask_ping/mask_ping var/obj/screen/mapper/bg/bg - + var/obj/screen/mapper/frame/frame var/obj/screen/mapper/powbutton/powbutton var/obj/screen/mapper/mapbutton/mapbutton @@ -732,7 +731,7 @@ /obj/screen/movable/mapper_holder/Initialize(mapload, newowner) owner = newowner - + mask_full = new(src) // Full white square mask mask_ping = new(src) // Animated 'pinging' mask bg = new(src) // Background color, holds map in vis_contents, uses mult against masks @@ -740,19 +739,19 @@ frame = new(src) // Decorative frame powbutton = new(src) // Clickable button mapbutton = new(src) // Clickable button - + frame.icon_state = initial(frame.icon_state)+owner.hud_frame_hint /** * The vis_contents layout is: this(frame,extras_holder,mask(bg(map))) * bg is set to BLEND_MULTIPLY against the mask to crop it. */ - + mask_full.vis_contents.Add(bg) mask_ping.vis_contents.Add(bg) frame.vis_contents.Add(powbutton,mapbutton) vis_contents.Add(frame) - + /obj/screen/movable/mapper_holder/Destroy() qdel_null(mask_full) @@ -772,12 +771,12 @@ running = TRUE if(ping) vis_contents.Add(mask_ping) - else + else vis_contents.Add(mask_full) bg.vis_contents.Cut() bg.vis_contents.Add(map) - + if(extras && !extras_holder) extras_holder = extras vis_contents += extras_holder @@ -790,7 +789,7 @@ off() else on() - + /obj/screen/movable/mapper_holder/proc/mapClick() if(owner) if(running) @@ -818,7 +817,7 @@ mouse_opacity = 0 var/obj/screen/movable/mapper_holder/parent -/obj/screen/mapper/New() +/obj/screen/mapper/New() ..() parent = loc @@ -921,10 +920,10 @@ var/static/list/ammo_screen_loc_list = list(ui_ammo_hud1, ui_ammo_hud2, ui_ammo_hud3 ,ui_ammo_hud4) /obj/screen/ammo/proc/add_hud(var/mob/living/user, var/obj/item/weapon/gun/G) - + if(!user?.client) return - + if(!G) CRASH("/obj/screen/ammo/proc/add_hud() has been called from [src] without the required param of G") diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 3839853567..acfa32d52f 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -126,6 +126,7 @@ var/const/MED_I_FREQ = 1485 var/const/SEC_I_FREQ = 1475 var/const/TALON_FREQ = 1363 //VOREStation Add +var/const/CSN_FREQ = 1365 //VOREStation Add var/list/radiochannels = list( "Common" = PUB_FREQ, @@ -145,7 +146,8 @@ var/list/radiochannels = list( "Entertainment" = ENT_FREQ, "Medical(I)" = MED_I_FREQ, "Security(I)" = SEC_I_FREQ, - "Talon" = TALON_FREQ //VOREStation Add + "Talon" = TALON_FREQ, //VOREStation Add + "Casino" = CSN_FREQ, ) // Hey, if anyone ever needs to update tgui/packages/tgui/constants.js with new radio channels @@ -155,7 +157,7 @@ var/list/radiochannels = list( set category = "Generate TGUI Radio Constants" var/list/channel_info = list() - + for(var/i in RADIO_LOW_FREQ to RADIO_HIGH_FREQ) for(var/key in radiochannels) if(i == radiochannels[key]) @@ -192,7 +194,7 @@ var/list/ANTAG_FREQS = list(SYND_FREQ, RAID_FREQ) //Department channels, arranged lexically var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, ENT_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ) -var/list/OFFMAP_FREQS = list(TALON_FREQ) //VOREStation Add +var/list/OFFMAP_FREQS = list(TALON_FREQ, CSN_FREQ) //VOREStation Add /proc/frequency_span_class(var/frequency) // Antags! diff --git a/code/datums/uplink/badassery.dm b/code/datums/uplink/badassery.dm index 8addcc3f64..8208894af4 100644 --- a/code/datums/uplink/badassery.dm +++ b/code/datums/uplink/badassery.dm @@ -91,4 +91,4 @@ var/obj/structure/largecrate/C = /obj/structure/largecrate icon = image(initial(C.icon), initial(C.icon_state)) - return "[bicon(icon)]" \ No newline at end of file + return "\icon[icon][bicon(icon)]" \ No newline at end of file diff --git a/code/datums/uplink/uplink_items.dm b/code/datums/uplink/uplink_items.dm index 7156f807bd..7fcdbd8dc2 100644 --- a/code/datums/uplink/uplink_items.dm +++ b/code/datums/uplink/uplink_items.dm @@ -130,7 +130,7 @@ var/datum/uplink/uplink = new() /datum/uplink_item/item/log_icon() var/obj/I = path - return "[bicon(I)]" + return "\icon[I][bicon(I)]" /******************************** * * @@ -144,7 +144,7 @@ var/datum/uplink/uplink = new() if(!default_abstract_uplink_icon) default_abstract_uplink_icon = image('icons/obj/pda.dmi', "pda-syn") - return "[bicon(default_abstract_uplink_icon)]" + return "\icon[default_abstract_uplink_icon][bicon(default_abstract_uplink_icon)]" /* * Crated goods. diff --git a/code/datums/wires/camera.dm b/code/datums/wires/camera.dm index 571e2a22e6..c572ad8d27 100644 --- a/code/datums/wires/camera.dm +++ b/code/datums/wires/camera.dm @@ -57,7 +57,7 @@ C.light_disabled = !C.light_disabled if(WIRE_CAM_ALARM) - C.visible_message("[bicon(C)] *beep*", "[bicon(C)] *beep*") + C.visible_message("\icon[C][bicon(C)] *beep*", "\icon[C][bicon(C)] *beep*") ..() /datum/wires/camera/proc/CanDeconstruct() diff --git a/code/datums/wires/jukebox.dm b/code/datums/wires/jukebox.dm index 125bbd78ef..cec0f4d370 100644 --- a/code/datums/wires/jukebox.dm +++ b/code/datums/wires/jukebox.dm @@ -31,16 +31,16 @@ var/obj/machinery/media/jukebox/A = holder switch(wire) if(WIRE_MAIN_POWER1) - holder.visible_message("[bicon(holder)] The power light flickers.") + holder.visible_message("\icon[holder][bicon(holder)] The power light flickers.") A.shock(usr, 90) if(WIRE_JUKEBOX_HACK) - holder.visible_message("[bicon(holder)] The parental guidance light flickers.") + holder.visible_message("\icon[holder][bicon(holder)] The parental guidance light flickers.") if(WIRE_REVERSE) - holder.visible_message("[bicon(holder)] The data light blinks ominously.") + holder.visible_message("\icon[holder][bicon(holder)] The data light blinks ominously.") if(WIRE_SPEEDUP) - holder.visible_message("[bicon(holder)] The speakers squeaks.") + holder.visible_message("\icon[holder][bicon(holder)] The speakers squeaks.") if(WIRE_SPEEDDOWN) - holder.visible_message("[bicon(holder)] The speakers rumble.") + holder.visible_message("\icon[holder][bicon(holder)] The speakers rumble.") if(WIRE_START) A.StartPlaying() if(WIRE_STOP) diff --git a/code/datums/wires/mines.dm b/code/datums/wires/mines.dm index 5e757ad16c..55ea718c3f 100644 --- a/code/datums/wires/mines.dm +++ b/code/datums/wires/mines.dm @@ -21,15 +21,15 @@ switch(wire) if(WIRE_EXPLODE) - C.visible_message("[bicon(C)] *BEEE-*", "[bicon(C)] *BEEE-*") + C.visible_message("\icon[C][bicon(C)] *BEEE-*", "\icon[C][bicon(C)] *BEEE-*") C.explode() if(WIRE_EXPLODE_DELAY) - C.visible_message("[bicon(C)] *BEEE-*", "[bicon(C)] *BEEE-*") + C.visible_message("\icon[C][bicon(C)] *BEEE-*", "\icon[C][bicon(C)] *BEEE-*") C.explode() if(WIRE_DISARM) - C.visible_message("[bicon(C)] *click!*", "[bicon(C)] *click!*") + C.visible_message("\icon[C][bicon(C)] *click!*", "\icon[C][bicon(C)] *click!*") var/obj/effect/mine/MI = new C.mineitemtype(get_turf(C)) if(C.trap) @@ -41,15 +41,15 @@ qdel(C) if(WIRE_BADDISARM) - C.visible_message("[bicon(C)] *BEEPBEEPBEEP*", "[bicon(C)] *BEEPBEEPBEEP*") + C.visible_message("\icon[C][bicon(C)] *BEEPBEEPBEEP*", "\icon[C][bicon(C)] *BEEPBEEPBEEP*") spawn(20) C.explode() if(WIRE_TRAP) - C.visible_message("[bicon(C)] *click!*", "[bicon(C)] *click!*") + C.visible_message("\icon[C][bicon(C)] *click!*", "\icon[C][bicon(C)] *click!*") if(mend) - C.visible_message("[bicon(C)] - The mine recalibrates[C.camo_net ? ", revealing \the [C.trap] inside." : "."]") + C.visible_message("\icon[C][bicon(C)] - The mine recalibrates[C.camo_net ? ", revealing \the [C.trap] inside." : "."]") C.alpha = 255 @@ -61,21 +61,21 @@ return switch(wire) if(WIRE_EXPLODE) - C.visible_message("[bicon(C)] *beep*", "[bicon(C)] *beep*") + C.visible_message("\icon[C][bicon(C)] *beep*", "\icon[C][bicon(C)] *beep*") if(WIRE_EXPLODE_DELAY) - C.visible_message("[bicon(C)] *BEEPBEEPBEEP*", "[bicon(C)] *BEEPBEEPBEEP*") + C.visible_message("\icon[C][bicon(C)] *BEEPBEEPBEEP*", "\icon[C][bicon(C)] *BEEPBEEPBEEP*") spawn(20) C.explode() if(WIRE_DISARM) - C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*") + C.visible_message("\icon[C][bicon(C)] *ping*", "\icon[C][bicon(C)] *ping*") if(WIRE_BADDISARM) - C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*") + C.visible_message("\icon[C][bicon(C)] *ping*", "\icon[C][bicon(C)] *ping*") if(WIRE_TRAP) - C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*") + C.visible_message("\icon[C][bicon(C)] *ping*", "\icon[C][bicon(C)] *ping*") ..() diff --git a/code/datums/wires/particle_accelerator.dm b/code/datums/wires/particle_accelerator.dm index e3fd198b3b..1787039622 100644 --- a/code/datums/wires/particle_accelerator.dm +++ b/code/datums/wires/particle_accelerator.dm @@ -26,7 +26,7 @@ C.interface_control = !C.interface_control if(WIRE_PARTICLE_POWER_LIMIT) - C.visible_message("[bicon(C)][C] makes a large whirring noise.") + C.visible_message("\icon[C][bicon(C)][C] makes a large whirring noise.") /datum/wires/particle_acc/control_box/on_cut(wire, mend) var/obj/machinery/particle_accelerator/control_box/C = holder diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index c6217291cd..2ac7d383b7 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1,2654 +1,2655 @@ -/* - -### This file contains a list of all the areas in your station. Format is as follows: - -/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want) - name = "NICE NAME" (not required but makes things really nice) - icon = "ICON FILENAME" (defaults to areas.dmi) - icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) - requires_power = 0 (defaults to 1) - music = "music/music.ogg" (defaults to "music/music.ogg") - -NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0 - -*/ - -/*-----------------------------------------------------------------------------*/ - -///////// -//SPACE// -///////// - -/area/space - name = "\improper Space" - icon_state = "space" - requires_power = 1 - always_unpowered = 1 - dynamic_lighting = 0 - has_gravity = 0 - power_light = 0 - power_equip = 0 - power_environ = 0 - ambience = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/main.ogg','sound/music/traitor.ogg','sound/ambience/space/space_serithi.ogg','sound/music/freefallin.mid') - base_turf = /turf/space - ambience = AMBIENCE_SPACE - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/space/atmosalert() - return - -/area/space/fire_alert() - return - -/area/space/fire_reset() - return - -/area/space/readyalert() - return - -/area/space/partyalert() - return - -/area/arrival - requires_power = 0 - -/area/arrival/start - name = "\improper Arrival Area" - icon_state = "start" - -/area/admin - name = "\improper Admin room" - icon_state = "start" - - - -//////////// -//SHUTTLES// -//////////// -//Shuttles only need starting area, movement is handled by landmarks -//All shuttles should now be under shuttle since we have smooth-wall code. - -/area/shuttle - requires_power = 0 - flags = RAD_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT - sound_env = SMALL_ENCLOSED - base_turf = /turf/space - forbid_events = TRUE - -/area/shuttle/arrival - name = "\improper Arrival Shuttle" - ambience = AMBIENCE_ARRIVALS - -/area/shuttle/supply - name = "\improper Supply Shuttle" - icon_state = "shuttle2" - -/area/shuttle/escape - name = "\improper Emergency Shuttle" - music = "music/escape.ogg" - -/area/shuttle/escape_pod1 - name = "\improper Escape Pod One" - music = "music/escape.ogg" - -/area/shuttle/escape_pod2 - name = "\improper Escape Pod Two" - music = "music/escape.ogg" - -/area/shuttle/escape_pod3 - name = "\improper Escape Pod Three" - music = "music/escape.ogg" - -/area/shuttle/escape_pod4 - name = "\improper Escape Pod Four" - music = "music/escape.ogg" - -/area/shuttle/escape_pod5 - name = "\improper Escape Pod Five" - music = "music/escape.ogg" - -/area/shuttle/escape_pod6 - name = "\improper Escape Pod Six" - music = "music/escape.ogg" - -/area/shuttle/large_escape_pod1 - name = "\improper Large Escape Pod One" - music = "music/escape.ogg" - -/area/shuttle/large_escape_pod2 - name = "\improper Large Escape Pod Two" - music = "music/escape.ogg" - -/area/shuttle/cryo - name = "\improper Cryogenic Storage" - -/area/shuttle/mining - name = "\improper Mining Elevator" - music = "music/escape.ogg" - dynamic_lighting = 0 - base_turf = /turf/simulated/mineral/floor/ignore_mapgen - -/area/shuttle/transport1/centcom - icon_state = "shuttle" - name = "\improper Transport Shuttle CentCom" - -/area/shuttle/transport1/station - icon_state = "shuttle" - name = "\improper Transport Shuttle" - -/area/shuttle/alien/base - icon_state = "shuttle" - name = "\improper Alien Shuttle Base" - requires_power = 1 - -/area/shuttle/alien/mine - icon_state = "shuttle" - name = "\improper Alien Shuttle Mine" - requires_power = 1 - -/area/shuttle/prison/ - name = "\improper Prison Shuttle" - -/area/shuttle/prison/station - icon_state = "shuttle" - -/area/shuttle/prison/prison - icon_state = "shuttle2" - -/area/shuttle/specops/centcom - name = "\improper Special Ops Shuttle" - icon_state = "shuttlered" - -/area/shuttle/specops/station - name = "\improper Special Ops Shuttle" - icon_state = "shuttlered2" - -/area/shuttle/syndicate_elite/mothership - name = "\improper Merc Elite Shuttle" - icon_state = "shuttlered" - -/area/shuttle/syndicate_elite/station - name = "\improper Merc Elite Shuttle" - icon_state = "shuttlered2" - -/area/shuttle/administration/centcom - name = "Centcom Large Bay (AS)" //VOREStation Edit - icon_state = "shuttlered" - -/area/shuttle/administration/station - name = "NSB Adephagia (AS)" //VOREStation Edit - icon_state = "shuttlered2" - -/area/shuttle/trade - name = "\improper Trade Station" - icon_state = "red" - dynamic_lighting = 0 - -/area/shuttle/trade/centcom - name = "\improper Trade Shuttle CentCom" - icon_state = "shuttlered" - -/area/shuttle/trade/station - name = "\improper Cryogaia Commerce Pad" - icon_state = "shuttlered" - -/area/shuttle/thunderdome - name = "honk" - -/area/shuttle/research - name = "\improper Research Elevator" - music = "music/escape.ogg" - dynamic_lighting = 0 - base_turf = /turf/simulated/mineral/floor/ignore_mapgen - -/area/airtunnel1/ // referenced in airtunnel.dm:759 - -/area/dummy/ // Referenced in engine.dm:261 - -// === end remove - -/area/alien - name = "\improper Alien base" - icon_state = "yellow" - requires_power = 0 - flags = AREA_FLAG_IS_NOT_PERSISTENT - -// CENTCOM - -/area/centcom - name = "\improper CentCom" - icon_state = "centcom" - requires_power = 0 - dynamic_lighting = 0 - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/centcom/control - name = "\improper CentCom Control" - -/area/centcom/evac - name = "\improper CentCom Emergency Shuttle" - -/area/centcom/suppy - name = "\improper CentCom Supply Shuttle" - -/area/centcom/ferry - name = "\improper CentCom Transport Shuttle" - -/area/centcom/shuttle - name = "\improper CentCom Administration Shuttle" - -/area/centcom/test - name = "\improper CentCom Testing Facility" - -/area/centcom/living - name = "\improper CentCom Living Quarters" - -/area/centcom/specops - name = "\improper CentCom Special Ops" - -/area/centcom/creed - name = "Creed's Office" - -/area/centcom/holding - name = "\improper Holding Facility" - -/area/centcom/terminal - name = "\improper Docking Terminal" - icon_state = "centcom_dock" - ambience = AMBIENCE_ARRIVALS - -/area/centcom/tram - name = "\improper Tram Station" - ambience = AMBIENCE_ARRIVALS - -/area/centcom/security - name = "\improper CentCom Security" - icon_state = "centcom_security" - -/area/centcom/medical - name = "\improper CentCom Medical" - icon_state = "centcom_medical" - -/area/centcom/command - name = "\improper CentCom Command" //Central Command Command totally isn't RAS Syndrome in action. - icon_state = "centcom_command" - ambience = AMBIENCE_HIGHSEC - -/area/centcom/main_hall - name = "\improper Main Hallway" - icon_state = "centcom_hallway1" - -/area/centcom/bar - name = "\improper CentCom Bar" - icon_state = "centcom_crew" - -/area/centcom/restaurant - name = "\improper CentCom Restaurant" - icon_state = "centcom_crew" - -/area/centcom/bathroom - name = "\improper CentCom Bathroom" - icon_state = "centcom_crew" - sound_env = SMALL_ENCLOSED - -//SYNDICATES - -/area/syndicate_mothership - name = "\improper Mercenary Base" - icon_state = "syndie-ship" - requires_power = 0 - dynamic_lighting = 0 - ambience = AMBIENCE_HIGHSEC - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/syndicate_mothership/control - name = "\improper Mercenary Control Room" - icon_state = "syndie-control" - -/area/syndicate_mothership/elite_squad - name = "\improper Elite Mercenary Squad" - icon_state = "syndie-elite" - -//EXTRA - -/area/asteroid // -- TLE - name = "\improper Moon" - icon_state = "asteroid" - requires_power = 0 - sound_env = ASTEROID - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/asteroid/cave // -- TLE - name = "\improper Moon - Underground" - icon_state = "cave" - requires_power = 0 - sound_env = ASTEROID - -/area/asteroid/artifactroom - name = "\improper Moon - Artifact" - icon_state = "cave" - sound_env = SMALL_ENCLOSED - -/area/planet/clown - name = "\improper Clown Planet" - icon_state = "honk" - requires_power = 0 - -/area/tdome - name = "\improper Thunderdome" - icon_state = "thunder" - requires_power = 0 - dynamic_lighting = 0 - sound_env = SOUND_ENVIRONMENT_ARENA - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/tdome/tdome1 - name = "\improper Thunderdome (Team 1)" - icon_state = "green" - -/area/tdome/tdome2 - name = "\improper Thunderdome (Team 2)" - icon_state = "yellow" - -/area/tdome/tdomeadmin - name = "\improper Thunderdome (Admin.)" - icon_state = "purple" - -/area/tdome/tdomeobserve - name = "\improper Thunderdome (Observer.)" - icon_state = "purple" - -/area/virtual_reality - name = "Virtual Reality" - icon_state = "Virtual_Reality" - dynamic_lighting = 0 - requires_power = 0 - flags = AREA_FLAG_IS_NOT_PERSISTENT - -//ENEMY - -//names are used -/area/syndicate_station - name = "\improper Independent Station" - icon_state = "yellow" - requires_power = 0 - flags = RAD_SHIELDED - base_turf = /turf/space - ambience = AMBIENCE_HIGHSEC - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/syndicate_station/start - name = "\improper Mercenary Forward Operating Base" - icon_state = "yellow" - -/area/syndicate_station/southwest - name = "\improper wilderness cave" - icon_state = "southwest" - -/area/syndicate_station/northwest - name = "\improper wilderness forest" - icon_state = "northwest" - -/area/syndicate_station/northeast - name = "\improper wilderness forest" - icon_state = "northeast" - -/area/syndicate_station/southeast - name = "\improper wilderness caves" - icon_state = "southeast" - -/area/syndicate_station/north - name = "\improper outpost grounds" - icon_state = "north" - -/area/syndicate_station/south - name = "\improper the wilderness" - icon_state = "south" - -/area/syndicate_station/commssat - name = "\improper south of the communication satellite" - icon_state = "south" - -/area/syndicate_station/mining - name = "\improper northeast of the mining station" - icon_state = "north" - -/area/syndicate_station/arrivals_dock - name = "\improper docked with station" - icon_state = "shuttle" - -/area/syndicate_station/maint_dock - name = "\improper docked with station" - icon_state = "shuttle" - -/area/syndicate_station/transit - name = "\improper hyperspace" - icon_state = "shuttle" - -/area/wizard_station - name = "\improper Wizard's Den" - icon_state = "yellow" - requires_power = 0 - dynamic_lighting = 0 - ambience = AMBIENCE_OTHERWORLDLY - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/skipjack_station - name = "\improper Skipjack" - icon_state = "yellow" - requires_power = 0 - base_turf = /turf/space - ambience = AMBIENCE_HIGHSEC - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/skipjack_station/start - name = "\improper Skipjack" - icon_state = "yellow" - -/area/skipjack_station/transit - name = "\improper hyperspace" - icon_state = "shuttle" - -/area/skipjack_station/southwest_solars - name = "\The wilderness" - icon_state = "southwest" - -/area/skipjack_station/northwest_solars - name = "\improper The wilderness" - icon_state = "northwest" - -/area/skipjack_station/northeast_solars - name = "\improper The wilderness" - icon_state = "northeast" - -/area/skipjack_station/southeast_solars - name = "\improper wilderness caves" - icon_state = "southeast" - -/area/skipjack_station/mining - name = "\improper south of mining station" - icon_state = "north" - -//PRISON -/area/prison - name = "\improper Prison Station" - icon_state = "brig" - ambience = AMBIENCE_HIGHSEC - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/prison/arrival_airlock - name = "\improper Prison Station Airlock" - icon_state = "green" - requires_power = 0 - -/area/prison/control - name = "\improper Prison Security Checkpoint" - icon_state = "security" - -/area/prison/crew_quarters - name = "\improper Prison Security Quarters" - icon_state = "security" - -/area/prison/rec_room - name = "\improper Prison Rec Room" - icon_state = "green" - -/area/prison/closet - name = "\improper Prison Supply Closet" - icon_state = "dk_yellow" - -/area/prison/hallway/fore - name = "\improper Prison Fore Hallway" - icon_state = "yellow" - -/area/prison/hallway/aft - name = "\improper Prison Aft Hallway" - icon_state = "yellow" - -/area/prison/hallway/port - name = "\improper Prison Port Hallway" - icon_state = "yellow" - -/area/prison/hallway/starboard - name = "\improper Prison Starboard Hallway" - icon_state = "yellow" - -/area/prison/morgue - name = "\improper Prison Morgue" - icon_state = "morgue" - -/area/prison/medical_research - name = "\improper Prison Genetic Research" - icon_state = "medresearch" - -/area/prison/medical - name = "\improper Prison Medbay" - icon_state = "medbay" - -/area/prison/solar - name = "\improper Prison Solar Array" - icon_state = "storage" - requires_power = 0 - -/area/prison/podbay - name = "\improper Prison Podbay" - icon_state = "dk_yellow" - -/area/prison/solar_control - name = "\improper Prison Solar Array Control" - icon_state = "dk_yellow" - -/area/prison/solitary - name = "Solitary Confinement" - icon_state = "brig" - -/area/prison/cell_block/A - name = "Prison Cell Block A" - icon_state = "brig" - -/area/prison/cell_block/B - name = "Prison Cell Block B" - icon_state = "brig" - -/area/prison/cell_block/C - name = "Prison Cell Block C" - icon_state = "brig" - -//////////////////// -//SPACE STATION 13// -//////////////////// - -/area - ambience = AMBIENCE_GENERIC - -//Maintenance - -/area/maintenance - flags = RAD_SHIELDED - sound_env = TUNNEL_ENCLOSED - turf_initializer = new /datum/turf_initializer/maintenance() - ambience = AMBIENCE_MAINTENANCE - -/area/maintenance/aft - name = "Aft Maintenance" - icon_state = "amaint" - -/area/maintenance/fore - name = "Fore Maintenance" - icon_state = "fmaint" - -/area/maintenance/starboard - name = "Starboard Maintenance" - icon_state = "smaint" - -/area/maintenance/port - name = "Port Maintenance" - icon_state = "pmaint" - -/area/maintenance/atmos_control - name = "Atmospherics Maintenance" - icon_state = "fpmaint" - -/area/maintenance/fpmaint - name = "Fore Port Maintenance - 1" - icon_state = "fpmaint" - -/area/maintenance/fpmaint2 - name = "Fore Port Maintenance - 2" - icon_state = "fpmaint" - -/area/maintenance/fsmaint - name = "Fore Starboard Maintenance - 1" - icon_state = "fsmaint" - -/area/maintenance/fsmaint2 - name = "Fore Starboard Maintenance - 2" - icon_state = "fsmaint" - -/area/maintenance/asmaint - name = "Aft Starboard Maintenance" - icon_state = "asmaint" - -/area/maintenance/engi_shuttle - name = "Engineering Shuttle Access" - icon_state = "maint_e_shuttle" - -/area/maintenance/engi_engine - name = "Engine Maintenance" - icon_state = "maint_engine" - -/area/maintenance/asmaint2 - name = "Science Maintenance" - icon_state = "asmaint" - -/area/maintenance/apmaint - name = "Cargo Engineering Maintenance" - icon_state = "apmaint" - -/area/maintenance/maintcentral - name = "Bridge Maintenance" - icon_state = "maintcentral" - -/area/maintenance/arrivals - name = "Arrivals Maintenance" - icon_state = "maint_arrivals" - -/area/maintenance/bar - name = "Bar Maintenance" - icon_state = "maint_bar" - -/area/maintenance/central - name = "Central Maintenance" - icon_state = "maint_central" - -/area/maintenance/cafe_dock - name = "Cafeteria Dock Maintenance" - icon_state = "maint_cafe_dock" - -/area/maintenance/cargo - name = "Cargo Maintenance" - icon_state = "maint_cargo" - -/area/maintenance/cargo_research - name = "Cargo Research Maintenance" - icon_state = "maint_cargo_research" - -/area/maintenance/chapel - name = "Chapel Maintenance" - icon_state = "maint_chapel" - -/area/maintenance/disposal - name = "Waste Disposal" - icon_state = "disposal" - flags = AREA_FLAG_IS_NOT_PERSISTENT //If trash items got this far, they can be safely deleted. - -/area/maintenance/engineering - name = "Engineering Maintenance" - icon_state = "maint_engineering" - -/area/maintenance/engineering/pumpstation - name = "Engineering Pump Station" - icon_state = "maint_pumpstation" - -/area/maintenance/evahallway - name = "\improper EVA Maintenance" - icon_state = "maint_eva" - -/area/maintenance/dormitory - name = "Dormitory Maintenance" - icon_state = "maint_dormitory" - -/area/maintenance/holodeck - name = "Holodeck Maintenance" - icon_state = "maint_holodeck" - -/area/maintenance/incinerator - name = "\improper Incinerator" - icon_state = "disposal" - -/area/maintenance/library - name = "Library Maintenance" - icon_state = "maint_library" - -/area/maintenance/locker - name = "Locker Room Maintenance" - icon_state = "maint_locker" - -/area/maintenance/medbay - name = "Medbay Maintenance" - icon_state = "maint_medbay" - -/area/maintenance/medbay_aft - name = "Medbay Maintenance - Aft" - icon_state = "maint_medbay_aft" - -/area/maintenance/medbay_fore - name = "Medbay Maintenance - Fore" - icon_state = "maint_medbay_fore" - -/area/maintenance/pool - name = "Pool Maintenance" - icon_state = "maint_pool" - -/area/maintenance/research - name = "Research Maintenance" - icon_state = "maint_research" - -/area/maintenance/research_port - name = "Research Maintenance - Port" - icon_state = "maint_research_port" - -/area/maintenance/research_starboard - name = "Research Maintenance - Starboard" - icon_state = "maint_research_starboard" - -/area/maintenance/research_starboard - name = "Research Maintenance - Starboard" - icon_state = "maint_research_cargo" - -/area/maintenance/research_shuttle - name = "Research Shuttle Dock Maintenance" - icon_state = "maint_research_shuttle" - -/area/maintenance/security_port - name = "Security Maintenance - Port" - icon_state = "maint_security_port" - -/area/maintenance/security_starboard - name = "Security Maintenance - Starboard" - icon_state = "maint_security_starboard" - -/area/maintenance/storage - name = "Atmospherics" - icon_state = "green" - -/area/maintenance/tool_storage - name = "Tool Storage Maintenance" - icon_state = "maint_tool_storage" - - -// SUBSTATIONS (Subtype of maint, that should let them serve as shielded area during radstorm) - -/area/maintenance/substation - name = "Substation" - icon_state = "substation" - sound_env = SMALL_ENCLOSED - ambience = AMBIENCE_SUBSTATION - -/area/maintenance/substation/engineering // Probably will be connected to engineering SMES room, as wires cannot be crossed properly without them sharing powernets. - name = "Engineering Substation" - -// No longer used: -/area/maintenance/substation/medical_science // Medbay and Science. Each has it's own separated machinery, but it originates from the same room. - name = "Medical Research Substation" - -/area/maintenance/substation/medical // Medbay - name = "Medical Substation" - -/area/maintenance/substation/research // Research - name = "Research Substation" - -/area/maintenance/substation/cafeteria_dock // Hydro, kitchen, docks, hotel - name = "Cafeteria Dock Substation" - -/area/maintenance/substation/civilian // Dorms, Lockerroom, Pool - name = "Civilian Substation" - -/area/maintenance/substation/civilian_east // Bar, kitchen, dorms, ... - name = "Civilian East Substation" - -/area/maintenance/substation/civilian_west // Cargo, PTS, locker room, probably arrivals, ...) - name = "Civilian West Substation" - -/area/maintenance/substation/cargo // Cargo - name = "Cargo Substation" - -/area/maintenance/substation/command // AI and central cluster. This one will be between HoP office and meeting room (probably). - name = "Command Substation" - -/area/maintenance/substation/dock // Bar, docks, hotel - name = "Dock Substation" - -/area/maintenance/substation/security // Security, Brig, Permabrig, etc. - name = "Security Substation" - -//Hallway - -/area/hallway/primary/ - sound_env = LARGE_ENCLOSED - ambience = AMBIENCE_GENERIC - -/area/hallway/primary/fore - name = "\improper Fore Primary Hallway" - icon_state = "hallF" - -/area/hallway/primary/starboard - name = "\improper Starboard Primary Hallway" - icon_state = "hallS" - -/area/hallway/primary/aft - name = "\improper Aft Primary Hallway" - icon_state = "hallA" - -/area/hallway/primary/port - name = "\improper Port Primary Hallway" - icon_state = "hallP" - -/area/hallway/primary/central_one - name = "\improper Central Primary Hallway - Fore" - icon_state = "hallC1" - -/area/hallway/primary/central_two - name = "\improper Central Primary Hallway - Starboard" - icon_state = "hallC2" - -/area/hallway/primary/central_three - name = "\improper Central Primary Hallway - Aft" - icon_state = "hallC3" - -/area/hallway/primary/central_four - name = "\improper Central Primary Hallway - Port" - icon_state = "hallC4" - -/area/hallway/secondary/exit - name = "\improper Escape Shuttle Hallway" - icon_state = "escape" - -/area/hallway/secondary/construction - name = "\improper Construction Area" - icon_state = "construction" - -/area/hallway/secondary/entry - forbid_events = TRUE - -/area/hallway/secondary/entry/fore - name = "\improper Shuttle Dock Hallway - Mid" - icon_state = "entry_1" - -/area/hallway/secondary/entry/port - name = "\improper Shuttle Dock Hallway - Port" - icon_state = "entry_2" - -/area/hallway/secondary/entry/starboard - name = "\improper Shuttle Dock Hallway - Starboard" - icon_state = "entry_3" - -/area/hallway/secondary/entry/aft - name = "\improper Shuttle Dock Hallway - Aft" - icon_state = "entry_4" - -/area/hallway/secondary/entry/D1 - name = "\improper Shuttle Dock Hallway - Dock One" - icon_state = "entry_D1" - base_turf = /turf/space - -/area/hallway/secondary/entry/D2 - name = "\improper Shuttle Dock Hallway - Dock Two" - icon_state = "entry_D2" - base_turf = /turf/space - -/area/hallway/secondary/entry/D2/arrivals - name = "\improper Shuttle Dock Hallway - Dock Two" - icon_state = "entry_D2" - base_turf = /turf/space - requires_power = 0 - -/area/hallway/secondary/entry/D3 - name = "\improper Shuttle Dock Hallway - Dock Three" - icon_state = "entry_D3" - base_turf = /turf/space - -/area/hallway/secondary/entry/D4 - name = "\improper Shuttle Dock Hallway - Dock Four" - icon_state = "entry_D4" - -/area/hallway/secondary/entry/docking_lounge - name = "\improper Docking Lounge" - icon_state = "docking_lounge" - -/area/hallway/secondary/escape/dock_escape_pod_hallway_port - name = "\improper Dock Escape Pod Hallway Port" - icon_state = "dock_escape_pod_hallway_port" - -/area/hallway/secondary/escape/dock_escape_pod_hallway_starboard - name = "\improper Dock Escape Pod Hallway Starboard" - icon_state = "dock_escape_pod_hallway_starboard" - -/area/hallway/secondary/escape/fore_port_escape_pod_hallway - name = "\improper Fore Port Escape Pod Hallway" - icon_state = "fore_port_escape_pod_hallway" - -/area/hallway/secondary/escape/fore_escape_pod_hallway - name = "\improper Fore Escape Pod Hallway" - icon_state = "fore_escape_pod_hallway" - -/area/hallway/secondary/escape/medical_escape_pod_hallway - name = "\improper Medical Escape Pod Hallway" - icon_state = "medical_escape_pod_hallway" - -/area/hallway/secondary/cargo_hallway - name = "\improper Cargo Hallway" - icon_state = "cargo_hallway" - -/area/hallway/secondary/civilian_hallway_aft - name = "\improper Civilian Hallway Aft" - icon_state = "aft_civilian_hallway" - -/area/hallway/secondary/civilian_hallway_fore - name = "\improper Civilian Hallway Fore" - icon_state = "fore_civilian_hallway" - -/area/hallway/secondary/civilian_hallway_mid - name = "\improper Civilian Hallway Mid" - icon_state = "mid_civilian_hallway" - -/area/hallway/secondary/chapel_hallway - name = "\improper Chapel Hallway" - icon_state = "chapel_hallway" - -/area/hallway/secondary/cryostorage_hallway - name = "\improper Cryostorage Hallway" - icon_state = "cryostorage_hallway" - -/area/hallway/secondary/docking_hallway - name = "\improper Docking Hallway" - icon_state = "docking_hallway" - -/area/hallway/secondary/docking_hallway2 - name = "\improper Secondary Docking Hallway" - icon_state = "docking_hallway" - -/area/hallway/secondary/engineering_hallway - name = "\improper Engineering Primary Hallway" - icon_state = "engineering_primary_hallway" - -/area/hallway/secondary/eva_hallway - name = "\improper EVA Hallway" - icon_state = "eva_hallway" - -/area/hallway/secondary/medical_emergency_hallway - name = "\improper Medical Emergency Hallway" - icon_state = "medical_emergency_hallway" - -//Command - -/area/bridge - name = "\improper Bridge" - icon_state = "bridge" - music = "signal" - -/area/bridge_hallway - name = "\improper Bridge Hallway" - icon_state = "bridge" - -/area/bridge/meeting_room - name = "\improper Heads of Staff Meeting Room" - icon_state = "bridge" - music = null - sound_env = MEDIUM_SOFTFLOOR - -/area/crew_quarters/captain - name = "\improper Command - Site Manager's Office" - icon_state = "captain" - sound_env = MEDIUM_SOFTFLOOR - -/area/crew_quarters/heads/hop - name = "\improper Command - HoP's Office" - icon_state = "head_quarters" - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/crew_quarters/heads/hor - name = "\improper Research - RD's Office" - icon_state = "head_quarters" - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/crew_quarters/heads/chief - name = "\improper Engineering - CE's Office" - icon_state = "head_quarters" - -/area/crew_quarters/heads/hos - name = "\improper Security - HoS' Office" - icon_state = "head_quarters" - -/area/crew_quarters/heads/cmo - name = "\improper Medbay - CMO's Office" - icon_state = "head_quarters" - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/crew_quarters/courtroom - name = "\improper Courtroom" - icon_state = "courtroom" - -/area/mint - name = "\improper Mint" - icon_state = "green" - -/area/comms - name = "\improper Communications Relay" - icon_state = "tcomsatcham" - -/area/server - name = "\improper Research Server Room" - icon_state = "server" - -//Civilian - -/area/crew_quarters - name = "\improper Dormitories" - icon_state = "Sleep" - ambience = AMBIENCE_GENERIC - forbid_events = TRUE - -/area/crew_quarters/toilet - name = "\improper Dormitory Toilets" - icon_state = "toilet" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/sleep - name = "\improper Dormitories" - icon_state = "Sleep" - flags = RAD_SHIELDED - -/area/crew_quarters/sleep/Apartment_A1 - name = "\improper Apartment A1" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A2 - name = "\improper Apartment A2" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A3 - name = "\improper Apartment A3" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A4 - name = "\improper Apartment A4" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A5 - name = "\improper Apartment A5" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A6 - name = "\improper Apartment A6" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A7 - name = "\improper Apartment A7`" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_A8 - name = "\improper Apartment A8" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_B1 - name = "\improper Apartment B1" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_B2 - name = "\improper Apartment B2" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Apartment_B3 - name = "\improper Apartment B3" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_1 - name = "\improper Dormitory Room 1" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_2 - name = "\improper Dormitory Room 2" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_3 - name = "\improper Dormitory Room 3" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_4 - name = "\improper Dormitory Room 4" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_5 - name = "\improper Dormitory Room 5" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_6 - name = "\improper Dormitory Room 6" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_7 - name = "\improper Dormitory Room 7" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_8 - name = "\improper Dormitory Room 8" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_9 - name = "\improper Dormitory Room 9" - icon_state = "Sleep" - -/area/crew_quarters/sleep/Dorm_10 - name = "\improper Dormitory Room 10" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_1 - name = "\improper Visitor Room 1" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_2 - name = "\improper Visitor Room 2" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_3 - name = "\improper Visitor Room 3" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_4 - name = "\improper Visitor Room 4" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_5 - name = "\improper Visitor Room 5" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_6 - name = "\improper Visitor Room 6" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_7 - name = "\improper Visitor Room 7" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_8 - name = "\improper Visitor Room 8" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_9 - name = "\improper Visitor Room 9" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_10 - name = "\improper Visitor Room 10" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_11 - name = "\improper Visitor Room 11" - icon_state = "Sleep" - -/area/crew_quarters/sleep/vistor_room_12 - name = "\improper Visitor Room 12" - icon_state = "Sleep" - -/area/crew_quarters/sleep/engi_wash - name = "\improper Engineering Washroom" - icon_state = "toilet" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/sleep/bedrooms - name = "\improper Dormitory Bedroom One" - icon_state = "Sleep" - sound_env = SMALL_SOFTFLOOR - -/area/crew_quarters/sleep/cryo - name = "\improper Cryogenic Storage" - icon_state = "Sleep" - -/area/crew_quarters/sleep/elevator - name = "\improper Main Elevator" - icon_state = "Sleep" - -/area/crew_quarters/sleep_male - name = "\improper Male Dorm" - icon_state = "Sleep" - -/area/crew_quarters/sleep_male/toilet_male - name = "\improper Male Toilets" - icon_state = "toilet" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/sleep_female - name = "\improper Female Dorm" - icon_state = "Sleep" - -/area/crew_quarters/sleep_female/toilet_female - name = "\improper Female Toilets" - icon_state = "toilet" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/locker - name = "\improper Locker Room" - icon_state = "locker" - -/area/crew_quarters/locker/locker_toilet - name = "\improper Locker Toilets" - icon_state = "toilet" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/fitness - name = "\improper Fitness Room" - icon_state = "fitness" - -/area/crew_quarters/longue_area - name = "\improper Lounge" //VOREStation Edit - Muh speeling. - icon_state = "recreation_area" - -/area/crew_quarters/recreation_area - name = "\improper Recreation Area" - icon_state = "recreation_area" - -/area/crew_quarters/recreation_area_hallway - name = "\improper Recreation Area Hallway" - icon_state = "recreation_area_hallway" - -/area/crew_quarters/recreation_area_restroom - name = "\improper Recreation Area Restroom" - icon_state = "recreation_area_restroom" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/pool - name = "\improper Pool" - icon_state = "pool" - -/area/crew_quarters/cafeteria - name = "\improper Cafeteria" - icon_state = "cafeteria" - -/area/crew_quarters/coffee_shop - name = "\improper Coffee Shop" - icon_state = "coffee_shop" - -/area/crew_quarters/kitchen - name = "\improper Kitchen" - icon_state = "kitchen" - -/area/crew_quarters/bar - name = "\improper Bar" - icon_state = "bar" - sound_env = LARGE_SOFTFLOOR - -/area/crew_quarters/barrestroom - name = "\improper Cafeteria Restroom" - icon_state = "bar" - sound_env = SMALL_ENCLOSED - -/area/crew_quarters/theatre - name = "\improper Theatre" - icon_state = "Theatre" - sound_env = LARGE_SOFTFLOOR - -/area/crew_quarters/visitor_lodging - name = "\improper Visitor Lodging" - icon_state = "visitor_lodging" - -/area/crew_quarters/visitor_dining - name = "\improper Visitor Dining" - icon_state = "visitor_dinning" - -/area/crew_quarters/visitor_laundry - name = "\improper Visitor Laundry" - icon_state = "visitor_laundry" - -/area/library - name = "\improper Library" - icon_state = "library" - sound_env = LARGE_SOFTFLOOR - lightswitch = 0 // VOREStation Edit - We like dark libraries - -/area/library_conference_room - name = "\improper Library Conference Room" - icon_state = "library_conference_room" - -/area/chapel - ambience = AMBIENCE_CHAPEL - -/area/chapel/main - name = "\improper Chapel" - icon_state = "chapel" - sound_env = LARGE_ENCLOSED - -/area/chapel/office - name = "\improper Chapel Office" - icon_state = "chapeloffice" - -/area/chapel/chapel_morgue - name = "\improper Chapel Morgue" - icon_state = "chapel_morgue" - -/area/lawoffice - name = "\improper Internal Affairs" - icon_state = "law" - -/area/holodeck_control - name = "\improper Holodeck Control" - icon_state = "holodeck_control" - -/area/vacant/vacant_shop - name = "\improper Vacant Shop" - icon_state = "vacant_shop" - -/area/vacant/vacant_site - name = "\improper Vacant Site" - icon_state = "vacant_site" - -/area/vacant/vacant_site2 - name = "\improper Abandoned Locker Room" - icon_state = "vacant_site" - -/area/holodeck - name = "\improper Holodeck" - icon_state = "Holodeck" - dynamic_lighting = 0 - sound_env = LARGE_ENCLOSED - forbid_events = TRUE - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/holodeck/alphadeck - name = "\improper Holodeck Alpha" - -/area/holodeck/source_plating - name = "\improper Holodeck - Off" - -/area/holodeck/source_emptycourt - name = "\improper Holodeck - Empty Court" - sound_env = SOUND_ENVIRONMENT_ARENA - -/area/holodeck/source_boxingcourt - name = "\improper Holodeck - Boxing Court" - sound_env = SOUND_ENVIRONMENT_ARENA - -/area/holodeck/source_basketball - name = "\improper Holodeck - Basketball Court" - sound_env = SOUND_ENVIRONMENT_ARENA - -/area/holodeck/source_thunderdomecourt - name = "\improper Holodeck - Thunderdome Court" - requires_power = 0 - sound_env = SOUND_ENVIRONMENT_ARENA - -/area/holodeck/source_courtroom - name = "\improper Holodeck - Courtroom" - sound_env = SOUND_ENVIRONMENT_AUDITORIUM - -/area/holodeck/source_beach - name = "\improper Holodeck - Beach" - sound_env = SOUND_ENVIRONMENT_PLAIN - -/area/holodeck/source_burntest - name = "\improper Holodeck - Atmospheric Burn Test" - -/area/holodeck/source_wildlife - name = "\improper Holodeck - Wildlife Simulation" - -/area/holodeck/source_meetinghall - name = "\improper Holodeck - Meeting Hall" - sound_env = SOUND_ENVIRONMENT_AUDITORIUM - -/area/holodeck/source_theatre - name = "\improper Holodeck - Theatre" - sound_env = SOUND_ENVIRONMENT_CONCERT_HALL - -/area/holodeck/source_picnicarea - name = "\improper Holodeck - Picnic Area" - sound_env = SOUND_ENVIRONMENT_PLAIN - -/area/holodeck/source_snowfield - name = "\improper Holodeck - Snow Field" - sound_env = SOUND_ENVIRONMENT_FOREST - -/area/holodeck/source_desert - name = "\improper Holodeck - Desert" - sound_env = SOUND_ENVIRONMENT_PLAIN - -/area/holodeck/source_space - name = "\improper Holodeck - Space" - has_gravity = 0 - sound_env = SPACE - -/area/holodeck/source_chess - name = "\improper Holodeck - Chessboard" - - -//Engineering - -/area/engineering/ - name = "\improper Engineering" - icon_state = "engineering" - ambience = AMBIENCE_ENGINEERING - -/area/engineering/atmos - name = "\improper Atmospherics" - icon_state = "atmos" - sound_env = LARGE_ENCLOSED - ambience = AMBIENCE_ATMOS - -/area/engineering/atmos/monitoring - name = "\improper Atmospherics Monitoring Room" - icon_state = "atmos_monitoring" - sound_env = STANDARD_STATION - -/area/engineering/atmos/storage - name = "\improper Atmospherics Storage" - icon_state = "atmos_storage" - sound_env = SMALL_ENCLOSED - -/area/engineering/drone_fabrication - name = "\improper Engineering Drone Fabrication" - icon_state = "drone_fab" - sound_env = SMALL_ENCLOSED - -/area/engineering/engine_smes - name = "\improper Engineering SMES" - icon_state = "engine_smes" - sound_env = SMALL_ENCLOSED - -/area/engineering/engine_room - name = "\improper Engine Room" - icon_state = "engine" - sound_env = LARGE_ENCLOSED - forbid_events = TRUE - -/area/engineering/engine_airlock - name = "\improper Engine Room Airlock" - icon_state = "engine" - -/area/engineering/engine_monitoring - name = "\improper Engine Monitoring Room" - icon_state = "engine_monitoring" - -/area/engineering/engine_waste - name = "\improper Engine Waste Handling" - icon_state = "engine_waste" - -/area/engineering/engineering_monitoring - name = "\improper Engineering Monitoring Room" - icon_state = "engine_monitoring" - -/area/engineering/foyer - name = "\improper Engineering Foyer" - icon_state = "engineering_foyer" - -/area/engineering/storage - name = "\improper Engineering Storage" - icon_state = "engineering_storage" - -/area/engineering/break_room - name = "\improper Engineering Break Room" - icon_state = "engineering_break" - sound_env = MEDIUM_SOFTFLOOR - -/area/engineering/engine_eva - name = "\improper Engine EVA" - icon_state = "engine_eva" - -/area/engineering/locker_room - name = "\improper Engineering Locker Room" - icon_state = "engineering_locker" - -/area/engineering/workshop - name = "\improper Engineering Workshop" - icon_state = "engineering_workshop" - -/area/engineering/aft_hallway - name = "\improper Engineering Aft Hallway" - icon_state = "engineering_aft_hallway" - - -//Solars - -/area/solar - requires_power = 1 - always_unpowered = 1 - dynamic_lighting = 0 - ambience = AMBIENCE_SPACE - -/area/solar/auxport - name = "\improper Fore Port Solar Array" - icon_state = "panelsA" - -/area/solar/auxstarboard - name = "\improper Fore Starboard Solar Array" - icon_state = "panelsA" - -/area/solar/fore - name = "\improper Fore Solar Array" - icon_state = "yellow" - -/area/solar/aft - name = "\improper Aft Solar Array" - icon_state = "aft" - -/area/solar/starboard - name = "\improper Aft Starboard Solar Array" - icon_state = "panelsS" - -/area/solar/port - name = "\improper Aft Port Solar Array" - icon_state = "panelsP" - -/area/maintenance/auxsolarport - name = "Solar Maintenance - Fore Port" - icon_state = "SolarcontrolP" - sound_env = SMALL_ENCLOSED - -/area/maintenance/starboardsolar - name = "Solar Maintenance - Aft Starboard" - icon_state = "SolarcontrolS" - sound_env = SMALL_ENCLOSED - -/area/maintenance/portsolar - name = "Solar Maintenance - Aft Port" - icon_state = "SolarcontrolP" - sound_env = SMALL_ENCLOSED - -/area/maintenance/auxsolarstarboard - name = "Solar Maintenance - Fore Starboard" - icon_state = "SolarcontrolS" - sound_env = SMALL_ENCLOSED - -/area/maintenance/foresolar - name = "Solar Maintenance - Fore" - icon_state = "SolarcontrolA" - sound_env = SMALL_ENCLOSED - -/area/assembly/chargebay - name = "\improper Mech Bay" - icon_state = "mechbay" - -/area/assembly/showroom - name = "\improper Robotics Showroom" - icon_state = "showroom" - -/area/assembly/robotics - name = "\improper Robotics Lab" - icon_state = "robotics" - -/area/assembly/assembly_line //Derelict Assembly Line - name = "\improper Assembly Line" - icon_state = "ass_line" - power_equip = 0 - power_light = 0 - power_environ = 0 - -//Teleporter - -/area/teleporter - name = "\improper Teleporter" - icon_state = "teleporter" - music = "signal" - flags = RAD_SHIELDED - -/area/gateway - name = "\improper Gateway" - icon_state = "teleporter" - music = "signal" - -/area/AIsattele - name = "\improper AI Satellite Teleporter Room" - icon_state = "teleporter" - music = "signal" - -//MedBay - -/area/medical/medbay - name = "\improper Medbay Hallway - Port" - icon_state = "medbay" - music = 'sound/ambience/signal.ogg' - -//Medbay is a large area, these additional areas help level out APC load. -/area/medical/medbay2 - name = "\improper Medbay Hallway - Starboard" - icon_state = "medbay2" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay3 - name = "\improper Medbay Hallway - Fore" - icon_state = "medbay3" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay4 - name = "\improper Medbay Hallway - Aft" - icon_state = "medbay4" - music = 'sound/ambience/signal.ogg' - -/area/medical/biostorage - name = "\improper Secondary Storage" - icon_state = "medbay2" - music = 'sound/ambience/signal.ogg' - -/area/medical/reception - name = "\improper Medbay Reception" - icon_state = "medbay" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay_emt_bay - name = "\improper Medical EMT Bay" - icon_state = "medbay_emt_bay" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay_primary_storage - name = "\improper Medbay Primary Storage" - icon_state = "medbay_primary_storage" - music = 'sound/ambience/signal.ogg' - -/area/medical/psych - name = "\improper Psych Room" - icon_state = "medbay3" - music = 'sound/ambience/signal.ogg' - -/area/crew_quarters/medbreak - name = "\improper Break Room" - icon_state = "medbay3" - music = 'sound/ambience/signal.ogg' - -/area/crew_quarters/medical_restroom - name = "\improper Medbay Restroom" - icon_state = "medbay_restroom" - sound_env = SMALL_ENCLOSED - -/area/medical/patients_rooms - name = "\improper Patient's Rooms" - icon_state = "patients" - -/area/medical/ward - name = "\improper Recovery Ward" - icon_state = "patients" - -/area/medical/patient_a - name = "\improper Patient A" - icon_state = "medbay_patient_room_a" - -/area/medical/patient_b - name = "\improper Patient B" - icon_state = "medbay_patient_room_b" - -/area/medical/patient_c - name = "\improper Patient C" - icon_state = "medbay_patient_room_c" - -/area/medical/patient_d - name = "\improper Patient D" - icon_state = "medbay_patient_room_d" - -/area/medical/patient_e - name = "\improper Patient E" - icon_state = "medbay_patient_room_e" - -/area/medical/patient_wing - name = "\improper Patient Wing" - icon_state = "patients" - -/area/medical/cmostore - name = "\improper Secure Storage" - icon_state = "CMO" - -/area/medical/robotics - name = "\improper Robotics" - icon_state = "medresearch" - -/area/medical/virology - name = "\improper Virology" - icon_state = "virology" - -/area/medical/virologyaccess - name = "\improper Virology Access" - icon_state = "virology" - -/area/medical/morgue - name = "\improper Morgue" - icon_state = "morgue" - -/area/medical/chemistry - name = "\improper Chemistry" - icon_state = "chem" - -/area/medical/surgery - name = "\improper Operating Theatre 1" - icon_state = "surgery" - flags = AREA_FLAG_IS_NOT_PERSISTENT //This WOULD become a filth pit - -/area/medical/surgery2 - name = "\improper Operating Theatre 2" - icon_state = "surgery" - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/medical/surgeryobs - name = "\improper Operation Observation Room" - icon_state = "surgery" - -/area/medical/surgeryprep - name = "\improper Pre-Op Prep Room" - icon_state = "surgery" - -/area/medical/surgery_hallway - name = "\improper Surgery Hallway" - icon_state = "surgery_hallway" - -/area/medical/surgery_storage - name = "\improper Surgery Storage" - icon_state = "surgery_storage" - -/area/medical/cryo - name = "\improper Cryogenics" - icon_state = "cryo" - -/area/medical/exam_room - name = "\improper Exam Room" - icon_state = "exam_room" - -/area/medical/genetics - name = "\improper Genetics Lab" - icon_state = "genetics" - -/area/medical/genetics_cloning - name = "\improper Cloning Lab" - icon_state = "cloning" - -/area/medical/sleeper - name = "\improper Emergency Treatment Centre" - icon_state = "exam_room" - flags = AREA_FLAG_IS_NOT_PERSISTENT //Trust me. - -/area/medical/first_aid_station_starboard - name = "\improper Starboard First-Aid Station" - icon_state = "medbay2" - -/area/medical/first_aid_station - name = "\improper Port First-Aid Station" - icon_state = "medbay2" - - - -//Security - -/area/security/main - name = "\improper Security Office" - icon_state = "security" - -/area/security/lobby - name = "\improper Security Lobby" - icon_state = "security" - -/area/security/brig - name = "\improper Security - Brig" - icon_state = "brig" - -/area/security/brig/prison_break() - for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) - temp_closet.locked = 0 - temp_closet.icon_state = "closed_unlocked" - for(var/obj/machinery/door_timer/temp_timer in src) - temp_timer.timer_duration = 1 - ..() - -/area/security/prison - name = "\improper Security - Prison Wing" - icon_state = "sec_prison" - -/area/security/prison/prison_break() - for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) - temp_closet.locked = 0 - temp_closet.icon_state = "closed_unlocked" - for(var/obj/machinery/door_timer/temp_timer in src) - temp_timer.timer_duration = 1 - ..() - -/area/security/warden - name = "\improper Security - Warden's Office" - icon_state = "Warden" - -/area/security/armoury - name = "\improper Security - Armory" - icon_state = "armory" - ambience = AMBIENCE_HIGHSEC - -/area/security/briefing_room - name = "\improper Security - Briefing Room" - icon_state = "brig" - -/area/security/evidence_storage - name = "\improper Security - Equipment Storage" - icon_state = "security_equipment_storage" - -/area/security/evidence_storage - name = "\improper Security - Evidence Storage" - icon_state = "evidence_storage" - -/area/security/interrogation - name = "\improper Security - Interrogation" - icon_state = "interrogation" - -/area/security/riot_control - name = "\improper Security - Riot Control" - icon_state = "riot_control" - -/area/security/detectives_office - name = "\improper Security - Forensic Office" - icon_state = "detective" - sound_env = MEDIUM_SOFTFLOOR - -/area/security/range - name = "\improper Security - Firing Range" - icon_state = "firingrange" - -/area/security/security_aid_station - name = "\improper Security - Security Aid Station" - icon_state = "security_aid_station" - -/area/security/security_bathroom - name = "\improper Security - Restroom" - icon_state = "security_bathroom" - sound_env = SMALL_ENCLOSED - -/area/security/security_cell_hallway - name = "\improper Security - Cell Hallway" - icon_state = "security_cell_hallway" - -/area/security/security_equiptment_storage - name = "\improper Security - Equipment Storage" - icon_state = "security_equip_storage" - -/area/security/security_lockerroom - name = "\improper Security - Locker Room" - icon_state = "security_lockerroom" - -/area/security/security_processing - name = "\improper Security - Security Processing" - icon_state = "security_processing" - -/area/security/tactical - name = "\improper Security - Tactical Equipment" - icon_state = "Tactical" - ambience = AMBIENCE_HIGHSEC - - -/* - New() - ..() - - spawn(10) //let objects set up first - for(var/turf/turfToGrayscale in src) - if(turfToGrayscale.icon) - var/icon/newIcon = icon(turfToGrayscale.icon) - newIcon.GrayScale() - turfToGrayscale.icon = newIcon - for(var/obj/objectToGrayscale in turfToGrayscale) //1 level deep, means tables, apcs, locker, etc, but not locker contents - if(objectToGrayscale.icon) - var/icon/newIcon = icon(objectToGrayscale.icon) - newIcon.GrayScale() - objectToGrayscale.icon = newIcon -*/ - -/area/security/nuke_storage - name = "\improper Vault" - icon_state = "nuke_storage" - ambience = AMBIENCE_HIGHSEC - -/area/security/checkpoint - name = "\improper Security Checkpoint" - icon_state = "checkpoint1" - -/area/security/checkpoint2 - name = "\improper Security - Arrival Checkpoint" - icon_state = "security" - ambience = AMBIENCE_ARRIVALS - -/area/security/checkpoint/supply - name = "Security Post - Cargo Bay" - icon_state = "checkpoint1" - -/area/security/checkpoint/engineering - name = "Security Post - Engineering" - icon_state = "checkpoint1" - -/area/security/checkpoint/medical - name = "Security Post - Medbay" - icon_state = "checkpoint1" - -/area/security/checkpoint/science - name = "Security Post - Science" - icon_state = "checkpoint1" - -/area/security/vacantoffice - name = "\improper Vacant Office" - icon_state = "security" - -/area/security/vacantoffice2 - name = "\improper Vacant Office" - icon_state = "security" - -/area/janitor/ - name = "\improper Custodial Closet" - icon_state = "janitor" - -/area/hydroponics - name = "\improper Hydroponics" - icon_state = "hydro" - -/area/hydroponics/cafegarden - name = "\improper Cafeteria Garden" - icon_state = "cafe_garden" - -/area/hydroponics/garden - name = "\improper Garden" - icon_state = "garden" - -// SUPPLY - -/area/quartermaster - name = "\improper Quartermasters" - icon_state = "quart" - -/area/quartermaster/office - name = "\improper Cargo Office" - icon_state = "quartoffice" - -/area/quartermaster/storage - name = "\improper Cargo Bay" - icon_state = "quartstorage" - sound_env = LARGE_ENCLOSED - -/area/quartermaster/foyer - name = "\improper Cargo Bay Foyer" - icon_state = "quartstorage" - -/area/quartermaster/warehouse - name = "\improper Cargo Warehouse" - icon_state = "quartstorage" - -/area/quartermaster/qm - name = "\improper Cargo - Quartermaster's Office" - icon_state = "quart" - -/area/quartermaster/delivery - name = "\improper Cargo - Delivery Office" - icon_state = "quart" - flags = AREA_FLAG_IS_NOT_PERSISTENT //So trash doesn't pile up too hard. - -/area/quartermaster/miningdock - name = "\improper Cargo Mining Dock" - icon_state = "mining" - - -// SCIENCE - -/area/rnd/research - name = "\improper Research and Development" - icon_state = "research" - -/area/rnd/research_foyer - name = "\improper Research Foyer" - icon_state = "research_foyer" - -/area/rnd/research_foyer_auxiliary - name = "\improper Research Foyer Auxiliary" - icon_state = "research_foyer_aux" - -/area/rnd/research_restroom - name = "\improper Research Restroom" - icon_state = "research_restroom" - sound_env = SMALL_ENCLOSED - -/area/rnd/research_storage - name = "\improper Research Storage" - icon_state = "research_storage" - -/area/rnd/docking - name = "\improper Research Dock" - icon_state = "research_dock" - -/area/rnd/lab - name = "\improper Research Lab" - icon_state = "toxlab" - -/area/rnd/rdoffice - name = "\improper Research Director's Office" - icon_state = "head_quarters" - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/rnd/supermatter - name = "\improper Supermatter Lab" - icon_state = "toxlab" - -/area/rnd/xenobiology - name = "\improper Xenobiology Lab" - icon_state = "xeno_lab" - -/area/rnd/xenobiology/hallway - name = "\improper Xenobiology hallway" - icon_state = "xeno_lab" - -/area/rnd/xenobiology/storage - name = "\improper Xenobiology storage" - icon_state = "xeno_lab" - -/area/rnd/xenobiology/xenoflora_storage - name = "\improper Xenoflora Storage" - icon_state = "xeno_f_store" - -/area/rnd/xenobiology/xenoflora - name = "\improper Xenoflora Lab" - icon_state = "xeno_f_lab" - -/area/rnd/storage - name = "\improper Toxins Storage" - icon_state = "toxstorage" - -/area/rnd/test_area - name = "\improper Toxins Test Area" - icon_state = "toxtest" - -/area/rnd/mixing - name = "\improper Toxins Mixing Room" - icon_state = "toxmix" - -/area/rnd/misc_lab - name = "\improper Miscellaneous Research" - icon_state = "toxmisc" - -/area/rnd/workshop - name = "\improper Workshop" - icon_state = "sci_workshop" - -/area/toxins/server - name = "\improper Server Room" - icon_state = "server" - - -//Storage - -/area/storage/tools - name = "Auxiliary Tool Storage" - icon_state = "storage" - -/area/storage/primary - name = "Primary Tool Storage" - icon_state = "primarystorage" - -/area/storage/autolathe - name = "Autolathe Storage" - icon_state = "storage" - -/area/storage/art - name = "Art Supply Storage" - icon_state = "storage" - -/area/storage/auxillary - name = "Auxillary Storage" - icon_state = "auxstorage" - -/area/storage/eva - name = "EVA Storage" - icon_state = "eva" - -/area/storage/secure - name = "Secure Storage" - icon_state = "storage" - -/area/storage/emergency_storage/emergency - name = "Starboard Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency_storage/emergency2 - name = "Port Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency_storage/emergency3 - name = "Central Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency_storage/emergency4 - name = "Civilian Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency_storage/emergency5 - name = "Dock Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency_storage/emergency6 - name = "Cargo Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/tech - name = "Technical Storage" - icon_state = "auxstorage" - -/area/storage/testroom - requires_power = 0 - name = "\improper Test Room" - icon_state = "storage" - -//DJSTATION - -/area/djstation - name = "\improper Listening Post" - icon_state = "LP" - ambience = AMBIENCE_TECH_RUINS - -/area/djstation/solars - name = "\improper Listening Post Solars" - icon_state = "LPS" - ambience = AMBIENCE_TECH_RUINS - -//DERELICT - -/area/derelict - name = "\improper Derelict Station" - icon_state = "storage" - ambience = AMBIENCE_RUINS - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/derelict/hallway/primary - name = "\improper Derelict Primary Hallway" - icon_state = "hallP" - -/area/derelict/hallway/secondary - name = "\improper Derelict Secondary Hallway" - icon_state = "hallS" - -/area/derelict/arrival - name = "\improper Derelict Arrival Centre" - icon_state = "yellow" - -/area/derelict/storage/equipment - name = "Derelict Equipment Storage" - -/area/derelict/storage/storage_access - name = "Derelict Storage Access" - -/area/derelict/storage/engine_storage - name = "Derelict Engine Storage" - icon_state = "green" - -/area/derelict/bridge - name = "\improper Derelict Control Room" - icon_state = "bridge" - -/area/derelict/secret - name = "\improper Derelict Secret Room" - icon_state = "library" - -/area/derelict/bridge/access - name = "Derelict Control Room Access" - icon_state = "auxstorage" - -/area/derelict/bridge/ai_upload - name = "\improper Derelict Computer Core" - icon_state = "ai" - -/area/derelict/solar_control - name = "\improper Derelict Solar Control" - icon_state = "engine" - -/area/derelict/crew_quarters - name = "\improper Derelict Crew Quarters" - icon_state = "fitness" - -/area/derelict/medical - name = "Derelict Medbay" - icon_state = "medbay" - -/area/derelict/medical/morgue - name = "\improper Derelict Morgue" - icon_state = "morgue" - -/area/derelict/medical/chapel - name = "\improper Derelict Chapel" - icon_state = "chapel" - -/area/derelict/teleporter - name = "\improper Derelict Teleporter" - icon_state = "teleporter" - -/area/derelict/eva - name = "Derelict EVA Storage" - icon_state = "eva" - -/area/derelict/ship - name = "\improper Abandoned Ship" - icon_state = "yellow" - -/area/solar/derelict_starboard - name = "\improper Derelict Starboard Solar Array" - icon_state = "panelsS" - -/area/solar/derelict_aft - name = "\improper Derelict Aft Solar Array" - icon_state = "aft" - -/area/derelict/singularity_engine - name = "\improper Derelict Singularity Engine" - icon_state = "engine" - -//HALF-BUILT STATION (REPLACES DERELICT IN BAYCODE, ABOVE IS LEFT FOR DOWNSTREAM) - -/area/shuttle/constructionsite - name = "\improper Construction Site Shuttle" - icon_state = "yellow" - dynamic_lighting = 0 - base_turf = /turf/simulated/mineral/floor/ignore_mapgen - -/area/shuttle/constructionsite/station - name = "\improper Construction Site Shuttle" - -/area/shuttle/constructionsite/site - name = "\improper Construction Site Shuttle" - -/area/constructionsite - name = "\improper Construction Site" - icon_state = "storage" - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/constructionsite/storage - name = "\improper Construction Site Storage Area" - -/area/constructionsite/science - name = "\improper Construction Site Research" - -/area/constructionsite/bridge - name = "\improper Construction Site Bridge" - icon_state = "bridge" - -/area/constructionsite/maintenance - name = "\improper Construction Site Maintenance" - icon_state = "yellow" - -/area/constructionsite/hallway/aft - name = "\improper Construction Site Aft Hallway" - icon_state = "hallP" - -/area/constructionsite/hallway/fore - name = "\improper Construction Site Fore Hallway" - icon_state = "hallS" - -/area/constructionsite/atmospherics - name = "\improper Construction Site Atmospherics" - icon_state = "green" - -/area/constructionsite/medical - name = "\improper Construction Site Medbay" - icon_state = "medbay" - -/area/constructionsite/ai - name = "\improper Construction Computer Core" - icon_state = "ai" - -/area/constructionsite/engineering - name = "\improper Construction Site Engine Bay" - icon_state = "engine" - -/area/solar/constructionsite - name = "\improper Construction Site Solars" - icon_state = "aft" - -/area/constructionsite/teleporter - name = "Construction Site Teleporter" - icon_state = "yellow" - - -//area/constructionsite -// name = "\improper Construction Site Shuttle" - -//area/constructionsite -// name = "\improper Construction Site Shuttle" - - -//Construction - -/area/construction - name = "\improper Engineering Construction Area" - icon_state = "yellow" - -/area/construction/supplyshuttle - name = "\improper Supply Shuttle" - icon_state = "yellow" - -/area/construction/quarters - name = "\improper Engineer's Quarters" - icon_state = "yellow" - -/area/construction/qmaint - name = "Maintenance" - icon_state = "yellow" - -/area/construction/hallway - name = "\improper Hallway" - icon_state = "yellow" - -/area/construction/solars - name = "\improper Solar Panels" - icon_state = "yellow" - -/area/construction/solarscontrol - name = "\improper Solar Panel Control" - icon_state = "yellow" - -/area/construction/Storage - name = "Construction Site Storage" - icon_state = "yellow" - -//AI - -/area/ai_monitored/storage/eva - name = "EVA Storage" - icon_state = "eva" - -/area/ai_monitored/storage/secure - name = "Secure Storage" - icon_state = "storage" - ambience = AMBIENCE_HIGHSEC - -/area/ai_monitored/storage/emergency - name = "Emergency Storage" - icon_state = "storage" - -/area/ai_monitored/storage/emergency/eva - name = "Emergency EVA" - icon_state = "storage" - -/area/ai_upload - name = "\improper AI Upload Chamber" - icon_state = "ai_upload" - ambience = AMBIENCE_AI - -/area/ai_upload_foyer - name = "AI Upload Access" - icon_state = "ai_foyer" - sound_env = SMALL_ENCLOSED - ambience = AMBIENCE_AI - -/area/ai_server_room - name = "Messaging Server Room" - icon_state = "ai_server" - sound_env = SMALL_ENCLOSED - ambience = AMBIENCE_AI - -/area/ai - name = "\improper AI Chamber" - icon_state = "ai_chamber" - ambience = AMBIENCE_AI - -/area/ai_cyborg_station - name = "\improper Cyborg Station" - icon_state = "ai_cyborg" - sound_env = SMALL_ENCLOSED - ambience = AMBIENCE_AI - -/area/aisat - name = "\improper AI Satellite" - icon_state = "ai" - ambience = AMBIENCE_AI - -/area/aisat_interior - name = "\improper AI Satellite" - icon_state = "ai" - ambience = AMBIENCE_AI // The lack of inheritence hurts my soul. - -/area/AIsatextFP - name = "\improper AI Sat Ext" - icon_state = "storage" - luminosity = 1 - dynamic_lighting = 0 - ambience = AMBIENCE_AI - -/area/AIsatextFS - name = "\improper AI Sat Ext" - icon_state = "storage" - luminosity = 1 - dynamic_lighting = 0 - ambience = AMBIENCE_AI - -/area/AIsatextAS - name = "\improper AI Sat Ext" - icon_state = "storage" - luminosity = 1 - dynamic_lighting = 0 - ambience = AMBIENCE_AI - -/area/AIsatextAP - name = "\improper AI Sat Ext" - icon_state = "storage" - luminosity = 1 - dynamic_lighting = 0 - ambience = AMBIENCE_AI - -/area/NewAIMain - name = "\improper AI Main New" - icon_state = "storage" - ambience = AMBIENCE_AI - - - -//Misc - -/area/wreck - ambience = AMBIENCE_RUINS - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/wreck/ai - name = "\improper AI Chamber" - icon_state = "ai" - ambience = AMBIENCE_TECH_RUINS - -/area/wreck/main - name = "\improper Wreck" - icon_state = "storage" - -/area/wreck/engineering - name = "\improper Power Room" - icon_state = "engine" - ambience = AMBIENCE_TECH_RUINS - -/area/wreck/bridge - name = "\improper Bridge" - icon_state = "bridge" - ambience = AMBIENCE_TECH_RUINS - -/area/generic - name = "Unknown" - icon_state = "storage" - - - -// Telecommunications Satellite -/area/tcommsat/ - ambience = AMBIENCE_ENGINEERING - -/area/tcommsat/entrance - name = "\improper Telecomms Teleporter" - icon_state = "tcomsatentrance" - -/area/tcommsat/chamber - name = "\improper Telecomms Central Compartment" - icon_state = "tcomsatcham" - -/area/tcomsat - name = "\improper Telecomms Satellite" - icon_state = "tcomsatlob" - ambience = AMBIENCE_ENGINEERING - -/area/tcomfoyer - name = "\improper Telecomms Foyer" - icon_state = "tcomsatfoyer" - ambience = AMBIENCE_ENGINEERING - -/area/tcomwest - name = "\improper Telecommunications Satellite West Wing" - icon_state = "tcomsatwest" - ambience = AMBIENCE_ENGINEERING - -/area/tcomeast - name = "\improper Telecommunications Satellite East Wing" - icon_state = "tcomsateast" - ambience = AMBIENCE_ENGINEERING - -/area/tcommsat/computer - name = "\improper Telecomms Control Room" - icon_state = "tcomsatcomp" - -/area/tcommsat/lounge - name = "\improper Telecommunications Satellite Lounge" - icon_state = "tcomsatlounge" - -/area/tcommsat/powercontrol - name = "\improper Telecommunications Power Control" - icon_state = "tcomsatwest" - - -// Away Missions -/area/awaymission - name = "\improper Strange Location" - icon_state = "away" - ambience = AMBIENCE_FOREBODING - flags = AREA_FLAG_IS_NOT_PERSISTENT - -/area/awaymission/gateway - name = "\improper Gateway" - icon_state = "teleporter" - music = "signal" - -/area/awaymission/example - name = "\improper Strange Station" - icon_state = "away" - -/area/awaymission/wwmines - name = "\improper Wild West Mines" - icon_state = "away1" - luminosity = 1 - requires_power = 0 - -/area/awaymission/wwgov - name = "\improper Wild West Mansion" - icon_state = "away2" - luminosity = 1 - requires_power = 0 - -/area/awaymission/wwrefine - name = "\improper Wild West Refinery" - icon_state = "away3" - luminosity = 1 - requires_power = 0 - -/area/awaymission/wwvault - name = "\improper Wild West Vault" - icon_state = "away3" - luminosity = 0 - -/area/awaymission/wwvaultdoors - name = "\improper Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power - icon_state = "away2" - requires_power = 0 - luminosity = 0 - -/area/awaymission/desert - name = "Mars" - icon_state = "away" - -/area/awaymission/BMPship1 - name = "\improper Aft Block" - icon_state = "away1" - -/area/awaymission/BMPship2 - name = "\improper Midship Block" - icon_state = "away2" - -/area/awaymission/BMPship3 - name = "\improper Fore Block" - icon_state = "away3" - -/area/awaymission/spacebattle - name = "\improper Space Battle" - icon_state = "away" - requires_power = 0 - -/area/awaymission/spacebattle/cruiser - name = "\improper NanoTrasen Cruiser" - -/area/awaymission/spacebattle/syndicate1 - name = "\improper Syndicate Assault Ship 1" - -/area/awaymission/spacebattle/syndicate2 - name = "\improper Syndicate Assault Ship 2" - -/area/awaymission/spacebattle/syndicate3 - name = "\improper Syndicate Assault Ship 3" - -/area/awaymission/spacebattle/syndicate4 - name = "\improper Syndicate War Sphere 1" - -/area/awaymission/spacebattle/syndicate5 - name = "\improper Syndicate War Sphere 2" - -/area/awaymission/spacebattle/syndicate6 - name = "\improper Syndicate War Sphere 3" - -/area/awaymission/spacebattle/syndicate7 - name = "\improper Syndicate Fighter" - -/area/awaymission/spacebattle/secret - name = "\improper Hidden Chamber" - -/area/awaymission/listeningpost - name = "\improper Listening Post" - icon_state = "away" - requires_power = 0 - -/area/awaymission/beach - name = "Beach" - icon_state = "null" - luminosity = 1 - dynamic_lighting = 0 - requires_power = 0 - -///////////////////////////////////////////////////////////////////// -/* - Lists of areas to be used with is_type_in_list. - Used in gamemodes code at the moment. --rastaf0 -*/ - -// CENTCOM -var/list/centcom_areas = list ( - /area/centcom, - /area/shuttle/escape/centcom, - /area/shuttle/escape_pod1/centcom, - /area/shuttle/escape_pod2/centcom, - /area/shuttle/escape_pod3/centcom, - /area/shuttle/escape_pod5/centcom, - /area/shuttle/transport1/centcom, - /area/shuttle/administration/centcom, - /area/shuttle/specops/centcom, -) - -//SPACE STATION 13 -var/list/the_station_areas = list ( - /area/shuttle/arrival, - /area/shuttle/escape/station, - /area/shuttle/escape_pod1/station, - /area/shuttle/escape_pod2/station, - /area/shuttle/escape_pod3/station, - /area/shuttle/escape_pod5/station, - /area/shuttle/mining/station, - /area/shuttle/transport1/station, - // /area/shuttle/transport2/station, - /area/shuttle/prison/station, - /area/shuttle/administration/station, - /area/shuttle/specops/station, - /area/maintenance, - /area/hallway, - /area/bridge, - /area/crew_quarters, - /area/holodeck, - /area/mint, - /area/library, - /area/chapel, - /area/lawoffice, - /area/engineering, - /area/solar, - /area/assembly, - /area/teleporter, - /area/medical, - /area/security, - /area/quartermaster, - /area/janitor, - /area/hydroponics, - /area/rnd, - /area/storage, - /area/construction, - /area/ai_monitored/storage/eva, - /area/ai_monitored/storage/secure, - /area/ai_monitored/storage/emergency, - /area/ai_upload, - /area/ai_upload_foyer, - /area/ai -) - - - - -/area/beach - name = "Keelin's private beach" - icon_state = "yellow" - luminosity = 1 - dynamic_lighting = 0 +/* + +### This file contains a list of all the areas in your station. Format is as follows: + +/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want) + name = "NICE NAME" (not required but makes things really nice) + icon = "ICON FILENAME" (defaults to areas.dmi) + icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) + requires_power = 0 (defaults to 1) + music = "music/music.ogg" (defaults to "music/music.ogg") + +NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0 + +*/ + +/*-----------------------------------------------------------------------------*/ + +///////// +//SPACE// +///////// + +/area/space + name = "\improper Space" + icon_state = "space" + requires_power = 1 + always_unpowered = 1 + dynamic_lighting = 0 + has_gravity = 0 + power_light = 0 + power_equip = 0 + power_environ = 0 + ambience = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/main.ogg','sound/music/traitor.ogg','sound/ambience/space/space_serithi.ogg','sound/music/freefallin.mid') + base_turf = /turf/space + ambience = AMBIENCE_SPACE + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/space/atmosalert() + return + +/area/space/fire_alert() + return + +/area/space/fire_reset() + return + +/area/space/readyalert() + return + +/area/space/partyalert() + return + +/area/arrival + requires_power = 0 + +/area/arrival/start + name = "\improper Arrival Area" + icon_state = "start" + +/area/admin + name = "\improper Admin room" + icon_state = "start" + + + +//////////// +//SHUTTLES// +//////////// +//Shuttles only need starting area, movement is handled by landmarks +//All shuttles should now be under shuttle since we have smooth-wall code. + +/area/shuttle + requires_power = 0 + flags = RAD_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT + sound_env = SMALL_ENCLOSED + base_turf = /turf/space + forbid_events = TRUE + +/area/shuttle/arrival + name = "\improper Arrival Shuttle" + ambience = AMBIENCE_ARRIVALS + +/area/shuttle/supply + name = "\improper Supply Shuttle" + icon_state = "shuttle2" + +/area/shuttle/escape + name = "\improper Emergency Shuttle" + music = "music/escape.ogg" + +/area/shuttle/escape_pod1 + name = "\improper Escape Pod One" + music = "music/escape.ogg" + +/area/shuttle/escape_pod2 + name = "\improper Escape Pod Two" + music = "music/escape.ogg" + +/area/shuttle/escape_pod3 + name = "\improper Escape Pod Three" + music = "music/escape.ogg" + +/area/shuttle/escape_pod4 + name = "\improper Escape Pod Four" + music = "music/escape.ogg" + +/area/shuttle/escape_pod5 + name = "\improper Escape Pod Five" + music = "music/escape.ogg" + +/area/shuttle/escape_pod6 + name = "\improper Escape Pod Six" + music = "music/escape.ogg" + +/area/shuttle/large_escape_pod1 + name = "\improper Large Escape Pod One" + music = "music/escape.ogg" + +/area/shuttle/large_escape_pod2 + name = "\improper Large Escape Pod Two" + music = "music/escape.ogg" + +/area/shuttle/cryo + name = "\improper Cryogenic Storage" + +/area/shuttle/mining + name = "\improper Mining Elevator" + music = "music/escape.ogg" + dynamic_lighting = 0 + base_turf = /turf/simulated/mineral/floor/ignore_mapgen + +/area/shuttle/transport1/centcom + icon_state = "shuttle" + name = "\improper Transport Shuttle CentCom" + +/area/shuttle/transport1/station + icon_state = "shuttle" + name = "\improper Transport Shuttle" + +/area/shuttle/alien/base + icon_state = "shuttle" + name = "\improper Alien Shuttle Base" + requires_power = 1 + +/area/shuttle/alien/mine + icon_state = "shuttle" + name = "\improper Alien Shuttle Mine" + requires_power = 1 + +/area/shuttle/prison/ + name = "\improper Prison Shuttle" + +/area/shuttle/prison/station + icon_state = "shuttle" + +/area/shuttle/prison/prison + icon_state = "shuttle2" + +/area/shuttle/specops/centcom + name = "\improper Special Ops Shuttle" + icon_state = "shuttlered" + +/area/shuttle/specops/station + name = "\improper Special Ops Shuttle" + icon_state = "shuttlered2" + +/area/shuttle/syndicate_elite/mothership + name = "\improper Merc Elite Shuttle" + icon_state = "shuttlered" + +/area/shuttle/syndicate_elite/station + name = "\improper Merc Elite Shuttle" + icon_state = "shuttlered2" + +/area/shuttle/administration/centcom + name = "Centcom Large Bay (AS)" //VOREStation Edit + icon_state = "shuttlered" + +/area/shuttle/administration/station + name = "NSB Adephagia (AS)" //VOREStation Edit + icon_state = "shuttlered2" + +/area/shuttle/trade + name = "\improper Trade Station" + icon_state = "red" + dynamic_lighting = 0 + +/area/shuttle/trade/centcom + name = "\improper Trade Shuttle CentCom" + icon_state = "shuttlered" + +/area/shuttle/trade/station + name = "\improper Cryogaia Commerce Pad" + icon_state = "shuttlered" + +/area/shuttle/thunderdome + name = "honk" + +/area/shuttle/research + name = "\improper Research Elevator" + music = "music/escape.ogg" + dynamic_lighting = 0 + base_turf = /turf/simulated/mineral/floor/ignore_mapgen + +/area/airtunnel1/ // referenced in airtunnel.dm:759 + +/area/dummy/ // Referenced in engine.dm:261 + +// === end remove + +/area/alien + name = "\improper Alien base" + icon_state = "yellow" + requires_power = 0 + flags = AREA_FLAG_IS_NOT_PERSISTENT + +// CENTCOM + +/area/centcom + name = "\improper CentCom" + icon_state = "centcom" + requires_power = 0 + dynamic_lighting = 0 + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/centcom/control + name = "\improper CentCom Control" + +/area/centcom/evac + name = "\improper CentCom Emergency Shuttle" + +/area/centcom/suppy + name = "\improper CentCom Supply Shuttle" + +/area/centcom/ferry + name = "\improper CentCom Transport Shuttle" + +/area/centcom/shuttle + name = "\improper CentCom Administration Shuttle" + +/area/centcom/test + name = "\improper CentCom Testing Facility" + +/area/centcom/living + name = "\improper CentCom Living Quarters" + +/area/centcom/specops + name = "\improper CentCom Special Ops" + +/area/centcom/creed + name = "Creed's Office" + +/area/centcom/holding + name = "\improper Holding Facility" + +/area/centcom/terminal + name = "\improper Docking Terminal" + icon_state = "centcom_dock" + ambience = AMBIENCE_ARRIVALS + +/area/centcom/tram + name = "\improper Tram Station" + ambience = AMBIENCE_ARRIVALS + +/area/centcom/security + name = "\improper CentCom Security" + icon_state = "centcom_security" + +/area/centcom/medical + name = "\improper CentCom Medical" + icon_state = "centcom_medical" + +/area/centcom/command + name = "\improper CentCom Command" //Central Command Command totally isn't RAS Syndrome in action. + icon_state = "centcom_command" + ambience = AMBIENCE_HIGHSEC + +/area/centcom/main_hall + name = "\improper Main Hallway" + icon_state = "centcom_hallway1" + +/area/centcom/bar + name = "\improper CentCom Bar" + icon_state = "centcom_crew" + +/area/centcom/restaurant + name = "\improper CentCom Restaurant" + icon_state = "centcom_crew" + +/area/centcom/bathroom + name = "\improper CentCom Bathroom" + icon_state = "centcom_crew" + sound_env = SMALL_ENCLOSED + +//SYNDICATES + +/area/syndicate_mothership + name = "\improper Mercenary Base" + icon_state = "syndie-ship" + requires_power = 0 + dynamic_lighting = 0 + ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/syndicate_mothership/control + name = "\improper Mercenary Control Room" + icon_state = "syndie-control" + +/area/syndicate_mothership/elite_squad + name = "\improper Elite Mercenary Squad" + icon_state = "syndie-elite" + +//EXTRA + +/area/asteroid // -- TLE + name = "\improper Moon" + icon_state = "asteroid" + requires_power = 0 + sound_env = ASTEROID + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/asteroid/cave // -- TLE + name = "\improper Moon - Underground" + icon_state = "cave" + requires_power = 0 + sound_env = ASTEROID + +/area/asteroid/artifactroom + name = "\improper Moon - Artifact" + icon_state = "cave" + sound_env = SMALL_ENCLOSED + +/area/planet/clown + name = "\improper Clown Planet" + icon_state = "honk" + requires_power = 0 + +/area/tdome + name = "\improper Thunderdome" + icon_state = "thunder" + requires_power = 0 + dynamic_lighting = 0 + sound_env = SOUND_ENVIRONMENT_ARENA + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/tdome/tdome1 + name = "\improper Thunderdome (Team 1)" + icon_state = "green" + +/area/tdome/tdome2 + name = "\improper Thunderdome (Team 2)" + icon_state = "yellow" + +/area/tdome/tdomeadmin + name = "\improper Thunderdome (Admin.)" + icon_state = "purple" + +/area/tdome/tdomeobserve + name = "\improper Thunderdome (Observer.)" + icon_state = "purple" + +/area/virtual_reality + name = "Virtual Reality" + icon_state = "Virtual_Reality" + dynamic_lighting = 0 + requires_power = 0 + flags = AREA_FLAG_IS_NOT_PERSISTENT + +//ENEMY + +//names are used +/area/syndicate_station + name = "\improper Independent Station" + icon_state = "yellow" + requires_power = 0 + flags = RAD_SHIELDED + base_turf = /turf/space + ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/syndicate_station/start + name = "\improper Mercenary Forward Operating Base" + icon_state = "yellow" + +/area/syndicate_station/southwest + name = "\improper wilderness cave" + icon_state = "southwest" + +/area/syndicate_station/northwest + name = "\improper wilderness forest" + icon_state = "northwest" + +/area/syndicate_station/northeast + name = "\improper wilderness forest" + icon_state = "northeast" + +/area/syndicate_station/southeast + name = "\improper wilderness caves" + icon_state = "southeast" + +/area/syndicate_station/north + name = "\improper outpost grounds" + icon_state = "north" + +/area/syndicate_station/south + name = "\improper the wilderness" + icon_state = "south" + +/area/syndicate_station/commssat + name = "\improper south of the communication satellite" + icon_state = "south" + +/area/syndicate_station/mining + name = "\improper northeast of the mining station" + icon_state = "north" + +/area/syndicate_station/arrivals_dock + name = "\improper docked with station" + icon_state = "shuttle" + +/area/syndicate_station/maint_dock + name = "\improper docked with station" + icon_state = "shuttle" + +/area/syndicate_station/transit + name = "\improper hyperspace" + icon_state = "shuttle" + +/area/wizard_station + name = "\improper Wizard's Den" + icon_state = "yellow" + requires_power = 0 + dynamic_lighting = 0 + ambience = AMBIENCE_OTHERWORLDLY + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/skipjack_station + name = "\improper Skipjack" + icon_state = "yellow" + requires_power = 0 + base_turf = /turf/space + ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/skipjack_station/start + name = "\improper Skipjack" + icon_state = "yellow" + +/area/skipjack_station/transit + name = "\improper hyperspace" + icon_state = "shuttle" + +/area/skipjack_station/southwest_solars + name = "\The wilderness" + icon_state = "southwest" + +/area/skipjack_station/northwest_solars + name = "\improper The wilderness" + icon_state = "northwest" + +/area/skipjack_station/northeast_solars + name = "\improper The wilderness" + icon_state = "northeast" + +/area/skipjack_station/southeast_solars + name = "\improper wilderness caves" + icon_state = "southeast" + +/area/skipjack_station/mining + name = "\improper south of mining station" + icon_state = "north" + +//PRISON +/area/prison + name = "\improper Prison Station" + icon_state = "brig" + ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/prison/arrival_airlock + name = "\improper Prison Station Airlock" + icon_state = "green" + requires_power = 0 + +/area/prison/control + name = "\improper Prison Security Checkpoint" + icon_state = "security" + +/area/prison/crew_quarters + name = "\improper Prison Security Quarters" + icon_state = "security" + +/area/prison/rec_room + name = "\improper Prison Rec Room" + icon_state = "green" + +/area/prison/closet + name = "\improper Prison Supply Closet" + icon_state = "dk_yellow" + +/area/prison/hallway/fore + name = "\improper Prison Fore Hallway" + icon_state = "yellow" + +/area/prison/hallway/aft + name = "\improper Prison Aft Hallway" + icon_state = "yellow" + +/area/prison/hallway/port + name = "\improper Prison Port Hallway" + icon_state = "yellow" + +/area/prison/hallway/starboard + name = "\improper Prison Starboard Hallway" + icon_state = "yellow" + +/area/prison/morgue + name = "\improper Prison Morgue" + icon_state = "morgue" + +/area/prison/medical_research + name = "\improper Prison Genetic Research" + icon_state = "medresearch" + +/area/prison/medical + name = "\improper Prison Medbay" + icon_state = "medbay" + +/area/prison/solar + name = "\improper Prison Solar Array" + icon_state = "storage" + requires_power = 0 + +/area/prison/podbay + name = "\improper Prison Podbay" + icon_state = "dk_yellow" + +/area/prison/solar_control + name = "\improper Prison Solar Array Control" + icon_state = "dk_yellow" + +/area/prison/solitary + name = "Solitary Confinement" + icon_state = "brig" + +/area/prison/cell_block/A + name = "Prison Cell Block A" + icon_state = "brig" + +/area/prison/cell_block/B + name = "Prison Cell Block B" + icon_state = "brig" + +/area/prison/cell_block/C + name = "Prison Cell Block C" + icon_state = "brig" + +//////////////////// +//SPACE STATION 13// +//////////////////// + +/area + ambience = AMBIENCE_GENERIC + +//Maintenance + +/area/maintenance + flags = RAD_SHIELDED + sound_env = TUNNEL_ENCLOSED + turf_initializer = new /datum/turf_initializer/maintenance() + ambience = AMBIENCE_MAINTENANCE + +/area/maintenance/aft + name = "Aft Maintenance" + icon_state = "amaint" + +/area/maintenance/fore + name = "Fore Maintenance" + icon_state = "fmaint" + +/area/maintenance/starboard + name = "Starboard Maintenance" + icon_state = "smaint" + +/area/maintenance/port + name = "Port Maintenance" + icon_state = "pmaint" + +/area/maintenance/atmos_control + name = "Atmospherics Maintenance" + icon_state = "fpmaint" + +/area/maintenance/fpmaint + name = "Fore Port Maintenance - 1" + icon_state = "fpmaint" + +/area/maintenance/fpmaint2 + name = "Fore Port Maintenance - 2" + icon_state = "fpmaint" + +/area/maintenance/fsmaint + name = "Fore Starboard Maintenance - 1" + icon_state = "fsmaint" + +/area/maintenance/fsmaint2 + name = "Fore Starboard Maintenance - 2" + icon_state = "fsmaint" + +/area/maintenance/asmaint + name = "Aft Starboard Maintenance" + icon_state = "asmaint" + +/area/maintenance/engi_shuttle + name = "Engineering Shuttle Access" + icon_state = "maint_e_shuttle" + +/area/maintenance/engi_engine + name = "Engine Maintenance" + icon_state = "maint_engine" + +/area/maintenance/asmaint2 + name = "Science Maintenance" + icon_state = "asmaint" + +/area/maintenance/apmaint + name = "Cargo Engineering Maintenance" + icon_state = "apmaint" + +/area/maintenance/maintcentral + name = "Bridge Maintenance" + icon_state = "maintcentral" + +/area/maintenance/arrivals + name = "Arrivals Maintenance" + icon_state = "maint_arrivals" + +/area/maintenance/bar + name = "Bar Maintenance" + icon_state = "maint_bar" + +/area/maintenance/central + name = "Central Maintenance" + icon_state = "maint_central" + +/area/maintenance/cafe_dock + name = "Cafeteria Dock Maintenance" + icon_state = "maint_cafe_dock" + +/area/maintenance/cargo + name = "Cargo Maintenance" + icon_state = "maint_cargo" + +/area/maintenance/cargo_research + name = "Cargo Research Maintenance" + icon_state = "maint_cargo_research" + +/area/maintenance/chapel + name = "Chapel Maintenance" + icon_state = "maint_chapel" + +/area/maintenance/disposal + name = "Waste Disposal" + icon_state = "disposal" + flags = AREA_FLAG_IS_NOT_PERSISTENT //If trash items got this far, they can be safely deleted. + +/area/maintenance/engineering + name = "Engineering Maintenance" + icon_state = "maint_engineering" + +/area/maintenance/engineering/pumpstation + name = "Engineering Pump Station" + icon_state = "maint_pumpstation" + +/area/maintenance/evahallway + name = "\improper EVA Maintenance" + icon_state = "maint_eva" + +/area/maintenance/dormitory + name = "Dormitory Maintenance" + icon_state = "maint_dormitory" + +/area/maintenance/holodeck + name = "Holodeck Maintenance" + icon_state = "maint_holodeck" + +/area/maintenance/incinerator + name = "\improper Incinerator" + icon_state = "disposal" + +/area/maintenance/library + name = "Library Maintenance" + icon_state = "maint_library" + +/area/maintenance/locker + name = "Locker Room Maintenance" + icon_state = "maint_locker" + +/area/maintenance/medbay + name = "Medbay Maintenance" + icon_state = "maint_medbay" + +/area/maintenance/medbay_aft + name = "Medbay Maintenance - Aft" + icon_state = "maint_medbay_aft" + +/area/maintenance/medbay_fore + name = "Medbay Maintenance - Fore" + icon_state = "maint_medbay_fore" + +/area/maintenance/pool + name = "Pool Maintenance" + icon_state = "maint_pool" + +/area/maintenance/research + name = "Research Maintenance" + icon_state = "maint_research" + +/area/maintenance/research_port + name = "Research Maintenance - Port" + icon_state = "maint_research_port" + +/area/maintenance/research_starboard + name = "Research Maintenance - Starboard" + icon_state = "maint_research_starboard" + +/area/maintenance/research_starboard + name = "Research Maintenance - Starboard" + icon_state = "maint_research_cargo" + +/area/maintenance/research_shuttle + name = "Research Shuttle Dock Maintenance" + icon_state = "maint_research_shuttle" + +/area/maintenance/security_port + name = "Security Maintenance - Port" + icon_state = "maint_security_port" + +/area/maintenance/security_starboard + name = "Security Maintenance - Starboard" + icon_state = "maint_security_starboard" + +/area/maintenance/storage + name = "Atmospherics" + icon_state = "green" + +/area/maintenance/tool_storage + name = "Tool Storage Maintenance" + icon_state = "maint_tool_storage" + + +// SUBSTATIONS (Subtype of maint, that should let them serve as shielded area during radstorm) + +/area/maintenance/substation + name = "Substation" + icon_state = "substation" + sound_env = SMALL_ENCLOSED + ambience = AMBIENCE_SUBSTATION + +/area/maintenance/substation/engineering // Probably will be connected to engineering SMES room, as wires cannot be crossed properly without them sharing powernets. + name = "Engineering Substation" + +// No longer used: +/area/maintenance/substation/medical_science // Medbay and Science. Each has it's own separated machinery, but it originates from the same room. + name = "Medical Research Substation" + +/area/maintenance/substation/medical // Medbay + name = "Medical Substation" + +/area/maintenance/substation/research // Research + name = "Research Substation" + +/area/maintenance/substation/cafeteria_dock // Hydro, kitchen, docks, hotel + name = "Cafeteria Dock Substation" + +/area/maintenance/substation/civilian // Dorms, Lockerroom, Pool + name = "Civilian Substation" + +/area/maintenance/substation/civilian_east // Bar, kitchen, dorms, ... + name = "Civilian East Substation" + +/area/maintenance/substation/civilian_west // Cargo, PTS, locker room, probably arrivals, ...) + name = "Civilian West Substation" + +/area/maintenance/substation/cargo // Cargo + name = "Cargo Substation" + +/area/maintenance/substation/command // AI and central cluster. This one will be between HoP office and meeting room (probably). + name = "Command Substation" + +/area/maintenance/substation/dock // Bar, docks, hotel + name = "Dock Substation" + +/area/maintenance/substation/security // Security, Brig, Permabrig, etc. + name = "Security Substation" + +//Hallway + +/area/hallway/primary/ + sound_env = LARGE_ENCLOSED + ambience = AMBIENCE_GENERIC + +/area/hallway/primary/fore + name = "\improper Fore Primary Hallway" + icon_state = "hallF" + +/area/hallway/primary/starboard + name = "\improper Starboard Primary Hallway" + icon_state = "hallS" + +/area/hallway/primary/aft + name = "\improper Aft Primary Hallway" + icon_state = "hallA" + +/area/hallway/primary/port + name = "\improper Port Primary Hallway" + icon_state = "hallP" + +/area/hallway/primary/central_one + name = "\improper Central Primary Hallway - Fore" + icon_state = "hallC1" + +/area/hallway/primary/central_two + name = "\improper Central Primary Hallway - Starboard" + icon_state = "hallC2" + +/area/hallway/primary/central_three + name = "\improper Central Primary Hallway - Aft" + icon_state = "hallC3" + +/area/hallway/primary/central_four + name = "\improper Central Primary Hallway - Port" + icon_state = "hallC4" + +/area/hallway/secondary/exit + name = "\improper Escape Shuttle Hallway" + icon_state = "escape" + +/area/hallway/secondary/construction + name = "\improper Construction Area" + icon_state = "construction" + +/area/hallway/secondary/entry + forbid_events = TRUE + +/area/hallway/secondary/entry/fore + name = "\improper Shuttle Dock Hallway - Mid" + icon_state = "entry_1" + +/area/hallway/secondary/entry/port + name = "\improper Shuttle Dock Hallway - Port" + icon_state = "entry_2" + +/area/hallway/secondary/entry/starboard + name = "\improper Shuttle Dock Hallway - Starboard" + icon_state = "entry_3" + +/area/hallway/secondary/entry/aft + name = "\improper Shuttle Dock Hallway - Aft" + icon_state = "entry_4" + +/area/hallway/secondary/entry/D1 + name = "\improper Shuttle Dock Hallway - Dock One" + icon_state = "entry_D1" + base_turf = /turf/space + +/area/hallway/secondary/entry/D2 + name = "\improper Shuttle Dock Hallway - Dock Two" + icon_state = "entry_D2" + base_turf = /turf/space + +/area/hallway/secondary/entry/D2/arrivals + name = "\improper Shuttle Dock Hallway - Dock Two" + icon_state = "entry_D2" + base_turf = /turf/space + requires_power = 0 + +/area/hallway/secondary/entry/D3 + name = "\improper Shuttle Dock Hallway - Dock Three" + icon_state = "entry_D3" + base_turf = /turf/space + +/area/hallway/secondary/entry/D4 + name = "\improper Shuttle Dock Hallway - Dock Four" + icon_state = "entry_D4" + +/area/hallway/secondary/entry/docking_lounge + name = "\improper Docking Lounge" + icon_state = "docking_lounge" + +/area/hallway/secondary/escape/dock_escape_pod_hallway_port + name = "\improper Dock Escape Pod Hallway Port" + icon_state = "dock_escape_pod_hallway_port" + +/area/hallway/secondary/escape/dock_escape_pod_hallway_starboard + name = "\improper Dock Escape Pod Hallway Starboard" + icon_state = "dock_escape_pod_hallway_starboard" + +/area/hallway/secondary/escape/fore_port_escape_pod_hallway + name = "\improper Fore Port Escape Pod Hallway" + icon_state = "fore_port_escape_pod_hallway" + +/area/hallway/secondary/escape/fore_escape_pod_hallway + name = "\improper Fore Escape Pod Hallway" + icon_state = "fore_escape_pod_hallway" + +/area/hallway/secondary/escape/medical_escape_pod_hallway + name = "\improper Medical Escape Pod Hallway" + icon_state = "medical_escape_pod_hallway" + +/area/hallway/secondary/cargo_hallway + name = "\improper Cargo Hallway" + icon_state = "cargo_hallway" + +/area/hallway/secondary/civilian_hallway_aft + name = "\improper Civilian Hallway Aft" + icon_state = "aft_civilian_hallway" + +/area/hallway/secondary/civilian_hallway_fore + name = "\improper Civilian Hallway Fore" + icon_state = "fore_civilian_hallway" + +/area/hallway/secondary/civilian_hallway_mid + name = "\improper Civilian Hallway Mid" + icon_state = "mid_civilian_hallway" + +/area/hallway/secondary/chapel_hallway + name = "\improper Chapel Hallway" + icon_state = "chapel_hallway" + +/area/hallway/secondary/cryostorage_hallway + name = "\improper Cryostorage Hallway" + icon_state = "cryostorage_hallway" + +/area/hallway/secondary/docking_hallway + name = "\improper Docking Hallway" + icon_state = "docking_hallway" + +/area/hallway/secondary/docking_hallway2 + name = "\improper Secondary Docking Hallway" + icon_state = "docking_hallway" + +/area/hallway/secondary/engineering_hallway + name = "\improper Engineering Primary Hallway" + icon_state = "engineering_primary_hallway" + +/area/hallway/secondary/eva_hallway + name = "\improper EVA Hallway" + icon_state = "eva_hallway" + +/area/hallway/secondary/medical_emergency_hallway + name = "\improper Medical Emergency Hallway" + icon_state = "medical_emergency_hallway" + +//Command + +/area/bridge + name = "\improper Bridge" + icon_state = "bridge" + music = "signal" + +/area/bridge_hallway + name = "\improper Bridge Hallway" + icon_state = "bridge" + +/area/bridge/meeting_room + name = "\improper Heads of Staff Meeting Room" + icon_state = "bridge" + music = null + sound_env = MEDIUM_SOFTFLOOR + +/area/crew_quarters/captain + name = "\improper Command - Site Manager's Office" + icon_state = "captain" + sound_env = MEDIUM_SOFTFLOOR + +/area/crew_quarters/heads/hop + name = "\improper Command - HoP's Office" + icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/crew_quarters/heads/hor + name = "\improper Research - RD's Office" + icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/crew_quarters/heads/chief + name = "\improper Engineering - CE's Office" + icon_state = "head_quarters" + +/area/crew_quarters/heads/hos + name = "\improper Security - HoS' Office" + icon_state = "head_quarters" + +/area/crew_quarters/heads/cmo + name = "\improper Medbay - CMO's Office" + icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/crew_quarters/courtroom + name = "\improper Courtroom" + icon_state = "courtroom" + +/area/mint + name = "\improper Mint" + icon_state = "green" + +/area/comms + name = "\improper Communications Relay" + icon_state = "tcomsatcham" + +/area/server + name = "\improper Research Server Room" + icon_state = "server" + +//Civilian + +/area/crew_quarters + name = "\improper Dormitories" + icon_state = "Sleep" + ambience = AMBIENCE_GENERIC + forbid_events = TRUE + forbid_singulo = TRUE + +/area/crew_quarters/toilet + name = "\improper Dormitory Toilets" + icon_state = "toilet" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/sleep + name = "\improper Dormitories" + icon_state = "Sleep" + flags = RAD_SHIELDED + +/area/crew_quarters/sleep/Apartment_A1 + name = "\improper Apartment A1" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A2 + name = "\improper Apartment A2" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A3 + name = "\improper Apartment A3" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A4 + name = "\improper Apartment A4" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A5 + name = "\improper Apartment A5" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A6 + name = "\improper Apartment A6" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A7 + name = "\improper Apartment A7`" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_A8 + name = "\improper Apartment A8" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_B1 + name = "\improper Apartment B1" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_B2 + name = "\improper Apartment B2" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Apartment_B3 + name = "\improper Apartment B3" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_1 + name = "\improper Dormitory Room 1" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_2 + name = "\improper Dormitory Room 2" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_3 + name = "\improper Dormitory Room 3" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_4 + name = "\improper Dormitory Room 4" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_5 + name = "\improper Dormitory Room 5" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_6 + name = "\improper Dormitory Room 6" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_7 + name = "\improper Dormitory Room 7" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_8 + name = "\improper Dormitory Room 8" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_9 + name = "\improper Dormitory Room 9" + icon_state = "Sleep" + +/area/crew_quarters/sleep/Dorm_10 + name = "\improper Dormitory Room 10" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_1 + name = "\improper Visitor Room 1" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_2 + name = "\improper Visitor Room 2" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_3 + name = "\improper Visitor Room 3" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_4 + name = "\improper Visitor Room 4" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_5 + name = "\improper Visitor Room 5" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_6 + name = "\improper Visitor Room 6" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_7 + name = "\improper Visitor Room 7" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_8 + name = "\improper Visitor Room 8" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_9 + name = "\improper Visitor Room 9" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_10 + name = "\improper Visitor Room 10" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_11 + name = "\improper Visitor Room 11" + icon_state = "Sleep" + +/area/crew_quarters/sleep/vistor_room_12 + name = "\improper Visitor Room 12" + icon_state = "Sleep" + +/area/crew_quarters/sleep/engi_wash + name = "\improper Engineering Washroom" + icon_state = "toilet" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/sleep/bedrooms + name = "\improper Dormitory Bedroom One" + icon_state = "Sleep" + sound_env = SMALL_SOFTFLOOR + +/area/crew_quarters/sleep/cryo + name = "\improper Cryogenic Storage" + icon_state = "Sleep" + +/area/crew_quarters/sleep/elevator + name = "\improper Main Elevator" + icon_state = "Sleep" + +/area/crew_quarters/sleep_male + name = "\improper Male Dorm" + icon_state = "Sleep" + +/area/crew_quarters/sleep_male/toilet_male + name = "\improper Male Toilets" + icon_state = "toilet" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/sleep_female + name = "\improper Female Dorm" + icon_state = "Sleep" + +/area/crew_quarters/sleep_female/toilet_female + name = "\improper Female Toilets" + icon_state = "toilet" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/locker + name = "\improper Locker Room" + icon_state = "locker" + +/area/crew_quarters/locker/locker_toilet + name = "\improper Locker Toilets" + icon_state = "toilet" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/fitness + name = "\improper Fitness Room" + icon_state = "fitness" + +/area/crew_quarters/longue_area + name = "\improper Lounge" //VOREStation Edit - Muh speeling. + icon_state = "recreation_area" + +/area/crew_quarters/recreation_area + name = "\improper Recreation Area" + icon_state = "recreation_area" + +/area/crew_quarters/recreation_area_hallway + name = "\improper Recreation Area Hallway" + icon_state = "recreation_area_hallway" + +/area/crew_quarters/recreation_area_restroom + name = "\improper Recreation Area Restroom" + icon_state = "recreation_area_restroom" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/pool + name = "\improper Pool" + icon_state = "pool" + +/area/crew_quarters/cafeteria + name = "\improper Cafeteria" + icon_state = "cafeteria" + +/area/crew_quarters/coffee_shop + name = "\improper Coffee Shop" + icon_state = "coffee_shop" + +/area/crew_quarters/kitchen + name = "\improper Kitchen" + icon_state = "kitchen" + +/area/crew_quarters/bar + name = "\improper Bar" + icon_state = "bar" + sound_env = LARGE_SOFTFLOOR + +/area/crew_quarters/barrestroom + name = "\improper Cafeteria Restroom" + icon_state = "bar" + sound_env = SMALL_ENCLOSED + +/area/crew_quarters/theatre + name = "\improper Theatre" + icon_state = "Theatre" + sound_env = LARGE_SOFTFLOOR + +/area/crew_quarters/visitor_lodging + name = "\improper Visitor Lodging" + icon_state = "visitor_lodging" + +/area/crew_quarters/visitor_dining + name = "\improper Visitor Dining" + icon_state = "visitor_dinning" + +/area/crew_quarters/visitor_laundry + name = "\improper Visitor Laundry" + icon_state = "visitor_laundry" + +/area/library + name = "\improper Library" + icon_state = "library" + sound_env = LARGE_SOFTFLOOR + lightswitch = 0 // VOREStation Edit - We like dark libraries + +/area/library_conference_room + name = "\improper Library Conference Room" + icon_state = "library_conference_room" + +/area/chapel + ambience = AMBIENCE_CHAPEL + +/area/chapel/main + name = "\improper Chapel" + icon_state = "chapel" + sound_env = LARGE_ENCLOSED + +/area/chapel/office + name = "\improper Chapel Office" + icon_state = "chapeloffice" + +/area/chapel/chapel_morgue + name = "\improper Chapel Morgue" + icon_state = "chapel_morgue" + +/area/lawoffice + name = "\improper Internal Affairs" + icon_state = "law" + +/area/holodeck_control + name = "\improper Holodeck Control" + icon_state = "holodeck_control" + +/area/vacant/vacant_shop + name = "\improper Vacant Shop" + icon_state = "vacant_shop" + +/area/vacant/vacant_site + name = "\improper Vacant Site" + icon_state = "vacant_site" + +/area/vacant/vacant_site2 + name = "\improper Abandoned Locker Room" + icon_state = "vacant_site" + +/area/holodeck + name = "\improper Holodeck" + icon_state = "Holodeck" + dynamic_lighting = 0 + sound_env = LARGE_ENCLOSED + forbid_events = TRUE + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/holodeck/alphadeck + name = "\improper Holodeck Alpha" + +/area/holodeck/source_plating + name = "\improper Holodeck - Off" + +/area/holodeck/source_emptycourt + name = "\improper Holodeck - Empty Court" + sound_env = SOUND_ENVIRONMENT_ARENA + +/area/holodeck/source_boxingcourt + name = "\improper Holodeck - Boxing Court" + sound_env = SOUND_ENVIRONMENT_ARENA + +/area/holodeck/source_basketball + name = "\improper Holodeck - Basketball Court" + sound_env = SOUND_ENVIRONMENT_ARENA + +/area/holodeck/source_thunderdomecourt + name = "\improper Holodeck - Thunderdome Court" + requires_power = 0 + sound_env = SOUND_ENVIRONMENT_ARENA + +/area/holodeck/source_courtroom + name = "\improper Holodeck - Courtroom" + sound_env = SOUND_ENVIRONMENT_AUDITORIUM + +/area/holodeck/source_beach + name = "\improper Holodeck - Beach" + sound_env = SOUND_ENVIRONMENT_PLAIN + +/area/holodeck/source_burntest + name = "\improper Holodeck - Atmospheric Burn Test" + +/area/holodeck/source_wildlife + name = "\improper Holodeck - Wildlife Simulation" + +/area/holodeck/source_meetinghall + name = "\improper Holodeck - Meeting Hall" + sound_env = SOUND_ENVIRONMENT_AUDITORIUM + +/area/holodeck/source_theatre + name = "\improper Holodeck - Theatre" + sound_env = SOUND_ENVIRONMENT_CONCERT_HALL + +/area/holodeck/source_picnicarea + name = "\improper Holodeck - Picnic Area" + sound_env = SOUND_ENVIRONMENT_PLAIN + +/area/holodeck/source_snowfield + name = "\improper Holodeck - Snow Field" + sound_env = SOUND_ENVIRONMENT_FOREST + +/area/holodeck/source_desert + name = "\improper Holodeck - Desert" + sound_env = SOUND_ENVIRONMENT_PLAIN + +/area/holodeck/source_space + name = "\improper Holodeck - Space" + has_gravity = 0 + sound_env = SPACE + +/area/holodeck/source_chess + name = "\improper Holodeck - Chessboard" + + +//Engineering + +/area/engineering/ + name = "\improper Engineering" + icon_state = "engineering" + ambience = AMBIENCE_ENGINEERING + +/area/engineering/atmos + name = "\improper Atmospherics" + icon_state = "atmos" + sound_env = LARGE_ENCLOSED + ambience = AMBIENCE_ATMOS + +/area/engineering/atmos/monitoring + name = "\improper Atmospherics Monitoring Room" + icon_state = "atmos_monitoring" + sound_env = STANDARD_STATION + +/area/engineering/atmos/storage + name = "\improper Atmospherics Storage" + icon_state = "atmos_storage" + sound_env = SMALL_ENCLOSED + +/area/engineering/drone_fabrication + name = "\improper Engineering Drone Fabrication" + icon_state = "drone_fab" + sound_env = SMALL_ENCLOSED + +/area/engineering/engine_smes + name = "\improper Engineering SMES" + icon_state = "engine_smes" + sound_env = SMALL_ENCLOSED + +/area/engineering/engine_room + name = "\improper Engine Room" + icon_state = "engine" + sound_env = LARGE_ENCLOSED + forbid_events = TRUE + +/area/engineering/engine_airlock + name = "\improper Engine Room Airlock" + icon_state = "engine" + +/area/engineering/engine_monitoring + name = "\improper Engine Monitoring Room" + icon_state = "engine_monitoring" + +/area/engineering/engine_waste + name = "\improper Engine Waste Handling" + icon_state = "engine_waste" + +/area/engineering/engineering_monitoring + name = "\improper Engineering Monitoring Room" + icon_state = "engine_monitoring" + +/area/engineering/foyer + name = "\improper Engineering Foyer" + icon_state = "engineering_foyer" + +/area/engineering/storage + name = "\improper Engineering Storage" + icon_state = "engineering_storage" + +/area/engineering/break_room + name = "\improper Engineering Break Room" + icon_state = "engineering_break" + sound_env = MEDIUM_SOFTFLOOR + +/area/engineering/engine_eva + name = "\improper Engine EVA" + icon_state = "engine_eva" + +/area/engineering/locker_room + name = "\improper Engineering Locker Room" + icon_state = "engineering_locker" + +/area/engineering/workshop + name = "\improper Engineering Workshop" + icon_state = "engineering_workshop" + +/area/engineering/aft_hallway + name = "\improper Engineering Aft Hallway" + icon_state = "engineering_aft_hallway" + + +//Solars + +/area/solar + requires_power = 1 + always_unpowered = 1 + dynamic_lighting = 0 + ambience = AMBIENCE_SPACE + +/area/solar/auxport + name = "\improper Fore Port Solar Array" + icon_state = "panelsA" + +/area/solar/auxstarboard + name = "\improper Fore Starboard Solar Array" + icon_state = "panelsA" + +/area/solar/fore + name = "\improper Fore Solar Array" + icon_state = "yellow" + +/area/solar/aft + name = "\improper Aft Solar Array" + icon_state = "aft" + +/area/solar/starboard + name = "\improper Aft Starboard Solar Array" + icon_state = "panelsS" + +/area/solar/port + name = "\improper Aft Port Solar Array" + icon_state = "panelsP" + +/area/maintenance/auxsolarport + name = "Solar Maintenance - Fore Port" + icon_state = "SolarcontrolP" + sound_env = SMALL_ENCLOSED + +/area/maintenance/starboardsolar + name = "Solar Maintenance - Aft Starboard" + icon_state = "SolarcontrolS" + sound_env = SMALL_ENCLOSED + +/area/maintenance/portsolar + name = "Solar Maintenance - Aft Port" + icon_state = "SolarcontrolP" + sound_env = SMALL_ENCLOSED + +/area/maintenance/auxsolarstarboard + name = "Solar Maintenance - Fore Starboard" + icon_state = "SolarcontrolS" + sound_env = SMALL_ENCLOSED + +/area/maintenance/foresolar + name = "Solar Maintenance - Fore" + icon_state = "SolarcontrolA" + sound_env = SMALL_ENCLOSED + +/area/assembly/chargebay + name = "\improper Mech Bay" + icon_state = "mechbay" + +/area/assembly/showroom + name = "\improper Robotics Showroom" + icon_state = "showroom" + +/area/assembly/robotics + name = "\improper Robotics Lab" + icon_state = "robotics" + +/area/assembly/assembly_line //Derelict Assembly Line + name = "\improper Assembly Line" + icon_state = "ass_line" + power_equip = 0 + power_light = 0 + power_environ = 0 + +//Teleporter + +/area/teleporter + name = "\improper Teleporter" + icon_state = "teleporter" + music = "signal" + flags = RAD_SHIELDED + +/area/gateway + name = "\improper Gateway" + icon_state = "teleporter" + music = "signal" + +/area/AIsattele + name = "\improper AI Satellite Teleporter Room" + icon_state = "teleporter" + music = "signal" + +//MedBay + +/area/medical/medbay + name = "\improper Medbay Hallway - Port" + icon_state = "medbay" + music = 'sound/ambience/signal.ogg' + +//Medbay is a large area, these additional areas help level out APC load. +/area/medical/medbay2 + name = "\improper Medbay Hallway - Starboard" + icon_state = "medbay2" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay3 + name = "\improper Medbay Hallway - Fore" + icon_state = "medbay3" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay4 + name = "\improper Medbay Hallway - Aft" + icon_state = "medbay4" + music = 'sound/ambience/signal.ogg' + +/area/medical/biostorage + name = "\improper Secondary Storage" + icon_state = "medbay2" + music = 'sound/ambience/signal.ogg' + +/area/medical/reception + name = "\improper Medbay Reception" + icon_state = "medbay" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay_emt_bay + name = "\improper Medical EMT Bay" + icon_state = "medbay_emt_bay" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay_primary_storage + name = "\improper Medbay Primary Storage" + icon_state = "medbay_primary_storage" + music = 'sound/ambience/signal.ogg' + +/area/medical/psych + name = "\improper Psych Room" + icon_state = "medbay3" + music = 'sound/ambience/signal.ogg' + +/area/crew_quarters/medbreak + name = "\improper Break Room" + icon_state = "medbay3" + music = 'sound/ambience/signal.ogg' + +/area/crew_quarters/medical_restroom + name = "\improper Medbay Restroom" + icon_state = "medbay_restroom" + sound_env = SMALL_ENCLOSED + +/area/medical/patients_rooms + name = "\improper Patient's Rooms" + icon_state = "patients" + +/area/medical/ward + name = "\improper Recovery Ward" + icon_state = "patients" + +/area/medical/patient_a + name = "\improper Patient A" + icon_state = "medbay_patient_room_a" + +/area/medical/patient_b + name = "\improper Patient B" + icon_state = "medbay_patient_room_b" + +/area/medical/patient_c + name = "\improper Patient C" + icon_state = "medbay_patient_room_c" + +/area/medical/patient_d + name = "\improper Patient D" + icon_state = "medbay_patient_room_d" + +/area/medical/patient_e + name = "\improper Patient E" + icon_state = "medbay_patient_room_e" + +/area/medical/patient_wing + name = "\improper Patient Wing" + icon_state = "patients" + +/area/medical/cmostore + name = "\improper Secure Storage" + icon_state = "CMO" + +/area/medical/robotics + name = "\improper Robotics" + icon_state = "medresearch" + +/area/medical/virology + name = "\improper Virology" + icon_state = "virology" + +/area/medical/virologyaccess + name = "\improper Virology Access" + icon_state = "virology" + +/area/medical/morgue + name = "\improper Morgue" + icon_state = "morgue" + +/area/medical/chemistry + name = "\improper Chemistry" + icon_state = "chem" + +/area/medical/surgery + name = "\improper Operating Theatre 1" + icon_state = "surgery" + flags = AREA_FLAG_IS_NOT_PERSISTENT //This WOULD become a filth pit + +/area/medical/surgery2 + name = "\improper Operating Theatre 2" + icon_state = "surgery" + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/medical/surgeryobs + name = "\improper Operation Observation Room" + icon_state = "surgery" + +/area/medical/surgeryprep + name = "\improper Pre-Op Prep Room" + icon_state = "surgery" + +/area/medical/surgery_hallway + name = "\improper Surgery Hallway" + icon_state = "surgery_hallway" + +/area/medical/surgery_storage + name = "\improper Surgery Storage" + icon_state = "surgery_storage" + +/area/medical/cryo + name = "\improper Cryogenics" + icon_state = "cryo" + +/area/medical/exam_room + name = "\improper Exam Room" + icon_state = "exam_room" + +/area/medical/genetics + name = "\improper Genetics Lab" + icon_state = "genetics" + +/area/medical/genetics_cloning + name = "\improper Cloning Lab" + icon_state = "cloning" + +/area/medical/sleeper + name = "\improper Emergency Treatment Centre" + icon_state = "exam_room" + flags = AREA_FLAG_IS_NOT_PERSISTENT //Trust me. + +/area/medical/first_aid_station_starboard + name = "\improper Starboard First-Aid Station" + icon_state = "medbay2" + +/area/medical/first_aid_station + name = "\improper Port First-Aid Station" + icon_state = "medbay2" + + + +//Security + +/area/security/main + name = "\improper Security Office" + icon_state = "security" + +/area/security/lobby + name = "\improper Security Lobby" + icon_state = "security" + +/area/security/brig + name = "\improper Security - Brig" + icon_state = "brig" + +/area/security/brig/prison_break() + for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) + temp_closet.locked = 0 + temp_closet.icon_state = "closed_unlocked" + for(var/obj/machinery/door_timer/temp_timer in src) + temp_timer.timer_duration = 1 + ..() + +/area/security/prison + name = "\improper Security - Prison Wing" + icon_state = "sec_prison" + +/area/security/prison/prison_break() + for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) + temp_closet.locked = 0 + temp_closet.icon_state = "closed_unlocked" + for(var/obj/machinery/door_timer/temp_timer in src) + temp_timer.timer_duration = 1 + ..() + +/area/security/warden + name = "\improper Security - Warden's Office" + icon_state = "Warden" + +/area/security/armoury + name = "\improper Security - Armory" + icon_state = "armory" + ambience = AMBIENCE_HIGHSEC + +/area/security/briefing_room + name = "\improper Security - Briefing Room" + icon_state = "brig" + +/area/security/evidence_storage + name = "\improper Security - Equipment Storage" + icon_state = "security_equipment_storage" + +/area/security/evidence_storage + name = "\improper Security - Evidence Storage" + icon_state = "evidence_storage" + +/area/security/interrogation + name = "\improper Security - Interrogation" + icon_state = "interrogation" + +/area/security/riot_control + name = "\improper Security - Riot Control" + icon_state = "riot_control" + +/area/security/detectives_office + name = "\improper Security - Forensic Office" + icon_state = "detective" + sound_env = MEDIUM_SOFTFLOOR + +/area/security/range + name = "\improper Security - Firing Range" + icon_state = "firingrange" + +/area/security/security_aid_station + name = "\improper Security - Security Aid Station" + icon_state = "security_aid_station" + +/area/security/security_bathroom + name = "\improper Security - Restroom" + icon_state = "security_bathroom" + sound_env = SMALL_ENCLOSED + +/area/security/security_cell_hallway + name = "\improper Security - Cell Hallway" + icon_state = "security_cell_hallway" + +/area/security/security_equiptment_storage + name = "\improper Security - Equipment Storage" + icon_state = "security_equip_storage" + +/area/security/security_lockerroom + name = "\improper Security - Locker Room" + icon_state = "security_lockerroom" + +/area/security/security_processing + name = "\improper Security - Security Processing" + icon_state = "security_processing" + +/area/security/tactical + name = "\improper Security - Tactical Equipment" + icon_state = "Tactical" + ambience = AMBIENCE_HIGHSEC + + +/* + New() + ..() + + spawn(10) //let objects set up first + for(var/turf/turfToGrayscale in src) + if(turfToGrayscale.icon) + var/icon/newIcon = icon(turfToGrayscale.icon) + newIcon.GrayScale() + turfToGrayscale.icon = newIcon + for(var/obj/objectToGrayscale in turfToGrayscale) //1 level deep, means tables, apcs, locker, etc, but not locker contents + if(objectToGrayscale.icon) + var/icon/newIcon = icon(objectToGrayscale.icon) + newIcon.GrayScale() + objectToGrayscale.icon = newIcon +*/ + +/area/security/nuke_storage + name = "\improper Vault" + icon_state = "nuke_storage" + ambience = AMBIENCE_HIGHSEC + +/area/security/checkpoint + name = "\improper Security Checkpoint" + icon_state = "checkpoint1" + +/area/security/checkpoint2 + name = "\improper Security - Arrival Checkpoint" + icon_state = "security" + ambience = AMBIENCE_ARRIVALS + +/area/security/checkpoint/supply + name = "Security Post - Cargo Bay" + icon_state = "checkpoint1" + +/area/security/checkpoint/engineering + name = "Security Post - Engineering" + icon_state = "checkpoint1" + +/area/security/checkpoint/medical + name = "Security Post - Medbay" + icon_state = "checkpoint1" + +/area/security/checkpoint/science + name = "Security Post - Science" + icon_state = "checkpoint1" + +/area/security/vacantoffice + name = "\improper Vacant Office" + icon_state = "security" + +/area/security/vacantoffice2 + name = "\improper Vacant Office" + icon_state = "security" + +/area/janitor/ + name = "\improper Custodial Closet" + icon_state = "janitor" + +/area/hydroponics + name = "\improper Hydroponics" + icon_state = "hydro" + +/area/hydroponics/cafegarden + name = "\improper Cafeteria Garden" + icon_state = "cafe_garden" + +/area/hydroponics/garden + name = "\improper Garden" + icon_state = "garden" + +// SUPPLY + +/area/quartermaster + name = "\improper Quartermasters" + icon_state = "quart" + +/area/quartermaster/office + name = "\improper Cargo Office" + icon_state = "quartoffice" + +/area/quartermaster/storage + name = "\improper Cargo Bay" + icon_state = "quartstorage" + sound_env = LARGE_ENCLOSED + +/area/quartermaster/foyer + name = "\improper Cargo Bay Foyer" + icon_state = "quartstorage" + +/area/quartermaster/warehouse + name = "\improper Cargo Warehouse" + icon_state = "quartstorage" + +/area/quartermaster/qm + name = "\improper Cargo - Quartermaster's Office" + icon_state = "quart" + +/area/quartermaster/delivery + name = "\improper Cargo - Delivery Office" + icon_state = "quart" + flags = AREA_FLAG_IS_NOT_PERSISTENT //So trash doesn't pile up too hard. + +/area/quartermaster/miningdock + name = "\improper Cargo Mining Dock" + icon_state = "mining" + + +// SCIENCE + +/area/rnd/research + name = "\improper Research and Development" + icon_state = "research" + +/area/rnd/research_foyer + name = "\improper Research Foyer" + icon_state = "research_foyer" + +/area/rnd/research_foyer_auxiliary + name = "\improper Research Foyer Auxiliary" + icon_state = "research_foyer_aux" + +/area/rnd/research_restroom + name = "\improper Research Restroom" + icon_state = "research_restroom" + sound_env = SMALL_ENCLOSED + +/area/rnd/research_storage + name = "\improper Research Storage" + icon_state = "research_storage" + +/area/rnd/docking + name = "\improper Research Dock" + icon_state = "research_dock" + +/area/rnd/lab + name = "\improper Research Lab" + icon_state = "toxlab" + +/area/rnd/rdoffice + name = "\improper Research Director's Office" + icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/rnd/supermatter + name = "\improper Supermatter Lab" + icon_state = "toxlab" + +/area/rnd/xenobiology + name = "\improper Xenobiology Lab" + icon_state = "xeno_lab" + +/area/rnd/xenobiology/hallway + name = "\improper Xenobiology hallway" + icon_state = "xeno_lab" + +/area/rnd/xenobiology/storage + name = "\improper Xenobiology storage" + icon_state = "xeno_lab" + +/area/rnd/xenobiology/xenoflora_storage + name = "\improper Xenoflora Storage" + icon_state = "xeno_f_store" + +/area/rnd/xenobiology/xenoflora + name = "\improper Xenoflora Lab" + icon_state = "xeno_f_lab" + +/area/rnd/storage + name = "\improper Toxins Storage" + icon_state = "toxstorage" + +/area/rnd/test_area + name = "\improper Toxins Test Area" + icon_state = "toxtest" + +/area/rnd/mixing + name = "\improper Toxins Mixing Room" + icon_state = "toxmix" + +/area/rnd/misc_lab + name = "\improper Miscellaneous Research" + icon_state = "toxmisc" + +/area/rnd/workshop + name = "\improper Workshop" + icon_state = "sci_workshop" + +/area/toxins/server + name = "\improper Server Room" + icon_state = "server" + + +//Storage + +/area/storage/tools + name = "Auxiliary Tool Storage" + icon_state = "storage" + +/area/storage/primary + name = "Primary Tool Storage" + icon_state = "primarystorage" + +/area/storage/autolathe + name = "Autolathe Storage" + icon_state = "storage" + +/area/storage/art + name = "Art Supply Storage" + icon_state = "storage" + +/area/storage/auxillary + name = "Auxillary Storage" + icon_state = "auxstorage" + +/area/storage/eva + name = "EVA Storage" + icon_state = "eva" + +/area/storage/secure + name = "Secure Storage" + icon_state = "storage" + +/area/storage/emergency_storage/emergency + name = "Starboard Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/emergency_storage/emergency2 + name = "Port Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/emergency_storage/emergency3 + name = "Central Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/emergency_storage/emergency4 + name = "Civilian Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/emergency_storage/emergency5 + name = "Dock Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/emergency_storage/emergency6 + name = "Cargo Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/tech + name = "Technical Storage" + icon_state = "auxstorage" + +/area/storage/testroom + requires_power = 0 + name = "\improper Test Room" + icon_state = "storage" + +//DJSTATION + +/area/djstation + name = "\improper Listening Post" + icon_state = "LP" + ambience = AMBIENCE_TECH_RUINS + +/area/djstation/solars + name = "\improper Listening Post Solars" + icon_state = "LPS" + ambience = AMBIENCE_TECH_RUINS + +//DERELICT + +/area/derelict + name = "\improper Derelict Station" + icon_state = "storage" + ambience = AMBIENCE_RUINS + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/derelict/hallway/primary + name = "\improper Derelict Primary Hallway" + icon_state = "hallP" + +/area/derelict/hallway/secondary + name = "\improper Derelict Secondary Hallway" + icon_state = "hallS" + +/area/derelict/arrival + name = "\improper Derelict Arrival Centre" + icon_state = "yellow" + +/area/derelict/storage/equipment + name = "Derelict Equipment Storage" + +/area/derelict/storage/storage_access + name = "Derelict Storage Access" + +/area/derelict/storage/engine_storage + name = "Derelict Engine Storage" + icon_state = "green" + +/area/derelict/bridge + name = "\improper Derelict Control Room" + icon_state = "bridge" + +/area/derelict/secret + name = "\improper Derelict Secret Room" + icon_state = "library" + +/area/derelict/bridge/access + name = "Derelict Control Room Access" + icon_state = "auxstorage" + +/area/derelict/bridge/ai_upload + name = "\improper Derelict Computer Core" + icon_state = "ai" + +/area/derelict/solar_control + name = "\improper Derelict Solar Control" + icon_state = "engine" + +/area/derelict/crew_quarters + name = "\improper Derelict Crew Quarters" + icon_state = "fitness" + +/area/derelict/medical + name = "Derelict Medbay" + icon_state = "medbay" + +/area/derelict/medical/morgue + name = "\improper Derelict Morgue" + icon_state = "morgue" + +/area/derelict/medical/chapel + name = "\improper Derelict Chapel" + icon_state = "chapel" + +/area/derelict/teleporter + name = "\improper Derelict Teleporter" + icon_state = "teleporter" + +/area/derelict/eva + name = "Derelict EVA Storage" + icon_state = "eva" + +/area/derelict/ship + name = "\improper Abandoned Ship" + icon_state = "yellow" + +/area/solar/derelict_starboard + name = "\improper Derelict Starboard Solar Array" + icon_state = "panelsS" + +/area/solar/derelict_aft + name = "\improper Derelict Aft Solar Array" + icon_state = "aft" + +/area/derelict/singularity_engine + name = "\improper Derelict Singularity Engine" + icon_state = "engine" + +//HALF-BUILT STATION (REPLACES DERELICT IN BAYCODE, ABOVE IS LEFT FOR DOWNSTREAM) + +/area/shuttle/constructionsite + name = "\improper Construction Site Shuttle" + icon_state = "yellow" + dynamic_lighting = 0 + base_turf = /turf/simulated/mineral/floor/ignore_mapgen + +/area/shuttle/constructionsite/station + name = "\improper Construction Site Shuttle" + +/area/shuttle/constructionsite/site + name = "\improper Construction Site Shuttle" + +/area/constructionsite + name = "\improper Construction Site" + icon_state = "storage" + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/constructionsite/storage + name = "\improper Construction Site Storage Area" + +/area/constructionsite/science + name = "\improper Construction Site Research" + +/area/constructionsite/bridge + name = "\improper Construction Site Bridge" + icon_state = "bridge" + +/area/constructionsite/maintenance + name = "\improper Construction Site Maintenance" + icon_state = "yellow" + +/area/constructionsite/hallway/aft + name = "\improper Construction Site Aft Hallway" + icon_state = "hallP" + +/area/constructionsite/hallway/fore + name = "\improper Construction Site Fore Hallway" + icon_state = "hallS" + +/area/constructionsite/atmospherics + name = "\improper Construction Site Atmospherics" + icon_state = "green" + +/area/constructionsite/medical + name = "\improper Construction Site Medbay" + icon_state = "medbay" + +/area/constructionsite/ai + name = "\improper Construction Computer Core" + icon_state = "ai" + +/area/constructionsite/engineering + name = "\improper Construction Site Engine Bay" + icon_state = "engine" + +/area/solar/constructionsite + name = "\improper Construction Site Solars" + icon_state = "aft" + +/area/constructionsite/teleporter + name = "Construction Site Teleporter" + icon_state = "yellow" + + +//area/constructionsite +// name = "\improper Construction Site Shuttle" + +//area/constructionsite +// name = "\improper Construction Site Shuttle" + + +//Construction + +/area/construction + name = "\improper Engineering Construction Area" + icon_state = "yellow" + +/area/construction/supplyshuttle + name = "\improper Supply Shuttle" + icon_state = "yellow" + +/area/construction/quarters + name = "\improper Engineer's Quarters" + icon_state = "yellow" + +/area/construction/qmaint + name = "Maintenance" + icon_state = "yellow" + +/area/construction/hallway + name = "\improper Hallway" + icon_state = "yellow" + +/area/construction/solars + name = "\improper Solar Panels" + icon_state = "yellow" + +/area/construction/solarscontrol + name = "\improper Solar Panel Control" + icon_state = "yellow" + +/area/construction/Storage + name = "Construction Site Storage" + icon_state = "yellow" + +//AI + +/area/ai_monitored/storage/eva + name = "EVA Storage" + icon_state = "eva" + +/area/ai_monitored/storage/secure + name = "Secure Storage" + icon_state = "storage" + ambience = AMBIENCE_HIGHSEC + +/area/ai_monitored/storage/emergency + name = "Emergency Storage" + icon_state = "storage" + +/area/ai_monitored/storage/emergency/eva + name = "Emergency EVA" + icon_state = "storage" + +/area/ai_upload + name = "\improper AI Upload Chamber" + icon_state = "ai_upload" + ambience = AMBIENCE_AI + +/area/ai_upload_foyer + name = "AI Upload Access" + icon_state = "ai_foyer" + sound_env = SMALL_ENCLOSED + ambience = AMBIENCE_AI + +/area/ai_server_room + name = "Messaging Server Room" + icon_state = "ai_server" + sound_env = SMALL_ENCLOSED + ambience = AMBIENCE_AI + +/area/ai + name = "\improper AI Chamber" + icon_state = "ai_chamber" + ambience = AMBIENCE_AI + +/area/ai_cyborg_station + name = "\improper Cyborg Station" + icon_state = "ai_cyborg" + sound_env = SMALL_ENCLOSED + ambience = AMBIENCE_AI + +/area/aisat + name = "\improper AI Satellite" + icon_state = "ai" + ambience = AMBIENCE_AI + +/area/aisat_interior + name = "\improper AI Satellite" + icon_state = "ai" + ambience = AMBIENCE_AI // The lack of inheritence hurts my soul. + +/area/AIsatextFP + name = "\improper AI Sat Ext" + icon_state = "storage" + luminosity = 1 + dynamic_lighting = 0 + ambience = AMBIENCE_AI + +/area/AIsatextFS + name = "\improper AI Sat Ext" + icon_state = "storage" + luminosity = 1 + dynamic_lighting = 0 + ambience = AMBIENCE_AI + +/area/AIsatextAS + name = "\improper AI Sat Ext" + icon_state = "storage" + luminosity = 1 + dynamic_lighting = 0 + ambience = AMBIENCE_AI + +/area/AIsatextAP + name = "\improper AI Sat Ext" + icon_state = "storage" + luminosity = 1 + dynamic_lighting = 0 + ambience = AMBIENCE_AI + +/area/NewAIMain + name = "\improper AI Main New" + icon_state = "storage" + ambience = AMBIENCE_AI + + + +//Misc + +/area/wreck + ambience = AMBIENCE_RUINS + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/wreck/ai + name = "\improper AI Chamber" + icon_state = "ai" + ambience = AMBIENCE_TECH_RUINS + +/area/wreck/main + name = "\improper Wreck" + icon_state = "storage" + +/area/wreck/engineering + name = "\improper Power Room" + icon_state = "engine" + ambience = AMBIENCE_TECH_RUINS + +/area/wreck/bridge + name = "\improper Bridge" + icon_state = "bridge" + ambience = AMBIENCE_TECH_RUINS + +/area/generic + name = "Unknown" + icon_state = "storage" + + + +// Telecommunications Satellite +/area/tcommsat/ + ambience = AMBIENCE_ENGINEERING + +/area/tcommsat/entrance + name = "\improper Telecomms Teleporter" + icon_state = "tcomsatentrance" + +/area/tcommsat/chamber + name = "\improper Telecomms Central Compartment" + icon_state = "tcomsatcham" + +/area/tcomsat + name = "\improper Telecomms Satellite" + icon_state = "tcomsatlob" + ambience = AMBIENCE_ENGINEERING + +/area/tcomfoyer + name = "\improper Telecomms Foyer" + icon_state = "tcomsatfoyer" + ambience = AMBIENCE_ENGINEERING + +/area/tcomwest + name = "\improper Telecommunications Satellite West Wing" + icon_state = "tcomsatwest" + ambience = AMBIENCE_ENGINEERING + +/area/tcomeast + name = "\improper Telecommunications Satellite East Wing" + icon_state = "tcomsateast" + ambience = AMBIENCE_ENGINEERING + +/area/tcommsat/computer + name = "\improper Telecomms Control Room" + icon_state = "tcomsatcomp" + +/area/tcommsat/lounge + name = "\improper Telecommunications Satellite Lounge" + icon_state = "tcomsatlounge" + +/area/tcommsat/powercontrol + name = "\improper Telecommunications Power Control" + icon_state = "tcomsatwest" + + +// Away Missions +/area/awaymission + name = "\improper Strange Location" + icon_state = "away" + ambience = AMBIENCE_FOREBODING + flags = AREA_FLAG_IS_NOT_PERSISTENT + +/area/awaymission/gateway + name = "\improper Gateway" + icon_state = "teleporter" + music = "signal" + +/area/awaymission/example + name = "\improper Strange Station" + icon_state = "away" + +/area/awaymission/wwmines + name = "\improper Wild West Mines" + icon_state = "away1" + luminosity = 1 + requires_power = 0 + +/area/awaymission/wwgov + name = "\improper Wild West Mansion" + icon_state = "away2" + luminosity = 1 + requires_power = 0 + +/area/awaymission/wwrefine + name = "\improper Wild West Refinery" + icon_state = "away3" + luminosity = 1 + requires_power = 0 + +/area/awaymission/wwvault + name = "\improper Wild West Vault" + icon_state = "away3" + luminosity = 0 + +/area/awaymission/wwvaultdoors + name = "\improper Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power + icon_state = "away2" + requires_power = 0 + luminosity = 0 + +/area/awaymission/desert + name = "Mars" + icon_state = "away" + +/area/awaymission/BMPship1 + name = "\improper Aft Block" + icon_state = "away1" + +/area/awaymission/BMPship2 + name = "\improper Midship Block" + icon_state = "away2" + +/area/awaymission/BMPship3 + name = "\improper Fore Block" + icon_state = "away3" + +/area/awaymission/spacebattle + name = "\improper Space Battle" + icon_state = "away" + requires_power = 0 + +/area/awaymission/spacebattle/cruiser + name = "\improper NanoTrasen Cruiser" + +/area/awaymission/spacebattle/syndicate1 + name = "\improper Syndicate Assault Ship 1" + +/area/awaymission/spacebattle/syndicate2 + name = "\improper Syndicate Assault Ship 2" + +/area/awaymission/spacebattle/syndicate3 + name = "\improper Syndicate Assault Ship 3" + +/area/awaymission/spacebattle/syndicate4 + name = "\improper Syndicate War Sphere 1" + +/area/awaymission/spacebattle/syndicate5 + name = "\improper Syndicate War Sphere 2" + +/area/awaymission/spacebattle/syndicate6 + name = "\improper Syndicate War Sphere 3" + +/area/awaymission/spacebattle/syndicate7 + name = "\improper Syndicate Fighter" + +/area/awaymission/spacebattle/secret + name = "\improper Hidden Chamber" + +/area/awaymission/listeningpost + name = "\improper Listening Post" + icon_state = "away" + requires_power = 0 + +/area/awaymission/beach + name = "Beach" + icon_state = "null" + luminosity = 1 + dynamic_lighting = 0 + requires_power = 0 + +///////////////////////////////////////////////////////////////////// +/* + Lists of areas to be used with is_type_in_list. + Used in gamemodes code at the moment. --rastaf0 +*/ + +// CENTCOM +var/list/centcom_areas = list ( + /area/centcom, + /area/shuttle/escape/centcom, + /area/shuttle/escape_pod1/centcom, + /area/shuttle/escape_pod2/centcom, + /area/shuttle/escape_pod3/centcom, + /area/shuttle/escape_pod5/centcom, + /area/shuttle/transport1/centcom, + /area/shuttle/administration/centcom, + /area/shuttle/specops/centcom, +) + +//SPACE STATION 13 +var/list/the_station_areas = list ( + /area/shuttle/arrival, + /area/shuttle/escape/station, + /area/shuttle/escape_pod1/station, + /area/shuttle/escape_pod2/station, + /area/shuttle/escape_pod3/station, + /area/shuttle/escape_pod5/station, + /area/shuttle/mining/station, + /area/shuttle/transport1/station, + // /area/shuttle/transport2/station, + /area/shuttle/prison/station, + /area/shuttle/administration/station, + /area/shuttle/specops/station, + /area/maintenance, + /area/hallway, + /area/bridge, + /area/crew_quarters, + /area/holodeck, + /area/mint, + /area/library, + /area/chapel, + /area/lawoffice, + /area/engineering, + /area/solar, + /area/assembly, + /area/teleporter, + /area/medical, + /area/security, + /area/quartermaster, + /area/janitor, + /area/hydroponics, + /area/rnd, + /area/storage, + /area/construction, + /area/ai_monitored/storage/eva, + /area/ai_monitored/storage/secure, + /area/ai_monitored/storage/emergency, + /area/ai_upload, + /area/ai_upload_foyer, + /area/ai +) + + + + +/area/beach + name = "Keelin's private beach" + icon_state = "yellow" + luminosity = 1 + dynamic_lighting = 0 requires_power = 0 \ No newline at end of file diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index ff8b25ce12..dc13aa2365 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -51,6 +51,7 @@ var/sound_env = STANDARD_STATION var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf var/forbid_events = FALSE // If true, random events will not start inside this area. + var/forbid_singulo = FALSE // If true singulo will not move in. var/no_spoilers = FALSE // If true, makes it much more difficult to see what is inside an area with things like mesons. var/soundproofed = FALSE // If true, blocks sounds from other areas and prevents hearers on other areas from hearing the sounds within. @@ -379,7 +380,7 @@ var/list/mob/living/forced_ambiance_list = new /area/Entered(mob/M) if(!istype(M) || !M.ckey) return - + if(!isliving(M)) M.lastarea = src return diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b0703f63a4..0234ec9371 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -225,7 +225,7 @@ else f_name += "oil-stained [name][infix]." - var/list/output = list("[bicon(src)] That's [f_name] [suffix]", desc) + var/list/output = list("\icon[src.examine_icon()][bicon(src)] That's [f_name] [suffix]", desc) if(user.client?.prefs.examine_text_mode == EXAMINE_MODE_INCLUDE_USAGE) output += description_info diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 5bc0272997..016a96c723 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1125,7 +1125,7 @@ // This is not a status display message, since it's something the character // themselves is meant to see BEFORE putting the money in - to_chat(usr, "[bicon(cashmoney)] That is not enough money.") + to_chat(usr, "\icon[cashmoney][bicon(cashmoney)] That is not enough money.") return 0 if(istype(cashmoney, /obj/item/weapon/spacecash)) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 137d3a7adb..6ceab53895 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -111,7 +111,7 @@ Class Procs: var/clickvol = 40 // volume var/interact_offline = 0 // Can the machine be interacted with while de-powered. var/obj/item/weapon/circuitboard/circuit = null - + // 0.0 - 1.0 multipler for prob() based on bullet structure damage // So if this is 1.0 then a 100 damage bullet will always break this structure // If this is 0.5 then a 50 damage bullet will break this structure 25% of the time @@ -284,7 +284,7 @@ Class Procs: /obj/machinery/proc/state(var/msg) for(var/mob/O in hearers(src, null)) - O.show_message("[bicon(src)] [msg]", 2) + O.show_message("\icon[src][bicon(src)] [msg]", 2) /obj/machinery/proc/ping(text=null) if(!text) @@ -439,7 +439,7 @@ Class Procs: for(var/obj/I in contents) if(istype(I,/obj/item/weapon/card/id)) I.forceMove(src.loc) - + if(!circuit) return 0 var/obj/structure/frame/A = new /obj/structure/frame(src.loc) @@ -499,7 +499,7 @@ Class Procs: var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) - + var/atom/droploc = drop_location() if(!droploc || !contents.len) // not even a circuit? playsound(src, 'sound/machines/machine_die_short.ogg') @@ -513,17 +513,17 @@ Class Procs: if(severity != 1) for(var/obj/item/weapon/card/id/I in contents) surviving_parts |= I - + // May populate some items to throw around if(!LAZYLEN(component_parts) && circuit) circuit.apply_default_parts(src) - + var/survivability switch(severity) // No survivors if(1) survivability = 0 - + // 1 part survives if(2) survivability = 0 @@ -534,15 +534,15 @@ Class Procs: // 50% of parts destroyed on average if(3) survivability = 50 - + // No parts destroyed, but you lose the frame else survivability = 100 - + for(var/atom/movable/P in contents) if(prob(survivability)) surviving_parts |= P - + if(circuit && severity >= 2) var/datum/frame/frame_types/FT = circuit.board_type if(istype(FT)) diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index 705914f794..c63ea1f1d8 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -138,7 +138,7 @@ var/icon/I = imap[1+(ix + icx*iy)*2] var/icon/I2 = imap[2+(ix + icx*iy)*2] - //to_world("icon: [bicon(I)]") + //to_world("icon: \icon[I][bicon(I)]") I.DrawBox(colour, rx, ry, rx+1, ry+1) @@ -153,7 +153,7 @@ H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]" - //to_world("[bicon(I)] at [H.screen_loc]") + //to_world("\icon[I][bicon(I)] at [H.screen_loc]") H.name = (i==0)?"maprefresh":"map" @@ -266,7 +266,7 @@ //to_world("trying [ix],[iy] : [ix+icx*iy]") var/icon/I = imap[1+(ix + icx*iy)] - //to_world("icon: [bicon(I)]") + //to_world("icon: \icon[I][bicon(I)]") I.DrawBox(colour, rx, ry, rx, ry) @@ -279,7 +279,7 @@ H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]" - //to_world("[bicon(I)] at [H.screen_loc]") + //to_world("\icon[I][bicon(I)] at [H.screen_loc]") H.name = (i==0)?"maprefresh":"map" diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 87e39ac937..f1e8199596 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -422,7 +422,7 @@ return ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "PortableTurret", name, 500, 400) + ui = new(user, src, "PortableTurret", name, ui_x = 500, ui_y = 400) ui.open() /obj/machinery/porta_turret/tgui_data(mob/user) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 7350ca0c1e..6b6fc6df6a 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -98,7 +98,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console/update_icon() cut_overlays() - + if(stat & NOPOWER) set_light(0) set_light_on(FALSE) @@ -145,9 +145,9 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console/tgui_act(action, list/params) if(..()) return TRUE - + add_fingerprint(usr) - + switch(action) if("write") if(reject_bad_text(params["write"])) @@ -198,7 +198,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() screen = RCS_SENTPASS message_log += list(list("Message sent to [recipient]", "[message]")) else - audible_message(text("[bicon(src)] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) + audible_message(text("\icon[src][bicon(src)] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) . = TRUE //Handle printing diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 916d158e8a..9ee8ad6f6e 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -520,7 +520,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) /datum/suit_cycler_choice/department/sec/riot, /datum/suit_cycler_choice/department/sec/eva ) - + /// Species that the cycler can refit suits for. Null assumes all except specially excluded ones. var/list/limit_species @@ -544,13 +544,13 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) species = load_species() emagged_departments = load_emagged() limit_departments = null // just for mem - + target_department = departments["No Change"] target_species = species["No Change"] if(!target_department || !target_species) stat |= BROKEN - + wires = new(src) /obj/machinery/suit_cycler/Destroy() @@ -704,7 +704,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) /obj/machinery/suit_cycler/vintage/rugged name = "Vintage Ruggedized suit cycler" model_text = "Vintage Ruggedized" - + limit_departments = list( /datum/suit_cycler_choice/department/vintage/eng, /datum/suit_cycler_choice/department/vintage/marine, @@ -925,17 +925,17 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) /obj/machinery/suit_cycler/tgui_static_data(mob/user) var/list/data = list() - + // tgui gets angy if you pass values too var/list/department_keys = list() for(var/key in departments) department_keys += key - + // emagged at the bottom if(emagged) for(var/key in emagged_departments) department_keys += key - + var/list/species_keys = list() for(var/key in species) species_keys += key @@ -943,7 +943,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) data["departments"] = department_keys data["species"] = species_keys - return data + return data /obj/machinery/suit_cycler/tgui_act(action, params) if(..()) @@ -1063,7 +1063,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) /obj/machinery/suit_cycler/proc/finished_job() var/turf/T = get_turf(src) - T.visible_message("[bicon(src)]The [src] beeps several times.") + T.visible_message("\icon[src][bicon(src)]The [src] beeps several times.") icon_state = initial(icon_state) active = 0 playsound(src, 'sound/machines/boobeebeep.ogg', 50) @@ -1114,7 +1114,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) /obj/machinery/suit_cycler/proc/apply_paintjob() if(!target_species || !target_department) return - + // Helmet to new paint if(target_department.can_refit_helmet(helmet)) target_department.do_refit_helmet(helmet) @@ -1129,6 +1129,5 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) if(target_species.can_refit_to(helmet, suit, suit?.helmet)) target_species.do_refit_to(helmet, suit, suit?.helmet) else - visible_message("[bicon(src)]Unable to apply specified cosmetics with specified species. Please try again with a different species or cosmetic option selected.") + visible_message("\icon[src][bicon(src)]Unable to apply specified cosmetics with specified species. Please try again with a different species or cosmetic option selected.") return - \ No newline at end of file diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 549546b388..5bcf571f61 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -454,7 +454,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/part_b_extra = "" if(data == DATA_ANTAG) // intercepted radio message part_b_extra = " (Intercepted)" - var/part_a = "[bicon(radio)]\[[freq_text]\][part_b_extra] " // goes in the actual output + var/part_a = "\icon[radio][bicon(radio)]\[[freq_text]\][part_b_extra] " // goes in the actual output // --- Some more pre-message formatting --- var/part_b = " " // Tweaked for security headsets -- TLE @@ -656,7 +656,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // Create a radio headset for the sole purpose of using its icon var/obj/item/device/radio/headset/radio = new - var/part_b = " [bicon(radio)]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE + var/part_b = "\icon[radio][bicon(radio)]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE var/part_blackbox_b = " \[[freq_text]\] " // Tweaked for security headsets -- TLE var/part_c = "" diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index b5468fed4d..154e243419 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -128,7 +128,7 @@ /obj/machinery/turretid/tgui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "PortableTurret", name) // 500, 400 + ui = new(user, src, "PortableTurret", name, ui_x = 500, ui_y = 400) // 500, 400 ui.open() /obj/machinery/turretid/tgui_data(mob/user) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 85af948f96..7184fc3364 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -272,7 +272,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message) if(chassis) - chassis.occupant_message("[bicon(src)] [message]") + chassis.occupant_message("\icon[src][bicon(src)] [message]") return /obj/item/mecha_parts/mecha_equipment/proc/log_message(message) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 7e4bc6ed87..ff6fe6e8a4 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -653,20 +653,20 @@ switch(emagged) if(0) emagged = 0.5 - visible_message("[bicon(src)] [src] beeps: \"DB error \[Code 0x00F1\]\"") + visible_message("\icon[src][bicon(src)] [src] beeps: \"DB error \[Code 0x00F1\]\"") sleep(10) - visible_message("[bicon(src)] [src] beeps: \"Attempting auto-repair\"") + visible_message("\icon[src][bicon(src)] [src] beeps: \"Attempting auto-repair\"") sleep(15) - visible_message("[bicon(src)] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") + visible_message("\icon[src][bicon(src)] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") sleep(30) - visible_message("[bicon(src)] [src] beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"") + visible_message("\icon[src][bicon(src)] [src] beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"") req_access = null emagged = 1 return 1 if(0.5) - visible_message("[bicon(src)] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") + visible_message("\icon[src][bicon(src)] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") if(1) - visible_message("[bicon(src)] [src] beeps: \"No records in User DB\"") + visible_message("\icon[src][bicon(src)] [src] beeps: \"No records in User DB\"") /obj/machinery/mecha_part_fabricator/proc/eject_materials(var/material, var/amount) // 0 amount = 0 means ejecting a full stack; -1 means eject everything var/recursive = amount == -1 ? TRUE : FALSE diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 8b5b53b168..97805772d5 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -549,7 +549,7 @@ if(equipment?.len) . += "It's equipped with:" for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment) - . += "[bicon(ME)] [ME]" + . += "\icon[ME][bicon(ME)] [ME]" /obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits. return @@ -2449,7 +2449,7 @@ /obj/mecha/proc/occupant_message(message as text) if(message) if(src.occupant && src.occupant.client) - to_chat(src.occupant, "[bicon(src)] [message]") + to_chat(src.occupant, "\icon[src][bicon(src)] [message]") return /obj/mecha/proc/log_message(message as text,red=null) diff --git a/code/game/mecha/micro/micro.dm b/code/game/mecha/micro/micro.dm index a30af28aa3..97d6728f54 100644 --- a/code/game/mecha/micro/micro.dm +++ b/code/game/mecha/micro/micro.dm @@ -121,7 +121,7 @@ /obj/mecha/micro/move_inside() var/mob/living/carbon/C = usr - if (C.size_multiplier >= 0.5) + if (C.get_effective_size(TRUE) >= 0.5) to_chat(C, "You can't fit in this suit!") return else @@ -129,7 +129,7 @@ /obj/mecha/micro/move_inside_passenger() var/mob/living/carbon/C = usr - if (C.size_multiplier >= 0.5) + if (C.get_effective_size(TRUE) >= 0.5) to_chat(C, "You can't fit in this suit!") return else diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index e68ce7aa4e..cf26c6463d 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -38,6 +38,12 @@ icon_state = "dirt" mouse_opacity = 0 +/obj/effect/decal/cleanable/Initialize(var/mapload, var/_age) + .=..() + var/turf/simulated/our_turf = src.loc + if(our_turf && istype(our_turf) && our_turf.can_dirty && _age) + our_turf.dirt = 101 + /obj/effect/decal/cleanable/flour name = "flour" desc = "It's still good. Four second rule!" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c743a60c80..8b45f1d001 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -991,3 +991,6 @@ Note: This proc can be overwritten to allow for different types of auto-alignmen // this gets called when the item gets chucked by the vending machine /obj/item/proc/vendor_action(var/obj/machinery/vending/V) return + +/obj/item/proc/on_holder_escape(var/obj/item/weapon/holder/H) + return diff --git a/code/game/objects/items/devices/ai_detector.dm b/code/game/objects/items/devices/ai_detector.dm index 94d3a35912..7bb92bf216 100644 --- a/code/game/objects/items/devices/ai_detector.dm +++ b/code/game/objects/items/devices/ai_detector.dm @@ -94,22 +94,22 @@ if(new_state != old_state) switch(new_state) if(PROXIMITY_OFF_CAMERANET) - to_chat(carrier, "[bicon(src)] Now outside of camera network.") + to_chat(carrier, "\icon[src][bicon(src)] Now outside of camera network.") carrier << 'sound/machines/defib_failed.ogg' if(PROXIMITY_NONE) - to_chat(carrier, "[bicon(src)] Now within camera network, AI and cameras unfocused.") + to_chat(carrier, "\icon[src][bicon(src)] Now within camera network, AI and cameras unfocused.") carrier << 'sound/machines/defib_safetyOff.ogg' if(PROXIMITY_NEAR) - to_chat(carrier, "[bicon(src)] Warning: AI focus at nearby location.") + to_chat(carrier, "\icon[src][bicon(src)] Warning: AI focus at nearby location.") carrier << 'sound/machines/defib_SafetyOn.ogg' if(PROXIMITY_ON_SCREEN) - to_chat(carrier, "[bicon(src)] Alert: AI or camera focused at current location!") + to_chat(carrier, "\icon[src][bicon(src)] Alert: AI or camera focused at current location!") carrier <<'sound/machines/defib_ready.ogg' if(PROXIMITY_TRACKING) - to_chat(carrier, "[bicon(src)] Danger: AI is actively tracking you!") + to_chat(carrier, "\icon[src][bicon(src)] Danger: AI is actively tracking you!") carrier << 'sound/machines/defib_success.ogg' if(PROXIMITY_TRACKING_FAIL) - to_chat(carrier, "[bicon(src)] Danger: AI is attempting to actively track you, but you are outside of the camera network!") + to_chat(carrier, "\icon[src][bicon(src)] Danger: AI is attempting to actively track you, but you are outside of the camera network!") carrier <<'sound/machines/defib_ready.ogg' diff --git a/code/game/objects/items/devices/communicator/UI_tgui.dm b/code/game/objects/items/devices/communicator/UI_tgui.dm index f3f13663d8..092b45cea2 100644 --- a/code/game/objects/items/devices/communicator/UI_tgui.dm +++ b/code/game/objects/items/devices/communicator/UI_tgui.dm @@ -382,7 +382,7 @@ im_list += list(list("address" = exonet.address, "to_address" = their_address, "im" = text)) log_pda("(COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]", usr) var/obj/item/device/communicator/comm = exonet.get_atom_from_address(their_address) - to_chat(usr, "[bicon(src)] Sent message to [comm.owner], \"[text]\" (Reply)") + to_chat(usr, "\icon[src][bicon(src)] Sent message to [comm.owner], \"[text]\" (Reply)") for(var/mob/M in player_list) if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) if(istype(M, /mob/new_player) || M.forbid_seeing_deadchat) diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index 39411fbacf..a92c2725c0 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -142,10 +142,10 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Description: Shows all the voice mobs inside the device, and their status. /obj/item/device/communicator/examine(mob/user) . = ..() - + for(var/mob/living/voice/voice in contents) . += "On the screen, you can see a image feed of [voice]." - + if(voice && voice.key) switch(voice.stat) if(CONSCIOUS) @@ -302,7 +302,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() /obj/item/device/communicator/Destroy() for(var/mob/living/voice/voice in contents) voice_mobs.Remove(voice) - to_chat(voice, "[bicon(src)] Connection timed out with remote host.") + to_chat(voice, "\icon[src][bicon(src)] Connection timed out with remote host.") qdel(voice) close_connection(reason = "Connection timed out") diff --git a/code/game/objects/items/devices/communicator/messaging.dm b/code/game/objects/items/devices/communicator/messaging.dm index bcfe1cf0c3..5c27d8a850 100644 --- a/code/game/objects/items/devices/communicator/messaging.dm +++ b/code/game/objects/items/devices/communicator/messaging.dm @@ -34,7 +34,7 @@ if(src in comm.voice_invites) comm.open_connection(src) return - to_chat(src, "[bicon(origin_atom)] Receiving communicator request from [origin_atom]. To answer, use the Call Communicator \ + to_chat(src, "\icon[origin_atom][bicon(origin_atom)] Receiving communicator request from [origin_atom]. To answer, use the Call Communicator \ verb, and select that name to answer the call.") src << 'sound/machines/defib_SafetyOn.ogg' comm.voice_invites |= src @@ -44,7 +44,7 @@ random = random / 10 exonet.send_message(origin_address, "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms") if(message == "text") - to_chat(src, "[bicon(origin_atom)] Received text message from [origin_atom]: \"[text]\"") + to_chat(src, "\icon[origin_atom][bicon(origin_atom)] Received text message from [origin_atom]: \"[text]\"") src << 'sound/machines/defib_safetyOff.ogg' exonet_messages.Add("From [origin_atom]:
[text]") return @@ -84,7 +84,7 @@ playsound(src, S, 50, 1) for (var/mob/O in hearers(2, loc)) - O.show_message(text("[bicon(src)] *[ttone]*")) + O.show_message(text("\icon[src][bicon(src)] *[ttone]*")) alert_called = 1 update_icon() @@ -95,7 +95,7 @@ L = loc if(L) - to_chat(L, "[bicon(src)] Message from [who]: \"[text]\" (Reply)") + to_chat(L, "\icon[src][bicon(src)] Message from [who]: \"[text]\" (Reply)") // This is the only Topic the communicators really uses /obj/item/device/communicator/Topic(href, href_list) @@ -108,7 +108,7 @@ exonet.send_message(comm.exonet.address, "text", message) im_list += list(list("address" = exonet.address, "to_address" = comm.exonet.address, "im" = message)) log_pda("(COMM: [src]) sent \"[message]\" to [exonet.get_atom_from_address(comm.exonet.address)]", usr) - to_chat(usr, "[bicon(src)] Sent message to [comm.owner], \"[message]\" (Reply)") + to_chat(usr, "\icon[src][bicon(src)] Sent message to [comm.owner], \"[message]\" (Reply)") // Verb: text_communicator() // Parameters: None diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm index e938276bdc..671598a6ef 100644 --- a/code/game/objects/items/devices/communicator/phone.dm +++ b/code/game/objects/items/devices/communicator/phone.dm @@ -39,15 +39,15 @@ comm.voice_requests.Remove(src) if(user) - comm.visible_message("[bicon(src)] Connecting to [src].") - to_chat(user, "[bicon(src)] Attempting to call [comm].") + comm.visible_message("\icon[src][bicon(src)] Connecting to [src].") + to_chat(user, "\icon[src][bicon(src)] Attempting to call [comm].") sleep(10) - to_chat(user, "[bicon(src)] Dialing internally from [station_name()], [system_name()].") + to_chat(user, "\icon[src][bicon(src)] Dialing internally from [station_name()], [system_name()].") sleep(20) //If they don't have an exonet something is very wrong and we want a runtime. - to_chat(user, "[bicon(src)] Connection re-routed to [comm] at [comm.exonet.address].") + to_chat(user, "\icon[src][bicon(src)] Connection re-routed to [comm] at [comm.exonet.address].") sleep(40) - to_chat(user, "[bicon(src)] Connection to [comm] at [comm.exonet.address] established.") - comm.visible_message("[bicon(src)] Connection to [src] at [exonet.address] established.") + to_chat(user, "\icon[src][bicon(src)] Connection to [comm] at [comm.exonet.address] established.") + comm.visible_message("\icon[src][bicon(src)] Connection to [src] at [exonet.address] established.") sleep(20) src.add_communicating(comm) @@ -86,28 +86,28 @@ //Now for some connection fluff. if(user) - to_chat(user, "[bicon(src)] Connecting to [candidate].") - to_chat(new_voice, "[bicon(src)] Attempting to call [src].") + to_chat(user, "\icon[src][bicon(src)] Connecting to [candidate].") + to_chat(new_voice, "\icon[src][bicon(src)] Attempting to call [src].") sleep(10) - to_chat(new_voice, "[bicon(src)] Dialing to [station_name()], Kara Subsystem, [system_name()].") + to_chat(new_voice, "\icon[src][bicon(src)] Dialing to [station_name()], Kara Subsystem, [system_name()].") sleep(20) - to_chat(new_voice, "[bicon(src)] Connecting to [station_name()] telecommunications array.") + to_chat(new_voice, "\icon[src][bicon(src)] Connecting to [station_name()] telecommunications array.") sleep(40) - to_chat(new_voice, "[bicon(src)] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].") + to_chat(new_voice, "\icon[src][bicon(src)] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].") sleep(20) //We're connected, no need to hide everything. new_voice.client.screen.Remove(blackness) qdel(blackness) - to_chat(new_voice, "[bicon(src)] Connection to [src] established.") + to_chat(new_voice, "\icon[src][bicon(src)] Connection to [src] established.") to_chat(new_voice, "To talk to the person on the other end of the call, just talk normally.") to_chat(new_voice, "If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.") to_chat(new_voice, "Remember, your character does not know anything you've learned from observing!") if(new_voice.mind) new_voice.mind.assigned_role = "Disembodied Voice" if(user) - to_chat(user, "[bicon(src)] Your communicator is now connected to [candidate]'s communicator.") + to_chat(user, "\icon[src][bicon(src)] Your communicator is now connected to [candidate]'s communicator.") // Proc: close_connection() // Parameters: 3 (user - the user who initiated the disconnect, target - the mob or device being disconnected, reason - string shown when disconnected) @@ -120,8 +120,8 @@ for(var/mob/living/voice/voice in voice_mobs) //Handle ghost-callers if(target && voice != target) //If no target is inputted, it deletes all of them. continue - to_chat(voice, "[bicon(src)] [reason].") - visible_message("[bicon(src)] [reason].") + to_chat(voice, "\icon[src][bicon(src)] [reason].") + visible_message("\icon[src][bicon(src)] [reason].") voice_mobs.Remove(voice) qdel(voice) update_icon() @@ -131,8 +131,8 @@ continue src.del_communicating(comm) comm.del_communicating(src) - comm.visible_message("[bicon(src)] [reason].") - visible_message("[bicon(src)] [reason].") + comm.visible_message("\icon[src][bicon(src)] [reason].") + visible_message("\icon[src][bicon(src)] [reason].") if(comm.camera && video_source == comm.camera) //We hung up on the person on video end_video() if(camera && comm.video_source == camera) //We hung up on them while they were watching us @@ -163,7 +163,7 @@ if(ringer) playsound(src, 'sound/machines/twobeep.ogg', 50, 1) for (var/mob/O in hearers(2, loc)) - O.show_message(text("[bicon(src)] *beep*")) + O.show_message(text("\icon[src][bicon(src)] *beep*")) alert_called = 1 update_icon() @@ -174,7 +174,7 @@ L = loc if(L) - to_chat(L, "[bicon(src)] Communications request from [who].") + to_chat(L, "\icon[src][bicon(src)] Communications request from [who].") // Proc: del_request() // Parameters: 1 (candidate - the ghost or communicator to be declined) @@ -197,13 +197,13 @@ us = loc if(us) - to_chat(us, "[bicon(src)] Declined request.") + to_chat(us, "\icon[src][bicon(src)] Declined request.") // Proc: see_emote() // Parameters: 2 (M - the mob the emote originated from, text - the emote's contents) // Description: Relays the emote to all linked communicators. /obj/item/device/communicator/see_emote(mob/living/M, text) - var/rendered = "[bicon(src)] [text]" + var/rendered = "\icon[src][bicon(src)] [text]" for(var/obj/item/device/communicator/comm in communicating) var/turf/T = get_turf(comm) if(!T) return @@ -250,14 +250,14 @@ var/message = combined["formatted"] var/name_used = M.GetVoice() var/rendered = null - rendered = "[bicon(src)] [name_used] [message]" + rendered = "\icon[src][bicon(src)] [name_used] [message]" mob.show_message(rendered, 2) // Proc: show_message() // Parameters: 4 (msg - the message, type - number to determine if message is visible or audible, alt - unknown, alt_type - unknown) // Description: Relays the message to all linked communicators. /obj/item/device/communicator/show_message(msg, type, alt, alt_type) - var/rendered = "[bicon(src)] [msg]" + var/rendered = "\icon[src][bicon(src)] [msg]" for(var/obj/item/device/communicator/comm in communicating) var/turf/T = get_turf(comm) if(!T) return @@ -339,15 +339,15 @@ return if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something - to_chat(user, "[bicon(src)]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") + to_chat(user, "\icon[src][bicon(src)]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") return - to_chat(user, "[bicon(src)] Attempting to start video over existing call.") + to_chat(user, "\icon[src][bicon(src)] Attempting to start video over existing call.") sleep(30) - to_chat(user, "[bicon(src)] Please wait...") + to_chat(user, "\icon[src][bicon(src)] Please wait...") video_source = comm.camera - comm.visible_message("[bicon(src)] New video connection from [comm].") + comm.visible_message("\icon[src][bicon(src)] New video connection from [comm].") update_active_camera_screen() GLOB.moved_event.register(video_source, src, .proc/update_active_camera_screen) update_icon() @@ -360,7 +360,7 @@ show_static() video_source = null - . = "[bicon(src)] [reason ? reason : "Video session ended"]." + . = "\icon[src][bicon(src)] [reason ? reason : "Video session ended"]." visible_message(.) update_icon() diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index 2b7a31eb2c..d127fe9404 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -65,7 +65,7 @@ STOP_PROCESSING(SSobj, src) update_icon() update_sound() - to_chat(user, "[bicon(src)] You switch [scanning ? "on" : "off"] \the [src].") + to_chat(user, "\icon[src][bicon(src)] You switch [scanning ? "on" : "off"] \the [src].") /obj/item/device/geiger/update_icon() if(!scanning) diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index e92c45e151..5d6b46c6a7 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -47,7 +47,7 @@ to_chat(user, "You are already hacking!") return 0 if(!is_type_in_list(target, supported_types)) - to_chat(user, "[bicon(src)] Unable to hack this target!") + to_chat(user, "\icon[src][bicon(src)] Unable to hack this target!") return 0 var/found = known_targets.Find(target) if(found) diff --git a/code/game/objects/items/devices/holowarrant.dm b/code/game/objects/items/devices/holowarrant.dm index 37a5ade906..0272dac254 100644 --- a/code/game/objects/items/devices/holowarrant.dm +++ b/code/game/objects/items/devices/holowarrant.dm @@ -68,7 +68,7 @@ if(active.fields["arrestsearch"] == "arrest") var/output = {" [active.fields["namewarrant"]] -
Sol Central Government Colonial Marshal Bureau
+
Commonwealth Security Bond Association
in the jurisdiction of the
[using_map.boss_name] in [using_map.station_name]

@@ -115,7 +115,7 @@ name = "holowarrant devices" desc = "A box of holowarrant diplays for security use." -/obj/item/weapon/storage/box/holowarrants/New() +/obj/item/weapon/storage/box/holowarrants/New() ..() for(var/i = 0 to 3) new /obj/item/device/holowarrant(src) // VOREStation addition ends \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index b7304fa8a1..e8ba830cae 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -491,7 +491,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) var/list/jamming = is_jammed(src) if(jamming) var/distance = jamming["distance"] - to_chat(M, "[bicon(src)] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.") + to_chat(M, "\icon[src][bicon(src)] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.") return FALSE // First, we want to generate a new radio signal diff --git a/code/game/objects/items/devices/text_to_speech.dm b/code/game/objects/items/devices/text_to_speech.dm index 330ca97d73..c97693ed5f 100644 --- a/code/game/objects/items/devices/text_to_speech.dm +++ b/code/game/objects/items/devices/text_to_speech.dm @@ -24,7 +24,7 @@ var/message = sanitize(tgui_input_text(user,"Choose a message to relay to those around you.")) if(message) - audible_message("[bicon(src)] \The [src.name] states, \"[message]\"", runemessage = "synthesized speech") + audible_message("\icon[src][bicon(src)] \The [src.name] states, \"[message]\"", runemessage = "synthesized speech") if(ismob(loc)) loc.audible_message("", runemessage = "\[TTS Voice\] [message]") diff --git a/code/game/objects/items/stacks/tiles/fifty_spawner_tiles.dm b/code/game/objects/items/stacks/tiles/fifty_spawner_tiles.dm index 0ac18b8ae1..103b54c691 100644 --- a/code/game/objects/items/stacks/tiles/fifty_spawner_tiles.dm +++ b/code/game/objects/items/stacks/tiles/fifty_spawner_tiles.dm @@ -36,6 +36,22 @@ name = "stack of happy carpet" type_to_spawn = /obj/item/stack/tile/carpet/happy +/obj/fiftyspawner/brncarpet + name = "stack of brown carpet" + type_to_spawn = /obj/item/stack/tile/carpet/brncarpet + +/obj/fiftyspawner/blucarpet2 + name = "stack of blue carpet" + type_to_spawn = /obj/item/stack/tile/carpet/blucarpet2 + +/obj/fiftyspawner/greencarpet + name = "stack of green carpet" + type_to_spawn = /obj/item/stack/tile/carpet/greencarpet + +/obj/fiftyspawner/purplecarpet + name = "stack of purple carpet" + type_to_spawn = /obj/item/stack/tile/carpet/purplecarpet + /obj/fiftyspawner/floor name = "stack of floor tiles" type_to_spawn = /obj/item/stack/tile/floor diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index caeefd9e10..4d037bc37c 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -153,6 +153,15 @@ icon_state = "tile-carpet" YW Edit end */ +/obj/item/stack/tile/carpet/brncarpet + icon_state = "tile-carpet" +/obj/item/stack/tile/carpet/blucarpet2 + icon_state = "tile-carpet" +/obj/item/stack/tile/carpet/greencarpet + icon_state = "tile-carpet" +/obj/item/stack/tile/carpet/purplecarpet + icon_state = "tile-carpet" + /obj/item/stack/tile/floor name = "floor tile" singular_name = "floor tile" diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index 8a3f59feae..d72da2a7cb 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -613,7 +613,7 @@ /obj/item/toy/minigibber/attackby(obj/O, mob/user, params) if(istype(O,/obj/item/toy/figure) || istype(O,/obj/item/toy/character) && O.loc == user) - to_chat(user, "You start feeding \the [O] [bicon(O)] into \the [src]'s mini-input.") + to_chat(user, "You start feeding \the [O] \icon[O][bicon(O)] into \the [src]'s mini-input.") if(do_after(user, 10, target = src)) if(O.loc != user) to_chat(user, "\The [O] is too far away to feed into \the [src]!") diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index 325e9f518a..148df8db50 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -90,8 +90,8 @@ return data /obj/item/weapon/card/id/attack_self(mob/user as mob) - user.visible_message("\The [user] shows you: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]",\ - "You flash your ID card: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]") + user.visible_message("\The [user] shows you: \icon[src][bicon(src)] [src.name]. The assignment on the card: [src.assignment]",\ + "You flash your ID card: \icon[src][bicon(src)] [src.name]. The assignment on the card: [src.assignment]") src.add_fingerprint(user) return @@ -107,7 +107,7 @@ set category = "Object" set src in usr - to_chat(usr, "[bicon(src)] [src.name]: The current assignment on the card is [src.assignment].") + to_chat(usr, "\icon[src][bicon(src)] [src.name]: The current assignment on the card is [src.assignment].") to_chat(usr, "The blood type on the card is [blood_type].") to_chat(usr, "The DNA hash on the card is [dna_hash].") to_chat(usr, "The fingerprint hash on the card is [fingerprint_hash].") @@ -167,7 +167,7 @@ assignment = "Synthetic" access = list( access_synth, access_mining, access_mining_station, access_mining_office, access_research, - access_xenoarch, access_xenobiology, access_external_airlocks, access_robotics, access_tox, + access_xenoarch, access_xenobiology, access_external_airlocks, access_robotics, access_tox, access_tox_storage, access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot ) diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index a100d84cbc..2c0f8d3ef0 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -651,7 +651,7 @@ - + "} diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index 5f9b06c2e7..f64b41d7f0 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -12,13 +12,13 @@ var/active_force = 55 var/inactive_force = 10 -/obj/item/weapon/chainsaw/Initialize() //YW edit - replaced New with Initialize so chainsaws can be mapped in - . = ..() +/obj/item/weapon/chainsaw/Initialize() var/datum/reagents/R = new/datum/reagents(max_fuel) reagents = R R.my_atom = src R.add_reagent("fuel", max_fuel) START_PROCESSING(SSobj, src) + . = ..() /obj/item/weapon/chainsaw/Destroy() STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index d482535968..9b50ff112c 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -1,901 +1,901 @@ -// To clarify: -// For use_to_pickup and allow_quick_gather functionality, -// see item/attackby() (/game/objects/items.dm) -// Do not remove this functionality without good reason, cough reagent_containers cough. -// -Sayu - - -/obj/item/weapon/storage - name = "storage" - icon = 'icons/obj/storage.dmi' - item_icons = list( - slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', - slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', - ) - w_class = ITEMSIZE_NORMAL - show_messages = 1 - - /// List of objects which this item can store (if set, it can't store anything else) - var/list/can_hold - /// List of objects which this item can't store (in effect only if can_hold isn't set) - var/list/cant_hold - /// List of mobs which are currently seeing the contents of this item's storage - var/list/is_seeing - - var/max_w_class = ITEMSIZE_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set) - var/max_storage_space = ITEMSIZE_COST_SMALL * 4 //The sum of the storage costs of all the items in this storage item. - var/storage_slots = null //The number of storage slots in this container. If null, it uses the volume-based storage instead. - - /// Boxes screen object for fixed-size storage (belts, etc) - var/obj/screen/storage/boxes = null - /// List of 'click catchers' for boxes for fixed-size storage - var/list/box_catchers = null - - /// For dynamic storage, the leftmost pixel column for the whole storage display. Most of the interesting effects are hung on this in vis_contents. - var/obj/screen/storage/storage_start = null - /// For dynamic storage, the majority of the width of the whole storage display. Decorative, but sized to the width appropriate to represent how much storage there is. - var/obj/screen/storage/storage_continue = null - /// For dynamic storage, the rightmost pixel column for the whole storage display. Decorative. - var/obj/screen/storage/storage_end = null - - /// The "X" button at the far right of the storage - var/obj/screen/close/closer = null - - var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up. - var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. - var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. - var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. - var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile - var/use_sound = "rustle" //sound played when used. null for no sound. - var/list/starts_with //Things to spawn on the box on spawn - var/empty //Mapper override to spawn an empty version of a container that usually has stuff - /// If you can use this storage while in a pocket - var/pocketable = FALSE - -/obj/item/weapon/storage/Initialize() - . = ..() - - if(allow_quick_empty) - verbs += /obj/item/weapon/storage/verb/quick_empty - else - verbs -= /obj/item/weapon/storage/verb/quick_empty - - if(allow_quick_gather) - verbs += /obj/item/weapon/storage/verb/toggle_gathering_mode - else - verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode - - if(storage_slots) - src.boxes = new /obj/screen/storage( ) - src.boxes.name = "storage" - src.boxes.master = src - src.boxes.icon_state = "block" - src.boxes.screen_loc = "7,7 to 10,8" - else - src.storage_start = new /obj/screen/storage( ) - src.storage_start.name = "storage" - src.storage_start.master = src - src.storage_start.icon_state = "storage_start" - src.storage_start.screen_loc = "7,7 to 10,8" - - src.storage_continue = new /obj/screen/storage( ) - src.storage_continue.name = "storage" - src.storage_continue.master = src - src.storage_continue.icon_state = "storage_continue" - src.storage_continue.screen_loc = "7,7 to 10,8" - - src.storage_end = new /obj/screen/storage( ) - src.storage_end.name = "storage" - src.storage_end.master = src - src.storage_end.icon_state = "storage_end" - src.storage_end.screen_loc = "7,7 to 10,8" - - src.closer = new /obj/screen/close( ) - src.closer.master = src - src.closer.icon_state = "storage_close" - src.closer.hud_layerise() - orient2hud() - - if(LAZYLEN(starts_with) && !empty) - for(var/newtype in starts_with) - var/count = starts_with[newtype] || 1 //Could have left it blank. - while(count) - count-- - new newtype(src) - starts_with = null //Reduce list count. - update_icon() - - calibrate_size() - -/obj/item/weapon/storage/Destroy() - close_all() - clear_slot_catchers() - QDEL_NULL(boxes) - QDEL_NULL(storage_start) - QDEL_NULL(storage_continue) - QDEL_NULL(storage_end) - QDEL_NULL(closer) - - if(ismob(loc)) - var/mob/M = loc - M.remove_from_mob(src) - - . = ..() - -/obj/item/weapon/storage/MouseDrop(obj/over_object as obj) - if(!canremove) - return - - if (isliving(usr) || isobserver(usr)) - - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? - return - - if(over_object == usr && Adjacent(usr)) // this must come before the screen objects only block - src.open(usr) - return - - if (!( istype(over_object, /obj/screen) )) - return ..() - - //makes sure that the storage is equipped, so that we can't drag it into our hand from miles away. - //there's got to be a better way of doing this. - if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) - return - - if (( usr.restrained() ) || ( usr.stat )) - return - - if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) - return - - switch(over_object.name) - if("r_hand") - usr.unEquip(src) - usr.put_in_r_hand(src) - if("l_hand") - usr.unEquip(src) - usr.put_in_l_hand(src) - src.add_fingerprint(usr) - -/obj/item/weapon/storage/AltClick(mob/user) - if(user in is_seeing) - src.close(user) - // I would think there should be some incap check here or something - // But MouseDrop doesn't use one (as of this writing), so... - else if(isliving(user) && Adjacent(user)) - src.open(user) - else - return ..() - -/obj/item/weapon/storage/proc/return_inv() - - var/list/L = list( ) - - L += src.contents - - for(var/obj/item/weapon/storage/S in src) - L += S.return_inv() - for(var/obj/item/weapon/gift/G in src) - L += G.gift - if (istype(G.gift, /obj/item/weapon/storage)) - L += G.gift:return_inv() - return L - -/obj/item/weapon/storage/proc/show_to(mob/user as mob) - if(user.s_active != src) - for(var/obj/item/I in src) - if(I.on_found(user)) - return - if(user.s_active) - user.s_active.hide_from(user) - - var/client/C = user.client - if(!C) - return - - if(storage_slots) - C.screen += src.boxes - create_slot_catchers() - C.screen += src.box_catchers - else - C.screen += src.storage_start - C.screen += src.storage_continue - C.screen += src.storage_end - - C.screen += src.closer - C.screen += src.contents - - user.s_active = src - LAZYDISTINCTADD(is_seeing,user) - -/obj/item/weapon/storage/proc/hide_from(mob/user as mob) - var/client/C = user.client - LAZYREMOVE(is_seeing,user) - - if(!C) - if(!LAZYLEN(is_seeing)) - clear_slot_catchers() - return - - if(storage_slots) - C.screen -= src.boxes - C.screen -= src.box_catchers - else - C.screen -= src.storage_start - C.screen -= src.storage_continue - C.screen -= src.storage_end - - C.screen -= src.closer - C.screen -= src.contents - - if(user.s_active == src) - user.s_active = null - - if(!LAZYLEN(is_seeing)) - clear_slot_catchers() - -/obj/item/weapon/storage/proc/open(mob/user as mob) - if (use_sound) - playsound(src, src.use_sound, 50, 0, -5) - - orient2hud(user) - if(user.s_active) - user.s_active.close(user) - show_to(user) - -/obj/item/weapon/storage/proc/close(mob/user as mob) - src.hide_from(user) - user.s_active = null - return - -/obj/item/weapon/storage/proc/close_all() - for(var/mob/M in can_see_contents()) - close(M) - . = 1 - -/obj/item/weapon/storage/proc/can_see_contents() - var/list/cansee = list() - for(var/mob/M in is_seeing) - if(M.s_active == src && M.client) - cansee |= M - else - LAZYREMOVE(is_seeing,M) - return cansee - -/obj/item/weapon/storage/proc/create_slot_catchers() - clear_slot_catchers() - var/list/new_catchers = list() - for(var/obj/item/I in contents) - var/atom/movable/storage_slot/SS = new(null, I) - SS.screen_loc = I.screen_loc - SS.mouse_opacity = MOUSE_OPACITY_OPAQUE - new_catchers += SS - box_catchers = new_catchers - -/obj/item/weapon/storage/proc/clear_slot_catchers() - if(box_catchers) - for(var/mob/M in is_seeing) - M.client?.screen -= box_catchers - QDEL_LIST_NULL(box_catchers) - -//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. -//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. -/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my) - var/cx = tx - var/cy = ty - src.boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" - for(var/obj/O in src.contents) - O.screen_loc = "[cx],[cy]" - O.hud_layerise() - cx++ - if (cx > mx) - cx = tx - cy-- - src.closer.screen_loc = "[mx+1],[my]" - return - -//This proc draws out the inventory and places the items on it. It uses the standard position. -/obj/item/weapon/storage/proc/slot_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents) - var/cx = 4 - var/cy = 2+rows - src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16" - - if(display_contents_with_number) - for(var/datum/numbered_display/ND in display_contents) - ND.sample_object.screen_loc = "[cx]:16,[cy]:16" - ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" - ND.sample_object.hud_layerise() - var/atom/movable/storage_slot/SS = new(null, ND.sample_object) - SS.screen_loc = ND.sample_object.screen_loc - SS.mouse_opacity = MOUSE_OPACITY_OPAQUE - cx++ - if (cx > (4+cols)) - cx = 4 - cy-- - else - for(var/obj/O in contents) - O.screen_loc = "[cx]:16,[cy]:16" - O.maptext = "" - O.hud_layerise() - var/atom/movable/storage_slot/SS = new(null, O) - SS.screen_loc = O.screen_loc - SS.mouse_opacity = MOUSE_OPACITY_OPAQUE - cx++ - if (cx > (4+cols)) - cx = 4 - cy-- - src.closer.screen_loc = "[4+cols+1]:16,2:16" - return - -/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents) - SHOULD_NOT_SLEEP(TRUE) - - /// A prototype for drawing the leftmost border behind each item in storage - var/static/mutable_appearance/stored_start - /// A prototype for drawing the wide backing space behind each item in storage - var/static/mutable_appearance/stored_continue - /// A prototype for drawing the rightmost border behind each item in storage - var/static/mutable_appearance/stored_end - - if(!stored_start) - // Because these are static and manipulated all the time by different storages, you'd better make 100000% sure this proc never sleeps - stored_start = mutable_appearance(icon = 'icons/mob/screen1.dmi', icon_state = "stored_start", layer = 0.1, plane = PLANE_PLAYER_HUD_ITEMS) - stored_continue = mutable_appearance(icon = 'icons/mob/screen1.dmi', icon_state = "stored_continue", layer = 0.1, plane = PLANE_PLAYER_HUD_ITEMS) - stored_end = mutable_appearance(icon = 'icons/mob/screen1.dmi', icon_state = "stored_end", layer = 0.1, plane = PLANE_PLAYER_HUD_ITEMS) - - var/baseline_max_storage_space = INVENTORY_STANDARD_SPACE / 2 //should be equal to default backpack capacity // This is a lie. - // Above var is misleading, what it does upon changing is makes smaller inventory sizes have smaller space on the UI. - // It's cut in half because otherwise boxes of IDs and other tiny items are unbearably cluttered. - - var/storage_cap_width = 2 //length of sprite for start and end of the box representing total storage space - var/stored_cap_width = 4 //length of sprite for start and end of the box representing the stored item - var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,274) //length of sprite for the box representing total storage space - - QDEL_LIST_NULL(storage_start.vis_contents) - - var/matrix/M = matrix() - M.Scale((storage_width-storage_cap_width*2+3)/32,1) - src.storage_continue.transform = M - - src.storage_start.screen_loc = "4:16,2:16" - src.storage_continue.screen_loc = "4:[storage_cap_width+(storage_width-storage_cap_width*2)/2+2],2:16" - src.storage_end.screen_loc = "4:[19+storage_width-storage_cap_width],2:16" - - var/startpoint = 0 - var/endpoint = 1 - - for(var/obj/item/O in contents) - var/atom/movable/storage_slot/SS = new(null, O) - startpoint = endpoint + 1 - endpoint += storage_width * O.get_storage_cost()/max_storage_space - - var/matrix/M_start = matrix() - var/matrix/M_continue = matrix() - var/matrix/M_end = matrix() - M_start.Translate(startpoint,0) - M_continue.Scale((endpoint-startpoint-stored_cap_width*2)/32,1) - M_continue.Translate(startpoint+stored_cap_width+(endpoint-startpoint-stored_cap_width*2)/2 - 16,0) - M_end.Translate(endpoint-stored_cap_width,0) - stored_start.transform = M_start - stored_continue.transform = M_continue - stored_end.transform = M_end - SS.add_overlay(list(stored_start, stored_continue, stored_end)) - - O.screen_loc = "4:[round((startpoint+endpoint)/2)+2],2:16" - O.maptext = "" - O.hud_layerise() - storage_start.vis_contents += SS - - src.closer.screen_loc = "4:[storage_width+19],2:16" - return - -/datum/numbered_display - var/obj/item/sample_object - var/number - -/datum/numbered_display/New(obj/item/sample as obj) - if(!istype(sample)) - qdel(src) - sample_object = sample - number = 1 - -//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing. -/obj/item/weapon/storage/proc/orient2hud(mob/user as mob) - - var/adjusted_contents = contents.len - - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(display_contents_with_number) - numbered_contents = list() - adjusted_contents = 0 - for(var/obj/item/I in contents) - var/found = 0 - for(var/datum/numbered_display/ND in numbered_contents) - if(ND.sample_object.type == I.type) - ND.number++ - found = 1 - break - if(!found) - adjusted_contents++ - numbered_contents.Add( new/datum/numbered_display(I) ) - - if(storage_slots == null) - src.space_orient_objs(numbered_contents) - else - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if (adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - src.slot_orient_objs(row_num, col_count, numbered_contents) - return - -//This proc return 1 if the item can be picked up and 0 if it can't. -//Set the stop_messages to stop it from printing messages -/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0) - if(!istype(W)) return //Not an item - - if(usr && usr.isEquipped(W) && !usr.canUnEquip(W)) - return 0 - - if(src.loc == W) - return 0 //Means the item is already in the storage item - if(storage_slots != null && contents.len >= storage_slots) - if(!stop_messages) - to_chat(usr, "[src] is full, make some space.") - return 0 //Storage item is full - - if(LAZYLEN(can_hold) && !is_type_in_list(W, can_hold)) - if(!stop_messages) - if (istype(W, /obj/item/weapon/hand_labeler)) - return 0 - to_chat(usr, "[src] cannot hold [W].") - return 0 - - if(LAZYLEN(cant_hold) && is_type_in_list(W, cant_hold)) - if(!stop_messages) - to_chat(usr, "[src] cannot hold [W].") - return 0 - - if (max_w_class != null && W.w_class > max_w_class) - if(!stop_messages) - to_chat(usr, "[W] is too long for \the [src].") - return 0 - - var/total_storage_space = W.get_storage_cost() - for(var/obj/item/I in contents) - total_storage_space += I.get_storage_cost() //Adds up the combined w_classes which will be in the storage item if the item is added to it. - - if(total_storage_space > max_storage_space) - if(!stop_messages) - to_chat(usr, "[src] is too full, make some space.") - return 0 - - if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) - if(!stop_messages) - to_chat(usr, "[src] cannot hold [W] as it's a storage item of the same size.") - return 0 //To prevent the stacking of same sized storage items. - - return 1 - -//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted() -//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, -//such as when picking up all the items on a tile with one click. -/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) - if(!istype(W)) return 0 - - if(!stall_insertion(W, usr)) // Can sleep here and delay removal for slow storage - return 0 - - if(usr) - usr.remove_from_mob(W,target = src) //If given a target, handles forceMove() - W.on_enter_storage(src) - if (usr.client && usr.s_active != src) - usr.client.screen -= W - W.dropped(usr) - add_fingerprint(usr) - if (use_sound) - playsound(src, src.use_sound, 50, 0, -5) //Something broke "add item to container" sounds, this is a hacky fix. - - if(!prevent_warning) - for(var/mob/M in viewers(usr, null)) - if (M == usr) - to_chat(usr, "You put \the [W] into [src].") - else if (M in range(1)) //If someone is standing close enough, they can tell what it is... - M.show_message("\The [usr] puts [W] into [src].") - else if (W && W.w_class >= 3) //Otherwise they can only see large or normal items from a distance... - M.show_message("\The [usr] puts [W] into [src].") - - src.orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - else - W.forceMove(src) - W.on_enter_storage(src) - - update_icon() - return 1 - -//Call this proc to handle the removal of an item from the storage item. The item will be moved to the atom sent as new_target -/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location) - if(!istype(W)) return 0 - - if(!stall_removal(W, usr)) // Can sleep here and delay removal for slow storage - return 0 - - if(istype(src, /obj/item/weapon/storage/fancy)) - var/obj/item/weapon/storage/fancy/F = src - F.update_icon(1) - - for(var/mob/M in is_seeing) - if(!M.client || QDELETED(M)) - hide_from(M) - else - M.client.screen -= W - - if(new_location) - if(ismob(loc)) - W.dropped(usr) - if(ismob(new_location)) - W.hud_layerise() - else - W.reset_plane_and_layer() - W.forceMove(new_location) - else - W.forceMove(get_turf(src)) - - for(var/mob/M in is_seeing) - if(M.s_active == src) - orient2hud(M) - show_to(M) - if(W.maptext) - W.maptext = "" - W.on_exit_storage(src) - update_icon() - return 1 - -/// Called before insertion completes, allowing you to delay or cancel it -/obj/item/weapon/storage/proc/stall_insertion(obj/item/W, mob/user) - return TRUE - -/// Called before removal completes, allowing you to delay or cancel it -/obj/item/weapon/storage/proc/stall_removal(obj/item/W, mob/user) - return TRUE - -//This proc is called when you want to place an item into the storage item. -/obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob) - ..() - - if(isrobot(user)) - return //Robots can't interact with storage items. - - if(istype(W, /obj/item/device/lightreplacer)) - var/obj/item/device/lightreplacer/LP = W - var/amt_inserted = 0 - var/turf/T = get_turf(user) - for(var/obj/item/weapon/light/L in src.contents) - if(L.status == 0) - if(LP.uses < LP.max_uses) - LP.add_uses(1) - amt_inserted++ - remove_from_storage(L, T) - qdel(L) - if(amt_inserted) - to_chat(user, "You inserted [amt_inserted] light\s into \the [LP.name]. You have [LP.uses] light\s remaining.") - return - - if(!can_be_inserted(W)) - return - - if(istype(W, /obj/item/weapon/tray)) - var/obj/item/weapon/tray/T = W - if(T.calc_carry() > 0) - if(prob(85)) - to_chat(user, "The tray won't fit in [src].") - return - else - W.forceMove(get_turf(user)) - if ((user.client && user.s_active != src)) - user.client.screen -= W - W.dropped(user) - to_chat(user, "God damn it!") - - W.add_fingerprint(user) - return handle_item_insertion(W) - -/obj/item/weapon/storage/dropped(mob/user as mob) - return - -/obj/item/weapon/storage/attack_hand(mob/user as mob) - if(ishuman(user) && !pocketable) - var/mob/living/carbon/human/H = user - if(H.l_store == src && !H.get_active_hand()) //Prevents opening if it's in a pocket. - H.put_in_hands(src) - H.l_store = null - return - if(H.r_store == src && !H.get_active_hand()) - H.put_in_hands(src) - H.r_store = null - return - - if (src.loc == user) - src.open(user) - else - ..() - for(var/mob/M in range(1)) - if (M.s_active == src) - src.close(M) - src.add_fingerprint(user) - return - -/obj/item/weapon/storage/proc/gather_all(turf/T as turf, mob/user as mob) - var/list/rejections = list() - var/success = 0 - var/failure = 0 - - for(var/obj/item/I in T) - if(I.type in rejections) // To limit bag spamming: any given type only complains once - continue - if(!can_be_inserted(I, user)) // Note can_be_inserted still makes noise when the answer is no - rejections += I.type // therefore full bags are still a little spammy - failure = 1 - continue - success = 1 - handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. - if(success && !failure) - to_chat(user, "You put everything in [src].") - else if(success) - to_chat(user, "You put some things in [src].") - else - to_chat(user, "You fail to pick anything up with \the [src].") - -/obj/item/weapon/storage/verb/toggle_gathering_mode() - set name = "Switch Gathering Method" - set category = "Object" - - collection_mode = !collection_mode - switch (collection_mode) - if(1) - to_chat(usr, "[src] now picks up all items on a tile at once.") - if(0) - to_chat(usr, "[src] now picks up one item at a time.") - - -/obj/item/weapon/storage/verb/quick_empty() - set name = "Empty Contents" - set category = "Object" - set src in view(1) - - // Only humans and robots can dump contents - if(!(ishuman(usr) || isrobot(usr))) - return - - // Hard to do when you're KO'd - if(usr.incapacitated()) - return - - // Has to be at least adjacent (just for safety, src in view should handle this already) - if(!Adjacent(usr)) - return - - //VOREStation Add: No turf dumping if user is in a belly - if(isbelly(usr.loc)) - return - - drop_contents() - -/obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs - hide_from(usr) - var/turf/T = get_turf(src) - for(var/obj/item/I in contents) - remove_from_storage(I, T) - -/obj/item/weapon/storage/proc/calibrate_size() - var/total_storage_space = 0 - for(var/obj/item/I in contents) - total_storage_space += I.get_storage_cost() - max_storage_space = max(total_storage_space,max_storage_space) //Prevents spawned containers from being too small for their contents. - -/obj/item/weapon/storage/emp_act(severity) - if(!istype(src.loc, /mob/living)) - for(var/obj/O in contents) - O.emp_act(severity) - ..() - -/obj/item/weapon/storage/attack_self(mob/user as mob) - if((user.get_active_hand() == src) || (isrobot(user)) && allow_quick_empty) - if(src.verbs.Find(/obj/item/weapon/storage/verb/quick_empty)) - src.quick_empty() - return 1 - -//Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area). -//Returns -1 if the atom was not found on container. -/atom/proc/storage_depth(atom/container) - var/depth = 0 - var/atom/cur_atom = src - - while (cur_atom && !(cur_atom in container.contents)) - if (isarea(cur_atom)) - return -1 - if (istype(cur_atom.loc, /obj/item/weapon/storage)) - depth++ - cur_atom = cur_atom.loc - - if (!cur_atom) - return -1 //inside something with a null loc. - - return depth - -//Like storage depth, but returns the depth to the nearest turf -//Returns -1 if no top level turf (a loc was null somewhere, or a non-turf atom's loc was an area somehow). -/atom/proc/storage_depth_turf() - var/depth = 0 - var/atom/cur_atom = src - - while (cur_atom && !isturf(cur_atom)) - if (isarea(cur_atom)) - return -1 - if (istype(cur_atom.loc, /obj/item/weapon/storage)) - depth++ - cur_atom = cur_atom.loc - - if (!cur_atom) - return -1 //inside something with a null loc. - - return depth - -// See inventory_sizes.dm for the defines. -/obj/item/proc/get_storage_cost() - if (storage_cost) - return storage_cost - else - switch(w_class) - if(ITEMSIZE_TINY) - return ITEMSIZE_COST_TINY - if(ITEMSIZE_SMALL) - return ITEMSIZE_COST_SMALL - if(ITEMSIZE_NORMAL) - return ITEMSIZE_COST_NORMAL - if(ITEMSIZE_LARGE) - return ITEMSIZE_COST_LARGE - if(ITEMSIZE_HUGE) - return ITEMSIZE_COST_HUGE - else - return ITEMSIZE_COST_NO_CONTAINER - -/obj/item/weapon/storage/proc/make_exact_fit() - storage_slots = contents.len - - LAZYCLEARLIST(can_hold) - can_hold = list() - max_w_class = 0 - max_storage_space = 0 - for(var/obj/item/I in src) - can_hold[I.type]++ - max_w_class = max(I.w_class, max_w_class) - max_storage_space += I.get_storage_cost() - -/* - * Trinket Box - READDING SOON - */ -/obj/item/weapon/storage/trinketbox - name = "trinket box" - desc = "A box that can hold small trinkets, such as a ring." - icon = 'icons/obj/items.dmi' - icon_state = "trinketbox" - var/open = 0 - storage_slots = 1 - can_hold = list( - /obj/item/clothing/gloves/ring, - /obj/item/weapon/coin, - /obj/item/clothing/accessory/medal - ) - var/open_state - var/closed_state - -/obj/item/weapon/storage/trinketbox/update_icon() - cut_overlays() - if(open) - icon_state = open_state - - if(contents.len >= 1) - var/contained_image = null - if(istype(contents[1], /obj/item/clothing/gloves/ring)) - contained_image = "ring_trinket" - else if(istype(contents[1], /obj/item/weapon/coin)) - contained_image = "coin_trinket" - else if(istype(contents[1], /obj/item/clothing/accessory/medal)) - contained_image = "medal_trinket" - if(contained_image) - add_overlay(contained_image) - else - icon_state = closed_state - -/obj/item/weapon/storage/trinketbox/New() - if(!open_state) - open_state = "[initial(icon_state)]_open" - if(!closed_state) - closed_state = "[initial(icon_state)]" - ..() - -/obj/item/weapon/storage/trinketbox/attack_self() - open = !open - update_icon() - ..() - -/obj/item/weapon/storage/trinketbox/examine(mob/user) - . = ..() - if(open && contents.len) - var/display_item = contents[1] - . += "\The [src] contains \the [display_item]!" - -/obj/item/weapon/storage/AllowDrop() - return TRUE - -//Useful for spilling the contents of containers all over the floor -/obj/item/weapon/storage/proc/spill(var/dist = 2, var/turf/T = null) - if (!istype(T))//If its not on the floor this might cause issues - T = get_turf(src) - - for (var/obj/O in contents) - remove_from_storage(O, T) - O.tumble(2) - -/// Hangar for storage backdrops, so that we can redirect clicks from them to our item for QOL -/atom/movable/storage_slot - name = "stored - " - icon = 'icons/effects/effects.dmi' - icon_state = "nothing" - plane = PLANE_PLAYER_HUD_ITEMS - layer = 0.1 - alpha = 200 - var/weakref/held_item - -/atom/movable/storage_slot/New(newloc, obj/item/held_item) - ASSERT(held_item) - name += held_item.name - src.held_item = weakref(held_item) - -/atom/movable/storage_slot/Destroy() - held_item = null - -/// Has to be this way. The fact that the overlays will be constantly mutated by other storage means we can't wait. -/atom/movable/storage_slot/add_overlay(list/somethings) - ASSERT(islist(somethings)) - overlays = somethings - -/atom/movable/storage_slot/Click() - var/obj/item/I = held_item?.resolve() - if(I) - usr.ClickOn(I) - return 1 - -// Allows micros to drag themselves into storage items -/obj/item/weapon/storage/MouseDrop_T(mob/living/target, mob/living/user) - if(!istype(user)) return // If the user passed in isn't a living mob, exit - if(target != user) return // If the user didn't drag themselves, exit - if(user.incapacitated() || user.buckled) return // If user is incapacitated or buckled, exit - if(get_holder_of_type(src, /mob/living/carbon/human) == user) return // No jumping into your own equipment - if(ishuman(user) && user.get_effective_size() > 0.25) return // Only micro characters - if(ismouse(user) && user.get_effective_size() > 1) return // Only normal sized mice or less - - // Create a dummy holder with user's size to test insertion - var/obj/item/weapon/holder/D = new/obj/item/weapon/holder - if(ismouse(user)) - D.w_class = ITEMSIZE_TINY // Mouse smol - else if(ishuman(user)) - D.w_class = ITEMSIZE_SMALL // Players small - else // Other creatures not accepted at this time - qdel(D) // If there's a better way to check the size of a - return // mob's holder and if it fits, replace this slab - if(!src.can_be_inserted(D, 1)) // If the dummy item doesn't fit, exit - qdel(D) - return - qdel(D) - - // Scoop and insert target into storage - var/obj/item/weapon/holder/H = new user.holder_type(get_turf(user), user) - src.handle_item_insertion(H, 1) - to_chat(user, "You climb into \the [src].") - return ..() +// To clarify: +// For use_to_pickup and allow_quick_gather functionality, +// see item/attackby() (/game/objects/items.dm) +// Do not remove this functionality without good reason, cough reagent_containers cough. +// -Sayu + + +/obj/item/weapon/storage + name = "storage" + icon = 'icons/obj/storage.dmi' + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', + ) + w_class = ITEMSIZE_NORMAL + show_messages = 1 + + /// List of objects which this item can store (if set, it can't store anything else) + var/list/can_hold + /// List of objects which this item can't store (in effect only if can_hold isn't set) + var/list/cant_hold + /// List of mobs which are currently seeing the contents of this item's storage + var/list/is_seeing + + var/max_w_class = ITEMSIZE_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set) + var/max_storage_space = ITEMSIZE_COST_SMALL * 4 //The sum of the storage costs of all the items in this storage item. + var/storage_slots = null //The number of storage slots in this container. If null, it uses the volume-based storage instead. + + /// Boxes screen object for fixed-size storage (belts, etc) + var/obj/screen/storage/boxes = null + /// List of 'click catchers' for boxes for fixed-size storage + var/list/box_catchers = null + + /// For dynamic storage, the leftmost pixel column for the whole storage display. Most of the interesting effects are hung on this in vis_contents. + var/obj/screen/storage/storage_start = null + /// For dynamic storage, the majority of the width of the whole storage display. Decorative, but sized to the width appropriate to represent how much storage there is. + var/obj/screen/storage/storage_continue = null + /// For dynamic storage, the rightmost pixel column for the whole storage display. Decorative. + var/obj/screen/storage/storage_end = null + + /// The "X" button at the far right of the storage + var/obj/screen/close/closer = null + + var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up. + var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. + var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. + var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. + var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile + var/use_sound = "rustle" //sound played when used. null for no sound. + var/list/starts_with //Things to spawn on the box on spawn + var/empty //Mapper override to spawn an empty version of a container that usually has stuff + /// If you can use this storage while in a pocket + var/pocketable = FALSE + +/obj/item/weapon/storage/Initialize() + . = ..() + + if(allow_quick_empty) + verbs += /obj/item/weapon/storage/verb/quick_empty + else + verbs -= /obj/item/weapon/storage/verb/quick_empty + + if(allow_quick_gather) + verbs += /obj/item/weapon/storage/verb/toggle_gathering_mode + else + verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode + + if(storage_slots) + src.boxes = new /obj/screen/storage( ) + src.boxes.name = "storage" + src.boxes.master = src + src.boxes.icon_state = "block" + src.boxes.screen_loc = "7,7 to 10,8" + else + src.storage_start = new /obj/screen/storage( ) + src.storage_start.name = "storage" + src.storage_start.master = src + src.storage_start.icon_state = "storage_start" + src.storage_start.screen_loc = "7,7 to 10,8" + + src.storage_continue = new /obj/screen/storage( ) + src.storage_continue.name = "storage" + src.storage_continue.master = src + src.storage_continue.icon_state = "storage_continue" + src.storage_continue.screen_loc = "7,7 to 10,8" + + src.storage_end = new /obj/screen/storage( ) + src.storage_end.name = "storage" + src.storage_end.master = src + src.storage_end.icon_state = "storage_end" + src.storage_end.screen_loc = "7,7 to 10,8" + + src.closer = new /obj/screen/close( ) + src.closer.master = src + src.closer.icon_state = "storage_close" + src.closer.hud_layerise() + orient2hud() + + if(LAZYLEN(starts_with) && !empty) + for(var/newtype in starts_with) + var/count = starts_with[newtype] || 1 //Could have left it blank. + while(count) + count-- + new newtype(src) + starts_with = null //Reduce list count. + update_icon() + + calibrate_size() + +/obj/item/weapon/storage/Destroy() + close_all() + clear_slot_catchers() + QDEL_NULL(boxes) + QDEL_NULL(storage_start) + QDEL_NULL(storage_continue) + QDEL_NULL(storage_end) + QDEL_NULL(closer) + + if(ismob(loc)) + var/mob/M = loc + M.remove_from_mob(src) + + . = ..() + +/obj/item/weapon/storage/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (isliving(usr) || isobserver(usr)) + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if(over_object == usr && Adjacent(usr)) // this must come before the screen objects only block + src.open(usr) + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + //makes sure that the storage is equipped, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this. + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.unEquip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.unEquip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) + +/obj/item/weapon/storage/AltClick(mob/user) + if(user in is_seeing) + src.close(user) + // I would think there should be some incap check here or something + // But MouseDrop doesn't use one (as of this writing), so... + else if(isliving(user) && Adjacent(user)) + src.open(user) + else + return ..() + +/obj/item/weapon/storage/proc/return_inv() + + var/list/L = list( ) + + L += src.contents + + for(var/obj/item/weapon/storage/S in src) + L += S.return_inv() + for(var/obj/item/weapon/gift/G in src) + L += G.gift + if (istype(G.gift, /obj/item/weapon/storage)) + L += G.gift:return_inv() + return L + +/obj/item/weapon/storage/proc/show_to(mob/user as mob) + if(user.s_active != src) + for(var/obj/item/I in src) + if(I.on_found(user)) + return + if(user.s_active) + user.s_active.hide_from(user) + + var/client/C = user.client + if(!C) + return + + if(storage_slots) + C.screen += src.boxes + create_slot_catchers() + C.screen += src.box_catchers + else + C.screen += src.storage_start + C.screen += src.storage_continue + C.screen += src.storage_end + + C.screen += src.closer + C.screen += src.contents + + user.s_active = src + LAZYDISTINCTADD(is_seeing,user) + +/obj/item/weapon/storage/proc/hide_from(mob/user as mob) + var/client/C = user.client + LAZYREMOVE(is_seeing,user) + + if(!C) + if(!LAZYLEN(is_seeing)) + clear_slot_catchers() + return + + if(storage_slots) + C.screen -= src.boxes + C.screen -= src.box_catchers + else + C.screen -= src.storage_start + C.screen -= src.storage_continue + C.screen -= src.storage_end + + C.screen -= src.closer + C.screen -= src.contents + + if(user.s_active == src) + user.s_active = null + + if(!LAZYLEN(is_seeing)) + clear_slot_catchers() + +/obj/item/weapon/storage/proc/open(mob/user as mob) + if (use_sound) + playsound(src, src.use_sound, 50, 0, -5) + + orient2hud(user) + if(user.s_active) + user.s_active.close(user) + show_to(user) + +/obj/item/weapon/storage/proc/close(mob/user as mob) + src.hide_from(user) + user.s_active = null + return + +/obj/item/weapon/storage/proc/close_all() + for(var/mob/M in can_see_contents()) + close(M) + . = 1 + +/obj/item/weapon/storage/proc/can_see_contents() + var/list/cansee = list() + for(var/mob/M in is_seeing) + if(M.s_active == src && M.client) + cansee |= M + else + LAZYREMOVE(is_seeing,M) + return cansee + +/obj/item/weapon/storage/proc/create_slot_catchers() + clear_slot_catchers() + var/list/new_catchers = list() + for(var/obj/item/I in contents) + var/atom/movable/storage_slot/SS = new(null, I) + SS.screen_loc = I.screen_loc + SS.mouse_opacity = MOUSE_OPACITY_OPAQUE + new_catchers += SS + box_catchers = new_catchers + +/obj/item/weapon/storage/proc/clear_slot_catchers() + if(box_catchers) + for(var/mob/M in is_seeing) + M.client?.screen -= box_catchers + QDEL_LIST_NULL(box_catchers) + +//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. +//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. +/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my) + var/cx = tx + var/cy = ty + src.boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" + for(var/obj/O in src.contents) + O.screen_loc = "[cx],[cy]" + O.hud_layerise() + cx++ + if (cx > mx) + cx = tx + cy-- + src.closer.screen_loc = "[mx+1],[my]" + return + +//This proc draws out the inventory and places the items on it. It uses the standard position. +/obj/item/weapon/storage/proc/slot_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents) + var/cx = 4 + var/cy = 2+rows + src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16" + + if(display_contents_with_number) + for(var/datum/numbered_display/ND in display_contents) + ND.sample_object.screen_loc = "[cx]:16,[cy]:16" + ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" + ND.sample_object.hud_layerise() + var/atom/movable/storage_slot/SS = new(null, ND.sample_object) + SS.screen_loc = ND.sample_object.screen_loc + SS.mouse_opacity = MOUSE_OPACITY_OPAQUE + cx++ + if (cx > (4+cols)) + cx = 4 + cy-- + else + for(var/obj/O in contents) + O.screen_loc = "[cx]:16,[cy]:16" + O.maptext = "" + O.hud_layerise() + var/atom/movable/storage_slot/SS = new(null, O) + SS.screen_loc = O.screen_loc + SS.mouse_opacity = MOUSE_OPACITY_OPAQUE + cx++ + if (cx > (4+cols)) + cx = 4 + cy-- + src.closer.screen_loc = "[4+cols+1]:16,2:16" + return + +/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents) + SHOULD_NOT_SLEEP(TRUE) + + /// A prototype for drawing the leftmost border behind each item in storage + var/static/mutable_appearance/stored_start + /// A prototype for drawing the wide backing space behind each item in storage + var/static/mutable_appearance/stored_continue + /// A prototype for drawing the rightmost border behind each item in storage + var/static/mutable_appearance/stored_end + + if(!stored_start) + // Because these are static and manipulated all the time by different storages, you'd better make 100000% sure this proc never sleeps + stored_start = mutable_appearance(icon = 'icons/mob/screen1.dmi', icon_state = "stored_start", layer = 0.1, plane = PLANE_PLAYER_HUD_ITEMS) + stored_continue = mutable_appearance(icon = 'icons/mob/screen1.dmi', icon_state = "stored_continue", layer = 0.1, plane = PLANE_PLAYER_HUD_ITEMS) + stored_end = mutable_appearance(icon = 'icons/mob/screen1.dmi', icon_state = "stored_end", layer = 0.1, plane = PLANE_PLAYER_HUD_ITEMS) + + var/baseline_max_storage_space = INVENTORY_STANDARD_SPACE / 2 //should be equal to default backpack capacity // This is a lie. + // Above var is misleading, what it does upon changing is makes smaller inventory sizes have smaller space on the UI. + // It's cut in half because otherwise boxes of IDs and other tiny items are unbearably cluttered. + + var/storage_cap_width = 2 //length of sprite for start and end of the box representing total storage space + var/stored_cap_width = 4 //length of sprite for start and end of the box representing the stored item + var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,274) //length of sprite for the box representing total storage space + + QDEL_LIST_NULL(storage_start.vis_contents) + + var/matrix/M = matrix() + M.Scale((storage_width-storage_cap_width*2+3)/32,1) + src.storage_continue.transform = M + + src.storage_start.screen_loc = "4:16,2:16" + src.storage_continue.screen_loc = "4:[storage_cap_width+(storage_width-storage_cap_width*2)/2+2],2:16" + src.storage_end.screen_loc = "4:[19+storage_width-storage_cap_width],2:16" + + var/startpoint = 0 + var/endpoint = 1 + + for(var/obj/item/O in contents) + var/atom/movable/storage_slot/SS = new(null, O) + startpoint = endpoint + 1 + endpoint += storage_width * O.get_storage_cost()/max_storage_space + + var/matrix/M_start = matrix() + var/matrix/M_continue = matrix() + var/matrix/M_end = matrix() + M_start.Translate(startpoint,0) + M_continue.Scale((endpoint-startpoint-stored_cap_width*2)/32,1) + M_continue.Translate(startpoint+stored_cap_width+(endpoint-startpoint-stored_cap_width*2)/2 - 16,0) + M_end.Translate(endpoint-stored_cap_width,0) + stored_start.transform = M_start + stored_continue.transform = M_continue + stored_end.transform = M_end + SS.add_overlay(list(stored_start, stored_continue, stored_end)) + + O.screen_loc = "4:[round((startpoint+endpoint)/2)+2],2:16" + O.maptext = "" + O.hud_layerise() + storage_start.vis_contents += SS + + src.closer.screen_loc = "4:[storage_width+19],2:16" + return + +/datum/numbered_display + var/obj/item/sample_object + var/number + +/datum/numbered_display/New(obj/item/sample as obj) + if(!istype(sample)) + qdel(src) + sample_object = sample + number = 1 + +//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing. +/obj/item/weapon/storage/proc/orient2hud(mob/user as mob) + + var/adjusted_contents = contents.len + + //Numbered contents display + var/list/datum/numbered_display/numbered_contents + if(display_contents_with_number) + numbered_contents = list() + adjusted_contents = 0 + for(var/obj/item/I in contents) + var/found = 0 + for(var/datum/numbered_display/ND in numbered_contents) + if(ND.sample_object.type == I.type) + ND.number++ + found = 1 + break + if(!found) + adjusted_contents++ + numbered_contents.Add( new/datum/numbered_display(I) ) + + if(storage_slots == null) + src.space_orient_objs(numbered_contents) + else + var/row_num = 0 + var/col_count = min(7,storage_slots) -1 + if (adjusted_contents > 7) + row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. + src.slot_orient_objs(row_num, col_count, numbered_contents) + return + +//This proc return 1 if the item can be picked up and 0 if it can't. +//Set the stop_messages to stop it from printing messages +/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0) + if(!istype(W)) return //Not an item + + if(usr && usr.isEquipped(W) && !usr.canUnEquip(W)) + return 0 + + if(src.loc == W) + return 0 //Means the item is already in the storage item + if(storage_slots != null && contents.len >= storage_slots) + if(!stop_messages) + to_chat(usr, "[src] is full, make some space.") + return 0 //Storage item is full + + if(LAZYLEN(can_hold) && !is_type_in_list(W, can_hold)) + if(!stop_messages) + if (istype(W, /obj/item/weapon/hand_labeler)) + return 0 + to_chat(usr, "[src] cannot hold [W].") + return 0 + + if(LAZYLEN(cant_hold) && is_type_in_list(W, cant_hold)) + if(!stop_messages) + to_chat(usr, "[src] cannot hold [W].") + return 0 + + if (max_w_class != null && W.w_class > max_w_class) + if(!stop_messages) + to_chat(usr, "[W] is too long for \the [src].") + return 0 + + var/total_storage_space = W.get_storage_cost() + for(var/obj/item/I in contents) + total_storage_space += I.get_storage_cost() //Adds up the combined w_classes which will be in the storage item if the item is added to it. + + if(total_storage_space > max_storage_space) + if(!stop_messages) + to_chat(usr, "[src] is too full, make some space.") + return 0 + + if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) + if(!stop_messages) + to_chat(usr, "[src] cannot hold [W] as it's a storage item of the same size.") + return 0 //To prevent the stacking of same sized storage items. + + return 1 + +//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted() +//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, +//such as when picking up all the items on a tile with one click. +/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) + if(!istype(W)) return 0 + + if(!stall_insertion(W, usr)) // Can sleep here and delay removal for slow storage + return 0 + + if(usr) + usr.remove_from_mob(W,target = src) //If given a target, handles forceMove() + W.on_enter_storage(src) + if (usr.client && usr.s_active != src) + usr.client.screen -= W + W.dropped(usr) + add_fingerprint(usr) + if (use_sound) + playsound(src, src.use_sound, 50, 0, -5) //Something broke "add item to container" sounds, this is a hacky fix. + + if(!prevent_warning) + for(var/mob/M in viewers(usr, null)) + if (M == usr) + to_chat(usr, "You put \the [W] into [src].") + else if (M in range(1)) //If someone is standing close enough, they can tell what it is... + M.show_message("\The [usr] puts [W] into [src].") + else if (W && W.w_class >= 3) //Otherwise they can only see large or normal items from a distance... + M.show_message("\The [usr] puts [W] into [src].") + + src.orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + else + W.forceMove(src) + W.on_enter_storage(src) + + update_icon() + return 1 + +//Call this proc to handle the removal of an item from the storage item. The item will be moved to the atom sent as new_target +/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location) + if(!istype(W)) return 0 + + if(!stall_removal(W, usr)) // Can sleep here and delay removal for slow storage + return 0 + + if(istype(src, /obj/item/weapon/storage/fancy)) + var/obj/item/weapon/storage/fancy/F = src + F.update_icon(1) + + for(var/mob/M in is_seeing) + if(!M.client || QDELETED(M)) + hide_from(M) + else + M.client.screen -= W + + if(new_location) + if(ismob(loc)) + W.dropped(usr) + if(ismob(new_location)) + W.hud_layerise() + else + W.reset_plane_and_layer() + W.forceMove(new_location) + else + W.forceMove(get_turf(src)) + + for(var/mob/M in is_seeing) + if(M.s_active == src) + orient2hud(M) + show_to(M) + if(W.maptext) + W.maptext = "" + W.on_exit_storage(src) + update_icon() + return 1 + +/// Called before insertion completes, allowing you to delay or cancel it +/obj/item/weapon/storage/proc/stall_insertion(obj/item/W, mob/user) + return TRUE + +/// Called before removal completes, allowing you to delay or cancel it +/obj/item/weapon/storage/proc/stall_removal(obj/item/W, mob/user) + return TRUE + +//This proc is called when you want to place an item into the storage item. +/obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob) + ..() + + if(isrobot(user)) + return //Robots can't interact with storage items. + + if(istype(W, /obj/item/device/lightreplacer)) + var/obj/item/device/lightreplacer/LP = W + var/amt_inserted = 0 + var/turf/T = get_turf(user) + for(var/obj/item/weapon/light/L in src.contents) + if(L.status == 0) + if(LP.uses < LP.max_uses) + LP.add_uses(1) + amt_inserted++ + remove_from_storage(L, T) + qdel(L) + if(amt_inserted) + to_chat(user, "You inserted [amt_inserted] light\s into \the [LP.name]. You have [LP.uses] light\s remaining.") + return + + if(!can_be_inserted(W)) + return + + if(istype(W, /obj/item/weapon/tray)) + var/obj/item/weapon/tray/T = W + if(T.calc_carry() > 0) + if(prob(85)) + to_chat(user, "The tray won't fit in [src].") + return + else + W.forceMove(get_turf(user)) + if ((user.client && user.s_active != src)) + user.client.screen -= W + W.dropped(user) + to_chat(user, "God damn it!") + + W.add_fingerprint(user) + return handle_item_insertion(W) + +/obj/item/weapon/storage/dropped(mob/user as mob) + return + +/obj/item/weapon/storage/attack_hand(mob/user as mob) + if(ishuman(user) && !pocketable) + var/mob/living/carbon/human/H = user + if(H.l_store == src && !H.get_active_hand()) //Prevents opening if it's in a pocket. + H.put_in_hands(src) + H.l_store = null + return + if(H.r_store == src && !H.get_active_hand()) + H.put_in_hands(src) + H.r_store = null + return + + if (src.loc == user) + src.open(user) + else + ..() + for(var/mob/M in range(1)) + if (M.s_active == src) + src.close(M) + src.add_fingerprint(user) + return + +/obj/item/weapon/storage/proc/gather_all(turf/T as turf, mob/user as mob) + var/list/rejections = list() + var/success = 0 + var/failure = 0 + + for(var/obj/item/I in T) + if(I.type in rejections) // To limit bag spamming: any given type only complains once + continue + if(!can_be_inserted(I, user)) // Note can_be_inserted still makes noise when the answer is no + rejections += I.type // therefore full bags are still a little spammy + failure = 1 + continue + success = 1 + handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed. + if(success && !failure) + to_chat(user, "You put everything in [src].") + else if(success) + to_chat(user, "You put some things in [src].") + else + to_chat(user, "You fail to pick anything up with \the [src].") + +/obj/item/weapon/storage/verb/toggle_gathering_mode() + set name = "Switch Gathering Method" + set category = "Object" + + collection_mode = !collection_mode + switch (collection_mode) + if(1) + to_chat(usr, "[src] now picks up all items on a tile at once.") + if(0) + to_chat(usr, "[src] now picks up one item at a time.") + + +/obj/item/weapon/storage/verb/quick_empty() + set name = "Empty Contents" + set category = "Object" + set src in view(1) + + // Only humans and robots can dump contents + if(!(ishuman(usr) || isrobot(usr))) + return + + // Hard to do when you're KO'd + if(usr.incapacitated()) + return + + // Has to be at least adjacent (just for safety, src in view should handle this already) + if(!Adjacent(usr)) + return + + //VOREStation Add: No turf dumping if user is in a belly + if(isbelly(usr.loc)) + return + + drop_contents() + +/obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs + hide_from(usr) + var/turf/T = get_turf(src) + for(var/obj/item/I in contents) + remove_from_storage(I, T) + +/obj/item/weapon/storage/proc/calibrate_size() + var/total_storage_space = 0 + for(var/obj/item/I in contents) + total_storage_space += I.get_storage_cost() + max_storage_space = max(total_storage_space,max_storage_space) //Prevents spawned containers from being too small for their contents. + +/obj/item/weapon/storage/emp_act(severity) + if(!istype(src.loc, /mob/living)) + for(var/obj/O in contents) + O.emp_act(severity) + ..() + +/obj/item/weapon/storage/attack_self(mob/user as mob) + if((user.get_active_hand() == src) || (isrobot(user)) && allow_quick_empty) + if(src.verbs.Find(/obj/item/weapon/storage/verb/quick_empty)) + src.quick_empty() + return 1 + +//Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area). +//Returns -1 if the atom was not found on container. +/atom/proc/storage_depth(atom/container) + var/depth = 0 + var/atom/cur_atom = src + + while (cur_atom && !(cur_atom in container.contents)) + if (isarea(cur_atom)) + return -1 + if (istype(cur_atom.loc, /obj/item/weapon/storage)) + depth++ + cur_atom = cur_atom.loc + + if (!cur_atom) + return -1 //inside something with a null loc. + + return depth + +//Like storage depth, but returns the depth to the nearest turf +//Returns -1 if no top level turf (a loc was null somewhere, or a non-turf atom's loc was an area somehow). +/atom/proc/storage_depth_turf() + var/depth = 0 + var/atom/cur_atom = src + + while (cur_atom && !isturf(cur_atom)) + if (isarea(cur_atom)) + return -1 + if (istype(cur_atom.loc, /obj/item/weapon/storage)) + depth++ + cur_atom = cur_atom.loc + + if (!cur_atom) + return -1 //inside something with a null loc. + + return depth + +// See inventory_sizes.dm for the defines. +/obj/item/proc/get_storage_cost() + if (storage_cost) + return storage_cost + else + switch(w_class) + if(ITEMSIZE_TINY) + return ITEMSIZE_COST_TINY + if(ITEMSIZE_SMALL) + return ITEMSIZE_COST_SMALL + if(ITEMSIZE_NORMAL) + return ITEMSIZE_COST_NORMAL + if(ITEMSIZE_LARGE) + return ITEMSIZE_COST_LARGE + if(ITEMSIZE_HUGE) + return ITEMSIZE_COST_HUGE + else + return ITEMSIZE_COST_NO_CONTAINER + +/obj/item/weapon/storage/proc/make_exact_fit() + storage_slots = contents.len + + LAZYCLEARLIST(can_hold) + can_hold = list() + max_w_class = 0 + max_storage_space = 0 + for(var/obj/item/I in src) + can_hold[I.type]++ + max_w_class = max(I.w_class, max_w_class) + max_storage_space += I.get_storage_cost() + +/* + * Trinket Box - READDING SOON + */ +/obj/item/weapon/storage/trinketbox + name = "trinket box" + desc = "A box that can hold small trinkets, such as a ring." + icon = 'icons/obj/items.dmi' + icon_state = "trinketbox" + var/open = 0 + storage_slots = 1 + can_hold = list( + /obj/item/clothing/gloves/ring, + /obj/item/weapon/coin, + /obj/item/clothing/accessory/medal + ) + var/open_state + var/closed_state + +/obj/item/weapon/storage/trinketbox/update_icon() + cut_overlays() + if(open) + icon_state = open_state + + if(contents.len >= 1) + var/contained_image = null + if(istype(contents[1], /obj/item/clothing/gloves/ring)) + contained_image = "ring_trinket" + else if(istype(contents[1], /obj/item/weapon/coin)) + contained_image = "coin_trinket" + else if(istype(contents[1], /obj/item/clothing/accessory/medal)) + contained_image = "medal_trinket" + if(contained_image) + add_overlay(contained_image) + else + icon_state = closed_state + +/obj/item/weapon/storage/trinketbox/New() + if(!open_state) + open_state = "[initial(icon_state)]_open" + if(!closed_state) + closed_state = "[initial(icon_state)]" + ..() + +/obj/item/weapon/storage/trinketbox/attack_self() + open = !open + update_icon() + ..() + +/obj/item/weapon/storage/trinketbox/examine(mob/user) + . = ..() + if(open && contents.len) + var/display_item = contents[1] + . += "\The [src] contains \the [display_item]!" + +/obj/item/weapon/storage/AllowDrop() + return TRUE + +//Useful for spilling the contents of containers all over the floor +/obj/item/weapon/storage/proc/spill(var/dist = 2, var/turf/T = null) + if (!istype(T))//If its not on the floor this might cause issues + T = get_turf(src) + + for (var/obj/O in contents) + remove_from_storage(O, T) + O.tumble(2) + +/// Hangar for storage backdrops, so that we can redirect clicks from them to our item for QOL +/atom/movable/storage_slot + name = "stored - " + icon = 'icons/effects/effects.dmi' + icon_state = "nothing" + plane = PLANE_PLAYER_HUD_ITEMS + layer = 0.1 + alpha = 200 + var/weakref/held_item + +/atom/movable/storage_slot/New(newloc, obj/item/held_item) + ASSERT(held_item) + name += held_item.name + src.held_item = weakref(held_item) + +/atom/movable/storage_slot/Destroy() + held_item = null + +/// Has to be this way. The fact that the overlays will be constantly mutated by other storage means we can't wait. +/atom/movable/storage_slot/add_overlay(list/somethings) + ASSERT(islist(somethings)) + overlays = somethings + +/atom/movable/storage_slot/Click() + var/obj/item/I = held_item?.resolve() + if(I) + usr.ClickOn(I) + return 1 + +// Allows micros to drag themselves into storage items +/obj/item/weapon/storage/MouseDrop_T(mob/living/target, mob/living/user) + if(!istype(user)) return // If the user passed in isn't a living mob, exit + if(target != user) return // If the user didn't drag themselves, exit + if(user.incapacitated() || user.buckled) return // If user is incapacitated or buckled, exit + if(get_holder_of_type(src, /mob/living/carbon/human) == user) return // No jumping into your own equipment + if(ishuman(user) && user.get_effective_size(TRUE) > 0.25) return // Only micro characters + if(ismouse(user) && user.get_effective_size(TRUE) > 1) return // Only normal sized mice or less + + // Create a dummy holder with user's size to test insertion + var/obj/item/weapon/holder/D = new/obj/item/weapon/holder + if(ismouse(user)) + D.w_class = ITEMSIZE_TINY // Mouse smol + else if(ishuman(user)) + D.w_class = ITEMSIZE_SMALL // Players small + else // Other creatures not accepted at this time + qdel(D) // If there's a better way to check the size of a + return // mob's holder and if it fits, replace this slab + if(!src.can_be_inserted(D, 1)) // If the dummy item doesn't fit, exit + qdel(D) + return + qdel(D) + + // Scoop and insert target into storage + var/obj/item/weapon/holder/H = new user.holder_type(get_turf(user), user) + src.handle_item_insertion(H, 1) + to_chat(user, "You climb into \the [src].") + return ..() diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm index 98c246a03a..0f70a805dd 100644 --- a/code/game/objects/items/weapons/syndie.dm +++ b/code/game/objects/items/weapons/syndie.dm @@ -50,7 +50,7 @@ icon_state = "c-4[size]_1" playsound(src, 'sound/weapons/armbomb.ogg', 75, 1) for(var/mob/O in hearers(src, null)) - O.show_message("[bicon(src)] The [src.name] beeps! ") + O.show_message("\icon[src][bicon(src)] The [src.name] beeps! ") sleep(50) explosion(get_turf(src), devastate, heavy_impact, light_impact, flash_range) for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors. diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 0c6c78dbbe..7fbc4ff547 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -455,7 +455,7 @@ var/list/global/tank_gauge_cache = list() return T.assume_air(air_contents) playsound(src, 'sound/weapons/Gunshot_shotgun.ogg', 20, 1) - visible_message("[bicon(src)] \The [src] flies apart!", "You hear a bang!") + visible_message("\icon[src][bicon(src)] \The [src] flies apart!", "You hear a bang!") T.hotspot_expose(air_contents.temperature, 70, 1) @@ -500,7 +500,7 @@ var/list/global/tank_gauge_cache = list() T.assume_air(leaked_gas) if(!leaking) - visible_message("[bicon(src)] \The [src] relief valve flips open with a hiss!", "You hear hissing.") + visible_message("\icon[src][bicon(src)] \The [src] relief valve flips open with a hiss!", "You hear hissing.") playsound(src, 'sound/effects/spray.ogg', 10, 1, -3) leaking = 1 #ifdef FIREDBG diff --git a/code/game/objects/items/weapons/tools/combitool.dm b/code/game/objects/items/weapons/tools/combitool.dm index 573ff96128..2f2ddbf4a5 100644 --- a/code/game/objects/items/weapons/tools/combitool.dm +++ b/code/game/objects/items/weapons/tools/combitool.dm @@ -29,7 +29,7 @@ if(loc == user && tools.len) . += "It has the following fittings:" for(var/obj/item/tool in tools) - . += "[bicon(tool)] - [tool.name][tools[current_tool]==tool?" (selected)":""]") + . += "\icon[tool][bicon(tool)] - [tool.name][tools[current_tool]==tool?" (selected)":""]") /obj/item/weapon/combitool/New() ..() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index ac7fe2b209..b9e462190a 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -41,7 +41,7 @@ /obj/CanUseTopic(var/mob/user, var/datum/tgui_state/state = GLOB.tgui_default_state) if(user.CanUseObjTopic(src)) return ..() - to_chat(user, "[bicon(src)]Access Denied!") + to_chat(user, "\icon[src][bicon(src)]Access Denied!") return STATUS_CLOSE /mob/living/silicon/CanUseObjTopic(var/obj/O) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index e918af24f3..fbcda79122 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -1,132 +1,145 @@ -/obj/structure/closet/secure_closet/engineering_chief - name = "chief engineer's locker" - req_access = list(access_ce) - closet_appearance = /decl/closet_appearance/secure_closet/engineering/ce - - starts_with = list( - /obj/item/clothing/accessory/storage/brown_vest, - /obj/item/blueprints, - ///obj/item/clamp, //VOREStation Removal: without leaks those are pointless, - ///obj/item/clamp, //VOREStation Removal: without leaks those are pointless, - /obj/item/clothing/under/rank/chief_engineer, - /obj/item/clothing/under/rank/chief_engineer/skirt, - /obj/item/clothing/head/hardhat/white, - ///obj/item/clothing/head/welding, //VOREStation Removal: Locker bloat, grr. They get fancy goggles or can raid the welding supplies locker for one of these. - /obj/item/clothing/gloves/heavy_engineer, //VOREStation Edit: chief gets the good shit - /obj/item/clothing/shoes/brown, - /obj/item/weapon/cartridge/ce, - /obj/item/device/radio/headset/heads/ce, - /obj/item/device/radio/headset/heads/ce/alt, - /obj/item/weapon/storage/toolbox/mechanical, - /obj/item/clothing/suit/storage/hazardvest, - ///obj/item/clothing/mask/gas, //VOREStation Removal: Locker bloat, grr. The fancy one below functions as a mask & helmet combined. - /obj/item/clothing/head/hardhat/firefighter/chief, //VOREStation Add: replaces the bog-standard gas mask - ///obj/item/device/multitool, //VOREStation Removal: The belt they get, both standard and the fancy one, both come with one already, why stick another in here too? - /obj/item/weapon/storage/belt/utility/chief/full, - /obj/item/device/flash, - /obj/item/device/t_scanner/upgraded, - /obj/item/taperoll/engineering, - ///obj/item/clothing/suit/storage/hooded/wintercoat/engineering, //VOREStation Removal: Locker bloat, grr. They can grab from the engi-clothes vendor if they want the standard one. - /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/ce, - ///obj/item/clothing/shoes/boots/winter/engineering, //VOREStation Removal: Locker bloat, grr. As above. - /obj/item/clothing/head/beret/engineering/ce, - /obj/item/clothing/head/beret/engineering/ce/white, - /obj/item/weapon/tank/emergency/oxygen/double, //VOREStation Edit: chief gets the good shit - /obj/item/weapon/reagent_containers/spray/windowsealant, //VOREStation Add, - /obj/item/weapon/pipe_dispenser) // YW Add - -/obj/structure/closet/secure_closet/engineering_chief/Initialize() - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack/industrial - else - starts_with += /obj/item/weapon/storage/backpack/satchel/eng - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack/dufflebag/eng - return ..() - -/obj/structure/closet/secure_closet/engineering_electrical - name = "electrical supplies" - req_access = list(access_engine_equip) - closet_appearance = /decl/closet_appearance/secure_closet/engineering/electrical - - starts_with = list( - /obj/item/clothing/gloves/yellow = 2, - /obj/item/weapon/storage/toolbox/electrical = 3, - /obj/item/weapon/module/power_control = 3, - /obj/item/device/multitool = 3) - - -/obj/structure/closet/secure_closet/engineering_welding - name = "welding supplies" - req_access = list(access_construction) - closet_appearance = /decl/closet_appearance/secure_closet/engineering/welding - - starts_with = list( - /obj/item/clothing/head/welding = 3, - /obj/item/weapon/weldingtool/largetank = 3, - /obj/item/weapon/weldpack = 3, - /obj/item/clothing/glasses/welding = 3) - -/obj/structure/closet/secure_closet/engineering_personal - name = "engineer's locker" - req_access = list(access_engine_equip) - closet_appearance = /decl/closet_appearance/secure_closet/engineering - - starts_with = list( - /obj/item/clothing/accessory/storage/brown_vest, - /obj/item/weapon/storage/toolbox/mechanical, - /obj/item/device/radio/headset/headset_eng, - /obj/item/device/radio/headset/headset_eng/alt, - /obj/item/clothing/suit/storage/hazardvest, - /obj/item/clothing/mask/gas, - /obj/item/clothing/glasses/meson, - /obj/item/weapon/cartridge/engineering, - /obj/item/taperoll/engineering, - /obj/item/clothing/head/hardhat, - /obj/item/clothing/suit/storage/hooded/wintercoat/engineering, - /obj/item/clothing/shoes/boots/winter/engineering, - /obj/item/weapon/tank/emergency/oxygen/engi, - /obj/item/weapon/storage/belt/utility, //VOREStation Add - /obj/item/weapon/reagent_containers/spray/windowsealant) //VOREStation Add - -/obj/structure/closet/secure_closet/engineering_personal/Initialize() - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack/industrial - else - starts_with += /obj/item/weapon/storage/backpack/satchel/eng - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack/dufflebag/eng - return ..() - - -/obj/structure/closet/secure_closet/atmos_personal - name = "technician's locker" - req_access = list(access_atmospherics) - closet_appearance = /decl/closet_appearance/secure_closet/engineering/atmos - - starts_with = list( - /obj/item/clothing/accessory/storage/brown_vest, - /obj/item/clothing/suit/fire/heavy, - /obj/item/clothing/head/hardhat/firefighter/atmos, - /obj/item/device/flashlight, - /obj/item/weapon/extinguisher/atmo, - ///obj/item/clamp, //VOREStation Removal: without leaks those are pointless, - /obj/item/device/radio/headset/headset_eng, - /obj/item/device/radio/headset/headset_eng/alt, - /obj/item/clothing/suit/storage/hazardvest/atmos, //VOREStation edit. Eng locker gets regular haz-vest, atmos gets the themed one of their own - /obj/item/clothing/mask/gas, - /obj/item/weapon/cartridge/atmos, - /obj/item/taperoll/atmos, - /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos, - /obj/item/clothing/shoes/boots/winter/atmos, - /obj/item/weapon/tank/emergency/oxygen/engi, - /obj/item/weapon/storage/belt/utility/atmostech) //VOREStation edit. They don't get a toolbox to fill it from, so why not give a spare one that's full already? - -/obj/structure/closet/secure_closet/atmos_personal/Initialize() - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack/industrial - else - starts_with += /obj/item/weapon/storage/backpack/satchel/eng - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack/dufflebag/eng - return ..() +/obj/structure/closet/secure_closet/engineering_chief + name = "chief engineer's locker" + req_access = list(access_ce) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/ce + + starts_with = list( + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/blueprints, + ///obj/item/clamp, //VOREStation Removal: without leaks those are pointless, + ///obj/item/clamp, //VOREStation Removal: without leaks those are pointless, + /obj/item/clothing/under/rank/chief_engineer, + /obj/item/clothing/under/rank/chief_engineer/skirt, + /obj/item/clothing/head/hardhat/white, + ///obj/item/clothing/head/welding, //VOREStation Removal: Locker bloat, grr. They get fancy goggles or can raid the welding supplies locker for one of these. + /obj/item/clothing/gloves/heavy_engineer, //VOREStation Edit: chief gets the good shit + /obj/item/clothing/shoes/brown, + /obj/item/weapon/cartridge/ce, + /obj/item/device/radio/headset/heads/ce, + /obj/item/device/radio/headset/heads/ce/alt, + /obj/item/weapon/storage/toolbox/mechanical, + /obj/item/clothing/suit/storage/hazardvest, + ///obj/item/clothing/mask/gas, //VOREStation Removal: Locker bloat, grr. The fancy one below functions as a mask & helmet combined. + /obj/item/clothing/head/hardhat/firefighter/chief, //VOREStation Add: replaces the bog-standard gas mask + ///obj/item/device/multitool, //VOREStation Removal: The belt they get, both standard and the fancy one, both come with one already, why stick another in here too? + /obj/item/weapon/storage/belt/utility/chief/full, + /obj/item/device/flash, + /obj/item/device/t_scanner/upgraded, + /obj/item/taperoll/engineering, + ///obj/item/clothing/suit/storage/hooded/wintercoat/engineering, //VOREStation Removal: Locker bloat, grr. They can grab from the engi-clothes vendor if they want the standard one. + /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/ce, + ///obj/item/clothing/shoes/boots/winter/engineering, //VOREStation Removal: Locker bloat, grr. As above. + /obj/item/clothing/head/beret/engineering/ce, + /obj/item/clothing/head/beret/engineering/ce/white, + /obj/item/weapon/tank/emergency/oxygen/double, //VOREStation Edit: chief gets the good shit + /obj/item/weapon/reagent_containers/spray/windowsealant, //VOREStation Add, + /obj/item/weapon/pipe_dispenser) // YW Add + +/obj/structure/closet/secure_closet/engineering_chief/Initialize() + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack/industrial + else + starts_with += /obj/item/weapon/storage/backpack/satchel/eng + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack/dufflebag/eng + return ..() + +/obj/structure/closet/secure_closet/engineering_electrical + name = "electrical supplies" + req_access = list(access_engine_equip) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/electrical + + starts_with = list( + /obj/item/clothing/gloves/yellow = 2, + /obj/item/weapon/storage/toolbox/electrical = 3, + /obj/item/weapon/module/power_control = 3, + /obj/item/device/multitool = 3) + +/obj/structure/closet/secure_closet/engineering_electrical/double + starts_with = list( + /obj/item/clothing/gloves/yellow = 4, + /obj/item/weapon/storage/toolbox/electrical = 6, + /obj/item/weapon/module/power_control = 6, + /obj/item/device/multitool = 6) + +/obj/structure/closet/secure_closet/engineering_welding + name = "welding supplies" + req_access = list(access_construction) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/welding + + starts_with = list( + /obj/item/clothing/head/welding = 3, + /obj/item/weapon/weldingtool/largetank = 3, + /obj/item/weapon/weldpack = 3, + /obj/item/clothing/glasses/welding = 3) + +/obj/structure/closet/secure_closet/engineering_welding/double + starts_with = list( + /obj/item/clothing/head/welding = 6, + /obj/item/weapon/weldingtool/largetank = 6, + /obj/item/weapon/weldpack = 6, + /obj/item/clothing/glasses/welding = 6) + +/obj/structure/closet/secure_closet/engineering_personal + name = "engineer's locker" + req_access = list(access_engine_equip) + closet_appearance = /decl/closet_appearance/secure_closet/engineering + + starts_with = list( + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/weapon/storage/toolbox/mechanical, + /obj/item/device/radio/headset/headset_eng, + /obj/item/device/radio/headset/headset_eng/alt, + /obj/item/clothing/suit/storage/hazardvest, + /obj/item/clothing/mask/gas, + /obj/item/clothing/glasses/meson, + /obj/item/weapon/cartridge/engineering, + /obj/item/taperoll/engineering, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/suit/storage/hooded/wintercoat/engineering, + /obj/item/clothing/shoes/boots/winter/engineering, + /obj/item/weapon/tank/emergency/oxygen/engi, + /obj/item/weapon/storage/belt/utility, //VOREStation Add + /obj/item/weapon/reagent_containers/spray/windowsealant) //VOREStation Add + +/obj/structure/closet/secure_closet/engineering_personal/Initialize() + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack/industrial + else + starts_with += /obj/item/weapon/storage/backpack/satchel/eng + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack/dufflebag/eng + return ..() + + +/obj/structure/closet/secure_closet/atmos_personal + name = "technician's locker" + req_access = list(access_atmospherics) + closet_appearance = /decl/closet_appearance/secure_closet/engineering/atmos + + starts_with = list( + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/clothing/suit/fire/heavy, + /obj/item/clothing/head/hardhat/firefighter/atmos, + /obj/item/device/flashlight, + /obj/item/weapon/extinguisher/atmo, + ///obj/item/clamp, //VOREStation Removal: without leaks those are pointless, + /obj/item/device/radio/headset/headset_eng, + /obj/item/device/radio/headset/headset_eng/alt, + /obj/item/clothing/suit/storage/hazardvest/atmos, //VOREStation edit. Eng locker gets regular haz-vest, atmos gets the themed one of their own + /obj/item/clothing/mask/gas, + /obj/item/weapon/cartridge/atmos, + /obj/item/taperoll/atmos, + /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos, + /obj/item/clothing/shoes/boots/winter/atmos, + /obj/item/weapon/tank/emergency/oxygen/engi, + /obj/item/weapon/storage/belt/utility/atmostech) //VOREStation edit. They don't get a toolbox to fill it from, so why not give a spare one that's full already? + +/obj/structure/closet/secure_closet/atmos_personal/Initialize() + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack/industrial + else + starts_with += /obj/item/weapon/storage/backpack/satchel/eng + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack/dufflebag/eng + return ..() diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index 1f7e2d0ba9..2b03156385 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -81,7 +81,7 @@ /obj/structure/flora/proc/spawn_harvest(var/path = null, var/mob/user = null) if(!ispath(path)) return 0 - + var/atom/movable/AM = new path() if(user) user.put_in_hands(AM) @@ -96,7 +96,7 @@ name = "bush" icon = 'icons/obj/flora/snowflora.dmi' icon_state = "snowbush1" - + destroy_on_harvest = TRUE harvest_tool = /obj/item/weapon/material/knife randomize_harvest_count = FALSE @@ -121,13 +121,13 @@ name = "bush" icon = 'icons/obj/flora/ausflora.dmi' icon_state = "firstbush_1" - + destroy_on_harvest = TRUE harvest_tool = /obj/item/weapon/material/knife randomize_harvest_count = TRUE harvest_loot = list(/obj/item/stack/material/fiber = 1) min_harvests = 1 - max_harvests = 3 + max_harvests = 3 /obj/structure/flora/ausbushes/spawn_harvest(var/path = null, var/mob/user = null) . = ..() @@ -300,7 +300,7 @@ user.drop_from_inventory(I, src) I.forceMove(src) stored_item = I - src.visible_message("[bicon(src)] [bicon(I)] [user] places [I] into [src].") + src.visible_message("\icon[src][bicon(src)] \icon[I][bicon(I)] [user] places [I] into [src].") return else to_chat(user, "You refrain from putting things into the plant pot.") @@ -311,7 +311,7 @@ to_chat(user, "You see nothing of interest in [src]...") else if(do_after(user, 10)) - to_chat(user, "You find [bicon(stored_item)] [stored_item] in [src]!") + to_chat(user, "You find \icon[stored_item][bicon(stored_item)] [stored_item] in [src]!") stored_item.forceMove(get_turf(src)) stored_item = null ..() diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 46a888e55f..1aeb9cdf4c 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -118,9 +118,9 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) . = ..(user) if(istype(mybucket)) var/contains = mybucket.reagents.total_volume - . += "[bicon(src)] The bucket contains [contains] unit\s of liquid!" + . += "\icon[src][bicon(src)] The bucket contains [contains] unit\s of liquid!" else - . += "[bicon(src)] There is no bucket mounted on it!" + . += "\icon[src][bicon(src)] There is no bucket mounted on it!" /obj/structure/janitorialcart/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob) if (istype(O, /obj/structure/mopbucket) && !mybucket) diff --git a/code/game/objects/structures/map_blocker_vr.dm b/code/game/objects/structures/map_blocker_vr.dm index bd56b08d6e..2b41679979 100644 --- a/code/game/objects/structures/map_blocker_vr.dm +++ b/code/game/objects/structures/map_blocker_vr.dm @@ -8,8 +8,11 @@ opacity = 0 density = TRUE unacidable = TRUE + plane = PLANE_BUILDMODE +/* //VOREStation Edit /obj/effect/blocker/Initialize() // For non-gateway maps. . = ..() icon = null icon_state = null +*/ diff --git a/code/game/objects/structures/signs_vr.dm b/code/game/objects/structures/signs_vr.dm index 321ba27fc7..d786560142 100644 --- a/code/game/objects/structures/signs_vr.dm +++ b/code/game/objects/structures/signs_vr.dm @@ -2,4 +2,10 @@ icon = 'icons/obj/decals_vr.dmi' name = "\improper ITG" desc = "A polished metal sign which reads 'Ironcrest Transport Group'." - icon_state = "itg" \ No newline at end of file + icon_state = "itg" + +/obj/structure/sign/scenery/fakefireaxe + name = "decorative fire axe cabinet" + desc = "A fancy decorative indent in the wall, with an axe inside. The axe is actually a part of the indent and cannot be removed. A nostalgic reminder of older times of firefighting." + icon_state = "fireaxe1000" + icon = 'icons/obj/closet.dmi' \ No newline at end of file diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index bb3346bb4e..908f68747c 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -202,6 +202,8 @@ prob(2);/obj/item/toy/tennis/cyan, prob(2);/obj/item/toy/tennis/blue, prob(2);/obj/item/toy/tennis/purple, + prob(1);/obj/item/weapon/storage/box/brainzsnax, + prob(1);/obj/item/weapon/storage/box/brainzsnax/red, prob(1);/obj/item/clothing/glasses/sunglasses, prob(1);/obj/item/clothing/glasses/sunglasses/bigshot, prob(1);/obj/item/clothing/glasses/welding, diff --git a/code/game/sound.dm b/code/game/sound.dm index 18dd9e718a..4fef9f41ed 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -290,4 +290,21 @@ //Are these even used? //Yes var/list/keyboard_sound = list ('sound/effects/keyboard/keyboard1.ogg','sound/effects/keyboard/keyboard2.ogg','sound/effects/keyboard/keyboard3.ogg', 'sound/effects/keyboard/keyboard4.ogg') var/list/bodyfall_sound = list('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') -var/list/teppi_sound = list('sound/voice/teppi/gyooh1.ogg', 'sound/voice/teppi/gyooh2.ogg', 'sound/voice/teppi/gyooh3.ogg', 'sound/voice/teppi/gyooh4.ogg', 'sound/voice/teppi/gyooh5.ogg', 'sound/voice/teppi/gyooh6.ogg', 'sound/voice/teppi/snoot1.ogg', 'sound/voice/teppi/snoot2.ogg') \ No newline at end of file +var/list/teppi_sound = list('sound/voice/teppi/gyooh1.ogg', 'sound/voice/teppi/gyooh2.ogg', 'sound/voice/teppi/gyooh3.ogg', 'sound/voice/teppi/gyooh4.ogg', 'sound/voice/teppi/gyooh5.ogg', 'sound/voice/teppi/gyooh6.ogg', 'sound/voice/teppi/snoot1.ogg', 'sound/voice/teppi/snoot2.ogg') +var/list/talk_sound = list('sound/talksounds/a.ogg','sound/talksounds/b.ogg','sound/talksounds/c.ogg','sound/talksounds/d.ogg','sound/talksounds/e.ogg','sound/talksounds/f.ogg','sound/talksounds/g.ogg','sound/talksounds/h.ogg') +var/list/emote_sound = list('sound/talksounds/me_a.ogg','sound/talksounds/me_b.ogg','sound/talksounds/me_c.ogg','sound/talksounds/me_d.ogg','sound/talksounds/me_e.ogg','sound/talksounds/me_f.ogg') + +//Goon sounds +var/list/goon_speak_one_sound = list('sound/talksounds/goon/speak_1.ogg', 'sound/talksounds/goon/speak_1_ask.ogg', 'sound/talksounds/goon/speak_1_exclaim.ogg') +var/list/goon_speak_two_sound = list('sound/talksounds/goon/speak_2.ogg', 'sound/talksounds/goon/speak_2_ask.ogg', 'sound/talksounds/goon/speak_2_exclaim.ogg') +var/list/goon_speak_three_sound = list('sound/talksounds/goon/speak_3.ogg', 'sound/talksounds/goon/speak_3_ask.ogg', 'sound/talksounds/goon/speak_3_exclaim.ogg') +var/list/goon_speak_four_sound = list('sound/talksounds/goon/speak_4.ogg', 'sound/talksounds/goon/speak_4_ask.ogg', 'sound/talksounds/goon/speak_4_exclaim.ogg') +var/list/goon_speak_blub_sound = list('sound/talksounds/goon/blub.ogg', 'sound/talksounds/goon/blub_ask.ogg', 'sound/talksounds/goon/blub_exclaim.ogg') +var/list/goon_speak_bottalk_sound = list('sound/talksounds/goon/bottalk_1.ogg', 'sound/talksounds/goon/bottalk_2.ogg', 'sound/talksounds/goon/bottalk_3.ogg', 'sound/talksounds/goon/bottalk_4.wav') +var/list/goon_speak_buwoo_sound = list('sound/talksounds/goon/buwoo.ogg', 'sound/talksounds/goon/buwoo_ask.ogg', 'sound/talksounds/goon/buwoo_exclaim.ogg') +var/list/goon_speak_cow_sound = list('sound/talksounds/goon/cow.ogg', 'sound/talksounds/goon/cow_ask.ogg', 'sound/talksounds/goon/cow_exclaim.ogg') +var/list/goon_speak_lizard_sound = list('sound/talksounds/goon/lizard.ogg', 'sound/talksounds/goon/lizard_ask.ogg', 'sound/talksounds/goon/lizard_exclaim.ogg') +var/list/goon_speak_pug_sound = list('sound/talksounds/goon/pug.ogg', 'sound/talksounds/goon/pug_ask.ogg', 'sound/talksounds/goon/pug_exclaim.ogg') +var/list/goon_speak_pugg_sound = list('sound/talksounds/goon/pugg.ogg', 'sound/talksounds/goon/pugg_ask.ogg', 'sound/talksounds/goon/pugg_exclaim.ogg') +var/list/goon_speak_roach_sound = list('sound/talksounds/goon/roach.ogg', 'sound/talksounds/goon/roach_ask.ogg', 'sound/talksounds/goon/roach_exclaim.ogg') +var/list/goon_speak_skelly_sound = list('sound/talksounds/goon/skelly.ogg', 'sound/talksounds/goon/skelly_ask.ogg', 'sound/talksounds/goon/skelly_exclaim.ogg') diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index fb41f13682..48ee1a884c 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -320,6 +320,26 @@ var/list/flooring_types icon_base = "tealcarpet" build_type = /obj/item/stack/tile/carpet/teal +/decl/flooring/carpet/browncarpet + name = "brown carpet" + icon_base = "brncarpet" + build_type = /obj/item/stack/tile/carpet/brncarpet + +/decl/flooring/carpet/blucarpet2 + name = "blue carpet" + icon_base = "blue1" + build_type = /obj/item/stack/tile/carpet/blucarpet2 + +/decl/flooring/carpet/greencarpet + name = "green carpet" + icon_base = "green" + build_type = /obj/item/stack/tile/carpet/greencarpet + +/decl/flooring/carpet/purplecarpet + name = "purple carpet" + icon_base = "purple" + build_type = /obj/item/stack/tile/carpet/purplecarpet + /decl/flooring/carpet/geo name = "geometric carpet" icon_base = "geocarpet" diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index c81c771263..b33ccccb90 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -60,6 +60,26 @@ icon_state = "oracarpet" initial_flooring = /decl/flooring/carpet/oracarpet +/turf/simulated/floor/carpet/brown + name = "brown carpet" + icon_state = "brncarpet" + initial_flooring = /decl/flooring/carpet/browncarpet + +/turf/simulated/floor/carpet/blue2 + name = "blue carpet" + icon_state = "blue1" + initial_flooring = /decl/flooring/carpet/blucarpet2 + +/turf/simulated/floor/carpet/green + name = "green carpet" + icon_state = "green" + initial_flooring = /decl/flooring/carpet/greencarpet + +/turf/simulated/floor/carpet/purple + name = "purple carpet" + icon_state = "purple" + initial_flooring = /decl/flooring/carpet/purplecarpet + /turf/simulated/floor/carpet/geo name = "geometric carpet" icon_state = "geocarpet" diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index f2f484ed7c..2427b2441d 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -17,7 +17,7 @@ return var/image/cross = image('icons/obj/storage.dmi',"bible") - msg = "[bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, src)]) (CA) (SC) (SMITE): [msg]" + msg = "\icon[cross][bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, src)]) (CA) (SC) (SMITE): [msg]" for(var/client/C in GLOB.admins) if(R_ADMIN|R_EVENT & C.holder.rights) diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 0f5fe03f8a..f4d544f040 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -16,13 +16,13 @@ /obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/D, var/obj/item/device/assembly/D2, var/mob/user) if(!D || !D2) return FALSE - + if(!istype(D) || !istype(D2)) return FALSE if(D.secured || D2.secured) return FALSE - + if(user) user.remove_from_mob(D) user.remove_from_mob(D2) @@ -151,7 +151,7 @@ if(!D) return 0 if(!secured) - visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") + visible_message("\icon[src][bicon(src)] *beep* *beep*", "*beep* *beep*") if((normal) && (a_right) && (a_left)) if(a_right != D) a_right.pulsed(0) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 66ed0c186a..c4c4e09e19 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -98,7 +98,7 @@ pulse(0) QDEL_LIST_NULL(i_beams) //They will get recreated next process() if the situation is still appropriate if(!holder) - visible_message("[bicon(src)] *beep* *beep*") + visible_message("\icon[src][bicon(src)] *beep* *beep*") /obj/item/device/assembly/infra/tgui_interact(mob/user, datum/tgui/ui) if(!secured) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index cc74445993..0561eb4797 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -47,7 +47,7 @@ var/turf/mainloc = get_turf(src) pulse(0) if(!holder) - mainloc.visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") + mainloc.visible_message("\icon[src][bicon(src)] *beep* *beep*", "*beep* *beep*") /obj/item/device/assembly/prox_sensor/process() if(scanning) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index daca806f2d..3ae5c0c73e 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -117,7 +117,7 @@ if(!holder) for(var/mob/O in hearers(1, src.loc)) - O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) + O.show_message("\icon[src][bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) /obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) if(!frequency) diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 33fefb58bf..0353986b57 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -44,7 +44,7 @@ return 0 pulse(0) if(!holder) - visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") + visible_message("\icon[src][bicon(src)] *beep* *beep*", "*beep* *beep*") /obj/item/device/assembly/timer/process() if(timing && time-- <= 0) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 66026a7993..7c8eee7fdf 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -13,7 +13,7 @@ recorded = msg listening = 0 var/turf/T = get_turf(src) //otherwise it won't work in hand - T.visible_message("[bicon(src)] beeps, \"Activation message is '[recorded]'.\"") + T.visible_message("\icon[src][bicon(src)] beeps, \"Activation message is '[recorded]'.\"") else if(findtext(msg, recorded)) pulse(0) @@ -23,7 +23,7 @@ if(!holder) listening = !listening var/turf/T = get_turf(src) - T.visible_message("[bicon(src)] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") + T.visible_message("\icon[src][bicon(src)] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") /obj/item/device/assembly/voice/attack_self(mob/user) diff --git a/code/modules/casino/boxes_casino.dm b/code/modules/casino/boxes_casino.dm new file mode 100644 index 0000000000..3b4c548056 --- /dev/null +++ b/code/modules/casino/boxes_casino.dm @@ -0,0 +1,94 @@ +/obj/item/weapon/storage/box/casino + name = "prize box" + desc = "It's a lovely golden tinted cardboard box, maybe theres something valuable inside?" + icon = 'icons/obj/casino.dmi' + icon_state = "casino_box" + +/obj/item/weapon/storage/box/casino/costume_marine + name = "ruin marine costume" + starts_with = list( + /obj/item/clothing/head/marine, + /obj/item/clothing/suit/marine + ) + +/obj/item/weapon/storage/box/casino/costume_pirate + name = "pirate costume" + starts_with = list( + /obj/item/clothing/under/pirate, + /obj/item/clothing/suit/pirate, + /obj/item/clothing/head/pirate, + /obj/item/clothing/glasses/eyepatch + ) + +/obj/item/weapon/storage/box/casino/costume_commie + name = "communist costume" + starts_with = list( + /obj/item/clothing/under/soviet, + /obj/item/clothing/head/ushanka + ) + +/obj/item/weapon/storage/box/casino/costume_wizard + name = "wizard costume" + starts_with = list( + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/head/wizard/fake, + /obj/item/weapon/staff + ) + +/obj/item/weapon/storage/box/casino/costume_plaguedoctor + name = "plague doctor costume" + starts_with = list( + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, + /obj/item/clothing/head/plaguedoctorhat + ) + +/obj/item/weapon/storage/box/casino/costume_cowboy + name = "cowboy costume" + starts_with = list( + /obj/item/clothing/under/cowboy, + /obj/item/clothing/accessory/holster/hip, + /obj/item/clothing/head/cowboy/ranger, + /obj/item/clothing/shoes/boots/cowboy/brown + ) + +/obj/item/weapon/storage/box/roulette_balls_normal + name = "roulette ball box" + desc = "A box of spare roulette balls." + icon_state = "balls" + can_hold = list(/obj/item/roulette_ball) + starts_with = list( + /obj/item/roulette_ball = 7, + /obj/item/roulette_ball/hollow = 2) + +/obj/item/weapon/storage/box/roulette_balls_fancy + name = "fancy roulette ball box" + desc = "A box of extra-pretty roulette balls." + icon_state = "balls" + can_hold = list(/obj/item/roulette_ball) + starts_with = list( + /obj/item/roulette_ball, + /obj/item/roulette_ball/hollow, + /obj/item/roulette_ball/red, + /obj/item/roulette_ball/orange, + /obj/item/roulette_ball/yellow, + /obj/item/roulette_ball/green, + /obj/item/roulette_ball/blue, + /obj/item/roulette_ball/purple, + /obj/item/roulette_ball/moon, + /obj/item/roulette_ball/planet, + /obj/item/roulette_ball/gold) + +/obj/item/weapon/storage/box/roulette_balls_cheat + name = "special roulette ball box" + desc = "A box of 'special' roulette balls." + icon_state = "balls" + can_hold = list(/obj/item/roulette_ball) + starts_with = list( + /obj/item/roulette_ball/cheat/first_twelve, + /obj/item/roulette_ball/cheat/second_twelve, + /obj/item/roulette_ball/cheat/third_twelve, + /obj/item/roulette_ball/cheat/red, + /obj/item/roulette_ball/cheat/black, + /obj/item/roulette_ball/cheat/zeros, + /obj/item/roulette_ball/cheat/odd, + /obj/item/roulette_ball/cheat/even) \ No newline at end of file diff --git a/code/modules/casino/casino.dm b/code/modules/casino/casino.dm index 569607bc0f..364ab817f7 100644 --- a/code/modules/casino/casino.dm +++ b/code/modules/casino/casino.dm @@ -5,10 +5,9 @@ // //Roulette Table // - /obj/structure/casino_table name = "casino table" - desc = "this is an unremarkable table for a casino." + desc = "This is an unremarkable table for a casino." icon = 'icons/obj/casino.dmi' icon_state = "roulette_table" density = 1 @@ -27,63 +26,331 @@ /obj/structure/casino_table/roulette_table name = "roulette" - desc = "Spin the roulette to try your luck." + desc = "The roulette. Spin to try your luck." icon_state = "roulette_wheel" + var/spin_state = "roulette_wheel_spinning" + + var/obj/item/roulette_ball/ball + +/obj/structure/casino_table/roulette_table/Initialize() + .=..() + ball = new(src) + return + +/obj/structure/casino_table/roulette_table/examine(mob/user) + .=..() + if(ball) + . += "It's currently using [ball.get_ball_desc()]." + else + . += "It doesn't have a ball." /obj/structure/casino_table/roulette_table/attack_hand(mob/user as mob) - if (busy) + if(busy) to_chat(user,"You cannot spin now! The roulette is already spinning. ") return - visible_message("\ [user] spins the roulette and throws inside little ball.") + if(!ball) + to_chat(user,"This roulette wheel has no ball! ") + return + visible_message("\The [user] spins the roulette and throws [ball.get_ball_desc()] into it.") playsound(src.loc, 'sound/machines/roulette.ogg', 40, 1) busy = 1 - icon_state = "roulette_wheel_spinning" - var/result = rand(0,36) + ball.on_spin() + icon_state = spin_state + var/result = rand(0,37) + if(ball.cheatball) + result = ball.get_cheated_result() var/color = "green" add_fingerprint(user) - if ((result>0 && result<11) || (result>18 && result<29)) - if (result%2) + if((result > 0 && result < 11) || (result > 18 && result < 29)) + if(result % 2) color="red" - else - color="black" - if ( (result>10 && result<19) || (result>28) ) - if (result%2) + else color="black" - else - color="red" + if((result > 10 && result < 19) || (result > 28 && result < 37)) + if(result % 2) + color="black" + else + color="red" + if(result == 37) + result = "00" spawn(5 SECONDS) visible_message("The roulette stops spinning, the ball landing on [result], [color].") - busy=0 - icon_state = "roulette_wheel" + busy = 0 + icon_state = initial(icon_state) + +/obj/structure/casino_table/roulette_table/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/roulette_ball)) + if(!ball) + user.drop_from_inventory(W) + W.forceMove(src) + ball = W + to_chat(user, "You insert [W] into [src].") + return + ..() + +/obj/structure/casino_table/roulette_table/verb/remove_ball() + set name = "Remove Roulette Ball" + set category = "Object" + set src in oview(1) + + if(!usr || !isturf(usr.loc)) + return + if(usr.stat || usr.restrained()) + return + if(ismouse(usr) || (isobserver(usr))) + return + + if(busy) + to_chat(usr, "You cannot remove \the [ball] while [src] is spinning!") + return + + if(ball) + usr.put_in_hands(ball) + to_chat(usr, "You remove \the [ball] from [src].") + ball = null + return + else + to_chat(usr, "There is no ball in [src]!") + return + +/obj/structure/casino_table/roulette_table/long + icon_state = "roulette_wheel_long" + spin_state = "roulette_wheel_long_spinning" + +/obj/structure/casino_table/roulette_long + name = "roulette table" + desc = "Roulette table." + icon_state = "roulette_long" /obj/structure/casino_table/roulette_chart name = "roulette chart" desc = "Roulette chart. Place your bets!" icon_state = "roulette_table" -// -//Blackjack table - no sprite -// +/obj/item/roulette_ball + name = "roulette ball" + desc = "A small ball used for roulette wheel. This one is made of regular metal." + var/ball_desc = "a small metal ball" + icon = 'icons/obj/casino.dmi' + icon_state = "roulette_ball" + var/cheatball = FALSE + +/obj/item/roulette_ball/proc/get_cheated_result() + return rand(0,37) // No cheating by default + +/obj/item/roulette_ball/proc/get_ball_desc() + return ball_desc + +/obj/item/roulette_ball/proc/on_spin() + return + +/obj/item/roulette_ball/gold + name = "golden roulette ball" + desc = "A small ball used for roulette wheel. This one is particularly gaudy." + ball_desc = "a shiny golden ball" + icon_state = "roulette_ball_gold" + +/obj/item/roulette_ball/red + name = "red roulette ball" + desc = "A small ball used for roulette wheel. This one is ornate red." + ball_desc = "a striped red ball" + icon_state = "roulette_ball_red" + +/obj/item/roulette_ball/orange + name = "orange roulette ball" + desc = "A small ball used for roulette wheel. This one is ornate orange." + ball_desc = "a striped orange ball" + icon_state = "roulette_ball_orange" + +/obj/item/roulette_ball/green + name = "green roulette ball" + desc = "A small ball used for roulette wheel. This one is ornate green." + ball_desc = "a smooth green ball" + icon_state = "roulette_ball_green" + +/obj/item/roulette_ball/blue + name = "blue roulette ball" + desc = "A small ball used for roulette wheel. This one is ornate blue." + ball_desc = "a striped blue ball" + icon_state = "roulette_ball_blue" + +/obj/item/roulette_ball/yellow + name = "yellow roulette ball" + desc = "A small ball used for roulette wheel. This one is ornate yellow." + ball_desc = "a smooth yellow ball" + icon_state = "roulette_ball_yellow" + +/obj/item/roulette_ball/purple + name = "purple roulette ball" + desc = "A small ball used for roulette wheel. This one is ornate purple." + ball_desc = "a dotted purple ball" + icon_state = "roulette_ball_purple" + +/obj/item/roulette_ball/planet + name = "planet roulette ball" + desc = "A small ball used for roulette wheel. This one looks like a small earth-like planet." + ball_desc = "a planet-like ball" + icon_state = "roulette_ball_earth" + +/obj/item/roulette_ball/moon + name = "moon roulette ball" + desc = "A small ball used for roulette wheel. This one looks like a small moon." + ball_desc = "a moon-like ball" + icon_state = "roulette_ball_moon" + +/obj/item/roulette_ball/hollow + name = "glass roulette ball" + desc = "A small ball used for roulette wheel. This one is made of glass and seems to be openable." + ball_desc = "a small glass ball" + icon_state = "roulette_ball_glass" + + var/obj/item/weapon/holder/trapped + +/obj/item/roulette_ball/hollow/examine(mob/user) + .=..() + if(trapped) + . += "You can see [trapped] trapped inside!" + else + . += "It appears to be empty." + +/obj/item/roulette_ball/hollow/get_ball_desc() + .=..() + if(trapped && trapped.held_mob) + . += " with [trapped.name] trapped within" + return + +/obj/item/roulette_ball/hollow/attackby(var/obj/item/W, var/mob/user) + if(trapped) + to_chat(user, "This ball already has something trapped in it!") + return + if(istype(W, /obj/item/weapon/holder)) + var/obj/item/weapon/holder/H = W + if(!H.held_mob) + to_chat(user, "This holder has nobody in it? Yell at a developer!") + return + if(H.held_mob.get_effective_size(TRUE) > 50) + to_chat(user, "\The [H] is too big to fit inside!") + return + user.drop_from_inventory(H) + H.forceMove(src) + trapped = H + to_chat(user, "You trap \the [H] inside the glass roulette ball.") + to_chat(H.held_mob, "\The [user] traps you inside a glass roulette ball!") + update_icon() + +/obj/item/roulette_ball/hollow/update_icon() + if(trapped && trapped.held_mob) + icon_state = "roulette_ball_glass_full" + else + icon_state = "roulette_ball_glass" + +/obj/item/roulette_ball/hollow/attack_self(mob/user as mob) + if(!trapped) + to_chat(user, "\The [src] is empty!") + return + else + user.put_in_hands(trapped) + if(trapped.held_mob) + to_chat(user, "You take \the [trapped] out of the glass roulette ball.") + to_chat(trapped.held_mob, "\The [user] takes you out of a glass roulette ball.") + trapped = null + update_icon() + +/obj/item/roulette_ball/hollow/on_holder_escape() + trapped = null + update_icon() + +/obj/item/roulette_ball/hollow/on_spin() + if(trapped && trapped.held_mob) + to_chat(trapped.held_mob, "THE WHOLE WORLD IS SENT WHIRLING AS THE ROULETTE SPINS!!!") + +/obj/item/roulette_ball/hollow/Destroy() + if(trapped) + trapped.forceMove(src.loc) + trapped = null + return ..() + +/obj/item/roulette_ball/cheat + cheatball = TRUE + +/obj/item/roulette_ball/cheat/first_twelve + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on first 12." + +/obj/item/roulette_ball/cheat/first_twelve/get_cheated_result() + return pick(list(1,2,3,4,5,6,7,8,9,10,11,12)) + +/obj/item/roulette_ball/cheat/second_twelve + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on second 12." + +/obj/item/roulette_ball/cheat/second_twelve/get_cheated_result() + return pick(list(13,14,15,16,17,18,19,20,21,22,23,24)) + +/obj/item/roulette_ball/cheat/third_twelve + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on third 12." + +/obj/item/roulette_ball/cheat/third_twelve/get_cheated_result() + return pick(list(25,26,27,28,29,30,31,32,33,34,35,36)) + +/obj/item/roulette_ball/cheat/zeros + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on 0 or 00." + +/obj/item/roulette_ball/cheat/zeros/get_cheated_result() + return pick(list(0, 37)) + +/obj/item/roulette_ball/cheat/red + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on red." + +/obj/item/roulette_ball/cheat/red/get_cheated_result() + return pick(list(1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36)) + +/obj/item/roulette_ball/cheat/black + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on black." + +/obj/item/roulette_ball/cheat/black/get_cheated_result() + return pick(list(2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35)) + +/obj/item/roulette_ball/cheat/even + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on even." + +/obj/item/roulette_ball/cheat/even/get_cheated_result() + return pick(list(2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36)) + +/obj/item/roulette_ball/cheat/odd + desc = "A small ball used for roulette wheel. This one is made of regular metal. Its weighted to only land on odd." + +/obj/item/roulette_ball/cheat/odd/get_cheated_result() + return pick(list(1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35)) + +// +//Blackjack table +// /obj/structure/casino_table/blackjack_l name = "gambling table" - desc = "Gambling table, try your luck and skills! " + desc = "Gambling table, try your luck and skills!" icon_state = "blackjack_l" -/obj/structure/casino_table/blackjack_r - name = "gambling table" - desc = "Gambling table, try your luck and skills! " - icon_state = "blackjack_r" - /obj/structure/casino_table/blackjack_m name = "gambling table" - desc = "Gambling table, try your luck and skills! " + desc = "Gambling table, try your luck and skills!" icon_state = "blackjack_m" +/obj/structure/casino_table/blackjack_r + name = "gambling table" + desc = "Gambling table, try your luck and skills!" + icon_state = "blackjack_r" + +// +//Craps table +// +/obj/structure/casino_table/craps + name = "craps table" + desc = "A padded table designed for dice games!" + icon_state = "craps_table" + // //Wheel. Of. FORTUNE! // - /obj/machinery/wheel_of_fortune name = "wheel of fortune" desc = "The Wheel of Fortune! Insert chips and may fortune favour the lucky one at the next lottery!" @@ -269,7 +536,6 @@ // //Slave Terminal // - /obj/machinery/casinoslave_handler name = "Sentient Prize Automated Sales Machinery" desc = "The Sentient Prize Automated Sales Machinery, also known as SPASM! Here one can see who is on sale as sentinet prizes, as well as selling self and also buying prizes." diff --git a/code/modules/casino/casino_book.dm b/code/modules/casino/casino_book.dm index 1f80817112..1b3ee5163e 100644 --- a/code/modules/casino/casino_book.dm +++ b/code/modules/casino/casino_book.dm @@ -5,7 +5,6 @@ // //Casino Manual - NEEDS EDITING // - /obj/item/weapon/book/manual/casino name = "A dummy guide to losing your thalers" icon = 'icons/obj/casino.dmi' diff --git a/code/modules/casino/casino_prize_vendor.dm b/code/modules/casino/casino_prize_vendor.dm index 0355a73bb4..17adc4bf5f 100644 --- a/code/modules/casino/casino_prize_vendor.dm +++ b/code/modules/casino/casino_prize_vendor.dm @@ -90,6 +90,26 @@ CASINO_PRIZE("Chameleon mask", /obj/item/clothing/under/chameleon, 1, 250, "clothing"), CASINO_PRIZE("Ian costume", /obj/item/clothing/suit/storage/hooded/costume/ian, 1, 50, "clothing"), CASINO_PRIZE("Carp costume", /obj/item/clothing/suit/storage/hooded/costume/carp, 1, 50, "clothing"), + CASINO_PRIZE("Plague doctor costume", /obj/item/weapon/storage/box/casino/costume_plaguedoctor, 1, 100, "clothing"), + CASINO_PRIZE("Wizard costume", /obj/item/weapon/storage/box/casino/costume_wizard, 1, 100, "clothing"), + CASINO_PRIZE("Pirate costume", /obj/item/weapon/storage/box/casino/costume_pirate, 1, 100, "clothing"), + CASINO_PRIZE("Commie costume", /obj/item/weapon/storage/box/casino/costume_commie, 1, 100, "clothing"), + CASINO_PRIZE("Marine costume", /obj/item/weapon/storage/box/casino/costume_marine, 1, 100, "clothing"), + CASINO_PRIZE("Cowboy costume", /obj/item/weapon/storage/box/casino/costume_cowboy, 1, 100, "clothing"), + ) + item_list["Donk Soft"] = list( + CASINO_PRIZE("Donk-Soft shotgun", /obj/item/weapon/gun/projectile/shotgun/pump/toy, 1, 250, "misc"), + CASINO_PRIZE("Donk-Soft mosin-nagant", /obj/item/weapon/gun/projectile/shotgun/pump/toy/moistnugget, 1, 250, "misc"), + CASINO_PRIZE("Donk-Soft pistol", /obj/item/weapon/gun/projectile/pistol/toy, 1, 150, "misc"), + CASINO_PRIZE("Donk-Soft levergun", /obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun, 1, 250, "misc"), + CASINO_PRIZE("Donk-Soft commemorative pistol", /obj/item/weapon/gun/projectile/pistol/toy/n99, 1, 150, "misc"), + CASINO_PRIZE("Donk-Soft revolver", /obj/item/weapon/gun/projectile/revolver/toy, 1, 150, "misc"), + CASINO_PRIZE("Donk-Soft big-iron", /obj/item/weapon/gun/projectile/revolver/toy/big_iron, 1, 150, "misc"), + CASINO_PRIZE("Donk-Soft crossbow", /obj/item/weapon/gun/projectile/revolver/toy/crossbow, 1, 100, "misc"), + CASINO_PRIZE("Donk-Soft sawn off shotgun", /obj/item/weapon/gun/projectile/revolver/toy/sawnoff, 1, 200, "misc"), + CASINO_PRIZE("Donk-Soft SMG", /obj/item/weapon/gun/projectile/automatic/toy, 1, 300, "misc"), + CASINO_PRIZE("Foam Darts", /obj/item/ammo_magazine/ammo_box/foam, 1, 50, "misc"), + CASINO_PRIZE("Riot Darts", /obj/item/ammo_magazine/ammo_box/foam/riot, 1, 100, "misc"), ) item_list["Miscellaneous"] = list( CASINO_PRIZE("Toy sword", /obj/item/toy/sword, 1, 50, "misc"), @@ -102,8 +122,28 @@ CASINO_PRIZE("Whistle", /obj/item/toy/bosunwhistle, 1, 50, "misc"), CASINO_PRIZE("Golden cup", /obj/item/weapon/reagent_containers/food/drinks/golden_cup, 1, 50, "misc"), CASINO_PRIZE("Quality cigars", /obj/item/weapon/storage/fancy/cigar/havana, 1, 50, "misc"), - CASINO_PRIZE("Casino wallet (kept after event)", /obj/item/weapon/storage/wallet/casino, 1, 50, "misc"), + CASINO_PRIZE("Casino wallet", /obj/item/weapon/storage/wallet/casino, 1, 50, "misc"), CASINO_PRIZE("Casino cards", /obj/item/weapon/deck/cards/casino, 1, 50, "misc"), + CASINO_PRIZE("Casino Sentient Prize Collar", /obj/item/clothing/accessory/collar/casinoslave_fake, 1, 50, "misc"), + CASINO_PRIZE("Instrument: Accordion", /obj/item/instrument/accordion, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Banjo", /obj/item/instrument/banjo, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Musical bikehorn", /obj/item/instrument/bikehorn, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Electric guitar", /obj/item/instrument/eguitar, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Glockenspiel", /obj/item/instrument/glockenspiel, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Guitar", /obj/item/instrument/guitar, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Harmonica", /obj/item/instrument/harmonica, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Synthethic Piano", /obj/item/instrument/piano_synth, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Recorder", /obj/item/instrument/recorder, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Saxophone", /obj/item/instrument/saxophone, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Trombone", /obj/item/instrument/trombone, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Trumpet", /obj/item/instrument/trumpet, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Violin", /obj/item/instrument/violin, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Xylophone", /obj/item/instrument/xylophone, 1, 100, "misc"), + CASINO_PRIZE("Instrument: Golden fiddle", /obj/item/instrument/violin/golden, 1, 250, "misc"), + CASINO_PRIZE("Instrument: Trumpet (warning: spooky)", /obj/item/instrument/trumpet/spectral, 1, 200, "misc"), + CASINO_PRIZE("Instrument: Trombone (warning: spooky)", /obj/item/instrument/trombone/spectral, 1, 200, "misc"), + CASINO_PRIZE("Instrument: Saxophone (warning: spooky)", /obj/item/instrument/saxophone/spectral, 1, 200, "misc"), + CASINO_PRIZE("Instrument: Musical Moth (you monster)", /obj/item/instrument/musicalmoth, 1, 100, "misc"), ) item_list["Drinks"] = list( CASINO_PRIZE("Redeemer's brew", /obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew, 1, 50, "drinks"), @@ -115,7 +155,32 @@ CASINO_PRIZE("Bottle of Nothing", /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing, 1, 50, "drinks"), CASINO_PRIZE("Whiskey bliss", /obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey, 1, 50, "drinks"), ) - + item_list["Pets"] = list( + CASINO_PRIZE("Cat", /obj/item/weapon/grenade/spawnergrenade/casino, 1, 150, "pets"), + CASINO_PRIZE("Chicken", /obj/item/weapon/grenade/spawnergrenade/casino/chicken, 1, 200, "pets"), + CASINO_PRIZE("Cow", /obj/item/weapon/grenade/spawnergrenade/casino/cow, 1, 200, "pets"), + CASINO_PRIZE("Corgi", /obj/item/weapon/grenade/spawnergrenade/casino/corgi, 1, 200, "pets"), + CASINO_PRIZE("Fox", /obj/item/weapon/grenade/spawnergrenade/casino/fox, 1, 150, "pets"), + CASINO_PRIZE("Red panda", /obj/item/weapon/grenade/spawnergrenade/casino/redpanda, 1, 300, "pets"), + CASINO_PRIZE("Otie", /obj/item/weapon/grenade/spawnergrenade/casino/otie, 1, 500, "pets"), + CASINO_PRIZE("Snake", /obj/item/weapon/grenade/spawnergrenade/casino/snake, 1, 200, "pets"), + CASINO_PRIZE("Penguin", /obj/item/weapon/grenade/spawnergrenade/casino/penguin, 1, 150, "pets"), + CASINO_PRIZE("Fennec", /obj/item/weapon/grenade/spawnergrenade/casino/fennec, 1, 300, "pets"), + ) + item_list["Mechs and Rigs"] = list( + CASINO_PRIZE("Mech:Mining Ripley", /obj/item/weapon/grenade/spawnergrenade/casino/gygax/mining, 1, 1000, "mechs"), + CASINO_PRIZE("Mech:Firefighter Ripley", /obj/item/weapon/grenade/spawnergrenade/casino/gygax/firefighter, 1, 750, "mechs"), + CASINO_PRIZE("Mech:Odysseus", /obj/item/weapon/grenade/spawnergrenade/casino/gygax/Odysseus, 1, 1250, "mechs"), + CASINO_PRIZE("Mech:Shuttlepod", /obj/item/weapon/grenade/spawnergrenade/casino/gygax/shuttlepod, 1, 250, "mechs"), + CASINO_PRIZE("Rig: Solgov engineering hardsuit control module", /obj/item/weapon/rig/bayeng, 1, 500, "mechs"), + CASINO_PRIZE("Rig: Solgov medical hardsuit control module", /obj/item/weapon/rig/baymed, 1, 500, "mechs"), + CASINO_PRIZE("Rig: Advanced voidsuit control module", /obj/item/weapon/rig/ce, 1, 500, "mechs"), + CASINO_PRIZE("Rig: Combat hardsuit control module", /obj/item/weapon/rig/combat, 1, 750, "mechs"), + CASINO_PRIZE("Rig: ERT-J suit control module (Elite Janitor NT approved)", /obj/item/weapon/rig/ert/janitor, 1, 250, "mechs"), + CASINO_PRIZE("Rig: Augmented tie (Elite Paper-Pusher NT approved)", /obj/item/weapon/rig/internalaffairs, 1, 250, "mechs"), + CASINO_PRIZE("Rig: Industrial suit control module", /obj/item/weapon/rig/industrial, 1, 300, "mechs"), + CASINO_PRIZE("Rig: Rescue suit control module", /obj/item/weapon/rig/medical, 1, 300, "mechs"), + ) item_list["Implants"] = list( CASINO_PRIZE("Implanter (Remember to get one unless you want to borrow from station!)", /obj/item/weapon/implanter, 1, 100, "implants"), CASINO_PRIZE("Implant: Tazer", /obj/item/weapon/implantcase/taser, 1, 1000, "implants"), diff --git a/code/modules/casino/headset_casino.dm b/code/modules/casino/headset_casino.dm new file mode 100644 index 0000000000..fa7f09d401 --- /dev/null +++ b/code/modules/casino/headset_casino.dm @@ -0,0 +1,20 @@ +/obj/item/device/radio/headset/casino + name = "casino headset" + desc = "An updated, modular intercom that fits over the head with extra comfortable for the hardworking casino luxury crew. Has encryption key for scamm-... Kind casino staff channel." + icon = 'icons/obj/casino.dmi' + icon_state = "headset" + origin_tech = list(TECH_ILLEGAL = 1) + ks1type = /obj/item/device/encryptionkey/casino + +/obj/item/device/radio/headset/casino/bowman + name = "casino bowman headset" + icon_state = "headset_alt" + adhoc_fallback = TRUE + origin_tech = list(TECH_ILLEGAL = 2) + +/obj/item/device/encryptionkey/casino + icon = 'icons/obj/casino.dmi' + icon_state = "cypherkey" + channels = list("Casino" = 1) + origin_tech = list(TECH_ILLEGAL = 1) + syndie = 1 \ No newline at end of file diff --git a/code/modules/casino/premium_vendors.dm b/code/modules/casino/premium_vendors.dm index 8107585745..ad65cd61c2 100644 --- a/code/modules/casino/premium_vendors.dm +++ b/code/modules/casino/premium_vendors.dm @@ -7,9 +7,12 @@ //Devs Feel free to modify this to vend what you please // +// +//Locked Vendors (require access to use) +// /obj/machinery/vending/deluxe_boozeomat name = "Premium Drink Distributor" - desc = "A top of the line drink vendor that carries some of the finest drinks." + desc = "A top of the line drink vendor that carries some of the finest drinks in the frontier." icon = 'icons/obj/casino.dmi' icon_state = "premiumbooze" products = list(/obj/item/weapon/glass_extra/stick = 50, @@ -126,4 +129,41 @@ req_access = list(access_bar) req_log_access = access_bar has_logs = 1 - vending_sound = "machines/vending/vending_cans.ogg" \ No newline at end of file + vending_sound = "machines/vending/vending_cans.ogg" + +/obj/machinery/vending/deluxe_cigs + name = "Premium Tobacco Distributor" + desc = "A top of the line smokes vendor that carries some of the finest tobacco based goods in the frontier." + icon = 'icons/obj/casino.dmi' + icon_state = "premiumcigs" + products = list(/obj/item/weapon/storage/fancy/cigar = 15, + /obj/item/weapon/storage/fancy/cigarettes/carcinomas = 15, + /obj/item/weapon/storage/fancy/cigarettes/professionals = 15, + /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba = 30, + /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 30, + /obj/item/weapon/storage/box/matches = 5, + /obj/item/weapon/flame/lighter/zippo = 10 + ) + + contraband = list() + vend_delay = 15 + idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. + req_access = list(access_bar) + req_log_access = access_bar + has_logs = 1 + vending_sound = "machines/vending/vending_cans.ogg" + +// +//Unlocked Vendors +// +/obj/machinery/vending/deluxe_boozeomat/open + req_access = null + req_log_access = null + +/obj/machinery/vending/deluxe_dinner/open + req_access = null + req_log_access = null + +/obj/machinery/vending/deluxe_cigs/open + req_access = null + req_log_access = null \ No newline at end of file diff --git a/code/modules/casino/spawnergrenade_casino.dm b/code/modules/casino/spawnergrenade_casino.dm new file mode 100644 index 0000000000..c7a8611b86 --- /dev/null +++ b/code/modules/casino/spawnergrenade_casino.dm @@ -0,0 +1,100 @@ +/obj/item/weapon/grenade/spawnergrenade/casino + name = "Casino Creature Container (Cat)" + desc = "It is set to detonate in 5 seconds. It will release a cat won from the casino prize vendor!" + icon = 'icons/obj/casino.dmi' + icon_state = "casino" + item_state = "flashbang" + origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2) + spawner_type = /mob/living/simple_mob/animal/passive/cat + +// Detonate now just handles the two loops that query for people in lockers and people who can see it. +/obj/item/weapon/grenade/spawnergrenade/casino/detonate() + + if(spawner_type && deliveryamt) + var/turf/T = get_turf(src) + playsound(T, 'sound/effects/phasein.ogg', 100, 1) + + for(var/i=1, i<=deliveryamt, i++) + var/atom/movable/x = new spawner_type(T) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(x, pick(NORTH,SOUTH,EAST,WEST)) + qdel(src) + return + +// +// Creatures +// +/obj/item/weapon/grenade/spawnergrenade/casino/penguin + desc = "It is set to detonate in 5 seconds. It will release a penguin won from the casino prize vendor!" + name = "Casino Creature Container (Penguin)" + spawner_type = /mob/living/simple_mob/animal/passive/penguin + +/obj/item/weapon/grenade/spawnergrenade/casino/chicken + desc = "It is set to detonate in 5 seconds. It will release a chicken won from the casino prize vendor!" + name = "Casino Creature Container (Chicken)" + spawner_type = /mob/living/simple_mob/animal/passive/chicken + +/obj/item/weapon/grenade/spawnergrenade/casino/cow + desc = "It is set to detonate in 5 seconds. It will release a cow won from the casino prize vendor!" + name = "Casino Creature Container (Cow)" + spawner_type = /mob/living/simple_mob/animal/passive/cow + +/obj/item/weapon/grenade/spawnergrenade/casino/corgi + desc = "It is set to detonate in 5 seconds. It will release a corgi won from the casino prize vendor!" + name = "Casino Creature Container (Corgi)" + spawner_type = /mob/living/simple_mob/animal/passive/dog/corgi + +/obj/item/weapon/grenade/spawnergrenade/casino/fox + desc = "It is set to detonate in 5 seconds. It will release a fox won from the casino prize vendor!" + name = "Casino Creature Container (Fox)" + spawner_type = /mob/living/simple_mob/animal/passive/fox + +/obj/item/weapon/grenade/spawnergrenade/casino/fennec + desc = "It is set to detonate in 5 seconds. It will release a fennec won from the casino prize vendor!" + name = "Casino Creature Container (Fennec)" + spawner_type = /mob/living/simple_mob/vore/fennec + +/obj/item/weapon/grenade/spawnergrenade/casino/snake + desc = "It is set to detonate in 5 seconds. It will release a snake won from the casino prize vendor!" + name = "Casino Creature Container (Snake)" + spawner_type = /mob/living/simple_mob/animal/passive/snake + +/obj/item/weapon/grenade/spawnergrenade/casino/redpanda + desc = "It is set to detonate in 5 seconds. It will release a red panda won from the casino prize vendor!" + name = "Casino Creature Container (Red panda)" + spawner_type = /mob/living/simple_mob/vore/redpanda + +/obj/item/weapon/grenade/spawnergrenade/casino/snake + desc = "It is set to detonate in 5 seconds. It will release a snake won from the casino prize vendor!" + name = "Casino Creature Container (Snake)" + spawner_type = /mob/living/simple_mob/animal/passive/snake + +/obj/item/weapon/grenade/spawnergrenade/casino/otie + desc = "It is set to detonate in 5 seconds. It will release a otie won from the casino prize vendor!" + name = "Casino Creature Container (Otie)" + spawner_type = /mob/living/simple_mob/otie/friendly + +// +// Mecha +// +/obj/item/weapon/grenade/spawnergrenade/casino/gygax + desc = "You feel great power inside this small round sphere, with great powers comes great responsibilities!" + name = "Mysterious Grenade" + spawner_type = /obj/mecha/combat/gygax/dark + +/obj/item/weapon/grenade/spawnergrenade/casino/gygax/mining + name = "Casino Mech Container (Mining Ripley)" + spawner_type = /obj/mecha/working/ripley/mining + +/obj/item/weapon/grenade/spawnergrenade/casino/gygax/firefighter + name = "Casino Mech Container (Firefighter Ripley)" + spawner_type = /obj/mecha/working/ripley/firefighter + +/obj/item/weapon/grenade/spawnergrenade/casino/gygax/Odysseus + name = "Casino Mech Container (Odysseus)" + spawner_type = /obj/mecha/medical/odysseus/loaded + +/obj/item/weapon/grenade/spawnergrenade/casino/gygax/shuttlepod + name = "Casino Mech Container (Shuttlepod)" + spawner_type = /obj/mecha/working/hoverpod/shuttlepod \ No newline at end of file diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 58a97f5b03..b088ccec95 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -80,10 +80,15 @@ // Runechat messages var/list/seen_messages + //Hide top bars + var/fullscreen = FALSE + //Hide status bar + var/show_status_bar = TRUE + /////////// // INPUT // /////////// - + /// Bitfield of modifier keys (Shift, Ctrl, Alt) held currently. var/mod_keys_held = 0 /// Bitfield of movement keys (WASD/Cursor Keys) held currently. @@ -107,4 +112,4 @@ /// Movement dir of the most recently pressed movement key. Used in cardinal-only movement mode. var/last_move_dir_pressed = NONE - #endif \ No newline at end of file + #endif diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 83754688bf..f37c29d081 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -86,7 +86,7 @@ return sane = TRUE break - + if(!sane) to_chat(src, "Sorry, that link doesn't appear to be valid. Please try again.") return @@ -195,6 +195,8 @@ . = ..() //calls mob.Login() prefs.sanitize_preferences() + if(prefs) + prefs.selecting_slots = FALSE connection_time = world.time connection_realtime = world.realtime @@ -565,3 +567,36 @@ set name = "TguiKeyUp" set hidden = TRUE return // stub + +/client/verb/toggle_fullscreen() + set name = "Toggle Fullscreen" + set category = "OOC" + + fullscreen = !fullscreen + + if (fullscreen) + winset(usr, "mainwindow", "on-size=") + winset(usr, "mainwindow", "titlebar=false") + winset(usr, "mainwindow", "can-resize=false") + winset(usr, "mainwindow", "menu=") + winset(usr, "mainwindow", "is-maximized=false") + winset(usr, "mainwindow", "is-maximized=true") + else + winset(usr, "mainwindow", "menu=menu") + winset(usr, "mainwindow", "titlebar=true") + winset(usr, "mainwindow", "can-resize=true") + winset(usr, "mainwindow", "is-maximized=false") + winset(usr, "mainwindow", "on-size=attempt_auto_fit_viewport") // The attempt_auto_fit_viewport() proc is not implemented yet + +/* +/client/verb/toggle_status_bar() + set name = "Toggle Status Bar" + set category = "OOC" + + show_status_bar = !show_status_bar + + if (show_status_bar) + winset(usr, "input", "is-visible=true") + else + winset(usr, "input", "is-visible=false") +*/ diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index 06e44c3fd8..78694b1866 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -95,7 +95,7 @@ var/list/_client_preferences_by_type key = "DIGEST_NOISES" enabled_description = "Noisy" disabled_description = "Silent" - + /datum/client_preference/belch_noises // Belching noises - pref toggle for 'em description = "Burping" key = "BELCH_NOISES" @@ -108,7 +108,7 @@ var/list/_client_preferences_by_type enabled_description = "Noisy" disabled_description = "Silent" /datum/client_preference/whisubtle_vis - description = "Whi/Subtles Ghost Visible" + description = "Whi/Subtles Ghost Visible" key = "WHISUBTLE_VIS" enabled_description = "Visible" disabled_description = "Hidden" @@ -299,6 +299,30 @@ var/list/_client_preferences_by_type enabled_description = "On" disabled_description = "Off" +/datum/client_preference/say_sounds + description = "Say Sounds" + key = "SAY_SOUNDS" + enabled_description = "On" + disabled_description = "Off" + +/datum/client_preference/emote_sounds + description = "Me Sounds" + key = "EMOTE_SOUNDS" + enabled_description = "On" + disabled_description = "Off" + +/datum/client_preference/whisper_sounds + description = "Whisper Sounds" + key = "WHISPER_SOUNDS" + enabled_description = "On" + disabled_description = "Off" + +/datum/client_preference/subtle_sounds + description = "Subtle Sounds" + key = "SUBTLE_SOUNDS" + enabled_description = "On" + disabled_description = "Off" + /datum/client_preference/runechat_mob description = "Runechat (Mobs)" key = "RUNECHAT_MOB" diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index db6ac1e5f3..30da54f2e1 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -813,6 +813,12 @@ ckeywhitelist = list("pandora029") character_name = list("Evelyn Tareen", "Velyn Tareen") +/datum/gear/fluff/seona_flightsuit + path = /obj/item/clothing/under/fluff/foxoflightsuit/ + display_name = "padded flightsuit" + ckeywhitelist = list("pandora029") + character_name = list("Seona Young") + /datum/gear/fluff/lily_medal path = /obj/item/clothing/accessory/medal/silver/unity display_name = "Lily's Unity Medal" @@ -1411,4 +1417,4 @@ display_name = "Lucky's amour" ckeywhitelist = list ("thedavestdave") character_name = list("Lucky") - allowed_roles = "Chaplain" \ No newline at end of file + allowed_roles = "Chaplain" diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index e1ebc54bf7..9eeaf2b330 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -400,7 +400,7 @@ /datum/gear/suit/wintercoat/medical/para display_name = "winter coat, paramedic" path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/para - allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic","Field Medic") /datum/gear/suit/wintercoat/medical/chemist display_name = "winter coat, chemist" @@ -415,7 +415,7 @@ /datum/gear/suit/wintercoat/medical/sar display_name = "winter coat, search and rescue" path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar - allowed_roles = list("Chief Medical Officer", "Field Medic") + allowed_roles = list("Chief Medical Officer","Paramedic","Field Medic") /datum/gear/suit/wintercoat/science display_name = "winter coat, science" @@ -663,4 +663,4 @@ "Pink kimono" = /obj/item/clothing/suit/kimono/pink, "Earth kimono" = /obj/item/clothing/suit/kimono/earth ) - gear_tweaks += new/datum/gear_tweak/path(kimonos) \ No newline at end of file + gear_tweaks += new/datum/gear_tweak/path(kimonos) diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index f4440117c4..17ee5ed672 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -232,6 +232,10 @@ return 1 . = OnTopic(href, href_list, usr) + + if(!pref_mob || !pref_mob.client) // Just in case we disappeared during OnTopic + return 1 + if(. & TOPIC_UPDATE_PREVIEW) pref_mob.client.prefs.update_preview_icon() if(. & TOPIC_REFRESH) diff --git a/code/modules/client/preference_setup/vore/02_size.dm b/code/modules/client/preference_setup/vore/02_size.dm index 37a71587b1..8cfd64c47d 100644 --- a/code/modules/client/preference_setup/vore/02_size.dm +++ b/code/modules/client/preference_setup/vore/02_size.dm @@ -3,6 +3,8 @@ #define WEIGHT_MAX 500 #define WEIGHT_CHANGE_MIN 0 #define WEIGHT_CHANGE_MAX 100 +#define MAX_VOICE_FREQ 70000 +#define MIN_VOICE_FREQ 15000 // Define a place to save in character setup /datum/preferences @@ -12,6 +14,8 @@ var/weight_gain = 100 // Weight gain rate. var/weight_loss = 50 // Weight loss rate. var/fuzzy = 0 // Preference toggle for sharp/fuzzy icon. Default sharp. + var/voice_freq = 0 + var/voice_sound = "beep-boop" // Definition of the stuff for Sizing /datum/category_item/player_setup_item/vore/size @@ -24,6 +28,8 @@ S["weight_gain"] >> pref.weight_gain S["weight_loss"] >> pref.weight_loss S["fuzzy"] >> pref.fuzzy + S["voice_freq"] >> pref.voice_freq + S["voice_sound"] >> pref.voice_sound /datum/category_item/player_setup_item/vore/size/save_character(var/savefile/S) S["size_multiplier"] << pref.size_multiplier @@ -31,12 +37,16 @@ S["weight_gain"] << pref.weight_gain S["weight_loss"] << pref.weight_loss S["fuzzy"] << pref.fuzzy + S["voice_freq"] << pref.voice_freq + S["voice_sound"] << pref.voice_sound /datum/category_item/player_setup_item/vore/size/sanitize_character() pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr)) pref.weight_gain = sanitize_integer(pref.weight_gain, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_gain)) pref.weight_loss = sanitize_integer(pref.weight_loss, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_loss)) pref.fuzzy = sanitize_integer(pref.fuzzy, 0, 1, initial(pref.fuzzy)) + if(pref.voice_freq != 0) + pref.voice_freq = sanitize_integer(pref.voice_freq, MIN_VOICE_FREQ, MAX_VOICE_FREQ, initial(pref.fuzzy)) if(pref.size_multiplier == null || pref.size_multiplier < RESIZE_TINY || pref.size_multiplier > RESIZE_HUGE) pref.size_multiplier = initial(pref.size_multiplier) @@ -45,12 +55,47 @@ character.weight_gain = pref.weight_gain character.weight_loss = pref.weight_loss character.fuzzy = pref.fuzzy + character.voice_freq = pref.voice_freq character.resize(pref.size_multiplier, animate = FALSE, ignore_prefs = TRUE) + if(!pref.voice_sound) + character.voice_sounds_list = talk_sound + else + switch(pref.voice_sound) + if("beep-boop") + character.voice_sounds_list = talk_sound + if("goon speak 1") + character.voice_sounds_list = goon_speak_one_sound + if("goon speak 2") + character.voice_sounds_list = goon_speak_two_sound + if("goon speak 3") + character.voice_sounds_list = goon_speak_three_sound + if("goon speak 4") + character.voice_sounds_list = goon_speak_four_sound + if("goon speak blub") + character.voice_sounds_list = goon_speak_blub_sound + if("goon speak bottalk") + character.voice_sounds_list = goon_speak_bottalk_sound + if("goon speak buwoo") + character.voice_sounds_list = goon_speak_buwoo_sound + if("goon speak cow") + character.voice_sounds_list = goon_speak_cow_sound + if("goon speak lizard") + character.voice_sounds_list = goon_speak_lizard_sound + if("goon speak pug") + character.voice_sounds_list = goon_speak_pug_sound + if("goon speak pugg") + character.voice_sounds_list = goon_speak_pugg_sound + if("goon speak roach") + character.voice_sounds_list = goon_speak_roach_sound + if("goon speak skelly") + character.voice_sounds_list = goon_speak_skelly_sound /datum/category_item/player_setup_item/vore/size/content(var/mob/user) . += "
" . += "Scale: [round(pref.size_multiplier*100)]%
" . += "Scaled Appearance: [pref.fuzzy ? "Fuzzy" : "Sharp"]
" + . += "Voice Frequency: [pref.voice_freq]
" + . += "Voice Sounds: [pref.voice_sound]
" . += "
" . += "Relative Weight: [pref.weight_vr]
" . += "Weight Gain Rate: [pref.weight_gain]
" @@ -104,4 +149,44 @@ pref.weight_loss = round(text2num(weight_loss_rate),1) return TOPIC_REFRESH + else if(href_list["voice_freq"]) + var/list/preset_voice_freqs = list("high" = MAX_VOICE_FREQ, "middle-high" = 56250, "middle" = 42500, "middle-low"= 28750, "low" = MIN_VOICE_FREQ, "custom" = 1, "random" = 0) + var/choice = tgui_input_list(usr, "What would you like to set your voice frequency to? ([MIN_VOICE_FREQ] - [MAX_VOICE_FREQ])", "Voice Frequency", preset_voice_freqs) + if(!choice) + return + choice = preset_voice_freqs[choice] + if(choice == 0) + pref.voice_freq = choice + return TOPIC_REFRESH + else if(choice == 1) + choice = tgui_input_number(user, "Choose your character's voice frequency, ranging from [MIN_VOICE_FREQ] to [MAX_VOICE_FREQ]", "Custom Voice Frequency", null, MAX_VOICE_FREQ, MIN_VOICE_FREQ, round_value = TRUE) + if(choice > MAX_VOICE_FREQ) + choice = MAX_VOICE_FREQ + else if(choice < MIN_VOICE_FREQ) + choice = MIN_VOICE_FREQ + + pref.voice_freq = choice + return TOPIC_REFRESH + else if(href_list["voice_sounds_list"]) + var/list/possible_voice_types = list( + "beep-boop", + "goon speak 1", + "goon speak 2", + "goon speak 3", + "goon speak 4", + "goon speak blub", + "goon speak bottalk", + "goon speak buwoo", + "goon speak cow", + "goon speak lizard", + "goon speak pug", + "goon speak pugg", + "goon speak roach", + "goon speak skelly") + var/choice = tgui_input_list(usr, "Which set of sounds would you like to use for your character's speech sounds?", "Voice Sounds", possible_voice_types) + if(!choice) + pref.voice_sound = "beep-boop" + else + pref.voice_sound = choice + return ..(); diff --git a/code/modules/client/preferences_toggle_procs.dm b/code/modules/client/preferences_toggle_procs.dm index d928b39c2e..23287182e8 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -406,6 +406,58 @@ feedback_add_details("admin_verb","TRadioSounds") +/client/verb/toggle_say_sounds() + set name = "Sound-Toggle-Say" + set category = "Preferences" + set desc = "Toggle hearing a sound when somebody speaks using say." + + var/pref_path = /datum/client_preference/say_sounds + toggle_preference(pref_path) + SScharacter_setup.queue_preferences_save(prefs) + + to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/say_sounds)) ? "hear" : "not hear"] say sounds.") + + feedback_add_details("admin_verb","TSaySounds") + +/client/verb/toggle_emote_sounds() + set name = "Sound-Toggle-Me" + set category = "Preferences" + set desc = "Toggle hearing a sound when somebody speaks using me ." + + var/pref_path = /datum/client_preference/emote_sounds + toggle_preference(pref_path) + SScharacter_setup.queue_preferences_save(prefs) + + to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/emote_sounds)) ? "hear" : "not hear"] me sounds.") + + feedback_add_details("admin_verb","TMeSounds") + +/client/verb/toggle_whisper_sounds() + set name = "Sound-Toggle-Whisper" + set category = "Preferences" + set desc = "Toggle hearing a sound when somebody speaks using whisper." + + var/pref_path = /datum/client_preference/whisper_sounds + toggle_preference(pref_path) + SScharacter_setup.queue_preferences_save(prefs) + + to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/whisper_sounds)) ? "hear" : "not hear"] whisper sounds.") + + feedback_add_details("admin_verb","TWhisperSounds") + +/client/verb/toggle_subtle_sounds() + set name = "Sound-Toggle-Subtle" + set category = "Preferences" + set desc = "Toggle hearing a sound when somebody uses subtle." + + var/pref_path = /datum/client_preference/subtle_sounds + toggle_preference(pref_path) + SScharacter_setup.queue_preferences_save(prefs) + + to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/subtle_sounds)) ? "hear" : "not hear"] subtle sounds.") + + feedback_add_details("admin_verb","TSubtleSounds") + // Not attached to a pref datum because those are strict binary toggles /client/verb/toggle_examine_mode() set name = "Toggle Examine Mode" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 780895db22..85c00e67db 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -177,7 +177,7 @@ for(var/obj/item/piece in list(helmet,gloves,chest,boots)) if(!piece || piece.loc != wearer) continue - . += "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." + . += "\icon[piece][bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." if(src.loc == usr) . += "The access panel is [locked? "locked" : "unlocked"]." diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index e52df06471..ef719641c9 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -109,7 +109,7 @@ /obj/item/clothing/under/hyperfiber/bluespace/mob_can_unequip(mob/M, slot, disable_warning = 0) . = ..() - if(. && ishuman(M) && original_size) + if(. && ishuman(M) && original_size && !disable_warning) var/mob/living/carbon/human/H = M H.resize(original_size, ignore_prefs = TRUE) original_size = null @@ -129,7 +129,7 @@ /obj/item/clothing/gloves/bluespace/mob_can_equip(mob/M, gloves, disable_warning = 0) . = ..() - if(. && ishuman(M)) + if(. && ishuman(M) && !disable_warning) var/mob/living/carbon/human/H = M if(!H.resizable) return @@ -145,7 +145,7 @@ /obj/item/clothing/gloves/bluespace/mob_can_unequip(mob/M, gloves, disable_warning = 0) . = ..() - if(. && ishuman(M) && original_size) + if(. && ishuman(M) && original_size && !disable_warning) var/mob/living/carbon/human/H = M if(!H.resizable) return diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm index 1017e74df8..ba8f247443 100644 --- a/code/modules/detectivework/microscope/dnascanner.dm +++ b/code/modules/detectivework/microscope/dnascanner.dm @@ -105,7 +105,7 @@ last_process_worldtime = world.time /obj/machinery/dnaforensics/proc/complete_scan() - visible_message("[bicon(src)] makes an insistent chime.", 2) + visible_message("\icon[src][bicon(src)] makes an insistent chime.", 2) update_icon() if(bloodsamp) var/obj/item/weapon/paper/P = new(src) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index 2eef935e81..aae9a23515 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -76,7 +76,7 @@ log transactions //display a message to the user var/response = pick("Initiating withdraw. Have a nice day!", "CRITICAL ERROR: Activating cash chamber panic siphon.","PIN Code accepted! Emptying account balance.", "Jackpot!") - to_chat(user, "[bicon(src)] The [src] beeps: \"[response]\"") + to_chat(user, "\icon[src][bicon(src)] The [src] beeps: \"[response]\"") return 1 /obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob) @@ -85,7 +85,7 @@ log transactions if(istype(I, /obj/item/weapon/card)) if(emagged > 0) //prevent inserting id into an emagged ATM - to_chat(user, "[bicon(src)] CARD READER ERROR. This system has been compromised!") + to_chat(user, "\icon[src][bicon(src)] CARD READER ERROR. This system has been compromised!") return else if(istype(I,/obj/item/weapon/card/emag)) I.resolve_attackby(src, user) @@ -234,7 +234,7 @@ log transactions var/target_account_number = text2num(href_list["target_acc_number"]) var/transfer_purpose = href_list["purpose"] if(charge_to_account(target_account_number, authenticated_account.owner_name, transfer_purpose, machine_id, transfer_amount)) - to_chat(usr, "[bicon(src)]Funds transfer successful.") + to_chat(usr, "\icon[src][bicon(src)]Funds transfer successful.") authenticated_account.money -= transfer_amount //create an entry in the account transaction log @@ -247,10 +247,10 @@ log transactions T.amount = "([transfer_amount])" authenticated_account.transaction_log.Add(T) else - to_chat(usr, "[bicon(src)]Funds transfer failed.") + to_chat(usr, "\icon[src][bicon(src)]Funds transfer failed.") else - to_chat(usr, "[bicon(src)]You don't have enough funds to do that!") + to_chat(usr, "\icon[src][bicon(src)]You don't have enough funds to do that!") if("view_screen") view_screen = text2num(href_list["view_screen"]) if("change_security_level") @@ -288,11 +288,11 @@ log transactions T.time = stationtime2text() failed_account.transaction_log.Add(T) else - to_chat(usr, "[bicon(src)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.") + to_chat(usr, "\icon[src][bicon(src)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.") previous_account_number = tried_account_num playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) else - to_chat(usr, "[bicon(src)] incorrect pin/account combination entered.") + to_chat(usr, "\icon[src][bicon(src)] incorrect pin/account combination entered.") number_incorrect_tries = 0 else playsound(src, 'sound/machines/twobeep.ogg', 50, 1) @@ -308,7 +308,7 @@ log transactions T.time = stationtime2text() authenticated_account.transaction_log.Add(T) - to_chat(usr, "[bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'") + to_chat(usr, "\icon[src][bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'") previous_account_number = tried_account_num if("e_withdrawal") @@ -336,7 +336,7 @@ log transactions T.time = stationtime2text() authenticated_account.transaction_log.Add(T) else - to_chat(usr, "[bicon(src)]You don't have enough funds to do that!") + to_chat(usr, "\icon[src][bicon(src)]You don't have enough funds to do that!") if("withdrawal") var/amount = max(text2num(href_list["funds_amount"]),0) amount = round(amount, 0.01) @@ -361,7 +361,7 @@ log transactions T.time = stationtime2text() authenticated_account.transaction_log.Add(T) else - to_chat(usr, "[bicon(src)]You don't have enough funds to do that!") + to_chat(usr, "\icon[src][bicon(src)]You don't have enough funds to do that!") if("balance_statement") if(authenticated_account) var/obj/item/weapon/paper/R = new(src.loc) @@ -433,7 +433,7 @@ log transactions if(!held_card) //this might happen if the user had the browser window open when somebody emagged it if(emagged > 0) - to_chat(usr, "[bicon(src)] The ATM card reader rejected your ID because this machine has been sabotaged!") + to_chat(usr, "\icon[src][bicon(src)] The ATM card reader rejected your ID because this machine has been sabotaged!") else var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card/id)) diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index beae04ee7c..3673f67814 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -107,7 +107,7 @@ if(linked_account) scan_card(I, O) else - to_chat(usr, "[bicon(src)]Unable to connect to linked account.") + to_chat(usr, "\icon[src][bicon(src)]Unable to connect to linked account.") else if (istype(O, /obj/item/weapon/spacecash/ewallet)) var/obj/item/weapon/spacecash/ewallet/E = O if (linked_account) @@ -115,7 +115,7 @@ if(transaction_locked && !transaction_paid) if(transaction_amount <= E.worth) playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("[bicon(src)] \The [src] chimes.") + src.visible_message("\icon[src][bicon(src)] \The [src] chimes.") transaction_paid = 1 //transfer the money @@ -132,11 +132,11 @@ T.time = stationtime2text() linked_account.transaction_log.Add(T) else - to_chat(usr, "[bicon(src)]\The [O] doesn't have that much money!") + to_chat(usr, "\icon[src][bicon(src)]\The [O] doesn't have that much money!") else - to_chat(usr, "[bicon(src)]Connected account has been suspended.") + to_chat(usr, "\icon[src][bicon(src)]Connected account has been suspended.") else - to_chat(usr, "[bicon(src)]EFTPOS is not connected to an account.") + to_chat(usr, "\icon[src][bicon(src)]EFTPOS is not connected to an account.") else ..() @@ -154,14 +154,14 @@ tgui_alert_async(usr, "That is not a valid code!") print_reference() else - to_chat(usr, "[bicon(src)]Incorrect code entered.") + to_chat(usr, "\icon[src][bicon(src)]Incorrect code entered.") if("change_id") var/attempt_code = text2num(input(usr, "Re-enter the current EFTPOS access code", "Confirm EFTPOS code")) if(attempt_code == access_code) eftpos_name = sanitize(input(usr, "Enter a new terminal ID for this device", "Enter new EFTPOS ID"), MAX_NAME_LEN) + " EFTPOS scanner" print_reference() else - to_chat(usr, "[bicon(src)]Incorrect code entered.") + to_chat(usr, "\icon[src][bicon(src)]Incorrect code entered.") if("link_account") var/attempt_account_num = tgui_input_number(usr, "Enter account number to pay EFTPOS charges into", "New account number") var/attempt_pin = tgui_input_number(usr, "Enter pin code", "Account pin") @@ -169,9 +169,9 @@ if(linked_account) if(linked_account.suspended) linked_account = null - to_chat(usr, "[bicon(src)]Account has been suspended.") + to_chat(usr, "\icon[src][bicon(src)]Account has been suspended.") else - to_chat(usr, "[bicon(src)]Account not found.") + to_chat(usr, "\icon[src][bicon(src)]Account not found.") if("trans_purpose") var/choice = sanitize(input(usr, "Enter reason for EFTPOS transaction", "Transaction purpose")) if(choice) transaction_purpose = choice @@ -194,14 +194,14 @@ else if(linked_account) transaction_locked = 1 else - to_chat(usr, "[bicon(src)]No account connected to send transactions to.") + to_chat(usr, "\icon[src][bicon(src)]No account connected to send transactions to.") if("scan_card") if(linked_account) var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card)) scan_card(I) else - to_chat(usr, "[bicon(src)]Unable to link accounts.") + to_chat(usr, "\icon[src][bicon(src)]Unable to link accounts.") if("reset") //reset the access code - requires HoP/captain access var/obj/item/I = usr.get_active_hand() @@ -209,10 +209,10 @@ var/obj/item/weapon/card/id/C = I if((access_cent_captain in C.access) || (access_hop in C.access) || (access_captain in C.access)) access_code = 0 - to_chat(usr, "[bicon(src)]Access code reset to 0.") + to_chat(usr, "\icon[src][bicon(src)]Access code reset to 0.") else if (istype(I, /obj/item/weapon/card/emag)) access_code = 0 - to_chat(usr, "[bicon(src)]Access code reset to 0.") + to_chat(usr, "\icon[src][bicon(src)]Access code reset to 0.") src.attack_self(usr) @@ -236,7 +236,7 @@ if(!D.suspended) if(transaction_amount <= D.money) playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("[bicon(src)] \The [src] chimes.") + src.visible_message("\icon[src][bicon(src)] \The [src] chimes.") transaction_paid = 1 //transfer the money @@ -265,25 +265,25 @@ T.time = stationtime2text() linked_account.transaction_log.Add(T) else - to_chat(usr, "[bicon(src)]You don't have that much money!") + to_chat(usr, "\icon[src][bicon(src)]You don't have that much money!") else - to_chat(usr, "[bicon(src)]Your account has been suspended.") + to_chat(usr, "\icon[src][bicon(src)]Your account has been suspended.") else - to_chat(usr, "[bicon(src)]Unable to access account. Check security settings and try again.") + to_chat(usr, "\icon[src][bicon(src)]Unable to access account. Check security settings and try again.") else - to_chat(usr, "[bicon(src)]Connected account has been suspended.") + to_chat(usr, "\icon[src][bicon(src)]Connected account has been suspended.") else - to_chat(usr, "[bicon(src)]EFTPOS is not connected to an account.") + to_chat(usr, "\icon[src][bicon(src)]EFTPOS is not connected to an account.") else if (istype(I, /obj/item/weapon/card/emag)) if(transaction_locked) if(transaction_paid) - to_chat(usr, "[bicon(src)]You stealthily swipe \the [I] through \the [src].") + to_chat(usr, "\icon[src][bicon(src)]You stealthily swipe \the [I] through \the [src].") transaction_locked = 0 transaction_paid = 0 else usr.visible_message("\The [usr] swipes a card through \the [src].") playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("[bicon(src)] \The [src] chimes.") + src.visible_message("\icon[src][bicon(src)] \The [src] chimes.") transaction_paid = 1 //emag? diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index 08d4ab66d8..ae649a8f4d 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -103,7 +103,7 @@ if(allowed(usr)) locked = !locked else - to_chat(usr, "[bicon(src)]Insufficient access.") + to_chat(usr, "\icon[src][bicon(src)]Insufficient access.") if("toggle_cash_lock") cash_locked = !cash_locked if("link_account") @@ -113,9 +113,9 @@ if(linked_account) if(linked_account.suspended) linked_account = null - src.visible_message("[bicon(src)]Account has been suspended.") + src.visible_message("\icon[src][bicon(src)]Account has been suspended.") else - to_chat(usr, "[bicon(src)]Account not found.") + to_chat(usr, "\icon[src][bicon(src)]Account not found.") if("custom_order") var/t_purpose = sanitize(tgui_input_text(usr, "Enter purpose", "New purpose")) if (!t_purpose || !Adjacent(usr)) return @@ -126,7 +126,7 @@ transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) - src.visible_message("[bicon(src)][transaction_purpose]: [t_amount] Thaler\s.") + src.visible_message("\icon[src][bicon(src)][transaction_purpose]: [t_amount] Thaler\s.") if("set_amount") var/item_name = locate(href_list["item"]) var/n_amount = round(tgui_input_number(usr, "Enter amount", "New amount")) @@ -163,7 +163,7 @@ price_list.Cut() if("reset_log") transaction_logs.Cut() - to_chat(usr, "[bicon(src)]Transaction log reset.") + to_chat(usr, "\icon[src][bicon(src)]Transaction log reset.") updateDialog() @@ -208,7 +208,7 @@ return 1 else confirm_item = I - src.visible_message("[bicon(src)]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") + src.visible_message("\icon[src][bicon(src)]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") playsound(src, 'sound/machines/twobeep.ogg', 25) return 0 @@ -219,14 +219,14 @@ if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "[bicon(src)]The cash box is open.") + to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") return if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I)) return if (!linked_account) - usr.visible_message("[bicon(src)]Unable to connect to linked account.") + usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") return // Access account for transaction @@ -239,13 +239,13 @@ D = attempt_account_access(I.associated_account_number, attempt_pin, 2) if(!D) - src.visible_message("[bicon(src)]Unable to access account. Check security settings and try again.") + src.visible_message("\icon[src][bicon(src)]Unable to access account. Check security settings and try again.") else if(D.suspended) - src.visible_message("[bicon(src)]Your account has been suspended.") + src.visible_message("\icon[src][bicon(src)]Your account has been suspended.") else if(transaction_amount > D.money) - src.visible_message("[bicon(src)]Not enough funds.") + src.visible_message("\icon[src][bicon(src)]Not enough funds.") else // Transfer the money D.money -= transaction_amount @@ -284,7 +284,7 @@ if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "[bicon(src)]The cash box is open.") + to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") return if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E)) @@ -293,7 +293,7 @@ // Access account for transaction if(check_account()) if(transaction_amount > E.worth) - src.visible_message("[bicon(src)]Not enough funds.") + src.visible_message("\icon[src][bicon(src)]Not enough funds.") else // Transfer the money E.worth -= transaction_amount @@ -322,14 +322,14 @@ if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "[bicon(src)]The cash box is open.") + to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") return if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(SC)) return if(transaction_amount > SC.worth) - src.visible_message("[bicon(src)]Not enough money.") + src.visible_message("\icon[src][bicon(src)]Not enough money.") else // Insert cash into magical slot SC.worth -= transaction_amount @@ -351,20 +351,20 @@ /obj/machinery/cash_register/proc/scan_item_price(obj/O) if(!istype(O)) return if(item_list.len > 10) - src.visible_message("[bicon(src)]Only up to ten different items allowed per purchase.") + src.visible_message("\icon[src][bicon(src)]Only up to ten different items allowed per purchase.") return if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "[bicon(src)]The cash box is open.") + to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") return // First check if item has a valid price var/price = O.get_item_cost() if(isnull(price)) - src.visible_message("[bicon(src)]Unable to find item in database.") + src.visible_message("\icon[src][bicon(src)]Unable to find item in database.") return // Call out item cost - src.visible_message("[bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") + src.visible_message("\icon[src][bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") // Note the transaction purpose for later use if(transaction_purpose) transaction_purpose += "
" @@ -432,11 +432,11 @@ /obj/machinery/cash_register/proc/check_account() if (!linked_account) - usr.visible_message("[bicon(src)]Unable to connect to linked account.") + usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") return 0 if(linked_account.suspended) - src.visible_message("[bicon(src)]Connected account has been suspended.") + src.visible_message("\icon[src][bicon(src)]Connected account has been suspended.") return 0 return 1 @@ -444,7 +444,7 @@ /obj/machinery/cash_register/proc/transaction_complete() /// Visible confirmation playsound(src, 'sound/machines/chime.ogg', 25) - src.visible_message("[bicon(src)]Transaction complete.") + src.visible_message("\icon[src][bicon(src)]Transaction complete.") flick("register_approve", src) reset_memory() updateDialog() diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index d9755b5041..f2b4854d11 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -99,7 +99,7 @@ if(allowed(usr)) locked = !locked else - to_chat(usr, "[bicon(src)]Insufficient access.") + to_chat(usr, "\icon[src][bicon(src)]Insufficient access.") if("link_account") var/attempt_account_num = tgui_input_number(usr, "Enter account number", "New account number") var/attempt_pin = tgui_input_number(usr, "Enter PIN", "Account PIN") @@ -107,9 +107,9 @@ if(linked_account) if(linked_account.suspended) linked_account = null - src.visible_message("[bicon(src)]Account has been suspended.") + src.visible_message("\icon[src][bicon(src)]Account has been suspended.") else - to_chat(usr, "[bicon(src)]Account not found.") + to_chat(usr, "\icon[src][bicon(src)]Account not found.") if("custom_order") var/t_purpose = sanitize(tgui_input_text(usr, "Enter purpose", "New purpose")) if (!t_purpose || !Adjacent(usr)) return @@ -120,7 +120,7 @@ transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) - src.visible_message("[bicon(src)][transaction_purpose]: [t_amount] Thaler\s.") + src.visible_message("\icon[src][bicon(src)][transaction_purpose]: [t_amount] Thaler\s.") if("set_amount") var/item_name = locate(href_list["item"]) var/n_amount = round(tgui_input_number(usr, "Enter amount", "New amount")) @@ -157,7 +157,7 @@ price_list.Cut() if("reset_log") transaction_logs.Cut() - to_chat(usr, "[bicon(src)]Transaction log reset.") + to_chat(usr, "\icon[src][bicon(src)]Transaction log reset.") updateDialog() @@ -190,7 +190,7 @@ return 1 else confirm_item = I - src.visible_message("[bicon(src)]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") + src.visible_message("\icon[src][bicon(src)]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") playsound(src, 'sound/machines/twobeep.ogg', 25) return 0 @@ -203,7 +203,7 @@ return if (!linked_account) - usr.visible_message("[bicon(src)]Unable to connect to linked account.") + usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") return // Access account for transaction @@ -216,13 +216,13 @@ D = attempt_account_access(I.associated_account_number, attempt_pin, 2) if(!D) - src.visible_message("[bicon(src)]Unable to access account. Check security settings and try again.") + src.visible_message("\icon[src][bicon(src)]Unable to access account. Check security settings and try again.") else if(D.suspended) - src.visible_message("[bicon(src)]Your account has been suspended.") + src.visible_message("\icon[src][bicon(src)]Your account has been suspended.") else if(transaction_amount > D.money) - src.visible_message("[bicon(src)]Not enough funds.") + src.visible_message("\icon[src][bicon(src)]Not enough funds.") else // Transfer the money D.money -= transaction_amount @@ -265,7 +265,7 @@ // Access account for transaction if(check_account()) if(transaction_amount > E.worth) - src.visible_message("[bicon(src)]Not enough funds.") + src.visible_message("\icon[src][bicon(src)]Not enough funds.") else // Transfer the money E.worth -= transaction_amount @@ -291,16 +291,16 @@ /obj/item/device/retail_scanner/proc/scan_item_price(var/obj/O) if(!istype(O)) return if(item_list.len > 10) - src.visible_message("[bicon(src)]Only up to ten different items allowed per purchase.") + src.visible_message("\icon[src][bicon(src)]Only up to ten different items allowed per purchase.") return // First check if item has a valid price var/price = O.get_item_cost() if(isnull(price)) - src.visible_message("[bicon(src)]Unable to find item in database.") + src.visible_message("\icon[src][bicon(src)]Unable to find item in database.") return // Call out item cost - src.visible_message("[bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") + src.visible_message("\icon[src][bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") // Note the transaction purpose for later use if(transaction_purpose) transaction_purpose += "
" @@ -368,11 +368,11 @@ /obj/item/device/retail_scanner/proc/check_account() if (!linked_account) - usr.visible_message("[bicon(src)]Unable to connect to linked account.") + usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") return 0 if(linked_account.suspended) - src.visible_message("[bicon(src)]Connected account has been suspended.") + src.visible_message("\icon[src][bicon(src)]Connected account has been suspended.") return 0 return 1 @@ -380,7 +380,7 @@ /obj/item/device/retail_scanner/proc/transaction_complete() /// Visible confirmation playsound(src, 'sound/machines/chime.ogg', 25) - src.visible_message("[bicon(src)]Transaction complete.") + src.visible_message("\icon[src][bicon(src)]Transaction complete.") flick("retail_approve", src) reset_memory() updateDialog() diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index 55c726539a..c05c3e1a69 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -270,7 +270,7 @@ GLOBAL_LIST_EMPTY(vending_products) // This is not a status display message, since it's something the character // themselves is meant to see BEFORE putting the money in - to_chat(usr, "[bicon(cashmoney)] That is not enough money.") + to_chat(usr, "\icon[cashmoney][bicon(cashmoney)] That is not enough money.") return 0 if(istype(cashmoney, /obj/item/weapon/spacecash)) diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index bd79cb1f7b..1984cc8154 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -194,7 +194,8 @@ /obj/item/weapon/reagent_containers/food/snacks/cb10 = 6, /obj/item/weapon/reagent_containers/food/snacks/tuna = 2) contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6, - /obj/item/weapon/reagent_containers/food/snacks/unajerky = 12) + /obj/item/weapon/reagent_containers/food/snacks/unajerky = 12, + /obj/item/weapon/reagent_containers/food/snacks/canned/brainzsnax = 6) prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 1, /obj/item/weapon/reagent_containers/food/snacks/candy/gummy = 2, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 5, @@ -1067,7 +1068,8 @@ /obj/item/weapon/reagent_containers/food/snacks/driedfish = 8, /obj/item/weapon/reagent_containers/food/snacks/cookiesnack = 8 ) - contraband = list(/obj/item/weapon/reagent_containers/food/snacks/unajerky = 1) + contraband = list(/obj/item/weapon/reagent_containers/food/snacks/unajerky = 1, + /obj/item/weapon/reagent_containers/food/snacks/canned/brainzsnax/red = 6) prices = list( /obj/item/weapon/reagent_containers/food/snacks/tuna = 5, /obj/item/weapon/reagent_containers/food/snacks/semki = 5, diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index 66fea29cd1..ce8a8cc7dd 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -635,7 +635,15 @@ /obj/item/clothing/mask/bandana/gold = 5, /obj/item/clothing/mask/bandana/green = 5, /obj/item/clothing/mask/bandana/red = 5, - /obj/item/clothing/mask/surgical = 5) + /obj/item/clothing/mask/surgical = 5, + /obj/item/clothing/accessory/pride/bi = 5, + /obj/item/clothing/accessory/pride/trans = 5, + /obj/item/clothing/accessory/pride/ace = 5, + /obj/item/clothing/accessory/pride/enby = 5, + /obj/item/clothing/accessory/pride/pan = 5, + /obj/item/clothing/accessory/pride/lesbian = 5, + /obj/item/clothing/accessory/pride/intersex = 5, + /obj/item/clothing/accessory/pride/vore = 5) prices = list(/obj/item/clothing/accessory = 50, /obj/item/clothing/accessory/armband/med/color = 50, /obj/item/clothing/accessory/asymmetric = 50, @@ -752,7 +760,15 @@ /obj/item/clothing/mask/bandana/gold = 50, /obj/item/clothing/mask/bandana/green = 50, /obj/item/clothing/mask/bandana/red = 50, - /obj/item/clothing/mask/surgical = 50) + /obj/item/clothing/mask/surgical = 50, + /obj/item/clothing/accessory/pride/bi = 50, + /obj/item/clothing/accessory/pride/trans = 50, + /obj/item/clothing/accessory/pride/ace = 50, + /obj/item/clothing/accessory/pride/enby = 50, + /obj/item/clothing/accessory/pride/pan = 50, + /obj/item/clothing/accessory/pride/lesbian = 50, + /obj/item/clothing/accessory/pride/intersex = 50, + /obj/item/clothing/accessory/pride/vore = 50) premium = list(/obj/item/weapon/bedsheet/rainbow = 1) contraband = list(/obj/item/clothing/mask/gas/clown_hat = 1, /obj/item/clothing/accessory/collar/collarplanet_earth = 5) @@ -2429,7 +2445,7 @@ desc = "Food made by dogs!" product_ads = "EAT FOOD!!!;Awooooooooooooooo!~;Made by actual dogs!;Now with twenty percent more taste!!!" icon = 'icons/obj/vending.dmi' - icon_state = "fridge_food" + icon_state = "hotfood" products = list(/obj/item/weapon/tray = 50, /obj/item/weapon/material/kitchen/utensil/fork = 50, /obj/item/weapon/material/knife/plastic = 50, @@ -2917,7 +2933,7 @@ desc = "Food made by dogs!" product_ads = "EAT FOOD!!!;Awooooooooooooooo!~;Made by actual dogs!;Now with twenty percent more taste!!!" icon = 'icons/obj/vending.dmi' - icon_state = "fridge_food" + icon_state = "hotfood" products = list(/obj/item/weapon/tray = 50, /obj/item/weapon/material/kitchen/utensil/fork = 50, /obj/item/weapon/material/knife/plastic = 50, @@ -3313,7 +3329,7 @@ desc = "Food made by dogs!" product_ads = "EAT FOOD!!!;Awooooooooooooooo!~;Made by actual dogs!;Now with twenty percent more taste!!!" icon = 'icons/obj/vending.dmi' - icon_state = "fridge_food" + icon_state = "hotfood" products = list(/obj/item/weapon/reagent_containers/food/snacks/bearmeat = 10, /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 10, /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish = 10, diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm index f2118f1030..385759bc8d 100644 --- a/code/modules/emotes/definitions/audible_furry_vr.dm +++ b/code/modules/emotes/definitions/audible_furry_vr.dm @@ -144,6 +144,21 @@ key = "squeaky" emote_message_3p = "squeaks." emote_sound = 'sound/items/drop/plushie.ogg' +/decl/emote/audible/mothscream + key = "mothscream" + emote_message_3p ="screams" + emote_sound = 'sound/voice/moth/scream_moth.ogg' + +/decl/emote/audible/mothchitter + key = "mothchitter" + emote_message_3p = "chitters" + emote_sound = 'sound/voice/moth/moth_chitter.ogg' + +/decl/emote/audible/mothlaugh + key = "mothlaugh" + emote_message_3p = "laughs" + emote_sound = 'sound/voice/moth/moth_laugh.ogg' + /decl/emote/audible/gyoh key = "gyoh" @@ -193,23 +208,23 @@ key = "coyawoo" emote_message_3p = "lets out a scraggly awoo." emote_sound = 'sound/voice/coyoteawoo.ogg' - + /decl/emote/audible/coyawoo2 key = "coyawoo2" emote_message_3p = "lets out a pronounced, scraggly awoo." emote_sound = 'sound/voice/coyoteawoo2.ogg' - + /decl/emote/audible/coyawoo3 key = "coyawoo3" emote_message_3p = "yaps and lets out a scraggly awoo." emote_sound = 'sound/voice/coyoteawoo3.ogg' - + /decl/emote/audible/coyawoo4 key = "coyawoo4" emote_message_3p = "yaps several times, and lets out a short, scraggly awoo." emote_sound = 'sound/voice/coyoteawoo4.ogg' - + /decl/emote/audible/coyawoo5 key = "coyawoo5" emote_message_3p = "lets out a scraggly, whine-awoo." - emote_sound = 'sound/voice/coyoteawoo5.ogg' \ No newline at end of file + emote_sound = 'sound/voice/coyoteawoo5.ogg' diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index 0a6a0793fb..9f60ca53d7 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -191,10 +191,21 @@ if(message) message = encode_html_emphasis(message) + var/ourfreq = null + if(isliving(src)) + var/mob/living/L = src + if(L.voice_freq > 0 ) + ourfreq = L.voice_freq + + // Hearing gasp and such every five seconds is not good emotes were not global for a reason. // Maybe some people are okay with that. var/turf/T = get_turf(src) + if(!T) return + if(client) + playsound(T, pick(emote_sound), 25, TRUE, falloff = 1 , is_global = TRUE, frequency = ourfreq, ignore_walls = FALSE, preference = /datum/client_preference/emote_sounds) + var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE) var/list/m_viewers = in_range["mobs"] var/list/o_viewers = in_range["objs"] diff --git a/code/modules/food/kitchen/icecream.dm b/code/modules/food/kitchen/icecream.dm index 7dd64d3574..e92bd32254 100644 --- a/code/modules/food/kitchen/icecream.dm +++ b/code/modules/food/kitchen/icecream.dm @@ -92,7 +92,7 @@ var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O if(!I.ice_creamed) if(product_types[dispense_flavour] > 0) - src.visible_message("[bicon(src)] [user] scoops delicious [flavour_name] icecream into [I].") + src.visible_message("\icon[src][bicon(src)] [user] scoops delicious [flavour_name] icecream into [I].") product_types[dispense_flavour] -= 1 I.add_ice_cream(flavour_name) // if(beaker) diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm index 0031720671..2b2e164beb 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -344,6 +344,7 @@ spawn(30) for(var/obj/effect/landmark/L in linkedholodeck) + L.delete_me = 1 if(L.name=="Atmospheric Test Start") spawn(20) var/turf/T = get_turf(L) diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index 32013d9734..ee758860e2 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -68,15 +68,15 @@ active = 0 if(failed_task) failed_task = 0 - visible_message("[bicon(src)] [src] pings unhappily, flashing a red warning light.") + visible_message("\icon[src][bicon(src)] [src] pings unhappily, flashing a red warning light.") else - visible_message("[bicon(src)] [src] pings happily.") + visible_message("\icon[src][bicon(src)] [src] pings happily.") if(eject_disk) eject_disk = 0 if(loaded_disk) loaded_disk.loc = get_turf(src) - visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") loaded_disk = null /obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -190,7 +190,7 @@ SSplants.seeds[seed.seed.name] = seed.seed seed.update_seed() - visible_message("[bicon(src)] [src] beeps and spits out [seed].") + visible_message("\icon[src][bicon(src)] [src] beeps and spits out [seed].") seed = null return TRUE @@ -199,7 +199,7 @@ if(!loaded_disk) return loaded_disk.forceMove(get_turf(src)) - visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") loaded_disk = null return TRUE @@ -272,7 +272,7 @@ /obj/machinery/botany/editor/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - + data["activity"] = active if(seed) diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm index 41a921cd33..def8741909 100644 --- a/code/modules/instruments/items.dm +++ b/code/modules/instruments/items.dm @@ -9,7 +9,7 @@ slot_l_hand_str = 'icons/mob/items/lefthand_instruments.dmi', slot_r_hand_str = 'icons/mob/items/righthand_instruments.dmi', ) - + /// Our song datum. var/datum/song/handheld/song /// Our allowed list of instrument ids. This is nulled on initialize. @@ -54,6 +54,12 @@ desc = "A golden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" icon_state = "golden_violin" +/obj/item/instrument/xylophone + name = "xylophone" + desc = "A percussion instrument consisting of a series of wooden bars graduated in length." + icon_state = "xylophone" + allowed_instrument_ids = "xylophone" + /obj/item/instrument/piano_synth name = "synthesizer" desc = "An advanced electronic synthesizer that can be used as various instruments." diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 4b9f5a9152..332b7bb580 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -414,7 +414,7 @@ if(loc) for(var/mob/O in hearers(1, get_turf(src))) - O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) + O.show_message("\icon[src][bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) /obj/item/integrated_circuit/input/EPv2 name = "\improper EPv2 circuit" diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 9e218d62c8..9a193f9bf7 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -43,7 +43,7 @@ var/list/nearby_things = range(0, get_turf(src)) for(var/mob/M in nearby_things) var/obj/O = assembly ? assembly : src - to_chat(M, "[bicon(O)] [stuff_to_display]") + to_chat(M, "\icon[O][bicon(O)] [stuff_to_display]") /obj/item/integrated_circuit/output/screen/large name = "large screen" @@ -56,7 +56,7 @@ /obj/item/integrated_circuit/output/screen/large/do_work() ..() var/obj/O = assembly ? loc : assembly - O.visible_message("[bicon(O)] [stuff_to_display]") + O.visible_message("\icon[O][bicon(O)] [stuff_to_display]") /obj/item/integrated_circuit/output/light name = "light" @@ -134,7 +134,7 @@ text = get_pin_data(IC_INPUT, 1) if(!isnull(text)) var/obj/O = assembly ? loc : assembly - audible_message("[bicon(O)] \The [O.name] states, \"[text]\"", runemessage = text) + audible_message("\icon[O][bicon(O)] \The [O.name] states, \"[text]\"", runemessage = text) /obj/item/integrated_circuit/output/text_to_speech/advanced name = "advanced text-to-speech circuit" diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index f059aa28c6..168fd67938 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -109,7 +109,7 @@ var/list/name_to_material var/datum/material/key = arguments[1] if(istype(key)) return key // we want to convert anything we're given to a material - + if(istext(key)) // text ID . = name_to_material[key] if(!.) @@ -363,7 +363,7 @@ var/list/name_to_material ) if(icon_base == "solid") // few icons recipes += new /datum/stack_recipe("[display_name] wall girders (eris)", /obj/structure/girder/eris, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new /datum/stack_recipe_list("low walls",list( + recipes += new /datum/stack_recipe_list("low walls",list( new /datum/stack_recipe("low wall (bay style)", /obj/structure/low_wall/bay, 3, time = 20, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", recycle_material = "[name]"), new /datum/stack_recipe("low wall (eris style)", /obj/structure/low_wall/eris, 3, time = 20, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", recycle_material = "[name]") )) diff --git a/code/modules/materials/materials/metals/steel.dm b/code/modules/materials/materials/metals/steel.dm index ca63d24b9c..cc6a58792a 100644 --- a/code/modules/materials/materials/metals/steel.dm +++ b/code/modules/materials/materials/metals/steel.dm @@ -69,7 +69,7 @@ new /datum/stack_recipe("regular floor tile", /obj/item/stack/tile/floor, 1, 4, 20, recycle_material = "[name]"), new /datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]"), new /datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60, recycle_material = "[name]"), - new /datum/stack_recipe("frame", /obj/item/frame, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("frame parts", /obj/item/frame, 5, time = 25, on_floor = 1, recycle_material = "[name]"), new /datum/stack_recipe("mirror frame", /obj/item/frame/mirror, 1, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), new /datum/stack_recipe("fire extinguisher cabinet frame", /obj/item/frame/extinguisher_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), new /datum/stack_recipe("railing", /obj/structure/railing, 2, time = 50, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index f3a315827d..d6e72e4e33 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -215,3 +215,10 @@ to_chat(user, "Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.") return ..() + +/obj/structure/closet/crate/secure/loot/damage(var/damage) + if(contents.len) + visible_message("[src] makes a grinding noise as its contents are destroyed by the deca-lock safety!") + for(var/obj/O in src.contents) + qdel(O) + ..() \ No newline at end of file diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm index 9d6eea4607..b1427946c9 100644 --- a/code/modules/mining/drilling/scanner.dm +++ b/code/modules/mining/drilling/scanner.dm @@ -51,7 +51,7 @@ if(ore_type) metals[ore_type] += T.resources[metal] - var/message = "[bicon(src)] The scanner beeps and displays a readout." + var/message = "\icon[src][bicon(src)] The scanner beeps and displays a readout." for(var/ore_type in metals) var/result = "no sign" diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index a7728a0624..fd5f6b0c51 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -107,11 +107,13 @@ var/list/holder_mob_icon_cache = list() to_chat(held, "You extricate yourself from [holster].") forceMove(get_turf(src)) held.reset_view(null) - else if(isitem(loc)) + var/obj/item/I = loc to_chat(held, "You struggle free of [loc].") forceMove(get_turf(src)) held.reset_view(null) + if(istype(I)) + I.on_holder_escape(src) //Mob specific holders. /obj/item/weapon/holder/diona diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 6d5841659b..91c4658afd 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -96,6 +96,15 @@ var/list/_human_default_emotes = list( /decl/emote/visible/floorspin, /decl/emote/visible/flip, //VOREStation Add + /decl/emote/audible/bug_hiss, + /decl/emote/audible/bug_buzz, + /decl/emote/audible/bug_chitter, + /decl/emote/audible/hiss, + /decl/emote/audible/chirp, + /decl/emote/audible/warble, + /decl/emote/audible/vox_shriek, + /decl/emote/audible/purr, + /decl/emote/audible/purrlong, /decl/emote/audible/awoo, /decl/emote/audible/awoo2, /decl/emote/audible/belch, @@ -146,6 +155,9 @@ var/list/_human_default_emotes = list( /decl/emote/audible/coyawoo5, /decl/emote/audible/fennecscream, /decl/emote/audible/zoom, + /decl/emote/audible/mothscream, + /decl/emote/audible/mothchitter, + /decl/emote/audible/mothlaugh, //VOREStation Add End //YW ADDITION: Add Start /decl/emote/audible/chirp, @@ -285,7 +297,16 @@ var/list/_simple_mob_default_emotes = list( /decl/emote/audible/gyoh, /decl/emote/audible/rumble, /decl/emote/audible/fennecscream, - /decl/emote/audible/zoom + /decl/emote/audible/zoom, + /decl/emote/audible/bug_hiss, + /decl/emote/audible/bug_buzz, + /decl/emote/audible/bug_chitter, + /decl/emote/audible/hiss, + /decl/emote/audible/chirp, + /decl/emote/audible/warble, + /decl/emote/audible/vox_shriek, + /decl/emote/audible/purr, + /decl/emote/audible/purrlong ) //VOREStation Add End diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index b7b494ae65..b5202560c8 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -101,7 +101,7 @@ else if(species.name != "Human") name_ender = ", \a [species.get_examine_name()]![species.get_additional_examine_text(src)]" - var/list/msg = list("*---------*","This is [bicon(src)] [src.name][name_ender]") + var/list/msg = list("*---------*","This is \icon[src.examine_icon()][bicon(src)] [src.name][name_ender]") //uniform if(w_uniform && !(skip_gear & EXAMINE_SKIPJUMPSUIT) && w_uniform.show_examine) @@ -136,16 +136,16 @@ tie_msg += " Near the waist it has [english_list(pocket_msg)]." if(w_uniform.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]" + msg += "[T.He] [T.is] wearing \icon[w_uniform][bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]" else - msg += "[T.He] [T.is] wearing [bicon(w_uniform)] \a [w_uniform].[tie_msg]" + msg += "[T.He] [T.is] wearing \icon[w_uniform][bicon(w_uniform)] \a [w_uniform].[tie_msg]" //head if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine) if(head.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!" + msg += "[T.He] [T.is] wearing \icon[head][bicon(head)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!" else - msg += "[T.He] [T.is] wearing [bicon(head)] \a [head] on [T.his] head." + msg += "[T.He] [T.is] wearing \icon[head][bicon(head)] \a [head] on [T.his] head." //suit/armour if(wear_suit) @@ -156,71 +156,71 @@ tie_msg += " Attached to it is [english_list(U.accessories)]." if(wear_suit.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!" + msg += "[T.He] [T.is] wearing \icon[wear_suit][bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!" else - msg += "[T.He] [T.is] wearing [bicon(wear_suit)] \a [wear_suit].[tie_msg]" + msg += "[T.He] [T.is] wearing \icon[wear_suit][bicon(wear_suit)] \a [wear_suit].[tie_msg]" //suit/armour storage if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine) if(s_store.blood_DNA) - msg += "[T.He] [T.is] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!" + msg += "[T.He] [T.is] carrying \icon[s_store][bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!" else - msg += "[T.He] [T.is] carrying [bicon(s_store)] \a [s_store] on [T.his] [wear_suit.name]." + msg += "[T.He] [T.is] carrying \icon[s_store][bicon(s_store)] \a [s_store] on [T.his] [wear_suit.name]." //back if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine) if(back.blood_DNA) - msg += "[T.He] [T.has] [bicon(back)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back." + msg += "[T.He] [T.has] \icon[back][bicon(back)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back." else - msg += "[T.He] [T.has] [bicon(back)] \a [back] on [T.his] back." + msg += "[T.He] [T.has] \icon[back][bicon(back)] \a [back] on [T.his] back." //left hand if(l_hand && l_hand.show_examine) if(l_hand.blood_DNA) - msg += "[T.He] [T.is] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!" + msg += "[T.He] [T.is] holding \icon[l_hand][bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!" else - msg += "[T.He] [T.is] holding [bicon(l_hand)] \a [l_hand] in [T.his] left hand." + msg += "[T.He] [T.is] holding \icon[l_hand][bicon(l_hand)] \a [l_hand] in [T.his] left hand." //right hand if(r_hand && r_hand.show_examine) if(r_hand.blood_DNA) - msg += "[T.He] [T.is] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!" + msg += "[T.He] [T.is] holding \icon[r_hand][bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!" else - msg += "[T.He] [T.is] holding [bicon(r_hand)] \a [r_hand] in [T.his] right hand." + msg += "[T.He] [T.is] holding \icon[r_hand][bicon(r_hand)] \a [r_hand] in [T.his] right hand." //gloves if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine) if(gloves.blood_DNA) - msg += "[T.He] [T.has] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!" + msg += "[T.He] [T.has] \icon[gloves][bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!" else - msg += "[T.He] [T.has] [bicon(gloves)] \a [gloves] on [T.his] hands." + msg += "[T.He] [T.has] \icon[gloves][bicon(gloves)] \a [gloves] on [T.his] hands." else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) msg += "[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!" //handcuffed? if(handcuffed && handcuffed.show_examine) if(istype(handcuffed, /obj/item/weapon/handcuffs/cable)) - msg += "[T.He] [T.is] [bicon(handcuffed)] restrained with cable!" + msg += "[T.He] [T.is] \icon[handcuffed][bicon(handcuffed)] restrained with cable!" else - msg += "[T.He] [T.is] [bicon(handcuffed)] handcuffed!" + msg += "[T.He] [T.is] \icon[handcuffed][bicon(handcuffed)] handcuffed!" //buckled if(buckled) - msg += "[T.He] [T.is] [bicon(buckled)] buckled to [buckled]!" + msg += "[T.He] [T.is] \icon[buckled][bicon(buckled)] buckled to [buckled]!" //belt if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine) if(belt.blood_DNA) - msg += "[T.He] [T.has] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!" + msg += "[T.He] [T.has] \icon[belt][bicon(belt)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!" else - msg += "[T.He] [T.has] [bicon(belt)] \a [belt] about [T.his] waist." + msg += "[T.He] [T.has] \icon[belt][bicon(belt)] \a [belt] about [T.his] waist." //shoes if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine) if(shoes.blood_DNA) - msg += "[T.He] [T.is] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!" + msg += "[T.He] [T.is] wearing \icon[shoes][bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!" else - msg += "[T.He] [T.is] wearing [bicon(shoes)] \a [shoes] on [T.his] feet." + msg += "[T.He] [T.is] wearing \icon[shoes][bicon(shoes)] \a [shoes] on [T.his] feet." else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) msg += "[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!" @@ -231,24 +231,24 @@ descriptor = "in [T.his] mouth" if(wear_mask.blood_DNA) - msg += "[T.He] [T.has] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!" + msg += "[T.He] [T.has] \icon[wear_mask][bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!" else - msg += "[T.He] [T.has] [bicon(wear_mask)] \a [wear_mask] [descriptor]." + msg += "[T.He] [T.has] \icon[wear_mask][bicon(wear_mask)] \a [wear_mask] [descriptor]." //eyes if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine) if(glasses.blood_DNA) - msg += "[T.He] [T.has] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!" + msg += "[T.He] [T.has] \icon[glasses][bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!" else - msg += "[T.He] [T.has] [bicon(glasses)] \a [glasses] covering [T.his] eyes." + msg += "[T.He] [T.has] \icon[glasses][bicon(glasses)] \a [glasses] covering [T.his] eyes." //left ear if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine) - msg += "[T.He] [T.has] [bicon(l_ear)] \a [l_ear] on [T.his] left ear." + msg += "[T.He] [T.has] \icon[l_ear][bicon(l_ear)] \a [l_ear] on [T.his] left ear." //right ear if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine) - msg += "[T.He] [T.has] [bicon(r_ear)] \a [r_ear] on [T.his] right ear." + msg += "[T.He] [T.has] \icon[r_ear][bicon(r_ear)] \a [r_ear] on [T.his] right ear." //ID if(wear_id && wear_id.show_examine) @@ -260,9 +260,9 @@ var/obj/item/weapon/card/id/idcard = wear_id id = idcard.registered_name if(id && (id != real_name) && (get_dist(src, usr) <= 1) && prob(10)) - msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id] yet something doesn't seem right..." + msg += "[T.He] [T.is] wearing \icon[wear_id][bicon(wear_id)] \a [wear_id] yet something doesn't seem right..." else*/ - msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id]." + msg += "[T.He] [T.is] wearing \icon[wear_id][bicon(wear_id)] \a [wear_id]." //Jitters if(is_jittery) diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index 8611142906..1deab398f0 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -83,13 +83,13 @@ /mob/living/carbon/human/proc/examine_pickup_size(mob/living/H) var/message = "" - if(istype(H) && (H.get_effective_size() - src.get_effective_size()) >= 0.50) + if(istype(H) && (H.get_effective_size(FALSE) - src.get_effective_size(TRUE)) >= 0.50) message = "They are small enough that you could easily pick them up!" return message /mob/living/carbon/human/proc/examine_step_size(mob/living/H) var/message = "" - if(istype(H) && (H.get_effective_size() - src.get_effective_size()) >= 0.75) + if(istype(H) && (H.get_effective_size(FALSE) - src.get_effective_size(TRUE)) >= 0.75) message = "They are small enough that you could easily trample them!" return message diff --git a/code/modules/mob/living/carbon/human/human_vr.dm b/code/modules/mob/living/carbon/human/human_vr.dm index a60521b5ab..2c621fa3f8 100644 --- a/code/modules/mob/living/carbon/human/human_vr.dm +++ b/code/modules/mob/living/carbon/human/human_vr.dm @@ -11,4 +11,7 @@ /mob/living/carbon/human/Destroy() alt_farmanimals -= src - . = ..() \ No newline at end of file + . = ..() + +/mob/living/carbon/human/get_digestion_nutrition_modifier() + return species.digestion_nutrition_modifier \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index e8d9e4b059..2e71f7d546 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -27,6 +27,10 @@ var/list/copy_vars = list("base_species", "icobase", "deform", "tail", "tail_animation", "icobase_tail", "color_mult", "primitive_form", "appearance_flags", "flesh_color", "base_color", "blood_mask", "damage_mask", "damage_overlays", "move_trail", "has_floating_eyes") var/trait_points = 0 + var/micro_size_mod = 0 // How different is our size for interactions that involve us being small? + var/macro_size_mod = 0 // How different is our size for interactions that involve us being big? + var/digestion_nutrition_modifier = 1 + /datum/species/proc/give_numbing_bite() //Holy SHIT this is hacky, but it works. Updating a mob's attacks mid game is insane. unarmed_attacks = list() diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index fd10b3140a..12aade985a 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -607,3 +607,45 @@ YW CHANGE STOP*/ /datum/trait/neutral/vertical_nom/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.verbs |= /mob/living/proc/vertical_nom + +/datum/trait/neutral/micro_size_down + name = "Light Frame" + desc = "You are considered smaller than you are for micro interactions." + cost = 0 + custom_only = FALSE + var_changes = list("micro_size_mod" = -0.15) + +/datum/trait/neutral/micro_size_up + name = "Heavy Frame" + desc = "You are considered bigger than you are for micro interactions." + cost = 0 + custom_only = FALSE + var_changes = list("micro_size_mod" = 0.15) + +/datum/trait/neutral/digestion_value_up + name = "Highly Filling" + desc = "You provide notably more nutrition to anyone who makes a meal of you." + cost = 0 + custom_only = FALSE + var_changes = list("digestion_nutrition_modifier" = 2) + +/datum/trait/neutral/digestion_value_up_plus + name = "Extremely Filling" + desc = "You provide a lot more nutrition to anyone who makes a meal of you." + cost = 0 + custom_only = FALSE + var_changes = list("digestion_nutrition_modifier" = 3) + +/datum/trait/neutral/digestion_value_down + name = "Slightly Filling" + desc = "You provide notably less nutrition to anyone who makes a meal of you." + cost = 0 + custom_only = FALSE + var_changes = list("digestion_nutrition_modifier" = 0.5) + +/datum/trait/neutral/digestion_value_down_plus + name = "Barely Filling" + desc = "You provide a lot less nutrition to anyone who makes a meal of you." + cost = 0 + custom_only = FALSE + var_changes = list("digestion_nutrition_modifier" = 0.25) diff --git a/code/modules/mob/living/living_vr.dm b/code/modules/mob/living/living_vr.dm index 9689953ebb..ad35515ef1 100644 --- a/code/modules/mob/living/living_vr.dm +++ b/code/modules/mob/living/living_vr.dm @@ -33,4 +33,76 @@ to_chat(usr, "OOC notes updated.") log_admin("[key_name(usr)] updated their OOC notes mid-round.") +/mob/living/verb/set_voice_freq() + set name = "Set Voice Frequency" + set desc = "Sets your voice frequency to be higher or lower pitched!" + set category = "OOC" + var/list/preset_voice_freqs = list("high" = MAX_VOICE_FREQ, "middle-high" = 56250, "middle" = 425000, "middle-low"= 28750, "low" = MIN_VOICE_FREQ, "custom" = 1, "random" = 0) + var/choice = tgui_input_list(src, "What would you like to set your voice frequency to?", "Voice Frequency", preset_voice_freqs) + if(!choice) + return + choice = preset_voice_freqs[choice] + if(choice == 0) + voice_freq = choice + return + else if(choice == 1) + choice = tgui_input_number(src, "Choose your character's voice frequency, ranging from [MIN_VOICE_FREQ] to [MAX_VOICE_FREQ]", "Custom Voice Frequency", null, MAX_VOICE_FREQ, MIN_VOICE_FREQ, round_value = TRUE) + else if(choice > MAX_VOICE_FREQ) + choice = MAX_VOICE_FREQ + else if(choice < MIN_VOICE_FREQ) + choice = MIN_VOICE_FREQ + voice_freq = choice + +/mob/living/verb/set_voice_type() + set name = "Set Voice Type" + set desc = "Sets your voice style!" + set category = "OOC" + + var/list/possible_voice_types = list( + "beep-boop", + "goon speak 1", + "goon speak 2", + "goon speak 3", + "goon speak 4", + "goon speak blub", + "goon speak bottalk", + "goon speak buwoo", + "goon speak cow", + "goon speak lizard", + "goon speak pug", + "goon speak pugg", + "goon speak roach", + "goon speak skelly") + var/choice = tgui_input_list(usr, "Which set of sounds would you like to use for your character's speech sounds?", "Voice Sounds", possible_voice_types) + if(!choice) + voice_sounds_list = talk_sound + switch(choice) + if("beep-boop") + voice_sounds_list = talk_sound + if("goon speak 1") + voice_sounds_list = goon_speak_one_sound + if("goon speak 2") + voice_sounds_list = goon_speak_two_sound + if("goon speak 3") + voice_sounds_list = goon_speak_three_sound + if("goon speak 4") + voice_sounds_list = goon_speak_four_sound + if("goon speak blub") + voice_sounds_list = goon_speak_blub_sound + if("goon speak bottalk") + voice_sounds_list = goon_speak_bottalk_sound + if("goon speak buwoo") + voice_sounds_list = goon_speak_buwoo_sound + if("goon speak cow") + voice_sounds_list = goon_speak_cow_sound + if("goon speak lizard") + voice_sounds_list = goon_speak_lizard_sound + if("goon speak pug") + voice_sounds_list = goon_speak_pug_sound + if("goon speak pugg") + voice_sounds_list = goon_speak_pugg_sound + if("goon speak roach") + voice_sounds_list = goon_speak_roach_sound + if("goon speak skelly") + voice_sounds_list = goon_speak_skelly_sound diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index 5d2836779b..d6aec7d322 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -13,16 +13,52 @@ to_chat(src,"Mob AI disabled while you are controlling the mob.") AddComponent(/datum/component/character_setup) - + // Vore stuff verbs |= /mob/living/proc/escapeOOC verbs |= /mob/living/proc/lick verbs |= /mob/living/proc/smell verbs |= /mob/living/proc/switch_scaling - + if(!no_vore) verbs |= /mob/living/proc/vorebelly_printout if(!vorePanel) AddComponent(/datum/component/vore_panel) + //VOREStation Add Start + if(!voice_sounds_list.len || !voice_sounds_list) + if(client.prefs.voice_sound) + var/prefsound = client.prefs.voice_sound + switch(prefsound) + if("beep-boop") + voice_sounds_list = talk_sound + if("goon speak 1") + voice_sounds_list = goon_speak_one_sound + if("goon speak 2") + voice_sounds_list = goon_speak_two_sound + if("goon speak 3") + voice_sounds_list = goon_speak_three_sound + if("goon speak 4") + voice_sounds_list = goon_speak_four_sound + if("goon speak blub") + voice_sounds_list = goon_speak_blub_sound + if("goon speak bottalk") + voice_sounds_list = goon_speak_bottalk_sound + if("goon speak buwoo") + voice_sounds_list = goon_speak_buwoo_sound + if("goon speak cow") + voice_sounds_list = goon_speak_cow_sound + if("goon speak lizard") + voice_sounds_list = goon_speak_lizard_sound + if("goon speak pug") + voice_sounds_list = goon_speak_pug_sound + if("goon speak pugg") + voice_sounds_list = goon_speak_pugg_sound + if("goon speak roach") + voice_sounds_list = goon_speak_roach_sound + if("goon speak skelly") + voice_sounds_list = goon_speak_skelly_sound + else + voice_sounds_list = talk_sound + //VOREStation Add End return . diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 7c5af248ff..8ec168f39d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -18,6 +18,7 @@ var/list/department_radio_keys = list( ":p" = "AI Private", ".p" = "AI Private", ":y" = "Explorer", ".y" = "Explorer", ":a" = "Talon", ".a" = "Talon", //VOREStation Add, + ":g" = "Casino", ".g" = "Casino", ":R" = "right ear", ".R" = "right ear", ":L" = "left ear", ".L" = "left ear", @@ -37,6 +38,7 @@ var/list/department_radio_keys = list( ":P" = "AI Private", ".P" = "AI Private", ":Y" = "Explorer", ".Y" = "Explorer", ":A" = "Talon", ".A" = "Talon", //VOREStation Add, + ":G" = "Casino", ".G" = "Casino", // Cyrillic characters on the same keys on the Russian QWERTY (phonetic) layout ":к" = "right ear", ".к" = "right ear", @@ -57,7 +59,8 @@ var/list/department_radio_keys = list( ":м" = "Service", ".м" = "Service", ":з" = "AI Private", ".з" = "AI Private", ":н" = "Explorer", ".н" = "Explorer", - ":ф" = "Talon", ".ф" = "Talon" //VOREStation Add + ":ф" = "Talon", ".ф" = "Talon", //VOREStation Add + ":п" = "Casino", ".п" = "Casino", ) @@ -259,6 +262,9 @@ var/list/channel_to_radio_key = new //Default range and italics, may be overridden past here var/message_range = world.view var/italics = 0 + var/do_sound = TRUE + if(!voice_sounds_list || !voice_sounds_list.len) + do_sound = FALSE //Speaking into radios if(used_radios.len) @@ -302,6 +308,7 @@ var/list/channel_to_radio_key = new for(var/datum/multilingual_say_piece/S in message_pieces) if((S.speaking.flags & NONVERBAL) || (S.speaking.flags & INAUDIBLE)) custom_emote(1, "[pick(S.speaking.signlang_verb)].") + do_sound = FALSE //These will contain the main receivers of the message var/list/listening = list() @@ -398,12 +405,20 @@ var/list/channel_to_radio_key = new C.images -= I qdel(I) + var/ourfreq = null + if(voice_freq > 0 ) + ourfreq = voice_freq //Log the message to file if(message_mode) message = "([message_mode == "headset" ? "Common" : capitalize(message_mode)]) [message]" //Adds radio keys used if available if(whispering) + if(do_sound && message) + playsound(T, pick(voice_sounds_list), 25, TRUE, extrarange = -6, falloff = 1 , is_global = TRUE, frequency = ourfreq, ignore_walls = FALSE, preference = /datum/client_preference/whisper_sounds) + log_whisper(message, src) else + if(do_sound && message) + playsound(T, pick(voice_sounds_list), 75, TRUE, falloff = 1 , is_global = TRUE, frequency = ourfreq, ignore_walls = FALSE, preference = /datum/client_preference/say_sounds) log_say(message, src) return 1 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 039c64e663..94595c9516 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -145,6 +145,7 @@ // Vorestation Edit: Meta Info for pAI if (client.prefs) ooc_notes = client.prefs.metadata + src << sound('sound/effects/pai_login.ogg', volume = 75) //VOREStation Add // this function shows the information about being silenced as a pAI in the Status panel /mob/living/silicon/pai/proc/show_silenced() diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index d8594fd5fc..53fa801dd6 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -140,7 +140,7 @@ /datum/pai_software/med_records/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - + var/list/records = list() for(var/datum/data/record/general in sortRecord(data_core.general)) var/list/record = list() @@ -196,7 +196,7 @@ /datum/pai_software/sec_records/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - + var/list/records = list() for(var/datum/data/record/general in sortRecord(data_core.general)) var/list/record = list() @@ -486,7 +486,7 @@ /datum/pai_software/signaller/tgui_data(mob/living/silicon/pai/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - + var/obj/item/radio/integrated/signal/R = user.sradio data["frequency"] = R.frequency @@ -509,7 +509,7 @@ spawn(0) R.send_signal("ACTIVATE") for(var/mob/O in hearers(1, R.loc)) - O.show_message("[bicon(R)] *beep* *beep*", 3, "*beep* *beep*", 2) + O.show_message("\icon[R][bicon(R)] *beep* *beep*", 3, "*beep* *beep*", 2) if("freq") var/frequency = unformat_frequency(params["freq"]) frequency = sanitize_frequency(frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm index 7b8b777972..266174b7c3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm @@ -79,7 +79,7 @@ if( ishuman(AM) ) if(!stat) var/mob/M = AM - M.visible_message("[bicon(src)] Squeek!") + M.visible_message("\icon[src][bicon(src)] Squeek!") playsound(src, 'sound/effects/mouse_squeak.ogg', 35, 1) ..() diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 0e9e805dc9..2752292ee2 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -83,7 +83,7 @@ var/new_name = sanitizeSafe(tgui_input_text(src, "Who would you like to be now?", "Communicator", src.client.prefs.real_name, MAX_NAME_LEN), MAX_NAME_LEN) if(new_name) if(comm) - comm.visible_message("[bicon(comm)] [src.name] has left, and now you see [new_name].") + comm.visible_message("\icon[comm][bicon(comm)] [src.name] has left, and now you see [new_name].") //Do a bit of logging in-case anyone tries to impersonate other characters for whatever reason. var/msg = "[src.client.key] ([src]) has changed their communicator identity's name to [new_name]." message_admins(msg) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index f10ce85b86..d8ed1c311e 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -67,6 +67,8 @@ else spawn(0) M.show_message(message, 2) + if(M.is_preference_enabled(/datum/client_preference/subtle_sounds)) + M << sound('sound/talksounds/subtle_sound.ogg', volume = 50) for(var/obj/O as anything in vis_objs) spawn(0) @@ -145,10 +147,14 @@ else pb = db.pred_body to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain + if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds)) + pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE else if(M.absorbed && isbelly(M.loc)) pb = M.loc.loc to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed + if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds)) + pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE if(pb) //We are prey, let's do the prey thing. @@ -157,11 +163,15 @@ if(istype(I, /mob/living/dominated_brain) && I != M) var/mob/living/dominated_brain/db = I to_chat(db, "The captive mind of \the [M] thinks, \"[message]\"") //To any dominated brains in the pred + if(db.is_preference_enabled(/datum/client_preference/subtle_sounds)) + db << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE for(var/B in pb.vore_organs) for(var/mob/living/L in B) if(L.absorbed && L != M && L.ckey) to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people in the pred + if(L.is_preference_enabled(/datum/client_preference/subtle_sounds)) + L << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE //Let's also check and see if there's anyone inside of us to send the message to. @@ -169,18 +179,26 @@ if(istype(I, /mob/living/dominated_brain)) var/mob/living/dominated_brain/db = I to_chat(db, "\The [M] thinks, \"[message]\"") //To any dominated brains inside us + if(db.is_preference_enabled(/datum/client_preference/subtle_sounds)) + db << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE for(var/B in M.vore_organs) for(var/mob/living/L in B) if(L.absorbed) to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people inside us + if(L.is_preference_enabled(/datum/client_preference/subtle_sounds)) + L << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE if(f) //We found someone to send the message to if(pb) to_chat(M, "You think \"[message]\"") //To us if we are the prey + if(M.is_preference_enabled(/datum/client_preference/subtle_sounds)) + M << sound('sound/talksounds/subtle_sound.ogg', volume = 50) else to_chat(M, "You think \"[message]\"") //To us if we are the pred + if(M.is_preference_enabled(/datum/client_preference/subtle_sounds)) + M << sound('sound/talksounds/subtle_sound.ogg', volume = 50) for (var/mob/G in player_list) if (istype(G, /mob/new_player)) continue @@ -225,11 +243,15 @@ else pb = db.pred_body to_chat(pb, "\The [M] [message]") //To our pred if dominated brain + if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds)) + pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE else if(M.absorbed && isbelly(M.loc)) pb = M.loc.loc to_chat(pb, "\The [M] [message]") //To our pred if absorbed + if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds)) + pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE if(pb) //We are prey, let's do the prey thing. @@ -238,11 +260,15 @@ if(istype(I, /mob/living/dominated_brain) && I != M) var/mob/living/dominated_brain/db = I to_chat(db, "\The [M] [message]") //To any dominated brains in the pred + if(db.is_preference_enabled(/datum/client_preference/subtle_sounds)) + db << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE for(var/B in pb.vore_organs) for(var/mob/living/L in B) if(L.absorbed && L != M && L.ckey) to_chat(L, "\The [M] [message]") //To any absorbed people in the pred + if(L.is_preference_enabled(/datum/client_preference/subtle_sounds)) + L << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE //Let's also check and see if there's anyone inside of us to send the message to. @@ -250,18 +276,26 @@ if(istype(I, /mob/living/dominated_brain)) var/mob/living/dominated_brain/db = I to_chat(db, "\The [M] [message]") //To any dominated brains inside us + if(db.is_preference_enabled(/datum/client_preference/subtle_sounds)) + db << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE for(var/B in M.vore_organs) for(var/mob/living/L in B) if(L.absorbed) to_chat(L, "\The [M] [message]") //To any absorbed people inside us + if(L.is_preference_enabled(/datum/client_preference/subtle_sounds)) + L << sound('sound/talksounds/subtle_sound.ogg', volume = 50) f = TRUE if(f) //We found someone to send the message to if(pb) to_chat(M, "\The [M] [message]") //To us if we are the prey + if(M.is_preference_enabled(/datum/client_preference/subtle_sounds)) + M << sound('sound/talksounds/subtle_sound.ogg', volume = 50) else to_chat(M, "\The [M] [message]") //To us if we are the pred + if(M.is_preference_enabled(/datum/client_preference/subtle_sounds)) + M << sound('sound/talksounds/subtle_sound.ogg', volume = 50) for (var/mob/G in player_list) if (istype(G, /mob/new_player)) continue diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index d334b91c21..1ba7bb739f 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -383,7 +383,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable last_notification = message // TGUI Hook - to_chat(human,"\[[bicon(src.big_icon)]NIF\] displays, \"[message]\"") + to_chat(human,"\[\icon[src.big_icon][bicon(src.big_icon)]NIF\] displays, \"[message]\"") if(prob(1)) human.visible_message("\The [human] [pick(look_messages)].") if(alert) human << bad_sound diff --git a/code/modules/nifsoft/nifsoft.dm b/code/modules/nifsoft/nifsoft.dm index f4f3135b8e..a684c696d7 100644 --- a/code/modules/nifsoft/nifsoft.dm +++ b/code/modules/nifsoft/nifsoft.dm @@ -377,3 +377,32 @@ ..() for(var/i = 0 to 7) new /obj/item/weapon/disk/nifsoft/mining(src) + +// Pilot Disk // +/obj/item/weapon/disk/nifsoft/pilot + name = "NIFSoft Uploader - Pilot" + desc = "Contains free NIFSofts useful for pilot members.\n\ + It has a small label: \n\ + \"Portable NIFSoft Installation Media. \n\ + Align ocular port with eye socket and depress red plunger.\"" + + icon_state = "pilot" + stored_organic = /datum/nifsoft/package/pilot + stored_synthetic = /datum/nifsoft/package/pilot_synth + +/datum/nifsoft/package/pilot + software = list(/datum/nifsoft/spare_breath) + +/datum/nifsoft/package/pilot_synth + software = list(/datum/nifsoft/pressure,/datum/nifsoft/heatsinks) + +/obj/item/weapon/storage/box/nifsofts_pilot + name = "pilot nifsoft uploaders" + desc = "A box of free nifsofts for pilot employees." + icon = 'icons/obj/boxes.dmi' + icon_state = "nifsoft_kit_pilot" + +/obj/item/weapon/storage/box/nifsofts_pilot/New() + ..() + for(var/i = 0 to 7) + new /obj/item/weapon/disk/nifsoft/pilot(src) \ No newline at end of file diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index a8f66619a6..04766a51e4 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -72,11 +72,11 @@ /datum/nifsoft/soulcatcher/proc/notify_into(var/message) var/sound = nif.good_sound - to_chat(nif.human,"\[[bicon(nif.big_icon)]NIF\] Soulcatcher displays, \"[message]\"") + to_chat(nif.human,"\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] Soulcatcher displays, \"[message]\"") nif.human << sound for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) - to_chat(CS,"\[[bicon(nif.big_icon)]NIF\] Soulcatcher displays, \"[message]\"") + to_chat(CS,"\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] Soulcatcher displays, \"[message]\"") CS << sound /datum/nifsoft/soulcatcher/proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj) @@ -88,9 +88,9 @@ //Not AR Projecting else - to_chat(nif.human,"\[[bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") + to_chat(nif.human,"\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) - to_chat(CS,"\[[bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") + to_chat(CS,"\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") log_nsay(message,nif.human.real_name,sender) @@ -103,9 +103,9 @@ //Not AR Projecting else - to_chat(nif.human,"\[[bicon(nif.big_icon)]NIF\] [sender_name] [message]") + to_chat(nif.human,"\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] [message]") for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) - to_chat(CS,"\[[bicon(nif.big_icon)]NIF\] [sender_name] [message]") + to_chat(CS,"\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] [message]") log_nme(message,nif.human.real_name,sender) diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm index 75a04fc589..47b602e184 100644 --- a/code/modules/nifsoft/software/14_commlink.dm +++ b/code/modules/nifsoft/software/14_commlink.dm @@ -81,7 +81,7 @@ var/message = combined["formatted"] var/name_used = M.GetVoice() var/rendered = null - rendered = "[bicon(icon_object)] [name_used] [message]" + rendered = "\icon[icon_object][bicon(icon_object)] [name_used] [message]" mob.show_message(rendered, 2) //Not supported by the internal one diff --git a/code/modules/pda/app.dm b/code/modules/pda/app.dm index 93245c2a85..c86f9e507d 100644 --- a/code/modules/pda/app.dm +++ b/code/modules/pda/app.dm @@ -34,7 +34,7 @@ L = get(pda, /mob/living/silicon) if(L) - to_chat(L, "[bicon(pda)] [message]") + to_chat(L, "\icon[pda][bicon(pda)] [message]") SStgui.update_user_uis(L, pda) // Update the receiving user's PDA UI so that they can see the new message if(!notify_silent) diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index 6aa833fd83..73e0944a65 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -117,7 +117,7 @@ create_message(usr, P) if(href_list["target"] in conversations) // Need to make sure the message went through, if not welp. active_conversation = href_list["target"] - + /datum/data/pda/app/messenger/proc/create_message(var/mob/living/U, var/obj/item/device/pda/P) var/t = tgui_input_text(U, "Please enter message", name, null) @@ -178,7 +178,7 @@ SStgui.update_user_uis(U, P) // Update the sending user's PDA UI so that they can see the new message log_pda("(PDA: [src.name]) sent \"[t]\" to [P.name]", usr) - to_chat(U, "[bicon(pda)] Sent message to [P.owner] ([P.ownjob]), \"[t]\"") + to_chat(U, "\icon[pda][bicon(pda)] Sent message to [P.owner] ([P.ownjob]), \"[t]\"") else to_chat(U, "ERROR: Messaging server is not responding.") @@ -224,7 +224,7 @@ /datum/data/pda/app/messenger/multicast /datum/data/pda/app/messenger/multicast/receive_message(list/data, ref) . = ..() - + var/obj/item/device/pda/multicaster/M = pda if(!istype(M)) return diff --git a/code/modules/pda/pda.dm b/code/modules/pda/pda.dm index c61624e40b..e0408d024c 100644 --- a/code/modules/pda/pda.dm +++ b/code/modules/pda/pda.dm @@ -99,7 +99,7 @@ var/global/list/obj/item/device/pda/PDAs = list() S = 'sound/machines/twobeep.ogg' playsound(loc, S, 50, 1) for(var/mob/O in hearers(3, loc)) - O.show_message(text("[bicon(src)] *[ttone]*")) + O.show_message(text("\icon[src][bicon(src)] *[ttone]*")) /obj/item/device/pda/proc/set_ringtone() var/t = tgui_input_text(usr, "Please enter new ringtone", name, ttone) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 494e4152fc..8af3bbae52 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -366,7 +366,7 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity) // VOREStation Edit Start var/area/A = get_area(T) - if(A.forbid_events) //No going to dorms + if(A.forbid_singulo) //No going to dorms return 0 // VOREStation Edit End diff --git a/code/modules/projectiles/guns/toy.dm b/code/modules/projectiles/guns/toy.dm index a4ef0dbf3b..22f8ef9f74 100644 --- a/code/modules/projectiles/guns/toy.dm +++ b/code/modules/projectiles/guns/toy.dm @@ -54,6 +54,19 @@ handle_casings = null recoil = null //it's a toy +/* + * Moist Nugget + */ +/obj/item/weapon/gun/projectile/shotgun/pump/toy/moistnugget + name = "\improper Donk-Soft mosin-nagant" + desc = "Donk-Soft foam mosin-nagant! It's Donk or Don't! Ages 8 and up." + description_fluff = "A special Donk-Soft rifle originally made to pair with a Soviet Soldier costume. It didn't catch on quite as well as other Donk-Soft products." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "moistnugget" + item_state = "moistnugget" + max_shells = 5 + matter = list(MAT_PLASTIC = 2500) + /* * Pistol */ diff --git a/code/modules/reagents/reactions/_reactions.dm b/code/modules/reagents/reactions/_reactions.dm index d63967d900..61c926153e 100644 --- a/code/modules/reagents/reactions/_reactions.dm +++ b/code/modules/reagents/reactions/_reactions.dm @@ -119,7 +119,7 @@ var/list/seen = viewers(4, T) for(var/mob/M in seen) if(M.client) - M.show_message("[bicon(container)] [mix_message]", 1) + M.show_message("\icon[container][bicon(container)] [mix_message]", 1) playsound(T, reaction_sound, 80, 1) //obtains any special data that will be provided to the reaction products diff --git a/code/modules/reagents/reagents/_reagents.dm b/code/modules/reagents/reagents/_reagents.dm index 2ad71a4de1..a2db264456 100644 --- a/code/modules/reagents/reagents/_reagents.dm +++ b/code/modules/reagents/reagents/_reagents.dm @@ -171,7 +171,7 @@ if(overdose && (volume > overdose * M?.species.chemOD_threshold) && (active_metab.metabolism_class != CHEM_TOUCH && !can_overdose_touch)) overdose(M, alien, removed) if(M.species.allergens & allergen_type) //uhoh, we can't handle this! - M.add_chemical_effect(CE_ALLERGEN,allergen_factor) + M.add_chemical_effect(CE_ALLERGEN, allergen_factor * removed) remove_self(removed) return diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index cceea53713..e77708d51a 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -84,7 +84,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() /obj/machinery/message_server/examine(mob/user, distance, infix, suffix) . = ..() - . += "It appears to be [active ? "online" : "offline"]." + . += "It appears to be [active ? "online" : "offline"]." /obj/machinery/message_server/proc/GenerateKey() //Feel free to move to Helpers. @@ -131,12 +131,12 @@ var/global/list/obj/machinery/message_server/message_servers = list() if(2) if(!Console.silent) playsound(Console, 'sound/machines/twobeep.ogg', 50, 1) - Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5, runemessage = "beep! beep!") + Console.audible_message(text("\icon[Console][bicon(Console)] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5, runemessage = "beep! beep!") Console.message_log += list(list("High Priority message from [sender]", "[authmsg]")) else if(!Console.silent) playsound(Console, 'sound/machines/twobeep.ogg', 50, 1) - Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'Message from [sender]'"),,4, runemessage = "beep beep") + Console.audible_message(text("\icon[Console][bicon(Console)] *The Requests Console beeps: 'Message from [sender]'"),,4, runemessage = "beep beep") Console.message_log += list(list("Message from [sender]", "[authmsg]")) Console.set_light(2) diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 53c2f129ea..d7d244bac4 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -259,14 +259,14 @@ return if (src.active) - user.visible_message("[bicon(src)] [user] deactivated the shield generator.", \ - "[bicon(src)] You deactivate the shield generator.", \ + user.visible_message("\icon[src][bicon(src)] [user] deactivated the shield generator.", \ + "\icon[src][bicon(src)] You deactivate the shield generator.", \ "You hear heavy droning fade out.") src.shields_down() else if(anchored) - user.visible_message("[bicon(src)] [user] activated the shield generator.", \ - "[bicon(src)] You activate the shield generator.", \ + user.visible_message("\icon[src][bicon(src)] [user] activated the shield generator.", \ + "\icon[src][bicon(src)] You activate the shield generator.", \ "You hear heavy droning.") src.shields_up() else diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index b1ba46b57a..2bd6818d25 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -49,7 +49,7 @@ else if(W.is_wrench()) src.anchored = !src.anchored playsound(src, W.usesound, 75, 1) - src.visible_message("[bicon(src)] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].") + src.visible_message("\icon[src][bicon(src)] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].") if(anchored) spawn(0) diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index bf40ac9052..2617d6c28f 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -69,7 +69,7 @@ else if(W.is_wrench()) src.anchored = !src.anchored playsound(src, W.usesound, 75, 1) - src.visible_message("[bicon(src)] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].") + src.visible_message("\icon[src][bicon(src)] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].") if(active) toggle() @@ -122,7 +122,7 @@ "failing" = (C.time_since_fail <= 2), ))) lockedData["capacitors"] = caps - + lockedData["active"] = active lockedData["failing"] = (time_since_fail <= 2) lockedData["radius"] = field_radius @@ -242,7 +242,7 @@ covered_turfs = null for(var/mob/M in view(5,src)) - to_chat(M, "[bicon(src)] You hear heavy droning start up.") + to_chat(M, "\icon[src][bicon(src)] You hear heavy droning start up.") for(var/obj/effect/energy_field/E in field) // Update the icons here to ensure all the shields have been made already. E.update_icon() else @@ -252,7 +252,7 @@ qdel(D) for(var/mob/M in view(5,src)) - to_chat(M, "[bicon(src)] You hear heavy droning fade out.") + to_chat(M, "\icon[src][bicon(src)] You hear heavy droning fade out.") /obj/machinery/shield_gen/update_icon() if(stat & BROKEN) diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm index 7520b41abb..0f5ef6a14b 100644 --- a/code/modules/vchat/vchat_client.dm +++ b/code/modules/vchat/vchat_client.dm @@ -316,7 +316,7 @@ GLOBAL_LIST_EMPTY(bicon_cache) // Cache of the tag results, not the icons if(use_class) class = "class='icon [A.icon_state] [custom_classes]'" - return "" + return "" //Checks if the message content is a valid to_chat message /proc/is_valid_tochat_message(message) diff --git a/code/modules/virus2/biohazard destroyer.dm b/code/modules/virus2/biohazard destroyer.dm index eabb3f8c62..fe5bb7c853 100644 --- a/code/modules/virus2/biohazard destroyer.dm +++ b/code/modules/virus2/biohazard destroyer.dm @@ -17,4 +17,4 @@ I.loc = src.loc for(var/mob/O in hearers(src, null)) - O.show_message("[bicon(src)] The [src.name] beeps.", 2) \ No newline at end of file + O.show_message("\icon[src][bicon(src)] The [src.name] beeps.", 2) \ No newline at end of file diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index 167a88296c..4fae221b5a 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -31,7 +31,7 @@ report("Antibodies detected: [antigens2string(C.antibodies)]", user) /obj/item/device/antibody_scanner/proc/report(var/text, mob/user as mob) - to_chat(user, "[bicon(src)] \The [src] beeps, \"[text]\"") + to_chat(user, "\icon[src][bicon(src)] \The [src] beeps, \"[text]\"") ///////////////VIRUS DISH/////////////// diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index ef09c033a3..8e3ec8a1fe 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -57,9 +57,9 @@ GLOBAL_LIST_INIT(digest_modes, list()) var/mob/living/silicon/robot/R = B.owner R.cell.charge += 25 * damage_gain if(offset) // If any different than default weight, multiply the % of offset. - B.owner.adjust_nutrition(offset*(4.5 * (damage_gain) / difference)) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved. + B.owner.adjust_nutrition(offset*(4.5 * (damage_gain) / difference)*L.get_digestion_nutrition_modifier()) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved. else - B.owner.adjust_nutrition(4.5 * (damage_gain) / difference) + B.owner.adjust_nutrition((4.5 * (damage_gain) / difference)*L.get_digestion_nutrition_modifier()) if(L.stat != oldstat) return list("to_update" = TRUE) diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 3435541f19..b26a7a4693 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -283,6 +283,8 @@ if(M.ckey) GLOB.prey_digested_roundstat++ + var/personal_nutrition_modifier = M.get_digestion_nutrition_modifier() + if((mode_flags & DM_FLAG_LEAVEREMAINS) && M.digest_leave_remains) handle_remains_leaving(M) digestion_death(M) @@ -290,9 +292,9 @@ owner.update_icons() if(isrobot(owner)) var/mob/living/silicon/robot/R = owner - R.cell.charge += (nutrition_percent / 100) * compensation * 25 + R.cell.charge += (nutrition_percent / 100) * compensation * 25 * personal_nutrition_modifier else - owner.adjust_nutrition((nutrition_percent / 100) * compensation * 4.5) + owner.adjust_nutrition((nutrition_percent / 100) * compensation * 4.5 * personal_nutrition_modifier) /obj/belly/proc/steal_nutrition(mob/living/L) if(L.nutrition >= 100) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index d1435cbfbf..0c1ac09b5e 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -31,6 +31,8 @@ var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr. var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time. var/fuzzy = 0 // Preference toggle for sharp/fuzzy icon. + var/voice_freq = 0 // Preference for character voice frequency + var/list/voice_sounds_list = list() // The sound list containing our voice sounds! var/permit_healbelly = TRUE var/stumble_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway var/slip_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway @@ -704,6 +706,9 @@ /obj/item var/trash_eatable = TRUE +/mob/living/proc/get_digestion_nutrition_modifier() + return 1 + /mob/living/proc/eat_trash() set name = "Eat Trash" set category = "Abilities" @@ -792,7 +797,7 @@ to_chat(src, "You can taste the flavor of aromatic rolling paper and funny looks.") else if(istype(I,/obj/item/weapon/paper)) to_chat(src, "You can taste the dry flavor of bureaucracy.") - else if(istype(I,/obj/item/weapon/dice)) + else if(istype(I,/obj/item/weapon/dice) || istype(I,/obj/item/roulette_ball)) to_chat(src, "You can taste the bitter flavor of cheating.") else if(istype(I,/obj/item/weapon/lipstick)) to_chat(src, "You can taste the flavor of couture and style. Toddler at the make-up bag style.") diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 19ca08a71c..904933c071 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -580,7 +580,7 @@ //Handle the [All] choice. Ugh inelegant. Someone make this pretty. if(params["pickall"]) - intent = tgui_alert(usr, "Eject all, Move all?","Query",list("Eject all","Cancel","Move all")) + intent = tgui_alert(user, "Eject all, Move all?","Query",list("Eject all","Cancel","Move all")) switch(intent) if("Cancel") return TRUE @@ -598,7 +598,7 @@ to_chat(user,"You can't do that in your state!") return TRUE - var/obj/belly/choice = tgui_input_list(usr, "Move all where?","Select Belly", host.vore_organs) + var/obj/belly/choice = tgui_input_list(user, "Move all where?","Select Belly", host.vore_organs) if(!choice) return FALSE @@ -611,10 +611,10 @@ var/atom/movable/target = locate(params["pick"]) if(!(target in host.vore_selected)) return TRUE // Not in our X anymore, update UI - var/list/available_options = list("Examine", "Eject", "Move") + var/list/available_options = list("Examine", "Eject", "Move", "Transfer") if(ishuman(target)) available_options += "Transform" - intent = tgui_alert(user, "What would you like to do with [target]?", "Vore Pick", available_options, strict_byond = TRUE) + intent = tgui_input_list(user, "What would you like to do with [target]?", "Vore Pick", available_options) switch(intent) if("Examine") var/list/results = target.examine(host) @@ -635,13 +635,51 @@ if(host.stat) to_chat(user,"You can't do that in your state!") return TRUE - var/obj/belly/choice = tgui_input_list(usr, "Move [target] where?","Select Belly", host.vore_organs) if(!choice || !(target in host.vore_selected)) return TRUE - to_chat(target,"You're squished from [host]'s [lowertext(host.vore_selected.name)] to their [lowertext(choice.name)]!") host.vore_selected.transfer_contents(target, choice) + + + if("Transfer") + if(host.stat) + to_chat(user,"You can't do that in your state!") + return TRUE + + var/mob/living/belly_owner = host + + var/list/viable_candidates = list() + for(var/mob/living/candidate in range(1, host)) + if(istype(candidate) && !(candidate == host)) + if(candidate.vore_organs.len && candidate.feeding && !candidate.no_vore) + viable_candidates += candidate + if(!viable_candidates.len) + to_chat(user, "There are no viable candidates around you!") + return TRUE + belly_owner = tgui_input_list(user, "Who do you want to recieve the target?", "Select Predator", viable_candidates) + + if(!belly_owner || !(belly_owner in range(1, host))) + return TRUE + + var/obj/belly/choice = tgui_input_list(user, "Move [target] where?","Select Belly", belly_owner.vore_organs) + if(!choice || !(target in host.vore_selected) || !belly_owner || !(belly_owner in range(1, host))) + return TRUE + + if(belly_owner != host) + to_chat(user, "Transfer offer sent. Await their response.") + var/accepted = tgui_alert(belly_owner, "[host] is trying to transfer [target] from their [lowertext(host.vore_selected.name)] into your [lowertext(choice.name)]. Do you accept?", "Feeding Offer", list("Yes", "No")) + if(accepted != "Yes") + to_chat(user, "[belly_owner] refused the transfer!!") + return TRUE + if(!belly_owner || !(belly_owner in range(1, host))) + return TRUE + to_chat(target,"You're squished from [host]'s [lowertext(host.vore_selected.name)] to [belly_owner]'s [lowertext(choice.name)]!") + to_chat(belly_owner,"[target] is squished from [host]'s [lowertext(host.vore_selected.name)] to your [lowertext(choice.name)]!") + host.vore_selected.transfer_contents(target, choice) + else + to_chat(target,"You're squished from [host]'s [lowertext(host.vore_selected.name)] to their [lowertext(choice.name)]!") + host.vore_selected.transfer_contents(target, choice) return TRUE if("Transform") diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index dd570ad0b1..67632c15db 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -2096,14 +2096,14 @@ Departamental Swimsuits, for general use translocator_unequip(translocator, user) T.forceMove(src) translocator = T - user.show_message("[bicon(src)]*click!*") + user.show_message("\icon[src][bicon(src)]*click!*") playsound(src, 'sound/machines/click.ogg', 30, 1) /obj/item/clothing/head/fluff/nikki/proc/translocator_unequip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user) if (translocator) if (user) user.put_in_hands(T) - user.show_message("[bicon(src)]*click!*") + user.show_message("\icon[src][bicon(src)]*click!*") else translocator.forceMove(get_turf(src)) translocator = null @@ -2486,4 +2486,19 @@ Departamental Swimsuits, for general use desc = "Appearing in a classic Jordan Brand colorway, the Air Jordan 1 Mid 'Black Gym Red' released in May 2021. Built with leather, the shoe's upper sports a white base, contrasted by black on the overlays and highlighted by Gym Red on the padded collar, 'Wings' logo and Swoosh branding. A breathable nylon tongue and perforated toe box support the fit, while underfoot, a standard rubber cupsole with Air in the heel anchors the build." icon_state = "airjordans" icon = 'icons/vore/custom_clothes_vr.dmi' - icon_override = 'icons/vore/custom_onmob_vr.dmi' \ No newline at end of file + icon_override = 'icons/vore/custom_onmob_vr.dmi' + +//Pandora029:Seona Young +/obj/item/clothing/under/fluff/foxoflightsuit + name = "padded flightsui" + desc = "A ruddy-orange combination immersion-and-flight suit, fitted with extra padding across the front of its legs. Warm, waterproof and practical, seveal patches are scattered across it alongside a hard-wearing harness." + + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "foxflightsuit" + worn_state = "foxflightsuit_mob" + rolled_sleeves = 0 + rolled_down = 0 + + icon_override = 'icons/vore/custom_clothes_vr.dmi' + item_state = "foxflightsuit_mob" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 9882ea11b6..02b444febd 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -39,12 +39,20 @@ * but in the future we may also incorporate the "mob_size", so that * a macro mouse is still only effectively "normal" or a micro dragon is still large etc. */ -/mob/proc/get_effective_size() +/mob/proc/get_effective_size(var/micro = FALSE) return 100000 //Whatever it is, it's too big to pick up, or it's a ghost, or something. -/mob/living/get_effective_size() +/mob/living/get_effective_size(var/micro = FALSE) return size_multiplier +/mob/living/carbon/human/get_effective_size(var/micro = FALSE) // Set micro to TRUE for interactions where you're small, to FALSE for ones where you're large. + var/effective_size = size_multiplier + if(micro) + effective_size += species.micro_size_mod + else + effective_size += species.macro_size_mod + return effective_size + /atom/movable/proc/size_range_check(size_select) //both objects and mobs needs to have that var/area/A = get_area(src) //Get the atom's area to check for size limit. if((A?.limit_mob_size && (size_select > 200 || size_select < 25)) || (size_select > 600 || size_select <1)) @@ -163,7 +171,7 @@ return 0 if(!(M.a_intent == I_HELP)) return 0 - var/size_diff = M.get_effective_size() - get_effective_size() + var/size_diff = M.get_effective_size(FALSE) - get_effective_size(TRUE) if(!holder_default && holder_type) holder_default = holder_type if(!istype(M)) @@ -197,16 +205,16 @@ return TRUE //Both small! Go ahead and go. - if(get_effective_size() <= RESIZE_A_SMALLTINY && tmob.get_effective_size() <= RESIZE_A_SMALLTINY) + if(get_effective_size(TRUE) <= RESIZE_A_SMALLTINY && tmob.get_effective_size(TRUE) <= RESIZE_A_SMALLTINY) // For help intent interaction just assume both are 'smol' return TRUE //Worthy of doing messages at all - if(abs(get_effective_size() - tmob.get_effective_size()) >= 0.50) + if(abs(get_effective_size(TRUE) - tmob.get_effective_size(TRUE)) >= 0.50) var/src_message = null var/tmob_message = null //Smaller person being stepped onto - if(get_effective_size() > tmob.get_effective_size() && ishuman(src)) + if(get_effective_size(TRUE) > tmob.get_effective_size(TRUE) && ishuman(src)) src_message = "You carefully step over [tmob]." tmob_message = "[src] steps over you carefully!" var/mob/living/carbon/human/H = src @@ -218,7 +226,7 @@ tmob_message = tail.msg_prey_help_run //Smaller person stepping under larger person - else if(get_effective_size() < tmob.get_effective_size() && ishuman(tmob)) + else if(get_effective_size(TRUE) < tmob.get_effective_size(TRUE) && ishuman(tmob)) src_message = "You run between [tmob]'s legs." tmob_message = "[src] runs between your legs." var/mob/living/carbon/human/H = tmob @@ -269,7 +277,7 @@ // We need to be above a certain size ratio in order to do anything to the prey. // For DISARM and HURT intent, this is >=0.75, for GRAB it is >=0.5 - var/size_ratio = get_effective_size() - tmob.get_effective_size() + var/size_ratio = get_effective_size(FALSE) - tmob.get_effective_size(TRUE) if(a_intent == I_GRAB && size_ratio < 0.5) return FALSE if((a_intent == I_DISARM || a_intent == I_HURT) && size_ratio < 0.75) diff --git a/code/modules/vore/resizing/sizegun_slow_vr.dm b/code/modules/vore/resizing/sizegun_slow_vr.dm index 5a267cb6da..d6edc19361 100644 --- a/code/modules/vore/resizing/sizegun_slow_vr.dm +++ b/code/modules/vore/resizing/sizegun_slow_vr.dm @@ -50,16 +50,16 @@ if(unresizable) return TRUE - if(!(target.has_large_resize_bounds()) && (target.get_effective_size() >= RESIZE_MAXIMUM) && sizeshift_mode == SIZE_GROW) + if(!(target.has_large_resize_bounds()) && (target.size_multiplier >= RESIZE_MAXIMUM) && sizeshift_mode == SIZE_GROW) return TRUE - if(target.get_effective_size() >= RESIZE_MAXIMUM_DORMS && sizeshift_mode == SIZE_GROW) + if(target.size_multiplier >= RESIZE_MAXIMUM_DORMS && sizeshift_mode == SIZE_GROW) return TRUE - if(!(target.has_large_resize_bounds()) && (target.get_effective_size() <= RESIZE_MINIMUM) && sizeshift_mode == SIZE_SHRINK) + if(!(target.has_large_resize_bounds()) && (target.size_multiplier <= RESIZE_MINIMUM) && sizeshift_mode == SIZE_SHRINK) return TRUE - if(target.get_effective_size() <= RESIZE_MINIMUM_DORMS && sizeshift_mode == SIZE_SHRINK) + if(target.size_multiplier <= RESIZE_MINIMUM_DORMS && sizeshift_mode == SIZE_SHRINK) return TRUE return FALSE @@ -123,9 +123,9 @@ stoplag(3) if(sizeshift_mode == SIZE_SHRINK) - L.resize((L.get_effective_size() - size_increment), uncapped = L.has_large_resize_bounds(), aura_animation = FALSE) + L.resize((L.size_multiplier - size_increment), uncapped = L.has_large_resize_bounds(), aura_animation = FALSE) else if(sizeshift_mode == SIZE_GROW) - L.resize((L.get_effective_size() + size_increment), uncapped = L.has_large_resize_bounds(), aura_animation = FALSE) + L.resize((L.size_multiplier + size_increment), uncapped = L.has_large_resize_bounds(), aura_animation = FALSE) busy = FALSE current_target = null diff --git a/code/modules/vore/smoleworld/smoleworld_vr.dm b/code/modules/vore/smoleworld/smoleworld_vr.dm index f9d1c92a64..ae44a9ab2b 100644 --- a/code/modules/vore/smoleworld/smoleworld_vr.dm +++ b/code/modules/vore/smoleworld/smoleworld_vr.dm @@ -19,9 +19,9 @@ var/mob/living/L = A if(L.hovering) // Flying things shouldn't make footprints. return ..() - if(L.get_effective_size() <= RESIZE_NORMAL) + if(L.get_effective_size(FALSE) <= RESIZE_NORMAL) return ..() - if(L.get_effective_size() >= RESIZE_A_BIGNORMAL) + if(L.get_effective_size(FALSE) >= RESIZE_A_BIGNORMAL) playsound(src, 'sound/effects/footstep/giantstep_gigga.ogg', 35, 1, -1, volume_channel = VOLUME_CHANNEL_MASTER) var/mdir = "[A.dir]" crossed_dirs[mdir] = 1 @@ -365,7 +365,7 @@ // . = ..() // if(.) // -// if(M.get_effective_size() > RESIZE_TINY) +// if(M.get_effective_size(TRUE) > RESIZE_TINY) // to_chat(M, SPAN_WARNING("You are to big to fit in \the [src].")) // . = FALSE // diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm index 96195fd700..03ece599dd 100644 --- a/code/modules/xenoarcheaology/artifacts/autocloner.dm +++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm @@ -46,17 +46,17 @@ if(!previous_power_state) previous_power_state = 1 icon_state = "cellold1" - src.visible_message("[bicon(src)] [src] suddenly comes to life!") + src.visible_message("\icon[src][bicon(src)] [src] suddenly comes to life!") //slowly grow a mob if(prob(5)) - src.visible_message("[bicon(src)] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") + src.visible_message("\icon[src][bicon(src)] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") //if we've finished growing... if(time_spent_spawning >= time_per_spawn) time_spent_spawning = 0 update_use_power(USE_POWER_IDLE) - src.visible_message("[bicon(src)] [src] pings!") + src.visible_message("\icon[src][bicon(src)] [src] pings!") icon_state = "cellold1" desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." if(spawn_type) @@ -77,7 +77,7 @@ if(previous_power_state) previous_power_state = 0 icon_state = "cellold0" - src.visible_message("[bicon(src)] [src] suddenly shuts down.") + src.visible_message("\icon[src][bicon(src)] [src] suddenly shuts down.") //cloned mob slowly breaks down time_spent_spawning = max(time_spent_spawning + last_process - world.time, 0) diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm index f3ad6d674c..d6796c6ad1 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator.dm @@ -98,7 +98,7 @@ "foreground" = colors[color], ))) - fail_message = "[bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \ + fail_message = "\icon[src][bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \ [pick("horn","beep","bing","bleep","blat","honk","hrumph","ding")] sounds and a \ [pick("yellow","purple","green","blue","red","orange","white")] \ [pick("light","dial","meter","window","protrusion","knob","antenna","swirly thing")] \ @@ -110,7 +110,7 @@ if(spawning_types.len && powered()) spawn_progress_time += world.time - last_process_time if(spawn_progress_time > max_spawn_time) - src.visible_message("[bicon(src)] [src] pings!") + src.visible_message("\icon[src][bicon(src)] [src] pings!") var/obj/source_material = pop(stored_materials) var/spawn_type = pop(spawning_types) @@ -133,7 +133,7 @@ icon_state = "borgcharger0(old)" else if(prob(5)) - src.visible_message("[bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") + src.visible_message("\icon[src][bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") last_process_time = world.time @@ -161,9 +161,9 @@ if(key in construction) if(LAZYLEN(stored_materials) > LAZYLEN(spawning_types)) if(LAZYLEN(spawning_types)) - visible_message("[bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") + visible_message("\icon[src][bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") else - visible_message("[bicon(src)] [src]'s front compartment slides shut.") + visible_message("\icon[src][bicon(src)] [src]'s front compartment slides shut.") spawning_types.Add(construction[key]) spawn_progress_time = 0 update_use_power(USE_POWER_ACTIVE) diff --git a/code/modules/xenoarcheaology/effect.dm b/code/modules/xenoarcheaology/effect.dm index 93c344aa83..7409c8744f 100644 --- a/code/modules/xenoarcheaology/effect.dm +++ b/code/modules/xenoarcheaology/effect.dm @@ -92,7 +92,7 @@ var/atom/toplevelholder = target while(!istype(toplevelholder.loc, /turf)) toplevelholder = toplevelholder.loc - toplevelholder.visible_message("[bicon(toplevelholder)] [toplevelholder] [display_msg]") + toplevelholder.visible_message("\icon[toplevelholder][bicon(toplevelholder)] [toplevelholder] [display_msg]") /datum/artifact_effect/proc/DoEffectTouch(var/mob/user) /datum/artifact_effect/proc/DoEffectAura(var/atom/holder) diff --git a/code/modules/xenoarcheaology/finds/fossils.dm b/code/modules/xenoarcheaology/finds/fossils.dm index 19516f47cc..0ad06af468 100644 --- a/code/modules/xenoarcheaology/finds/fossils.dm +++ b/code/modules/xenoarcheaology/finds/fossils.dm @@ -77,7 +77,7 @@ ..() else if(istype(W,/obj/item/weapon/pen)) plaque_contents = sanitize(tgui_input_text(usr, "What would you like to write on the plaque:","Skeleton plaque","")) - user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of [bicon(src)] [src].") + user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of \icon[src][bicon(src)] [src].") if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." else diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm index 02a5096b98..f2dcfc5183 100644 --- a/code/modules/xenoarcheaology/finds/special.dm +++ b/code/modules/xenoarcheaology/finds/special.dm @@ -99,7 +99,7 @@ if(charges >= 0.1) if(prob(5)) - src.visible_message("[bicon(src)] [src]'s eyes glow ruby red for a moment!") + src.visible_message("\icon[src][bicon(src)] [src]'s eyes glow ruby red for a moment!") charges -= 0.1 //check on our shadow wights diff --git a/code/modules/xenoarcheaology/finds/talking.dm b/code/modules/xenoarcheaology/finds/talking.dm index 4a6af1444d..48b7720f00 100644 --- a/code/modules/xenoarcheaology/finds/talking.dm +++ b/code/modules/xenoarcheaology/finds/talking.dm @@ -54,7 +54,7 @@ var/list/options = list("[holder_atom] seems to be listening intently to [source]...",\ "[holder_atom] seems to be focusing on [source]...",\ "[holder_atom] seems to turn it's attention to [source]...") - holder_atom.loc.visible_message("[bicon(holder_atom)] [pick(options)]") + holder_atom.loc.visible_message("\icon[holder_atom][bicon(holder_atom)] [pick(options)]") if(prob(20)) spawn(2) @@ -118,5 +118,5 @@ listening|=M for(var/mob/M in listening) - to_chat(M, "[bicon(holder_atom)] [holder_atom] reverberates, \"[msg]\"") + to_chat(M, "\icon[holder_atom][bicon(holder_atom)] [holder_atom] reverberates, \"[msg]\"") last_talk_time = world.time diff --git a/code/modules/xenoarcheaology/tools/ano_device_battery.dm b/code/modules/xenoarcheaology/tools/ano_device_battery.dm index 3c7b988211..a83462c43b 100644 --- a/code/modules/xenoarcheaology/tools/ano_device_battery.dm +++ b/code/modules/xenoarcheaology/tools/ano_device_battery.dm @@ -67,7 +67,7 @@ /obj/item/weapon/anodevice/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - + data["inserted_battery"] = inserted_battery data["anomaly"] = null data["charge"] = null @@ -103,7 +103,7 @@ if("startup") if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0)) activated = TRUE - visible_message("[bicon(src)] [src] whirrs.", "[bicon(src)]You hear something whirr.") + visible_message("\icon[src][bicon(src)] [src] whirrs.", "\icon[src][bicon(src)]You hear something whirr.") if(!inserted_battery.battery_effect.activated) inserted_battery.battery_effect.ToggleActivate(1) time_end = world.time + duration @@ -146,9 +146,9 @@ if(interval > 0) //apply the touch effect to the holder if(holder) - to_chat(holder, "the [bicon(src)] [src] held by [holder] shudders in your grasp.") + to_chat(holder, "the \icon[src][bicon(src)] [src] held by [holder] shudders in your grasp.") else - src.loc.visible_message("the [bicon(src)] [src] shudders.") + src.loc.visible_message("the \icon[src][bicon(src)] [src] shudders.") //consume power inserted_battery.use_power(energy_consumed_on_touch) @@ -175,13 +175,13 @@ //work out if we need to shutdown if(inserted_battery.stored_charge <= 0) - src.loc.visible_message("[bicon(src)] [src] buzzes.", "[bicon(src)] You hear something buzz.") + src.loc.visible_message("\icon[src][bicon(src)] [src] buzzes.", "\icon[src][bicon(src)] You hear something buzz.") shutdown_emission() else if(world.time > time_end) - src.loc.visible_message("[bicon(src)] [src] chimes.", "[bicon(src)] You hear something chime.") + src.loc.visible_message("\icon[src][bicon(src)] [src] chimes.", "\icon[src][bicon(src)] You hear something chime.") shutdown_emission() else - src.visible_message("[bicon(src)] [src] buzzes.", "[bicon(src)] You hear something buzz.") + src.visible_message("\icon[src][bicon(src)] [src] buzzes.", "\icon[src][bicon(src)] You hear something buzz.") shutdown_emission() last_process = world.time diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm index 41d4ad1bc2..6e0e1ceb19 100644 --- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm +++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm @@ -125,7 +125,7 @@ P.name = "[src] report #[++report_num]" P.info = "[src] analysis report #[report_num]
" P.info += "
" - P.info += "[bicon(scanned_object)] [results]" + P.info += "\icon[scanned_object][bicon(scanned_object)] [results]" P.stamped = list(/obj/item/weapon/stamp) P.add_overlay("paper_stamped") diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm index dc634789bf..4ab22878c1 100644 --- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm +++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm @@ -126,7 +126,7 @@ /obj/machinery/radiocarbon_spectrometer/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - + // this is the data which will be sent to the ui data["scanned_item"] = (scanned_item ? scanned_item.name : "") data["scanned_item_desc"] = (scanned_item ? (scanned_item.desc ? scanned_item.desc : "No information on record.") : "") @@ -268,16 +268,16 @@ //emergency stop if seal integrity reaches 0 if(scanner_seal_integrity <= 0 || (scanner_temperature >= 1273 && !rad_shield)) stop_scanning() - src.visible_message("[bicon(src)] buzzes unhappily. It has failed mid-scan!", 2) + src.visible_message("\icon[src][bicon(src)] buzzes unhappily. It has failed mid-scan!", 2) if(prob(5)) - src.visible_message("[bicon(src)] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")].", 2) + src.visible_message("\icon[src][bicon(src)] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")].", 2) else //gradually cool down over time if(scanner_temperature > 0) scanner_temperature = max(scanner_temperature - 5 - 10 * rand(), 0) if(prob(0.75)) - src.visible_message("[bicon(src)] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")].", 2) + src.visible_message("\icon[src][bicon(src)] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")].", 2) playsound(src, 'sound/effects/ding.ogg', 25) last_process_worldtime = world.time @@ -296,7 +296,7 @@ used_coolant = 0 /obj/machinery/radiocarbon_spectrometer/proc/complete_scan() - src.visible_message("[bicon(src)] makes an insistent chime.", 2) + src.visible_message("\icon[src][bicon(src)] makes an insistent chime.", 2) if(scanned_item) //create report diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm index 2f2c87954e..902264308a 100644 --- a/code/modules/xenoarcheaology/tools/suspension_generator.dm +++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm @@ -147,10 +147,10 @@ for(var/mob/living/M in T) M.Weaken(5) - M.visible_message("[bicon(M)] [M] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + M.visible_message("\icon[M][bicon(M)] [M] begins to float in the air!","You feel tingly and light, but it is difficult to move.") suspension_field = new(T) - visible_message("[bicon(src)] [src] activates with a low hum.") + visible_message("\icon[src][bicon(src)] [src] activates with a low hum.") icon_state = "suspension3" for(var/obj/item/I in T) @@ -160,7 +160,7 @@ if(collected) suspension_field.icon_state = "energynet" suspension_field.add_overlay("shield2") - visible_message("[bicon(suspension_field)] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].") + visible_message("\icon[suspension_field][bicon(suspension_field)] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].") else if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall)) suspension_field.icon_state = "shieldsparkles" @@ -175,7 +175,7 @@ to_chat(M, "You no longer feel like floating.") M.Weaken(3) - visible_message("[bicon(src)] [src] deactivates with a gentle shudder.") + visible_message("\icon[src][bicon(src)] [src] deactivates with a gentle shudder.") qdel(suspension_field) suspension_field = null icon_state = "suspension2" diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm index 14bda53ca2..20c08c70ca 100644 --- a/code/modules/xenoarcheaology/tools/tools.dm +++ b/code/modules/xenoarcheaology/tools/tools.dm @@ -131,7 +131,7 @@ positive_locations.Add(D) - to_chat(user, "[bicon(src)] [src] pings.") + to_chat(user, "\icon[src][bicon(src)] [src] pings.") else if(istype(A, /obj/structure/boulder)) var/obj/structure/boulder/B = A @@ -149,7 +149,7 @@ positive_locations.Add(D) - to_chat(user, "[bicon(src)] [src] pings [pick("madly","wildly","excitedly","crazily")]!") + to_chat(user, "\icon[src][bicon(src)] [src] pings [pick("madly","wildly","excitedly","crazily")]!") /obj/item/device/depth_scanner/attack_self(var/mob/living/user) tgui_interact(user) @@ -197,7 +197,7 @@ if(..()) return TRUE - switch(action) + switch(action) if("select") var/index = text2num(params["select"]) if(index && index <= LAZYLEN(positive_locations)) @@ -269,9 +269,9 @@ scan_ticks = 0 var/turf/T = get_turf(src) if(target_radio) - T.visible_message("[bicon(src)] [src] [pick("chirps","chirrups","cheeps")] happily.") + T.visible_message("\icon[src][bicon(src)] [src] [pick("chirps","chirrups","cheeps")] happily.") else - T.visible_message("[bicon(src)] [src] [pick("chirps","chirrups","cheeps")] sadly.") + T.visible_message("\icon[src][bicon(src)] [src] [pick("chirps","chirrups","cheeps")] sadly.") else icon_state = "pinoff" diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index 188c8874c2..c5ec91d239 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -55,7 +55,7 @@ var/obj/item/slime_extract/T = holder.my_atom T.uses-- if(T.uses <= 0) - T.visible_message("[bicon(T)]\The [T] goes inert.") + T.visible_message("\icon[T][bicon(T)]\The [T] goes inert.") T.name = "inert [initial(T.name)]" diff --git a/code/modules/xenobio/items/extracts_vr.dm b/code/modules/xenobio/items/extracts_vr.dm index 00abebfcb1..bd232c153a 100644 --- a/code/modules/xenobio/items/extracts_vr.dm +++ b/code/modules/xenobio/items/extracts_vr.dm @@ -60,7 +60,7 @@ var/obj/item/slime_extract/T = holder.my_atom T.uses-- if(T.uses <= 0) - T.visible_message("[bicon(T)]\The [T] goes inert.") + T.visible_message("\icon[T][bicon(T)]\The [T] goes inert.") T.name = "inert [initial(T.name)]" diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm index 4a6b8651e2..e2882001e1 100644 --- a/code/modules/xenobio2/machinery/core_extractor.dm +++ b/code/modules/xenobio2/machinery/core_extractor.dm @@ -93,7 +93,7 @@ /obj/machinery/slime/extractor/proc/extract_cores() if(!src.occupant) - src.visible_message("[bicon(src)] [src] pings unhappily.") + src.visible_message("\icon[src][bicon(src)] [src] pings unhappily.") else if(inuse) return diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm index c896f14309..b8e5cfc616 100644 --- a/code/modules/xenobio2/machinery/gene_manipulators.dm +++ b/code/modules/xenobio2/machinery/gene_manipulators.dm @@ -102,15 +102,15 @@ in_use = 0 if(failed_task) failed_task = 0 - visible_message("[bicon(src)] [src] pings unhappily, flashing a red warning light.") + visible_message("\icon[src][bicon(src)] [src] pings unhappily, flashing a red warning light.") else - visible_message("[bicon(src)] [src] pings happily.") + visible_message("\icon[src][bicon(src)] [src] pings happily.") if(eject_disk) eject_disk = 0 if(loaded_disk) loaded_disk.forceMove(get_turf(src)) - visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") loaded_disk = null /obj/machinery/xenobio/extractor @@ -126,7 +126,7 @@ /obj/machinery/xenobio/extractor/Initialize() . = ..() default_apply_parts() - + /obj/machinery/xenobio/extractor/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/xenoproduct)) if(product) @@ -183,7 +183,7 @@ /obj/machinery/xenobio/proc/eject_disk() if(!loaded_disk) return loaded_disk.forceMove(loc) - visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") loaded_disk = null /obj/machinery/xenobio/extractor/Topic(href, href_list) @@ -195,7 +195,7 @@ if(!product) return product.forceMove(get_turf(src)) - visible_message("[bicon(src)] [src] beeps and spits out [product].") + visible_message("\icon[src][bicon(src)] [src] beeps and spits out [product].") product = null if(href_list["eject_disk"]) diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm index f845ad6e8d..30c3e372a5 100644 --- a/code/modules/xenobio2/machinery/slime_replicator.dm +++ b/code/modules/xenobio2/machinery/slime_replicator.dm @@ -57,7 +57,7 @@ /obj/machinery/slime/replicator/proc/replicate_slime() if(!src.core) - src.visible_message("[bicon(src)] [src] pings unhappily.") + src.visible_message("\icon[src][bicon(src)] [src] pings unhappily.") else if(inuse) return diff --git a/config/jukebox.json b/config/jukebox.json index 0674a8e329..0f17d87d86 100644 --- a/config/jukebox.json +++ b/config/jukebox.json @@ -4047,6 +4047,16 @@ "jukebox": true }, { +"url": "https://files.catbox.moe/6ivc7w.mp3", +"title": "Bury the Light", +"duration": 5830, +"artist": "Victor Borba & Casey Edwards", +"genre": "Video Game", +"secret": false, +"lobby": false, +"jukebox": true +}, +{ "url": "https://files.catbox.moe/pbtbjv.mp3", "title": "Dog Song", "duration": 380, diff --git a/icons/obj/boxes.dmi b/icons/obj/boxes.dmi index 7978b9a564..948cb472da 100644 Binary files a/icons/obj/boxes.dmi and b/icons/obj/boxes.dmi differ diff --git a/icons/obj/casino.dmi b/icons/obj/casino.dmi index 17405361e2..6a1bfda2ea 100644 Binary files a/icons/obj/casino.dmi and b/icons/obj/casino.dmi differ diff --git a/icons/obj/gun_toy.dmi b/icons/obj/gun_toy.dmi index bee6bcc49d..738911bcd6 100644 Binary files a/icons/obj/gun_toy.dmi and b/icons/obj/gun_toy.dmi differ diff --git a/icons/obj/nanomods.dmi b/icons/obj/nanomods.dmi index 7068034dad..f957c63983 100644 Binary files a/icons/obj/nanomods.dmi and b/icons/obj/nanomods.dmi differ diff --git a/icons/obj/overmap.dmi b/icons/obj/overmap.dmi index cef405461a..c4dd9c4232 100644 Binary files a/icons/obj/overmap.dmi and b/icons/obj/overmap.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 0e0894a345..5c8b632d6e 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/flooring/carpet.dmi b/icons/turf/flooring/carpet.dmi index f7dcf3c046..9e3472fcbf 100644 Binary files a/icons/turf/flooring/carpet.dmi and b/icons/turf/flooring/carpet.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index 217c90c4b4..78fa46a05c 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/maps/gateway_archive_vr/snowfield.dmm b/maps/gateway_archive_vr/snowfield.dmm index 5a2f3cad1a..c14316c50c 100644 --- a/maps/gateway_archive_vr/snowfield.dmm +++ b/maps/gateway_archive_vr/snowfield.dmm @@ -177,7 +177,7 @@ "du" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/holofloor/wood,/area/awaymission/snowfield/outside) "dv" = (/obj/machinery/door/airlock/maintenance{locked = 1; name = "Storage Access"},/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/outside) "dw" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/outside) -"dx" = (/obj/structure/closet/fireaxecabinet{pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/outside) +"dx" = (/obj/structure/fireaxecabinet{pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/outside) "dy" = (/obj/machinery/space_heater,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/outside) "dz" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/outside) "dA" = (/obj/structure/table/steel_reinforced,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/outside) diff --git a/maps/gateway_archive_vr/wildwest.dm b/maps/gateway_archive_vr/wildwest.dm index cb1167d0dc..ed6ab28594 100644 --- a/maps/gateway_archive_vr/wildwest.dm +++ b/maps/gateway_archive_vr/wildwest.dm @@ -121,7 +121,7 @@ if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey)) for(var/mob/O in viewers(world.view, src.loc)) - to_chat(O, "[M] triggered the [bicon(src)] [src]") + to_chat(O, "[M] triggered the \icon[src][bicon(src)] [src]") triggered = 1 call(src,triggerproc)(M) diff --git a/maps/gateway_vr/lucky_7.dm b/maps/gateway_vr/lucky_7.dm new file mode 100644 index 0000000000..66a6dd9486 --- /dev/null +++ b/maps/gateway_vr/lucky_7.dm @@ -0,0 +1,140 @@ +/obj/effect/overmap/visitable/sector/common_gateway/lucky7 + initial_generic_waypoints = list("tether_excursion_lucky7") + name = "Lucky 7 Casino and Restaraunt" + scanner_desc = @{"[i]Registration[/i]: _ERROR +[i]Class[/i]: Installation +[i]Transponder[/i]: Weak Signal +[b]Notice[/b]: Current estimated wait time: 999999"} + unknown_state = "station" + known = FALSE + icon_state = "lucky7_g" + +// -- Areas -- // + +/area/awaymission/lucky7 + icon_state = "away1" + +/area/awaymission/lucky7/casinofloor + name = "\improper Gateway - Casino Floor" + icon_state = "casino" + +/area/awaymission/lucky7/arcade + name = "\improper Gateway - Arcade" + icon_state = "arcade" + +/area/awaymission/lucky7/gateway + name = "\improper Gateway - Gateway" + icon_state = "away" + +/area/awaymission/lucky7/privategameroom + name = "\improper Gateway - Private Game Room One" + icon_state = "arcade2" + +/area/awaymission/lucky7/privategameroom/two + name = "\improper Gateway - Private Game Room Two" + +/area/awaymission/lucky7/privategameroom/three + name = "\improper Gateway - Private Game Room Three" + +/area/awaymission/lucky7/privateroom + name = "\improper Gateway - Private Room One" + icon_state = "crew_quarters" + +/area/awaymission/lucky7/privateroom/two + name = "\improper Gateway - Private Room Two" + icon_state = "crew_quarters" + +/area/awaymission/lucky7/privateroom/three + name = "\improper Gateway - Private Room Three" + icon_state = "crew_quarters" + +/area/awaymission/lucky7/privateroom/four + name = "\improper Gateway - Private Room Four" + icon_state = "crew_quarters" + +/area/awaymission/lucky7/privateroom/five + name = "\improper Gateway - Private Room Five" + icon_state = "crew_quarters" + +/area/awaymission/lucky7/privateroom/vip + name = "\improper Gateway - VIP Room" + icon_state = "crew_quarters" + +/area/awaymission/lucky7/security + name = "\improper Gateway - Security" + icon_state = "security" + +/area/awaymission/lucky7/kitchen + name = "\improper Gateway - Kitchen" + icon_state = "kitchen" + +/area/awaymission/lucky7/bar + name = "\improper Gateway - Bar" + icon_state = "bar" + +/area/awaymission/lucky7/barbackroom + name = "\improper Gateway - Bar Backroom" + icon_state = "bar" + +/area/awaymission/lucky7/breakroom + name = "\improper Gateway - Breakroom" + icon_state = "green" + +/area/awaymission/lucky7/loungeprivateroom + name = "\improper Gateway - Private Lounge" + icon_state = "lounge" + +/area/awaymission/lucky7/lounge + name = "\improper Gateway - Lounge" + icon_state = "lounge" + +/area/awaymission/lucky7/laundry + name = "\improper Gateway - Laundry Room" + icon_state = "laundry" + +/area/awaymission/lucky7/medical + name = "\improper Gateway - Clinic" + icon_state = "medbay" + +/area/awaymission/lucky7/workshop + name = "\improper Gateway - Workshop" + icon_state = "yellow" + +/area/awaymission/lucky7/maint1 + name = "\improper Gateway - Maint 1" + icon_state = "maint" + +/area/awaymission/lucky7/maint2 + name = "\improper Gateway - Maint 2" + icon_state = "maint" + +/area/awaymission/lucky7/hall1 + name = "\improper Gateway - Hall 1" + icon_state = "hallway" + +/area/awaymission/lucky7/hall2 + name = "\improper Gateway - Hall 2" + icon_state = "hallway" + +/area/awaymission/lucky7/hotelhall + name = "\improper Gateway - Hotel Hall" + icon_state = "hallway" + +/area/awaymission/lucky7/trash + name = "\improper Gateway - Trash Collection" + icon_state = "disposal" + +/area/awaymission/lucky7/dock1 + name = "\improper Gateway - Dock 1" + icon_state = "entry_1" + +/area/awaymission/lucky7/dock2 + name = "\improper Gateway - Dock 2" + icon_state = "entry_2" + +/area/awaymission/lucky7/entry + name = "\improper Gateway - Entry Hall" + icon_state = "entry_3" + +/obj/machinery/telecomms/allinone/casino + freq_listening = list(PUB_FREQ, CSN_FREQ) \ No newline at end of file diff --git a/maps/gateway_vr/lucky_7.dmm b/maps/gateway_vr/lucky_7.dmm new file mode 100644 index 0000000000..c9e896b92f --- /dev/null +++ b/maps/gateway_vr/lucky_7.dmm @@ -0,0 +1,1299 @@ +"aa" = (/obj/effect/floor_decal/techfloor/orange{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"ab" = (/obj/machinery/atm{pixel_y = 30},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"ac" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/embedded_controller/radio/airlock/docking_port{dir = 8; frequency = 1380; id_tag = "l7_dock_d1a3"; pixel_x = 28},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"ad" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{dir = 4; pixel_x = -26; pixel_y = -7},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"ae" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"af" = (/obj/structure/table/woodentable,/obj/machinery/light,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"ag" = (/obj/structure/table/borosilicate,/turf/simulated/floor/tiled/eris/steel/bar_dance,/area/awaymission/lucky7/loungeprivateroom) +"ah" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"ai" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"aj" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"ak" = (/obj/structure/cable/green{icon_state = "2-4"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"al" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"am" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"an" = (/obj/structure/casino_table/craps{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"ao" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"ap" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/item/weapon/material/knife/butch,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"aq" = (/obj/effect/floor_decal/spline/plain{dir = 10},/obj/structure/flora/pottedplant/stoutbush,/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"ar" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/structure/cable/green,/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; pixel_y = -27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"as" = (/obj/effect/floor_decal/borderfloorwhite{dir = 6},/obj/effect/floor_decal/corner/paleblue/border{dir = 6},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"at" = (/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"au" = (/obj/structure/casino_table/craps{dir = 1},/obj/item/weapon/dice{pixel_x = 4; pixel_y = 6},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"av" = (/obj/structure/table/borosilicate,/obj/structure/dancepole,/turf/simulated/floor/tiled/eris/steel/bar_dance,/area/awaymission/lucky7/loungeprivateroom) +"aw" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"ax" = (/obj/structure/bed/chair/office/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"ay" = (/obj/structure/table/borosilicate,/turf/simulated/floor/tiled/eris/steel/bar_light,/area/awaymission/lucky7/loungeprivateroom) +"az" = (/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"aA" = (/obj/structure/table/bench/padded,/obj/effect/floor_decal/spline/plain,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/eris/steel/bar_dance,/area/awaymission/lucky7/loungeprivateroom) +"aB" = (/obj/structure/table/bench/padded,/obj/effect/floor_decal/spline/plain,/turf/simulated/floor/tiled/eris/steel/bar_dance,/area/awaymission/lucky7/loungeprivateroom) +"aC" = (/obj/item/weapon/stool/padded{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"aD" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/privateroom/four) +"aE" = (/obj/structure/casino_table/blackjack_m{dir = 4},/obj/machinery/light/floortube{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"aF" = (/obj/structure/bed/chair/office/light,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"aG" = (/obj/structure/table/bench/padded,/obj/effect/floor_decal/spline/plain,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/eris/steel/bar_dance,/area/awaymission/lucky7/loungeprivateroom) +"aH" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"aI" = (/obj/structure/casino_table/blackjack_r{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"aJ" = (/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 8; pixel_x = -27; start_charge = 0},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"aK" = (/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/cable/green{icon_state = "1-4"},/obj/structure/disposalpipe/junction{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"aL" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10},/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"aM" = (/obj/structure/casino_table/blackjack_r,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"aN" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"aO" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/grey/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"aP" = (/obj/effect/floor_decal/rust,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"aQ" = (/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"aR" = (/obj/machinery/door/airlock/maintenance/common,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"aS" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"aT" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"aU" = (/obj/structure/casino_table/blackjack_r{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"aV" = (/obj/machinery/light/floortube{dir = 8},/obj/structure/casino_table/roulette_chart,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"aW" = (/obj/structure/cable/green,/obj/machinery/power/fractal_reactor/fluff/smes,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"aX" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/yellow/border{dir = 10},/obj/machinery/telecomms/allinone/casino,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"ba" = (/obj/structure/table/borosilicate,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"bc" = (/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"be" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/industrial/warning/cee{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"bf" = (/obj/machinery/gateway{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"bh" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"bj" = (/obj/structure/window/basic,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"bn" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"bo" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"bp" = (/turf/simulated/wall,/area/awaymission/lucky7/privategameroom) +"bt" = (/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "l7_dock_d2a1"; pixel_y = 28},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "dock_d1a1_sensor"; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "dock_d1a1_pump"},/obj/effect/map_helper/airlock/atmos/chamber_pump,/obj/effect/map_helper/airlock/sensor/chamber_sensor,/obj/effect/floor_decal/industrial/warning/cee{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"bu" = (/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"bw" = (/obj/effect/floor_decal/spline/plain{dir = 4},/obj/machinery/light{dir = 4},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"bx" = (/obj/structure/sink/kitchen{name = "sink"; pixel_y = 20},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"by" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/machinery/microwave,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"bB" = (/obj/random/soap,/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/three) +"bC" = (/obj/structure/table/woodentable,/obj/item/weapon/material/kitchen/utensil/fork/plastic,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"bD" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/obj/item/device/radio{pixel_x = 10; pixel_y = 8},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"bE" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"bH" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"},/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"bK" = (/obj/structure/bed/chair/bay/comfy/blue,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"bL" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/lightgrey/bordercorner,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"bN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"bP" = (/obj/structure/casino_table/blackjack_m{dir = 4},/obj/item/weapon/deck/cards/casino,/obj/machinery/light/floortube{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"bX" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"cb" = (/obj/machinery/gateway{dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"cc" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"cm" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"cn" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"cp" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/loungeprivateroom) +"cq" = (/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cr" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"cz" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"cD" = (/obj/structure/table/darkglass,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cF" = (/obj/structure/bed/chair/bay/comfy/blue{dir = 1},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cG" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"cH" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) +"cI" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"cJ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cK" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"cL" = (/obj/structure/bed/chair/bay/comfy/blue{dir = 1},/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cM" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cN" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"cO" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/grey/border{dir = 10},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"cR" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"cT" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"cV" = (/obj/effect/shuttle_landmark{base_area = /area/space; base_turf = /turf/space; docking_controller = "l7_dock_d2a2"; landmark_tag = "l7_dockarm_d2a2"; name = "Dock D2A2"},/turf/space,/area/space) +"cY" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"da" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 7; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -7; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -7; pixel_y = -3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_y = -3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 7; pixel_y = -3},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"dd" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"df" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 4},/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hotelhall) +"dg" = (/obj/effect/floor_decal/corner/lightgrey{dir = 10},/obj/effect/floor_decal/corner/lightgrey{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/monotile,/area/awaymission/lucky7/entry) +"dn" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/lightgrey/border{dir = 10},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"do" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"dr" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"du" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"dw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"dy" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"dz" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"dC" = (/obj/structure/bed/chair/sofa/left/brown{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"dE" = (/obj/machinery/computer/arcade/battle,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"dF" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/space_heater,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"dG" = (/obj/structure/window/basic,/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"dP" = (/obj/structure/flora/pottedplant/largebush,/obj/machinery/firealarm{pixel_y = 26},/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"dS" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/morgue{dir = 2; name = "Private Room"; req_access = null},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"dW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"dX" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/lightgrey/border{dir = 6},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/lightgrey/bordercorner2,/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"dZ" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/five) +"ea" = (/obj/machinery/bodyscanner{dir = 4},/obj/effect/floor_decal/corner_steel_grid{dir = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"ec" = (/obj/machinery/door/morgue{dir = 2; name = "Private Room"; req_access = null},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/loungeprivateroom) +"ed" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/three) +"ei" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"ej" = (/obj/structure/kitchenspike,/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"em" = (/obj/machinery/door/airlock/maintenance/common,/obj/effect/floor_decal/rust,/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"en" = (/obj/structure/table/glass,/obj/machinery/door/window/eastleft{req_access = null},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"eo" = (/obj/structure/bed/chair/sofa/left/brown,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"ep" = (/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"er" = (/obj/effect/floor_decal/rust,/obj/structure/table/steel,/obj/item/weapon/weldingtool{pixel_x = 1; pixel_y = -4},/obj/item/clothing/glasses/welding{pixel_x = -3; pixel_y = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"et" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"ev" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/two) +"ey" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/bluedouble,/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"ez" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"eC" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"eF" = (/obj/item/weapon/stool/baystool/padded{dir = 1},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"eG" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"eH" = (/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"eL" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/handcuffs{pixel_y = -5},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs{pixel_y = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"eS" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"eU" = (/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"eV" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/firealarm{dir = 8; pixel_x = -27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"eW" = (/obj/machinery/door/airlock{id_tag = "L7 Room 3"; name = "Private Room 3"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"eY" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/item/weapon/material/kitchen/rollingpin,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"fb" = (/obj/random/trash_pile,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"fc" = (/obj/structure/bed/chair/wood{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"ff" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/weapon/storage/pill_bottle/happy,/obj/item/clothing/under/bathrobe,/obj/item/clothing/under/bathrobe,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"fi" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"fl" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"fu" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/machinery/door/firedoor/glass/hidden/steel{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"fv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"fx" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"fy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{pixel_y = 26},/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"fA" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/machinery/alarm{dir = 8; pixel_x = 27},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"fD" = (/obj/machinery/door/airlock{id_tag = "L7 Room 1"; name = "Private Room 1"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"fH" = (/turf/simulated/wall,/area/awaymission/lucky7/privategameroom/three) +"fM" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"fN" = (/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"fO" = (/obj/structure/flora/pottedplant/tall,/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hotelhall) +"fQ" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/privateroom) +"fS" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hall2) +"fT" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"fU" = (/obj/structure/table/woodentable,/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"fX" = (/obj/effect/floor_decal/corner/lightgrey{dir = 10},/obj/effect/floor_decal/corner/lightgrey{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/structure/closet/firecloset,/turf/simulated/floor/tiled/monotile,/area/awaymission/lucky7/entry) +"fZ" = (/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/medical) +"ga" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/bed/chair/office,/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"ge" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall2) +"gf" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"gh" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"gi" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor/eastleft{dir = 2},/obj/item/weapon/pen,/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "casino_check"; opacity = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"gr" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"gx" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"gB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"gD" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"gG" = (/turf/simulated/wall,/area/awaymission/lucky7/hall2) +"gH" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"gL" = (/turf/simulated/wall,/area/awaymission/lucky7/dock1) +"gN" = (/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"gS" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"gU" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"gV" = (/obj/machinery/door/airlock{name = "Arcade"},/obj/structure/cable/green{icon_state = "4-8"},/obj/item/tape/engineering,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"gZ" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"hc" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"hh" = (/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"hi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "1-8"},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"hm" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"hn" = (/obj/effect/floor_decal/spline/plain{dir = 6},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"ho" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"hq" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"hu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"hw" = (/obj/machinery/clawmachine,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"hy" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/privateroom/five) +"hD" = (/obj/item/weapon/stool/padded{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"hF" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/lightgrey/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"hI" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "dock_d1l_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "dock_d1l_sensor"; pixel_x = 30; pixel_y = 8},/obj/effect/map_helper/airlock/atmos/chamber_pump,/obj/effect/map_helper/airlock/sensor/chamber_sensor,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"hM" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/gateway) +"hN" = (/obj/structure/table/marble,/obj/effect/floor_decal/spline/plain{dir = 8},/obj/machinery/chemical_dispenser/premium/full{dir = 4},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"hO" = (/turf/simulated/wall,/area/awaymission/lucky7/privateroom) +"hS" = (/obj/structure/table/marble,/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"hU" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"ia" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"ib" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"id" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) +"il" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"ip" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"ir" = (/obj/structure/table/gamblingtable,/obj/item/weapon/storage/pill_bottle/dice_nerd,/obj/machinery/light,/turf/simulated/floor/carpet/retro,/area/awaymission/lucky7/arcade) +"it" = (/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"iu" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"iv" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"iy" = (/obj/structure/table/bench/padded,/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"iA" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 2},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"iB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"iE" = (/obj/effect/floor_decal/techfloor/orange{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"iG" = (/obj/random/trash_pile,/obj/random/trash,/obj/random/trash,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"iJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"iM" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 1},/obj/machinery/vending/wallmed1/public{pixel_y = 28},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"iV" = (/obj/structure/flora/pottedplant/tropical,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"iZ" = (/obj/effect/floor_decal/techfloor/orange,/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"jb" = (/obj/structure/flora/pottedplant/tall,/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hall2) +"jc" = (/obj/effect/floor_decal/rust,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"jd" = (/obj/structure/cable/green{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"je" = (/obj/structure/closet,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"jl" = (/obj/structure/closet,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/obj/random/maintenance,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"jo" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"jp" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"jq" = (/obj/effect/floor_decal/spline/plain,/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"jr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/door/firedoor/glass/hidden/steel,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"jt" = (/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"jv" = (/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/medical) +"jx" = (/obj/structure/table/woodentable,/obj/item/trash/asian_bowl,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"jA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"jB" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"jC" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"jH" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"jI" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "dock_d1l"; name = "interior access button"; pixel_x = -28; pixel_y = -26; req_access = list(13)},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"jJ" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"jK" = (/obj/structure/table/steel,/obj/random/junk,/obj/random/maintenance,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"jM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"jN" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"jP" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"jQ" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"jS" = (/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"jV" = (/obj/structure/cable/green{icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"jW" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/three) +"ka" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/effect/floor_decal/rust,/obj/machinery/atmospherics/pipe/tank/air/full{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"kb" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"kc" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/lightgrey/bordercorner,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"kd" = (/turf/simulated/floor/carpet/purcarpet,/area/awaymission/lucky7/privateroom/vip) +"ke" = (/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"kh" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"km" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"kp" = (/obj/structure/cable/green{icon_state = "2-4"},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"ks" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"kv" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"kx" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"ky" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"kz" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/effect/floor_decal/corner/lightgrey/border,/obj/machinery/light,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"kD" = (/turf/simulated/wall,/area/awaymission/lucky7/security) +"kF" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 4},/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hall2) +"kJ" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"kL" = (/obj/structure/table/marble,/obj/effect/floor_decal/spline/plain{dir = 1},/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"kN" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"kO" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"kP" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"kQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"kV" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"lh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"li" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"lm" = (/obj/machinery/alarm{dir = 4; pixel_x = -27},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"ln" = (/obj/item/weapon/stool/padded{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"lp" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/deliveryChute,/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"lq" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"lu" = (/turf/simulated/wall,/area/awaymission/lucky7/maint1) +"lw" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"lx" = (/obj/random/drinkbottle,/obj/structure/table/fancyblack,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"lB" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/obj/structure/flora/pottedplant/stoutbush,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"lE" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space) +"lF" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/industrial/warning/cee{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"lI" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"lL" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"lS" = (/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"lZ" = (/obj/structure/bed/chair/comfy/beige,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"mb" = (/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/int_door,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"md" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"mh" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/pipe/tank/air/full{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"mo" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"mp" = (/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"mq" = (/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 6},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"mt" = (/obj/structure/closet/crate/trashcart,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"mu" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"mv" = (/obj/structure/table/standard,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"mw" = (/obj/structure/flora/pottedplant/unusual,/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"mC" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"mD" = (/obj/effect/floor_decal/techfloor/orange{dir = 9},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"mE" = (/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"mH" = (/obj/machinery/gateway,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"mI" = (/obj/random/trash,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"mJ" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/janitor,/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"mK" = (/turf/simulated/wall,/area/awaymission/lucky7/casinofloor) +"mL" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"mN" = (/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{dir = 1; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"mO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{icon_state = "2-4"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"mQ" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"mR" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/bed/chair/office,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"mS" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"mT" = (/obj/random/trash,/obj/random/trash,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"mV" = (/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"mW" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"mX" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"na" = (/obj/structure/casino_table/blackjack_m{dir = 8},/obj/machinery/light/floortube{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"ng" = (/obj/item/weapon/stool/padded{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"nh" = (/obj/structure/window/basic,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"nj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"nl" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"nn" = (/obj/machinery/vending/deluxe_boozeomat/open,/obj/effect/floor_decal/spline/plain,/turf/simulated/floor/tiled/techmaint/airless,/area/awaymission/lucky7/barbackroom) +"np" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"nq" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"ns" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"nv" = (/obj/structure/table/gamblingtable,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"nw" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"nz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"nA" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"nC" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"nD" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/obj/machinery/alarm{dir = 4; pixel_x = -27},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"nE" = (/obj/machinery/door/airlock{id_tag = "L7 PGR 1"; name = "Private Game Room 1"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"nK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/int_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"nM" = (/obj/machinery/door/airlock{id_tag = "L7 PGR 2"; name = "Private Game Room 2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"nN" = (/obj/machinery/gibber,/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"nR" = (/obj/structure/table/bench/padded,/obj/machinery/light,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"nS" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/obj/structure/cable/green,/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"nX" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"nY" = (/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"ob" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"og" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"oh" = (/obj/machinery/door/airlock{id_tag = "L7 PGR 3"; name = "Private Game Room 3"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"ol" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"op" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{icon_state = "2-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"oq" = (/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"or" = (/obj/structure/bed/chair/sofa/left/purp,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"os" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"oA" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"oD" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"oE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"oF" = (/obj/random/trash_pile,/obj/random/trash,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"oG" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"oH" = (/obj/structure/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair_preview"},/obj/machinery/light,/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"oO" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"oP" = (/obj/machinery/alarm{dir = 4; pixel_x = -27},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"oS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"oT" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/radio,/obj/item/ammo_casing/spent{pixel_x = -12; pixel_y = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"oV" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"oY" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hotelhall) +"pb" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/arcade) +"pe" = (/obj/machinery/door/airlock/glass_security{req_one_access = null},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"pk" = (/obj/structure/table/glass,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 8},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"pn" = (/obj/item/weapon/flame/candle/candelabra/everburn,/obj/structure/table/fancyblack,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"pr" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "dock_d1a1"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; req_one_access = list(13)},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"ps" = (/obj/structure/closet/walllocker_double{dir = 8; name = "Game Cabinet"; pixel_x = -28},/obj/item/weapon/book/manual/wizzoffguide,/obj/item/weapon/deck/wizoff,/obj/item/weapon/storage/pill_bottle/dice_nerd,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards/casino,/obj/item/weapon/deck/cah,/obj/item/weapon/deck/cah/black,/obj/item/weapon/storage/dicecup,/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"py" = (/obj/machinery/button/remote/airlock{id = "L7 PGR 1"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"pA" = (/obj/structure/bed/chair/sofa/bench/left{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 10},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"pB" = (/obj/machinery/button/remote/airlock{id = "L7 PGR 2"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"pE" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/three) +"pH" = (/obj/machinery/button/remote/blast_door{dir = 8; id = "L7 Cell 1"; name = "Cell 1 Door"; pixel_x = 28; req_access = null},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"pL" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"pM" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"pN" = (/obj/structure/bed/chair/comfy/beige,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"pO" = (/obj/structure/table/rack/shelf/steel,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/obj/random/tool,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"pP" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"pV" = (/turf/simulated/wall,/area/awaymission/lucky7/loungeprivateroom) +"pX" = (/obj/structure/table/reinforced,/obj/item/ammo_magazine/m45{pixel_x = -5; pixel_y = -3},/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45{pixel_x = 5; pixel_y = 3},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"qd" = (/obj/machinery/button/remote/airlock{id = "L7 PGR 3"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"qg" = (/obj/effect/floor_decal/corner/lightgrey{dir = 10},/obj/effect/floor_decal/corner/lightgrey{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/machinery/vending/sol,/turf/simulated/floor/tiled/monotile,/area/awaymission/lucky7/hotelhall) +"qk" = (/obj/structure/railing{dir = 1},/obj/random/trash_pile,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"qs" = (/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"qt" = (/obj/effect/shuttle_landmark{base_area = /area/space; base_turf = /turf/space; docking_controller = null; landmark_tag = "l7_dock_near"; name = "Near Dock"},/turf/space,/area/space) +"qv" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/captaindouble,/obj/structure/curtain/open/bed,/turf/simulated/floor/carpet/purcarpet,/area/awaymission/lucky7/privateroom/vip) +"qw" = (/obj/effect/floor_decal/rust,/obj/structure/table/rack/shelf/steel,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"qz" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"qA" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"qB" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"qF" = (/turf/simulated/wall,/area/awaymission/lucky7/breakroom) +"qG" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"qH" = (/obj/structure/cable/green{icon_state = "2-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"qL" = (/obj/structure/table/borosilicate,/obj/structure/dancepole,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"qM" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"qN" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/lounge) +"qS" = (/obj/structure/casino_table/blackjack_l{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"qU" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"qW" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/grey/border{dir = 1},/obj/machinery/vending/wallmed1/public{pixel_y = 28},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"qY" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"rb" = (/obj/machinery/gateway{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"re" = (/obj/structure/bed/chair/comfy/beige,/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"rf" = (/obj/effect/floor_decal/techfloor/orange{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"rg" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/grey/border{dir = 6},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"rj" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/casinofloor) +"rm" = (/turf/space,/area/space) +"rn" = (/obj/structure/table/woodentable,/obj/effect/floor_decal/spline/plain{dir = 8},/obj/item/clothing/mask/smokable/pipe,/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"rp" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"ru" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"rw" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/bar) +"rx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"rA" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance/common{name = "Trash Collection"},/obj/structure/catwalk,/obj/structure/cable/green{dir = 1; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"rB" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"rK" = (/obj/structure/bed/chair/sofa/bench/right{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 6},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"rM" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/railing,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"rN" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/bar_guide,/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"rT" = (/obj/structure/casino_table/blackjack_r{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"rU" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"rZ" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"sc" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"sg" = (/obj/machinery/sleeper{dir = 4},/obj/effect/floor_decal/corner_steel_grid{dir = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"si" = (/obj/structure/bed/chair/wood{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"sk" = (/obj/random/trash,/obj/random/trash,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"sm" = (/obj/structure/table/standard,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"so" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"sp" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/firealarm{dir = 8; pixel_x = -27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"sq" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"ss" = (/obj/structure/table/woodentable,/obj/item/trash/plate,/obj/item/weapon/material/kitchen/utensil/fork/plastic,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"sv" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"sB" = (/obj/machinery/washing_machine,/obj/item/clothing/under/modjump3,/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"sH" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/yellow/border{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"sM" = (/obj/structure/catwalk,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"sQ" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"sS" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"sT" = (/turf/simulated/wall,/area/awaymission/lucky7/maint2) +"sU" = (/obj/effect/floor_decal/techfloor/orange{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"sV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"sX" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/cigar/havana{pixel_x = -2; pixel_y = 2},/obj/item/weapon/storage/fancy/cigar{pixel_x = 2; pixel_y = 3},/obj/effect/floor_decal/spline/plain,/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/bar) +"sZ" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"tc" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"td" = (/obj/structure/casino_table/roulette_chart,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"te" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"tm" = (/obj/machinery/vending/deluxe_dinner/open,/obj/effect/floor_decal/spline/plain,/turf/simulated/floor/tiled/techmaint/airless,/area/awaymission/lucky7/barbackroom) +"to" = (/obj/effect/floor_decal/spline/plain{dir = 4},/obj/item/weapon/stool/padded{dir = 8},/obj/effect/decal/cleanable/filth,/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"tp" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"tr" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/three) +"ts" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"tt" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/machinery/alarm{dir = 8; pixel_x = 27},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"tv" = (/obj/structure/casino_table/roulette_table,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"tz" = (/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"tD" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"tE" = (/obj/structure/table/marble,/obj/item/weapon/material/ashtray/glass,/obj/machinery/light/floortube{dir = 4},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"tG" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"tH" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"tJ" = (/obj/effect/floor_decal/sign/dock/one,/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"tM" = (/obj/structure/table/gamblingtable,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/structure/cable/green{icon_state = "0-2"},/obj/effect/floor_decal/corner/yellow/border{dir = 5},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"tQ" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/red/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"tV" = (/obj/effect/floor_decal/techfloor/orange{dir = 1},/obj/effect/floor_decal/techfloor/hole/right{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"tY" = (/obj/structure/table/gamblingtable,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"tZ" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"ua" = (/obj/machinery/door/firedoor/glass/hidden/steel,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"ub" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"uc" = (/obj/effect/floor_decal/techfloor/orange{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"ue" = (/obj/structure/bed/chair/sofa/bench/right,/obj/effect/floor_decal/borderfloorblack{dir = 9},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"uf" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 4},/obj/structure/flora/pottedplant,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"up" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"uu" = (/turf/simulated/wall,/area/awaymission/lucky7/privateroom/two) +"uv" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"ux" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/door/firedoor/glass/hidden/steel,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"uy" = (/obj/structure/cable/green{icon_state = "2-4"},/obj/effect/floor_decal/rust,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"uz" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"uA" = (/obj/random/junk,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance/engineering,/obj/structure/table/rack/steel,/obj/random/contraband,/obj/structure/railing,/obj/structure/railing{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"uB" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"uE" = (/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"uF" = (/obj/structure/casino_table/craps,/obj/item/weapon/dice{pixel_x = 4; pixel_y = 6},/obj/machinery/light/floortube{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"uG" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom) +"uH" = (/obj/structure/table/woodentable,/obj/item/weapon/flame/candle,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"uI" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"uJ" = (/obj/machinery/door/window/brigdoor/southleft{dir = 8; id = "L7 Cell 1"; name = "Cell 1"; req_access = list(2)},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"uL" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/closet/firecloset,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"uO" = (/obj/random/trash_pile,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"uR" = (/turf/simulated/wall,/area/awaymission/lucky7/privateroom/four) +"uY" = (/obj/structure/casino_table/craps{dir = 1},/obj/item/weapon/dice,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"uZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"va" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{dir = 1; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"vb" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"vd" = (/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"vf" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"vg" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"vk" = (/obj/effect/floor_decal/rust,/obj/random/trash_pile,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"vo" = (/obj/machinery/door/airlock/glass{name = "Dock Lounge"},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"vq" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"vr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"vt" = (/obj/random/soap,/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/four) +"vu" = (/obj/effect/floor_decal/spline/plain{dir = 5},/obj/item/weapon/stool/padded{dir = 8},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"vx" = (/obj/structure/casino_table/blackjack_m,/obj/machinery/light/floortube{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"vy" = (/obj/item/weapon/stool/baystool/padded{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"vN" = (/obj/effect/floor_decal/rust,/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"vO" = (/obj/structure/lattice,/turf/space,/area/space) +"vR" = (/obj/structure/casino_table/blackjack_l{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"vT" = (/obj/effect/floor_decal/rust,/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"vU" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"vZ" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"wb" = (/obj/structure/bed/chair/sofa/left/black{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"wc" = (/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/int_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"wd" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"we" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/casino,/obj/item/weapon/pen,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"wj" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor/glass/hidden/steel{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"wk" = (/obj/structure/bed/chair/sofa/right/black{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"wl" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"wo" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"wq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/button/remote/airlock{id = "L7 Room 4"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/machinery/light_switch{pixel_x = 33; pixel_y = 26},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"wt" = (/obj/structure/cable/green{icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"wu" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom) +"wv" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"ww" = (/obj/structure/table/marble,/obj/effect/floor_decal/spline/plain{dir = 8},/obj/machinery/chemical_dispenser/premium/full{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"wC" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom) +"wG" = (/obj/structure/table/woodentable,/obj/item/trash/asian_bowl,/obj/item/weapon/material/kitchen/utensil/fork/plastic,/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"wJ" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"wK" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/weapon/towel/random,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"wL" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"wT" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"wY" = (/obj/structure/bed/chair/sofa/corner/brown{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"xb" = (/obj/structure/table/rack/steel,/obj/random/maintenance,/obj/random/maintenance,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"xd" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"xh" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/embedded_controller/radio/airlock/docking_port{dir = 8; frequency = 1380; id_tag = "l7_dock_d2a3"; pixel_x = 28},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"xm" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"xn" = (/turf/simulated/wall,/area/awaymission/lucky7/dock2) +"xq" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/yellow/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"xr" = (/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/random/medical,/obj/machinery/light,/obj/random/medical,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"xt" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"xv" = (/obj/structure/table/woodentable,/obj/item/trash/plate,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"xz" = (/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"xC" = (/obj/machinery/light,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"xF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"xH" = (/obj/structure/casino_table/craps,/obj/machinery/light/floortube{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"xJ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor/glass/hidden/steel{dir = 1},/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"xK" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"xL" = (/obj/effect/decal/cleanable/blood/oil,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"xM" = (/obj/item/weapon/stool/baystool/padded{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"xN" = (/obj/machinery/holoplant,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"xU" = (/obj/item/weapon/gun/projectile/shotgun/pump{ammo_type = /obj/item/ammo_casing/a12g/pellet; pixel_x = 1; pixel_y = 4},/obj/item/weapon/gun/projectile/shotgun/pump{ammo_type = /obj/item/ammo_casing/a12g/pellet; pixel_x = 2; pixel_y = -6},/obj/structure/table/rack/gun_rack,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/red/bordercorner2,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"xZ" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"yb" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"yf" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/four) +"yg" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"yi" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/four) +"yk" = (/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"yo" = (/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"yp" = (/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"yv" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/weapon/towel/random,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"yw" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/grey/border{dir = 5},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"yy" = (/obj/structure/bed/chair/sofa/right/purp{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"yz" = (/obj/machinery/door/airlock/multi_tile/glass{name = "Dock Lounge"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/lounge) +"yA" = (/obj/structure/table/woodentable,/obj/random/maintenance/foodstuff,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"yD" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"yH" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"yO" = (/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"yR" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/machinery/door/firedoor/glass,/obj/random/maintenance/foodstuff,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"yX" = (/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"yY" = (/turf/simulated/wall,/area/awaymission/lucky7/arcade) +"yZ" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"za" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"zg" = (/obj/structure/table/gamblingtable,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"zk" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"zp" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"zq" = (/obj/structure/cable/green{icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"zr" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "dock_d1l_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "dock_d1l_sensor"; pixel_x = 30; pixel_y = 8},/obj/effect/map_helper/airlock/atmos/chamber_pump,/obj/effect/map_helper/airlock/sensor/chamber_sensor,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"zv" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"zx" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"zD" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"zE" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"zH" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"zK" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"zM" = (/obj/structure/table/woodentable,/obj/item/trash/plate,/obj/item/weapon/material/kitchen/utensil/fork/plastic,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"zQ" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "2-4"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"zR" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"zV" = (/obj/effect/floor_decal/rust,/obj/structure/table/steel,/obj/random/tool,/obj/random/maintenance,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"zW" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"zY" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/catwalk,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Ab" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"Am" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"},/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"Ap" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"Ar" = (/obj/effect/floor_decal/rust,/obj/structure/table/rack/shelf/steel,/obj/random/maintenance/engineering,/obj/random/contraband,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"Av" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "dock_d1l"; name = "interior access button"; pixel_x = -28; pixel_y = -26; req_access = list(13)},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"Ax" = (/obj/machinery/door/airlock/maintenance/common,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Ay" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "dock_d1a1"; name = "interior access button"; pixel_x = -28; pixel_y = 26; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"AF" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"AG" = (/obj/structure/table/gamblingtable,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"AJ" = (/obj/random/trash_pile,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"AK" = (/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/turf/simulated/floor/tiled/freezer,/area/awaymission/lucky7/privateroom/vip) +"AN" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/privateroom/three) +"AO" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/two) +"AP" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 1},/obj/structure/flora/pottedplant,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"AQ" = (/obj/machinery/vending/deluxe_cigs/open,/obj/effect/floor_decal/spline/plain,/obj/structure/cable/green{icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/tiled/techmaint/airless,/area/awaymission/lucky7/barbackroom) +"AS" = (/obj/structure/bed/chair/sofa/bench,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"AU" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/grey/border{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"AW" = (/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals6,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"AX" = (/obj/structure/disposalpipe/junction/yjunction{dir = 1},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"AY" = (/obj/structure/flora/pottedplant/tall,/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hotelhall) +"Ba" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"Be" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Bf" = (/turf/simulated/wall,/area/awaymission/lucky7/lounge) +"Bi" = (/obj/effect/floor_decal/rust,/obj/random/maintenance,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Bm" = (/obj/machinery/door/airlock/maintenance/common,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/maint2) +"Bq" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/grey/border{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"Bs" = (/obj/effect/floor_decal/spline/plain{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"BA" = (/obj/structure/closet/secure_closet/bar,/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"BE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"BH" = (/obj/structure/bed/chair/sofa/right/black{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"BK" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"BM" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/disposalpipe/junction{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"BQ" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"BT" = (/obj/structure/table/woodentable,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"BV" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/bed/chair/sofa/left/black{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"BW" = (/obj/effect/floor_decal/rust,/obj/structure/closet,/obj/random/junk,/obj/random/junk,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/obj/random/maintenance,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"Cb" = (/obj/structure/table/standard,/obj/item/clothing/under/suit_jacket/really_black{pixel_x = 5; pixel_y = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"Cf" = (/obj/random/soap,/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/five) +"Ch" = (/obj/machinery/door/airlock/glass_security{req_one_access = null},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Ci" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"Ck" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Cl" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/bar) +"Cm" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"Cn" = (/obj/machinery/door/airlock{id_tag = "br bathroom"; name = "Bathroom"},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"Co" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"Cp" = (/obj/machinery/door/airlock/freezer{name = "Freezer"},/turf/simulated/floor/tiled/freezer/cold,/area/awaymission/lucky7/kitchen) +"Cu" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"CC" = (/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"CD" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"CE" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/door/firedoor/glass/hidden/steel,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"CG" = (/obj/structure/table/gamblingtable,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"CI" = (/obj/machinery/door/firedoor/glass/hidden/steel{dir = 2},/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"CM" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/yellow/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"CN" = (/obj/effect/floor_decal/spline/plain{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"CO" = (/obj/structure/disposalpipe/junction{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"CQ" = (/obj/effect/floor_decal/spline/plain{dir = 9},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"CR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"CU" = (/obj/structure/table/steel,/obj/random/tool,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"CW" = (/obj/structure/table/steel,/obj/item/stack/cable_coil,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"CZ" = (/obj/structure/frame,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Db" = (/obj/effect/floor_decal/spline/plain{dir = 1},/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"Dg" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"Dh" = (/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"Di" = (/turf/simulated/wall,/area/awaymission/lucky7/workshop) +"Dk" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/four) +"Dm" = (/obj/effect/floor_decal/spline/plain{dir = 10},/obj/item/weapon/stool/padded{dir = 1},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"Dn" = (/obj/structure/bed/chair/comfy/beige,/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"Dp" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/effect/floor_decal/techfloor/hole/right{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"Dv" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/bar) +"Dw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"Dx" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_coffee/full{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"DD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"DF" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"DG" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"DH" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"DI" = (/obj/effect/floor_decal/spline/plain{dir = 5},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"DL" = (/turf/simulated/wall,/area/awaymission/lucky7/privateroom/five) +"DO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"DP" = (/obj/structure/morgue{dir = 2},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/medical) +"DQ" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"DR" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"DS" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"DT" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"DY" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"DZ" = (/obj/effect/shuttle_landmark{base_area = /area/space; base_turf = /turf/space; docking_controller = "l7_dock_d1a1"; landmark_tag = "l7_dockarm_d1a1"; name = "Dock D1A1"},/turf/space,/area/space) +"Ee" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "dock_d1a3_pump"},/obj/machinery/light/small,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "dock_d1a3_sensor"; pixel_y = -25},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "l7_dock_d1a2"; pixel_y = 28},/obj/effect/map_helper/airlock/atmos/chamber_pump,/obj/effect/map_helper/airlock/sensor/chamber_sensor,/obj/effect/floor_decal/industrial/warning/cee{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Ei" = (/obj/machinery/door/airlock{id_tag = "L7 VIP Room"; name = "VIP Room"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"Es" = (/obj/effect/map_helper/airlock/door/int_door,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 8},/obj/machinery/door/airlock/glass_external,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Et" = (/obj/machinery/door/airlock/engineering{name = "Workshop"; req_one_access = null},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Ew" = (/obj/effect/map_helper/airlock/door/int_door,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 8},/obj/machinery/door/airlock/glass_external,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"Ez" = (/obj/structure/table/steel,/obj/item/stack/material/diamond{amount = 50; pixel_x = -5; pixel_y = -5},/obj/item/stack/material/diamond{amount = 50},/obj/item/stack/material/diamond{amount = 50; pixel_x = 5; pixel_y = 5},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"EB" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"EC" = (/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"EF" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"EI" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/gateway) +"EM" = (/obj/effect/floor_decal/techfloor/orange,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"EN" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"EO" = (/obj/machinery/door/airlock/maintenance/common,/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"ES" = (/obj/structure/railing,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"ET" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"EW" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/blood/oil,/obj/structure/railing,/obj/machinery/power/terminal{dir = 1},/obj/structure/cable{icon_state = "0-2"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Fa" = (/obj/structure/closet,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/obj/random/maintenance/engineering,/obj/item/device/flashlight/color,/obj/structure/railing{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Fd" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/four) +"Fj" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"Fl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{icon_state = "2-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"Fm" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/grey/border{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"Fp" = (/obj/effect/floor_decal/spline/plain{dir = 10},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"Fr" = (/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"Ft" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_one_access = null},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/medical) +"Fu" = (/turf/simulated/wall,/area/awaymission/lucky7/bar) +"Fv" = (/obj/item/weapon/stool/padded{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Fw" = (/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"FF" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"FG" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/grey/border,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hotelhall) +"FJ" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"FK" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"FL" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"FN" = (/obj/random/trash_pile,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"FQ" = (/obj/effect/landmark/hidden_level,/turf/space,/area/space) +"FT" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"FU" = (/obj/structure/closet,/obj/random/junk,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"FV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"FW" = (/obj/random/trash,/obj/machinery/light/small{dir = 4},/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"FY" = (/obj/structure/closet,/obj/random/junk,/obj/random/junk,/obj/random/maintenance,/obj/random/maintenance,/obj/effect/floor_decal/rust,/obj/random/contraband,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"FZ" = (/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Ge" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/two) +"Gf" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"Gg" = (/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"Gh" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"Gi" = (/obj/structure/railing{dir = 1},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Gj" = (/turf/simulated/wall,/area/awaymission/lucky7/hotelhall) +"Gk" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/carpet/purcarpet,/area/awaymission/lucky7/privateroom/vip) +"Gm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{icon_state = "1-4"},/obj/machinery/button/remote/airlock{id = "L7 VIP Room"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/machinery/light_switch{pixel_x = 33; pixel_y = 26},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"Gn" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Gp" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"Gr" = (/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Gs" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Gz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"GA" = (/obj/effect/floor_decal/techfloor/orange{dir = 4},/obj/effect/floor_decal/techfloor/hole/right{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/gateway) +"GE" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/industrial/warning/cee{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"GH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"GJ" = (/turf/simulated/wall,/area/awaymission/lucky7/privategameroom/two) +"GO" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"GP" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = 5; pixel_y = 8},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"GQ" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/obj/random/maintenance/medical,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/medical) +"GR" = (/obj/structure/table/standard,/obj/machinery/button/remote/airlock{id = "br bathroom"; name = "Bathroom Lock"; pixel_x = -20; pixel_y = 10; specialfunctions = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"GS" = (/obj/effect/floor_decal/rust,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"GT" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"GV" = (/obj/structure/cable/green{icon_state = "1-4"},/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"GX" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"Ha" = (/obj/machinery/vending/wallmed1/public{pixel_x = 28},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"Hb" = (/obj/structure/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair_preview"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"Hf" = (/obj/structure/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair_preview"},/obj/machinery/light,/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"Hg" = (/obj/effect/floor_decal/borderfloorblack,/obj/structure/bed/chair/sofa/bench{dir = 1},/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"Hl" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Hm" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Hn" = (/obj/structure/table/marble,/obj/machinery/light/floortube{dir = 1},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"Ht" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "dock_d1a1"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; req_one_access = list(13)},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Hx" = (/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Hz" = (/obj/random/trash,/obj/structure/railing{dir = 8},/obj/structure/railing{dir = 1},/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"HA" = (/obj/structure/bed/chair/comfy/beige{dir = 1},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"HB" = (/obj/structure/bed/chair/comfy/beige{dir = 1},/obj/machinery/light,/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"HF" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/grille,/turf/space,/area/space) +"HH" = (/obj/effect/floor_decal/rust,/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"HJ" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"HM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"HQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/button/remote/airlock{id = "L7 Room 1"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/machinery/light_switch{pixel_x = 33; pixel_y = 26},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"HS" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"HW" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"HZ" = (/obj/structure/table/rack/steel,/obj/item/weapon/spacecash/c1000{pixel_x = 6; pixel_y = 6},/obj/item/weapon/spacecash/c1000{pixel_x = 3; pixel_y = 3},/obj/item/weapon/spacecash/c1000,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"Ig" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"Ij" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"Ik" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Im" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/breakroom) +"In" = (/obj/structure/table/glass,/obj/random/medical,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 8},/obj/item/weapon/tool/screwdriver,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Iq" = (/obj/structure/table/rack,/obj/item/ammo_magazine/ammo_box/b12g/pellet{pixel_x = 3; pixel_y = -3},/obj/item/ammo_magazine/ammo_box/b12g/pellet{pixel_x = -5; pixel_y = -3},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/obj/item/ammo_magazine/ammo_box/b12g/pellet{pixel_x = 3; pixel_y = 3},/obj/item/ammo_magazine/ammo_box/b12g/pellet{pixel_x = -5; pixel_y = 3},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Ir" = (/obj/structure/table/glass,/obj/random/soap,/obj/item/weapon/towel/random,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"Is" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"It" = (/obj/structure/bed/chair/comfy/beige,/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"Iu" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/weapon/towel/random,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"Iv" = (/obj/effect/floor_decal/rust,/obj/random/maintenance,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"Iw" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"IC" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/five) +"IF" = (/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"IJ" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/weapon/towel/random,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"IM" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/machinery/reagentgrinder,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"IN" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/grey/border{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"IR" = (/obj/random/soap,/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/two) +"IS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Jc" = (/obj/structure/table/steel,/obj/random/cash/huge{pixel_y = 8},/obj/random/cash/huge,/obj/item/weapon/bikehorn{pixel_x = -7; pixel_y = 7},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"Jd" = (/obj/structure/toilet{pixel_y = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/five) +"Jg" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/industrial/danger/corner{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Jj" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"Jp" = (/obj/machinery/body_scanconsole{dir = 4},/obj/effect/floor_decal/corner_steel_grid{dir = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Jq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Jw" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "casino_check"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Jy" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"Jz" = (/obj/structure/cable/green{icon_state = "2-4"},/obj/structure/cable/green{icon_state = "1-4"},/obj/structure/disposalpipe/junction/yjunction{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"JB" = (/turf/simulated/wall,/area/awaymission/lucky7/barbackroom) +"JC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"JE" = (/obj/effect/floor_decal/spline/plain{dir = 4},/obj/item/weapon/stool/padded{dir = 8},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"JK" = (/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "l7_dock_d1a1"; pixel_y = 28},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "dock_d1a1_sensor"; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "dock_d1a1_pump"},/obj/effect/map_helper/airlock/atmos/chamber_pump,/obj/effect/map_helper/airlock/sensor/chamber_sensor,/obj/effect/floor_decal/industrial/warning/cee{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"JL" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"JN" = (/obj/structure/casino_table/roulette_table,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"JP" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"JR" = (/obj/structure/disposalpipe/junction/yjunction{dir = 1},/obj/structure/cable/green{icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"JU" = (/obj/machinery/door/airlock/maintenance/common,/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"JW" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"Ka" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/bed/chair/sofa/bench/left,/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"Kf" = (/turf/simulated/wall,/area/awaymission/lucky7/kitchen) +"Ki" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Kj" = (/obj/structure/flora/pottedplant/tall,/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/hall2) +"Kk" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"Kl" = (/turf/simulated/wall,/area/awaymission/lucky7/medical) +"Km" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/alarm{dir = 1; pixel_y = -27},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Kn" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Ks" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"Kt" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/weapon/towel/random,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"Ku" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"Kw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/obj/item/stack/material/phoron{amount = 2},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Kx" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/junction{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"KA" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"KC" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"KE" = (/obj/structure/casino_table/blackjack_l,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"KG" = (/obj/machinery/door/airlock,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"KH" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"KI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"KK" = (/turf/simulated/wall,/area/awaymission/lucky7/privateroom/three) +"KL" = (/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"KM" = (/obj/machinery/door/airlock{id_tag = "L7 Room 4"; name = "Private Room 4"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"KN" = (/turf/simulated/wall/r_wall,/area/awaymission/lucky7/security) +"KR" = (/obj/random/trash_pile,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"KS" = (/obj/structure/table/steel,/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/blood/oil,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"KT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/industrial/warning/cee{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"KU" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/obj/effect/floor_decal/sign/dock/two,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"KY" = (/obj/structure/table/rack/steel,/obj/random/maintenance,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"KZ" = (/obj/structure/bed/chair/sofa/left/purp{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"Le" = (/obj/random/trash_pile,/obj/effect/floor_decal/rust,/obj/structure/railing{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Lg" = (/obj/random/trash,/obj/random/trash,/obj/machinery/light/small,/obj/structure/railing{dir = 8},/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"Lh" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"Li" = (/obj/effect/floor_decal/rust,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Lj" = (/obj/machinery/door/airlock{name = "Breakroom"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"Lk" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "dock_d1l"; name = "exterior access button"; pixel_x = 28; pixel_y = -6; req_access = list(13)},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Ll" = (/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -26},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Lo" = (/obj/structure/table/woodentable,/obj/item/trash/bowl,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Lq" = (/obj/item/modular_computer/console{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Lr" = (/obj/structure/closet/crate,/obj/random/tool,/obj/random/tool,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/machinery/light,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Ls" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/flora/pottedplant/unusual,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Lw" = (/turf/simulated/wall,/area/awaymission/lucky7/privateroom/vip) +"Lx" = (/obj/structure/salvageable/slotmachine2,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Ly" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet/purcarpet,/area/awaymission/lucky7/privateroom/vip) +"LA" = (/obj/structure/bed/chair/comfy/beige,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"LB" = (/obj/structure/salvageable/slotmachine1,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"LC" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2,/obj/effect/floor_decal/corner/paleblue/bordercorner2,/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"LE" = (/obj/machinery/slot_machine,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"LF" = (/obj/structure/table/steel,/obj/random/tool,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"LI" = (/obj/item/modular_computer/console{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"LJ" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/purpledouble,/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"LL" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/red/border{dir = 5},/obj/structure/closet/firecloset,/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"LN" = (/obj/structure/table/marble,/obj/random/drinkbottle,/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"LO" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/bed/chair/office,/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"LU" = (/obj/structure/table/woodentable,/obj/item/trash/plate,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"LV" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/structure/extinguisher_cabinet{dir = 8; pixel_x = 30},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"LY" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"Ma" = (/obj/structure/table/steel,/obj/random/tool,/obj/random/tool,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Mb" = (/obj/structure/table/woodentable,/obj/item/weapon/flame/candle,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Mc" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_y = -3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -7; pixel_y = -3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 7; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -7; pixel_y = 3},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Md" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 8; pixel_x = -27; start_charge = 0},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"Me" = (/obj/structure/closet/walllocker_double{dir = 8; name = "Game Cabinet"; pixel_x = -28},/obj/item/weapon/book/manual/wizzoffguide,/obj/item/weapon/deck/wizoff,/obj/item/weapon/storage/pill_bottle/dice_nerd,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards/casino,/obj/item/weapon/deck/cah,/obj/item/weapon/deck/cah/black,/obj/item/weapon/storage/dicecup,/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"Mf" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"Mg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Mh" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/grey/border{dir = 4},/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"Mk" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "dock_d1a3"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; req_one_access = list(13)},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Mm" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/machinery/light,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Mn" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/grey/border{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hotelhall) +"Mo" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"Mq" = (/obj/effect/floor_decal/corner/lightgrey{dir = 10},/obj/effect/floor_decal/corner/lightgrey{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/machinery/vending/cola/soft{dir = 4},/turf/simulated/floor/tiled/monotile,/area/awaymission/lucky7/lounge) +"Ms" = (/obj/machinery/vending/assist{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Mt" = (/obj/structure/bed/chair/sofa/brown,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Mw" = (/turf/simulated/wall,/area/awaymission/lucky7/gateway) +"My" = (/obj/machinery/gateway/centeraway,/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"MA" = (/obj/structure/flora/pottedplant/stoutbush,/obj/effect/floor_decal/spline/plain{dir = 10},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/bar) +"ME" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/lightgrey/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"MG" = (/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"MJ" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/lightgrey/border{dir = 6},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/lightgrey/bordercorner2,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"MQ" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"MV" = (/obj/effect/floor_decal/rust,/obj/random/junk,/obj/structure/table/rack/steel,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"MX" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench{pixel_x = 6; pixel_y = -3},/obj/item/device/multitool{pixel_x = -6},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"MY" = (/obj/effect/floor_decal/rust,/obj/structure/table/steel,/obj/item/stack/material/phoron{amount = 19},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"MZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"Na" = (/obj/structure/table/marble,/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"Nb" = (/obj/effect/floor_decal/corner/lightorange{dir = 5},/obj/effect/floor_decal/borderfloor/shifted{dir = 1},/obj/effect/floor_decal/corner/lightorange/border/shifted{dir = 1},/obj/structure/closet/secure_closet/brig{id = "Cell 1"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"Nc" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Nd" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Ng" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "1-8"},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"Ni" = (/obj/random/trash_pile,/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Nl" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/breakroom) +"Nm" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"No" = (/obj/machinery/door/morgue{dir = 2; name = "Private Room"; req_access = null},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Nq" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Nr" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Ny" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Nz" = (/obj/structure/coatrack,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"NC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/lounge) +"ND" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/button/remote/airlock{id = "L7 Room 5"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/machinery/light_switch{pixel_x = 33; pixel_y = 26},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"NF" = (/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"NG" = (/obj/structure/bed/chair/office/light{dir = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"NI" = (/obj/structure/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair_preview"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"NJ" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 8},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"NL" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock2) +"NN" = (/obj/machinery/washing_machine,/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"NQ" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"NR" = (/obj/machinery/button/remote/blast_door{dir = 8; id = "L7 Cell 2"; name = "Cell 2 Door"; pixel_x = 28; req_access = null},/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"NS" = (/obj/structure/table/woodentable,/obj/random/maintenance/foodstuff,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"NT" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "brig_lockdown"; name = "Security Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/security) +"NV" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"NY" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/medical) +"Oa" = (/obj/structure/undies_wardrobe,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"Of" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{req_one_access = null},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Og" = (/obj/machinery/gateway{dir = 10},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"Oj" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Ok" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Ol" = (/obj/item/weapon/stool/padded{dir = 1},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Om" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/flora/pottedplant,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Oo" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"Oq" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor/glass/hidden/steel{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"Or" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "dock_d1a1"; name = "interior access button"; pixel_x = -28; pixel_y = 26; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"Ot" = (/obj/effect/floor_decal/corner/lightorange{dir = 5},/obj/effect/floor_decal/borderfloor/shifted{dir = 1},/obj/effect/floor_decal/corner/lightorange/border/shifted{dir = 1},/obj/structure/closet/secure_closet/brig{id = "Cell 2"},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"Ou" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"Ow" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Ox" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"OA" = (/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"OB" = (/obj/effect/floor_decal/borderfloor/shifted{dir = 1},/obj/effect/floor_decal/corner/lightorange/border/shifted{dir = 1},/obj/effect/floor_decal/corner/lightorange{dir = 5},/obj/machinery/light/small{dir = 1},/obj/structure/bed/padded,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"OC" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"OE" = (/obj/machinery/light{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"OI" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"OJ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"OM" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"ON" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"OO" = (/obj/effect/floor_decal/corner/lightorange{dir = 5},/obj/effect/floor_decal/borderfloor/shifted{dir = 1},/obj/effect/floor_decal/corner/lightorange/border/shifted{dir = 1},/obj/structure/table/steel,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"OP" = (/turf/simulated/wall,/area/awaymission/lucky7/laundry) +"OS" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/alarm{dir = 4; pixel_x = -27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"OT" = (/obj/machinery/slot_machine,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"OW" = (/obj/effect/floor_decal/rust,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Pa" = (/obj/effect/floor_decal/spline/plain{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"Pc" = (/obj/structure/table/steel,/obj/random/maintenance/engineering,/obj/random/junk,/obj/effect/floor_decal/rust,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Pj" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Pk" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/chem_master/condimaster,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Pm" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "dock_d1l_pump"},/obj/effect/map_helper/airlock/atmos/chamber_pump,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Pn" = (/obj/structure/table/rack/steel,/obj/random/maintenance,/obj/random/junk,/obj/random/junk,/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/blood/oil,/obj/random/contraband,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Pq" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 5},/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 8; pixel_x = -27; start_charge = 0},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Ps" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Pu" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"Pw" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"Py" = (/obj/structure/closet/walllocker_double{dir = 8; name = "Game Cabinet"; pixel_x = -28},/obj/item/weapon/book/manual/wizzoffguide,/obj/item/weapon/deck/wizoff,/obj/item/weapon/storage/pill_bottle/dice_nerd,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards/casino,/obj/item/weapon/deck/cah,/obj/item/weapon/deck/cah/black,/obj/item/weapon/storage/dicecup,/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"PC" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/button/remote/airlock{id = "L7 Room 3"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/machinery/light_switch{pixel_x = 33; pixel_y = 26},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"PE" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"PF" = (/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"PG" = (/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/paleblue/bordercorner,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"PI" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"PJ" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"PN" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/two) +"PP" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"PQ" = (/obj/structure/bed/chair/sofa/right/brown,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"PT" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"PV" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/sink/kitchen{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"PX" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_soft/full{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Qa" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"Qd" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Qg" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/medical{name = "Clinic"; req_one_access = null},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Qi" = (/obj/machinery/door/airlock,/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"Qm" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/appliance/cooker/grill,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Qo" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/appliance/cooker/fryer,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Qp" = (/obj/effect/floor_decal/corner/lightgrey{dir = 10},/obj/effect/floor_decal/corner/lightgrey{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/machinery/vending/bepis,/turf/simulated/floor/tiled/monotile,/area/awaymission/lucky7/hotelhall) +"Qq" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"Qr" = (/obj/machinery/door/airlock/highsecurity{locked = 1; name = "Safe"; req_one_access = null},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"Qs" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Qt" = (/obj/structure/table/gamblingtable,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"Qv" = (/obj/structure/disposalpipe/segment{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Qz" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 8; pixel_x = -27; start_charge = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"QC" = (/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"QD" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom) +"QG" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/appliance/cooker/oven,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"QK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"QM" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 1; pixel_y = 27; start_charge = 0},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"QR" = (/obj/machinery/atm{pixel_y = 30},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"QU" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"QV" = (/obj/machinery/casino_prize_dispenser,/obj/effect/floor_decal/spline/plain{dir = 10},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"Rb" = (/obj/machinery/sleep_console{dir = 4},/obj/effect/floor_decal/corner_steel_grid{dir = 10},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Rc" = (/obj/effect/floor_decal/spline/plain,/obj/structure/table/woodentable,/obj/item/weapon/material/ashtray/glass,/obj/random/cash/big{pixel_x = 5; pixel_y = 8},/obj/random/cash/big,/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"Rf" = (/obj/machinery/casino_prize_dispenser,/obj/effect/floor_decal/spline/plain{dir = 6},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"Rk" = (/obj/machinery/chipmachine{pixel_y = 32},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Rm" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"Ro" = (/obj/structure/bed/chair/sofa/brown{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"Ru" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"Rw" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"Rx" = (/obj/effect/floor_decal/spline/plain,/obj/item/weapon/stool/padded{dir = 1},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"RF" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"RH" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"RL" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"RM" = (/turf/simulated/floor/carpet/purple,/area/awaymission/lucky7/privategameroom) +"RN" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"RQ" = (/obj/effect/floor_decal/rust,/obj/structure/table/rack/steel,/obj/random/tool,/obj/random/junk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"RT" = (/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"RV" = (/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"RW" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/lucky7/barbackroom) +"RX" = (/obj/structure/table/woodentable,/obj/item/trash/bowl,/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"RY" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"RZ" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/grey/border{dir = 9},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"Sd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"Sj" = (/obj/item/weapon/stool/padded,/obj/structure/disposalpipe/junction/yjunction{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Sk" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"Sl" = (/obj/machinery/door/airlock{id_tag = "L7 Room 4"; name = "Private Room 4"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"Sm" = (/obj/effect/shuttle_landmark{base_area = /area/space; base_turf = /turf/space; docking_controller = "l7_dock_d1a2"; landmark_tag = "l7_dockarm_d1a2"; name = "Dock D1A2"},/turf/space,/area/space) +"Sn" = (/obj/structure/bed/chair/sofa/brown{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"Sr" = (/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/breakroom) +"Ss" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/five) +"Sv" = (/obj/effect/floor_decal/spline/plain{dir = 6},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"Sw" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hotelhall) +"SE" = (/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"SF" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/grey/bordercorner,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"SG" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/two) +"SI" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/grey/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/laundry) +"SK" = (/obj/structure/table/woodentable,/obj/item/weapon/material/ashtray/glass,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"SM" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"SO" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/grey/border{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hotelhall) +"SP" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"SR" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"SS" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "dock_d1a3_pump"},/obj/machinery/light/small,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "dock_d1a3_sensor"; pixel_y = -25},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "l7_dock_d2a2"; pixel_y = 28},/obj/effect/map_helper/airlock/atmos/chamber_pump,/obj/effect/map_helper/airlock/sensor/chamber_sensor,/obj/effect/floor_decal/industrial/warning/cee{dir = 4},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"SX" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"SY" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable/green{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"SZ" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 1},/obj/structure/disposalpipe/segment{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Ta" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/stack/material/phoron{amount = 6},/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Td" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"Te" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"Tf" = (/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"Th" = (/obj/machinery/door/window/brigdoor/southleft{dir = 8; id = "L7 Cell 2"; name = "Cell 2"; req_access = list(2)},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/security) +"Tj" = (/obj/structure/bed/chair/sofa/brown{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"Tk" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"Tl" = (/obj/structure/mirror{pixel_y = 38},/obj/structure/sink{pixel_y = 20},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"Tn" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor/eastright{dir = 2},/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "casino_check"; opacity = 0},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Ts" = (/obj/structure/flora/pottedplant/stoutbush,/obj/effect/floor_decal/spline/plain{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/bar) +"Tt" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Tu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"Tv" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/vip) +"Tx" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/effect/decal/cleanable/egg_smudge,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Ty" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"TB" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/industrial/danger/corner{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"TD" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"TF" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/lightgrey/border{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"TH" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"TI" = (/obj/machinery/door/airlock{id_tag = "L7 Room 2"; name = "Private Room 2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"TK" = (/obj/structure/cable/green{icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"TM" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"TP" = (/obj/machinery/light{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"TQ" = (/obj/machinery/gateway{dir = 5},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"TR" = (/obj/structure/window/basic,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"TT" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"TU" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"TV" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/lucky7/dock1) +"TW" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/cable/green{icon_state = "2-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"TX" = (/obj/random/trash_pile,/obj/random/maintenance,/obj/effect/floor_decal/rust,/obj/structure/railing{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"TY" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"TZ" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 8; pixel_x = -27; start_charge = 0},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"Ub" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Ud" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Uf" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Ug" = (/obj/effect/floor_decal/corner/grey/diagonal,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Um" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "dock_d1l"; name = "exterior access button"; pixel_x = 28; pixel_y = -6; req_access = list(13)},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"Ut" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Uu" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"Uv" = (/obj/structure/cable/green{icon_state = "1-2"},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/gateway) +"Ux" = (/obj/machinery/firealarm{pixel_y = 26},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"UD" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/lightgrey/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"UE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/maint1) +"UG" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/orangedouble,/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/three) +"UM" = (/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"US" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "dock_d1l_pump"},/obj/effect/map_helper/airlock/atmos/chamber_pump,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"UW" = (/turf/simulated/wall,/area/awaymission/lucky7/trash) +"UY" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/alarm{dir = 4; pixel_x = -27},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"Va" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Vd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/button/remote/airlock{id = "L7 Room 2"; name = "Door Lock"; pixel_x = 24; pixel_y = 26},/obj/machinery/light_switch{pixel_x = 33; pixel_y = 26},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/two) +"Vi" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/obj/machinery/vending/security{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Vk" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{icon_state = "2-4"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Vm" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/int_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"Vp" = (/obj/machinery/gateway{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"Vs" = (/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"Vt" = (/obj/machinery/light,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"Vu" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 4},/obj/item/weapon/folder/white,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Vv" = (/obj/effect/floor_decal/spline/plain{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"Vw" = (/obj/machinery/slot_machine,/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hall2) +"Vx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "dock_d1a3"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; req_one_access = list(13)},/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/ext_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"Vz" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"VC" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/industrial/danger{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"VD" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/greendouble,/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"VO" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"VS" = (/turf/simulated/floor/plating,/area/awaymission/lucky7/trash) +"VT" = (/obj/structure/table/bench/padded,/turf/simulated/floor/wood,/area/awaymission/lucky7/lounge) +"VU" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/three) +"VV" = (/obj/effect/floor_decal/spline/plain{dir = 9},/obj/structure/flora/pottedplant/stoutbush,/turf/simulated/floor/carpet/turcarpet,/area/awaymission/lucky7/casinofloor) +"VW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Wc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"Wd" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/structure/extinguisher_cabinet{dir = 8; pixel_x = 30},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"Wh" = (/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Wi" = (/obj/effect/floor_decal/corner/lightgrey{dir = 10},/obj/effect/floor_decal/corner/lightgrey{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/machinery/vending/cigarette{dir = 4},/turf/simulated/floor/tiled/monotile,/area/awaymission/lucky7/lounge) +"Wj" = (/obj/structure/table/rack,/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/obj/item/clothing/suit/armor/bulletproof/alt{pixel_x = -6},/obj/item/clothing/suit/armor/bulletproof/alt{pixel_x = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Wm" = (/obj/structure/table/gamblingtable,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet/green,/area/awaymission/lucky7/privategameroom/two) +"Wp" = (/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Wr" = (/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Ws" = (/obj/effect/floor_decal/spline/plain{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"Wu" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Wy" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/yellowdouble,/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"Wz" = (/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/int_door,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock2) +"WA" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"WB" = (/obj/machinery/door/firedoor/glass/hidden/steel,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"WC" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/random/donkpocketbox{pixel_x = 1; pixel_y = 4},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"WE" = (/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"WG" = (/obj/effect/floor_decal/spline/plain{dir = 9},/turf/simulated/floor/water/pool,/area/awaymission/lucky7/privateroom/vip) +"WI" = (/obj/effect/floor_decal/rust,/obj/random/maintenance,/turf/simulated/floor/plating,/area/awaymission/lucky7/maint1) +"WJ" = (/obj/machinery/door/airlock/glass_external,/obj/effect/map_helper/airlock/door/int_door,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled/dark,/area/awaymission/lucky7/dock1) +"WK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom) +"WM" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"WP" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"WQ" = (/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/obj/structure/table/standard,/obj/item/device/healthanalyzer,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"WR" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"WU" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"WV" = (/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/awaymission/lucky7/maint2) +"WX" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"WZ" = (/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom) +"Xa" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/five) +"Xf" = (/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Xg" = (/obj/structure/table/woodentable,/obj/random/maintenance/foodstuff,/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"Xn" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Xo" = (/obj/machinery/gateway{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/techfloor/grid,/area/awaymission/lucky7/gateway) +"Xr" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Xs" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/lightgrey/border{dir = 6},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/lightgrey/bordercorner2,/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) +"Xw" = (/obj/effect/floor_decal/corner/grey/diagonal,/obj/structure/table/marble,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/kitchen) +"Xz" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"XA" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"XH" = (/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"XK" = (/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 5},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 5},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"XO" = (/obj/machinery/door/window/eastleft{req_access = null},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"XP" = (/obj/machinery/firealarm{dir = 4; pixel_x = 27},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"XS" = (/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"XT" = (/obj/structure/table/woodentable,/obj/random/maintenance/foodstuff,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"XU" = (/obj/structure/table/woodentable,/obj/item/pizzabox/margherita,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"XZ" = (/obj/effect/decal/cleanable/filth,/turf/simulated/floor/lino,/area/awaymission/lucky7/bar) +"Yb" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Yc" = (/obj/structure/cable/green{icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"Ye" = (/obj/effect/overmap/visitable/sector/common_gateway/lucky7,/turf/space,/area/space) +"Yj" = (/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/lightgrey/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Yk" = (/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"Yn" = (/obj/structure/cable/green{icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/workshop) +"Yp" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"Yw" = (/obj/machinery/alarm{pixel_y = 27},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/hotelhall) +"Yy" = (/turf/simulated/wall,/area/awaymission/lucky7/entry) +"YA" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"YC" = (/obj/structure/flora/pottedplant{icon_state = "plant-21"},/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/obj/machinery/alarm{dir = 8; pixel_x = 27},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"YD" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"YE" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/obj/machinery/alarm{pixel_y = 27},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"YG" = (/obj/machinery/media/jukebox,/turf/simulated/floor/wood,/area/awaymission/lucky7/bar) +"YO" = (/obj/random/soap,/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom) +"YQ" = (/obj/structure/casino_table/blackjack_m,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/floortube{dir = 1},/turf/simulated/floor/carpet/brown,/area/awaymission/lucky7/casinofloor) +"YT" = (/obj/structure/cable/green{icon_state = "4-8"},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"YX" = (/turf/simulated/wall,/area/awaymission/lucky7/hall1) +"YY" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"YZ" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/door/firedoor/glass/hidden/steel,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock2) +"Za" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/four) +"Ze" = (/obj/structure/table/reinforced,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/ammo_casing/spent,/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/red/bordercorner2,/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Zf" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"Zh" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock{name = "Custodial Closet"; req_access = null},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"Zi" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/security) +"Zj" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/machinery/light,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"Zu" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/obj/structure/flora/pottedplant/stoutbush,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"Zx" = (/obj/structure/bed/chair/sofa/right/purp,/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/vip) +"ZB" = (/obj/structure/bed/chair/sofa/right/brown,/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"ZC" = (/obj/effect/floor_decal/borderfloorwhite{dir = 6},/obj/effect/floor_decal/corner/paleblue/border{dir = 6},/obj/structure/cable/green,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 4; pixel_x = 27; start_charge = 0},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/medical) +"ZD" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/lucky7/privateroom/five) +"ZE" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"ZF" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/weapon/soap/nanotrasen,/obj/structure/closet,/obj/effect/floor_decal/rust,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/awaymission/lucky7/maint1) +"ZJ" = (/obj/structure/bed/chair/sofa/brown,/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"ZK" = (/obj/structure/bed/chair/sofa/corner/brown,/turf/simulated/floor/carpet,/area/awaymission/lucky7/hall1) +"ZL" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/awaymission/lucky7/hall1) +"ZO" = (/obj/structure/table/steel,/obj/item/weapon/spacecasinocash/c1000{pixel_x = -3; pixel_y = -3},/obj/item/weapon/spacecasinocash/c1000,/obj/item/weapon/spacecasinocash/c1000{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/tiled/techfloor,/area/awaymission/lucky7/security) +"ZP" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/power/apc{alarms_hidden = 1; cell_type = /obj/item/weapon/cell/apc; dir = 8; pixel_x = -27; start_charge = 0},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/carpet/blue2,/area/awaymission/lucky7/privategameroom/three) +"ZR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/green{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/lucky7/entry) +"ZT" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/privateroom/two) +"ZV" = (/obj/structure/cable/green{icon_state = "1-4"},/turf/simulated/floor/wood,/area/awaymission/lucky7/privateroom/four) +"ZW" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/lucky7/dock1) + +(1,1,1) = {" +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmcpcpcpcpcprmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmcpcpagavagcpcprmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmcpagayagayagcprmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVpVaAaBaBaBaGpVpVrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVaJaQbobubububupVrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVbKbKbNcqbubKbKpVrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVcDcDbNpVbucDcDpVrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVcFcFbNcJbucFcLpVrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVbububNbububucMyYyYpbpbpbyYpbpbpbyYyYrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVpVcTbNbubucYpVyYdodzdEdzabdEdzdEdPyYrmrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmpVpVpVdSececpVpVyYameFeFeFeHeFeFeFeHpbrmrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgGKjypflfvfvfvfyyYadeHeHeHeHeHeHeHeHpbrmrmrmrmvOidididvOididididrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmidrmrmrmrmrmrmidrmrmrmrmrmrmrmvOidididvOvOididididvOidvOrmrmrmrmrmrmrmgGfSypgBgNgNgNgNgVgZeHeHeHeHhmhoaeeHpbrmrmrmrmrmvOrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOidididvOvOididididvOvOididididvOidvOvOididvOrmrmrmrmrmrmrmrmidrmrmvOrmrmrmvOrmrmrmrmrmrmrmrmrmrmgGKjyphuypypypypyYeHhwafhweHhmiraeeHyYrmrmrmrmrmvOrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmvOrmrmrmrmrmrmvOrmrmrmrmrmrmidrmrmrmrmrmrmrmrmrmvOrmrmvOrmrmrmvOrmrmrmrmrmrmrmrmrmrmgGgGgGTuypypgGgGgGgGgGgGgGgGgGgGgGgGgGgGgegegegGgGgGrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmMwMwMwMwMwMwMwMwMwMwYXYXYXYXYXrmvOrmrmrmrmrmrmrmrmrmidrmUWUWUWUWUWUWUWUWrmrmrmrmrmrmrmrmgGdwitiBypypypypypypypTkypypypypypTkypypypypypypjbgGvOvOvOidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmMwmDoqaatVucueASKaMwZuZLuLlBYXrmvOrmrmrmrmrmrmrmrmrmvOrmUWjejljKjVVSkeUWrmrmrmrmrmrmrmrmgekxkxmOgNgNgNgNgNgNgNopgNgNgNgNgNopgNgNgNgNgNqHkFgGrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmMwcKcbbfTQiETMuEUvEIzpYkYkobYXrmidrmrmrmrmrmrmrmrmrmidrmUWkJkNlhlilpVSUWrmrmrmrmrmrmrmrmgelwlwTuypypypypypypypMZypypypypypMZypypypypypMZjbgGrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOvOidididvOidMweSVpMyrbGATMuEbchMYTFFYkCDYXvOidvOidididvOididvOididrmUWrxmNkeHzmTFWUWrmrmrmrmrmrmrmrmgemXmXTuypypnhnhbpbpbpnEbpbpGJGJGJnMGJGJfHfHfHohfHfHfHrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmMwDpOgmHXoiETMuEvfEIHWWEYkobYXrmrmrmrmrmvOrmrmrmrmvOvOvOUWVSmNkJLgskiGUWrmrmrmrmrmrmrmrmgGypypTuypypLEVwbppsRMpyRMRMGJMefNpBfNfNfHPyFrqdFrFrfHvOididrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmMwrfEMiZEMsUpAHgrKMwWRWEYkobYXrmrmrmrmrmvOrmrmrmrmvOrmrmUWVSmNqkUWoFmIUWrmrmrmrmrmrmrmrmgGypypTuypypvyvybpRMrepNreRMGJfNDnlZDnfNfHFrItLAItFrfHrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmDiDiDiDiDiDiDiDiDiDinAWEYkJLsTsTsTsTsTsTsTsTsTsTsTsTsTsTsTUWrAUWUWUWUWUWqFNlNlNlqFqFqFqFqFkxkxTuypypnhnhbpMdCGAGscsqGJTZnvWmxtwTfHZPQttYlLYYfHrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmDisHsSsZsZtdtvtHtMDiWRWEYkupsTeruyuzuIrprMsThhhhjPFNuOuvhhhhvavksTvNvTsTvUwbwewkwtqFImbXqFwGlwTuypypLEVwbpwLscQascxdGJNVxtqMxtrBfHLhlLtZlLwlfHrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOvOvOvODixqyoyHCCCCCCzazgSXzpWEYkobsTGSzqzEaWzRzYAxQKQKQKQKQKAFAFQKAXAFAxQKBeBmBEBHBTBVCiCnruCoqFmXmXTuypypvyvybprUscscscsqGJqYxtxtxtwTfHpPlLlLlLYYfHrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmididvOididrmvOrmDiCMCUCWCZCCCCDHYnEtXSEBYkCDsTcmECESEWFKFTsTFUFYhhFZhhFNjPGiGiGisThhWVsTSrGzKLSrGHqFGRHaqFypypTuypypypypbpRMHbHfHbRMGJfNNIoHNIfNfHFrHAHBHAFrfHvOidHFrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmvOrmDixqCCCCCCCCHJCCHMSXHWJzXSJPJUKiKnbDKwKxKIkDkDkDKNKNKNKNKNKShhKYsThhGrsTqFLjqFqFqFqFqFqFqFmKmKOwmVmVmKmKbpbpbpbpbpbpGJGJGJGJGJGJfHfHfHfHfHfHfHrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmvOrmrmrmrmvOrmDiaXLrLxLBLFMaMmMsDiMEMGYkMJsTMVMXMYNdNyNFkDQCNRNTOtOBOOKNPcOWPnsTjPLiKfPqPsPTPVQmQoGsQGKfmVQMOwmVmVkVmVQRmVQVRcRfmVRkmVkVRTRVmVmVmVmVkVmVmVmKrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlKlNYNYNYKlKlKlKlKlKlKlKlKlKlKlYXYXsoSEWBsoYXYXYXYXSRTaTfkDyOyOThDhDhDhKNKNKNKNKNhhLiKfTyUbUdUfUgUgUgUgVamVVkahmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVVVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlWhWpWpWpWrKlWQXfXHXOWpYbYAYCKlYEalXzMGYkZfZBZJZKYXsTaRsTkDyOZiKNKNKNKNKNZOKuHZKNFaLiKfeYUgKmnCUgUgUgTxKfmwkQsiHmHmfcmVmVmVmVmVmVmVmVmVmVaVJNmVmVuFanmVmVfUrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlHxJpeaInDYWpIkWUWUUtWUWUWUXKfMzpYkYkMGYkobGXXgSnYXKRyXzVkDyOpHNTNbOBOOKNEzVsHZKNuAGrKfKfCpKfKfUgbyPkUgXwmVkQsijxbCfcPJmKWXmVrThDPJmKWXmVmVmVmVmVmVmVmVmVaqrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidvOvOKlzvWUWUWUWUWUWUWUNGenWUWUWUYcQgXSzQXSSPYkRHGXGXRoYXKRsMRQkDyOyOuJDhDhDhKNJcVsHZKNhhGrKfczlSlSKfUgSMWCUgXwmVkQVWmVmVmVmVmVmVngbPhDmVmVmVmVmVmVmVmVmVmVmVmVmVmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlLlRbsgpkPGgUNJWUWUVuWUWUWUmqfMHWJCYkWEYkobGXRXSnYXxLyXxbkDyOZiKNKNKNKNKNKNQrKNKNuvGrKfmulSnNKfkOIMapUgyRmVkQsiHmqAfcmVmVmVmVqShDmVmVmVmVaVJNmVmVxHuYmVmVPJmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlnDAWLCgUasKlkvQUxrGPgUygXrZCKldnarqUWEYkMJdCTjwYYXBiIwFNkDyOyOUxPFOfyOLsSZQvtQkDNiGrKftelSejKfTxUgUgUgKfWXkQsiHmNSfcmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmKlKlFtKlKlKlKlKlKlKlKlKlKlKlKlYyYyYykmFwuakmkmkmYyYysTemsTYyiVyOyOyOChyOPIyOyOOkkDsTEOKfKfKfKfKfVaKfXwKfKfNzkQVWmVmVmVPJmKWXmVmVmVPJmKWXmVmVmVmVmVmVmVmVmVmVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlGQfZDPDPDPKlkswowomowowoBKwokmxmOjybykazPEOjOjcNddOjBMQsYykDChkDkDkDCkPIQCyOVikDTXLiJBtmAQnnJBCQVvrZDbkLvukQsiNSHmfcmVmVmVmVmVmVmVmVmVmVaVJNmVmVxHaumVmVmVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOidvOidvOvOKlfZjvfZfZfZKloPwoTeTeTewooDlIvoISISISTKTtTtTtTtTtTtTtWuIsYyiMyOawLLkDQzpMoTaxLqkDLeaoQiPPibogKGOMOAhSOALNtokQsiHmLofcmVmVmVMgaUaCdWdWdWdWdWdWdWdWdWdWdWdWnjmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmKlKlKlKlKlKlKlwowoDGMbxvwowowokmhFZEZEZjZEZEZEZEZjZEUDxzeGYynqyOyOJwkDTYmppXyOeLkDjPhhJBRWogBAJBwwOAdaOAtEJEkQVWmVmVmVmVmVmVFvaEhDmVmVmVmVmVmVmVmVmVmVmVmVPJmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmBfVTVTiywowoBfQdwovZvZvZwowoHSluluFJlulululululululuCECIVzYyLIaFyOZekDFLmpxUIqWjkDFZhhJBkPrNEFJBhNXZOAOAhSJEkQsiHmLUfcPJmKWXVWqShDPJmKWXmVmVngvRmVmVmVrThDmVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmBfbabaVTwowoNowowowowowowowoPXlufbxZBWfbAJpOluqwArluETxzPjYykDgiTnkDkDkDpekDkDkDkDsTmdJBJBJBJBJBNawdHnLNhSJEkQsizMHmfcmVQRmVVWmVmVmVRkmVmVmVngnahDmVngaEhDmVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmBfqLbaVTwowoNowowoTeTeTewowoDxluAJepmWepepxZFJxZxKluETxzaznlTBVCVCJgOjybxzPEOjYjrwzxzxDQMAsXTsYGDmRxRxRxRxhnkQVWmVmVmVmVmVmVVWmVmVmVmVmVmVmVngaImVmVmVqShDmVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOidvOvOBfbabaVTwowoNowowossMbDGwowoMcluWIeplumtcRIvluepepluONaKTtXnTtTtTtTtTtTtHlTtTtTtDvuZuZNguZuZuZuZuZuZuZuZuZBshidGTRTRTRTRWcWcSjmVmVbjbjbjbjbjmVmVmVYDmVmVmVatmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmBfVTVTnRwowoBfQdwovZvZvZwowoHSlulupLlululululutsjcjpduaLaznlbLZEZjZEZEZEZEZjZEUDrwzxzxzxzxzxzxzxzxzxzxzxzxPamVOTOTOTOTOTmVKEYQaMmVOTOTOTOTOTmVmVKEvxaMmVmVjJmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmBfBfBfBfBfBfBfwowowowowowowowolusmoVlubxhcHHlubERmluipSYaNYyYyYyYyYyYyYyYyYyYyYyFuzxGfGfGfzxGfGfGfzxGfGfGfPamVxMxMxMxMxMmVlnOllnmVxMxMxMxMxMmVmVlnlnlnmVmVVVrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmvOvOvOvOBfWiOxwoPQMteowowokpMQludFoEZhFVRNBalumhgSlugxSYeGYyvOvOvOrmrmrmrmrmvOvOFutDXUuHfizxfiSKXTzxfiuHqGPamVbjbjbjbjbjmVmVJqmVmVbjbjbjbjbjmVmVbjbjbjmVmVrnrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOidididvOidvOYyYyYyBfMqOxwoDGMbyABQwonpwoludrUEluZFaPmJlukaCRluETSYeGYyvOrmvOrmrmrmrmvOvOrmFuilYpYpYpzxYpYpYpzxYpYpYpPamVOTOTOTOTOTmVmVJqmVmVOTOTOTOTOTmVmVOTOTOTmVmVaqrjrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmYyYydgfXBfBfBfBfqNqNqNBfyzNCBfluluyZlulululululululuCExJVzYyididvOidididvOidvOidFulmzxzxzxApzxzxzxApzxzxzxWsxCxMxMxMxMxMxCmVJqmVxCxMxMxMxMxMxCmVxMxMxMxCmVmVmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmYygrivivGniAOjOmmRmRmRAPazsVufaSiAcIOmLOgamROmOjGnOjYjSYeGYyrmrmvOrmrmrmvOrmrmrmFuFuClClClFuClClClFuClClClFuOPOPOPOPOPOPGjeUTDeUGjmKmKmKmKmKmKmKmKmKmKmKmKmKmKrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOidididvOYyONiJjdNrjrNcNcNcNcNrNrNrKHNrGVsvNqZRZRZRZRZRZRZRZRZRDDIsYyrmrmidrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOPRZqWBqAUywGjeUTDeUGjrmrmvOrmrmrmrmrmrmrmrmvOrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmYyjBkbkcZEfuZEZEZEZjZEZEZEZEZEZEfuZEZEkzZEZEZEZEZEZEZEGTTFYyvOidvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmSkSINNosmvFmGjeUTDeUSwrmrmvOrmrmrmrmrmrmrmrmidrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmgLlqmLmSgLgLVOVOVOgLYykmkmkmYyYykmkmkmYyYykmkmkmYyxnWMTHWMxnrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmSkSIsBosCbMhGjeUTDeUSwrmididididididvOvOidididvOidvOvOidvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLnsWAnSgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxnajDOjHxnrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmSkSINNosolINGjeUTDeUSwrmrmrmrmrmrmvOrmvOrmrmidrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmOPcOaOosSFrgGjeUTDeUGjrmrmrmrmrmrmvOGjGjGjGjvOrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmGjGjGjGjGjGjMnFGSOGjGjeUTDeUGjGjGjGjGjGjGjGjGjQpqgGjGjGjGjrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmcHvOvOGjAYeUeUeUeUNmCNTUeUvbeUTDeUvbeUeUeUvdYweUakaTNmNmvbeUfOGjrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLspWAttgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxneVGhfAxnrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmGjoYGOIgIgIgCORuDSIgCOIgJRIgTWIgIgIgTWIgIgSdFleUeUeUeUdfGjvOvOidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmGjAYTDeUVteUTDeUeUeUTDeUVteUTDeUeUeUTDeUVteUTDeUeUeUeUfOGjrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOididcHvOvOhOhOfDhOuuuuTIuuKKKKeWKKuRuRKMuRDLDLSlDLLwLwEiLwLwLwLwLwLwrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmhOjMHQKtuuDwVdyvKKoSPCIJuRaiwqwKDLzHNDIuLwoAGmqsuBoAIjoALwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLuxwjwvgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxnYZOqqzxnrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmhOjChUfTuuCmoOJyKKENnzghuRccxFbnDLJWXaKCLwffOJZxorkdkdLyLwrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmhODgGgiauuOonYMoKKdytzjQuRKAZVPuDLmCIFRFLwOaOJpnlxkdkdqvLwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmhOtpcrWyuusQcnLJKKTdvgUGuRAbNQVDDLtGUMeyLwjAcGKZyykdkdGkLwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidvOvOhOcrcrWKuucncnTTKKvgvgzWuRNQNQXPDLUMUMkyLwoAoAoAoAoAJjvqLwvOvOidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLspWAwJgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxneVGhyDxnrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmhOuGhOhOuuGeuuuuKKpEKKKKuRFduRuRDLICDLDLLwRYLwLwLwLwLwLwLwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmzkububDFDRWAQqDTubgfAmrmrmrmrmrmrmrmrmrmrmrmrmrmrmkhiuiujoWPGheteiiubhbHrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmhOWZwuwCuuPNevAOKKtrjWeduRyiyfDkDLdZSsJdLwOuTlGpAKWGUuDILwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmDZrmHtJKKTVmOrtJvrEsbeEeMkrmSmrmrmrmrmrmrmrmrmrmrmrmrmprbtlFnKAyKUCuEwGESSVxrmcVrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmhOQDWZWZuuSGPNPNKKVUtrtruRZayiyiDLZDdZdZLwTvOuOuAKeCRwqBLwrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmPwRLRLDFTPWAOIDTRLaHTVrmrmrmrmrmrmrmrmrmrmrmrmrmrmjNMfMfjoOEGhXAeiMfNLgDrmrmrmrmrmrmrmrmrmrmrmrmrmididvOvOhOWZYOfQuuPNIRZTKKtrbBANuRyivtaDDLdZCfhyLwIrOuOuAKeCjSbwLwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLUYWAWdgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxnOSGhLVxnrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmhOhOhOhOuuuuuuuuKKKKKKKKuRuRuRuRDLDLDLDLLwTvOuOuAKeCjSqBLwvOvOvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmvOrmrmrmvOrmrmrmvOrmrmrmvOrmvOrmLwOuOuxNAKFpjqSvLwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOnXWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCzKGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmvOrmrmrmvOrmrmrmvOrmidvOLwLwLwLwLwLwLwLwLwrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmVOZWWAoGVOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmOCfxGhLYOCrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOididlEidididcHidvOvOcHidvOidcHididrmrmvOrmrmrmrmrmvOrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLjIWAXsgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxnAvGhdXxnrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmidrmrmrmrmrmrmrmrmrmvOididcHvOididvOidcHididvOvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmgLwcWJDFgLrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmxnWzmbjoxnrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmKknwacezrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmtcKsxhgHrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmidrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmKkPmzrezrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmtcUShIgHrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmvOrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmhqmELkmQrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmFjjtUmzDrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmqtrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmYeFQrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrm +"} diff --git a/maps/gateway_vr/snowfield.dmm b/maps/gateway_vr/snowfield.dmm index 7292de11f1..1912a56992 100644 --- a/maps/gateway_vr/snowfield.dmm +++ b/maps/gateway_vr/snowfield.dmm @@ -1188,7 +1188,7 @@ /turf/simulated/floor/tiled/dark, /area/awaymission/snowfield/base) "ds" = ( -/obj/structure/closet/fireaxecabinet{ +/obj/structure/fireaxecabinet{ pixel_y = 32 }, /turf/simulated/floor/tiled/dark, diff --git a/maps/gateway_vr/wildwest.dm b/maps/gateway_vr/wildwest.dm index e697c3812d..2260db08ed 100644 --- a/maps/gateway_vr/wildwest.dm +++ b/maps/gateway_vr/wildwest.dm @@ -125,7 +125,7 @@ if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey)) for(var/mob/O in viewers(world.view, src.loc)) - to_chat(O, "[M] triggered the [bicon(src)] [src]") + to_chat(O, "[M] triggered the \icon[src][bicon(src)] [src]") triggered = 1 call(src,triggerproc)(M) @@ -187,7 +187,7 @@ in_space = 1 unknown_state = "field" known = FALSE - + skybox_icon = 'icons/skybox/anomaly.dmi' skybox_icon_state = "shimmer_r" skybox_pixel_x = 0 diff --git a/maps/groundbase/gb-z1.dmm b/maps/groundbase/gb-z1.dmm index 9faa853c6b..532017fe2f 100644 --- a/maps/groundbase/gb-z1.dmm +++ b/maps/groundbase/gb-z1.dmm @@ -539,6 +539,14 @@ outdoors = 0 }, /area/groundbase/security/lobby) +"bq" = ( +/obj/machinery/vending/wardrobe/atmosdrobe, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/sign/scenery/fakefireaxe{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/groundbase/engineering/atmos/monitoring) "br" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -578,6 +586,12 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/outdoors/sidewalk/virgo3c, /area/groundbase/level1/westspur) +"bw" = ( +/obj/structure/closet/toolcloset, +/obj/item/weapon/pickaxe, +/obj/item/weapon/chainsaw, +/turf/simulated/floor/tiled, +/area/groundbase/engineering/workshop) "bx" = ( /obj/structure/table/reinforced, /obj/item/device/floor_painter, @@ -634,6 +648,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/groundbase/security/processing) +"bD" = ( +/obj/structure/closet/secure_closet/engineering_electrical/double, +/obj/item/clothing/gloves/yellow, +/obj/item/clothing/gloves/yellow, +/turf/simulated/floor/tiled, +/area/groundbase/engineering/workshop) "bE" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -672,6 +692,14 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/armory) +"bH" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/structure/closet/secure_closet/engineering_welding/double, +/turf/simulated/floor/tiled, +/area/groundbase/engineering/workshop) "bJ" = ( /turf/simulated/floor/outdoors/newdirt_nograss/virgo3c, /area/groundbase/level1/eastspur) @@ -765,10 +793,24 @@ /turf/simulated/floor/wood, /area/groundbase/civilian/gameroom) "bV" = ( -/obj/machinery/light{ +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/turf/simulated/floor/lino, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, +/area/groundbase/level1/northspur) +"bW" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "bX" = ( /obj/structure/cable/yellow{ @@ -964,16 +1006,13 @@ /turf/simulated/wall/r_wall, /area/groundbase/security/briefing) "cw" = ( -/obj/structure/table/hardwoodtable, -/obj/machinery/camera/network/civilian{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "z1barstall2"; + name = "Restroom Stall" }, -/obj/random/mug, -/obj/random/mug, -/obj/random/mug, -/obj/random/mug, -/turf/simulated/floor/lino, -/area/groundbase/civilian/cafe) +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/bar) "cx" = ( /obj/machinery/atmospherics/valve/digital{ name = "supply isolation valve" @@ -1043,13 +1082,11 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/groundbase/command/ai/foyer) "cH" = ( -/obj/item/weapon/stool/baystool/padded{ - dir = 4 +/obj/structure/table/hardwoodtable, +/obj/machinery/chemical_dispenser/bar_coffee/full{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "cI" = ( /obj/machinery/power/apc{ @@ -1240,6 +1277,7 @@ "db" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ + id_tag = "z1barstall1"; name = "Restroom Stall" }, /turf/simulated/floor/tiled/white, @@ -1602,6 +1640,12 @@ /obj/machinery/alarm, /turf/simulated/floor/tiled, /area/groundbase/engineering/atmos) +"dV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/groundbase/civilian/cafe) "dW" = ( /obj/structure/bed/chair/comfy/orange{ dir = 4 @@ -1834,11 +1878,6 @@ }, /turf/simulated/floor/tiled/white, /area/groundbase/civilian/bar) -"ez" = ( -/obj/structure/closet/toolcloset, -/obj/item/weapon/pickaxe, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/workshop) "eA" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -2078,18 +2117,18 @@ }, /area/groundbase/command/tcomms) "fj" = ( -/obj/structure/table/hardwoodtable, -/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask, -/obj/machinery/firealarm{ - dir = 4 +/obj/structure/toilet{ + dir = 8 }, -/obj/structure/sign/painting/library_secure{ - pixel_y = -30 +/obj/machinery/light/small, +/obj/machinery/button/remote/airlock{ + id = "z1barstall2"; + pixel_x = -10; + pixel_y = 27; + specialfunctions = 4 }, -/obj/item/weapon/reagent_containers/food/drinks/shaker, -/obj/item/weapon/reagent_containers/glass/rag, -/turf/simulated/floor/lino, -/area/groundbase/civilian/cafe) +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/bar) "fk" = ( /obj/structure/cable{ icon_state = "1-8" @@ -2416,13 +2455,14 @@ /turf/simulated/floor/tiled, /area/groundbase/engineering/lobby) "gb" = ( -/obj/structure/table/hardwoodtable, +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, /obj/machinery/door/blast/gate/thin{ - dir = 8; id = "Cafe"; layer = 3.3 }, -/turf/simulated/floor/lino, +/turf/simulated/floor, /area/groundbase/civilian/cafe) "gc" = ( /obj/structure/disposaloutlet, @@ -2441,6 +2481,22 @@ }, /turf/simulated/floor/tiled/techmaint, /area/groundbase/engineering/atmos) +"gg" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Cafe" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/bmarble, +/area/groundbase/civilian/cafe) "gh" = ( /turf/unsimulated/wall/planetary/virgo3c{ icon_state = "riveted" @@ -2603,18 +2659,14 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/groundbase/command/ai/foyer) "gB" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, /obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 }, /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, /area/groundbase/level1/northspur) @@ -2774,7 +2826,14 @@ /turf/simulated/floor/tiled/techmaint, /area/groundbase/command/tcomms/storage) "gW" = ( -/turf/simulated/floor/lino, +/obj/structure/table/marble, +/obj/machinery/alarm{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "gX" = ( /obj/structure/table/bench/padded, @@ -3003,11 +3062,9 @@ /turf/simulated/floor/outdoors/newdirt_nograss/virgo3c, /area/groundbase/level1/se) "hF" = ( -/obj/structure/table/hardwoodtable, -/obj/machinery/chemical_dispenser/bar_coffee/full{ - dir = 8 - }, -/turf/simulated/floor/lino, +/obj/structure/table/marble, +/obj/random/paicard, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "hG" = ( /obj/structure/cable{ @@ -3106,14 +3163,6 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/groundbase/cargo/mining) -"hS" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/light, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/workshop) "hT" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, @@ -4880,10 +4929,11 @@ /turf/simulated/wall/r_wall, /area/groundbase/security/halle) "mb" = ( -/obj/structure/bed/chair/wood{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "md" = ( /obj/structure/cable{ @@ -5115,8 +5165,20 @@ /turf/simulated/floor/tiled/steel_ridged, /area/groundbase/security/briefing) "mL" = ( -/obj/machinery/media/jukebox, -/turf/simulated/floor/wood, +/obj/structure/table/hardwoodtable, +/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask, +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, +/obj/item/weapon/reagent_containers/food/drinks/shaker, +/obj/item/weapon/reagent_containers/glass/rag, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "mM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -5339,13 +5401,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/groundbase/engineering/atmos/monitoring) -"np" = ( -/obj/machinery/light, -/obj/item/weapon/stool/baystool/padded{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/groundbase/civilian/cafe) "nq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -5645,6 +5700,22 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/civilian/bar) +"oa" = ( +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Resleeving"; + sortType = "Resleeving" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, +/area/groundbase/level1/centsquare) "ob" = ( /obj/effect/landmark/vines, /turf/simulated/floor/outdoors/grass/virgo3c, @@ -6035,6 +6106,12 @@ }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/morgue) +"oX" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "oY" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/black{ @@ -6418,6 +6495,18 @@ outdoors = 0 }, /area/groundbase/unexplored/rock) +"pW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "pX" = ( /obj/structure/cable{ icon_state = "0-4" @@ -6429,10 +6518,6 @@ /obj/machinery/light, /turf/simulated/floor/tiled/dark, /area/groundbase/security/warden) -"pZ" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/wood, -/area/groundbase/civilian/cafe) "qa" = ( /turf/simulated/wall/r_wall, /area/groundbase/security/iaa1) @@ -6784,19 +6869,21 @@ /turf/simulated/floor/tiled, /area/groundbase/cargo/mining) "qV" = ( -/obj/item/weapon/stool/baystool/padded{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/groundbase/civilian/cafe) -"qX" = ( -/obj/structure/bed/chair/wood{ - dir = 4 +/obj/structure/table/hardwoodtable, +/obj/item/weapon/reagent_containers/glass/rag, +/obj/machinery/alarm{ + dir = 8 }, /obj/structure/sign/painting/library_secure{ pixel_y = 30 }, -/turf/simulated/floor/wood, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "qY" = ( /obj/structure/closet/crate, @@ -6984,6 +7071,15 @@ outdoors = 0 }, /area/maintenance/groundbase/level1/nwtunnel) +"ro" = ( +/obj/machinery/firealarm{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "rp" = ( /obj/machinery/atmospherics/binary/pump{ dir = 8 @@ -7750,6 +7846,12 @@ }, /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, /area/groundbase/level1/eastspur) +"te" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "tf" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8606,7 +8708,8 @@ /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) "vi" = ( -/turf/simulated/floor/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "vj" = ( /turf/simulated/floor/outdoors/newdirt_nograss/virgo3c{ @@ -8644,15 +8747,8 @@ /turf/simulated/floor/carpet/sblucarpet, /area/groundbase/security/iaa1) "vo" = ( -/obj/structure/table/hardwoodtable, -/obj/item/weapon/reagent_containers/glass/rag, -/obj/machinery/alarm{ - dir = 8 - }, -/obj/structure/sign/painting/library_secure{ - pixel_y = 30 - }, -/turf/simulated/floor/lino, +/obj/structure/table/marble, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "vp" = ( /turf/simulated/floor/outdoors/newdirt/virgo3c{ @@ -8905,11 +9001,6 @@ /obj/item/weapon/hand_labeler, /turf/simulated/floor/carpet, /area/groundbase/security/detective) -"vS" = ( -/obj/machinery/vending/wardrobe/atmosdrobe, -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/atmos/monitoring) "vT" = ( /obj/machinery/atmospherics/portables_connector{ dir = 8 @@ -9445,7 +9536,7 @@ }, /obj/machinery/button/remote/airlock{ dir = 4; - id = "z1stall4"; + id = "z1stall5"; pixel_x = -27; specialfunctions = 4 }, @@ -9614,8 +9705,6 @@ }, /area/maintenance/groundbase/level1/nwtunnel) "xt" = ( -/obj/structure/table/marble, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "xu" = ( @@ -9763,11 +9852,6 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor, -/obj/machinery/door/blast/shutters{ - dir = 8; - id = "engineaccess"; - name = "Engine Access Shutters" - }, /turf/simulated/floor, /area/groundbase/engineering/engine) "xO" = ( @@ -9794,15 +9878,9 @@ }, /area/groundbase/command/tcomms) "xR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/item/weapon/stool/baystool/padded{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "xS" = ( @@ -10451,16 +10529,9 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/groundbase/command/ai/robot) "zu" = ( -/obj/structure/table/hardwoodtable, -/obj/machinery/door/blast/gate/thin{ - dir = 8; - id = "Cafe"; - layer = 3.3 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/lino, +/obj/structure/table/marble, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "zv" = ( /obj/machinery/requests_console/preset/engineering{ @@ -10589,13 +10660,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/button/remote/blast_door{ - dir = 4; - id = "engineaccess"; - name = "Engine Access"; - pixel_x = -25; - req_access = list(10) - }, /turf/simulated/floor/tiled, /area/groundbase/engineering/engine) "zJ" = ( @@ -11108,6 +11172,17 @@ "AZ" = ( /turf/simulated/mineral/cave/virgo3c, /area/groundbase/level1/sw) +"Ba" = ( +/obj/structure/table/hardwoodtable, +/obj/machinery/camera/network/civilian{ + dir = 8 + }, +/obj/random/mug, +/obj/random/mug, +/obj/random/mug, +/obj/random/mug, +/turf/simulated/floor/lino, +/area/groundbase/civilian/cafe) "Bb" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -11444,6 +11519,12 @@ }, /turf/simulated/floor/tiled, /area/groundbase/civilian/apparel) +"BM" = ( +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "BN" = ( /obj/machinery/alarm, /turf/simulated/floor/tiled, @@ -11455,6 +11536,22 @@ /obj/machinery/light, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) +"BP" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, +/area/groundbase/level1/centsquare) "BQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -12180,15 +12277,6 @@ }, /turf/simulated/floor, /area/maintenance/groundbase/substation/medcargo) -"DF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/wood, -/area/groundbase/civilian/cafe) "DG" = ( /obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 6 @@ -12639,15 +12727,9 @@ }, /area/maintenance/groundbase/level1/nwtunnel) "EM" = ( -/obj/machinery/door/firedoor, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/blast/gate/thin{ - dir = 8; - id = "Cafe"; - layer = 3.3 - }, -/turf/simulated/floor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "EO" = ( /obj/machinery/light/bigfloorlamp, @@ -13113,12 +13195,6 @@ }, /turf/simulated/floor/tiled, /area/holodeck_control) -"FW" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/item/clothing/gloves/yellow, -/obj/item/clothing/gloves/yellow, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/workshop) "FX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_security/polarized{ @@ -13874,20 +13950,10 @@ /turf/simulated/floor, /area/maintenance/groundbase/substation/aiciv) "HI" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Cafe" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/bmarble, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "HJ" = ( /obj/machinery/door/firedoor, @@ -14259,6 +14325,17 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/storage) +"IE" = ( +/obj/machinery/light/floortube{ + dir = 8; + pixel_x = -6 + }, +/obj/item/weapon/stool/padded{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/lino, +/area/groundbase/civilian/cafe) "IF" = ( /obj/machinery/suit_cycler/engineering, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -15252,13 +15329,7 @@ }, /area/groundbase/command/tcomms) "KW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/simulated/floor/wood, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "KX" = ( /obj/machinery/door/firedoor, @@ -15358,13 +15429,20 @@ /turf/simulated/floor/tiled, /area/groundbase/civilian/toolstorage) "Lf" = ( -/obj/machinery/power/apc{ - dir = 1 +/obj/machinery/button/remote/blast_door{ + id = "Cafe"; + name = "Cafe shutters"; + pixel_x = -3; + pixel_y = 26 }, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/machinery/light_switch{ + pixel_x = 5; + pixel_y = 30 }, -/turf/simulated/floor/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "Lg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -15934,6 +16012,12 @@ dir = 8 }, /obj/machinery/light/small, +/obj/machinery/button/remote/airlock{ + id = "z1barstall1"; + pixel_x = -10; + pixel_y = 27; + specialfunctions = 4 + }, /turf/simulated/floor/tiled/white, /area/groundbase/civilian/bar) "Mw" = ( @@ -16122,6 +16206,18 @@ }, /turf/simulated/floor/tiled, /area/groundbase/cargo/mining) +"MT" = ( +/obj/structure/table/hardwoodtable, +/obj/machinery/door/blast/gate/thin{ + id = "Cafe"; + layer = 3.3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/lino, +/area/groundbase/civilian/cafe) "MU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -16151,6 +16247,18 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/lobby) +"Na" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "Nb" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light_switch{ @@ -16682,21 +16790,16 @@ /turf/simulated/floor, /area/maintenance/groundbase/substation/secsci) "Om" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/gate/thin{ + dir = 8; + id = "Cafe"; + layer = 3.3 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, -/area/groundbase/level1/centsquare) +/turf/simulated/floor, +/area/groundbase/civilian/cafe) "On" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -17172,8 +17275,17 @@ /turf/simulated/floor/outdoors/sidewalk/side/virgo3c, /area/groundbase/level1/centsquare) "PH" = ( -/obj/machinery/light, -/turf/simulated/floor/lino, +/obj/structure/table/marble, +/obj/machinery/power/apc{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "PI" = ( /obj/machinery/telecomms/processor/preset_two, @@ -17438,6 +17550,18 @@ temperature = 80 }, /area/groundbase/command/tcomms) +"Qt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/outdoors/sidewalk/side/virgo3c, +/area/groundbase/level1/centsquare) "Qu" = ( /obj/structure/table/rack/shelf/steel, /obj/item/clothing/suit/storage/vest/heavy/officer{ @@ -17532,12 +17656,7 @@ "QE" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ - name = "Crew Apparel Care" - }, -/obj/machinery/door/blast/shutters{ - dir = 8; - id = "engineaccess"; - name = "Engine Access Shutters" + name = "Crew Access" }, /turf/simulated/floor/bmarble, /area/groundbase/engineering/engine) @@ -17649,6 +17768,13 @@ /obj/machinery/pipedispenser/disposal, /turf/simulated/floor/tiled, /area/groundbase/engineering/atmos) +"QU" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "QV" = ( /obj/structure/toilet, /obj/machinery/button/remote/airlock{ @@ -17833,13 +17959,13 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/groundbase/command/ai/robot) "Rs" = ( -/obj/machinery/door/window/brigdoor/northleft{ - dir = 8; - name = "Cafe"; - req_access = list(25) +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "z1barstall3"; + name = "Restroom Stall" }, -/turf/simulated/floor/lino, -/area/groundbase/civilian/cafe) +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/bar) "Rt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/techmaint, @@ -17909,17 +18035,12 @@ /turf/simulated/floor/tiled/white, /area/groundbase/medical/office) "RA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/outdoors/sidewalk/side/virgo3c, -/area/groundbase/level1/centsquare) +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "RB" = ( /obj/effect/landmark{ name = "carpspawn" @@ -17982,10 +18103,12 @@ /turf/simulated/floor/tiled, /area/groundbase/engineering/storage) "RI" = ( -/obj/item/weapon/stool/baystool/padded{ - dir = 8 +/obj/machinery/door/window/brigdoor/northleft{ + dir = 8; + name = "Cafe"; + req_access = list(25) }, -/turf/simulated/floor/wood, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "RJ" = ( /obj/structure/stairs/spawner/north, @@ -18312,6 +18435,13 @@ }, /turf/simulated/floor/tiled, /area/groundbase/command/tcomms/foyer) +"Sx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "Sy" = ( /obj/machinery/cryopod/robot, /obj/machinery/power/apc{ @@ -18472,13 +18602,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/groundbase/security/halls) "SO" = ( -/obj/structure/table/marble, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/sign/painting/library_secure{ - pixel_y = -30 - }, +/obj/machinery/media/jukebox, /turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "SP" = ( @@ -19302,18 +19426,18 @@ /turf/simulated/floor/carpet/gaycarpet, /area/groundbase/civilian/clown) "UO" = ( -/obj/machinery/button/remote/blast_door{ - id = "Cafe"; - name = "Cafe shutters"; - pixel_x = -3; - pixel_y = 26 +/obj/structure/toilet{ + dir = 8 }, -/obj/machinery/light_switch{ - pixel_x = 5; - pixel_y = 30 +/obj/machinery/light/small, +/obj/machinery/button/remote/airlock{ + id = "z1barstall3"; + pixel_x = -10; + pixel_y = 27; + specialfunctions = 4 }, -/turf/simulated/floor/lino, -/area/groundbase/civilian/cafe) +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/bar) "UP" = ( /obj/structure/table/rack/steel, /obj/item/clothing/gloves/arm_guard/laserproof, @@ -19519,6 +19643,20 @@ /obj/structure/cable/yellow, /turf/simulated/floor/tiled, /area/groundbase/civilian/toolstorage) +"Vw" = ( +/obj/structure/table/hardwoodtable, +/obj/machinery/door/blast/gate/thin{ + id = "Cafe"; + layer = 3.3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/lino, +/area/groundbase/civilian/cafe) "Vx" = ( /obj/structure/cable{ icon_state = "1-2" @@ -19608,6 +19746,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/groundbase/civilian/womensrestroom) +"VH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/weapon/stool/baystool/padded{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "VI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -19764,11 +19909,13 @@ /turf/simulated/floor/bluegrid, /area/groundbase/command/ai/robot) "Wb" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/table/hardwoodtable, +/obj/machinery/door/blast/gate/thin{ + dir = 8; + id = "Cafe"; + layer = 3.3 }, -/obj/structure/table/woodentable, -/turf/simulated/floor/wood, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "Wc" = ( /obj/machinery/vending/tool, @@ -19783,14 +19930,10 @@ /turf/simulated/floor/tiled/dark, /area/groundbase/security/armory) "Wg" = ( -/obj/item/weapon/stool/padded{ - dir = 8 +/obj/item/weapon/stool/baystool/padded{ + dir = 1 }, -/obj/machinery/light/floortube{ - dir = 8; - pixel_x = -6 - }, -/turf/simulated/floor/lino, +/turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "Wh" = ( /obj/machinery/button/remote/blast_door{ @@ -19979,6 +20122,21 @@ }, /turf/simulated/floor, /area/groundbase/security/warden) +"WF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/item/weapon/stool/baystool/padded{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "WG" = ( /obj/machinery/light_switch{ dir = 8; @@ -20620,6 +20778,18 @@ }, /turf/simulated/floor/outdoors/sidewalk/side/virgo3c, /area/groundbase/level1/westspur) +"Yg" = ( +/obj/item/weapon/stool/baystool/padded{ + dir = 1 + }, +/obj/structure/sign/painting/library_secure{ + pixel_x = 30 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/cafe) "Yh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -20745,7 +20915,10 @@ /obj/item/device/radio/intercom{ pixel_y = -24 }, -/turf/simulated/floor/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "Yy" = ( /obj/structure/cable/yellow{ @@ -20917,22 +21090,21 @@ /turf/simulated/floor/tiled, /area/groundbase/engineering/workshop) "YW" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/structure/disposalpipe/sortjunction/flipped{ - dir = 4; - name = "Resleeving"; - sortType = "Resleeving" +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, /area/groundbase/level1/centsquare) "YX" = ( @@ -27932,9 +28104,9 @@ Wz pj db pj -db +cw pj -db +Rs pj MO Wx @@ -28074,9 +28246,9 @@ yh pj Mv pj -Mv +fj pj -Mv +UO pj MO MO @@ -30624,7 +30796,7 @@ ZR tG tG ZR -tG +GK tG tG tG @@ -30774,8 +30946,8 @@ ng Dg Iy Eb -Eb -Eb +Nv +Nv Eb Eb Eb @@ -30908,25 +31080,25 @@ tG tG tG tG -UX +tG tG tG GK hW +YC +Eb +Eb +Eb +Eb +Eb +Eb +Eb Eb Eb Eb -Nv -Nv -Nv -Nv Eb Eb Eb -Nv -Nv -Nv -Nv Eb Eb Eb @@ -31054,26 +31226,26 @@ UX tG tG tG -hW -Eb -Eb -Nv -Nv -Nv -Nv -Eb -Eb -Eb -Nv -Nv -Nv -Eb -Eb -Eb -Eb -Eb -Eb -Vh +bV +Gx +Gx +Gx +Gx +Gx +BP +Gx +Gx +Gx +Gx +Gx +Gx +Gx +Gx +Gx +Gx +Gx +Gx +oa Eb Eb Eb @@ -31196,17 +31368,17 @@ UX tG tG tG -hW +NL +YC +Eb +Yt +Eb +YC +Qt YC Eb Eb -Eb -Eb -Eb -Eb -Eb -Eb -Eb +Yt Eb Eb Eb @@ -31223,7 +31395,7 @@ Eb Eb Eb Eb -Eb +YC uB Eb Eb @@ -31339,24 +31511,24 @@ tG gM tG gB -Gx -Gx -Gx -Gx -Gx -Gx -Gx +Eb +hr +hr Om -Gx -Gx -Gx -Gx -Gx -Gx -Gx -Gx -Gx -Gx +Om +gg +Om +Om +Om +hr +hr +Eb +Eb +Nv +Nv +Nv +Eb +Eb YW ay ay @@ -31481,24 +31653,24 @@ bb ZA GK NL -YC -Eb -Eb -Eb -Eb -Yt Eb +hr +gW +Wg +xt +pW +bW RA -Eb -Eb -Yt +oX +QU +hr Eb Eb Eb Eb Eb jD -YC +Eb Vh mG eR @@ -31507,7 +31679,7 @@ eR eR eR eR -Eb +YC TK Eb Eb @@ -31624,15 +31796,15 @@ Mw ED uu Eb -Eb -Eb -Eb -Eb -hr +gb +hF +Wg +xt +Na EM HI -EM -EM +xt +BM hr dk uR @@ -31766,12 +31938,12 @@ kz ED xH Lk -Eb -Eb -qE -qE -hr -qX +gb +vo +Wg +te +WF +xR xR xt SO @@ -31908,15 +32080,15 @@ Pi Pi kx kd -Lk -qE -qE -qE -hr +gb +zu +VH +Sx +MT +Wb Wb -DF RI -np +Wb hr Oa Pb @@ -32050,13 +32222,13 @@ qE mI Bs mI -qE -qE -qE -qE hr +PH +Yg +ro +Vw mb -DF +IE vi Yx hr @@ -32199,8 +32371,8 @@ yu hr Lf KW -pZ -vi +KW +dV hr jS BL @@ -32222,9 +32394,9 @@ qI Gv Ge Eb -Eb +YC Qy -Eb +YC Eb qI Gv @@ -32341,7 +32513,7 @@ Mu hr qV cH -vi +Ba mL hr zT @@ -32481,10 +32653,10 @@ ZG pK hM hr -gb -zu -Rs -gb +hr +hr +hr +hr hr bL Pb @@ -32622,12 +32794,12 @@ ZO Kg XB bl -hr -UO -Wg -gW -gW -hr +nb +qE +qE +qE +qE +dk mV Pb Cr @@ -32764,12 +32936,12 @@ nb to EV KA -hr -bV -gW -gW -PH -hr +nb +qE +qE +qE +qE +dk Vb Pb ll @@ -32906,12 +33078,12 @@ nb rF Tc Te -hr -vo -hF -cw -fj -hr +nb +qE +qE +qE +qE +dk mw Pb CL @@ -33051,8 +33223,8 @@ DQ DQ DQ DQ -bb -bb +qE +qE dk dk kB @@ -35206,14 +35378,14 @@ pe Wl VC XJ -ez +bw zv NY ER jf BH -FW -hS +bD +bH JM ph aE @@ -36624,7 +36796,7 @@ Lt Lt Lt iS -vS +bq wu aM iS diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index 304434ff5c..e8a8f8356f 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -2235,7 +2235,9 @@ /area/groundbase/cargo/office) "go" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/light/small/fairylights, +/obj/machinery/light/small/fairylights{ + pixel_y = -2 + }, /turf/simulated/floor/outdoors/sidewalk/virgo3c, /area/groundbase/level2/nw) "gq" = ( @@ -5071,6 +5073,12 @@ outdoors = 0 }, /area/groundbase/level2/se) +"oG" = ( +/obj/machinery/light/small/fairylights{ + pixel_y = -1 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/nw) "oH" = ( /turf/simulated/open/virgo3c, /area/groundbase/level2/eastspur) @@ -7693,6 +7701,12 @@ }, /turf/simulated/floor/tiled/white, /area/groundbase/dorms/room1) +"wl" = ( +/obj/machinery/light/small/fairylights{ + pixel_y = -1 + }, +/turf/simulated/floor/outdoors/newdirt/virgo3c, +/area/groundbase/level2/nw) "wm" = ( /obj/machinery/computer/supplycomp/control{ dir = 8 @@ -11523,7 +11537,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, -/obj/machinery/light/small/fairylights, +/obj/machinery/light/small/fairylights{ + pixel_y = -2 + }, /turf/simulated/floor/outdoors/sidewalk/virgo3c, /area/groundbase/level2/nw) "Hs" = ( @@ -24377,13 +24393,13 @@ bY bY bY bY -EZ +wl ml pw -lM +oG bY bY -lM +oG bY bY bY @@ -24661,13 +24677,13 @@ bY bY bY bY -EZ +wl sN pw -lM +oG bY Oa -lM +oG bY bY bY @@ -28057,16 +28073,16 @@ VR VR VR VR -VR -VR -VR -VR -VR -VR -VR -VR -VR -VR +fp +fp +fp +fp +fp +fp +fp +fp +fp +fp VR VR VR @@ -28199,16 +28215,16 @@ VR VR VR VR -VR -VR -VR -VR -VR -VR -VR -VR -VR -VR +fp +fp +fp +fp +fp +fp +fp +fp +fp +fp VR VR VR @@ -28341,10 +28357,10 @@ Wd VR VR VR -VR -VR -VR -VR +fp +fp +fp +fp to fp fp @@ -28483,8 +28499,8 @@ BW VR to to -VR -VR +fp +fp to to to diff --git a/maps/groundbase/gb-z3.dmm b/maps/groundbase/gb-z3.dmm index 95d87ed2be..8dd2800461 100644 --- a/maps/groundbase/gb-z3.dmm +++ b/maps/groundbase/gb-z3.dmm @@ -2,6 +2,13 @@ "aa" = ( /turf/simulated/wall, /area/groundbase/exploration/equipment) +"ab" = ( +/obj/machinery/suit_cycler/medical, +/obj/structure/sign/scenery/fakefireaxe{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/paramedic) "ak" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin, @@ -2567,6 +2574,16 @@ }, /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, /area/groundbase/level3/nw) +"OJ" = ( +/obj/effect/landmark/start/pilot, +/obj/structure/closet/walllocker_double{ + dir = 8; + name = "NIFsoft uploader cabinet"; + pixel_x = -32 + }, +/obj/item/weapon/storage/box/nifsofts_pilot, +/turf/simulated/floor/tiled, +/area/groundbase/civilian/pilot) "OT" = ( /obj/structure/lattice, /turf/simulated/open/virgo3c, @@ -5599,7 +5616,7 @@ Qa qO fz bm -Tk +OJ pd Tk bm @@ -16835,7 +16852,7 @@ ID lz Cv Vm -og +ab to to Qk diff --git a/maps/groundbase/groundbase_areas.dm b/maps/groundbase/groundbase_areas.dm index 19af27e4ec..f814f39053 100644 --- a/maps/groundbase/groundbase_areas.dm +++ b/maps/groundbase/groundbase_areas.dm @@ -360,6 +360,7 @@ name = "Arrivals" lightswitch = 1 forbid_events = TRUE + forbid_singulo = TRUE /area/groundbase/civilian/toolstorage name = "Tool Storage" lightswitch = 1 @@ -446,6 +447,7 @@ limit_mob_size = FALSE block_suit_sensors = TRUE forbid_events = TRUE + forbid_singulo = TRUE /area/groundbase/dorms/bathroom name = "Dormitory Bathroom" diff --git a/maps/groundbase/groundbase_poi_stuff.dm b/maps/groundbase/groundbase_poi_stuff.dm index e24fe9b14a..161472287d 100644 --- a/maps/groundbase/groundbase_poi_stuff.dm +++ b/maps/groundbase/groundbase_poi_stuff.dm @@ -1063,7 +1063,11 @@ name = "wide building 6" mappath = 'southwilds/villagepois/wide6.dmm' /area/submap/groundbase/poi/wildvillage/wide/wide6 - +/obj/item/weapon/paper/wide6 + name = "\improper hand written letter" + info = {"It is hard for me to write this out, and I hope you will be back soon, but I fear that by the time you return I will already be gone. I will try my best to hold on, but even as I write this, I can feel myself slipping.

+ I know that you all do not believe me but I really can see them, just beyond the walls, and they're even closer now than they were before. I can see them even when I close my eyes. Seven golden eyes watch me, and I can feel their heat pouring into me. As they come closer, I can feel myself being tugged in. Like I'm a little lost moon being tugged into the embrace of a passing star.

It still doesn't hurt. It's getting hard to see anything else, and I can't move anymore. I feel like everything is going to be okay. If you see seven eyes, don't be afraid. Just promise you'll come find me, okay?

+ I'll keep hol"} /datum/map_template/groundbase/wildvillage/long/long1 name = "long building 1" diff --git a/maps/groundbase/southwilds/villagepois/wide6.dmm b/maps/groundbase/southwilds/villagepois/wide6.dmm index 90f8197b9c..78b99a7beb 100644 --- a/maps/groundbase/southwilds/villagepois/wide6.dmm +++ b/maps/groundbase/southwilds/villagepois/wide6.dmm @@ -53,10 +53,7 @@ /obj/item/weapon/bedsheet/double, /obj/random/plushie, /obj/structure/curtain/open/privacy, -/obj/item/weapon/paper{ - info = "It is hard for me to write this out, and I hope you will be back soon, but I fear that by the time you return I will already be gone. I will try my best to hold on, but even as I write this, I can feel myself slipping.

I know that you all do not believe me but I really can see them, just beyond the walls, and they're even closer now than they were before. I can see them even when I close my eyes. Seven golden eyes watch me, and I can feel their heat pouring into me. As they come closer, I can feel myself being tugged in. Like I'm a little lost moon being tugged into the embrace of a passing star.

It still doesn't hurt. It's getting hard to see anything else, and I can't move anymore. I feel like everything is going to be okay. If you see seven eyes, don't be afraid. Just promise you'll come find me, okay?

I'll keep hol
"; - name = "A hand written letter" - }, +/obj/item/weapon/paper/wide6, /turf/simulated/floor/tiled/white, /area/submap/groundbase/poi/wildvillage/wide/wide6) "n" = ( diff --git a/maps/offmap_vr/common_offmaps.dm b/maps/offmap_vr/common_offmaps.dm index b726a2fec3..1076f00dd3 100644 --- a/maps/offmap_vr/common_offmaps.dm +++ b/maps/offmap_vr/common_offmaps.dm @@ -220,6 +220,7 @@ mappath = 'maps/gateway_vr/wildwest.dmm' associated_map_datum = /datum/map_z_level/common_lateload/gateway_destination +#include "../gateway_vr/lucky_7.dm" ///////////////////////////////////////////////////////////////////////////////////// diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm index 666ed451eb..2a1622a32f 100644 --- a/maps/stellar_delight/stellar_delight1.dmm +++ b/maps/stellar_delight/stellar_delight1.dmm @@ -6150,6 +6150,7 @@ /area/stellardelight/deck1/lowermed) "mK" = ( /obj/structure/table/sifwooden_reinforced, +/obj/item/weapon/storage/box/nifsofts_pilot, /turf/simulated/floor/tiled/eris/steel/panels, /area/stellardelight/deck1/pilot) "mL" = ( @@ -8379,6 +8380,7 @@ pixel_x = -3; pixel_y = -2 }, +/obj/item/weapon/book/manual/robotics_manual, /obj/item/weapon/book/manual/robotics_cyborgs, /turf/simulated/floor/tiled/steel_dirty, /area/assembly/robotics) @@ -10622,12 +10624,18 @@ /obj/item/clothing/shoes/magboots, /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, +/obj/item/device/suit_cooling_unit{ + pixel_y = -5 + }, +/obj/item/device/suit_cooling_unit{ + pixel_y = -5 + }, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, /obj/item/clothing/suit/space/void/pilot, /obj/item/clothing/suit/space/void/pilot, /obj/item/clothing/head/helmet/space/void/pilot, /obj/item/clothing/head/helmet/space/void/pilot, -/obj/item/weapon/tank/oxygen, -/obj/item/weapon/tank/oxygen, /turf/simulated/floor/tiled/eris/steel/panels, /area/stellardelight/deck1/pilot) "wu" = ( @@ -22368,6 +22376,7 @@ /obj/item/weapon/book/manual/resleeving, /obj/item/weapon/book/manual/ripley_build_and_repair, /obj/item/weapon/book/manual/robotics_cyborgs, +/obj/item/weapon/book/manual/robotics_manual, /obj/item/weapon/book/manual/rust_engine, /obj/item/weapon/book/manual/security_space_law, /obj/item/weapon/book/manual/standard_operating_procedure, diff --git a/maps/stellar_delight/stellar_delight2.dmm b/maps/stellar_delight/stellar_delight2.dmm index e54c49f0b2..6b6601dda9 100644 --- a/maps/stellar_delight/stellar_delight2.dmm +++ b/maps/stellar_delight/stellar_delight2.dmm @@ -1896,6 +1896,18 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/engineering/locker_room) +"dT" = ( +/obj/machinery/computer/atmos_alert{ + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + dir = 4 + }, +/obj/structure/sign/scenery/fakefireaxe{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/engineering/atmos/monitoring) "dU" = ( /obj/structure/bed/chair/backed_red{ dir = 4 @@ -1907,6 +1919,12 @@ /obj/structure/disposalpipe/segment, /turf/simulated/wall/bay/r_wall/steel, /area/stellardelight/deck2/o2production) +"dW" = ( +/obj/structure/closet/secure_closet/engineering_electrical/double{ + anchored = 1 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/engineering/locker_room) "dX" = ( /obj/machinery/light{ dir = 8 @@ -2059,6 +2077,10 @@ }, /turf/simulated/open, /area/stellardelight/deck2/aftstarboard) +"eo" = ( +/obj/structure/closet/secure_closet/engineering_welding/double, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/engineering/locker_room) "ep" = ( /obj/machinery/power/apc/angled{ dir = 4; @@ -2125,7 +2147,7 @@ }, /obj/item/clothing/shoes/black, /obj/item/device/communicator, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "ew" = ( /obj/structure/table/steel_reinforced, @@ -2469,6 +2491,10 @@ }, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/crew_quarters/bar) +"fj" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/simulated/floor/tiled/techfloor, +/area/stellardelight/deck2/o2production) "fk" = ( /obj/machinery/vending/engivend, /obj/machinery/light{ @@ -2522,6 +2548,10 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/bar) +"fq" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/simulated/floor/tiled/techfloor, +/area/stellardelight/deck2/o2production) "fr" = ( /obj/structure/sign/painting/public{ pixel_x = -30 @@ -3568,7 +3598,7 @@ /obj/machinery/disposal/wall/cleaner{ dir = 4 }, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "hQ" = ( /obj/structure/table/standard, @@ -5604,7 +5634,7 @@ /obj/machinery/vending/loadout/loadout_misc, /obj/machinery/atmospherics/unary/vent_pump/on, /obj/effect/landmark/vines, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "me" = ( /obj/structure/cable/white{ @@ -5835,7 +5865,7 @@ /obj/item/clothing/shoes/black, /obj/machinery/light, /obj/item/device/communicator, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "mH" = ( /obj/structure/table/steel_reinforced, @@ -7081,12 +7111,6 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) -"pF" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/item/clothing/gloves/yellow, -/obj/item/clothing/gloves/yellow, -/turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/engineering/locker_room) "pG" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -7898,9 +7922,6 @@ }, /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) -"ro" = ( -/turf/simulated/floor/tiled/techfloor, -/area/stellardelight/deck2/o2production) "rp" = ( /obj/structure/cable/cyan{ icon_state = "1-2" @@ -10630,7 +10651,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "xJ" = ( /obj/structure/table/reinforced, @@ -11697,7 +11718,7 @@ }, /obj/machinery/vending/loadout/uniform, /obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "Af" = ( /obj/structure/table/reinforced, @@ -12896,7 +12917,7 @@ }, /obj/machinery/vending/loadout/clothing, /obj/machinery/alarm/angled, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "CW" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ @@ -13085,7 +13106,7 @@ }, /obj/structure/undies_wardrobe, /obj/effect/landmark/vermin, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "Dv" = ( /obj/structure/cable/white{ @@ -14279,7 +14300,7 @@ }, /obj/machinery/vending/loadout/overwear, /obj/machinery/camera/network/civilian, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "FS" = ( /obj/structure/cable/green{ @@ -14630,15 +14651,6 @@ }, /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) -"GC" = ( -/obj/machinery/computer/atmos_alert{ - dir = 1 - }, -/obj/machinery/camera/network/engineering{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) "GD" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/green, @@ -15262,7 +15274,7 @@ /area/engineering/storage) "HV" = ( /obj/machinery/washing_machine, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "HW" = ( /obj/machinery/door/firedoor/glass, @@ -18291,10 +18303,6 @@ }, /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) -"OB" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/engineering/locker_room) "OC" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -21564,7 +21572,7 @@ dir = 8 }, /obj/machinery/vending/loadout/gadget, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/locker) "VV" = ( /obj/structure/cable/orange{ @@ -29887,7 +29895,7 @@ NK eq sz to -GC +dT Ag Fl sp @@ -30183,7 +30191,7 @@ UY OK pO Qu -ro +fj Sz ZG Jh @@ -30325,7 +30333,7 @@ pY DE sT WM -ro +fq Sz QW Jh @@ -35561,7 +35569,7 @@ Re OI da iw -pF +dW To To Vo @@ -35705,7 +35713,7 @@ Kv dS vb Nm -OB +eo OF Oq rf diff --git a/maps/stellar_delight/stellar_delight3.dmm b/maps/stellar_delight/stellar_delight3.dmm index ab630a0974..96c4712459 100644 --- a/maps/stellar_delight/stellar_delight3.dmm +++ b/maps/stellar_delight/stellar_delight3.dmm @@ -11701,7 +11701,7 @@ layer = 3.1; name = "HoP's Shutters" }, -/obj/structure/low_wall/bay/reinforced/blue, +/obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) "PL" = ( diff --git a/maps/stellar_delight/stellar_delight_areas.dm b/maps/stellar_delight/stellar_delight_areas.dm index 7d8e9a5326..a720cb6060 100644 --- a/maps/stellar_delight/stellar_delight_areas.dm +++ b/maps/stellar_delight/stellar_delight_areas.dm @@ -130,6 +130,7 @@ limit_mob_size = FALSE block_suit_sensors = TRUE forbid_events = TRUE + forbid_singulo = TRUE /area/stellardelight/deck1/dorms/dorm1 name = "Dormitory One" @@ -273,9 +274,11 @@ /area/stellardelight/deck3/transitgateway name = "Transit Gateway" forbid_events = TRUE + forbid_singulo = TRUE /area/stellardelight/deck3/cryo name = "Cryogenic Storage" forbid_events = TRUE + forbid_singulo = TRUE /area/stellardelight/deck3/readingroom name = "Reading Rooms" diff --git a/maps/stellar_delight/stellar_delight_things.dm b/maps/stellar_delight/stellar_delight_things.dm index 7175333ea0..c50d40feaf 100644 --- a/maps/stellar_delight/stellar_delight_things.dm +++ b/maps/stellar_delight/stellar_delight_things.dm @@ -152,7 +152,7 @@ layer = ABOVE_WINDOW_LAYER /obj/machinery/vending/wallmed2 layer = ABOVE_WINDOW_LAYER -/obj/structure/closet/fireaxecabinet +/obj/structure/fireaxecabinet layer = ABOVE_WINDOW_LAYER /obj/structure/extinguisher_cabinet layer = ABOVE_WINDOW_LAYER diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 38b069fc8a..2396932f10 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -35822,6 +35822,7 @@ /obj/effect/floor_decal/corner/green/border, /obj/machinery/light, /obj/machinery/portable_atmospherics/canister/oxygen, +/obj/item/weapon/storage/box/nifsofts_pilot, /turf/simulated/floor/tiled, /area/tether/exploration/pilot_office) "wEF" = ( diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm index 27caa00596..ea8d600caa 100644 --- a/maps/tether/tether_shuttles.dm +++ b/maps/tether/tether_shuttles.dm @@ -101,18 +101,18 @@ #define MOVE_PER(x) move_time*(x/100) SECONDS - computer.visible_message("[bicon(computer)] Beginning flight and telemetry monitoring.") + computer.visible_message("\icon[computer][bicon(computer)] Beginning flight and telemetry monitoring.") sleep(MOVE_PER(5)) if(failures >= 1) - computer.visible_message("[bicon(computer)] Single engine failure, continuing flight.") + computer.visible_message("\icon[computer][bicon(computer)] Single engine failure, continuing flight.") sleep(MOVE_PER(10)) if(failures >= 2) - computer.visible_message("[bicon(computer)] Second engine failure, unable to complete flight.") + computer.visible_message("\icon[computer][bicon(computer)] Second engine failure, unable to complete flight.") playsound(computer,'sound/mecha/internaldmgalarm.ogg',100,0) sleep(MOVE_PER(10)) - computer.visible_message("[bicon(computer)] Commencing RTLS abort mode.") + computer.visible_message("\icon[computer][bicon(computer)] Commencing RTLS abort mode.") sleep(MOVE_PER(20)) if(failures < 3) move(area_transition,origin) @@ -120,18 +120,18 @@ return 1 if(failures >= 3) - computer.visible_message("[bicon(computer)] Total engine failure, unable to complete abort mode.") + computer.visible_message("\icon[computer][bicon(computer)] Total engine failure, unable to complete abort mode.") playsound(computer,'sound/mecha/internaldmgalarm.ogg',100,0) sleep(MOVE_PER(5)) - computer.visible_message("[bicon(computer)] Distress signal broadcast.") + computer.visible_message("\icon[computer][bicon(computer)] Distress signal broadcast.") playsound(computer,'sound/mecha/internaldmgalarm.ogg',100,0) sleep(MOVE_PER(5)) - computer.visible_message("[bicon(computer)] Stall. Stall. Stall. Stall.") + computer.visible_message("\icon[computer][bicon(computer)] Stall. Stall. Stall. Stall.") playsound(computer,'sound/mecha/internaldmgalarm.ogg',100,0) sleep(MOVE_PER(5)) playsound(computer,'sound/mecha/internaldmgalarm.ogg',100,0) sleep(MOVE_PER(5)) - computer.visible_message("[bicon(computer)] Terrain! Pull up! Terrain! Pull up!") + computer.visible_message("\icon[computer][bicon(computer)] Terrain! Pull up! Terrain! Pull up!") playsound(computer,'sound/mecha/internaldmgalarm.ogg',100,0) playsound(computer,'sound/misc/bloblarm.ogg',100,0) sleep(MOVE_PER(10)) diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index ab3d00a8ee..476c9b6ed1 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -330,7 +330,7 @@ layer = ABOVE_WINDOW_LAYER /obj/machinery/vending/wallmed2 layer = ABOVE_WINDOW_LAYER -/obj/structure/closet/fireaxecabinet +/obj/structure/fireaxecabinet layer = ABOVE_WINDOW_LAYER /obj/structure/extinguisher_cabinet layer = ABOVE_WINDOW_LAYER diff --git a/sound/effects/pai_login.ogg b/sound/effects/pai_login.ogg new file mode 100644 index 0000000000..b3aa132905 Binary files /dev/null and b/sound/effects/pai_login.ogg differ diff --git a/sound/talksounds/a.ogg b/sound/talksounds/a.ogg new file mode 100644 index 0000000000..5c9920eaff Binary files /dev/null and b/sound/talksounds/a.ogg differ diff --git a/sound/talksounds/b.ogg b/sound/talksounds/b.ogg new file mode 100644 index 0000000000..294af704dc Binary files /dev/null and b/sound/talksounds/b.ogg differ diff --git a/sound/talksounds/c.ogg b/sound/talksounds/c.ogg new file mode 100644 index 0000000000..54d1dce5b4 Binary files /dev/null and b/sound/talksounds/c.ogg differ diff --git a/sound/talksounds/d.ogg b/sound/talksounds/d.ogg new file mode 100644 index 0000000000..e82bd21a8b Binary files /dev/null and b/sound/talksounds/d.ogg differ diff --git a/sound/talksounds/e.ogg b/sound/talksounds/e.ogg new file mode 100644 index 0000000000..2637136bbb Binary files /dev/null and b/sound/talksounds/e.ogg differ diff --git a/sound/talksounds/f.ogg b/sound/talksounds/f.ogg new file mode 100644 index 0000000000..2a30912e27 Binary files /dev/null and b/sound/talksounds/f.ogg differ diff --git a/sound/talksounds/g.ogg b/sound/talksounds/g.ogg new file mode 100644 index 0000000000..5f61e4b39d Binary files /dev/null and b/sound/talksounds/g.ogg differ diff --git a/sound/talksounds/goon/blub.ogg b/sound/talksounds/goon/blub.ogg new file mode 100644 index 0000000000..ee6de6ede4 Binary files /dev/null and b/sound/talksounds/goon/blub.ogg differ diff --git a/sound/talksounds/goon/blub_ask.ogg b/sound/talksounds/goon/blub_ask.ogg new file mode 100644 index 0000000000..193c3952b0 Binary files /dev/null and b/sound/talksounds/goon/blub_ask.ogg differ diff --git a/sound/talksounds/goon/blub_exclaim.ogg b/sound/talksounds/goon/blub_exclaim.ogg new file mode 100644 index 0000000000..b879fbd464 Binary files /dev/null and b/sound/talksounds/goon/blub_exclaim.ogg differ diff --git a/sound/talksounds/goon/bottalk_1.ogg b/sound/talksounds/goon/bottalk_1.ogg new file mode 100644 index 0000000000..b727224998 Binary files /dev/null and b/sound/talksounds/goon/bottalk_1.ogg differ diff --git a/sound/talksounds/goon/bottalk_2.ogg b/sound/talksounds/goon/bottalk_2.ogg new file mode 100644 index 0000000000..745b1a4edc Binary files /dev/null and b/sound/talksounds/goon/bottalk_2.ogg differ diff --git a/sound/talksounds/goon/bottalk_3.ogg b/sound/talksounds/goon/bottalk_3.ogg new file mode 100644 index 0000000000..e91f6bc156 Binary files /dev/null and b/sound/talksounds/goon/bottalk_3.ogg differ diff --git a/sound/talksounds/goon/bottalk_4.wav b/sound/talksounds/goon/bottalk_4.wav new file mode 100644 index 0000000000..130dfc3a8e Binary files /dev/null and b/sound/talksounds/goon/bottalk_4.wav differ diff --git a/sound/talksounds/goon/buwoo.ogg b/sound/talksounds/goon/buwoo.ogg new file mode 100644 index 0000000000..45bcbd50c6 Binary files /dev/null and b/sound/talksounds/goon/buwoo.ogg differ diff --git a/sound/talksounds/goon/buwoo_ask.ogg b/sound/talksounds/goon/buwoo_ask.ogg new file mode 100644 index 0000000000..d7011219b5 Binary files /dev/null and b/sound/talksounds/goon/buwoo_ask.ogg differ diff --git a/sound/talksounds/goon/buwoo_exclaim.ogg b/sound/talksounds/goon/buwoo_exclaim.ogg new file mode 100644 index 0000000000..935a802862 Binary files /dev/null and b/sound/talksounds/goon/buwoo_exclaim.ogg differ diff --git a/sound/talksounds/goon/cow.ogg b/sound/talksounds/goon/cow.ogg new file mode 100644 index 0000000000..db6c0a63ca Binary files /dev/null and b/sound/talksounds/goon/cow.ogg differ diff --git a/sound/talksounds/goon/cow_ask.ogg b/sound/talksounds/goon/cow_ask.ogg new file mode 100644 index 0000000000..aabd6f75c1 Binary files /dev/null and b/sound/talksounds/goon/cow_ask.ogg differ diff --git a/sound/talksounds/goon/cow_exclaim.ogg b/sound/talksounds/goon/cow_exclaim.ogg new file mode 100644 index 0000000000..dfac225463 Binary files /dev/null and b/sound/talksounds/goon/cow_exclaim.ogg differ diff --git a/sound/talksounds/goon/lizard.ogg b/sound/talksounds/goon/lizard.ogg new file mode 100644 index 0000000000..48638b0f23 Binary files /dev/null and b/sound/talksounds/goon/lizard.ogg differ diff --git a/sound/talksounds/goon/lizard_ask.ogg b/sound/talksounds/goon/lizard_ask.ogg new file mode 100644 index 0000000000..60cf84ff09 Binary files /dev/null and b/sound/talksounds/goon/lizard_ask.ogg differ diff --git a/sound/talksounds/goon/lizard_exclaim.ogg b/sound/talksounds/goon/lizard_exclaim.ogg new file mode 100644 index 0000000000..20d3c0b768 Binary files /dev/null and b/sound/talksounds/goon/lizard_exclaim.ogg differ diff --git a/sound/talksounds/goon/pug.ogg b/sound/talksounds/goon/pug.ogg new file mode 100644 index 0000000000..86d50225a5 Binary files /dev/null and b/sound/talksounds/goon/pug.ogg differ diff --git a/sound/talksounds/goon/pug_ask.ogg b/sound/talksounds/goon/pug_ask.ogg new file mode 100644 index 0000000000..4cdf1c8a5e Binary files /dev/null and b/sound/talksounds/goon/pug_ask.ogg differ diff --git a/sound/talksounds/goon/pug_exclaim.ogg b/sound/talksounds/goon/pug_exclaim.ogg new file mode 100644 index 0000000000..ed47bcf1c6 Binary files /dev/null and b/sound/talksounds/goon/pug_exclaim.ogg differ diff --git a/sound/talksounds/goon/pugg.ogg b/sound/talksounds/goon/pugg.ogg new file mode 100644 index 0000000000..90fa070e8b Binary files /dev/null and b/sound/talksounds/goon/pugg.ogg differ diff --git a/sound/talksounds/goon/pugg_ask.ogg b/sound/talksounds/goon/pugg_ask.ogg new file mode 100644 index 0000000000..463aa0afa0 Binary files /dev/null and b/sound/talksounds/goon/pugg_ask.ogg differ diff --git a/sound/talksounds/goon/pugg_exclaim.ogg b/sound/talksounds/goon/pugg_exclaim.ogg new file mode 100644 index 0000000000..c8d4ae1b4f Binary files /dev/null and b/sound/talksounds/goon/pugg_exclaim.ogg differ diff --git a/sound/talksounds/goon/radio.ogg b/sound/talksounds/goon/radio.ogg new file mode 100644 index 0000000000..0dcb87214f Binary files /dev/null and b/sound/talksounds/goon/radio.ogg differ diff --git a/sound/talksounds/goon/radio2.ogg b/sound/talksounds/goon/radio2.ogg new file mode 100644 index 0000000000..a9364857a5 Binary files /dev/null and b/sound/talksounds/goon/radio2.ogg differ diff --git a/sound/talksounds/goon/radio_ai.ogg b/sound/talksounds/goon/radio_ai.ogg new file mode 100644 index 0000000000..97eaf17417 Binary files /dev/null and b/sound/talksounds/goon/radio_ai.ogg differ diff --git a/sound/talksounds/goon/roach.ogg b/sound/talksounds/goon/roach.ogg new file mode 100644 index 0000000000..55a2ad8ac7 Binary files /dev/null and b/sound/talksounds/goon/roach.ogg differ diff --git a/sound/talksounds/goon/roach_ask.ogg b/sound/talksounds/goon/roach_ask.ogg new file mode 100644 index 0000000000..dc15d884cd Binary files /dev/null and b/sound/talksounds/goon/roach_ask.ogg differ diff --git a/sound/talksounds/goon/roach_exclaim.ogg b/sound/talksounds/goon/roach_exclaim.ogg new file mode 100644 index 0000000000..3a5a17d47a Binary files /dev/null and b/sound/talksounds/goon/roach_exclaim.ogg differ diff --git a/sound/talksounds/goon/skelly.ogg b/sound/talksounds/goon/skelly.ogg new file mode 100644 index 0000000000..b8e1a2921a Binary files /dev/null and b/sound/talksounds/goon/skelly.ogg differ diff --git a/sound/talksounds/goon/skelly_ask.ogg b/sound/talksounds/goon/skelly_ask.ogg new file mode 100644 index 0000000000..e81552d8df Binary files /dev/null and b/sound/talksounds/goon/skelly_ask.ogg differ diff --git a/sound/talksounds/goon/skelly_exclaim.ogg b/sound/talksounds/goon/skelly_exclaim.ogg new file mode 100644 index 0000000000..79eb112d1a Binary files /dev/null and b/sound/talksounds/goon/skelly_exclaim.ogg differ diff --git a/sound/talksounds/goon/speak_1.ogg b/sound/talksounds/goon/speak_1.ogg new file mode 100644 index 0000000000..ab8ddde4a6 Binary files /dev/null and b/sound/talksounds/goon/speak_1.ogg differ diff --git a/sound/talksounds/goon/speak_1_ask.ogg b/sound/talksounds/goon/speak_1_ask.ogg new file mode 100644 index 0000000000..89d631c6f6 Binary files /dev/null and b/sound/talksounds/goon/speak_1_ask.ogg differ diff --git a/sound/talksounds/goon/speak_1_exclaim.ogg b/sound/talksounds/goon/speak_1_exclaim.ogg new file mode 100644 index 0000000000..3be20fef39 Binary files /dev/null and b/sound/talksounds/goon/speak_1_exclaim.ogg differ diff --git a/sound/talksounds/goon/speak_2.ogg b/sound/talksounds/goon/speak_2.ogg new file mode 100644 index 0000000000..a8c9444a52 Binary files /dev/null and b/sound/talksounds/goon/speak_2.ogg differ diff --git a/sound/talksounds/goon/speak_2_ask.ogg b/sound/talksounds/goon/speak_2_ask.ogg new file mode 100644 index 0000000000..a2c9c86385 Binary files /dev/null and b/sound/talksounds/goon/speak_2_ask.ogg differ diff --git a/sound/talksounds/goon/speak_2_exclaim.ogg b/sound/talksounds/goon/speak_2_exclaim.ogg new file mode 100644 index 0000000000..7e0838d721 Binary files /dev/null and b/sound/talksounds/goon/speak_2_exclaim.ogg differ diff --git a/sound/talksounds/goon/speak_3.ogg b/sound/talksounds/goon/speak_3.ogg new file mode 100644 index 0000000000..33ec079b84 Binary files /dev/null and b/sound/talksounds/goon/speak_3.ogg differ diff --git a/sound/talksounds/goon/speak_3_ask.ogg b/sound/talksounds/goon/speak_3_ask.ogg new file mode 100644 index 0000000000..13156c332e Binary files /dev/null and b/sound/talksounds/goon/speak_3_ask.ogg differ diff --git a/sound/talksounds/goon/speak_3_exclaim.ogg b/sound/talksounds/goon/speak_3_exclaim.ogg new file mode 100644 index 0000000000..e10eb615b0 Binary files /dev/null and b/sound/talksounds/goon/speak_3_exclaim.ogg differ diff --git a/sound/talksounds/goon/speak_4.ogg b/sound/talksounds/goon/speak_4.ogg new file mode 100644 index 0000000000..6de26114ae Binary files /dev/null and b/sound/talksounds/goon/speak_4.ogg differ diff --git a/sound/talksounds/goon/speak_4_ask.ogg b/sound/talksounds/goon/speak_4_ask.ogg new file mode 100644 index 0000000000..76421d8fdd Binary files /dev/null and b/sound/talksounds/goon/speak_4_ask.ogg differ diff --git a/sound/talksounds/goon/speak_4_exclaim.ogg b/sound/talksounds/goon/speak_4_exclaim.ogg new file mode 100644 index 0000000000..ae6f3985be Binary files /dev/null and b/sound/talksounds/goon/speak_4_exclaim.ogg differ diff --git a/sound/talksounds/h.ogg b/sound/talksounds/h.ogg new file mode 100644 index 0000000000..9ed1f01341 Binary files /dev/null and b/sound/talksounds/h.ogg differ diff --git a/sound/talksounds/me_a.ogg b/sound/talksounds/me_a.ogg new file mode 100644 index 0000000000..8cb55c54f5 Binary files /dev/null and b/sound/talksounds/me_a.ogg differ diff --git a/sound/talksounds/me_b.ogg b/sound/talksounds/me_b.ogg new file mode 100644 index 0000000000..48e6b61d59 Binary files /dev/null and b/sound/talksounds/me_b.ogg differ diff --git a/sound/talksounds/me_c.ogg b/sound/talksounds/me_c.ogg new file mode 100644 index 0000000000..65476ee720 Binary files /dev/null and b/sound/talksounds/me_c.ogg differ diff --git a/sound/talksounds/me_d.ogg b/sound/talksounds/me_d.ogg new file mode 100644 index 0000000000..45d44bf2a1 Binary files /dev/null and b/sound/talksounds/me_d.ogg differ diff --git a/sound/talksounds/me_e.ogg b/sound/talksounds/me_e.ogg new file mode 100644 index 0000000000..d56c27d97d Binary files /dev/null and b/sound/talksounds/me_e.ogg differ diff --git a/sound/talksounds/me_f.ogg b/sound/talksounds/me_f.ogg new file mode 100644 index 0000000000..25e9754fec Binary files /dev/null and b/sound/talksounds/me_f.ogg differ diff --git a/sound/talksounds/subtle_sound.ogg b/sound/talksounds/subtle_sound.ogg new file mode 100644 index 0000000000..b8986f13fc Binary files /dev/null and b/sound/talksounds/subtle_sound.ogg differ diff --git a/sound/voice/moth/moth_chitter.ogg b/sound/voice/moth/moth_chitter.ogg new file mode 100644 index 0000000000..842bcf8e53 Binary files /dev/null and b/sound/voice/moth/moth_chitter.ogg differ diff --git a/sound/voice/moth/moth_laugh.ogg b/sound/voice/moth/moth_laugh.ogg new file mode 100644 index 0000000000..391d6c5aef Binary files /dev/null and b/sound/voice/moth/moth_laugh.ogg differ diff --git a/tgui/public/tgui.html b/tgui/public/tgui.html index 07d74341f7..b5fc63f0c8 100644 --- a/tgui/public/tgui.html +++ b/tgui/public/tgui.html @@ -301,6 +301,7 @@ if (type === 'js') { var node = document.createElement('script'); node.type = 'text/javascript'; + node.crossOrigin = 'anonymous'; // IE8: Prefer non-https protocols node.src = Byond.IS_LTE_IE9 ? url.replace('https://', 'http://') diff --git a/vorestation.dme b/vorestation.dme index 5c0135e14e..1385864992 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1898,13 +1898,16 @@ #include "code\modules\busy_space_yw\air_traffic.dm" #include "code\modules\busy_space_yw\loremaster.dm" #include "code\modules\busy_space_yw\organizations.dm" +#include "code\modules\casino\boxes_casino.dm" #include "code\modules\casino\casino.dm" #include "code\modules\casino\casino_book.dm" #include "code\modules\casino\casino_cards.dm" #include "code\modules\casino\casino_prize_vendor.dm" +#include "code\modules\casino\headset_casino.dm" #include "code\modules\casino\premium_dispenser.dm" #include "code\modules\casino\premium_vendors.dm" #include "code\modules\casino\slots.dm" +#include "code\modules\casino\spawnergrenade_casino.dm" #include "code\modules\catalogue\atoms.dm" #include "code\modules\catalogue\catalogue_data.dm" #include "code\modules\catalogue\catalogue_data_vr.dm" @@ -4260,6 +4263,7 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" +#include "maps\groundbase\groundbase.dm" #include "maps\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm"