From e0dc8e9986a55f6842d848dfe4bf923720f1ce95 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Wed, 25 Feb 2026 17:40:21 -0500 Subject: [PATCH 01/29] yeah sure --- .../shipbreaking/code/docking_clamp.dm | 52 ++++++ .../shipbreaking/code/salvage_computer.dm | 163 ++++++++++++++++++ tgstation.dme | 2 + 3 files changed, 217 insertions(+) create mode 100644 modular_doppler/shipbreaking/code/docking_clamp.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_computer.dm diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm new file mode 100644 index 00000000000000..af3ae84233ff85 --- /dev/null +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -0,0 +1,52 @@ +/obj/effect/temp_visual/telegraphing/long_duration + duration = 10 SECONDS + +/obj/machinery/docking_clamp + name = "docking clamp" + desc = "A large clamp for holding shuttles in place without using their own power." + icon = 'icons/obj/machines/floor.dmi' + icon_state = "mass_driver" + /// The docking port we use to connect ships with + var/obj/docking_port/stationary/docking_port + /// The computer the clamp is linked to + var/obj/machinery/computer/salvage_bay_controller/controller + +/obj/machinery/docking_clamp/Destroy(force) + if(controller) + controller.delink_clamp() + if(docking_port) + QDEL_NULL(docking_port) + return ..() + +/obj/machinery/docking_clamp/interact(mob/user) + . = ..() + if(!can_interact(user)) + return + if(docking_port) + balloon_alert(user, "already set!") + return + ballon_alert(user, "setting clamp") + if(!do_after(user, 2 SECONDS, src)) + return + var/turf/dock_location = get_step(src, dir) + docking_port = new(dock_location) + var/list/docking_turfs = docking_port.return_turfs + var/list/dock_bounds = docking_port.return_coords + var/list/overlappers = SSshuttle.get_dock_overlap(dock_bounds[1], dock_bounds[2], dock_bounds[3], dock_bounds[4], z) + if(length(overlappers)) + balloon_alert("intersecting nearby dock") + QDEL_NULL(docking_port) + return + for(var/turf/checked_turf as anything in docking_turfs) + if(checked_turf.x <= 10 || checked_turf.y <= 10 || checked_turf.x >= world.maxx - 10 || checked_turf.y >= world.maxy - 10) + balloon_alert("cannot place here") + new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) + QDEL_NULL(docking_port) + return + var/area/turf_area = get_area(checked_turf) + if(!is_space_or_openspace(turf_area) || checked_turf.is_blocked_turf(TRUE)) + balloon_alert("dock not clear") + new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) + QDEL_NULL(docking_port) + return + new /obj/effect/temp_visual/medical_holosign(checked_turf) diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm new file mode 100644 index 00000000000000..113208a7514f22 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -0,0 +1,163 @@ +/obj/machinery/computer/salvage_bay_controller + name = "salvage bay control console" + desc = "A bulky and old looking terminal that looks like it was dug straight out of the bottom of the ship's \ + databanks. Likely to be from the very early concept stages of the Dark Locations type ships, where resources \ + would be obtained through recycling the many old pioneer vessels scattered through the system. While planetary \ + extraction was deemed easier, the designs and systems still work, and the system is still filled with old ships \ + sitting mothballed in orbits all over." + icon_screen = "supply" + circuit = /obj/item/circuitboard/computer/personal_shuttle_order + light_color = COLOR_BRIGHT_ORANGE + /// Are we currently spawning a shuttle? Prevents multiple shuttles trying to spawn and land on each other at once + var/bay_occupied + /// The docking clamp machine we are linked to + var/obj/machinery/docking_clamp/clamp + /// The types of shuttle templates we can call + var/list/valid_shuttle_templates = list( + /datum/map_template/shuttle/personal_buyable/ferries, + ) + /// List of the subtypes for map templates we can buy, DO NOT SET DIRECTLY, USE VALID SHUTTLE TEMPLATES FOR DIFFERENT SELECTIONS + var/list/valid_shuttle_templates_subtypes = list() + /// Assoc list of every shuttle that can be purchased from the choice list, includes name and price and whatnot, filled on init of the console + var/list/scrap_list = list() + /// The currently selected shuttle map template + var/datum/map_template/shuttle/personal_buyable/selected_template + +/obj/machinery/computer/salvage_bay_controller/post_machine_initialize() + . = ..() + try_and_fill_shopping_list() + +/// Links a docking clamp to this console +/obj/machinery/computer/salvage_bay_controller/proc/link_docking_clamp(new_clamp) + if(clamp) + clamp.controller = null + clamp = new_clamp + clamp.controller = src + +/// Delinks ourselves from the clamp we're linked to +/obj/machinery/computer/salvage_bay_controller/proc/delink_clamp() + if(!clamp) + return // ?? how + clamp = null + +/// Fills the shopping list with names and templates +/obj/machinery/computer/salvage_bay_controller/proc/try_and_fill_shopping_list() + if(!length(valid_shuttle_templates)) + message_admins("HEY!!! [src] had nothing in its valid shuttle templates list, this is wrong or you just spawned the basetype!!") + return + if(length(valid_shuttle_templates_subtypes)) + message_admins("For some reason, [src] already had a filled valid_shuttle_templates_subtypes, this may or may not be a bug.") + return + for(var/datum/template as anything in valid_shuttle_templates) + var/list/subtypes_of_template = subtypesof(template) + for(var/datum/sub_template as anything in subtypes_of_template) + var/datum/map_template/shuttle/new_shuttle_template = new sub_template() + valid_shuttle_templates_subtypes.Add(new_shuttle_template) + // If there's no ships, going through the rest of this stuff is pointless + if(!length(valid_shuttle_templates_subtypes)) + message_admins("HEY!!! [src] has nothing in its valid_shuttle_templates_subtypes list, this is either wrong or you just spawned the basetype of the console!!") + return + // If we already have a shopping list, we don't need to worry about it + if(length(shopping_list)) + return + for(var/datum/map_template/shuttle/personal_buyable/shuttle_template as anything in valid_shuttle_templates_subtypes) + if(!shuttle_template.personal_shuttle_type || !shuttle_template.name || !shuttle_template.personal_shuttle_size || !shuttle_template.credit_cost) + message_admins("HEY!!! [src] just tried to add a personal shuttle template to its shopping list that was missing information! Template in question: [shuttle_template.type]") + continue + var/final_shuttle_name = "[shuttle_template.personal_shuttle_type] - [shuttle_template.name] - [shuttle_template.personal_shuttle_size] - COST: [shuttle_template.credit_cost]cr" + shopping_list[final_shuttle_name] = shuttle_template + if(!length(shopping_list)) + message_admins("HEY!!! [src] has nothing in its shuttle shopping list, this is either wrong or you just spawned the basetype of the console!!") + return + sort_list(shopping_list) + +#define PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST "Shopping List" +#define PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS "Selection Details" + +#define PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE "Purchase" +#define PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION "Clear Selection" + +/obj/machinery/computer/salvage_bay_controller/interact(mob/user) + . = ..() + if(!can_interact(user)) + return + if(!our_docking_port) + balloon_alert(user, "no linked docking port") + return + if(!length(shopping_list)) + balloon_alert(user, "no ships available") + return + + var/menu_option = tgui_alert(user, , "Personal Shuttle Order Console", list(PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST, PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS)) + if(!menu_option) + balloon_alert(user, "no selection made") + return + + switch(menu_option) + if(PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST) + var/new_template = tgui_input_list(user, "Choose Shuttle Template", "Personal Shuttle Order Console", shopping_list) + if(!new_template) + balloon_alert(user, "no selection made") + return + selected_template = shopping_list[new_template] + balloon_alert_to_viewers("new shuttle selection made") + if(PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS) + if(!selected_template) + balloon_alert(user, "no selected shuttle") + return + /// Temporarily holds what the selected template was at the time of the menu opening, to prevent accidental baits and switches + var/datum/map_template/shuttle/personal_buyable/cached_selected_template = selected_template + var/shuttle_details_option = tgui_alert( \ + user, \ + "[cached_selected_template.name] - COST: [cached_selected_template.credit_cost]cr - [cached_selected_template.description]", \ + "Personal Shuttle Order Console", \ + list(PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE, PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION) \ + ) + if(!shuttle_details_option) + balloon_alert(user, "no selection made") + return + + switch(shuttle_details_option) + if(PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE) + // Just to be safe, again + if(!cached_selected_template) + balloon_alert(user, "no selected shuttle") + return + + try_and_buy_that_shuttle(user, cached_selected_template) + if(PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION) + balloon_alert(user, "selection cleared") + selected_template = null + +#undef PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST +#undef PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS + +#undef PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE +#undef PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION + +/// Tries to buy the given shuttle template using the given user's money, if so, spawns the shuttle and sends it to our linked dock +/obj/machinery/computer/salvage_bay_controller/proc/try_and_buy_that_shuttle(mob/living/carbon/user, datum/map_template/shuttle/personal_buyable/selected_ship_template) + if(!our_docking_port) + balloon_alert(user, "no linked docking port") + return + if(our_docking_port.get_docked()) + balloon_alert(user, "docking port blocked") + return + if(spawning_shuttle) + balloon_alert(user, "shuttle en route") + return + if(attempt_charge(src, user, selected_ship_template.credit_cost) & COMPONENT_OBJ_CANCEL_CHARGE) + balloon_alert(user, "payment failed") + return + playsound(src, 'sound/effects/cashregister.ogg', 40, TRUE) + spawning_shuttle = TRUE + // If successful, returns the mobile docking port + var/obj/docking_port/mobile/loaded_port = SSshuttle.action_load(selected_ship_template, our_docking_port, FALSE) + if(loaded_port) + message_admins("[user] loaded [loaded_port] with a shuttle order console.") + say("Shuttle purchase successful.") + else + message_admins("[user] tried to load a ship template ([selected_ship_template]) but it failed for some reason, they should have been refunded the cost") + say("Shuttle purchase failed, cost of ship refunded.") + new /obj/item/holochip(drop_location(src), selected_ship_template.credit_cost) + spawning_shuttle = FALSE diff --git a/tgstation.dme b/tgstation.dme index 95865969adc03c..67931cdeada1e5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7684,6 +7684,8 @@ #include "modular_doppler\ship_captain\code\globals.dm" #include "modular_doppler\ship_captain\code\preferences.dm" #include "modular_doppler\ship_captain\code\ship_captain.dm" +#include "modular_doppler\shipbreaking\code\docking_clamp.dm" +#include "modular_doppler\shipbreaking\code\salvage_computer.dm" #include "modular_doppler\ships_r_us\code\buyable_shuttle_template.dm" #include "modular_doppler\ships_r_us\code\machine_flatpacks.dm" #include "modular_doppler\ships_r_us\code\micro_reactor.dm" From cf739216d37e80e16866da40aabbb1937359d9d8 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 8 Mar 2026 04:02:04 -0400 Subject: [PATCH 02/29] I think makes it work --- .../salvage/salvage_scrappie.dmm | 632 ++++++++++++++++++ .../shipbreaking/code/docking_clamp.dm | 31 +- .../shipbreaking/code/salvage_computer.dm | 160 ++--- .../shipbreaking/code/salvage_shuttle_base.dm | 58 ++ .../code/salvage_shuttles/example.dm | 5 + tgstation.dme | 2 + 6 files changed, 790 insertions(+), 98 deletions(-) create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttle_base.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/example.dm diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm new file mode 100644 index 00000000000000..2841406ffd5f79 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm @@ -0,0 +1,632 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/meter/layer4, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"eM" = ( +/obj/structure/sign/calendar/directional/north, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/red/dim/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"mH" = ( +/obj/machinery/light/cold/directional/north, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"nw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"oO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/firecloset/shuttle, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/atmos, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"tE" = ( +/obj/machinery/light/cold/directional/north, +/obj/machinery/digital_clock/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"tG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"uM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"xp" = ( +/obj/structure/closet/crate/cardboard/mothic, +/obj/item/construction/rtd/loaded{ + pixel_y = 7 + }, +/obj/item/airlock_painter/decal, +/obj/item/airlock_painter{ + pixel_y = -7 + }, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"yR" = ( +/obj/structure/marker_beacon/olive, +/turf/closed/wall/mineral/titanium, +/area/shuttle/salvaged_shuttle) +"yZ" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/airlock/hatch, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/structure/cable, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/all_access, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/machinery/light_switch/directional/north, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/obj/machinery/button/door/personal_shuttle_windows/directional/east, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"CO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/meter/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"Dp" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"Ef" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/marker_beacon/bronze, +/turf/closed/wall/mineral/titanium, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/item/tether_anchor{ + anchored = 1 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"Ew" = ( +/obj/structure/marker_beacon/olive, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/salvaged_shuttle) +"ER" = ( +/obj/machinery/modular_computer/preset/engineering{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/bot_white, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Fo" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/closet/firecloset/shuttle/tools, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Gm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/docking_port/mobile/salvage, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/machinery/modular_computer/preset/engineering{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/bot_white, +/obj/machinery/suit_storage_unit/industrial/personal_shuttle, +/obj/machinery/button/door/personal_shuttle_windows/directional/north, +/obj/machinery/vending/wallmed/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"In" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"IH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/item/storage/toolbox/emergency, +/obj/item/binoculars, +/obj/item/trench_tool, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/warm/directional/south, +/obj/structure/shelf, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Kv" = ( +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"KN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/power/micro_reactor, +/obj/effect/landmark/ship_captain_spawner, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"KV" = ( +/obj/structure/marker_beacon/olive, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"LH" = ( +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"LJ" = ( +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/salvaged_shuttle) +"LK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock/command, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/salvaged_shuttle) +"MS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/wall_healer/free/directional/west, +/turf/open/floor/iron/smooth, +/area/shuttle/salvaged_shuttle) +"Ow" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"PX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"PY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/airlock/atmos, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"QT" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"RS" = ( +/obj/effect/turf_decal/bot_red, +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Ti" = ( +/obj/machinery/light/cold/directional/north, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"TJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/structure/secure_safe/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"Wb" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/mapping_helpers/apc/unlocked, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"Wi" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/salvaged_shuttle) +"Xs" = ( +/obj/item/tether_anchor{ + anchored = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/salvaged_shuttle) +"Yj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YR" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen/personal_shuttle_windows, +/turf/open/floor/plating, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +LJ +Wi +CU +YC +YC +YC +CU +nP +Ew +"} +(2,1,1) = {" +CU +Kv +CU +oM +nP +nP +CU +RM +CU +"} +(3,1,1) = {" +zd +pH +CU +oO +tG +tG +CU +yZ +jv +"} +(4,1,1) = {" +Xs +nw +tC +CO +Ef +bv +PY +Gm +Xs +"} +(5,1,1) = {" +LV +Ow +CU +mH +KN +yi +CU +Fo +LV +"} +(6,1,1) = {" +Du +Pp +Pp +xp +kO +yi +Pp +Pp +KV +"} +(7,1,1) = {" +Pp +BW +Wb +IZ +kO +PX +Pp +fI +LH +"} +(8,1,1) = {" +QT +tE +kO +kO +BV +Ef +IP +IM +HR +"} +(9,1,1) = {" +Du +Pp +zm +Pp +Pp +Pp +Pp +Pp +KV +"} +(10,1,1) = {" +Pp +eM +uM +IG +Pp +Im +MS +ER +Pp +"} +(11,1,1) = {" +Ev +Ti +uM +uM +LK +Dp +In +Jd +Ev +"} +(12,1,1) = {" +Pp +yi +Yj +CC +Pp +TJ +IH +ez +YR +"} +(13,1,1) = {" +Pp +Pp +Pp +Pp +Pp +Pp +Av +ez +YR +"} +(14,1,1) = {" +Em +Du +YC +YC +YC +YR +RS +Pp +yR +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +Pp +YR +Md +YC +"} diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index af3ae84233ff85..8164fe9fd6bdad 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -1,13 +1,13 @@ /obj/effect/temp_visual/telegraphing/long_duration - duration = 10 SECONDS + duration = 15 SECONDS /obj/machinery/docking_clamp - name = "docking clamp" + name = "salvage clamp" desc = "A large clamp for holding shuttles in place without using their own power." icon = 'icons/obj/machines/floor.dmi' icon_state = "mass_driver" /// The docking port we use to connect ships with - var/obj/docking_port/stationary/docking_port + var/obj/docking_port/stationary/salvage_dock/docking_port /// The computer the clamp is linked to var/obj/machinery/computer/salvage_bay_controller/controller @@ -18,6 +18,19 @@ QDEL_NULL(docking_port) return ..() +/obj/machinery/docking_clamp/examine(mob/user) + . = ..() + . += span_notice("Use a [EXAMINE_HINT("multitool")] to connect this to a [EXAMINE_HINT("salvage bay control console")] before use.") + if(!docking_port) + . += span_notice("Interact with the clamp to set it up for docking, otherwise it will not function.") + . += span_notice("The clamp requires a large space in front of it, indicated by holograms on setup.") + . += span_notice("This space is [EXAMINE_HINT("17")] tiles to either side of the clamp, and [EXAMINE_HINT("24")] tiles straight out.") + +/obj/machinery/docking_clamp/multitool_act(mob/living/user, obj/item/multitool/the_tool) + the_tool.set_buffer(src) + balloon_alert(user, "saved to multitool buffer") + return ITEM_INTERACT_SUCCESS + /obj/machinery/docking_clamp/interact(mob/user) . = ..() if(!can_interact(user)) @@ -25,13 +38,13 @@ if(docking_port) balloon_alert(user, "already set!") return - ballon_alert(user, "setting clamp") + balloon_alert(user, "setting clamp") if(!do_after(user, 2 SECONDS, src)) return var/turf/dock_location = get_step(src, dir) docking_port = new(dock_location) - var/list/docking_turfs = docking_port.return_turfs - var/list/dock_bounds = docking_port.return_coords + var/list/docking_turfs = docking_port.return_turfs() + var/list/dock_bounds = docking_port.return_coords() var/list/overlappers = SSshuttle.get_dock_overlap(dock_bounds[1], dock_bounds[2], dock_bounds[3], dock_bounds[4], z) if(length(overlappers)) balloon_alert("intersecting nearby dock") @@ -50,3 +63,9 @@ QDEL_NULL(docking_port) return new /obj/effect/temp_visual/medical_holosign(checked_turf) + +/obj/docking_port/stationary/salvage_dock + name = "Salvage Dock" + width = 35 + height = 24 + dwidth = 17 diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 113208a7514f22..7077ff9e3d60df 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -14,7 +14,7 @@ var/obj/machinery/docking_clamp/clamp /// The types of shuttle templates we can call var/list/valid_shuttle_templates = list( - /datum/map_template/shuttle/personal_buyable/ferries, + /datum/map_template/shuttle/salvage_scrap/scrappie, ) /// List of the subtypes for map templates we can buy, DO NOT SET DIRECTLY, USE VALID SHUTTLE TEMPLATES FOR DIFFERENT SELECTIONS var/list/valid_shuttle_templates_subtypes = list() @@ -22,11 +22,29 @@ var/list/scrap_list = list() /// The currently selected shuttle map template var/datum/map_template/shuttle/personal_buyable/selected_template + /// Message when the shuttle can't be cleared due to an illegal item being present + var/blacklist_hit_message = "To prevent equipment loss and accidents: live organisms, human remains, \ + classified nuclear weaponry, mail, homing beacons, unstable eigenstates, fax machines, \ + or machinery housing any form of artificial intelligence cannot be present when \ + salvage is discarded." /obj/machinery/computer/salvage_bay_controller/post_machine_initialize() . = ..() try_and_fill_shopping_list() +/obj/machinery/computer/salvage_bay_controller/examine(mob/user) + . = ..() + if(!clamp) + . += span_notice("Connect to a [EXAMINE_HINT("salvage clamp")] by using a [EXAMINE_HINT("multitool")] \ + on the clamp then connecting it to this console.") + +/obj/machinery/computer/salvage_bay_controller/multitool_act(mob/living/user, obj/item/multitool/the_tool) + if(!the_tool.buffer) + return ITEM_INTERACT_FAILURE + link_docking_clamp(the_tool.buffer) + balloon_alert(user, "linked to clamp") + return ITEM_INTERACT_SUCCESS + /// Links a docking clamp to this console /obj/machinery/computer/salvage_bay_controller/proc/link_docking_clamp(new_clamp) if(clamp) @@ -53,111 +71,69 @@ for(var/datum/sub_template as anything in subtypes_of_template) var/datum/map_template/shuttle/new_shuttle_template = new sub_template() valid_shuttle_templates_subtypes.Add(new_shuttle_template) - // If there's no ships, going through the rest of this stuff is pointless - if(!length(valid_shuttle_templates_subtypes)) - message_admins("HEY!!! [src] has nothing in its valid_shuttle_templates_subtypes list, this is either wrong or you just spawned the basetype of the console!!") - return - // If we already have a shopping list, we don't need to worry about it - if(length(shopping_list)) - return - for(var/datum/map_template/shuttle/personal_buyable/shuttle_template as anything in valid_shuttle_templates_subtypes) - if(!shuttle_template.personal_shuttle_type || !shuttle_template.name || !shuttle_template.personal_shuttle_size || !shuttle_template.credit_cost) - message_admins("HEY!!! [src] just tried to add a personal shuttle template to its shopping list that was missing information! Template in question: [shuttle_template.type]") - continue - var/final_shuttle_name = "[shuttle_template.personal_shuttle_type] - [shuttle_template.name] - [shuttle_template.personal_shuttle_size] - COST: [shuttle_template.credit_cost]cr" - shopping_list[final_shuttle_name] = shuttle_template - if(!length(shopping_list)) - message_admins("HEY!!! [src] has nothing in its shuttle shopping list, this is either wrong or you just spawned the basetype of the console!!") - return - sort_list(shopping_list) - -#define PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST "Shopping List" -#define PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS "Selection Details" -#define PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE "Purchase" -#define PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION "Clear Selection" +/// Not used yet, provides detail about the currently docked shuttle for a little lore +#define SALVAGE_CONSOLE_BAY_INFO "Bay Info" +/// Loads a new shuttle into the linked salvage bay if the bay is clear +#define SALVAGE_CONSOLE_NEW_SHUTTLE "New Shuttle" +/// Clears the bay of any shuttle currently inside of it +#define SALVAGE_CONSOLE_CLEAR_BAY "Clear Bay" /obj/machinery/computer/salvage_bay_controller/interact(mob/user) . = ..() if(!can_interact(user)) return - if(!our_docking_port) - balloon_alert(user, "no linked docking port") + if(!clamp) + say("No linked docking clamp detected, re-link and try again later.") + if(!clamp.docking_port) + say("Linked salvage clamp currently inactive, please engage before operation.") return - if(!length(shopping_list)) - balloon_alert(user, "no ships available") + if(!length(valid_shuttle_templates_subtypes)) + say("No salvageable ships are available, please reference your local administrator.") return - var/menu_option = tgui_alert(user, , "Personal Shuttle Order Console", list(PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST, PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS)) + var/menu_option = tgui_input_list(user, "Salvage Bay Action", "Salvage Bay Control Console", list(SALVAGE_CONSOLE_NEW_SHUTTLE, SALVAGE_CONSOLE_CLEAR_BAY)) if(!menu_option) - balloon_alert(user, "no selection made") + balloon_alert(user, "no selection") return switch(menu_option) - if(PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST) - var/new_template = tgui_input_list(user, "Choose Shuttle Template", "Personal Shuttle Order Console", shopping_list) - if(!new_template) - balloon_alert(user, "no selection made") + if(SALVAGE_CONSOLE_CLEAR_BAY) + if(!bay_occupied) + say("No salvage to clear, dock already empty.") return - selected_template = shopping_list[new_template] - balloon_alert_to_viewers("new shuttle selection made") - if(PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS) - if(!selected_template) - balloon_alert(user, "no selected shuttle") + say("You are about to release savage clamps and clear the bay, proceed?") + var/clear_bay_confirm = tgui_alert(user, "Bay cannot be cleared if critical equipment or personnel are present, confirm?", "Salvage Bay Clear Confirmation", list("Confirm", "Cancel")) + if(!clear_bay_confirm || clear_bay_confirm == "Cancel") + say("Cancelling release of salvage clamps, proceed with work.") return - /// Temporarily holds what the selected template was at the time of the menu opening, to prevent accidental baits and switches - var/datum/map_template/shuttle/personal_buyable/cached_selected_template = selected_template - var/shuttle_details_option = tgui_alert( \ - user, \ - "[cached_selected_template.name] - COST: [cached_selected_template.credit_cost]cr - [cached_selected_template.description]", \ - "Personal Shuttle Order Console", \ - list(PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE, PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION) \ - ) - if(!shuttle_details_option) - balloon_alert(user, "no selection made") + var/obj/docking_port/mobile/salvage/docked_salvage = clamp.docking_port.get_docked() + if(!docked_salvage.check_blacklist()) + say(blacklist_hit_message) return + docked_salvage.jumpToNullSpace() + say("Dock clearing, keep clear of moving clamps to prevent injury.") + bay_occupied = FALSE + if(SALVAGE_CONSOLE_NEW_SHUTTLE) + if(!clamp?.docking_port) + say("Connection to salvage clamp lost, please check equipment and try again later.") + return + var/datum/map_template/shuttle/salvage_template = pick(valid_shuttle_templates_subtypes) + if(!salvage_template) + say("No salvageable ships are available, please reference your local administrator.") + return + if(bay_occupied) + say("Bay already occupied, or currently retrieving salvage, please wait.") + return + bay_occupied = TRUE + var/obj/docking_port/mobile/loaded_port = SSshuttle.action_load(salvage_template, clamp.docking_port, FALSE) + if(loaded_port) + say("Salvage clamps retrieving ship now, please stand clear of the work bay.") + else + message_admins("[user] tried to load a salvage template ([salvage_template]) but it failed for some reason, this should not happen!") + say("Failed to retrieve ship for salvage, please try again later.") + bay_occupied = FALSE - switch(shuttle_details_option) - if(PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE) - // Just to be safe, again - if(!cached_selected_template) - balloon_alert(user, "no selected shuttle") - return - - try_and_buy_that_shuttle(user, cached_selected_template) - if(PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION) - balloon_alert(user, "selection cleared") - selected_template = null - -#undef PERSONAL_SHUTTLE_CONSOLE_SHOPPING_LIST -#undef PERSONAL_SHUTTLE_CONSOLE_SELECTION_DETAILS - -#undef PERSONAL_SHUTTLE_CONSOLE_PURCHASE_SHUTTLE -#undef PERSONAL_SHUTTLE_CONSOLE_CLEAR_SELECTION - -/// Tries to buy the given shuttle template using the given user's money, if so, spawns the shuttle and sends it to our linked dock -/obj/machinery/computer/salvage_bay_controller/proc/try_and_buy_that_shuttle(mob/living/carbon/user, datum/map_template/shuttle/personal_buyable/selected_ship_template) - if(!our_docking_port) - balloon_alert(user, "no linked docking port") - return - if(our_docking_port.get_docked()) - balloon_alert(user, "docking port blocked") - return - if(spawning_shuttle) - balloon_alert(user, "shuttle en route") - return - if(attempt_charge(src, user, selected_ship_template.credit_cost) & COMPONENT_OBJ_CANCEL_CHARGE) - balloon_alert(user, "payment failed") - return - playsound(src, 'sound/effects/cashregister.ogg', 40, TRUE) - spawning_shuttle = TRUE - // If successful, returns the mobile docking port - var/obj/docking_port/mobile/loaded_port = SSshuttle.action_load(selected_ship_template, our_docking_port, FALSE) - if(loaded_port) - message_admins("[user] loaded [loaded_port] with a shuttle order console.") - say("Shuttle purchase successful.") - else - message_admins("[user] tried to load a ship template ([selected_ship_template]) but it failed for some reason, they should have been refunded the cost") - say("Shuttle purchase failed, cost of ship refunded.") - new /obj/item/holochip(drop_location(src), selected_ship_template.credit_cost) - spawning_shuttle = FALSE +#undef SALVAGE_CONSOLE_BAY_INFO +#undef SALVAGE_CONSOLE_NEW_SHUTTLE +#undef SALVAGE_CONSOLE_CLEAR_BAY diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm new file mode 100644 index 00000000000000..ae0929bc87634c --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -0,0 +1,58 @@ +/datum/map_template/shuttle/salvage_scrap + name = "DEBUG: Salvage Shuttle Basetype" + description = "Surely there would be a ship here." + shuttle_id = "shuttle_salvage_scrap" + port_id = "salvage" + prefix = "_maps/shuttles/~doppler_shuttles/salvage/" + credit_cost = CARGO_CRATE_VALUE * 10 + who_can_purchase = null + width = 35 + height = 24 + +/obj/docking_port/mobile/salvage + name = "salvaged shuttle" + shuttle_id = "shuttle_salvage_scrap" + callTime = 15 SECONDS + rechargeTime = 30 SECONDS + prearrivalTime = 10 SECONDS + preferred_direction = EAST + dir = NORTH + port_direction = EAST + movement_force = list( + "KNOCKDOWN" = 2, + "THROW" = 0, + ) + +/obj/docking_port/mobile/salvage/canDock(obj/docking_port/stationary/stationary_dock) + if(!stationary_dock) + return SHUTTLE_CAN_DOCK + if(!istype(stationary_dock)) + return SHUTTLE_NOT_A_DOCKING_PORT + if(stationary_dock.override_can_dock_checks) + return SHUTTLE_CAN_DOCK + // check the dock isn't occupied + var/currently_docked = stationary_dock.get_docked() + if(currently_docked) + // by someone other than us + if(currently_docked != src) + return SHUTTLE_SOMEONE_ELSE_DOCKED + else + // This isn't an error, per se, but we can't let the shuttle code + // attempt to move us where we currently are, it will get weird. + return SHUTTLE_ALREADY_DOCKED + return SHUTTLE_CAN_DOCK + +/// Checks if any items in the areas of the docking port would be blocked by the cargo shuttle, and so shouldn't be deleted here +/obj/docking_port/mobile/salvage/proc/check_blacklist() + for(var/area/shuttle_area as anything in shuttle_areas) + for (var/list/zlevel_turfs as anything in shuttle_area.get_zlevel_turf_lists()) + for(var/turf/shuttle_turf as anything in zlevel_turfs) + for(var/atom/passenger in shuttle_turf.get_all_contents()) + if((is_type_in_typecache(passenger, GLOB.blacklisted_cargo_types) || HAS_TRAIT(passenger, TRAIT_BANNED_FROM_CARGO_SHUTTLE)) && !istype(passenger, /obj/docking_port)) + return FALSE + return TRUE + +/area/shuttle/salvaged_shuttle + name = "Shuttle Salvage" + requires_power = TRUE + area_limited_icon_smoothing = /area/shuttle/salvaged_shuttle diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm new file mode 100644 index 00000000000000..fe5762606d3491 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm @@ -0,0 +1,5 @@ +/datum/map_template/shuttle/salvage_scrap/scrappie + name = "CAS Scrappie" + description = "Everyone's favourite salvage training ship, nearly clean of danger and excitement \ + in an effort to teach a new generation of shipbreakers how to do the job safely." + suffix = "scrappie" diff --git a/tgstation.dme b/tgstation.dme index 67931cdeada1e5..555c6c4d40e123 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7686,6 +7686,8 @@ #include "modular_doppler\ship_captain\code\ship_captain.dm" #include "modular_doppler\shipbreaking\code\docking_clamp.dm" #include "modular_doppler\shipbreaking\code\salvage_computer.dm" +#include "modular_doppler\shipbreaking\code\salvage_shuttle_base.dm" +#include "modular_doppler\shipbreaking\code\salvage_shuttles\example.dm" #include "modular_doppler\ships_r_us\code\buyable_shuttle_template.dm" #include "modular_doppler\ships_r_us\code\machine_flatpacks.dm" #include "modular_doppler\ships_r_us\code\micro_reactor.dm" From 9017ae6fd9fc75de9af99ea3c3e2c5fe6332fd57 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 8 Mar 2026 04:17:30 -0400 Subject: [PATCH 03/29] more docking clamp --- .../shipbreaking/code/docking_clamp.dm | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index 8164fe9fd6bdad..cfacb28ba50700 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -6,6 +6,7 @@ desc = "A large clamp for holding shuttles in place without using their own power." icon = 'icons/obj/machines/floor.dmi' icon_state = "mass_driver" + use_power = NO_POWER_USE /// The docking port we use to connect ships with var/obj/docking_port/stationary/salvage_dock/docking_port /// The computer the clamp is linked to @@ -32,37 +33,37 @@ return ITEM_INTERACT_SUCCESS /obj/machinery/docking_clamp/interact(mob/user) - . = ..() if(!can_interact(user)) return if(docking_port) balloon_alert(user, "already set!") - return + return ..() balloon_alert(user, "setting clamp") if(!do_after(user, 2 SECONDS, src)) - return + return ..() var/turf/dock_location = get_step(src, dir) docking_port = new(dock_location) var/list/docking_turfs = docking_port.return_turfs() var/list/dock_bounds = docking_port.return_coords() var/list/overlappers = SSshuttle.get_dock_overlap(dock_bounds[1], dock_bounds[2], dock_bounds[3], dock_bounds[4], z) if(length(overlappers)) - balloon_alert("intersecting nearby dock") + balloon_alert(user, "intersecting nearby dock") QDEL_NULL(docking_port) - return + return ..() for(var/turf/checked_turf as anything in docking_turfs) if(checked_turf.x <= 10 || checked_turf.y <= 10 || checked_turf.x >= world.maxx - 10 || checked_turf.y >= world.maxy - 10) - balloon_alert("cannot place here") + balloon_alert(user, "cannot place here") new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) QDEL_NULL(docking_port) - return + return ..() var/area/turf_area = get_area(checked_turf) if(!is_space_or_openspace(turf_area) || checked_turf.is_blocked_turf(TRUE)) - balloon_alert("dock not clear") + balloon_alert(user, "dock not clear") new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) QDEL_NULL(docking_port) - return + return ..() new /obj/effect/temp_visual/medical_holosign(checked_turf) + return ..() /obj/docking_port/stationary/salvage_dock name = "Salvage Dock" From fbe770070374b4098e73f29e39b42571e576b96c Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 8 Mar 2026 04:33:33 -0400 Subject: [PATCH 04/29] ?? docking port foolishness --- .../shipbreaking/code/docking_clamp.dm | 15 +++++++++------ .../shipbreaking/code/salvage_computer.dm | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index cfacb28ba50700..dedcf63782c27d 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -25,7 +25,7 @@ if(!docking_port) . += span_notice("Interact with the clamp to set it up for docking, otherwise it will not function.") . += span_notice("The clamp requires a large space in front of it, indicated by holograms on setup.") - . += span_notice("This space is [EXAMINE_HINT("17")] tiles to either side of the clamp, and [EXAMINE_HINT("24")] tiles straight out.") + . += span_notice("This space is [EXAMINE_HINT("15")] tiles to either side of the clamp, and [EXAMINE_HINT("18")] tiles straight out.") /obj/machinery/docking_clamp/multitool_act(mob/living/user, obj/item/multitool/the_tool) the_tool.set_buffer(src) @@ -48,25 +48,28 @@ var/list/overlappers = SSshuttle.get_dock_overlap(dock_bounds[1], dock_bounds[2], dock_bounds[3], dock_bounds[4], z) if(length(overlappers)) balloon_alert(user, "intersecting nearby dock") - QDEL_NULL(docking_port) + docking_port.Destroy() + docking_port = null return ..() for(var/turf/checked_turf as anything in docking_turfs) if(checked_turf.x <= 10 || checked_turf.y <= 10 || checked_turf.x >= world.maxx - 10 || checked_turf.y >= world.maxy - 10) balloon_alert(user, "cannot place here") new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) - QDEL_NULL(docking_port) + docking_port.Destroy() + docking_port = null return ..() var/area/turf_area = get_area(checked_turf) if(!is_space_or_openspace(turf_area) || checked_turf.is_blocked_turf(TRUE)) balloon_alert(user, "dock not clear") new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) - QDEL_NULL(docking_port) + docking_port.Destroy() + docking_port = null return ..() new /obj/effect/temp_visual/medical_holosign(checked_turf) return ..() /obj/docking_port/stationary/salvage_dock name = "Salvage Dock" - width = 35 - height = 24 + width = 31 + height = 18 dwidth = 17 diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 7077ff9e3d60df..0462735a20abf2 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -9,7 +9,7 @@ circuit = /obj/item/circuitboard/computer/personal_shuttle_order light_color = COLOR_BRIGHT_ORANGE /// Are we currently spawning a shuttle? Prevents multiple shuttles trying to spawn and land on each other at once - var/bay_occupied + var/bay_occupied = null /// The docking clamp machine we are linked to var/obj/machinery/docking_clamp/clamp /// The types of shuttle templates we can call @@ -85,7 +85,7 @@ return if(!clamp) say("No linked docking clamp detected, re-link and try again later.") - if(!clamp.docking_port) + if(!clamp?.docking_port) say("Linked salvage clamp currently inactive, please engage before operation.") return if(!length(valid_shuttle_templates_subtypes)) From 5fd1584941a95419565e2e969fe7513918a865f8 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 8 Mar 2026 06:06:54 -0400 Subject: [PATCH 05/29] clamp and console basics --- .../shipbreaking/code/docking_clamp.dm | 33 +++++++++++-------- .../shipbreaking/code/salvage_computer.dm | 7 ++-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index dedcf63782c27d..3877c96ce6795b 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -42,30 +42,31 @@ if(!do_after(user, 2 SECONDS, src)) return ..() var/turf/dock_location = get_step(src, dir) - docking_port = new(dock_location) - var/list/docking_turfs = docking_port.return_turfs() - var/list/dock_bounds = docking_port.return_coords() + var/obj/docking_port/stationary/salvage_dock/temp_docking_port = new(dock_location, dir) + var/list/docking_turfs = temp_docking_port.return_turfs() + var/list/dock_bounds = temp_docking_port.return_coords() var/list/overlappers = SSshuttle.get_dock_overlap(dock_bounds[1], dock_bounds[2], dock_bounds[3], dock_bounds[4], z) - if(length(overlappers)) - balloon_alert(user, "intersecting nearby dock") - docking_port.Destroy() - docking_port = null - return ..() + if(length(overlappers)) // Overlappers list contains ourself as well + for(var/dock as anything in overlappers) + if(dock == temp_docking_port) + continue + balloon_alert(user, "intersecting nearby dock") + temp_docking_port.Destroy(TRUE) + return ..() for(var/turf/checked_turf as anything in docking_turfs) if(checked_turf.x <= 10 || checked_turf.y <= 10 || checked_turf.x >= world.maxx - 10 || checked_turf.y >= world.maxy - 10) balloon_alert(user, "cannot place here") new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) - docking_port.Destroy() - docking_port = null + temp_docking_port.Destroy(TRUE) return ..() var/area/turf_area = get_area(checked_turf) - if(!is_space_or_openspace(turf_area) || checked_turf.is_blocked_turf(TRUE)) + if(!is_space_or_openspace(checked_turf) || checked_turf.is_blocked_turf(TRUE) || !is_area_nearby_station(turf_area)) balloon_alert(user, "dock not clear") new /obj/effect/temp_visual/telegraphing/long_duration(checked_turf) - docking_port.Destroy() - docking_port = null + temp_docking_port.Destroy(TRUE) return ..() new /obj/effect/temp_visual/medical_holosign(checked_turf) + docking_port = temp_docking_port return ..() /obj/docking_port/stationary/salvage_dock @@ -73,3 +74,9 @@ width = 31 height = 18 dwidth = 17 + +/obj/docking_port/stationary/salvage_dock/Initialize(mapload, dock_direction) + message_admins("dock dir before = [dir]") + setDir(dock_direction) + message_admins("dock_dir_after = [dir]") + . = ..() diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 0462735a20abf2..e1d5f7bee5a8e7 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -67,10 +67,7 @@ message_admins("For some reason, [src] already had a filled valid_shuttle_templates_subtypes, this may or may not be a bug.") return for(var/datum/template as anything in valid_shuttle_templates) - var/list/subtypes_of_template = subtypesof(template) - for(var/datum/sub_template as anything in subtypes_of_template) - var/datum/map_template/shuttle/new_shuttle_template = new sub_template() - valid_shuttle_templates_subtypes.Add(new_shuttle_template) + valid_shuttle_templates_subtypes.Add(template) // This makes the var a lie bog off /// Not used yet, provides detail about the currently docked shuttle for a little lore #define SALVAGE_CONSOLE_BAY_INFO "Bay Info" @@ -85,6 +82,7 @@ return if(!clamp) say("No linked docking clamp detected, re-link and try again later.") + return if(!clamp?.docking_port) say("Linked salvage clamp currently inactive, please engage before operation.") return @@ -126,6 +124,7 @@ say("Bay already occupied, or currently retrieving salvage, please wait.") return bay_occupied = TRUE + salvage_template = new salvage_template() var/obj/docking_port/mobile/loaded_port = SSshuttle.action_load(salvage_template, clamp.docking_port, FALSE) if(loaded_port) say("Salvage clamps retrieving ship now, please stand clear of the work bay.") From 5be9e15dff2f7d1f3d7f1e65acec4d90c0ef06ea Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 8 Mar 2026 13:02:31 -0400 Subject: [PATCH 06/29] limits the salvage removal list a bit more --- .../shipbreaking/code/salvage_computer.dm | 17 ++++++++++++++--- .../shipbreaking/code/salvage_shuttle_base.dm | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index e1d5f7bee5a8e7..09ab2a6888767a 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -1,3 +1,15 @@ +GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( + /mob/living, + /obj/effect/mob_spawn, + /obj/item/disk/nuclear, + /obj/item/hilbertshotel, + /obj/machinery/nuclearbomb, + /obj/narsie, + /obj/structure/blob, + /obj/structure/guardian_beacon, + /obj/tear_in_reality, + ))) + /obj/machinery/computer/salvage_bay_controller name = "salvage bay control console" desc = "A bulky and old looking terminal that looks like it was dug straight out of the bottom of the ship's \ @@ -24,9 +36,8 @@ var/datum/map_template/shuttle/personal_buyable/selected_template /// Message when the shuttle can't be cleared due to an illegal item being present var/blacklist_hit_message = "To prevent equipment loss and accidents: live organisms, human remains, \ - classified nuclear weaponry, mail, homing beacons, unstable eigenstates, fax machines, \ - or machinery housing any form of artificial intelligence cannot be present when \ - salvage is discarded." + classified nuclear weaponry, unstable eigenstates, or machinery housing any form of \ + artificial intelligence cannot be present when salvage is discarded." /obj/machinery/computer/salvage_bay_controller/post_machine_initialize() . = ..() diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm index ae0929bc87634c..19e8430613bd0d 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -48,7 +48,7 @@ for (var/list/zlevel_turfs as anything in shuttle_area.get_zlevel_turf_lists()) for(var/turf/shuttle_turf as anything in zlevel_turfs) for(var/atom/passenger in shuttle_turf.get_all_contents()) - if((is_type_in_typecache(passenger, GLOB.blacklisted_cargo_types) || HAS_TRAIT(passenger, TRAIT_BANNED_FROM_CARGO_SHUTTLE)) && !istype(passenger, /obj/docking_port)) + if((is_type_in_typecache(passenger, GLOB.blacklisted_salvage_removal_types) || HAS_TRAIT(passenger, TRAIT_BANNED_FROM_CARGO_SHUTTLE)) && !istype(passenger, /obj/docking_port)) return FALSE return TRUE From b36ad35f335f8a66ba5cdf0350070d69079eabf3 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 8 Mar 2026 18:57:28 -0400 Subject: [PATCH 07/29] more dock stuff --- .../salvage/salvage_scrappie.dmm | 901 ++++++++++++++---- .../shipbreaking/code/docking_clamp.dm | 8 +- .../code/salvage_bay_decoration.dm | 108 +++ .../shipbreaking/code/salvage_shuttle_base.dm | 22 +- .../code/salvage_shuttles/example.dm | 7 +- .../shipbreaking/icons/salvage_bay.dmi | Bin 0 -> 969 bytes strings/~doppler/salvage_shuttle.json | 129 +++ tgstation.dme | 1 + 8 files changed, 1004 insertions(+), 172 deletions(-) create mode 100644 modular_doppler/shipbreaking/code/salvage_bay_decoration.dm create mode 100644 modular_doppler/shipbreaking/icons/salvage_bay.dmi create mode 100644 strings/~doppler/salvage_shuttle.json diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm index 2841406ffd5f79..4aa55466d620ae 100644 --- a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm @@ -5,6 +5,18 @@ /obj/machinery/meter/layer4, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) +"ce" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/titanium, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/five, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) "ez" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark/smooth_large, @@ -32,6 +44,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) +"kZ" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/titanium, +/area/shuttle/salvaged_shuttle) "mH" = ( /obj/machinery/light/cold/directional/north, /obj/machinery/disposal/bin, @@ -110,12 +126,26 @@ /obj/structure/window/reinforced/plasma/spawner/directional/east, /turf/open/floor/plating/airless, /area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) "uM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/two, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) "xp" = ( /obj/structure/closet/crate/cardboard/mothic, /obj/item/construction/rtd/loaded{ @@ -132,6 +162,19 @@ "yi" = ( /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) +"ym" = ( +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/open/floor/iron/dark/smooth_large, +/area/shuttle/salvaged_shuttle) +"yx" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/salvaged_shuttle) "yR" = ( /obj/structure/marker_beacon/olive, /turf/closed/wall/mineral/titanium, @@ -192,6 +235,13 @@ "CU" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/salvaged_shuttle) +"Dm" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/six, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) "Dp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -208,17 +258,22 @@ /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "Em" = ( -/obj/structure/marker_beacon/bronze, -/turf/closed/wall/mineral/titanium, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/three, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Ev" = ( -/obj/item/tether_anchor{ - anchored = 1 - }, -/turf/closed/wall/mineral/titanium/nodiagonal, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/four, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Ew" = ( /obj/structure/marker_beacon/olive, +/obj/effect/mapping_helpers/salvage_anchor/end/one, /turf/closed/wall/mineral/plastitanium, /area/shuttle/salvaged_shuttle) "ER" = ( @@ -246,14 +301,17 @@ /turf/open/floor/iron/smooth, /area/shuttle/salvaged_shuttle) "HR" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/fans/tiny, -/obj/docking_port/mobile/salvage, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/one, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Im" = ( /obj/machinery/modular_computer/preset/engineering{ @@ -341,8 +399,11 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/salvaged_shuttle) "LJ" = ( -/obj/structure/marker_beacon/burgundy, -/turf/closed/wall/mineral/plastitanium, +/obj/item/tether_anchor{ + anchored = 1 + }, +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/salvaged_shuttle) "LK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -353,10 +414,15 @@ /turf/open/floor/iron/dark/smooth_large, /area/shuttle/salvaged_shuttle) "LV" = ( -/turf/closed/wall/mineral/plastitanium, +/obj/item/tether_anchor{ + anchored = 1 + }, +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/salvaged_shuttle) "Md" = ( -/turf/closed/wall/mineral/titanium, +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/plastitanium, /area/shuttle/salvaged_shuttle) "MS" = ( /obj/structure/cable, @@ -366,6 +432,13 @@ /obj/machinery/wall_healer/free/directional/west, /turf/open/floor/iron/smooth, /area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) "Ow" = ( /obj/effect/turf_decal/bot_white, /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ @@ -413,6 +486,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/shuttle/salvaged_shuttle) +"Sv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/eight, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) "Ti" = ( /obj/machinery/light/cold/directional/north, /turf/open/floor/plating, @@ -423,6 +503,11 @@ /obj/structure/secure_safe/directional/north, /turf/open/floor/iron/dark/smooth_large, /area/shuttle/salvaged_shuttle) +"UU" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/salvaged_shuttle) "Wb" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/mapping_helpers/apc/unlocked, @@ -466,167 +551,653 @@ /area/shuttle/salvaged_shuttle) (1,1,1) = {" -LJ -Wi -CU YC YC YC -CU -nP -Ew +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC "} (2,1,1) = {" -CU -Kv -CU -oM -nP -nP -CU -RM -CU +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC "} (3,1,1) = {" -zd -pH -CU -oO -tG -tG -CU -yZ -jv -"} -(4,1,1) = {" -Xs -nw -tC -CO -Ef -bv -PY -Gm -Xs -"} -(5,1,1) = {" -LV -Ow -CU -mH -KN -yi -CU -Fo -LV -"} -(6,1,1) = {" -Du -Pp -Pp -xp -kO -yi -Pp -Pp -KV -"} -(7,1,1) = {" -Pp -BW -Wb -IZ -kO -PX -Pp -fI -LH -"} -(8,1,1) = {" -QT -tE -kO -kO -BV -Ef -IP -IM -HR -"} -(9,1,1) = {" -Du -Pp -zm -Pp -Pp -Pp -Pp -Pp -KV -"} -(10,1,1) = {" -Pp -eM -uM -IG -Pp -Im -MS -ER -Pp -"} -(11,1,1) = {" -Ev -Ti -uM -uM -LK -Dp -In -Jd -Ev -"} -(12,1,1) = {" -Pp -yi -Yj -CC -Pp -TJ -IH -ez -YR -"} -(13,1,1) = {" -Pp -Pp -Pp -Pp -Pp -Pp -Av -ez -YR -"} -(14,1,1) = {" -Em -Du YC YC YC -YR -RS -Pp -yR -"} -(15,1,1) = {" YC YC YC YC YC -Pp -YR -Md +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +Sv +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ii +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +HR +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +HR +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +UU +Wi +CU +YC +YC +YC +CU +nP +Ew +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +CU +Kv +CU +oM +nP +nP +CU +RM +CU +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +zd +pH +CU +oO +tG +tG +CU +yZ +jv +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +YC +Xs +nw +tC +CO +Ef +bv +PY +Gm +Xs +YC +YC +YC +YC +vE +"} +(13,1,1) = {" +YC +YC +YC +YC +YC +yx +Ow +CU +mH +KN +yi +CU +Fo +Md +YC +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +YC +Du +Pp +Pp +xp +kO +yi +Pp +Pp +KV +YC +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +Pp +BW +Wb +IZ +kO +PX +Pp +fI +LH +YC +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +QT +tE +kO +kO +BV +Ef +IP +IM +ym +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +Du +Pp +zm +Pp +Pp +Pp +Pp +Pp +KV +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +Pp +eM +uM +IG +Pp +Im +MS +ER +Pp +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +LV +Ti +uM +uM +LK +Dp +In +Jd +LJ +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +Dm +YC +YC +YC +YC +Pp +yi +Yj +CC +Pp +TJ +IH +ez +YR +YC +YC +YC +YC +Em +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +Pp +Pp +Pp +Pp +Pp +Pp +Av +ez +YR +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +ce +Du +YC +YC +YC +YR +RS +Pp +yR +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Pp +YR +kZ +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +HR +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +HR +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ev +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC YC "} diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index 3877c96ce6795b..143304abbcfb56 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -25,7 +25,7 @@ if(!docking_port) . += span_notice("Interact with the clamp to set it up for docking, otherwise it will not function.") . += span_notice("The clamp requires a large space in front of it, indicated by holograms on setup.") - . += span_notice("This space is [EXAMINE_HINT("15")] tiles to either side of the clamp, and [EXAMINE_HINT("18")] tiles straight out.") + . += span_notice("This space is [EXAMINE_HINT(floor(/obj/docking_port/stationary/salvage_dock::width / 2))] tiles to either side of the clamp, and [EXAMINE_HINT(/obj/docking_port/stationary/salvage_dock::height)] tiles straight out.") /obj/machinery/docking_clamp/multitool_act(mob/living/user, obj/item/multitool/the_tool) the_tool.set_buffer(src) @@ -72,11 +72,9 @@ /obj/docking_port/stationary/salvage_dock name = "Salvage Dock" width = 31 - height = 18 - dwidth = 17 + height = 19 + dwidth = 15 /obj/docking_port/stationary/salvage_dock/Initialize(mapload, dock_direction) - message_admins("dock dir before = [dir]") setDir(dock_direction) - message_admins("dock_dir_after = [dir]") . = ..() diff --git a/modular_doppler/shipbreaking/code/salvage_bay_decoration.dm b/modular_doppler/shipbreaking/code/salvage_bay_decoration.dm new file mode 100644 index 00000000000000..965b5299566007 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_bay_decoration.dm @@ -0,0 +1,108 @@ +GLOBAL_LIST_EMPTY(shipbreaking_anchors) + +/turf/open/floor/engine/anchor_jack + name = "anchor jack" + desc = "An extraordinarily dense piece of material made to act as a 'space anchor' to arrest \ + movement of vessels. You don't think it would be a good idea to try and take this apart." + icon = 'modular_doppler/shipbreaking/icons/salvage_bay.dmi' + icon_state = "anchor_jack" + initial_gas_mix = AIRLESS_ATMOS + temperature = TCMB + +/turf/open/floor/engine/anchor_jack/wrench_act(mob/living/user, obj/item/I) + user.balloon_alert(user, "can't reach bolts!") + return + +/obj/effect/mapping_helpers/salvage_anchor + name = "salvage anchor tether start" + icon = 'modular_doppler/shipbreaking/icons/salvage_bay.dmi' + icon_state = "tether_start" + id_tag = "anchor_test" + late = TRUE + invisibility = INVISIBILITY_ABSTRACT + var/starting_anchor = TRUE + +/obj/effect/mapping_helpers/salvage_anchor/Initialize(mapload) + . = ..() + if(starting_anchor) + GLOB.shipbreaking_anchors += src + +/obj/effect/mapping_helpers/salvage_anchor/LateInitialize() + return // epic troll + +/obj/effect/mapping_helpers/salvage_anchor/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) + if(id_tag) + id_tag = "[port.shuttle_id]_[id_tag]" + +/obj/effect/mapping_helpers/salvage_anchor/Destroy(force) + if(starting_anchor) + GLOB.shipbreaking_anchors -= src + return ..() + +/obj/effect/mapping_helpers/salvage_anchor/end + name = "salvage anchor tether end" + icon_state = "tether_end" + starting_anchor = FALSE + /// The anchor beam we keep + var/datum/beam/anchor_cable + +/obj/effect/mapping_helpers/salvage_anchor/end/lateShuttleMove(turf/oldT, list/movement_force, move_dir) + . = ..() + if(anchor_cable) + anchor_cable.Destroy() + for(var/obj/effect/mapping_helpers/salvage_anchor/anchor in GLOB.shipbreaking_anchors) + if(anchor.id_tag != id_tag) + continue + var/atom/start_anchor = get_turf(anchor) + var/atom/end_anchor = get_turf(src) + anchor_cable = start_anchor.Beam(end_anchor, "anchor_cable", 'modular_doppler/shipbreaking/icons/salvage_bay.dmi', emissive = FALSE, layer = BELOW_CATWALK_LAYER) + +// Map default numbered ones + +/obj/effect/mapping_helpers/salvage_anchor/one + id_tag = "anchor_one" + +/obj/effect/mapping_helpers/salvage_anchor/end/one + id_tag = "anchor_one" + +/obj/effect/mapping_helpers/salvage_anchor/two + id_tag = "anchor_two" + +/obj/effect/mapping_helpers/salvage_anchor/end/two + id_tag = "anchor_two" + +/obj/effect/mapping_helpers/salvage_anchor/three + id_tag = "anchor_three" + +/obj/effect/mapping_helpers/salvage_anchor/end/three + id_tag = "anchor_three" + +/obj/effect/mapping_helpers/salvage_anchor/four + id_tag = "anchor_four" + +/obj/effect/mapping_helpers/salvage_anchor/end/four + id_tag = "anchor_four" + +/obj/effect/mapping_helpers/salvage_anchor/five + id_tag = "anchor_five" + +/obj/effect/mapping_helpers/salvage_anchor/end/five + id_tag = "anchor_five" + +/obj/effect/mapping_helpers/salvage_anchor/six + id_tag = "anchor_six" + +/obj/effect/mapping_helpers/salvage_anchor/end/six + id_tag = "anchor_six" + +/obj/effect/mapping_helpers/salvage_anchor/seven + id_tag = "anchor_seven" + +/obj/effect/mapping_helpers/salvage_anchor/end/seven + id_tag = "anchor_seven" + +/obj/effect/mapping_helpers/salvage_anchor/eight + id_tag = "anchor_eight" + +/obj/effect/mapping_helpers/salvage_anchor/end/eight + id_tag = "anchor_eight" diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm index 19e8430613bd0d..d67a7198781335 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -1,13 +1,33 @@ +#define SALVAGE_SHUTTLE_STRINGS "~doppler/salvage_shuttle.json" + /datum/map_template/shuttle/salvage_scrap name = "DEBUG: Salvage Shuttle Basetype" description = "Surely there would be a ship here." shuttle_id = "shuttle_salvage_scrap" port_id = "salvage" prefix = "_maps/shuttles/~doppler_shuttles/salvage/" - credit_cost = CARGO_CRATE_VALUE * 10 who_can_purchase = null width = 35 height = 24 + /// The name of the ship before it got abandoned, randomized if null + var/prior_name = null + /// A general ship class, similarly shaped ships should have the same class to help players + var/ship_class = "UNKNOWN" + /// What the ship was doing before it got abandoned, tells players what to expect inside the ship + var/prior_usage = "BEING BROKEN" + /// Who owned the ship before it was salvage, randomized if null + var/prior_owner = null + /// Operation date, "(year) to (year)", randomized if empty + var/prior_date = null + +/datum/map_template/shuttle/salvage_scrap/New() + . = ..() + if(!prior_name) + prior_name = strings(SALVAGE_SHUTTLE_STRINGS, "ship_name") + if(!prior_owner) + prior_owner = strings(SALVAGE_SHUTTLE_STRINGS, "ship_companies") + if(!prior_date) + prior_date = "[rand(2490, 2504)] to [rand(2504, 2525)]" /obj/docking_port/mobile/salvage name = "salvaged shuttle" diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm index fe5762606d3491..104a8e13af1607 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm @@ -1,5 +1,10 @@ /datum/map_template/shuttle/salvage_scrap/scrappie - name = "CAS Scrappie" + name = "Salvage Training Shuttle" description = "Everyone's favourite salvage training ship, nearly clean of danger and excitement \ in an effort to teach a new generation of shipbreakers how to do the job safely." suffix = "scrappie" + prior_name = "Scrappie" + ship_class = "Training Ship" + prior_usage = "Training other shipbreakers" + prior_owner = "Pallas Cat Authority" + prior_date = "2520 to Present" diff --git a/modular_doppler/shipbreaking/icons/salvage_bay.dmi b/modular_doppler/shipbreaking/icons/salvage_bay.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e654c579e44e81eac08701a5df98f6befa155ead GIT binary patch literal 969 zcmV;)12+7LP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DKRfOBfls_00Q|*L_t(|ob8&wYZO5g z$2TGtUL6iQk>pPh5hPWJsN}D(u(Gj}6k;KEHmOqhR~(5XSlNkxLW0=IVtp1i>RWir z+qd&;-@Mrg-21?AH+#G9*Uo%*Ztk|0%jMsuB5m7lNv?Z*__T}r=>2i??)A&&e03(W zbAumPEEZkkeQERA)nNb0;ow!mpa48zElSvhq#x`ZbnicZT8ZuS1@Hy7Ua!T*eb;If z0h9jvLw+jsg#A6d}9cXvnB;99ir@{xz6`H1Ck2hqW$%A&@VB>V}J(0cL9}^pad#v zHJDWcI5g?qon3JNQfAcv7d4WmRMh~O|Ilz0pdQRU6{=|fpZB$NpsEJcMtwgZhGaEZ zl3Dfxkg2P`(#azl-vuVG1SS1aPz^X=or!FW3P4wQT;->N;^?xOi`qH>zoxn#W%OB3 zAA2$IT-REG`e_?kVF9)M08E}f${=ta{G*3^{qb0Xb1Bpw9TmBwL47~KmH6e=rPw&X z)@45jm32U9xFV9EWA?ZKlszX|8{XJsn1_S=f{}a|7b%5PvR%@s=w$I2#HTs(A|l#$pEfXSre*ql9g50aAp=H3D+PE=DXS$qn#o rz_iff Date: Mon, 9 Mar 2026 13:13:25 -0400 Subject: [PATCH 08/29] a little spelling --- strings/~doppler/salvage_shuttle.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/strings/~doppler/salvage_shuttle.json b/strings/~doppler/salvage_shuttle.json index 3f93f686a1ed18..fac2fc6da93f2c 100644 --- a/strings/~doppler/salvage_shuttle.json +++ b/strings/~doppler/salvage_shuttle.json @@ -1,7 +1,7 @@ { "ship_companies": [ - "Void Corps Xth Expeditionairy", - "Cruesoe's Intermodal", + "Void Corps Xth Expeditionary", + "Crusoe's Intermodal", "Solar Geological Survey", "Unknown Affiliation", "Crusoe's Rest Settlement Oversight", From 7a0034609e116c281c623fcaf199f83758a5527d Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Mon, 9 Mar 2026 14:09:07 -0400 Subject: [PATCH 09/29] salvage tickets --- .../shipbreaking/code/salvage_computer.dm | 29 +++++++++++++++++++ .../shipbreaking/code/salvage_shuttle_base.dm | 2 ++ 2 files changed, 31 insertions(+) diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 09ab2a6888767a..99f112220ebdbe 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -139,6 +139,7 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( var/obj/docking_port/mobile/loaded_port = SSshuttle.action_load(salvage_template, clamp.docking_port, FALSE) if(loaded_port) say("Salvage clamps retrieving ship now, please stand clear of the work bay.") + make_salvage_ticket(salvage_template) else message_admins("[user] tried to load a salvage template ([salvage_template]) but it failed for some reason, this should not happen!") say("Failed to retrieve ship for salvage, please try again later.") @@ -147,3 +148,31 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( #undef SALVAGE_CONSOLE_BAY_INFO #undef SALVAGE_CONSOLE_NEW_SHUTTLE #undef SALVAGE_CONSOLE_CLEAR_BAY + +/// Makes a little half-sheet ticket with information about the ship that just got pulled in, scoreboard, scoreboard! +/obj/machinery/computer/salvage_bay_controller/proc/make_salvage_ticket(datum/map_template/shuttle/salvage_scrap/template) + playsound(src, 'sound/machines/printer.ogg', 50, vary = FALSE) + var/obj/item/paper/paperslip/new_ticket = new(drop_location()) + new_ticket.name = "salvage receipt - [template.prior_name]" + // Makes the actual text on the paper + var/list/ticket_contents = list() + ticket_contents += "

Salvage Ticket

" + ticket_contents += "
" + ticket_contents += "

Ship details:

" + ticket_contents += "

Designation - [template.prior_name]" + ticket_contents += "Prior Owner - [template.prior_owner]" + ticket_contents += "Operation History - [template.prior_date]:" + ticket_contents += "[template.prior_usage]

" + ticket_contents += "
" + ticket_contents += "

Ship Class - [template.ship_class]" + ticket_contents += "[template.ship_hazards]

" + ticket_contents += "
" + ticket_contents += "

Signature or stamp confirms receipt of salvage ownership, and that any and all contents of the salvage are the direct responsibility of all signees.

" + ticket_contents += "

\[___________________________________\]

" + ticket_contents += "

\[___________________________________\]

" + ticket_contents += "

\[___________________________________\]

" + // Just to break it up a little + new_ticket.color = COLOR_BEIGE + new_ticket.add_raw_text(ticket_contents) + new_ticket.update_appearance() + diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm index d67a7198781335..9e218ce7379614 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -19,6 +19,8 @@ var/prior_owner = null /// Operation date, "(year) to (year)", randomized if empty var/prior_date = null + /// What kind of hazards the crews could expect to be in the ship, unknown by default + var/ship_hazards = "Unknown present hazards -- Proceed with caution" /datum/map_template/shuttle/salvage_scrap/New() . = ..() From 2da23f38113e917d001b2b0c535a88ecf2efd934 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Mon, 9 Mar 2026 15:03:19 -0400 Subject: [PATCH 10/29] tickets real --- _maps/map_files/Pubbystation/pubbystation.dmm | 315 ++++++++++-------- .../shipbreaking/code/docking_clamp.dm | 5 +- .../shipbreaking/code/salvage_computer.dm | 10 +- 3 files changed, 182 insertions(+), 148 deletions(-) diff --git a/_maps/map_files/Pubbystation/pubbystation.dmm b/_maps/map_files/Pubbystation/pubbystation.dmm index 03a867ac0835bd..6b5b61dff2ccb4 100644 --- a/_maps/map_files/Pubbystation/pubbystation.dmm +++ b/_maps/map_files/Pubbystation/pubbystation.dmm @@ -28054,6 +28054,12 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plastic, /area/station/security/lockers) +"cTG" = ( +/obj/machinery/computer/salvage_bay_controller{ + dir = 4 + }, +/turf/open/floor/iron, +/area/space) "cUS" = ( /obj/machinery/camera/directional/north{ c_tag = "Custodial Quarters" @@ -31845,6 +31851,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"fXo" = ( +/obj/machinery/docking_clamp{ + dir = 8 + }, +/turf/open/floor/plating, +/area/space) "fXP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -31946,6 +31958,9 @@ "gdl" = ( /turf/open/floor/iron/white/textured_large, /area/station/medical/pharmacy) +"gdB" = ( +/turf/closed/wall, +/area/space) "gdJ" = ( /obj/item/storage/box/bodybags{ pixel_x = -6; @@ -44700,6 +44715,10 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) +"qco" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/space) "qcD" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/canister/bz, @@ -47348,6 +47367,9 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/space/basic, /area/space/nearstation) +"rWN" = ( +/turf/open/floor/plating, +/area/space) "rXH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -54395,6 +54417,10 @@ /obj/structure/cable, /turf/open/floor/iron/white/textured_large, /area/station/medical/treatment_center) +"wUl" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space) "wUz" = ( /obj/structure/chair/stool/bar/directional/west, /obj/effect/mapping_helpers/burnt_floor, @@ -55741,6 +55767,10 @@ }, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/rd) +"xMa" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "xMg" = ( /obj/machinery/power/turbine/inlet_compressor, /turf/open/floor/engine, @@ -56249,6 +56279,9 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/engine, /area/station/science/xenobiology) +"yhD" = ( +/turf/open/floor/iron, +/area/space) "yhO" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -58515,33 +58548,33 @@ aaa aaa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +rWN +rWN +rWN aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +xMa aaa aaa aaa @@ -58770,37 +58803,37 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +xMa +wUl +wUl +wUl +xMa +wUl +wUl +wUl +wUl +xMa +wUl +wUl +wUl +xMa +rWN +rWN +rWN +xMa +wUl +wUl +wUl +xMa +wUl +wUl +wUl +wUl +xMa +wUl +wUl +wUl +xMa aaa aaa aaa @@ -59029,33 +59062,33 @@ aaa aaa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +rWN +rWN +rWN aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +xMa aaa aaa aaa @@ -64169,33 +64202,33 @@ aaa aaa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +rWN +fXo +rWN aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +xMa aaa aaa aaa @@ -64424,37 +64457,37 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +xMa +wUl +wUl +wUl +xMa +wUl +wUl +wUl +wUl +xMa +wUl +wUl +wUl +xMa +rWN +rWN +rWN +xMa +wUl +wUl +wUl +xMa +wUl +wUl +wUl +wUl +xMa +wUl +wUl +wUl +xMa aaa aaa aaa @@ -64683,33 +64716,33 @@ aaa aaa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa +rWN +rWN +rWN aaa aaa +xMa aaa aaa +xMa aaa aaa +xMa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +xMa aaa aaa aaa @@ -64943,13 +64976,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +gdB +gdB +gdB +qco +qco +qco +gdB aaa aaa aaa @@ -65200,13 +65233,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +gdB +yhD +yhD +yhD +cTG +yhD +qco aaa aaa aaa @@ -65457,13 +65490,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +gdB +yhD +yhD +yhD +yhD +yhD +qco aaa aaa aaa @@ -65714,13 +65747,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +gdB +yhD +yhD +yhD +yhD +yhD +gdB aaa aaa aaa @@ -65971,13 +66004,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +gdB +gdB +gdB +gdB +gdB +gdB +gdB aaa aaa aaa diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index 143304abbcfb56..621d219f5145c9 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -21,11 +21,12 @@ /obj/machinery/docking_clamp/examine(mob/user) . = ..() - . += span_notice("Use a [EXAMINE_HINT("multitool")] to connect this to a [EXAMINE_HINT("salvage bay control console")] before use.") + if(!controller) + . += span_notice("Use a [EXAMINE_HINT("multitool")] to connect this to a [EXAMINE_HINT("salvage bay control console")] before use.") if(!docking_port) . += span_notice("Interact with the clamp to set it up for docking, otherwise it will not function.") . += span_notice("The clamp requires a large space in front of it, indicated by holograms on setup.") - . += span_notice("This space is [EXAMINE_HINT(floor(/obj/docking_port/stationary/salvage_dock::width / 2))] tiles to either side of the clamp, and [EXAMINE_HINT(/obj/docking_port/stationary/salvage_dock::height)] tiles straight out.") + . += span_notice("This space is [EXAMINE_HINT("[floor(/obj/docking_port/stationary/salvage_dock::width / 2)]")] tiles to either side of the clamp, and [EXAMINE_HINT("[/obj/docking_port/stationary/salvage_dock::height]")] tiles straight out.") /obj/machinery/docking_clamp/multitool_act(mob/living/user, obj/item/multitool/the_tool) the_tool.set_buffer(src) diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 99f112220ebdbe..9f342c9e0ca574 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -155,16 +155,16 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( var/obj/item/paper/paperslip/new_ticket = new(drop_location()) new_ticket.name = "salvage receipt - [template.prior_name]" // Makes the actual text on the paper - var/list/ticket_contents = list() + var/list/ticket_contents ticket_contents += "

Salvage Ticket

" ticket_contents += "
" ticket_contents += "

Ship details:

" - ticket_contents += "

Designation - [template.prior_name]" - ticket_contents += "Prior Owner - [template.prior_owner]" - ticket_contents += "Operation History - [template.prior_date]:" + ticket_contents += "

Designation - [template.prior_name]
" + ticket_contents += "Prior Owner - [template.prior_owner]
" + ticket_contents += "Operation History from [template.prior_date]:
" ticket_contents += "[template.prior_usage]

" ticket_contents += "
" - ticket_contents += "

Ship Class - [template.ship_class]" + ticket_contents += "

Ship Class - [template.ship_class]
" ticket_contents += "[template.ship_hazards]

" ticket_contents += "
" ticket_contents += "

Signature or stamp confirms receipt of salvage ownership, and that any and all contents of the salvage are the direct responsibility of all signees.

" From b6967f1c82d8bca19332d4b3a7b33477b9fa07e3 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Mon, 9 Mar 2026 17:08:54 -0400 Subject: [PATCH 11/29] fixes salvage tickets for real --- .../shipbreaking/code/salvage_shuttle_base.dm | 4 ++-- .../code/salvage_shuttles/example.dm | 2 +- strings/~doppler/salvage_shuttle.json | 19 ++++++++++--------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm index 9e218ce7379614..cd72204a775980 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -25,9 +25,9 @@ /datum/map_template/shuttle/salvage_scrap/New() . = ..() if(!prior_name) - prior_name = strings(SALVAGE_SHUTTLE_STRINGS, "ship_name") + prior_name = pick_list_replacements(SALVAGE_SHUTTLE_STRINGS, "ship_name") if(!prior_owner) - prior_owner = strings(SALVAGE_SHUTTLE_STRINGS, "ship_companies") + prior_owner = pick_list_replacements(SALVAGE_SHUTTLE_STRINGS, "ship_companies") if(!prior_date) prior_date = "[rand(2490, 2504)] to [rand(2504, 2525)]" diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm index 104a8e13af1607..df1887446ecf96 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm @@ -5,6 +5,6 @@ suffix = "scrappie" prior_name = "Scrappie" ship_class = "Training Ship" - prior_usage = "Training other shipbreakers" + prior_usage = "Unknown history" prior_owner = "Pallas Cat Authority" prior_date = "2520 to Present" diff --git a/strings/~doppler/salvage_shuttle.json b/strings/~doppler/salvage_shuttle.json index fac2fc6da93f2c..0b942c08865a99 100644 --- a/strings/~doppler/salvage_shuttle.json +++ b/strings/~doppler/salvage_shuttle.json @@ -14,11 +14,17 @@ "Cybersun-Osaka Industries", "Exagon-Ichikawa Orbital Resourcing", "Osaka Medical Systems", - "Associato Petrochimico dell'Adriatico", + "Associato Petrochimico dell'Adriatico" ], + "ship_name": [ - "@pick(designation) @pick(name_breaker)" + "@pick(designation) @pick(name_word) @pick(digit)", + "@pick(designation) @pick(name_word) @pick(name_word)", + "@pick(designation) @pick(name_word) @pick(name_word) @pick(digit)", + "@pick(designation) @pick(name_word)-@pick(name_word)", + "@pick(designation) @pick(name_word)-@pick(name_word) @pick(digit)" ], + "designation": [ "4CA", "4CAV", @@ -30,13 +36,7 @@ "3CARS", "(Independent)" ], - "name_breaker": [ - "@pick(name_word) @pick(digit)", - "@pick(name_word) @pick(name_word)", - "@pick(name_word) @pick(name_word) @pick(digit)", - "@pick(name_word)-@pick(name_word)", - "@pick(name_word)-@pick(name_word) @pick(digit)" - ], + "name_word": [ "Spring", "Summer", @@ -104,6 +104,7 @@ "Extract", "Company" ], + "digit": [ "I", "II", From 2c5b0a3080ea0c5591f301018ab9e715afefd423 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 10 Mar 2026 01:40:45 -0400 Subject: [PATCH 12/29] hull plates 1 --- .../salvage/salvage_scrappie.dmm | 703 ++++++------------ .../shipbreaking/code/shuttle_parts/hull.dm | 70 ++ .../icons/turfs/aluminum_wall.dmi | Bin 0 -> 4854 bytes .../icons/turfs/aluminum_wall.png | Bin 0 -> 1223 bytes .../icons/turfs/aluminum_wall.png.toml | 2 + .../icons/turfs/nanocarbon_wall.dmi | Bin 0 -> 6103 bytes .../icons/turfs/nanocarbon_wall.png | Bin 0 -> 2489 bytes .../icons/turfs/nanocarbon_wall.png.toml | 2 + .../shipbreaking/icons/turfs/walls_misc.dmi | Bin 0 -> 429 bytes tgstation.dme | 1 + 10 files changed, 286 insertions(+), 492 deletions(-) create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/hull.dm create mode 100644 modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi create mode 100644 modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png create mode 100644 modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png.toml create mode 100644 modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi create mode 100644 modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.png create mode 100644 modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.png.toml create mode 100644 modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm index 4aa55466d620ae..90d867179b5c8a 100644 --- a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm @@ -1,14 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"bv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/meter/layer4, -/turf/open/floor/plating, -/area/shuttle/salvaged_shuttle) "ce" = ( -/obj/structure/marker_beacon/bronze, -/obj/effect/mapping_helpers/salvage_anchor/end/five, -/turf/closed/wall/mineral/titanium, +/obj/machinery/portable_atmospherics/canister/freon, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "dD" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -18,113 +11,50 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "ez" = ( -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"eM" = ( -/obj/structure/sign/calendar/directional/north, +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "fI" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/chair/comfy/shuttle{ dir = 4 }, -/obj/effect/turf_decal/bot_white, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"jv" = ( -/obj/structure/railing/eva_handhold/directional/south, -/turf/closed/wall/mineral/plastitanium/nodiagonal, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "kO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/shuttle/salvaged_shuttle) "kZ" = ( -/obj/effect/mapping_helpers/salvage_anchor/end/four, -/turf/closed/wall/mineral/titanium, +/obj/structure/lattice, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "mH" = ( -/obj/machinery/light/cold/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark/smooth_large, +/turf/open/floor/iron/colony, /area/shuttle/salvaged_shuttle) "nw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/smooth, +/obj/structure/railing/eva_handhold/directional/south, +/obj/effect/mapping_helpers/salvage_anchor/end/one, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "nP" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/salvaged_shuttle) -"oM" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plating/airless, +/obj/structure/mineral_door/manual_colony_door, +/turf/open/floor/iron/colony/texture, /area/shuttle/salvaged_shuttle) "oO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/salvaged_shuttle) -"pH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/closet/firecloset/shuttle, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"tC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/atmos, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"tE" = ( /obj/machinery/light/cold/directional/north, -/obj/machinery/digital_clock/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) -"tG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/power/shuttle_engine/heater{ +"pH" = ( +/obj/machinery/computer/old{ dir = 8 }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/turf/open/floor/plating/airless, +/turf/open/floor/iron/colony, +/area/shuttle/salvaged_shuttle) +"tE" = ( +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) "uk" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -133,12 +63,6 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) -"uM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/shuttle/salvaged_shuttle) "vE" = ( /obj/structure/railing/eva_handhold/directional/south, /obj/structure/railing/eva_handhold/directional/north, @@ -147,93 +71,46 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "xp" = ( -/obj/structure/closet/crate/cardboard/mothic, -/obj/item/construction/rtd/loaded{ - pixel_y = 7 - }, -/obj/item/airlock_painter/decal, -/obj/item/airlock_painter{ - pixel_y = -7 - }, -/obj/item/rcd_ammo, -/obj/item/rcd_ammo, -/turf/open/floor/plating, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "yi" = ( /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "ym" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/fans/tiny, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "yx" = ( +/obj/structure/railing/eva_handhold/directional/north, /obj/effect/mapping_helpers/salvage_anchor/end/seven, -/turf/closed/wall/mineral/plastitanium, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "yR" = ( -/obj/structure/marker_beacon/olive, -/turf/closed/wall/mineral/titanium, +/obj/structure/marker_beacon/jade, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "yZ" = ( -/obj/effect/turf_decal/bot_white, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"zd" = ( -/obj/structure/railing/eva_handhold/directional/north, -/turf/closed/wall/mineral/plastitanium/nodiagonal, +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "zm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/airlock/hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/mineral_door/manual_colony_door, +/turf/open/floor/iron/colony/white/texture, /area/shuttle/salvaged_shuttle) "Av" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/smooth, -/area/shuttle/salvaged_shuttle) -"BV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/all_access, -/turf/open/floor/plating, -/area/shuttle/salvaged_shuttle) -"BW" = ( -/obj/machinery/light_switch/directional/north, +/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) -"CC" = ( -/obj/machinery/button/door/personal_shuttle_windows/directional/east, -/turf/open/floor/plating, +"BV" = ( +/turf/open/floor/iron/colony/texture, /area/shuttle/salvaged_shuttle) "CO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/meter/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, +/obj/structure/reagent_dispensers/fueltank/large, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "CU" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, +/obj/structure/marker_beacon/jade, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) "Dm" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -243,19 +120,19 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Dp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Du" = ( -/obj/structure/marker_beacon/burgundy, -/turf/closed/wall/mineral/titanium/nodiagonal, +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Ef" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "Em" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -271,34 +148,14 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) -"Ew" = ( -/obj/structure/marker_beacon/olive, -/obj/effect/mapping_helpers/salvage_anchor/end/one, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/salvaged_shuttle) "ER" = ( -/obj/machinery/modular_computer/preset/engineering{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/bot_white, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark/smooth_large, +/obj/machinery/light/blacklight/directional/north, +/turf/open/floor/iron/colony, /area/shuttle/salvaged_shuttle) "Fo" = ( -/obj/effect/turf_decal/bot_white, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/closet/firecloset/shuttle/tools, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"Gm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/smooth, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "HR" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -314,123 +171,46 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Im" = ( -/obj/machinery/modular_computer/preset/engineering{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/bot_white, -/obj/machinery/suit_storage_unit/industrial/personal_shuttle, -/obj/machinery/button/door/personal_shuttle_windows/directional/north, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"In" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth, -/area/shuttle/salvaged_shuttle) -"IG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plating, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "IH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/shuttle/salvaged_shuttle) -"IM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/shuttle/salvaged_shuttle) -"IP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/dark/smooth_large, +/obj/machinery/power/micro_reactor, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "IZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/plating, +/obj/structure/reagent_dispensers/fueltank/large, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "Jd" = ( -/obj/item/storage/toolbox/emergency, -/obj/item/binoculars, -/obj/item/trench_tool, -/obj/effect/turf_decal/bot_white, -/obj/machinery/light/warm/directional/south, -/obj/structure/shelf, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"Kv" = ( -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/salvaged_shuttle) -"KN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/micro_reactor, -/obj/effect/landmark/ship_captain_spawner, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/grille, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "KV" = ( -/obj/structure/marker_beacon/olive, -/turf/closed/wall/mineral/titanium/nodiagonal, +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LH" = ( -/obj/structure/railing/eva_handhold/directional/south, -/turf/closed/wall/mineral/titanium/nodiagonal, +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "LJ" = ( -/obj/item/tether_anchor{ - anchored = 1 - }, /obj/effect/mapping_helpers/salvage_anchor/end/three, -/turf/closed/wall/mineral/titanium/nodiagonal, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/command, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/marker_beacon/jade, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LV" = ( -/obj/item/tether_anchor{ - anchored = 1 - }, /obj/effect/mapping_helpers/salvage_anchor/end/six, -/turf/closed/wall/mineral/titanium/nodiagonal, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Md" = ( +/obj/structure/railing/eva_handhold/directional/south, /obj/effect/mapping_helpers/salvage_anchor/end/two, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/salvaged_shuttle) -"MS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/wall_healer/free/directional/west, -/turf/open/floor/iron/smooth, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "MV" = ( /obj/docking_port/mobile/salvage, @@ -440,51 +220,23 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Ow" = ( -/obj/effect/turf_decal/bot_white, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Pp" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/salvaged_shuttle) -"PX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark/smooth_large, +/obj/machinery/light/cold/dim/directional/west, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/shuttle/salvaged_shuttle) "PY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/airlock/atmos, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/girder/reinforced, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "QT" = ( /obj/structure/railing/eva_handhold/directional/north, -/turf/closed/wall/mineral/titanium/nodiagonal, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "RM" = ( -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/salvaged_shuttle) -"RS" = ( -/obj/effect/turf_decal/bot_red, -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Sv" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -494,60 +246,27 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Ti" = ( -/obj/machinery/light/cold/directional/north, +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8 + }, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "TJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/structure/secure_safe/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/shuttle/salvaged_shuttle) -"UU" = ( -/obj/structure/marker_beacon/burgundy, -/obj/effect/mapping_helpers/salvage_anchor/end/eight, -/turf/closed/wall/mineral/plastitanium, +/obj/machinery/light/blacklight/directional/south, +/turf/open/floor/iron/colony, /area/shuttle/salvaged_shuttle) "Wb" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/unlocked, -/obj/structure/cable, -/obj/effect/mapping_helpers/apc/no_charge, -/turf/open/floor/plating, -/area/shuttle/salvaged_shuttle) -"Wi" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, +/turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) "Xs" = ( -/obj/item/tether_anchor{ - anchored = 1 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/salvaged_shuttle) -"Yj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plating, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "YC" = ( /turf/template_noop, /area/template_noop) "YR" = ( -/obj/effect/spawner/structure/window/reinforced/shuttle, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen/personal_shuttle_windows, -/turf/open/floor/plating, +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) (1,1,1) = {" @@ -684,11 +403,11 @@ YC YC YC YC -YC -YC -YC -YC -YC +LK +RM +Ti +RM +Ow YC YC YC @@ -703,15 +422,15 @@ HR YC YC YC +Wb YC +Fo +mH +ez +mH +nw YC -YC -YC -YC -YC -YC -YC -YC +Wb YC YC YC @@ -724,15 +443,15 @@ YC YC YC YC -UU -Wi -CU -YC +Wb YC +RM +ER +IH +TJ +RM YC -CU -nP -Ew +Wb YC YC YC @@ -746,14 +465,14 @@ YC YC YC CU -Kv -CU -oM -nP +RM +RM +Wb nP -CU +Wb RM -CU +RM +tE YC YC YC @@ -766,15 +485,15 @@ YC YC YC YC -zd -pH -CU +Du +yZ +Wb oO -tG -tG -CU +kO +Im +Wb yZ -jv +KV YC YC YC @@ -788,13 +507,13 @@ YC YC YC Xs -nw -tC +yi +PY CO -Ef -bv +kO +xp PY -Gm +yi Xs YC YC @@ -809,13 +528,13 @@ YC YC YC yx -Ow -CU +yi +PY mH -KN +xp +mH +PY yi -CU -Fo Md YC YC @@ -830,13 +549,13 @@ YC YC YC Du -Pp -Pp +Av +PY xp kO +xp +PY yi -Pp -Pp KV YC YC @@ -850,15 +569,15 @@ YC YC YC YC -Pp -BW +RM +yi Wb IZ kO -PX -Pp -fI -LH +Im +Wb +yi +RM YC YC YC @@ -872,13 +591,13 @@ YC YC YC QT -tE -kO -kO +Wb +Wb +Wb BV -Ef -IP -IM +Wb +Wb +Jd ym YC YC @@ -892,15 +611,15 @@ YC YC YC YC -Du -Pp zm Pp -Pp -Pp -Pp -Pp -KV +zm +xp +kO +xp +Wb +yi +Xs YC YC YC @@ -913,15 +632,15 @@ YC YC YC YC -Pp -eM -uM -IG -Pp +Du +Wb +Wb +oO +kO Im -MS -ER -Pp +Wb +yi +KV YC YC YC @@ -935,12 +654,12 @@ YC YC YC LV -Ti -uM -uM -LK -Dp -In +yi +Wb +Wb +nP +Wb +Wb Jd LJ YC @@ -955,15 +674,15 @@ YC YC YC YC -Pp +QT +ce +Wb +xp +kO +xp +Wb yi -Yj -CC -Pp -TJ -IH -ez -YR +ym YC YC YC @@ -976,14 +695,14 @@ YC YC YC YC -Pp -Pp -Pp -Pp -Pp -Pp -Av -ez +yR +Xs +RM +Ef +kO +fI +RM +Xs YR YC YC @@ -997,15 +716,15 @@ YC YC YC YC -ce -Du -YC YC +kZ +RM +pH +xp +pH +RM +kZ YC -YR -RS -Pp -yR YC YC YC @@ -1018,15 +737,15 @@ YC YC YC YC -YC -YC -YC -YC -YC -Pp -YR +Xs kZ -YC +LK +RM +PY +RM +Ow +kZ +RM YC YC YC @@ -1039,15 +758,15 @@ HR YC YC YC +LH +kZ YC YC YC YC YC -YC -YC -YC -YC +kZ +Dp YC YC YC @@ -1060,15 +779,15 @@ YC YC YC YC +Xs +Xs YC YC YC YC YC -YC -YC -YC -YC +RM +RM YC YC YC diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm new file mode 100644 index 00000000000000..337f8ac0b07289 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -0,0 +1,70 @@ +/turf/closed/wall/mineral/nanocarbon + name = "nanocarbon hull" + desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi' + icon_state = "nanocarbon_wall-0" + base_icon_state = "nanocarbon_wall" + explosive_resistance = 3 + flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD + sheet_type = /obj/item/stack/sheet/mineral/titanium + hardness = 20 + smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS + smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS + canSmoothWith = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2) + rust_resistance = RUST_RESISTANCE_ABSOLUTE + +/turf/closed/wall/mineral/nanocarbon/nodiagonal + icon = MAP_SWITCH('modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi', 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi') + icon_state = MAP_SWITCH("nanocarbon_wall-0", "nanocarbon_nd") + smoothing_flags = SMOOTH_BITMASK + +/turf/closed/wall/mineral/nanocarbon/black + color = COLOR_DARK + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black + color = COLOR_DARK + +/turf/closed/wall/mineral/nanocarbon/standard + color = COLOR_SILVER + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/standard + color = COLOR_SILVER + +/turf/closed/wall/mineral/nanocarbon/red + color = COLOR_BUBBLEGUM_RED + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/red + color = COLOR_BUBBLEGUM_RED + +/turf/closed/wall/mineral/nanocarbon/green + color = COLOR_IRISH_GREEN + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/green + color = COLOR_IRISH_GREEN + +/turf/closed/wall/mineral/nanocarbon/blue + color = COLOR_COMMAND_BLUE + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/blue + color = COLOR_COMMAND_BLUE + +/turf/closed/wall/mineral/nanocarbon/yellow + color = COLOR_GOLD + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/yellow + color = COLOR_GOLD + +/turf/closed/wall/mineral/aluminum + name = "aluminum wall" + desc = "A thin aluminum wall, commonly used to plate the interior of ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi' + icon_state = "aluminum_wall-0" + base_icon_state = "aluminum_wall" + sheet_type = /obj/item/stack/sheet/mineral/titanium + hardness = 50 + explosive_resistance = 0 + smoothing_groups = SMOOTH_GROUP_TITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS + canSmoothWith = SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_TITANIUM_WALLS + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT*2) + rust_resistance = RUST_RESISTANCE_BASIC diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi b/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi new file mode 100644 index 0000000000000000000000000000000000000000..befa022a3e53cc0a278ec305711a7f7588f03556 GIT binary patch literal 4854 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 VUcE-N;(cWC*;zYSVJ-dd{U23JE8_qF literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png b/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..314d0f2b6afc36ce3721d0da99d2e5230fa2bed5 GIT binary patch literal 1223 zcmV;&1UUPNP)001Be1^@s6m49>f00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj9aY;l$RCr$PoWE-nK@`U~38V?JNgAU>2t)(HLNr!E zMEoCY^gj_y;eVoyrHGw~y@G8tt(+;66ovzHS46%;-tnBwk2k+=?sD^iWA|le-kUf3 z-JRLV-py@nY@BzDn`>(qdv1R9dZV&@-v`QaP;YDNcDKL(Q*Cv29^C7`e*3PD|2Q~M ze_L8wQrmvNueQ2GPNF>66Eo_9Y;3 z5@Lt|b@AFDpOO<0k~1eIe;u>~j5B|LGH82ElmNL1q@>&dC>GTt8(W>y0*oake;eb> zpOE@2g%TjHUNq{(^Jm5eo1l}Z@B2Wfym|XhmB-Z=BES+ukSV4FUN^-L$K)q>{(6k} zA3l2hm9*#im5aur(WTHkB*$IjDgj|YAf?E4q2y%#VmqRg2u)XGD7bRy>H$7`8gYrx zm#=PfY~l;?SHiv|K#*I6Im9B$3J^#{h~ttnxx|M#1I;6V&n}H5|5!+b z=sOalFJEr+x-Ria{ecqp+@syyb4u3KP+JFcfx5(M5+B8)j`hW-jx6yIf(Ne{r1_^n zc>_GH+VVBoG{2^Pu<`QMYmq-t!WIe8brSV`jzj=J5+BENEG-%3NO|5O%kt*`H`uC8=PN5>tuIycs? zcfH=BI*uXm_~fMfdv?}cTV7Uw!v`Rd--n0l`0C1v@GU~#)tpmaM&#_E~;a= zg`4b<_{a(Q{5d@xwO?Yp@{jRnvnBbu?9%>IZRsYoE2>8jPFBzFI`QQQow)lYR<9G=H znqo>oT}l2a@OFZb{DCCL>R(Dydj?$MBXC?&2EKBDhEwB#&n}H5|5!*k=sOaSFJEr+ zx+Gu|Qh%U?Z4{tHd?Dl%;Vj_0YlY$yVNEUxFt_-K93sRmn{MO4XHO$8@%i%AZH`TZ zA^u9(^ZW^`l=ui;gteCdCXL*8KAlOt6Skk`h$JO{8{^EMkoqje=w$?Iv=sh>JbYgQ z?@WqIqR=TVz>u6dDf#Q59blaK1C*)04#?kz0cgAgbOx2>`#$teq|UO5fuDd9%P_IT l=5L~A{_yGZSI+Kt{{SSS9K4p2S{(oY002ovPDHLkV1hB|PmBNn literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png.toml b/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png.toml new file mode 100644 index 00000000000000..3773d0ed6bca10 --- /dev/null +++ b/modular_doppler/shipbreaking/icons/turfs/aluminum_wall.png.toml @@ -0,0 +1,2 @@ +output_name = "aluminum_wall" +template = "bitmask/diagonal_32x32.toml" diff --git a/modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi b/modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi new file mode 100644 index 0000000000000000000000000000000000000000..23234f67ba143fd96a6d4c6fa973d265e97993f0 GIT binary patch literal 6103 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 literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.png b/modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..048994d9705f6b2aae401b967cb153026b51c22e GIT binary patch literal 2489 zcmV;q2}bsbP)Px#1ZP1_K>z@;j|==^1pojEV@X6oRCr$PoIQ`-L==WMX;Y(!Hlj)g;tvpshK7a$ zBxvZUp+VG$25LGQkf5NUp@{@PfsP8LMG)g83#9Me_uspE{M+x{m3;caqwe~{uYbH8*L4WW z;(C%Rs}{7GT!R0<{Pf+O(`|L`-@o7O{ijc#Zfe6j?|ytMZ)EBoaNadPH~%@hEptq_ z<>cu8^YKrc$6nVX<$p`)LvH?GHlWYG{HmK!i|@bry1Q=OfTGSVNZHY6e~$kq<-cGI zwq)%F^x(mR=g*!!JAHRkY<%zq3!#gWxOeZ~)srVrRxeIlHlcWLxX!Z1bXv}sPF-s? zpG(aD7SQ%7`R^K#n@=sL9AGt}_73PK9wgeX?;VFB>^Ikm7z42f|JQ6lDn9pLd;RL^ zfB#;o2*u*#xGN5^2&wpZ?U9?17}8}KW4dh9kS@=w*?cZF|23h_Q}h3_0eM0VtZNSq zDC*n;wp++{eQzIf{1;vmWkts1t<72uD5vzMV_uk#?uhc-#j=d%$B{6Kx>0foqA!b&UnSo3H{c|8<}Z zbMt>!|MX#jB`7KD$S_VU0wQk4Av`zA5J%6&l;UIf>{6SMpK)%~O{kk|iN|%_WAib5 z)|yZr)V(DCuQVVEvEU_8Ml`T-LyVKYcf8^z%)x7-EKwq_dn8qSM5_20j%hBbQG~jW zd#(?r4`0{Js%oR?E~(+F&WlH{e-r-_?TKTZ24aY+EOC_$&cWo&?S_VbyO51eYpsT z5}U~~DBJRn!rbDcc=!+*&edAU&~wS`WMAu$F6rzR6hH^ja{1~|I(2|;PuvgAqkKsD zNHorUVE8QRAk^WwQI7Dqt}NhUZ_P(O*bl?GN6Y_GsH0T=lkb2;N=Ys`Mv5H$aZL)! z%F!QnZi(!*tz&*p#ePzUD6MBIOWy%4DL!OqkMJN#?j8%N$UP?-=RWZL*c!{GK0@8+ z5;Jp2`JV%Im(2g91{9N)BF-N&ROIN7Yf?~Fj{ZG;1ZO+Pe4LBp%RHX*M{p$$tjO6X zM{PpFYf@0>(PAYoG5=Gb&eE~UZa{tGDW(`Jrs(&Y6qJ>tKkD3?G5?kl{ast%7;_s? ziG!NDC)_JXY(ipej%6J!Mwg!d9H?uJ7)@?Kx(-2EIR*=^A+_{3wqs5MDph>EFMOY~ zUoNQ#QOD6@lhrLTEJhNXg=(dHUir;kkw~r9-;(T)I0Ou5FP` zvaMTC03BG%?G7?@>Y&>mT?u_i#Ucl;W$XxTILGFrdHUir;kkw~TmEmL4RiC~8c^eG zh{Z=}v(GI)M)w>OUSlZRMaV_rXhn!?7&}7UTQwiyJhc4ZKp#>u8G>sVJ3`${^4}Uz z<1FYaK4wYrF?z;1!fOq6NGGXXgv1&}h;tb`LY=a~Of5cBX!$>8{#yfT?4DSB{Ax>- zC_YAGoGUEDP#24kY&!QM#5s%|p{}i(Ps{&t^4}UzW7pIwK1Or6Mp%}i&aH|NDN%$t z#@G?+VDS;>-h7PaaE-7mL!B-EFPNME)_@wjB~^U%YHN++V>Fj*g=HG*mMwl&TDu5I zpT3q9AwFa52xUu`^=hnk^J)1%PX1d1YV4A&ijUD6$`F=qXv0=Th&tyKA>K1~gfd-x z^jx}+)_jcCP=>H-9|qp0oMqy{vFT&F~?ey&MDS-JZ6g8g61uC?XQAvU0z z&Bx=s??dC3nX{+PsR)Uq`Q%(_UJ0bjGLIH3v87Lw{ubO+avT#m`s11ul$E1D>f93A zGv?=1D3?B$)-x40pxVtR#$;@bW#{axb16dR2)^Xze-6^w@?YMUtOm4{A?L)Hes3tQ zNkLgT8)YwljMO&THs6VB<V+2*0U%2ijOE=d?<%8 z(0xh=(KvMp$`Oz=M-GecnIcV zOY{!No14W)tlfMZ1Agy0W3sF>$}*IrgG}tJ4|ge2g|ZPnrHHSDi3*DC(KW)cn$5?ong7yASId7Hk{`i2uq7xd>&P%p+R)rAy3fUPy{ULO z_L>V99=#f_*?f$jG44?}(Ku}omTxFWKJlZGZo&$rijZ`siV&Y^4(+Sae8gJ$UkmAM z`Crc6fBydKbo&AY(*Z3>pWLXsal1HbLvyp}ehkm?rsAPkBd;Y`tN2h3*QW3o;~s4w z8mBG7dJN_4u?X?LHJ@oncgz1W?!5ihqvxM}`BnFgjHrP(*7x6hef7q}H*Y10aKkZB zLr@milU!M~h<=M``yBs8Dh6T?{`Gb%RPTMx7 zQ`eeBh(B|PMM%Wr(>=UKMW{8OJX-$e@v;FKHH0;ZAG@`8K(}osm*T&m-Gn~q-myqA z$NwDNaZMlAXV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DK9ZEKRK}|DL*ehFGY!qGbOXA7$|PY#hF%=n41b=D=WDAxqyua z07cs!U2s6o(EtDd_en%SRCt_YG%<4e&wvC}vod zIL8M-b~6o_?NBh_4gjYCSe)RBGg_ntSi&3}Apr6{wyXwo`Mfpz$TA$4eprZuXclZ5 z2^mNTkm6vX9Y9K9gsn`W*a5^kgw$etz!Tx914bP%>Hw0<0dkvXRB-^gO*5)EfZ9Gs zalmMMU?AHA10Dhc?*R0^8a)BXZg@7tl@36F()^FB%Lf9Cu--AfI;SuI>zpzUboU$p X7!`c Date: Tue, 10 Mar 2026 02:02:27 -0400 Subject: [PATCH 13/29] a few nodiagonal walls --- .../salvage/salvage_scrappie.dmm | 379 +++++++++--------- 1 file changed, 191 insertions(+), 188 deletions(-) diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm index 90d867179b5c8a..d71d3a9d0946fa 100644 --- a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ce" = ( -/obj/machinery/portable_atmospherics/canister/freon, +/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "dD" = ( @@ -11,50 +11,47 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "ez" = ( -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/turf/open/floor/plating, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "fI" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/colony/bolts, +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "kO" = ( /turf/open/floor/catwalk_floor/colony_fabricator, /area/shuttle/salvaged_shuttle) "kZ" = ( -/obj/structure/lattice, -/turf/template_noop, +/obj/structure/marker_beacon/burgundy, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) "mH" = ( /turf/open/floor/iron/colony, /area/shuttle/salvaged_shuttle) "nw" = ( -/obj/structure/railing/eva_handhold/directional/south, -/obj/effect/mapping_helpers/salvage_anchor/end/one, -/turf/closed/wall/mineral/nanocarbon/black, +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "nP" = ( /obj/structure/mineral_door/manual_colony_door, /turf/open/floor/iron/colony/texture, /area/shuttle/salvaged_shuttle) -"oO" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/colony/bolts, +"oM" = ( +/obj/structure/marker_beacon/jade, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "pH" = ( -/obj/machinery/computer/old{ - dir = 8 - }, -/turf/open/floor/iron/colony, +/obj/machinery/light/cold/dim/directional/west, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/shuttle/salvaged_shuttle) -"tE" = ( -/obj/structure/marker_beacon/burgundy, -/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +"tC" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "uk" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -70,9 +67,6 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) -"xp" = ( -/turf/open/floor/iron/colony/bolts, -/area/shuttle/salvaged_shuttle) "yi" = ( /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) @@ -85,31 +79,37 @@ /obj/effect/mapping_helpers/salvage_anchor/end/seven, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) -"yR" = ( -/obj/structure/marker_beacon/jade, -/turf/closed/wall/mineral/nanocarbon/yellow, -/area/shuttle/salvaged_shuttle) "yZ" = ( /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "zm" = ( /obj/structure/mineral_door/manual_colony_door, /turf/open/floor/iron/colony/white/texture, /area/shuttle/salvaged_shuttle) "Av" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "BV" = ( /turf/open/floor/iron/colony/texture, /area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/machinery/light/blacklight/directional/south, +/turf/open/floor/iron/colony, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/open/floor/iron/colony/bolts, +/area/shuttle/salvaged_shuttle) "CO" = ( /obj/structure/reagent_dispensers/fueltank/large, /turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "CU" = ( -/obj/structure/marker_beacon/jade, /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) "Dm" = ( @@ -120,19 +120,12 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Dp" = ( -/obj/effect/mapping_helpers/salvage_anchor/end/four, -/turf/closed/wall/mineral/nanocarbon/black, +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "Du" = ( -/obj/structure/railing/eva_handhold/directional/north, -/turf/closed/wall/mineral/nanocarbon/black, -/area/shuttle/salvaged_shuttle) -"Ef" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/colony/bolts, +/obj/structure/lattice, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "Em" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -148,14 +141,9 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) -"ER" = ( -/obj/machinery/light/blacklight/directional/north, -/turf/open/floor/iron/colony, -/area/shuttle/salvaged_shuttle) -"Fo" = ( -/obj/structure/railing/eva_handhold/directional/north, -/obj/effect/mapping_helpers/salvage_anchor/end/eight, -/turf/closed/wall/mineral/nanocarbon/black, +"Ew" = ( +/obj/structure/marker_beacon/jade, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) "HR" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -174,34 +162,52 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) -"IH" = ( -/obj/machinery/power/micro_reactor, +"IG" = ( +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/colony/bolts, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/obj/structure/grille, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/machinery/computer/old{ + dir = 8 + }, +/turf/open/floor/iron/colony, +/area/shuttle/salvaged_shuttle) "IZ" = ( /obj/structure/reagent_dispensers/fueltank/large, /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "Jd" = ( -/obj/structure/grille, +/obj/structure/marker_beacon/jade, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Kv" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8 + }, /turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "KV" = ( /obj/structure/railing/eva_handhold/directional/south, +/obj/effect/mapping_helpers/salvage_anchor/end/one, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LH" = ( -/obj/effect/mapping_helpers/salvage_anchor/end/five, -/turf/closed/wall/mineral/nanocarbon/yellow, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LJ" = ( /obj/effect/mapping_helpers/salvage_anchor/end/three, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LK" = ( -/obj/structure/marker_beacon/jade, -/turf/closed/wall/mineral/nanocarbon/black, +/obj/machinery/power/micro_reactor, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "LV" = ( /obj/effect/mapping_helpers/salvage_anchor/end/six, @@ -220,22 +226,28 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Ow" = ( -/obj/structure/marker_beacon/burgundy, -/turf/closed/wall/mineral/nanocarbon/black, +/obj/machinery/light/blacklight/directional/north, +/turf/open/floor/iron/colony, /area/shuttle/salvaged_shuttle) "Pp" = ( -/obj/machinery/light/cold/dim/directional/west, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/shuttle/salvaged_shuttle) -"PY" = ( -/obj/structure/girder/reinforced, -/turf/open/floor/plating, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/colony/bolts, /area/shuttle/salvaged_shuttle) "QT" = ( /obj/structure/railing/eva_handhold/directional/north, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "RM" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/colony/bolts, +/area/shuttle/salvaged_shuttle) +"RS" = ( /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Sv" = ( @@ -245,28 +257,19 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) -"Ti" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/salvaged_shuttle) -"TJ" = ( -/obj/machinery/light/blacklight/directional/south, -/turf/open/floor/iron/colony, -/area/shuttle/salvaged_shuttle) -"Wb" = ( +"UU" = ( /turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) -"Xs" = ( -/turf/closed/wall/mineral/nanocarbon/yellow, +"Yj" = ( +/obj/machinery/portable_atmospherics/canister/freon, +/turf/open/floor/plating, /area/shuttle/salvaged_shuttle) "YC" = ( /turf/template_noop, /area/template_noop) "YR" = ( /obj/structure/marker_beacon/burgundy, -/turf/closed/wall/mineral/nanocarbon/yellow, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) (1,1,1) = {" @@ -403,11 +406,11 @@ YC YC YC YC -LK -RM -Ti -RM -Ow +Jd +RS +Kv +RS +YR YC YC YC @@ -422,15 +425,15 @@ HR YC YC YC -Wb +UU YC -Fo -mH -ez +LH mH nw +mH +KV YC -Wb +UU YC YC YC @@ -443,15 +446,15 @@ YC YC YC YC -Wb +UU YC -RM -ER -IH -TJ -RM +RS +Ow +LK +BW +RS YC -Wb +UU YC YC YC @@ -464,15 +467,15 @@ YC YC YC YC +Ew +RS CU -RM -RM -Wb +UU nP -Wb -RM -RM -tE +UU +CU +RS +kZ YC YC YC @@ -485,15 +488,15 @@ YC YC YC YC -Du +zd yZ -Wb -oO +UU +IG kO Im -Wb +UU yZ -KV +jv YC YC YC @@ -506,15 +509,15 @@ YC YC YC YC -Xs +ez yi -PY +tC CO kO -xp -PY +CC +tC yi -Xs +ez YC YC YC @@ -529,11 +532,11 @@ YC YC yx yi -PY +tC mH -xp +CC mH -PY +tC yi Md YC @@ -548,15 +551,15 @@ YC YC YC YC -Du -Av -PY -xp +zd +ce +tC +CC kO -xp -PY +CC +tC yi -KV +jv YC YC YC @@ -569,15 +572,15 @@ YC YC YC YC -RM +RS yi -Wb +UU IZ kO Im -Wb +UU yi -RM +RS YC YC YC @@ -591,13 +594,13 @@ YC YC YC QT -Wb -Wb -Wb +UU +UU +UU BV -Wb -Wb -Jd +UU +UU +IM ym YC YC @@ -612,14 +615,14 @@ YC YC YC zm -Pp +pH zm -xp +CC kO -xp -Wb +CC +UU yi -Xs +ez YC YC YC @@ -632,15 +635,15 @@ YC YC YC YC -Du -Wb -Wb -oO +zd +UU +UU +IG kO Im -Wb +UU yi -KV +jv YC YC YC @@ -655,12 +658,12 @@ YC YC LV yi -Wb -Wb +UU +UU nP -Wb -Wb -Jd +UU +UU +IM LJ YC YC @@ -675,12 +678,12 @@ YC YC YC QT -ce -Wb -xp +Yj +UU +CC kO -xp -Wb +CC +UU yi ym YC @@ -695,15 +698,15 @@ YC YC YC YC -yR -Xs +oM +ez +CU RM -Ef kO +Pp +CU +ez fI -RM -Xs -YR YC YC YC @@ -717,13 +720,13 @@ YC YC YC YC -kZ -RM -pH -xp -pH -RM -kZ +Du +RS +IP +CC +IP +RS +Du YC YC YC @@ -737,15 +740,15 @@ YC YC YC YC -Xs -kZ -LK -RM -PY -RM -Ow -kZ -RM +ez +Du +Jd +RS +tC +RS +YR +Du +RS YC YC YC @@ -758,15 +761,15 @@ HR YC YC YC -LH -kZ +Dp +Du YC YC YC YC YC -kZ -Dp +Du +Av YC YC YC @@ -779,15 +782,15 @@ YC YC YC YC -Xs -Xs +ez +ez YC YC YC YC YC -RM -RM +RS +RS YC YC YC From 10e57003171fd095ca873fb1d3c15613e5b475cb Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 10 Mar 2026 20:17:43 -0400 Subject: [PATCH 14/29] wall panels --- code/game/objects/structures/girders.dm | 6 +- .../shipbreaking/code/shuttle_parts/hull.dm | 129 +++++++++++++++++- .../code/shuttle_parts/materials.dm | 110 +++++++++++++++ modular_doppler/shipbreaking/icons/stacks.dmi | Bin 0 -> 937 bytes .../shipbreaking/icons/turfs/walls_misc.dmi | Bin 429 -> 1422 bytes tgstation.dme | 1 + 6 files changed, 239 insertions(+), 7 deletions(-) create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/materials.dm create mode 100644 modular_doppler/shipbreaking/icons/stacks.dmi diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index d17cb7b410e6d8..437be36ade5948 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -23,7 +23,11 @@ /obj/item/stack/sheet/bronze = 2, /obj/item/stack/sheet/runed_metal = 1, /obj/item/stack/sheet/titaniumglass = 2, - exotic_material = 2 // this needs to be refactored properly + exotic_material = 2, // DOPPLER EDIT - THEY FORGOT THE COMMA!! - exotic_material = 2 // this needs to be refactored properly + // DOPPLER EDIT ADDITION START - Stops shipbreakers making infinite resources + /obj/item/stack/sheet/aluminum = 2, + /obj/item/stack/sheet/nanocarbon = 3, + // DOPPLER EDIT END ) /obj/structure/girder/examine(mob/user) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index 337f8ac0b07289..8ab64de8a9041f 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -1,3 +1,95 @@ +/obj/structure/hull_plating + abstract_type = /obj/structure/hull_plating + icon = 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi' + density = TRUE + anchored = FALSE + /// How much damage we do when we fall on or crash into someone + var/crush_damage = 40 + +/obj/structure/hull_plating/Initialize(mapload) + . = ..() + AddElement(/datum/element/falling_hazard, damage = crush_damage, wound_bonus = 20, hardhat_safety = FALSE, crushes = TRUE, impact_sound = 'sound/effects/bang.ogg') + +/obj/structure/hull_plating/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + if(isliving(hit_atom)) + workplace_accident(hit_atom) + return ..() + +/// Crushes someone like a vending machine if they are hit by the panel +/obj/structure/hull_plating/proc/workplace_accident(mob/living/osha_nonworker) + var/turf/target_turf = get_turf(osha_nonworker) + if(target_turf.is_blocked_turf(TRUE, src, list(src))) + visible_message(span_danger("[src] nearly misses crushing [osha_nonworker], that was lucky!")) + for(var/atom/atom_target in (target_turf.contents) + osha_nonworker) + if(isarea(atom_target)) + continue + if(SEND_SIGNAL(atom_target, COMSIG_PRE_TILT_AND_CRUSH, src) & COMPONENT_IMMUNE_TO_TILT_AND_CRUSH) + continue + var/crushed + if(isliving(atom_target)) + crushed = TRUE + var/mob/living/carbon/living_target = atom_target + var/was_alive = living_target.stat != DEAD + var/blocked = living_target.run_armor_check(attack_flag = MELEE) + if(iscarbon(living_target)) + var/mob/living/carbon/carbon_target = living_target + if(prob(30)) + // Will spread the damage and thus not break your bones, if you're lucky + carbon_target.apply_damage(max(0, crush_damage), BRUTE, blocked = blocked, forced = TRUE, spread_damage = TRUE, attack_direction = get_dir(src, atom_target)) + else + // Femur breaker if you're not lucky + carbon_target.take_bodypart_damage(crush_damage, 0, check_armor = TRUE, wound_bonus = 5) + carbon_target.take_bodypart_damage(crush_damage, 0, check_armor = TRUE, wound_bonus = 5) + carbon_target.AddElement(/datum/element/squish, 80 SECONDS) + else + living_target.apply_damage(crush_damage, BRUTE, blocked = blocked, forced = TRUE, attack_direction = get_dir(src, atom_target)) + living_target.Paralyze(4 SECONDS) + living_target.painful_scream() + playsound(living_target, 'sound/effects/blob/blobattack.ogg', 40, TRUE) + playsound(living_target, 'sound/effects/splat.ogg', 50, TRUE) + else if(check_atom_crushable(atom_target)) + atom_target.take_damage(crush_damage, BRUTE, MELEE, FALSE, get_dir(src, atom_target)) + crushed = TRUE + if(crushed) + atom_target.visible_message(span_danger("[atom_target] is crushed by [src]!"), span_userdanger("You are crushed by [src]!")) + SEND_SIGNAL(atom_target, COMSIG_POST_TILT_AND_CRUSH, src) + playsound(src, 'sound/effects/bang.ogg', 40) + visible_message(span_danger("[src] crashes into [atom_target]!")) + Move(osha_nonworker, get_dir(src, osha_nonworker)) + +/obj/structure/hull_plating/nanocarbon + name = "nanocarbon panels" + desc = "A large section of nanocarbon hull that has been cut free, and has considerable mass." + icon_state = "nanocarbon-2" + custom_materials = list( + /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, + ) + crush_damage = 50 + +/obj/structure/hull_plating/nanocarbon/floor + name = "nanocarbon panel" + desc = "A section of nanocarbon hull that has been cut free, and has considerable mass." + icon_state = "nanocarbon-1" + custom_materials = list( + /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 1, + ) + +/obj/structure/hull_plating/aluminum + name = "aluminum panels" + desc = "A large section of aluminum hull that has been cut free, and has considerable mass." + icon_state = "aluminum-2" + custom_materials = list( + /datum/material/aluminum = SHEET_MATERIAL_AMOUNT * 2, + ) + +/obj/structure/hull_plating/aluminum/floor + name = "aluminum panel" + desc = "A section of aluminum hull that has been cut free, and has considerable mass." + icon_state = "aluminum-1" + custom_materials = list( + /datum/material/aluminum = SHEET_MATERIAL_AMOUNT, + ) + /turf/closed/wall/mineral/nanocarbon name = "nanocarbon hull" desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." @@ -6,13 +98,30 @@ base_icon_state = "nanocarbon_wall" explosive_resistance = 3 flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD - sheet_type = /obj/item/stack/sheet/mineral/titanium + sheet_type = /obj/item/stack/sheet/nanocarbon hardness = 20 smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS canSmoothWith = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS - custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2) - rust_resistance = RUST_RESISTANCE_ABSOLUTE + custom_materials = list( + /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, + ) + rust_resistance = RUST_RESISTANCE_TITANIUM + +/turf/closed/wall/mineral/nanocarbon/break_wall() + var/obj/new_plating = new /obj/structure/hull_plating/nanocarbon(src) + new_plating.color = color + if(girder_type) + return new girder_type(src) + +/turf/closed/wall/mineral/nanocarbon/devastate_wall() + for(var/iteration in 1 to number_of_shards) + var/obj/item/shard = new /obj/item/nanocarbon_shard(drop_location()) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + shard.color = color + if(girder_type) + new /obj/item/stack/sheet/iron(src) /turf/closed/wall/mineral/nanocarbon/nodiagonal icon = MAP_SWITCH('modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi', 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi') @@ -61,10 +170,18 @@ icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi' icon_state = "aluminum_wall-0" base_icon_state = "aluminum_wall" - sheet_type = /obj/item/stack/sheet/mineral/titanium + sheet_type = /obj/item/stack/sheet/aluminum hardness = 50 explosive_resistance = 0 smoothing_groups = SMOOTH_GROUP_TITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS canSmoothWith = SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_TITANIUM_WALLS - custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT*2) - rust_resistance = RUST_RESISTANCE_BASIC + custom_materials = list( + /datum/material/aluminum = SHEET_MATERIAL_AMOUNT * 2, + ) + rust_resistance = RUST_RESISTANCE_TITANIUM + +/turf/closed/wall/mineral/aluminum/break_wall() + var/obj/new_plating = new /obj/structure/hull_plating/aluminum(src) + new_plating.color = color + if(girder_type) + return new girder_type(src) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm b/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm new file mode 100644 index 00000000000000..9ff3ebbef899db --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm @@ -0,0 +1,110 @@ +/obj/item/stack/sheet/aluminum + name = "aluminum blocks" + singular_name = "aluminum block" + desc = "Solid blocks of recycled aluminum, ready to be sent off to shipyards or to the back of the local \ + gakster's wagon when you're not looking." + icon = 'modular_doppler/shipbreaking/icons/stacks.dmi' + icon_state = "aluminum" + inhand_icon_state = "aluminum" + mats_per_unit = list( + /datum/material/aluminum = SHEET_MATERIAL_AMOUNT, + ) + material_type = /datum/material/aluminum + merge_type = /obj/item/stack/sheet/aluminum + walltype = /turf/closed/wall/mineral/aluminum + +/datum/material/aluminum + name = "aluminum" + desc = "Common aluminum used most often in spacecraft interiors." + color = "#9b9893" + categories = list( + MAT_CATEGORY_SILO = TRUE, + MAT_CATEGORY_RIGID = TRUE, + MAT_CATEGORY_BASE_RECIPES = TRUE, + MAT_CATEGORY_ITEM_MATERIAL = TRUE, + MAT_CATEGORY_ITEM_MATERIAL_COMPLEMENTARY = TRUE, + ) + sheet_type = /obj/item/stack/sheet/aluminum + ore_type = null + value_per_unit = 30 / SHEET_MATERIAL_AMOUNT + minimum_value_override = 20 + mat_rust_resistance = RUST_RESISTANCE_TITANIUM + mineral_rarity = 0 + points_per_unit = 1 / SHEET_MATERIAL_AMOUNT + minimum_value_override = 0 + tradable = TRUE + tradable_base_quantity = MATERIAL_QUANTITY_UNCOMMON + fish_weight_modifier = 1.1 + strength_modifier = 0.8 + integrity_modifier = 0.8 + +/datum/material/aluminum/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) + victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) + return TRUE + +/obj/item/stack/sheet/nanocarbon + name = "nanocarbon wafers" + singular_name = "nanocarbon wafer" + desc = "Processed wafers of recycled nanocarbon alloy. While an excellent material for ship hulls, the material \ + properties require specialist tools to form and make permanent repairs to." + icon = 'modular_doppler/shipbreaking/icons/stacks.dmi' + icon_state = "nanocarbon" + inhand_icon_state = "nanocarbon" + mats_per_unit = list( + /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT, + ) + material_type = /datum/material/nanocarbon + merge_type = /obj/item/stack/sheet/nanocarbon + walltype = /turf/closed/wall/mineral/nanocarbon/standard + +/datum/material/nanocarbon + name = "nanocarbon" + desc = "Extremely rigid engineered micro-carbon alloy for ship hulls." + color = "#39373b" + categories = list( + MAT_CATEGORY_SILO = TRUE, + MAT_CATEGORY_RIGID = TRUE, + MAT_CATEGORY_BASE_RECIPES = TRUE, + MAT_CATEGORY_ITEM_MATERIAL = TRUE, + MAT_CATEGORY_ITEM_MATERIAL_COMPLEMENTARY = TRUE, + ) + sheet_type = /obj/item/stack/sheet/nanocarbon + ore_type = null + value_per_unit = 50 / SHEET_MATERIAL_AMOUNT + minimum_value_override = 40 + mat_rust_resistance = RUST_RESISTANCE_TITANIUM + mineral_rarity = 0 + points_per_unit = 1 / SHEET_MATERIAL_AMOUNT + minimum_value_override = 0 + tradable = TRUE + tradable_base_quantity = MATERIAL_QUANTITY_RARE + fish_weight_modifier = 0.8 + strength_modifier = 1.5 + integrity_modifier = 0.8 // it shatters instead of denting + +/datum/material/nanocarbon/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) + victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) + return TRUE + +/obj/item/nanocarbon_shard + name = "nanocarbon shard" + desc = "A wicked looking shard of fractured nanocarbon, number one cause of suit punctures in orbit today." + icon = 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi' + icon_state = "nanoshard_1" + base_icon_state = "nanoshard" + hitsound = 'sound/items/weapons/bladeslice.ogg' + w_class = WEIGHT_CLASS_SMALL + force = 5 + throwforce = 10 + sharpness = SHARP_EDGED + embed_type = /datum/embedding/shard + custom_materials = list( + /datum/material/nanocarbon = HALF_SHEET_MATERIAL_AMOUNT + ) + /// How many variants of shard there are + var/variants = 5 + +/obj/item/nanocarbon_shard/Initialize(mapload) + . = ..() + AddComponent(/datum/component/caltrop, min_damage = force, paralyze_duration = 2 SECONDS, soundfile = hitsound) + icon_state = "[base_icon_state]_[rand(1, variants)]" diff --git a/modular_doppler/shipbreaking/icons/stacks.dmi b/modular_doppler/shipbreaking/icons/stacks.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b0841503a3556cb76daf14f987078760fecf6e72 GIT binary patch literal 937 zcmV;a16KTrP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DKV!sH#4s^SBZ-=C9|j)C}haRnO2mTn+joLD2z8EUa2ubrFn^Y z`N@ezN%?ssC?&!PNQ!YfLRrDp&jlQ40Q>}80)D&YF#rGp+et)0RCt{2n@egOF%X8w zAy+Ua+aWgI8j?j|@HM;I*C^uy!T3IG5A09`oiZJ>tR&F0{Lww)&PIpuU}e7vf&)}QO^tCy{(PN|P!13+2l zPWJt~o8#m|+1OI2*2k~`7zGN%*Ds%=!Fa75%>S%K&z0ydK`(b6R|i$aZnrsv)=FIg zbM@Tby4G5;vBUw8^ukoBl@ilUQRBncOQ8)=$d}1Az%8}8+eL__`0xq&GQSAV-I|ym zKYz{Q!`IOs_k9h27erabTTh)*AHxQKTb_&L`e3b7>qB)Lx+HeH$KyoZlK+3Z_h?!T zDIHqm)N%fOcO0MM3dr@kR=B#phgP0)I00@S>6Q9O`BDXdqwDSyr59TlDl)BYE zVtSQ6nyn82000000000000000002lZ++Szb>vi-ypZooOxcLnA#VlIRU#C9Gmgx}wvzEA10ssI200000044tbBPv74L-{9(00000 LNkvXXu0mjfQ8l#d literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi b/modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi index 14a05f0cfca7d80c81d501abe557b67a236358d6..c3f9dbe8f7e9de752ee739499e4906acf8c6d3ba 100644 GIT binary patch delta 1337 zcmZ3>+{dlj8Q|y6%O%Cdz`(%k>ERLtq#J-ZfrAZ5UahL~1X7D9s%F$54po0P=@H>{0~cM*XHt_FTx((3x@^Z4E$tn@b~Y@Q zV$c z-FNZZ*1a#=4nAESEp7Sp_wSsS-!I4CcaPNP*wa(_{N!ixwf1uIwR7|H@9h%}-SM{O zUj6S^sUb5Jbc-1`e7u>!BfYwEkM_FHFD+t&CvoJxd8g-kNM2q2;6zPV$)%Al3`Rlq zmoLlTy&1i_;QG&P*`5i-pHJ0P*Zo_bdS-^vwTJhbmj_<|{_*1nU+)Qz@8s^|-}P+` z{{<_(gVHxAD6Yx=qNX|bi0IMd*A_EryzTvRbMD*!=MvtvC(JV!jt!CY$+;}u6u~%S z$_KY!Hqz&9wnz4@*IQ?lv^a1h$AR2UtIwXhDE?t({qAYz|7>hG%b6>m)Jl|k|xBlC{DDjx*#YaB6GEO&d zo3Mzdv$lB(i)+KWt{%}Imn>K1qP{7D32&D-Opsf7<@uk8EZ4i25iW(+i_WJwW}3w*NeQ~9u?DY;TPs&*?0> z-ZT9&;91kEQ^~l%UWa9Z@|oR>*p8^QFXd=3c%NpqxH89Nv0H48$?NM|^Sqfna!u}M zr$jGXcvp9I+qd}~%brQK z*Ge8VaZTuEd9LR{z|GjCeA6w^>GJ7rgvNlx|R^uQpEr@igU6tz&V{ofLGZwjQ~`57hXX&J3TQF} z@F7L=sYZq=lS^e1G&VQ2@zg7UqdsM>Xpf-nPX#6ob|wY~<5#y|oJjFLV; zTA3MvYJe#RhlJm@Jq^!R#hE;uB33tH%RW7U9S$wr!2w&v`(%WUvN+t!k6yNhbFFB{ z(^sbgm+(8(dtaFJarc^y?%B*s<2H%yIH|;79Mdi_e?f{+#{!v~N(_<)SAO*Pvv^qe zdW$h`c$nOCeuk1kYeUKAEh#%^eo39O^4gWB?~NAusZ9P97*rkSFl~9m6mBhPx%k?x t9~3XmE@Wu=XOo~20Z-x}FBCJLPH)`Hf5@4Mfg4y3db;|#taD0e0swZORQ3P> delta 336 zcmV-W0k8g!3#|hsiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=agilx ze=94v`niCO2LMIe9bIrh&d~q>0QX5mK~#90V>B^x`pPWf?a8F!uEJR)hm!mcullD@GS57U0qk5(n7{as)gCK#I_PniS$h zmc@khBiqG9>o~^;Kz1_?nC(z7;0^$%e*svW;EFR^qy<>Q92_A4@;$b!26OqmHT%di z9G8Arh=XVrY#Ip}NC=SPV4@vBN@0YpOrh8T#5#o3Vtc?7;iv;f9Wd$ulFI>dn`cyU z0J%*wsyKk!K1XrDXnSBF+XDk00t4>=^u8KB0myE6HpG< ir!WBPoH7n{_Z$Ei6@2uhR->T+0000 Date: Tue, 10 Mar 2026 20:29:06 -0400 Subject: [PATCH 15/29] nuke everyone and leave --- .../shipbreaking/code/shuttle_parts/hull.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index 8ab64de8a9041f..033f2dcbae4b63 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -29,7 +29,6 @@ if(isliving(atom_target)) crushed = TRUE var/mob/living/carbon/living_target = atom_target - var/was_alive = living_target.stat != DEAD var/blocked = living_target.run_armor_check(attack_flag = MELEE) if(iscarbon(living_target)) var/mob/living/carbon/carbon_target = living_target @@ -107,6 +106,8 @@ /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, ) rust_resistance = RUST_RESISTANCE_TITANIUM + /// How many shards of nanocarbon the wall will make when exploded, maximum + var/number_of_shards = 6 /turf/closed/wall/mineral/nanocarbon/break_wall() var/obj/new_plating = new /obj/structure/hull_plating/nanocarbon(src) @@ -115,13 +116,14 @@ return new girder_type(src) /turf/closed/wall/mineral/nanocarbon/devastate_wall() - for(var/iteration in 1 to number_of_shards) - var/obj/item/shard = new /obj/item/nanocarbon_shard(drop_location()) + var/random_shards = rand(2, number_of_shards) + for(var/iteration in 1 to random_shards) + var/obj/item/shard = new /obj/item/nanocarbon_shard(src) shard.pixel_x = rand(-6, 6) shard.pixel_y = rand(-6, 6) shard.color = color if(girder_type) - new /obj/item/stack/sheet/iron(src) + return new girder_type(src) /turf/closed/wall/mineral/nanocarbon/nodiagonal icon = MAP_SWITCH('modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi', 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi') From e28972638beb4366d4928be0e54fc3d902b73f5e Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Thu, 12 Mar 2026 15:17:42 -0400 Subject: [PATCH 16/29] nanocarbon shards 2 --- .../shipbreaking/code/shuttle_parts/hull.dm | 1 + .../shipbreaking/icons/turfs/walls_misc.dmi | Bin 1422 -> 1502 bytes 2 files changed, 1 insertion(+) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index 033f2dcbae4b63..930432ecc2d92d 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -106,6 +106,7 @@ /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, ) rust_resistance = RUST_RESISTANCE_TITANIUM + baseturfs = /turf/baseturf_bottom /// How many shards of nanocarbon the wall will make when exploded, maximum var/number_of_shards = 6 diff --git a/modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi b/modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi index c3f9dbe8f7e9de752ee739499e4906acf8c6d3ba..075d407465647b399d145fd352950725457e2a4c 100644 GIT binary patch delta 1308 zcmV+%1>^dT3*HNm(|`6!L_t(|ob8=GZxk^Qh7)u@1)+!z6uO8ah=zs+Bnm31sHqS& zqJf$!G>HTV8X6h|icmTt(xC|PU&77le0Y6ppTB3kexK$pd%NBh^UiqI_L%M6>-!g5 z8ketL+bYT5-)DorPk(*iE_y@YWTw76dG>tm$FHBiEIx1Fy?+zc_}KO8`#Pk zEsD=Zj|!l+H-FN(H+KI!gZ@1P{kpm6qS{czcD*5p6@X3+Z=~~;@$_rWc3jV5Ya=!q zRf_+=z?-HczVE#u&A71D8X_ zGEV~6j?L7~#ynCzz}rvjiJA|#>s7>YMFE>PhLEETiGR64PJ$wUuOedwBN47>M9z^j z0wli$gk+>r-}7VPibgdYDL4n%B!np$z6UOGKLFqb0_YqFpmQLA&Vc|r2Lk9E2*81~ zar+Vkj|1R6e_8|ypvL^P4e~}Bm-qbyes~K2o7F-l7H`K480g#r-=x_VHmY;FLps{D~J_94x@*(5wdK&Ml>R-tO}-DJ+2JjtP`}6 zqb?v9Q|l&H5x~_arz+7_a%Lk(Nmb6WtlH72CJO;jjULtNnT9D*9IB917Z^gVXf#&F zRf27lhXc?tUfx%$QWeyPWiFtFVc=dUQWubelz*th8C_h@Eivk?1W+Q(+oFcAm|~)i zgy=H%+!CH^j6npD7UpBxklGD|`*h?fp`X>%$-i;Pxb)r9oF?6Rn0=>4;qsL>OKTF%&?w z0CY?-Km>VcMgTghdw>YiX;J`$nImxF8vSd5W(7cy2ue(1wS+Ff$M5kLyHBavy;n1MX8a{-_Z5J2ZZ0G(4b2WWYgtQU|3HcXBoaR{Js zQisHgt_tQJpaGjf5;y@;91UH-L_o9!QFO1GgxK<7XJodW@M4g}CS5Pv}D zKmeTs0dx)o&^Zu5=ZKvPFe`3sMGqhiu>v3l%bc~M2Z$jbVg+EXaxujK5#&Lv0L;ZH zYZWk#dN<&YSOJ*mMGqtZSG^nXC+RJK5;cwjNhOAs%d({qEdVMx<}`q--VOK@B>=T8 zTJC)XL4AS+VD5>>6$Ow0=D|A&JbzfehnxQ!C`TBE@$=y&0MqOBjGUt+8ph9uRRH=> ztj+i}ys9dp delta 1227 zcmcb|-N!xQa{V$-7srr_IdA9M=8G5#v=zUo<8l&=Rd}h?LY51& zsi;XO3&$)I6TufPmjoyBxpw?7+G%Ono`3z@+S-3J?pDfc-a7m2+UqxajK5Xc?z{MH z>)w}b2cNEvmbU!)`*+UE@0a86yGQDC?CGg|e)6;UT6;P9+PV4l`S;5fIJu}1T+QWOz%LA`}|M>BPulIzbQPZ4zMD*zKYm1rcHQx4qxjFak|8oiN+7srP3&(~?`s7@eZi-->G3A5X zFB|FeHrpfn*6Xb^N?IJak>fz_rqyT9T@?SYa`!aze>S$8<;;~&Y9-3b)J46S-R6JQ z+@tpd$AeExE~VbkxN82vGDT;zU&8AfGxXCwd#pR~TmNlelz7bZ;v*kj8K;}KO;}XV z(^=a*g~hdDU0082k4u)Ta#7zD!GyQV8z#uDyz=}{M3(Dfp+1p2>=CLhijr~6)3d@E zuCOu%@UbkA;c&1NXed%(cbA<{ShVwrUD|s-e-t*tBkiVqx=ep<%z2}%3 zp7RS&{LHxIfZ)=T6BbQ8@smO5!UaZ^Bj?yN>JQDkQYzgnws`gzC8jF|Jm+tB&z*2f z{0Nsq>qX~N95c=0l%xb*(^!Mo#jTaAGxopW+O?-4glFx{2p5L<*?ZOr#cHPO1uY3# z>T_C4w%5x@oZ;z_(t$E%|9=Rs>vs0p% zt#bKs>|XtkHD#fDOkN-V8mG$Q(jfYwck5kgPo=zT{jYtUK6EZPwd8`{qYbThq;|-K ztM;bs`~7Ea>3R==FV0RM?w(#+&bU%srDLwUgXprZ&-UMb)W55{y6xM1j%ClJ+G`~b znz$x(vpibXy7}YT32DI^@v7NFj%Ot0I@vy7qD}^nV zOtme#DE>bEaByvZ|F&gcgz}#Ms(W3Wl+M!l?#80Enj!bAr^j(L{5!aAbGyl=bKRza zObfpKKYZ}DYw(d%$7Ua{ujvqCu+N*w;lX22Q|H3jkRW*AN2-81pTmJ4PX#m?0{D<( z`BWprl*y$s2^yQ5+IW<}QJ*qbv`5hPrvj4(I}?M0@vGY}PNoFy<_dKbMoAwaoy?3t zHRuVa9wFnmZBN6qRdFT{r-;=}*s@PgV248scW}T~@je-$qbv^h@}rln;an@)@$}WH zz$N?+-WMi)+`VR_dp7gZxJ_a^PAV}N$Fxh#Uyvfyu|Vdg5`(0{l^;F+EFKoV-eQa! z9wzskpP^*X+EB82OUllfUs9*6ymsa3dn1=cekzkc1qM~eIZRvLFoj!7S}wkJ>j%Y4 nvkMto{@EmGM8MNH$fd=Mr_&qv@*i?$VgLe9S3j3^P6 Date: Thu, 12 Mar 2026 18:53:02 -0400 Subject: [PATCH 17/29] more docking clamp interactions --- .../shipbreaking/code/docking_clamp.dm | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index 621d219f5145c9..f23eb4ce0cb1f7 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -29,13 +29,40 @@ . += span_notice("This space is [EXAMINE_HINT("[floor(/obj/docking_port/stationary/salvage_dock::width / 2)]")] tiles to either side of the clamp, and [EXAMINE_HINT("[/obj/docking_port/stationary/salvage_dock::height]")] tiles straight out.") /obj/machinery/docking_clamp/multitool_act(mob/living/user, obj/item/multitool/the_tool) + if(!panel_open) + balloon_alert(user, "panel closed!") + return ITEM_INTERACT_BLOCKING the_tool.set_buffer(src) balloon_alert(user, "saved to multitool buffer") return ITEM_INTERACT_SUCCESS +/obj/machinery/docking_clamp/wrench_act(mob/living/user, obj/item/tool) + if(!panel_open) + balloon_alert(user, "panel closed!") + return ITEM_INTERACT_BLOCKING + if(!default_unfasten_wrench(user, tool, 4 SECONDS)) + return ITEM_INTERACT_BLOCKING + if(!anchored) + QDEL_NULL(docking_port) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/docking_clamp/screwdriver_act(mob/user, obj/item/tool) + if(!default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) + return ITEM_INTERACT_BLOCKING + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/docking_clamp/crowbar_act(mob/user, obj/item/tool) + if(!default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_BLOCKING + return ITEM_INTERACT_SUCCESS + /obj/machinery/docking_clamp/interact(mob/user) if(!can_interact(user)) return + if(!anchored) + balloon_alert(user, "not secured!") + return ..() if(docking_port) balloon_alert(user, "already set!") return ..() From 69e6b3f13647b13d0b392f7baca4f70fe8752d8d Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 14 Mar 2026 02:14:51 -0400 Subject: [PATCH 18/29] exterior decorations --- .../salvage/salvage_scrappie.dmm | 331 +++++++++++--- .../code/shuttle_parts/exterior_pieces.dm | 418 ++++++++++++++++++ .../shipbreaking/code/shuttle_parts/hull.dm | 117 +++++ .../shipbreaking/icons/exterior.dmi | Bin 0 -> 10625 bytes .../shipbreaking/icons/turfs/aluminum.dmi | Bin 0 -> 4277 bytes .../shipbreaking/icons/turfs/aluminum.png | Bin 0 -> 903 bytes .../icons/turfs/aluminum.png.toml | 2 + .../shipbreaking/icons/turfs/floors.dmi | Bin 0 -> 438 bytes .../shipbreaking/icons/turfs/walls_misc.dmi | Bin 1502 -> 2667 bytes .../shipbreaking/icons/wall_platings.dmi | Bin 0 -> 8476 bytes strings/~doppler/salvage_shuttle.json | 2 + tgstation.dme | 1 + 12 files changed, 801 insertions(+), 70 deletions(-) create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm create mode 100644 modular_doppler/shipbreaking/icons/exterior.dmi create mode 100644 modular_doppler/shipbreaking/icons/turfs/aluminum.dmi create mode 100644 modular_doppler/shipbreaking/icons/turfs/aluminum.png create mode 100644 modular_doppler/shipbreaking/icons/turfs/aluminum.png.toml create mode 100644 modular_doppler/shipbreaking/icons/turfs/floors.dmi create mode 100644 modular_doppler/shipbreaking/icons/wall_platings.dmi diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm index d71d3a9d0946fa..4a2d0cdb1da224 100644 --- a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm @@ -1,7 +1,16 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/structure/shuttle_decoration, +/turf/template_noop, +/area/template_noop) "ce" = ( /obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, +/obj/machinery/power/apc/worn_out/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"cP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "dD" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -17,17 +26,55 @@ /obj/structure/marker_beacon/burgundy, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) +"iA" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) "jv" = ( -/obj/structure/railing/eva_handhold/directional/south, +/obj/effect/baseturf_helper/salvage_shuttle, +/obj/structure/shuttle_decoration/rcs/directional/north, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) +"km" = ( +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/south, +/turf/template_noop, +/area/template_noop) "kO" = ( /turf/open/floor/catwalk_floor/colony_fabricator, /area/shuttle/salvaged_shuttle) +"kP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "kZ" = ( /obj/structure/marker_beacon/burgundy, +/obj/structure/railing/eva_handhold/directional/south, /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"md" = ( +/obj/structure/shuttle_decoration/radiator/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "mH" = ( /turf/open/floor/iron/colony, /area/shuttle/salvaged_shuttle) @@ -35,7 +82,13 @@ /obj/machinery/power/shuttle_engine/heater{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) "nP" = ( /obj/structure/mineral_door/manual_colony_door, @@ -45,13 +98,30 @@ /obj/structure/marker_beacon/jade, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) +"pa" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) "pH" = ( /obj/machinery/light/cold/dim/directional/west, /turf/open/floor/catwalk_floor/colony_fabricator, /area/shuttle/salvaged_shuttle) +"rb" = ( +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"sj" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) "tC" = ( /obj/structure/girder/reinforced, -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "uk" = ( /obj/structure/railing/eva_handhold/directional/south, @@ -60,6 +130,20 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) +"uK" = ( +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) +"uL" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/ladder/directional/south, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "vE" = ( /obj/structure/railing/eva_handhold/directional/south, /obj/structure/railing/eva_handhold/directional/north, @@ -67,21 +151,45 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"xs" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/black{ + dir = 6 + }, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "yi" = ( -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "ym" = ( /obj/structure/railing/eva_handhold/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/south, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) +"yu" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) "yx" = ( -/obj/structure/railing/eva_handhold/directional/north, /obj/effect/mapping_helpers/salvage_anchor/end/seven, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 + }, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "yZ" = ( /obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "zd" = ( /obj/structure/railing/eva_handhold/directional/north, @@ -93,8 +201,15 @@ /area/shuttle/salvaged_shuttle) "Av" = ( /obj/effect/mapping_helpers/salvage_anchor/end/four, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) +"BC" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/yellow{ + dir = 5 + }, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) "BV" = ( /turf/open/floor/iron/colony/texture, /area/shuttle/salvaged_shuttle) @@ -107,7 +222,7 @@ /area/shuttle/salvaged_shuttle) "CO" = ( /obj/structure/reagent_dispensers/fueltank/large, -/turf/open/floor/iron/colony/bolts, +/turf/open/floor/plating/aluminum, /area/shuttle/salvaged_shuttle) "CU" = ( /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, @@ -121,6 +236,9 @@ /area/shuttle/salvaged_shuttle) "Dp" = ( /obj/effect/mapping_helpers/salvage_anchor/end/five, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 + }, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "Du" = ( @@ -143,8 +261,37 @@ /area/shuttle/salvaged_shuttle) "Ew" = ( /obj/structure/marker_beacon/jade, +/obj/structure/railing/eva_handhold/directional/north, /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) +"Ex" = ( +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/south, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/yellow, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Gy" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "HR" = ( /obj/structure/railing/eva_handhold/directional/south, /obj/structure/railing/eva_handhold/directional/north, @@ -168,7 +315,7 @@ /area/shuttle/salvaged_shuttle) "IM" = ( /obj/structure/grille, -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "IP" = ( /obj/machinery/computer/old{ @@ -189,20 +336,22 @@ /obj/machinery/power/shuttle_engine/propulsion{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "KV" = ( -/obj/structure/railing/eva_handhold/directional/south, /obj/effect/mapping_helpers/salvage_anchor/end/one, +/obj/structure/shuttle_decoration/landing_engine/directional/south, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LH" = ( -/obj/structure/railing/eva_handhold/directional/north, /obj/effect/mapping_helpers/salvage_anchor/end/eight, +/obj/structure/shuttle_decoration/landing_engine/directional/north, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LJ" = ( /obj/effect/mapping_helpers/salvage_anchor/end/three, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "LK" = ( @@ -211,11 +360,15 @@ /area/shuttle/salvaged_shuttle) "LV" = ( /obj/effect/mapping_helpers/salvage_anchor/end/six, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 1 + }, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Md" = ( -/obj/structure/railing/eva_handhold/directional/south, /obj/effect/mapping_helpers/salvage_anchor/end/two, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "MV" = ( @@ -225,6 +378,15 @@ /obj/structure/marker_beacon/yellow, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) +"No" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Oe" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "Ow" = ( /obj/machinery/light/blacklight/directional/north, /turf/open/floor/iron/colony, @@ -257,12 +419,41 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UE" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UN" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "UU" = ( /turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) "Yj" = ( /obj/machinery/portable_atmospherics/canister/freon, -/turf/open/floor/plating, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "YC" = ( /turf/template_noop, @@ -407,9 +598,9 @@ YC YC YC Jd -RS +md Kv -RS +md YR YC YC @@ -425,7 +616,7 @@ HR YC YC YC -UU +UE YC LH mH @@ -433,7 +624,7 @@ nw mH KV YC -UU +sj YC YC YC @@ -446,7 +637,7 @@ YC YC YC YC -UU +UE YC RS Ow @@ -454,7 +645,7 @@ LK BW RS YC -UU +sj YC YC YC @@ -468,13 +659,13 @@ YC YC YC Ew -RS +Gu CU -UU +yu nP -UU +yu CU -RS +Gu kZ YC YC @@ -488,15 +679,15 @@ YC YC YC YC -zd +jv yZ -UU +Tf IG kO Im -UU +Fz yZ -jv +xs YC YC YC @@ -509,18 +700,18 @@ YC YC YC YC -ez +Fg yi tC CO -kO -CC +rb +rb tC yi -ez -YC +uL YC YC +bo YC vE "} @@ -533,15 +724,15 @@ YC yx yi tC -mH -CC -mH +rb +rb +rb tC yi Md YC YC -YC +km YC YC "} @@ -551,15 +742,15 @@ YC YC YC YC -zd +UN ce tC -CC -kO -CC +rb +rb +rb tC yi -jv +No YC YC YC @@ -572,15 +763,15 @@ YC YC YC YC -RS +Gy yi -UU +Tf IZ kO Im -UU +Fz yi -RS +Xt YC YC YC @@ -594,14 +785,14 @@ YC YC YC QT -UU +ik UU UU BV UU -UU +gM IM -ym +Ex YC YC YC @@ -620,9 +811,9 @@ zm CC kO CC -UU +Fz yi -ez +iy YC YC YC @@ -636,14 +827,14 @@ YC YC YC zd -UU -UU +ly +wC IG kO Im -UU +Fz yi -jv +VR YC YC YC @@ -658,11 +849,11 @@ YC YC LV yi -UU +nN UU nP UU -UU +gM IM LJ YC @@ -677,13 +868,13 @@ YC YC YC YC -QT +uK Yj -UU +Tf CC kO CC -UU +Fz yi ym YC @@ -721,11 +912,11 @@ YC YC YC Du -RS +kP IP CC IP -RS +cP Du YC YC @@ -740,15 +931,15 @@ YC YC YC YC -ez +pa Du Jd -RS +Oe tC -RS +vn YR Du -RS +Xt YC YC YC @@ -782,15 +973,15 @@ YC YC YC YC -ez -ez +BC +iA YC YC YC YC YC -RS -RS +rL +xx YC YC YC diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm new file mode 100644 index 00000000000000..988943a3c7aecd --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm @@ -0,0 +1,418 @@ +// Anything that uses an existing machine for function + +/obj/machinery/exoscanner/shuttle_part + abstract_type = /obj/machinery/exoscanner/shuttle_part + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + icon_state = null + circuit = null + +/obj/machinery/exoscanner/shuttle_part/Initialize(mapload) + . = ..() + find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + +/obj/machinery/exoscanner/shuttle_part/screwdriver_act(mob/user, obj/item/tool) + return + +/// Disconnects the part from the wall its mounted on +/obj/machinery/exoscanner/shuttle_part/proc/knock_down() + set_anchored(FALSE) + +/obj/machinery/exoscanner/shuttle_part/radar_panel + name = "radar panel" + desc = "A radar panel, made to be mounted flat to the walls of ships for directional scanning." + icon_state = "radar_panel" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radar_panel, 3) + +/obj/machinery/exoscanner/shuttle_part/sensors_blister + name = "sensors blister" + desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ + housing. This one was left closed." + icon_state = "blister_closed" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/sensors_blister, 18) + +// The north facing one has to be special due to the antennae +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/north + pixel_y = 26 + +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister + name = "sensors blister" + desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ + housing. This one was left open." + icon_state = "blister_open" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/open_sensors_blister, 18) + +// The north facing one has to be special due to the antennae +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north + pixel_y = 26 + +/obj/machinery/exoscanner/shuttle_part/radio_dish + name = "radio dish" + desc = "A directional radio dish, for extremely long range communication and sensing." + icon_state = "dish" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 12) + +// Special type for inert decorations + +/obj/structure/shuttle_decoration + abstract_type = /obj/structure/shuttle_decoration + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + obj_flags = CAN_BE_HIT | IGNORE_DENSITY + density = FALSE + anchored = TRUE + pass_flags_self = LETPASSTHROW|PASSSTRUCTURE + armor_type = /datum/armor/structure_railing + max_integrity = 75 + /// How long to either unwrench or unweld + var/unfasten_time = 1 SECONDS + /// Does this need to be welded off the wall instead + var/requires_welder = FALSE + +/obj/structure/shuttle_decoration/Initialize(mapload) + . = ..() + find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + +/obj/structure/shuttle_decoration/examine(mob/user) + . = ..() + if(requires_welder) + . += span_notice("Can be removed by cutting it off.") + else + . += span_notice("Can be removed by unfastening it.") + +/// Disconnects the part from the wall its mounted on +/obj/structure/shuttle_decoration/proc/knock_down() + set_anchored(FALSE) + +/obj/structure/shuttle_decoration/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(requires_welder) + return ITEM_INTERACT_SKIP_TO_ATTACK + default_unfasten_wrench(user, tool, time = unfasten_time) + return ITEM_INTERACT_SUCCESS + +/obj/structure/shuttle_decoration/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + if(!requires_welder) + return + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) + return TRUE + balloon_alert(user, "cut free!") + set_anchored(FALSE) + return TRUE + +/obj/structure/shuttle_decoration/rcs + name = "reaction control thruster" + desc = "A small cold gas thruster used to orient the ship in place while in space." + icon_state = "rcs" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/rcs, 5) + +/obj/structure/shuttle_decoration/ladder + name = "\improper EVA ladder" + desc = "An exterior ladder for use on EVA." + icon_state = "ladder_silver" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/ladder, 5) + +/obj/structure/shuttle_decoration/ladder_black + name = "\improper EVA ladder" + desc = "An exterior ladder for use on EVA." + icon_state = "ladder_black" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/ladder_black, 5) + +/obj/structure/shuttle_decoration/eva_catwalks + name = "\improper EVA catwalk" + desc = "A narrow catwalk for use on EVA." + icon_state = "catwalk" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/eva_catwalks, 16) + +/obj/structure/shuttle_decoration/radiator + name = "shuttle radiator" + desc = "A modular heat radiator for use on ships, uses a few valuable heat conductive metals in the fins." + icon_state = "radiator" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SHEET_MATERIAL_AMOUNT, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.5, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/radiator, 4) + +/obj/structure/shuttle_decoration/extinguisher + name = "exterior extinguisher rack" + desc = "A pair of extinguisher canisters with an activation switch, will flood the space on the other side of its \ + mounting wall with extinguisher foam when triggered." + icon_state = "extinguisher" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + integrity_failure = 0.6 + /// How long does it take to pull the switch? + var/switch_time = 2 SECONDS + /// Has the extinguisher been used up? + var/used_up = FALSE + +/obj/structure/shuttle_decoration/extinguisher/examine(mob/user) + . = ..() + if(used_up) + . += span_notice("The gauge on the control panel shows the tanks are empty, it must be used up.") + +/obj/structure/shuttle_decoration/extinguisher/interact(mob/user) + if(!can_interact(user)) + return + if(!anchored) + return + if(used_up) + return + if(!do_after(user, switch_time, src)) + return + playsound(src, 'sound/effects/bamf.ogg', 75, TRUE) + var/turf/foam_turf = get_step(src, REVERSE_DIR(dir)) + make_the_foam(foam_turf) + +/obj/structure/shuttle_decoration/extinguisher/atom_break(damage_flag) + . = ..() + var/turf/foam_turf = get_step(src, dir) + make_the_foam(foam_turf) + +/// Makes a cloud of extinguisher foam at the tile given +/obj/structure/shuttle_decoration/extinguisher/proc/make_the_foam(turf/target_turf) + var/datum/effect_system/fluid_spread/foam/foam = new + var/datum/reagents/foamreagent = new /datum/reagents(25) + foamreagent.add_reagent(/datum/reagent/firefighting_foam, 25) + foam.set_up(4, holder = src, location = target_turf, carry = foamreagent) + foam.start() + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/extinguisher, 4) + +/obj/structure/shuttle_decoration/bullbar + name = "crash bar" + desc = "A strong grid of bars connected to ships to protect the hull during collisions. \ + Commonly referred to as a \"Carp Catcher\"." + icon_state = "bullbar" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/bullbar, 4) + +/obj/structure/shuttle_decoration/headlight + name = "shuttle headlights" + desc = "An array of high-power lights for visibility around shuttles." + icon_state = "headlight" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, + ) + light_on = TRUE + light_system = OVERLAY_LIGHT_DIRECTIONAL + light_color = LIGHT_COLOR_CYAN + light_range = 5 + light_power = 2 + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/headlight, 0) + +/obj/structure/shuttle_decoration/landing_engine + name = "landing engine" + desc = "A gimballed engine for planetgoing shuttles that need to land any direction other than vertical." + icon_state = "lander" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/landing_engine, 15) + +/obj/structure/shuttle_decoration/aux_engine + name = "auxiliary engine" + desc = "A smaller engine used for extra power or extra agility on ships." + icon_state = "aux_booster" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/aux_engine, 10) + +/obj/structure/shuttle_decoration/wall_plate + abstract_type = /obj/structure/shuttle_decoration/wall_plate + icon = 'modular_doppler/shipbreaking/icons/wall_platings.dmi' + max_integrity = 125 + unfasten_time = 2 SECONDS + requires_welder = TRUE + /// What type of hull plate object do we spawn when cut off the wall + var/obj/structure/hull_plating/cut_plating = /obj/structure/hull_plating + +/obj/structure/shuttle_decoration/wall_plate/knock_down() + new cut_plating(get_turf(src)) + qdel(src) + +/obj/structure/shuttle_decoration/wall_plate/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + if(!requires_welder) + return + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) + return TRUE + balloon_alert(user, "cut free!") + new cut_plating(get_turf(src)) + qdel(src) + return TRUE + +/obj/structure/shuttle_decoration/wall_plate/gold_foil + name = "gold foil wrapping" + desc = "Gold foil insulation to keep the heat in (or out) of a ship or satellite." + icon_state = "gold_foil" + cut_plating = /obj/structure/hull_plating/gold_foil + +/obj/structure/shuttle_decoration/wall_plate/gold_foil/diagonal + icon_state = "gold_foil_diag" + +/obj/structure/shuttle_decoration/wall_plate/silver_foil + name = "silver foil wrapping" + desc = "Silver foil insulation to keep the heat in (or out) of a ship or satellite." + icon_state = "silver_foil" + cut_plating = /obj/structure/hull_plating/silver_foil + +/obj/structure/shuttle_decoration/wall_plate/silver_foil/diagonal + icon_state = "silver_foil_diag" + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon + name = "nanocarbon hull screen" + desc = "A standoff screen of nanocarbon used typically for in atmosphere aerodynamics, or layered protection." + icon_state = "nanocarbon" + cut_plating = /obj/structure/hull_plating/nanocarbon/floor + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal + icon_state = "nanocarbon_diag" + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/ex_act(severity, target) + . = ..() + if(severity >= EXPLODE_HEAVY) + nanocarbon_nuke() + return TRUE + +/// Makes shards of nanocarbon +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/proc/nanocarbon_nuke() + var/random_shards = 2 + for(var/iteration in 1 to random_shards) + var/obj/item/shard = new /obj/item/nanocarbon_shard(src) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + shard.color = color + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black + color = COLOR_DARK + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/black + color = COLOR_DARK + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/standard + color = COLOR_SILVER + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/standard + color = COLOR_SILVER + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/red + color = COLOR_BUBBLEGUM_RED + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/red + color = COLOR_BUBBLEGUM_RED + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/green + color = COLOR_IRISH_GREEN + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/green + color = COLOR_IRISH_GREEN + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue + color = COLOR_COMMAND_BLUE + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/blue + color = COLOR_COMMAND_BLUE + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow + color = COLOR_GOLD + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/yellow + color = COLOR_GOLD + +/obj/structure/shuttle_decoration/wall_plate/armor + name = "armor plating" + desc = "Thick armor plating to protect ships from anything between asteroid impacts and weapons fire." + icon_state = "armor" + cut_plating = /obj/structure/hull_plating/armor_panels + +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal + icon_state = "armor_diag" + +/obj/structure/shuttle_decoration/wall_plate/plastamic + name = "plastamic cladding" + desc = "Polymer sheets used to cover a typically much uglier hull plate behind them." + icon_state = "plastic" + cut_plating = /obj/structure/hull_plating/plastamic_sheets diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index 930432ecc2d92d..9e31a234ccfce4 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -65,6 +65,21 @@ ) crush_damage = 50 +/obj/structure/hull_plating/nanocarbon/ex_act(severity, target) + . = ..() + if(severity >= EXPLODE_HEAVY) + nanocarbon_nuke() + return TRUE + +/// Makes shards of nanocarbon +/obj/structure/hull_plating/nanocarbon/proc/nanocarbon_nuke() + var/random_shards = 2 + for(var/iteration in 1 to random_shards) + var/obj/item/shard = new /obj/item/nanocarbon_shard(src) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + shard.color = color + /obj/structure/hull_plating/nanocarbon/floor name = "nanocarbon panel" desc = "A section of nanocarbon hull that has been cut free, and has considerable mass." @@ -73,6 +88,52 @@ /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 1, ) +/obj/structure/hull_plating/gold_foil + name = "roll of gold foil" + desc = "An industrial scale roll of gold foil, presumably peeled off the nearest ship." + icon_state = "gold_foil" + custom_materials = list( + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3, + ) + +/obj/structure/hull_plating/silver_foil + name = "roll of silver foil" + desc = "An industrial scale roll of silver foil, presumably peeled off the nearest ship." + icon_state = "silver_foil" + custom_materials = list( + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 3, + ) + +/obj/structure/hull_plating/plastamic_sheets + name = "plastimic panels" + desc = "Panels of a complicated plastic compound used to clad the interiors of ships." + icon_state = "plastic_1" + base_icon_state = "plastic" + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1, + ) + +/obj/structure/hull_plating/plastamic_sheets/Initialize(mapload) + . = ..() + icon_state = "[base_icon_state]_[rand(1, 3)]" + update_appearance() + +/obj/structure/hull_plating/armor_panels + name = "armor panels" + desc = "High grade armor panels used to protect the exteriors of ships from anything between asteroid impacts \ + to gunfire." + icon_state = "armor_1" + base_icon_state = "armor" + custom_materials = list( + /datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 3, + ) + +/obj/structure/hull_plating/armor_panels/Initialize(mapload) + . = ..() + icon_state = "[base_icon_state]_[rand(1, 3)]" + update_appearance() + /obj/structure/hull_plating/aluminum name = "aluminum panels" desc = "A large section of aluminum hull that has been cut free, and has considerable mass." @@ -188,3 +249,59 @@ new_plating.color = color if(girder_type) return new girder_type(src) + +/turf/open/floor/plating/nanocarbon + name = "nanocarbon hull" + desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/floors.dmi' + icon_state = "nanocarbon" + base_icon_state = "nanocarbon" + attachment_holes = FALSE + upgradable = FALSE + rust_resistance = RUST_RESISTANCE_TITANIUM + /// What kind of plating we make when cut apart + var/obj/cut_plating = /obj/structure/hull_plating/nanocarbon/floor + +/turf/open/floor/plating/nanocarbon/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) + return TRUE + balloon_alert(user, "cut free!") + new cut_plating(get_turf(src)) + qdel(src) + return TRUE + +/turf/open/floor/plating/aluminum + name = "aluminum hull" + desc = "Thin aluminum hull, commonly used to plate the cargo bays of ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum.dmi' + icon_state = "aluminum-0" + base_icon_state = "aluminum" + attachment_holes = FALSE + upgradable = FALSE + rust_resistance = RUST_RESISTANCE_TITANIUM + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_TURF_CHASM + canSmoothWith = SMOOTH_GROUP_TURF_CHASM + /// What kind of plating we make when cut apart + var/obj/cut_plating = /obj/structure/hull_plating/aluminum/floor + +/turf/open/floor/plating/aluminum/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) + return TRUE + balloon_alert(user, "cut free!") + new cut_plating(get_turf(src)) + qdel(src) + return TRUE + +/obj/effect/baseturf_helper/salvage_shuttle + name = "salvage shuttle baseturf replacer" + baseturf_to_replace = list( + /turf/open/floor/plating, + ) + baseturf = /turf/open/floor/plating/nanocarbon diff --git a/modular_doppler/shipbreaking/icons/exterior.dmi b/modular_doppler/shipbreaking/icons/exterior.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6935ce86d752e4ecfc7003d5170b3689d09daf97 GIT binary patch literal 10625 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 literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum.dmi b/modular_doppler/shipbreaking/icons/turfs/aluminum.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f874c18ca9fe8c2d3ed9895c1a649c1ff1f006c5 GIT binary patch literal 4277 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 Q5256K*vqxr049X8O8@`> literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum.png b/modular_doppler/shipbreaking/icons/turfs/aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..ed27fa8b09e3b068f57ccc3d833547af7d13fc11 GIT binary patch literal 903 zcmV;219<$2P)001Be1^@s6m49>f00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj8F-b&0RCr$PoWX9?Fc5~@UiS?uPAe69MS@#}D#Q&T zj$GjB;KC6ho}x%xTY5!(gFP4hX8+Y>V#mqG_UwlFq$v4ad+crgcqVPt(^pqlk0*l5 z%ct9`I^5p=-d_Eq_Ix?89;^Z9yZiglwpy*id9&Gsb7}qT;$k-^u$&)rmX1F~?+l0q zy?pUJe4#csKY#7M`JX<12xlukfBD)oKy9P}TF*_mhHu}0Y+Gyy2Bi65j23V%-T+H1 zOrUqb*5)Hvht=F97!bP<48f;?TO`oi=2&9m*!KS2+h9WMK7Sq_LYoy&&d+-W97-8r zu9gOrpTAW6u^OPQRJ?uk87^c>#5V^wg$FbTu#F69jEThpn2WnD`vdkPEwnY3YdD0@ z9}GxnG=L`)2X+NIcM2GTv5Z6H9ES?lERK~C%OF{Z?;p=032$ep^hmS7FJ{GN9?eF@2J{*b^mf3~#*@^H?Hnh`6r9T0U>`linDI5WCf9$i*5vvxS$hrWn9{2OktX5J z8Z{tedkyF{An_g0F~w`Z2)X`qwI>Fj_sT?*Hhrc{#@Jp1dJRaT zZ^1HE!gTx8ZF*cP{W||Q(U%Ya!{ETvs&_PK*`_ss##qK7F*E1l)z+F^|G8R|>%U}u zrqeA_0@`>$(=V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DK9ZEKRK}|DL+q%i!&v&s2C_{$i_*gD?;si#yjPRJyhG5aP*8=`n2G7E2G1wPgY+5|fyZ zF{R{zOcvwJbAEBMwrR$?KEdUBgJW3&ow8AHIOkGkPfI|RbN)rP za;b(gLddAq2n-ehU6F(YrX=S@5(8KpECo>`fJHJLjaz{GL*LRtcIWJCP5=M^07*qoM6N<$f|2>XY5)KL literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi b/modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi index 075d407465647b399d145fd352950725457e2a4c..9c2be83b405bf1363ba4352177cf506834468533 100644 GIT binary patch literal 2667 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 Eg2dpTkN^Mx diff --git a/modular_doppler/shipbreaking/icons/wall_platings.dmi b/modular_doppler/shipbreaking/icons/wall_platings.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5fceea8649c23a63226028067b07e798c97f13e7 GIT binary patch literal 8476 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 literal 0 HcmV?d00001 diff --git a/strings/~doppler/salvage_shuttle.json b/strings/~doppler/salvage_shuttle.json index 0b942c08865a99..c2aa6d21a2ff1c 100644 --- a/strings/~doppler/salvage_shuttle.json +++ b/strings/~doppler/salvage_shuttle.json @@ -38,6 +38,8 @@ ], "name_word": [ + "Rising", + "Principal", "Spring", "Summer", "Autumn", diff --git a/tgstation.dme b/tgstation.dme index 8cdbe2bd8bcd8f..189e633ce77bd2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7689,6 +7689,7 @@ #include "modular_doppler\shipbreaking\code\salvage_computer.dm" #include "modular_doppler\shipbreaking\code\salvage_shuttle_base.dm" #include "modular_doppler\shipbreaking\code\salvage_shuttles\example.dm" +#include "modular_doppler\shipbreaking\code\shuttle_parts\exterior_pieces.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\hull.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\materials.dm" #include "modular_doppler\ships_r_us\code\buyable_shuttle_template.dm" From ff2165549d7b42ab3f893bcd3e76f997f8a3a786 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 14 Mar 2026 02:52:46 -0400 Subject: [PATCH 19/29] some tweaks to layers and fixes to floors --- .../code/shuttle_parts/exterior_pieces.dm | 19 +++++++++++++++++-- .../shipbreaking/code/shuttle_parts/hull.dm | 6 ++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm index 988943a3c7aecd..1cef56d0929f5f 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm @@ -5,6 +5,7 @@ icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' icon_state = null circuit = null + layer = LOW_ITEM_LAYER /obj/machinery/exoscanner/shuttle_part/Initialize(mapload) . = ..() @@ -13,6 +14,10 @@ /obj/machinery/exoscanner/shuttle_part/screwdriver_act(mob/user, obj/item/tool) return +/obj/machinery/exoscanner/shuttle_part/update_icon_state() + . = ..() + icon_state = base_icon_state + /// Disconnects the part from the wall its mounted on /obj/machinery/exoscanner/shuttle_part/proc/knock_down() set_anchored(FALSE) @@ -21,6 +26,7 @@ name = "radar panel" desc = "A radar panel, made to be mounted flat to the walls of ships for directional scanning." icon_state = "radar_panel" + base_icon_state = "radar_panel" custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, @@ -36,6 +42,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radar_panel, desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ housing. This one was left closed." icon_state = "blister_closed" + base_icon_state = "blister_closed" custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, @@ -55,6 +62,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/sensors_blist desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ housing. This one was left open." icon_state = "blister_open" + base_icon_state = "blister_open" custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, @@ -73,6 +81,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/open_sensors_ name = "radio dish" desc = "A directional radio dish, for extremely long range communication and sensing." icon_state = "dish" + base_icon_state = "dish" custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, @@ -94,6 +103,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 1 pass_flags_self = LETPASSTHROW|PASSSTRUCTURE armor_type = /datum/armor/structure_railing max_integrity = 75 + layer = LOW_ITEM_LAYER /// How long to either unwrench or unweld var/unfasten_time = 1 SECONDS /// Does this need to be welded off the wall instead @@ -129,7 +139,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 1 balloon_alert(user, "cutting...") if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) return TRUE - balloon_alert(user, "cut free!") set_anchored(FALSE) return TRUE @@ -171,6 +180,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/ladder_black, 5) name = "\improper EVA catwalk" desc = "A narrow catwalk for use on EVA." icon_state = "catwalk" + layer = CATWALK_LAYER custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, @@ -306,6 +316,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/aux_engine, 10) requires_welder = TRUE /// What type of hull plate object do we spawn when cut off the wall var/obj/structure/hull_plating/cut_plating = /obj/structure/hull_plating + /// Do we transfer our color to the cut_plating + var/keep_color = FALSE /obj/structure/shuttle_decoration/wall_plate/knock_down() new cut_plating(get_turf(src)) @@ -320,7 +332,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/aux_engine, 10) if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) return TRUE balloon_alert(user, "cut free!") - new cut_plating(get_turf(src)) + var/obj/new_plating = new cut_plating(get_turf(src)) + if(keep_color) + new_plating.color = color qdel(src) return TRUE @@ -347,6 +361,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/aux_engine, 10) desc = "A standoff screen of nanocarbon used typically for in atmosphere aerodynamics, or layered protection." icon_state = "nanocarbon" cut_plating = /obj/structure/hull_plating/nanocarbon/floor + keep_color = TRUE /obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal icon_state = "nanocarbon_diag" diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index 9e31a234ccfce4..7d33accd1bdf50 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -268,9 +268,8 @@ balloon_alert(user, "cutting...") if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) return TRUE - balloon_alert(user, "cut free!") new cut_plating(get_turf(src)) - qdel(src) + ScrapeAway() return TRUE /turf/open/floor/plating/aluminum @@ -294,9 +293,8 @@ balloon_alert(user, "cutting...") if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) return TRUE - balloon_alert(user, "cut free!") new cut_plating(get_turf(src)) - qdel(src) + ScrapeAway() return TRUE /obj/effect/baseturf_helper/salvage_shuttle From c01f9b740a5f800e74ba583731c35ff0029ba1f8 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 14 Mar 2026 02:57:35 -0400 Subject: [PATCH 20/29] fixes aluminum floor --- .../shipbreaking/icons/turfs/aluminum.dmi | Bin 4277 -> 3761 bytes .../shipbreaking/icons/turfs/aluminum.png | Bin 903 -> 869 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum.dmi b/modular_doppler/shipbreaking/icons/turfs/aluminum.dmi index f874c18ca9fe8c2d3ed9895c1a649c1ff1f006c5..bc28b6506090572e656c19402beff645e81e2245 100644 GIT binary patch delta 3498 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 delta 4018 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 O9InSboU5HK-Te;}VM6Qx diff --git a/modular_doppler/shipbreaking/icons/turfs/aluminum.png b/modular_doppler/shipbreaking/icons/turfs/aluminum.png index ed27fa8b09e3b068f57ccc3d833547af7d13fc11..50e2a0a0849a2193fd31e6b0db10a971e65a3433 100644 GIT binary patch delta 817 zcmV-11J3-12jvEkL4OZPL_t(|UhSN*Zqz^!hLg1S1`*XsfwV}_MZ7>1QPPm73k@Yg zJOxO!A!(z$!PS9(x&Ja=uf6N@&W=x+Pdc6djd#}T`)_8PAdWv=Ts$2K&d*zfjE#4$3E~p0&C*J+ z{BT-=WMH*6>14nd7)7RO>0FT0@%&P7V`QeRttC_TqkpAy*Q=#@Eki#inz~~^UXZ*= zwa|?194?&_j1mZE!X(nMV5)Ia^BG%~Kww#dTdnD&Nj`+|9cGzoJc*ni$95dh>j8&) zHfbCj=X8qFey}9|937K8-?g3|eF$+JZF;|kA#+M^3i%B{CiEWA0lf@Z+jtVq*v?@x zSb~RYHh6PHr-)qNeILK+@e+&MP>u23DAP42i zwa|?194?doNq%Yh95NYWdk^T43)EQe(4;q*Xt)_ zDA|)~6Zf2!J>U{(weJ|*2dlM7Fdz`_Q&pt-^V;*@Sax{p{jmHz%;1AAfU}jz2~342T82eDOSd zp*A-^f9<~cpFVyFXDdE``Pwr;ZKMHO&rP_7Z{L4xTWkmhr1@Zs7H}@!081=Ppm)I5 z<|9~#)!ZZ)5W5fz!KZ;+B+%RDSYqSY_Ws@5U_$IZe;yt}n-x#a&wB#5V^wg$FbTu#F69jEThpn2WnD`vdkPEwnY3YdD0@9}Gxn zG=L`)2X+NIcM2GTv5Z6H9ES?lERK~C%OF{Z?;p?_oG#>kzzw3c8Ex&E~@KY!}$ zq^9l|kPAxPm^svp?Hn(i6pR!EXTl`Xv0$okV&fTGrl3}7FNMWg4(an-6MYHc8D^Pk zJc%5yV>=G$)qts*O&SN+IUQptb}n8`t;zMDt2Md)OV)!gA&yg<-j89(oYWgbJ^|PX zy$19e5P$S`z|zK()Qs&MC&?6?%GqEaJ;a#tHMJ(!f3DW#`Y%~~4d|HCs{xTF;m#U0 zAY*$C=rthm9ndkwYrqJ({&Te^*MG^{cR`^-YHkt? zh)fHbumv<9c=P%?oUOoGEDhLtZo)N~|8pW5kksChXgqR=J0MfDEImLet#?4n`7vkd d_~Z5F Date: Sat, 14 Mar 2026 02:59:46 -0400 Subject: [PATCH 21/29] fixes the area --- modular_doppler/shipbreaking/code/salvage_shuttle_base.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm index cd72204a775980..b6ffa826882c62 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -77,4 +77,10 @@ /area/shuttle/salvaged_shuttle name = "Shuttle Salvage" requires_power = TRUE + always_unpowered = TRUE + power_equip = FALSE + power_light = FALSE + power_environ = FALSE + power_apc_charge = FALSE + default_gravity = ZERO_GRAVITY area_limited_icon_smoothing = /area/shuttle/salvaged_shuttle From 80384493b7c697c1dbcd10d4fcf53c37838d2141 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 15 Mar 2026 14:46:47 -0400 Subject: [PATCH 22/29] door icons --- modular_doppler/shipbreaking/icons/doors.dmi | Bin 0 -> 3112 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modular_doppler/shipbreaking/icons/doors.dmi diff --git a/modular_doppler/shipbreaking/icons/doors.dmi b/modular_doppler/shipbreaking/icons/doors.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d3a3a86f856da099e349e2b33edfe46795f9c6e8 GIT binary patch literal 3112 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 bzK!k*Jkieikdy*l{YC6-2-fA6p0WQ2o@NxA literal 0 HcmV?d00001 From c34ea5378d009cbadce8a4c7d280ea1766672228 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 15 Mar 2026 16:34:17 -0400 Subject: [PATCH 23/29] airlocks and some other stuff --- .../code/shuttle_parts/airlocks.dm | 92 ++++++++++++++++++ .../code/shuttle_parts/exterior_pieces.dm | 88 ++++++++++++++++- .../shipbreaking/code/shuttle_parts/hull.dm | 4 +- .../code/shuttle_parts/materials.dm | 11 +++ .../shipbreaking/icons/exterior.dmi | Bin 10625 -> 12229 bytes tgstation.dme | 1 + 6 files changed, 193 insertions(+), 3 deletions(-) create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm b/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm new file mode 100644 index 00000000000000..2b3cd9dbf603b7 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm @@ -0,0 +1,92 @@ +/obj/structure/mineral_door/manual_colony_door/shuttle + name = "manual exterior airlock" + desc = "A manually operated airlock for the exteriors of ships, sized just enough to crawl through in zero gravity." + icon = 'modular_doppler/shipbreaking/icons/doors.dmi' + icon_state = "exterior" + armor_type = /datum/armor/machinery_door + disassembled_type = /obj/structure/hull_plating/airlock + +/obj/structure/mineral_door/manual_colony_door/shuttle/welder_act(mob/living/user, obj/item/tool) //override if the door is supposed to be flammable. + if(user.combat_mode) + return + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 3 SECONDS, amount = 1, volume=50)) + return TRUE + deconstruct(TRUE) + return TRUE + +/obj/structure/mineral_door/manual_colony_door/shuttle/wrench_act(mob/living/user, obj/item/tool) + return + +/obj/structure/mineral_door/manual_colony_door/shuttle/examine(mob/user) + . = ..() + . += span_notice("You can cut this free with a welding tool of some kind.") + +/obj/structure/hull_plating/airlock + name = "disconnected exterior airlock" + desc = "A manually operated airlock for the exteriors of ships, this one looks to be disconnected from the frame." + icon = 'modular_doppler/shipbreaking/icons/doors.dmi' + icon_state = "exterior_free" + armor_type = /datum/armor/machinery_door + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.75, + ) + /// What kind of thing do we make when welded back down + var/obj/reconnect_type = /obj/structure/mineral_door/manual_colony_door/shuttle + +/obj/structure/hull_plating/airlock/examine(mob/user) + . = ..() + . += span_notice("You can secure this again with a welding tool of some kind.") + +/obj/structure/hull_plating/airlock/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + balloon_alert(user, "securing...") + if(!tool.use_tool(src, user, 3 SECONDS, amount = 1, volume=50)) + return TRUE + new reconnect_type(get_turf(src)) + qdel(src) + return TRUE + +/obj/structure/mineral_door/manual_colony_door/shuttle/interior + name = "manual interior airlock" + desc = "A manually operated airlock for the exteriors of ships, walkable and quicker to open than heavier airlocks." + icon_state = "interior" + disassembled_type = /obj/structure/hull_plating/airlock/interior + manual_actuation_delay = 0.25 SECONDS + +/obj/structure/hull_plating/airlock/interior + name = "disconnected interior airlock" + desc = "A manually operated airlock for the interiors of ships, this one looks to be disconnected from the frame." + icon_state = "interior_free" + reconnect_type = /obj/structure/mineral_door/manual_colony_door/shuttle/interior + +/obj/structure/shuttle_access_panel + name = "maintenance panel" + desc = "A maintenance panel used for access to crawlspaces and engines in ships, has to be cut from the frame." + icon = 'modular_doppler/shipbreaking/icons/doors.dmi' + icon_state = "access" + anchored = TRUE + opacity = TRUE + density = TRUE + max_integrity = 150 + armor_type = /datum/armor/machinery_door + /// What does this unweld into + var/obj/disassembled_type = /obj/structure/hull_plating/airlock/access_panel + +/obj/structure/shuttle_access_panel/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 3 SECONDS, amount = 1, volume=50)) + return TRUE + new disassembled_type(get_turf(src)) + qdel(src) + return TRUE + +/obj/structure/hull_plating/airlock/access_panel + name = "disconnected maintenance panel" + desc = "A maintenance panel used for access to crawlspaces and engines in ships, this one has been cut from the frame." + icon_state = "access_free" + reconnect_type = /obj/structure/mineral_door/manual_colony_door/shuttle/interior diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm index 1cef56d0929f5f..6a2ed0764ef3ac 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm @@ -1,3 +1,84 @@ +// Shuttle engine covers + +/obj/structure/engine_covers + abstract_type = /obj/structure/engine_covers + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + icon_state = null + flags_1 = ON_BORDER_1 + obj_flags = CAN_BE_HIT | IGNORE_DENSITY + density = FALSE + anchored = TRUE + pass_flags_self = LETPASSTHROW|PASSSTRUCTURE + armor_type = /datum/armor/anything_nanocarbon + max_integrity = 150 + layer = ABOVE_OBJ_LAYER + /// How long to unweld + var/unfasten_time = 1 SECONDS + +/obj/structure/engine_covers/border_only/Initialize(mapload) + . = ..() + AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) + var/static/list/loc_connections = list( + COMSIG_ATOM_EXIT = PROC_REF(on_exit), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/obj/structure/engine_covers/examine(mob/user) + . = ..() + . += span_notice("You can [anchored ? "unsecure" : "secure"] it with a welding tool.") + +/obj/structure/engine_covers/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + balloon_alert(user, anchored ? "cutting..." : "securing...") + if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) + return TRUE + set_anchored(!anchored) + return TRUE + +/// Determines what to do when something is leaving our turf +/obj/structure/engine_covers/proc/on_exit(datum/source, atom/movable/leaving, direction) + SIGNAL_HANDLER + if(leaving == src) + return // Let's not block ourselves. + if(!(direction & dir)) + return + if (!density) + return + if (leaving.movement_type & (PHASING)) + return + if (leaving.move_force >= MOVE_FORCE_EXTREMELY_STRONG) + return + leaving.Bump(src) + return COMPONENT_ATOM_BLOCK_EXIT + +/obj/structure/engine_covers/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + if(!(border_dir == dir)) + return TRUE + +/obj/structure/engine_covers/CanPass(atom/movable/mover, border_dir) + return border_dir & dir ? ..() : TRUE + +/obj/structure/engine_covers/CanAStarPass(to_dir, datum/can_pass_info/pass_info) + return !density || (dir != to_dir) + +/obj/structure/engine_covers/can_atmos_pass(turf/the_turf, vertical = FALSE) + if(get_dir(loc, the_turf) == dir) + return !density + else + return TRUE + +/obj/structure/engine_covers/thruster_nozzle + name = "thruster nozzle" + desc = "A protective nozzle for shuttle engines, to keep debris from getting inside the combustion chamber." + icon_state = "nozzle" + +/obj/structure/engine_covers/heater_cover + name = "engine cover" + desc = "A protective cover for engine components, as well as a barrier to prevent atmosphere escape." + icon_state = "engine_plate" + // Anything that uses an existing machine for function /obj/machinery/exoscanner/shuttle_part @@ -111,6 +192,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 1 /obj/structure/shuttle_decoration/Initialize(mapload) . = ..() + AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) /obj/structure/shuttle_decoration/examine(mob/user) @@ -136,10 +218,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 1 return if(!requires_welder) return - balloon_alert(user, "cutting...") + balloon_alert(user, anchored ? "cutting..." : "securing...") if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) return TRUE - set_anchored(FALSE) + set_anchored(!anchored) + if(anchored) + find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) return TRUE /obj/structure/shuttle_decoration/rcs diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index 7d33accd1bdf50..3ed05e7c4152ce 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -3,6 +3,7 @@ icon = 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi' density = TRUE anchored = FALSE + drag_slowdown = 1.5 /// How much damage we do when we fall on or crash into someone var/crush_damage = 40 @@ -160,7 +161,7 @@ flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD sheet_type = /obj/item/stack/sheet/nanocarbon hardness = 20 - smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS + smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS | SMOOTH_OBJ smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS canSmoothWith = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS custom_materials = list( @@ -237,6 +238,7 @@ sheet_type = /obj/item/stack/sheet/aluminum hardness = 50 explosive_resistance = 0 + smoothing_flags = SMOOTH_BITMASK | SMOOTH_OBJ smoothing_groups = SMOOTH_GROUP_TITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS canSmoothWith = SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_TITANIUM_WALLS custom_materials = list( diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm b/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm index 9ff3ebbef899db..a6107b74812522 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm @@ -86,6 +86,15 @@ victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) return TRUE +/datum/armor/nanocarbon_anything + melee = 50 + bullet = 40 + laser = 20 + energy = 20 + bomb = 25 + fire = 100 + acid = 100 + /obj/item/nanocarbon_shard name = "nanocarbon shard" desc = "A wicked looking shard of fractured nanocarbon, number one cause of suit punctures in orbit today." @@ -94,6 +103,8 @@ base_icon_state = "nanoshard" hitsound = 'sound/items/weapons/bladeslice.ogg' w_class = WEIGHT_CLASS_SMALL + max_integrity = 150 + armor_type = /datum/armor/nanocarbon_anything force = 5 throwforce = 10 sharpness = SHARP_EDGED diff --git a/modular_doppler/shipbreaking/icons/exterior.dmi b/modular_doppler/shipbreaking/icons/exterior.dmi index 6935ce86d752e4ecfc7003d5170b3689d09daf97..568a785a7d04d1e7ee19ea3ff82be01f01f83435 100644 GIT binary patch literal 12229 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 literal 10625 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 diff --git a/tgstation.dme b/tgstation.dme index 189e633ce77bd2..1522f2ae8b000a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7689,6 +7689,7 @@ #include "modular_doppler\shipbreaking\code\salvage_computer.dm" #include "modular_doppler\shipbreaking\code\salvage_shuttle_base.dm" #include "modular_doppler\shipbreaking\code\salvage_shuttles\example.dm" +#include "modular_doppler\shipbreaking\code\shuttle_parts\airlocks.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\exterior_pieces.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\hull.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\materials.dm" From 8f1ebdf4d4a2c082a16031f985c1c7c187cb1a5f Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Fri, 20 Mar 2026 00:30:26 -0400 Subject: [PATCH 24/29] WIP on master --- code/__DEFINES/~doppler_defines/traits/declarations.dm | 3 +++ code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + code/game/machinery/recycler.dm | 2 +- 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/~doppler_defines/traits/declarations.dm b/code/__DEFINES/~doppler_defines/traits/declarations.dm index 9e36c4dfb67d67..f055face08d4da 100644 --- a/code/__DEFINES/~doppler_defines/traits/declarations.dm +++ b/code/__DEFINES/~doppler_defines/traits/declarations.dm @@ -22,3 +22,6 @@ // makes it so held items float by their head #define TRAIT_FLOATING_HELD "held_items_float" +// Do non-items still get recycled for their custom materials +#define TRAIT_RECYCLE_LIKE_ITEM "recycle_like_an_item" + diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 9babd0c709197a..a2ce6664b7dd0d 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -646,6 +646,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CARP_GOODTOX" = TRAIT_CARP_GOODTOX, // DOPPLER EDIT ADDITION "TRAIT_CHAMELEON_SKIN" = TRAIT_CHAMELEON_SKIN, // DOPPLER EDIT ADDITION "TRAIT_FLOATING_HELD" = TRAIT_FLOATING_HELD, // DOPPLER EDIT ADDITION + "TRAIT_RECYCLE_LIKE_ITEM" = TRAIT_RECYCLE_LIKE_ITEM, // DOPPLER EDIT ADDITION ), /mob/dead/observer = list( diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index d3bd91b4c7cc0e..a4062662f525a6 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -30,6 +30,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_CONTRABAND" = TRAIT_CONTRABAND, "TRAIT_DUCT_TAPE_UNREPAIRABLE" = TRAIT_DUCT_TAPE_UNREPAIRABLE, "TRAIT_SPEED_POTIONED" = TRAIT_SPEED_POTIONED, + "TRAIT_RECYCLE_LIKE_ITEM" = TRAIT_RECYCLE_LIKE_ITEM, // DOPPLER EDIT ADDITION ), /mob = list( "TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING, diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index dcbc5aa0e41049..1d705ceb90461a 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -225,7 +225,7 @@ break var/full_power_usage = TRUE var/obj/nom_obj = nom[i] - if (isitem(nom_obj)) + if((isitem(nom_obj)) || (HAS_TRAIT(nom_obj, TRAIT_RECYCLE_LIKE_ITEM))) // DOPPLER EDIT CHANGE - Lets non-items get their custom materials recycled - ORIGINAL: if (isitem(nom_obj)) // Whether or not items consume full power depends on if they produced a material when recycled. full_power_usage = recycle_item(nom_obj) else From bce8a7c51e475c55110f07632573ea441c398fe1 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Fri, 20 Mar 2026 00:46:16 -0400 Subject: [PATCH 25/29] materials bits tgui rendering fixes the last commit but actually lowers some minimum material values eva catwalk and hull panel fix I think now we're talking prior owner datums storage tanks fixes the last commit reactors makes reactors glow some stuff ?? apparently fullbright doesn't work ? organize it a bit adds rotation to the docking clamp makes the salvage parts buildable STOOOP CHANGING PUBBY crates more owners makes fuel tanks more dangerous improves fuel tank sprites reactor emissive lights shipping containers we're rich! hull for outside too scrappie (real) trainer ship button today on why all switch statements need to be sent to prison makes material sales better anchored shipping containers makes batteries and reactors a little more dangerous makes hull plates heavier makes more things heavier scrappie upgrade slashes maint loot value fix airlocks some more owners makes RTG wrenchable solar probe ikwa heavy cargo more ikwa heavy cargo can't put down tha ikwa big tank lmao gives the ikwa big tanks random salvage rifle spawner titanium girders, ikwa tanker adds ikwas to the computer weldable shipping containers, unique item spawners adds tethers to the ikwa spawner remake random tank spawners foolish makes maps use the new loot spawners inert version of the shipmind core adds 100 shipping crate spawners random shipping container weld chance disaster makes mobs not spawn in crates assorted fixes makes nanocarbon shards evil removes documents spawner type (infinite money source) fixes maintenance covers good toys for military type ships ammo boxes dont need to be armed use the icon file gives resource and monetary value to the last two commits vautour ship type makes adding shuttles to the console automatic more community companies gives the special things cart rolling sounds four new ships --- _maps/map_files/Pubbystation/pubbystation.dmm | 312 ++-- .../salvage/salvage_fengzhou_patrol.dmm | 967 ++++++++++++ .../salvage/salvage_ikwa_cargo.dmm | 1337 ++++++++++++++++ .../salvage/salvage_ikwa_tanker.dmm | 1234 +++++++++++++++ .../salvage/salvage_meridian_cargo.dmm | 1154 ++++++++++++++ .../salvage/salvage_meridian_exolab.dmm | 1204 ++++++++++++++ .../salvage/salvage_meridian_passenger.dmm | 1167 ++++++++++++++ .../salvage/salvage_scrappie.dmm | 381 +++-- .../salvage/salvage_solestra_probe.dmm | 894 +++++++++++ .../salvage/salvage_solestra_probe_mining.dmm | 896 +++++++++++ .../salvage/salvage_vautour_cargo.dmm | 1405 +++++++++++++++++ .../salvage/salvage_vautour_salvage.dmm | 1361 ++++++++++++++++ .../~doppler_defines/shipbreaking.dm | 16 + .../~doppler_defines/traits/declarations.dm | 7 +- code/_globalvars/traits/_traits.dm | 3 +- code/_globalvars/traits/admin_tooling.dm | 2 + .../asset_cache/assets/sheetmaterials.dm | 1 + .../colony_fabricator/code/power/rtg.dm | 5 + .../epic_loot/code/loot_items/components.dm | 6 +- .../epic_loot/code/loot_items/electronics.dm | 4 +- .../epic_loot/code/loot_items/medical.dm | 2 +- .../epic_loot/code/loot_items/valuables.dm | 4 +- .../shipbreaking/code/docking_clamp.dm | 45 +- .../shipbreaking/code/loot/cargo_sales.dm | 131 ++ .../shipbreaking/code/loot/item_spawners.dm | 256 +++ .../shipbreaking/code/loot/military.dm | 16 + .../shipbreaking/code/loot/random_cargo.dm | 241 +++ .../code/loot/random_crate_items.dm | 429 +++++ .../shipbreaking/code/loot/tanks.dm | 38 + .../shipbreaking/code/prior_owners/medical.dm | 36 + .../code/prior_owners/military.dm | 31 + .../shipbreaking/code/prior_owners/mining.dm | 41 + .../code/prior_owners/research.dm | 51 + .../code/prior_owners/shipping.dm | 76 + .../shipbreaking/code/prior_owners/unique.dm | 4 + .../shipbreaking/code/prior_owners_base.dm | 7 + .../shipbreaking/code/salvage_computer.dm | 72 +- .../shipbreaking/code/salvage_shuttle_base.dm | 28 +- .../code/salvage_shuttles/cargo.dm | 65 + .../code/salvage_shuttles/example.dm | 10 +- .../code/salvage_shuttles/military.dm | 14 + .../code/salvage_shuttles/passenger.dm | 15 + .../code/salvage_shuttles/research.dm | 15 + .../code/salvage_shuttles/salvage.dm | 16 + .../code/salvage_shuttles/unmanned.dm | 28 + .../shipbreaking/code/shuttle_decoration.dm | 63 + .../code/shuttle_parts/airlocks.dm | 4 +- .../shipbreaking/code/shuttle_parts/crates.dm | 117 ++ .../code/shuttle_parts/engine_covers.dm | 107 ++ .../code/shuttle_parts/engines.dm | 44 + .../code/shuttle_parts/exoscanners.dm | 92 ++ .../code/shuttle_parts/exterior_pieces.dm | 389 +---- .../code/shuttle_parts/girders.dm | 41 + .../code/shuttle_parts/hazards.dm | 261 +++ .../shipbreaking/code/shuttle_parts/hull.dm | 171 +- .../code/shuttle_parts/hull_turfs.dm | 244 +++ .../code/shuttle_parts/materials.dm | 8 +- .../code/shuttle_parts/munitions.dm | 179 +++ .../code/shuttle_parts/wall_plating.dm | 189 +++ modular_doppler/shipbreaking/icons/64x32.dmi | Bin 0 -> 1843 bytes modular_doppler/shipbreaking/icons/closet.dmi | Bin 0 -> 4035 bytes modular_doppler/shipbreaking/icons/crates.dmi | Bin 0 -> 1407 bytes .../shipbreaking/icons/exterior.dmi | Bin 12229 -> 18451 bytes .../icons/smooth/girder_titan.dmi | Bin 0 -> 6895 bytes .../icons/smooth/girder_titan.png | Bin 0 -> 1689 bytes .../icons/smooth/girder_titan.png.toml | 2 + .../shipbreaking/icons/spawners.dmi | Bin 0 -> 3248 bytes .../shipbreaking/icons/turfs/floors.dmi | Bin 438 -> 611 bytes .../shipbreaking/sound/plasma_bomb.ogg | Bin 0 -> 39575 bytes strings/~doppler/salvage_shuttle.json | 18 - tgstation.dme | 34 + .../Fabrication/MaterialAccessBar.tsx | 2 + .../interfaces/Fabrication/MaterialIcon.tsx | 12 + 73 files changed, 15081 insertions(+), 923 deletions(-) create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_fengzhou_patrol.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_cargo.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_tanker.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_cargo.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_exolab.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_passenger.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe_mining.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_cargo.dmm create mode 100644 _maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_salvage.dmm create mode 100644 code/__DEFINES/~doppler_defines/shipbreaking.dm create mode 100644 modular_doppler/shipbreaking/code/loot/cargo_sales.dm create mode 100644 modular_doppler/shipbreaking/code/loot/item_spawners.dm create mode 100644 modular_doppler/shipbreaking/code/loot/military.dm create mode 100644 modular_doppler/shipbreaking/code/loot/random_cargo.dm create mode 100644 modular_doppler/shipbreaking/code/loot/random_crate_items.dm create mode 100644 modular_doppler/shipbreaking/code/loot/tanks.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners/medical.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners/military.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners/mining.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners/research.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners/shipping.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners/unique.dm create mode 100644 modular_doppler/shipbreaking/code/prior_owners_base.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/cargo.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/military.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/passenger.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/research.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/salvage.dm create mode 100644 modular_doppler/shipbreaking/code/salvage_shuttles/unmanned.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_decoration.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/crates.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/engine_covers.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/engines.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/girders.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/hazards.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/hull_turfs.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/munitions.dm create mode 100644 modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm create mode 100644 modular_doppler/shipbreaking/icons/64x32.dmi create mode 100644 modular_doppler/shipbreaking/icons/closet.dmi create mode 100644 modular_doppler/shipbreaking/icons/crates.dmi create mode 100644 modular_doppler/shipbreaking/icons/smooth/girder_titan.dmi create mode 100644 modular_doppler/shipbreaking/icons/smooth/girder_titan.png create mode 100644 modular_doppler/shipbreaking/icons/smooth/girder_titan.png.toml create mode 100644 modular_doppler/shipbreaking/icons/spawners.dmi create mode 100644 modular_doppler/shipbreaking/sound/plasma_bomb.ogg diff --git a/_maps/map_files/Pubbystation/pubbystation.dmm b/_maps/map_files/Pubbystation/pubbystation.dmm index b5a24437033310..202059f37e2953 100644 --- a/_maps/map_files/Pubbystation/pubbystation.dmm +++ b/_maps/map_files/Pubbystation/pubbystation.dmm @@ -27986,12 +27986,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plastic, /area/station/security/lockers) -"cTG" = ( -/obj/machinery/computer/salvage_bay_controller{ - dir = 4 - }, -/turf/open/floor/iron, -/area/space) "cUS" = ( /obj/machinery/camera/directional/north{ c_tag = "Custodial Quarters" @@ -31798,12 +31792,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"fXo" = ( -/obj/machinery/docking_clamp{ - dir = 8 - }, -/turf/open/floor/plating, -/area/space) "fXP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -31912,9 +31900,6 @@ "gdl" = ( /turf/open/floor/iron/white/textured_large, /area/station/medical/pharmacy) -"gdB" = ( -/turf/closed/wall, -/area/space) "gdJ" = ( /obj/item/storage/box/bodybags{ pixel_x = -6; @@ -44743,10 +44728,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) -"qco" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/space) "qcD" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/canister/bz, @@ -54512,10 +54493,6 @@ /obj/structure/cable, /turf/open/floor/iron/white/textured_large, /area/station/medical/treatment_center) -"wUl" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space) "wUz" = ( /obj/structure/chair/stool/bar/directional/west, /obj/effect/mapping_helpers/burnt_floor, @@ -55856,10 +55833,6 @@ }, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/rd) -"xMa" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "xMg" = ( /obj/machinery/power/turbine/inlet_compressor, /turf/open/floor/engine, @@ -56373,9 +56346,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/engine, /area/station/science/xenobiology) -"yhD" = ( -/turf/open/floor/iron, -/area/space) "yhO" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -58643,33 +58613,33 @@ aaa aaa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -rWN -rWN -rWN aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -58898,37 +58868,37 @@ aaa aaa aaa aaa -xMa -wUl -wUl -wUl -xMa -wUl -wUl -wUl -wUl -xMa -wUl -wUl -wUl -xMa -rWN -rWN -rWN -xMa -wUl -wUl -wUl -xMa -wUl -wUl -wUl -wUl -xMa -wUl -wUl -wUl -xMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -59157,33 +59127,33 @@ aaa aaa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -rWN -rWN -rWN aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64297,33 +64267,33 @@ aaa aaa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -rWN -fXo -rWN aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64552,37 +64522,37 @@ aaa aaa aaa aaa -xMa -wUl -wUl -wUl -xMa -wUl -wUl -wUl -wUl -xMa -wUl -wUl -wUl -xMa -rWN -rWN -rWN -xMa -wUl -wUl -wUl -xMa -wUl -wUl -wUl -wUl -xMa -wUl -wUl -wUl -xMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64811,33 +64781,33 @@ aaa aaa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -rWN -rWN -rWN aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa aaa aaa -xMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65071,13 +65041,13 @@ aaa aaa aaa aaa -gdB -gdB -gdB -qco -qco -qco -gdB +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65328,13 +65298,13 @@ aaa aaa aaa aaa -gdB -yhD -yhD -yhD -cTG -yhD -qco +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65585,13 +65555,13 @@ aaa aaa aaa aaa -gdB -yhD -yhD -yhD -yhD -yhD -qco +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65842,13 +65812,13 @@ aaa aaa aaa aaa -gdB -yhD -yhD -yhD -yhD -yhD -gdB +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66099,13 +66069,13 @@ aaa aaa aaa aaa -gdB -gdB -gdB -gdB -gdB -gdB -gdB +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_fengzhou_patrol.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_fengzhou_patrol.dmm new file mode 100644 index 00000000000000..cfd4c110cbb951 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_fengzhou_patrol.dmm @@ -0,0 +1,967 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"cP" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/structure/shuttle_decoration/landing_engine/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/shuttle_decoration/landing_engine/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/three, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/shuttle_decoration/radiator/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"iz" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"iA" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/shuttle_decoration/radiator/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/structure/shuttle_decoration/radiator/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/structure/shuttle_decoration/console/directional/west, +/obj/structure/shuttle_decoration/aux_engine/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"qp" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yu" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/two, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/south, +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 6 + }, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/railing, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/west, +/obj/effect/spawner/random/salvage/munitions/only_missiles, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/structure/shuttle_decoration/radiator/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/railing, +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qx" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"QB" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/shuttle_decoration/liquid_tank/explosive/lithium, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"QT" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/structure/shuttle_decoration/junction_box/directional/south, +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/machinery/computer/old{ + dir = 8 + }, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"UN" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"UW" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/six, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/shuttle_decoration/liquid_tank/explosive, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Wc" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/structure/shuttle_decoration/ladder_black/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YJ" = ( +/obj/effect/spawner/random/salvage/munitions/only_ammoboxes, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/junction_box/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +dD +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +dD +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +nk +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +BW +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +CU +xx +xx +xx +CU +YC +YC +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +IP +Wc +Wc +Wc +qp +YC +YC +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +dD +YC +YC +YC +eB +YC +YC +jv +NP +rb +QB +km +YC +YC +rL +YC +YC +YC +dD +"} +(13,1,1) = {" +YC +YC +YC +YC +iA +HG +HG +hx +NP +Md +VR +Jd +HG +HG +Du +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +Qx +BV +BV +RM +Gu +rb +UN +zd +BV +BV +QT +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +iA +YC +YC +fI +yu +kO +YJ +ez +YC +YC +Du +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +YC +YC +pH +Qv +yi +zm +Em +YC +YC +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +vn +Xt +tC +CU +CU +YC +YC +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +YC +cP +Pp +yu +nN +CU +Mn +YC +YC +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +YC +Dx +ik +Zy +nP +CU +CC +YC +YC +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +dD +YC +YC +YC +YC +YC +Dx +Tf +Dx +YC +Av +Fz +YC +YC +YC +YC +YC +YC +dD +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +YC +iz +Dx +UU +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +UW +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +gM +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +dD +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_cargo.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_cargo.dmm new file mode 100644 index 00000000000000..22261c4e7c695b --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_cargo.dmm @@ -0,0 +1,1337 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ar" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 2 + }, +/obj/structure/sign/poster/random/directional/east, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"bb" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"bo" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"bA" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"bJ" = ( +/obj/machinery/light/red/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"cl" = ( +/obj/structure/shuttle_decoration/radiator/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"dw" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 4 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 9 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/bed/pod, +/obj/effect/spawner/random/bedsheet, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 10 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"go" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"gt" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/effect/spawner/random/salvage/container, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"gT" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"is" = ( +/obj/machinery/light/red/directional/north, +/obj/effect/spawner/random/salvage/crate_only, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"jU" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"lu" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"lN" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"lV" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"mS" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"nE" = ( +/obj/machinery/light/red/directional/west, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nO" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ol" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/machinery/light/red/directional/south, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"oP" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal, +/obj/structure/railing/eva_handhold/directional/south, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"oV" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"oY" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"pB" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"pM" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/colony/texture, +/area/shuttle/salvaged_shuttle) +"pN" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 1 + }, +/obj/structure/railing/eva_handhold/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"qr" = ( +/obj/effect/spawner/random/salvage/crate_only, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/obj/structure/sign/poster/random/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"sm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"st" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"sE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/structure/sign/poster/random/directional/north, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"sN" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"tH" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uM" = ( +/obj/structure/shuttle_decoration/radiator/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/three, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wd" = ( +/obj/machinery/light/red/directional/south, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/headlight/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"wF" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"wS" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/structure/shuttle_decoration/headlight/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/effect/spawner/random/salvage/crate_only, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"yo" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Aq" = ( +/obj/structure/shuttle_decoration/console/directional/north, +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Au" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"AH" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Bp" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"Bs" = ( +/obj/machinery/light/red/directional/north, +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"CQ" = ( +/obj/structure/shuttle_decoration/liquid_tank/coolant, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Dq" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Ed" = ( +/obj/structure/shuttle_decoration/ladder/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Ej" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 2 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ey" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/railing/eva_handhold/directional/south, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"EV" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 2 + }, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Fo" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/effect/spawner/random/engineering/toolbox, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/structure/bed/pod, +/obj/effect/spawner/random/bedsheet, +/obj/structure/sign/poster/random/directional/west, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"FL" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"FV" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"FY" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"GS" = ( +/obj/structure/shuttle_decoration/junction_box/directional/north, +/obj/structure/shuttle_decoration/ladder_black/directional/south, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Hc" = ( +/obj/structure/shuttle_decoration/junction_box/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Hg" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Hh" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/two, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/six, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"JH" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Kj" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/machinery/light/red/directional/south, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ku" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"KJ" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"KS" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor/super, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"LC" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"LF" = ( +/obj/structure/shuttle_decoration/console/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"MJ" = ( +/obj/structure/chair/comfy/shuttle{ + pixel_y = 12 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Ox" = ( +/obj/machinery/light/red/directional/south, +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"OM" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/effect/spawner/random/salvage/container, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"Pg" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"PS" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/effect/spawner/random/salvage/industrial_fuel_only, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"QB" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 10 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"QT" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/structure/bed/pod, +/obj/effect/spawner/random/bedsheet, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"QW" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"RU" = ( +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"RV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Tv" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"TN" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 9 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Ul" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Ut" = ( +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Vh" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"VV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Wj" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Wp" = ( +/obj/machinery/light/red/directional/north, +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Wu" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ww" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"Wz" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + pixel_x = 5 + }, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Xb" = ( +/obj/structure/shuttle_decoration/junction_box/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Yb" = ( +/obj/machinery/light/red/directional/south, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Yn" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 8 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"Zq" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +Vh +Wj +Wj +IM +Wj +Wj +Vh +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +mS +IM +Kj +Kj +Ed +Kj +Kj +IM +Bp +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +Ww +KJ +zm +vn +LV +vn +zm +Ul +kO +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +uk +YC +YC +YC +mS +IM +zm +ez +Yn +fI +zm +IM +Bp +YC +YC +YC +uk +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +zd +PS +vn +FY +KS +Hh +vn +PS +VR +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +bb +PS +CC +LF +IZ +CC +BV +PS +sm +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +gt +ce +is +Au +Mn +LV +oM +ce +OM +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +Ev +YC +YC +YC +gt +Xb +vn +Wz +FV +qr +xx +ce +OM +YC +YC +YC +Ii +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +gt +st +rb +CC +Zq +CC +CQ +LC +OM +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +Tv +PS +gT +yo +Yb +Dq +gT +PS +go +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +zd +hx +hx +CC +Zq +CC +hx +hx +VR +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +YC +YC +TN +bo +UU +lN +UU +bo +QB +YC +YC +YC +YC +YC +uk +"} +(13,1,1) = {" +YC +YC +YC +YC +YC +YC +Md +Qv +hx +Ey +hx +Qv +yi +YC +YC +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +YC +YC +pN +Qv +UU +lN +UU +Qv +oP +YC +YC +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +YC +Md +Qv +hx +RV +jX +Qv +yi +YC +YC +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +YC +JH +bo +UU +lN +UU +bo +FL +YC +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +zd +hx +hx +CC +Zq +CC +hx +hx +VR +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +zd +ly +wC +yo +Kk +Dq +wC +ly +VR +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +VV +PS +vn +CC +Zq +CC +sN +PS +wF +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +uk +YC +YC +YC +YC +ol +uM +sN +eB +Au +Fz +vn +cl +AH +YC +YC +YC +YC +uk +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +gt +PS +bJ +eB +Mn +tH +wd +PS +OM +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +gt +ce +vn +ar +FV +QT +vn +ce +OM +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +gt +oY +CC +CC +oV +NP +CC +jU +OM +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +Im +YC +YC +YC +lV +PS +RU +RU +FV +RU +RU +PS +QW +YC +YC +YC +vE +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +gt +ce +Bs +RU +Mn +RU +Ox +ce +OM +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +gt +PS +CC +Ut +oV +Hc +CC +PS +OM +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +gt +PS +tC +Ej +Mn +Wu +vn +PS +Pg +PS +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +uk +YC +YC +YC +ol +PS +vn +Fg +Zy +Mn +pM +Zq +nE +GS +YC +YC +uk +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +VV +PS +Wp +bA +LV +nO +oM +PS +MJ +Aq +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +Ku +PS +sN +Fg +Au +Fo +vn +PS +sE +lu +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +Hg +dw +wS +IZ +IZ +IZ +wS +EV +IZ +pB +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_tanker.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_tanker.dmm new file mode 100644 index 00000000000000..5e072dceee5354 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_ikwa_tanker.dmm @@ -0,0 +1,1234 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"bA" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"bB" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/sign/poster/random/directional/east, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"bJ" = ( +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"cl" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"dw" = ( +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 4 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 9 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"eP" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 10 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"gT" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"is" = ( +/obj/machinery/light/red/directional/north, +/obj/effect/spawner/random/salvage/crate_only/construction, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"lu" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"lN" = ( +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"mO" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"mS" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"nE" = ( +/obj/machinery/light/red/directional/west, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nO" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"oV" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"pB" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"pM" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/colony/texture, +/area/shuttle/salvaged_shuttle) +"pN" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"qr" = ( +/obj/effect/spawner/random/salvage/crate_only/construction, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/obj/structure/sign/poster/random/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"sm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"sE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/machinery/light/red/directional/south, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uM" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/three, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wd" = ( +/obj/machinery/light/red/directional/south, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/headlight/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"wF" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"wS" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/structure/shuttle_decoration/headlight/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/effect/spawner/random/salvage/crate_only/salvage, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"yo" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Aq" = ( +/obj/structure/shuttle_decoration/console/directional/north, +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Bp" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"CQ" = ( +/obj/structure/shuttle_decoration/liquid_tank/coolant, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Dq" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"DA" = ( +/obj/structure/lattice/catwalk, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Ed" = ( +/obj/structure/shuttle_decoration/ladder/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Ej" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 2 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"EV" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 2 + }, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"FL" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"FV" = ( +/obj/structure/lattice/catwalk, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"FY" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"GS" = ( +/obj/structure/shuttle_decoration/junction_box/directional/north, +/obj/structure/shuttle_decoration/ladder_black/directional/south, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Hc" = ( +/obj/structure/shuttle_decoration/junction_box/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Hg" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Hh" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/two, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/six, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"JH" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Kj" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/machinery/light/red/directional/south, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ku" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"KJ" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"KS" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor/super, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"LF" = ( +/obj/structure/shuttle_decoration/console/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"MJ" = ( +/obj/structure/chair/comfy/shuttle{ + pixel_y = 12 + }, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ox" = ( +/obj/effect/spawner/random/salvage/every_industrial_tank, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"OM" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Pg" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"PS" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"QW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Ra" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"RT" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"TR" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ul" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Vh" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"VV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Wj" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Wp" = ( +/obj/machinery/light/red/directional/north, +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Wu" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ww" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"Wz" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + pixel_x = 5 + }, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Xb" = ( +/obj/structure/shuttle_decoration/junction_box/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Yb" = ( +/obj/machinery/light/red/directional/south, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Yn" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 8 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"Zq" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ZL" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +Vh +Wj +Wj +IM +Wj +Wj +Vh +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +mS +IM +Kj +Kj +Ed +Kj +Kj +IM +Bp +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +Ww +KJ +zm +km +LV +vn +zm +Ul +kO +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +uk +YC +YC +YC +mS +IM +zm +ez +Yn +fI +zm +IM +Bp +YC +YC +YC +uk +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +zd +PS +vn +FY +KS +Hh +vn +PS +VR +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +VV +PS +CC +LF +IZ +CC +BV +PS +wF +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +sm +ce +is +nP +Mn +nP +wd +ce +IG +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +Ev +YC +YC +YC +sm +Xb +vn +Wz +Zy +qr +xx +ce +IG +YC +YC +YC +Ii +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +VV +RT +rb +CC +Zq +CC +CQ +eP +wF +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +zd +PS +gT +yo +Yb +Dq +gT +PS +VR +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +zd +hx +hx +CC +Zq +CC +hx +hx +VR +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +YC +YC +hx +UU +hx +bo +hx +UU +hx +YC +YC +YC +YC +YC +uk +"} +(13,1,1) = {" +YC +YC +YC +YC +YC +YC +pN +Ox +eB +bo +Fz +Ox +cl +YC +YC +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +YC +YC +pN +Ox +Ra +lN +uM +Ox +cl +YC +YC +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +YC +Md +Ox +eB +lN +Fz +Ox +yi +YC +YC +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +YC +JH +Ox +eB +bo +Fz +Ox +FL +YC +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +YC +pN +Ox +eB +FV +Fz +Ox +cl +YC +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +YC +Md +Ox +eB +Qv +Fz +Ox +yi +YC +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +YC +pN +Ox +Ra +lN +uM +Ox +cl +YC +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +uk +YC +YC +YC +YC +YC +pN +Ox +eB +FV +Fz +Ox +cl +YC +YC +YC +YC +YC +uk +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +YC +hx +UU +hx +bo +hx +UU +hx +YC +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +Ku +hx +hx +CC +Zq +CC +hx +hx +OM +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +Ku +ZL +wC +yo +Kk +Dq +wC +ly +OM +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +Im +YC +YC +YC +DA +PS +mO +CC +Zq +CC +vn +PS +QW +YC +YC +YC +vE +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +sm +ce +bJ +bB +Mn +TR +tC +ce +IG +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +sm +ce +CC +CC +oV +Hc +CC +ce +IG +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +DA +PS +km +Ej +Mn +TR +mO +PS +Pg +PS +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +uk +YC +YC +YC +zd +PS +vn +Fg +Zy +Mn +pM +Zq +nE +GS +YC +YC +uk +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +VV +PS +Wp +bA +nP +nO +wd +PS +MJ +Aq +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +Ku +PS +mO +Fg +nP +Wu +vn +PS +sE +lu +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +Hg +dw +wS +IZ +IZ +IZ +wS +EV +IZ +pB +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_cargo.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_cargo.dmm new file mode 100644 index 00000000000000..5868c49f74ff9f --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_cargo.dmm @@ -0,0 +1,1154 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"cP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/five, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/effect/spawner/random/salvage/crate_or_cargo, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"fe" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"fj" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/effect/spawner/random/salvage/every_industrial_tank, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/machinery/light/cold/directional/south, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"kZ" = ( +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"md" = ( +/obj/structure/shuttle_decoration/radiator/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"nk" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture, +/area/shuttle/salvaged_shuttle) +"pa" = ( +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/machinery/light/cold/dim/directional/west, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/crate_or_cargo, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"sj" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uK" = ( +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"uL" = ( +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/two, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"xs" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/machinery/light/cold/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ym" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"yu" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yx" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"BC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/machinery/light/blacklight/directional/south, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Dm" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/six, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Dp" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/every_small_tank, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/three, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/four, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ew" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Ex" = ( +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Gy" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/one, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Is" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/crate_or_cargo, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + pixel_x = -5 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Jp" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"KV" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/one, +/obj/structure/shuttle_decoration/landing_engine/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"LH" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/obj/structure/shuttle_decoration/landing_engine/directional/north, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"LJ" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"LY" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"No" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/effect/spawner/random/salvage/crate_or_cargo, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"Oe" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Ow" = ( +/obj/machinery/light/blacklight/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"RS" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Sv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/eight, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Tm" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"UE" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YR" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Zq" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/obj/structure/shuttle_decoration/junction_box/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +Sv +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ii +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +RS +md +rL +md +RS +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +HR +YC +YC +YC +UE +YC +LH +RS +Av +RS +KV +YC +sj +YC +YC +YC +HR +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +UE +YC +RS +Ow +iy +BW +RS +YC +sj +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +Ew +Gu +CU +CC +yi +yu +CU +Gu +kZ +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +jv +pa +UU +fe +nP +fe +UU +pa +xs +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +Fg +wC +ez +yi +BV +fI +IZ +yu +BV +yi +ez +wC +VR +YC +YC +vE +"} +(13,1,1) = {" +YC +YC +YC +Gy +gM +yx +Pp +Qv +NP +NP +HG +Qv +Pp +Md +gM +Xt +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +Gy +BV +No +yi +BV +HG +NP +NP +BV +IM +No +BV +Xt +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +Gy +Ex +No +Pp +tC +IG +NP +jX +Is +Pp +No +Ex +Xt +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +zd +ik +UU +NP +uL +NP +BV +IM +ez +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +zm +pH +zm +NP +HG +NP +BV +IM +VR +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +zd +ly +UU +RM +kO +Kk +BV +yi +VR +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +LV +yi +nN +Zy +nP +UU +UU +Pp +LJ +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +Dm +YC +YC +YC +YC +uK +IM +Tf +eB +kO +eB +Fz +IM +ym +YC +YC +YC +YC +Em +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +Jp +ez +LY +rb +IZ +xx +fj +ez +Jp +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +YC +nk +kP +IP +yu +IP +cP +km +YC +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +Tm +Jd +Oe +Dx +vn +YR +Du +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +HR +YC +YC +YC +YC +BC +Dp +YC +YC +YC +hx +Zq +YC +YC +YC +YC +HR +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ev +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_exolab.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_exolab.dmm new file mode 100644 index 00000000000000..81a43a617da463 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_exolab.dmm @@ -0,0 +1,1204 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/obj/machinery/light/cold/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 4; + pixel_x = -5 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"cP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/five, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/effect/spawner/random/salvage/crate_or_cargo/medical_or_research, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"iA" = ( +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"jj" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 8 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"kT" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"kZ" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"md" = ( +/obj/structure/shuttle_decoration/radiator/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"nk" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"nl" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/machinery/light/cold/directional/south, +/obj/effect/spawner/random/salvage/crate_or_cargo/medical_or_research, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/machinery/light/cold/dim/directional/west, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"sj" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"tj" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uK" = ( +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"uL" = ( +/obj/structure/shuttle_decoration/ladder/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/two, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"xs" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/paperwork/ancient, +/obj/item/paperwork/ancient{ + pixel_y = 5; + pixel_x = 14 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/machinery/light/cold/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ym" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"yu" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yx" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture, +/area/shuttle/salvaged_shuttle) +"zJ" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"BC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/machinery/light/blacklight/directional/south, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Dm" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/six, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Dp" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/every_small_tank, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ek" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/three, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/four, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ew" = ( +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Ex" = ( +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Gy" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/structure/table/reinforced/rglass, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/one, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + pixel_x = -5 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"JN" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"KV" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/one, +/obj/structure/shuttle_decoration/landing_engine/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"LH" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/obj/structure/shuttle_decoration/landing_engine/directional/north, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"LJ" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"No" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Oe" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Ow" = ( +/obj/machinery/light/blacklight/directional/north, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/machinery/light/cold/directional/north, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"RS" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Sv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/eight, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Tm" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"UE" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UN" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YR" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Zq" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/obj/structure/shuttle_decoration/junction_box/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +Sv +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ii +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +RS +md +iy +md +RS +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +HR +YC +YC +YC +UE +YC +LH +RS +Av +RS +KV +YC +sj +YC +YC +YC +HR +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +UE +YC +RS +Ow +BV +BW +RS +YC +sj +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +Ew +Gu +CU +yu +Pp +CC +CU +Gu +kZ +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +Ek +ez +iA +UU +jX +nP +jX +UU +iA +ez +jv +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +kT +Fg +yi +Kk +fI +IZ +fI +tC +yi +uL +tj +YC +YC +YC +vE +"} +(13,1,1) = {" +YC +YC +YC +YC +JN +yx +Pp +Qv +CC +IZ +xs +Qv +Pp +Md +jj +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +kT +Gy +yi +nl +fI +kO +HG +tC +IM +No +tj +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +Ek +Gy +Pp +Kk +IG +IZ +ce +tC +Pp +Xt +jv +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +zd +ik +UU +NP +nP +NP +gM +yi +ez +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +zm +pH +zm +CC +IZ +fI +tC +yi +Ex +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +zd +ly +wC +RM +kO +oM +tC +yi +VR +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +LV +yi +nN +Zy +nP +UU +UU +IM +LJ +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +Dm +YC +YC +YC +YC +uK +IM +Tf +eB +kO +fI +Fz +IM +ym +YC +YC +YC +YC +Em +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +zJ +ez +rL +bo +kO +xx +UN +ez +zJ +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +YC +nk +kP +IP +CC +IP +cP +km +YC +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +Tm +Jd +Oe +Dx +vn +YR +Du +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +HR +YC +YC +YC +YC +BC +Dp +YC +YC +YC +hx +Zq +YC +YC +YC +YC +HR +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ev +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_passenger.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_passenger.dmm new file mode 100644 index 00000000000000..59b4fa2ac7c7bb --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_meridian_passenger.dmm @@ -0,0 +1,1167 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"cP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/five, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"fe" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 8 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/console/directional/north, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"iA" = ( +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/machinery/light/cold/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kP" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"kZ" = ( +/obj/structure/railing/eva_handhold/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"md" = ( +/obj/structure/shuttle_decoration/radiator/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"nk" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"pa" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/machinery/light/cold/dim/directional/west, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"sj" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uK" = ( +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"uL" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/ladder/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/two, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"xs" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/machinery/light/cold/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ym" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"yu" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yx" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"BC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/machinery/light/blacklight/directional/south, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Dm" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/six, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Dp" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/every_small_tank, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/three, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/four, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ew" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Ex" = ( +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/shuttle_decoration/aux_engine/directional/west, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Gy" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/one, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/machinery/light/cold/directional/north, +/obj/structure/chair/comfy/shuttle, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + pixel_x = -5 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"KV" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/one, +/obj/structure/shuttle_decoration/landing_engine/directional/south, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"LH" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/obj/structure/shuttle_decoration/landing_engine/directional/north, +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"LJ" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"No" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Oe" = ( +/obj/structure/shuttle_decoration/headlight/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Ow" = ( +/obj/machinery/light/blacklight/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"QT" = ( +/obj/structure/railing/eva_handhold/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"RB" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/machinery/light/cold/directional/north, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"RS" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Sv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/eight, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Tm" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/salvage/small_fuel_tanks, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"UE" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UN" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/crate_only/civilian_supply, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YR" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Zq" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/obj/structure/shuttle_decoration/junction_box/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +Sv +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ii +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +RS +md +ce +md +RS +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +HR +YC +YC +YC +UE +YC +LH +RS +Av +RS +KV +YC +sj +YC +YC +YC +HR +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +UE +YC +RS +Ow +Kk +BW +RS +YC +sj +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +Ew +Gu +CU +CC +yi +yu +CU +Gu +kZ +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +jv +iA +UU +fe +nP +fe +UU +iA +xs +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +YC +Fg +yi +pa +fI +kO +NP +tC +yi +uL +YC +YC +YC +YC +vE +"} +(13,1,1) = {" +YC +YC +YC +YC +YC +yx +Pp +Qv +fI +IZ +HG +Qv +Pp +Md +YC +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +YC +Gy +yi +pa +fI +IZ +HG +tC +bo +No +YC +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +Gy +Pp +pa +IG +IZ +jX +tC +Pp +Xt +YC +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +QT +ik +oM +CC +kO +CC +gM +bo +Ex +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +zm +pH +zm +yu +kO +NP +tC +bo +VR +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +QT +ly +wC +RM +kO +xx +tC +yi +VR +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +LV +yi +nN +Zy +nP +UU +UU +Pp +LJ +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +Dm +YC +YC +YC +YC +uK +bo +Tf +eB +kO +CC +Fz +yi +ym +YC +YC +YC +YC +Em +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +ez +RB +BV +UN +kO +xx +rL +RB +ez +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +YC +nk +kP +IP +CC +IP +cP +km +YC +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +Tm +Jd +Oe +Dx +vn +YR +Du +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +HR +YC +YC +YC +YC +BC +Dp +YC +YC +YC +hx +Zq +YC +YC +YC +YC +HR +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ev +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm index 4a2d0cdb1da224..1a0aa2142da09d 100644 --- a/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_scrappie.dmm @@ -1,11 +1,10 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "bo" = ( -/obj/structure/shuttle_decoration, -/turf/template_noop, -/area/template_noop) +/obj/structure/shuttle_decoration/liquid_tank/coolant, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) "ce" = ( /obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/power/apc/worn_out/directional/north, /turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "cP" = ( @@ -22,14 +21,33 @@ "ez" = ( /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/structure/chair/comfy/shuttle, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"fe" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) "fI" = ( -/obj/structure/marker_beacon/burgundy, -/turf/closed/wall/mineral/nanocarbon/yellow, +/obj/effect/spawner/random/salvage/crate_or_cargo/civilian_supply, +/turf/open/floor/plating/aluminum, /area/shuttle/salvaged_shuttle) "gM" = ( /obj/structure/shuttle_decoration/wall_plate/gold_foil, /turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 4 + }, +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) "ik" = ( /obj/structure/shuttle_decoration/wall_plate/gold_foil{ dir = 8 @@ -41,27 +59,36 @@ /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) "iA" = ( -/obj/structure/shuttle_decoration/bullbar/directional/east, -/turf/closed/wall/mineral/nanocarbon/yellow, +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "jv" = ( -/obj/effect/baseturf_helper/salvage_shuttle, /obj/structure/shuttle_decoration/rcs/directional/north, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/machinery/light/cold/directional/south, +/obj/effect/spawner/random/salvage/crate_or_cargo/civilian_supply, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) "km" = ( -/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/south, +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, +/obj/structure/titanium_structure, /turf/template_noop, -/area/template_noop) +/area/shuttle/salvaged_shuttle) "kO" = ( -/turf/open/floor/catwalk_floor/colony_fabricator, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, /area/shuttle/salvaged_shuttle) "kP" = ( /obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "kZ" = ( -/obj/structure/marker_beacon/burgundy, /obj/structure/railing/eva_handhold/directional/south, /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) @@ -75,14 +102,13 @@ /obj/structure/shuttle_decoration/radiator/directional/west, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) -"mH" = ( -/turf/open/floor/iron/colony, -/area/shuttle/salvaged_shuttle) -"nw" = ( -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 +"nk" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 }, -/turf/open/floor/plating/nanocarbon, +/obj/structure/lattice, +/obj/structure/titanium_structure, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "nN" = ( /obj/structure/shuttle_decoration/wall_plate/gold_foil{ @@ -91,36 +117,46 @@ /turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) "nP" = ( -/obj/structure/mineral_door/manual_colony_door, -/turf/open/floor/iron/colony/texture, +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture, /area/shuttle/salvaged_shuttle) "oM" = ( -/obj/structure/marker_beacon/jade, -/turf/closed/wall/mineral/nanocarbon/yellow, +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow, +/obj/structure/titanium_structure, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "pa" = ( -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ dir = 1 }, -/turf/closed/wall/mineral/nanocarbon/yellow, +/obj/structure/titanium_structure, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "pH" = ( /obj/machinery/light/cold/dim/directional/west, -/turf/open/floor/catwalk_floor/colony_fabricator, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, /area/shuttle/salvaged_shuttle) "rb" = ( /turf/open/floor/plating/aluminum, /area/shuttle/salvaged_shuttle) "rL" = ( -/obj/structure/shuttle_decoration/bullbar/directional/east, -/turf/closed/wall/mineral/nanocarbon/black, +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "sj" = ( /obj/structure/shuttle_decoration/wall_plate/armor, /turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) +"sl" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) "tC" = ( -/obj/structure/girder/reinforced, +/obj/structure/titanium_structure, /turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "uk" = ( @@ -142,6 +178,7 @@ /area/shuttle/salvaged_shuttle) "vn" = ( /obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "vE" = ( @@ -160,10 +197,11 @@ /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "xx" = ( -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/black{ - dir = 6 +/obj/machinery/light/cold/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 1 }, -/turf/closed/wall/mineral/nanocarbon/black, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "yi" = ( /turf/open/floor/plating/nanocarbon, @@ -187,42 +225,34 @@ }, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) -"yZ" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/plating/nanocarbon, -/area/shuttle/salvaged_shuttle) "zd" = ( /obj/structure/railing/eva_handhold/directional/north, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "zm" = ( -/obj/structure/mineral_door/manual_colony_door, +/obj/structure/mineral_door/manual_colony_door/shuttle, /turf/open/floor/iron/colony/white/texture, /area/shuttle/salvaged_shuttle) "Av" = ( -/obj/effect/mapping_helpers/salvage_anchor/end/four, -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, -/turf/closed/wall/mineral/nanocarbon/black, +/obj/structure/shuttle_decoration/liquid_tank/battery, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "BC" = ( +/obj/structure/lattice, /obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/yellow{ dir = 5 }, -/turf/closed/wall/mineral/nanocarbon/yellow, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "BV" = ( -/turf/open/floor/iron/colony/texture, +/turf/open/floor/iron/colony/white/texture, /area/shuttle/salvaged_shuttle) "BW" = ( /obj/machinery/light/blacklight/directional/south, -/turf/open/floor/iron/colony, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "CC" = ( -/turf/open/floor/iron/colony/bolts, -/area/shuttle/salvaged_shuttle) -"CO" = ( -/obj/structure/reagent_dispensers/fueltank/large, -/turf/open/floor/plating/aluminum, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "CU" = ( /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, @@ -235,16 +265,23 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Dp" = ( -/obj/effect/mapping_helpers/salvage_anchor/end/five, -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ - dir = 1 +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/yellow{ + dir = 4 }, -/turf/closed/wall/mineral/nanocarbon/yellow, +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/structure/titanium_structure, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "Du" = ( /obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, /turf/template_noop, /area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) "Em" = ( /obj/structure/railing/eva_handhold/directional/south, /obj/structure/railing/eva_handhold/directional/north, @@ -260,7 +297,6 @@ /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) "Ew" = ( -/obj/structure/marker_beacon/jade, /obj/structure/railing/eva_handhold/directional/north, /turf/closed/wall/mineral/nanocarbon/nodiagonal/black, /area/shuttle/salvaged_shuttle) @@ -292,6 +328,12 @@ }, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) "HR" = ( /obj/structure/railing/eva_handhold/directional/south, /obj/structure/railing/eva_handhold/directional/north, @@ -305,38 +347,35 @@ /obj/structure/marker_beacon/jade, /turf/open/floor/engine/anchor_jack, /area/shuttle/salvaged_shuttle) -"Im" = ( -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/colony/bolts, -/area/shuttle/salvaged_shuttle) "IG" = ( /obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/colony/bolts, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "IM" = ( /obj/structure/grille, /turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "IP" = ( -/obj/machinery/computer/old{ - dir = 8 +/obj/structure/chair/comfy/shuttle{ + dir = 4; + pixel_x = -5 }, -/turf/open/floor/iron/colony, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "IZ" = ( -/obj/structure/reagent_dispensers/fueltank/large, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/colony/bolts, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, /area/shuttle/salvaged_shuttle) "Jd" = ( -/obj/structure/marker_beacon/jade, +/obj/effect/mapping_helpers/salvage_anchor/end/five, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) -"Kv" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 8 +"Kk" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 1 }, -/turf/open/floor/plating/nanocarbon, +/turf/template_noop, /area/shuttle/salvaged_shuttle) "KV" = ( /obj/effect/mapping_helpers/salvage_anchor/end/one, @@ -354,10 +393,6 @@ /obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) -"LK" = ( -/obj/machinery/power/micro_reactor, -/turf/open/floor/plating, -/area/shuttle/salvaged_shuttle) "LV" = ( /obj/effect/mapping_helpers/salvage_anchor/end/six, /obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ @@ -383,31 +418,42 @@ /obj/structure/shuttle_decoration/extinguisher/directional/south, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) "Oe" = ( /obj/structure/shuttle_decoration/headlight/directional/east, +/obj/structure/shuttle_decoration/console/directional/west, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) "Ow" = ( /obj/machinery/light/blacklight/directional/north, -/turf/open/floor/iron/colony, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "Pp" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/colony/bolts, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, /area/shuttle/salvaged_shuttle) "QT" = ( /obj/structure/railing/eva_handhold/directional/north, /turf/closed/wall/mineral/nanocarbon/yellow, /area/shuttle/salvaged_shuttle) -"RM" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +"RB" = ( +/obj/structure/railing{ + dir = 1 }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"RM" = ( /obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/colony/bolts, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/colony/nanocarbon, /area/shuttle/salvaged_shuttle) "RS" = ( /turf/closed/wall/mineral/nanocarbon/black, @@ -426,6 +472,13 @@ /obj/structure/shuttle_decoration/wall_plate/plastamic, /turf/closed/wall/mineral/aluminum, /area/shuttle/salvaged_shuttle) +"Tm" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) "UE" = ( /obj/structure/shuttle_decoration/wall_plate/armor{ dir = 1 @@ -451,17 +504,25 @@ /obj/structure/shuttle_decoration/wall_plate/nanocarbon/black, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) -"Yj" = ( -/obj/machinery/portable_atmospherics/canister/freon, -/turf/open/floor/plating/nanocarbon, -/area/shuttle/salvaged_shuttle) "YC" = ( /turf/template_noop, /area/template_noop) "YR" = ( -/obj/structure/marker_beacon/burgundy, +/obj/effect/mapping_helpers/salvage_anchor/end/four, /turf/closed/wall/mineral/nanocarbon/black, /area/shuttle/salvaged_shuttle) +"Zq" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/black{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/obj/structure/shuttle_decoration/junction_box/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) (1,1,1) = {" YC @@ -597,11 +658,11 @@ YC YC YC YC -Jd +RS md -Kv +tC md -YR +RS YC YC YC @@ -619,9 +680,9 @@ YC UE YC LH -mH -nw -mH +CC +Av +CC KV YC sj @@ -641,7 +702,7 @@ UE YC RS Ow -LK +yi BW RS YC @@ -657,7 +718,7 @@ YC YC YC YC -YC +pa Ew Gu CU @@ -667,7 +728,7 @@ yu CU Gu kZ -YC +km YC YC YC @@ -678,17 +739,17 @@ YC YC YC YC -YC +Kk jv -yZ +Pp Tf -IG +fe kO -Im +jX Fz -yZ +yi xs -YC +Du YC YC YC @@ -699,19 +760,19 @@ uk YC YC YC -YC +iA Fg yi tC -CO -rb +NP rb +NP tC yi uL +rL YC YC -bo YC vE "} @@ -720,19 +781,19 @@ YC YC YC YC -YC +iA yx yi -tC -rb -rb +Qv +fI +NP rb -tC +Qv yi Md +oM YC YC -km YC YC "} @@ -741,17 +802,17 @@ YC YC YC YC -YC +Kk UN ce tC -rb +fI rb rb tC -yi +Pp No -YC +Du YC YC YC @@ -762,17 +823,17 @@ YC YC YC YC -YC +pa Gy yi Tf +IG IZ -kO -Im +jX Fz yi Xt -YC +km YC YC YC @@ -783,7 +844,7 @@ HR YC YC YC -YC +RB QT ik UU @@ -793,7 +854,7 @@ UU gM IM Ex -YC +rL YC YC YC @@ -804,17 +865,17 @@ YC YC YC YC -YC +sl zm pH zm CC -kO -CC +IZ +HG Fz yi iy -YC +rL YC YC YC @@ -825,17 +886,17 @@ YC YC YC YC -YC +RB zd ly wC -IG +fe kO -Im +xx Fz -yi +bo VR -YC +km YC YC YC @@ -846,17 +907,17 @@ YC YC YC YC -YC +pa LV yi nN -UU +Zy nP UU gM IM LJ -YC +km YC YC YC @@ -867,17 +928,17 @@ Dm YC YC YC -YC +Tm uK -Yj +bo Tf -CC +eB kO CC Fz yi ym -YC +rL YC YC YC @@ -888,17 +949,17 @@ YC YC YC YC -YC -oM +iA +ez ez CU RM -kO -Pp +IZ +xx CU ez -fI -YC +ez +oM YC YC YC @@ -911,13 +972,13 @@ YC YC YC YC -Du +nk kP IP CC IP cP -Du +km YC YC YC @@ -931,15 +992,15 @@ YC YC YC YC -pa -Du +YC +Tm Jd Oe -tC +Dx vn YR Du -Xt +YC YC YC YC @@ -952,15 +1013,15 @@ HR YC YC YC -Dp -Du YC +BC +Dp YC YC YC +hx +Zq YC -Du -Av YC YC YC @@ -973,15 +1034,15 @@ YC YC YC YC -BC -iA YC YC YC YC YC -rL -xx +YC +YC +YC +YC YC YC YC diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe.dmm new file mode 100644 index 00000000000000..83b649c0829ef5 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe.dmm @@ -0,0 +1,894 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/shuttle_decoration/junction_box/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/south, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/structure/shuttle_access_panel, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/shuttle_decoration/liquid_tank/coolant, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 4 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/three, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/two, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/six, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/structure/shuttle_access_panel, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery/shipmind, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/structure/engine_covers/ion_plate{ + dir = 4 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Me" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"PS" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 8 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"QB" = ( +/obj/structure/engine_covers/ion_plate{ + dir = 8 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"Zq" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +uk +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +uk +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +Ev +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ii +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +NP +kO +Mn +YC +YC +YC +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +YC +YC +QB +YC +NP +QB +Mn +YC +QB +YC +YC +YC +YC +YC +uk +"} +(13,1,1) = {" +YC +YC +YC +YC +YC +YC +oM +Qv +IM +IM +IM +Qv +yi +YC +YC +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +YC +YC +ce +tC +fI +rb +PS +tC +ce +YC +YC +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +YC +Md +YC +IZ +km +jX +YC +Md +YC +YC +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +YC +YC +YC +ez +BV +UU +YC +YC +YC +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +zm +Me +Fz +CC +Zq +HG +Fz +hx +iy +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +zd +ly +wC +IG +Kk +xx +wC +bo +VR +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +Zy +nP +vn +YC +YC +YC +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +uk +YC +YC +YC +YC +YC +YC +YC +eB +LV +eB +YC +YC +YC +YC +YC +YC +YC +uk +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +Im +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +vE +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +uk +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +uk +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe_mining.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe_mining.dmm new file mode 100644 index 00000000000000..8daea23f7d4ff3 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_solestra_probe_mining.dmm @@ -0,0 +1,896 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/south, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"km" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 4 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/three, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/obj/structure/shuttle_decoration/rcs/directional/south, +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/obj/structure/shuttle_decoration/wall_plate/gold_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/two, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/obj/effect/mapping_helpers/salvage_anchor/six, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery/shipmind, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/east, +/obj/structure/shuttle_decoration/junction_box/directional/west, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/structure/engine_covers/ion_plate{ + dir = 4 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"NV" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"PS" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black{ + dir = 8 + }, +/obj/structure/titanium_structure, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"QB" = ( +/obj/structure/engine_covers/ion_plate{ + dir = 8 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"Zq" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/rcs/directional/north, +/obj/structure/shuttle_decoration/wall_plate/gold_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +uk +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +uk +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +Ev +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +Ii +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +NP +YC +Mn +YC +YC +YC +YC +YC +YC +YC +YC +"} +(11,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +NP +kO +Mn +YC +YC +YC +YC +YC +YC +YC +YC +"} +(12,1,1) = {" +uk +YC +YC +YC +YC +YC +QB +YC +IM +fI +IM +YC +QB +YC +YC +YC +YC +YC +uk +"} +(13,1,1) = {" +YC +YC +YC +YC +YC +YC +oM +Qv +IM +bo +IM +Qv +yi +YC +YC +YC +YC +YC +YC +"} +(14,1,1) = {" +YC +YC +YC +YC +YC +YC +ce +tC +PS +rb +PS +tC +ce +YC +YC +YC +YC +YC +YC +"} +(15,1,1) = {" +YC +YC +YC +YC +YC +YC +Md +NV +BV +km +BV +Fz +Md +YC +YC +YC +YC +YC +YC +"} +(16,1,1) = {" +HR +YC +YC +YC +YC +YC +YC +Fz +ez +BV +UU +NV +YC +YC +YC +YC +YC +YC +MV +"} +(17,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +zd +CC +Zq +HG +iy +YC +YC +YC +YC +YC +YC +YC +"} +(18,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +hx +IG +Kk +xx +wC +YC +YC +YC +YC +YC +YC +YC +"} +(19,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +jX +Zy +nP +vn +zm +YC +YC +YC +YC +YC +YC +YC +"} +(20,1,1) = {" +uk +YC +YC +YC +YC +YC +YC +YC +eB +LV +eB +YC +YC +YC +YC +YC +YC +YC +uk +"} +(21,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +Im +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +vE +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +uk +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +uk +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_cargo.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_cargo.dmm new file mode 100644 index 00000000000000..7dc4dea49ae1ce --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_cargo.dmm @@ -0,0 +1,1405 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/structure/shuttle_decoration/radiator/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"by" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"cP" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/five, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"er" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/effect/spawner/random/salvage/crate_only, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eJ" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"eN" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"fe" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"fg" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"gq" = ( +/obj/machinery/light/red/directional/south, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"hq" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"iA" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"je" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"jH" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/one, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/structure/shuttle_decoration/ladder/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"kv" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kP" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kZ" = ( +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"md" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"mw" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"nk" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 9 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/machinery/computer/old{ + dir = 8 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1; + pixel_y = -5 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"pa" = ( +/obj/structure/shuttle_decoration/ladder/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"po" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"pZ" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"qj" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"rw" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"sc" = ( +/obj/machinery/light/red/directional/east, +/obj/effect/spawner/random/salvage/crate_only, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"sj" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/red/directional/south, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"sl" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"su" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"sO" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uK" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"uL" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"vg" = ( +/obj/machinery/light/red/directional/east, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/machinery/light/red/directional/east, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/two, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"xs" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xv" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/turf/open/floor/iron/colony/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/obj/structure/railing, +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"ym" = ( +/obj/structure/chair/comfy/shuttle{ + pixel_y = 12 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yu" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"yx" = ( +/obj/structure/titanium_structure, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/turf/open/floor/plating/nanocarbon/exterior/primary_colour, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/machinery/computer/old{ + dir = 8 + }, +/obj/machinery/light/red/directional/south, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Aq" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"AE" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"AS" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Bz" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"BC" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 4 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Dm" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/six, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Dp" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"DB" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/three, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/four, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ew" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ex" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 2 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Ez" = ( +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 10 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Fw" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"FH" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/lattice/catwalk, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Gy" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"HM" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/one, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/structure/shuttle_decoration/junction_box/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1; + pixel_y = -5 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/effect/spawner/random/salvage/container, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"JD" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"KV" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"LH" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"LJ" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 4 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/structure/shuttle_decoration/radiator/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"No" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Oe" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive/lithium, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ow" = ( +/obj/structure/shuttle_decoration/console/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"PS" = ( +/obj/structure/shuttle_decoration/console/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"QB" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"QT" = ( +/obj/structure/railing, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"RB" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/extinguisher/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"RS" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Sv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/eight, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/shuttle_decoration/liquid_tank/coolant, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Tm" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"TB" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"UE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"UN" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/structure/railing, +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"VJ" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 10 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Wc" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Yt" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YR" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 9 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Zq" = ( +/obj/structure/shuttle_decoration/rcs, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +Ex +YC +YC +fI +YC +fI +YC +YC +Ex +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +Sv +YC +YC +YR +Ex +YC +YC +fI +yx +fI +YC +YC +Ex +VR +YC +YC +Ii +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +po +ik +Fg +YC +Jd +Jd +Jd +YC +nk +ik +mw +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +tC +je +fe +YC +Jd +Jd +Jd +YC +QB +jH +FH +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +ik +ik +AS +YC +fI +yx +fI +YC +Yt +ik +ik +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +HR +YC +YC +bo +UU +yu +YC +gM +gM +gM +YC +jX +UU +Md +YC +YC +HR +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +bo +UE +Bz +YC +gM +gM +gM +YC +JD +sj +Md +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +No +YC +pa +kZ +Gu +YC +fI +yx +fI +YC +BW +kZ +km +YC +No +YC +YC +"} +(11,1,1) = {" +YC +YC +No +ce +Du +UU +LV +YC +Jd +Jd +Jd +YC +AE +UU +Du +ce +No +YC +YC +"} +(12,1,1) = {" +uk +YC +KV +iy +BC +UU +Mn +YC +Jd +Jd +Jd +YC +NP +UU +cP +iy +er +YC +vE +"} +(13,1,1) = {" +YC +YC +pZ +jv +RB +zd +HG +YC +fI +yx +fI +YC +DB +zd +oM +jv +xv +YC +YC +"} +(14,1,1) = {" +YC +YC +eN +uL +RB +UN +su +YC +gM +gM +gM +YC +BW +fg +oM +Ew +hx +YC +YC +"} +(15,1,1) = {" +YC +YC +RM +pH +Qv +rw +LV +YC +gM +gM +gM +YC +AE +Ez +Qv +gq +eB +YC +YC +"} +(16,1,1) = {" +HR +YC +cP +Oe +sl +QT +su +YC +fI +yx +fI +YC +BW +hq +rL +Im +Kk +YC +MV +"} +(17,1,1) = {" +YC +YC +cP +LJ +sl +yi +fI +fI +rb +yx +rb +fI +fI +zd +rL +LJ +BC +YC +YC +"} +(18,1,1) = {" +YC +YC +xs +BV +RB +vg +zd +wC +Wc +md +Dx +Dx +Dx +UU +eN +BV +ly +YC +YC +"} +(19,1,1) = {" +YC +YC +qj +ce +ik +UU +Pp +UU +Zy +nP +kP +CC +kP +ym +PS +ce +eJ +YC +YC +"} +(20,1,1) = {" +Dm +YC +YC +YC +Du +uK +kO +Tf +UU +ez +xx +Fz +xx +ym +Ow +YC +YC +YC +Em +"} +(21,1,1) = {" +YC +YC +YC +YC +iA +UU +Pp +UU +UU +ez +xx +sc +Av +ez +HM +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +Xt +IZ +xx +kP +UU +UU +IP +UU +Wc +Fw +ik +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +by +IZ +Tm +Fz +IP +kO +vn +kO +Pp +vn +Pp +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +HR +YC +YC +IG +kP +kO +Dp +ik +UU +UU +UU +UU +Gy +Zq +YC +YC +HR +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +Xt +IZ +CC +zm +ik +Aq +TB +VJ +IM +ik +ik +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +LH +ik +kP +Dp +Dx +YC +YC +YC +YC +CU +sO +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +Dx +CC +nN +Dx +YC +YC +YC +YC +kv +RS +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +ik +Dx +Dx +ik +YC +YC +YC +YC +YC +YC +YC +YC +Ev +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/_maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_salvage.dmm b/_maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_salvage.dmm new file mode 100644 index 00000000000000..7dfa98c03af539 --- /dev/null +++ b/_maps/shuttles/~doppler_shuttles/salvage/salvage_vautour_salvage.dmm @@ -0,0 +1,1361 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"bv" = ( +/obj/structure/shuttle_decoration/console/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ce" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 4 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"cC" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/extinguisher/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"cP" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 4 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"dD" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/five, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"ez" = ( +/obj/effect/spawner/random/salvage/every_small_tank, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"eB" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"fe" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"fI" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"gM" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 10 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"gX" = ( +/obj/machinery/light/red/directional/south, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"hx" = ( +/obj/structure/shuttle_decoration/radiator/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"ik" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/effect/mapping_helpers/salvage_anchor/end/seven, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"iy" = ( +/obj/machinery/light/red/directional/east, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"iz" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"iA" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"jv" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"jX" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"km" = ( +/obj/structure/shuttle_decoration/ladder/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"kO" = ( +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kP" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"kZ" = ( +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"ly" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"lO" = ( +/obj/effect/spawner/random/salvage/crate_only/salvage, +/obj/machinery/light/red/directional/east, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"md" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"mj" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"nk" = ( +/turf/open/floor/iron/colony/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"nN" = ( +/obj/structure/shuttle_decoration/extinguisher/directional/east, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"nP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1; + pixel_y = -5 + }, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"oM" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"pa" = ( +/obj/structure/shuttle_decoration/ladder/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"pH" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"qp" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"qY" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/three, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"rb" = ( +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"rL" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"sj" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/red/directional/south, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"sl" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 8 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"tC" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"uk" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/seven, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"uK" = ( +/obj/structure/shuttle_decoration/liquid_tank/battery, +/obj/structure/shuttle_decoration/wall_plate/plastamic, +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"uL" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"vn" = ( +/obj/machinery/light/red/directional/east, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"vE" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/two, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"wC" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 9 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"wJ" = ( +/obj/structure/shuttle_decoration/bullbar/directional/east, +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xs" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/rcs/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"xx" = ( +/obj/machinery/power/shuttle_engine/propulsion/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/thruster_nozzle{ + dir = 8 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yi" = ( +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"ym" = ( +/obj/structure/chair/comfy/shuttle{ + pixel_y = 12 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"yu" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"yx" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/obj/structure/shuttle_decoration/bullbar/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"zd" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1; + pixel_y = -5 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"zl" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"zm" = ( +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo/salvage, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"Aj" = ( +/obj/machinery/computer/old{ + dir = 8 + }, +/obj/machinery/light/red/directional/south, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Aq" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 4 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"Av" = ( +/obj/machinery/exoscanner/shuttle_part/radio_dish/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"AC" = ( +/obj/machinery/exoscanner/shuttle_part/radar_panel/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Bw" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/six, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"BC" = ( +/obj/structure/shuttle_decoration/headlight/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"BV" = ( +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"BW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 9 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"CC" = ( +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"CU" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"Dm" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/six, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Dp" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Du" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Dx" = ( +/obj/structure/window/fulltile/salvage_shuttle, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Em" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/three, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ev" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/four, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ew" = ( +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"Ex" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"EQ" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour{ + dir = 10 + }, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Fg" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Fz" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Gu" = ( +/obj/structure/lattice/catwalk, +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/obj/structure/railing/eva_handhold/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Gy" = ( +/obj/structure/shuttle_decoration/liquid_tank/reactor, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"HG" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"HR" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Ii" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/one, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Im" = ( +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/black, +/area/shuttle/salvaged_shuttle) +"IG" = ( +/obj/structure/shuttle_decoration/junction_box/directional/west, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"IM" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/four, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black, +/area/shuttle/salvaged_shuttle) +"IP" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour{ + dir = 1 + }, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"IZ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Jd" = ( +/obj/structure/shuttle_decoration/radiator/directional/south, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Kk" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"KV" = ( +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 2 + }, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"LH" = ( +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"LJ" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/one, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"LV" = ( +/obj/effect/spawner/random/salvage/crate_only/salvage, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Md" = ( +/obj/machinery/light/red/directional/west, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Mn" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/obj/structure/railing/eva_handhold/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"MV" = ( +/obj/docking_port/mobile/salvage, +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"No" = ( +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Nw" = ( +/obj/structure/lattice/catwalk, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"NP" = ( +/obj/machinery/atmos_shield_gen/active{ + dir = 1 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Oe" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle/interior, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Ow" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Pp" = ( +/obj/structure/mineral_door/manual_colony_door/shuttle, +/turf/open/floor/iron/colony/white/texture/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Pq" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/armor{ + dir = 1 + }, +/obj/structure/shuttle_decoration/eva_catwalks/directional/north, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"PS" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil, +/obj/structure/shuttle_decoration/extinguisher/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"PU" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive/lithium, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qv" = ( +/obj/structure/shuttle_access_panel, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Qx" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"QB" = ( +/obj/machinery/atmos_shield_gen/active, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"QT" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/iron/colony/bolts/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Rr" = ( +/obj/machinery/computer/old{ + dir = 8 + }, +/turf/open/floor/iron/colony/nanocarbon, +/area/shuttle/salvaged_shuttle) +"RB" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"RM" = ( +/obj/structure/lattice, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour, +/obj/structure/shuttle_decoration/eva_catwalks/directional/south, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"RS" = ( +/turf/closed/wall/mineral/nanocarbon/black, +/area/shuttle/salvaged_shuttle) +"Sd" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/eight, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Sv" = ( +/obj/structure/railing/eva_handhold/directional/south, +/obj/structure/railing/eva_handhold/directional/north, +/obj/effect/mapping_helpers/salvage_anchor/eight, +/obj/structure/marker_beacon/jade, +/turf/open/floor/engine/anchor_jack, +/area/shuttle/salvaged_shuttle) +"Tf" = ( +/obj/structure/shuttle_decoration/wall_plate/plastamic{ + dir = 1 + }, +/obj/structure/shuttle_decoration/liquid_tank/coolant, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Tm" = ( +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"UE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/red/directional/north, +/turf/open/floor/plating/nanocarbon/exterior/standard, +/area/shuttle/salvaged_shuttle) +"UN" = ( +/obj/effect/spawner/random/salvage/nanocarbon_shards, +/turf/open/floor/plating/aluminum, +/area/shuttle/salvaged_shuttle) +"UU" = ( +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) +"UW" = ( +/obj/structure/shuttle_decoration/rcs, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"VR" = ( +/obj/structure/lattice, +/obj/structure/titanium_structure, +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour, +/turf/template_noop, +/area/shuttle/salvaged_shuttle) +"Wc" = ( +/obj/machinery/power/shuttle_engine/heater/salvage{ + dir = 8 + }, +/obj/structure/engine_covers/heater_cover{ + dir = 4 + }, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Wg" = ( +/obj/effect/mapping_helpers/salvage_anchor/end/five, +/turf/closed/wall/mineral/nanocarbon/primary_colour, +/area/shuttle/salvaged_shuttle) +"WE" = ( +/obj/structure/shuttle_decoration/console/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Xt" = ( +/obj/effect/spawner/random/salvage/interior_trash_n_debris, +/turf/open/floor/catwalk_floor/colony_fabricator/nanocarbon, +/area/shuttle/salvaged_shuttle) +"Yt" = ( +/obj/structure/shuttle_decoration/eva_catwalks/directional/east, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"YC" = ( +/turf/template_noop, +/area/template_noop) +"YJ" = ( +/obj/structure/shuttle_decoration/liquid_tank/explosive, +/turf/open/floor/plating/nanocarbon, +/area/shuttle/salvaged_shuttle) +"YR" = ( +/obj/structure/shuttle_decoration/junction_box/directional/south, +/obj/structure/shuttle_decoration/rcs/directional/north, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour, +/area/shuttle/salvaged_shuttle) +"Zq" = ( +/obj/structure/shuttle_decoration/wall_plate/silver_foil{ + dir = 1 + }, +/obj/effect/mapping_helpers/salvage_anchor/end/two, +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour, +/area/shuttle/salvaged_shuttle) +"Zy" = ( +/obj/structure/shuttle_decoration/console/directional/south, +/turf/closed/wall/mineral/aluminum, +/area/shuttle/salvaged_shuttle) + +(1,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(2,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(3,1,1) = {" +YC +YC +YC +YC +YC +KV +YC +YC +YC +YC +YC +YC +YC +KV +YC +YC +YC +YC +YC +"} +(4,1,1) = {" +YC +Sv +YC +YC +wC +KV +YC +YC +YC +YC +YC +YC +YC +KV +EQ +YC +YC +Ii +YC +"} +(5,1,1) = {" +YC +YC +YC +YC +zl +yu +gM +YC +YC +YC +YC +YC +BW +yu +VR +YC +YC +YC +YC +"} +(6,1,1) = {" +YC +YC +YC +YC +md +Sd +jX +YC +YC +YC +YC +YC +Im +LJ +Ex +YC +YC +YC +YC +"} +(7,1,1) = {" +YC +YC +YC +YC +yu +yu +Kk +YC +YC +YC +YC +YC +Pq +yu +yu +YC +YC +YC +YC +"} +(8,1,1) = {" +YC +HR +YC +YC +hx +UU +fI +YC +YC +YC +YC +YC +Mn +UU +Jd +YC +YC +HR +YC +"} +(9,1,1) = {" +YC +YC +YC +YC +hx +UE +RM +YC +YC +YC +YC +YC +mj +sj +Jd +YC +YC +YC +YC +"} +(10,1,1) = {" +YC +YC +kZ +YC +pa +Ew +Gu +YC +YC +YC +YC +YC +bo +Ew +km +YC +kZ +YC +YC +"} +(11,1,1) = {" +YC +YC +kZ +BV +Tm +UU +IZ +YC +YC +YC +YC +YC +Nw +UU +Tm +BV +kZ +YC +YC +"} +(12,1,1) = {" +uk +YC +jv +xx +eB +UU +QB +yi +NP +BC +QB +tC +NP +UU +rL +xx +uL +YC +vE +"} +(13,1,1) = {" +YC +YC +ik +Wc +iA +Md +HG +zm +rb +Md +rb +UN +zm +Md +Du +Wc +Zq +YC +YC +"} +(14,1,1) = {" +YC +YC +Ow +YJ +iA +No +rb +rb +zm +No +UN +zm +rb +No +Du +Qx +iz +YC +YC +"} +(15,1,1) = {" +YC +YC +PS +LH +Qv +kO +zm +rb +rb +kO +rb +zm +rb +Xt +Qv +gX +cC +YC +YC +"} +(16,1,1) = {" +HR +YC +rL +PU +RB +QT +rb +zm +zm +No +zm +rb +zm +No +IP +Gy +qp +YC +MV +"} +(17,1,1) = {" +YC +YC +rL +ce +RB +yi +zm +zm +rb +iy +HG +rb +zm +iy +IP +ce +eB +YC +YC +"} +(18,1,1) = {" +YC +YC +ly +cP +iA +iy +yi +tC +IG +nN +Dx +Dx +Dx +UU +Ow +cP +xs +YC +YC +"} +(19,1,1) = {" +YC +YC +Bw +BV +yu +UU +Pp +UU +Zy +nP +kP +CC +kP +ym +bv +BV +qY +YC +YC +"} +(20,1,1) = {" +Dm +YC +YC +YC +Tm +uK +kO +Tf +UU +LV +nk +Fz +nk +ym +WE +YC +YC +YC +Em +"} +(21,1,1) = {" +YC +YC +YC +YC +AC +UU +Pp +UU +UU +LV +nk +lO +ez +LV +oM +YC +YC +YC +YC +"} +(22,1,1) = {" +YC +YC +YC +YC +Fg +zd +nk +kP +UU +UU +Oe +UU +IG +Aq +yu +YC +YC +YC +YC +"} +(23,1,1) = {" +YC +YC +YC +YC +fe +zd +Xt +Fz +Oe +kO +vn +kO +Pp +vn +Pp +YC +YC +YC +YC +"} +(24,1,1) = {" +YC +HR +YC +YC +YR +kP +kO +Dp +yu +UU +UU +UU +UU +sl +UW +YC +YC +HR +YC +"} +(25,1,1) = {" +YC +YC +YC +YC +Fg +zd +CC +Aj +yu +yx +pH +wJ +Yt +yu +yu +YC +YC +YC +YC +"} +(26,1,1) = {" +YC +YC +YC +YC +Wg +yu +kP +Dp +Dx +YC +YC +YC +YC +CU +IM +YC +YC +YC +YC +"} +(27,1,1) = {" +YC +YC +YC +YC +YC +Dx +CC +Rr +Dx +YC +YC +YC +YC +Av +RS +YC +YC +YC +YC +"} +(28,1,1) = {" +YC +dD +YC +YC +YC +yu +Dx +Dx +yu +YC +YC +YC +YC +YC +YC +YC +YC +Ev +YC +"} +(29,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(30,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} +(31,1,1) = {" +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +YC +"} diff --git a/code/__DEFINES/~doppler_defines/shipbreaking.dm b/code/__DEFINES/~doppler_defines/shipbreaking.dm new file mode 100644 index 00000000000000..aef2f867fb7fe0 --- /dev/null +++ b/code/__DEFINES/~doppler_defines/shipbreaking.dm @@ -0,0 +1,16 @@ +/// Ship contains electrical hazards +#define SALVAGE_HAZARD_ELECTRICAL "Electrical Hazards" +/// Ship contains explosive fuels +#define SALVAGE_HAZARD_FUEL "Explosive Fuels" +/// Ship contains radioactive things +#define SALVAGE_HAZARD_RADIATION "Above-Background Radioactivity" +/// Ship contains a shipmind or equivalent +#define SALVAGE_HAZARD_SHIPMIND "Potentially Active Shipmind" +/// Ship contains coolant canisters +#define SALVAGE_HAZARD_COOLANT "Superketone Coolant" +/// Ship contains a reactor +#define SALVAGE_HAZARD_REACTOR "Active Bloom Reactor" +/// Ship has nonspecific cargo that might be dangerous +#define SALVAGE_HAZARD_CARGO "Potentially Volatile Cargo" +/// Ship has munitions on board +#define SALVAGE_HAZARD_WEAPONS "Uncleared Weaponry" diff --git a/code/__DEFINES/~doppler_defines/traits/declarations.dm b/code/__DEFINES/~doppler_defines/traits/declarations.dm index f055face08d4da..ff898fa5388782 100644 --- a/code/__DEFINES/~doppler_defines/traits/declarations.dm +++ b/code/__DEFINES/~doppler_defines/traits/declarations.dm @@ -22,6 +22,9 @@ // makes it so held items float by their head #define TRAIT_FLOATING_HELD "held_items_float" -// Do non-items still get recycled for their custom materials +/// Do non-items still get recycled for their custom materials #define TRAIT_RECYCLE_LIKE_ITEM "recycle_like_an_item" - +/// Do we get recolored based off of a salvage ship datum's primary colour +#define TRAIT_SHIP_PRIMARY_COLOUR "salvage_ship_primary_colour" +/// Do we get recolored based off of a salvage ship datum's secondary colour +#define TRAIT_SHIP_SECONDARY_COLOUR "salvage_ship_secondary_colour" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index a2ce6664b7dd0d..ff2935ae51ceeb 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -37,6 +37,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_UNHITTABLE_BY_PROJECTILES" = TRAIT_UNHITTABLE_BY_PROJECTILES, "TRAIT_UNLINKABLE_FISHING_SPOT" = TRAIT_UNLINKABLE_FISHING_SPOT, "TRAIT_TETHER_ATTACHED" = TRAIT_TETHER_ATTACHED, + "TRAIT_SHIP_PRIMARY_COLOUR" = TRAIT_SHIP_PRIMARY_COLOUR, // DOPPLER EDIT ADDITION + "TRAIT_SHIP_SECONDARY_COLOUR" = TRAIT_SHIP_SECONDARY_COLOUR, // DOPPLER EDIT ADDITION ), /atom/movable = list( "TRAIT_ACTIVE_STORAGE" = TRAIT_ACTIVE_STORAGE, @@ -647,7 +649,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CHAMELEON_SKIN" = TRAIT_CHAMELEON_SKIN, // DOPPLER EDIT ADDITION "TRAIT_FLOATING_HELD" = TRAIT_FLOATING_HELD, // DOPPLER EDIT ADDITION "TRAIT_RECYCLE_LIKE_ITEM" = TRAIT_RECYCLE_LIKE_ITEM, // DOPPLER EDIT ADDITION - ), /mob/dead/observer = list( "TRAIT_NO_OBSERVE" = TRAIT_NO_OBSERVE, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index a4062662f525a6..fc0f25b3dbdff8 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -7,6 +7,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_CATCH_AND_RELEASE" = TRAIT_CATCH_AND_RELEASE, "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, "TRAIT_UNHITTABLE_BY_PROJECTILES" = TRAIT_UNHITTABLE_BY_PROJECTILES, + "TRAIT_SHIP_PRIMARY_COLOUR" = TRAIT_SHIP_PRIMARY_COLOUR, // DOPPLER EDIT ADDITION + "TRAIT_SHIP_SECONDARY_COLOUR" = TRAIT_SHIP_SECONDARY_COLOUR, // DOPPLER EDIT ADDITION ), /atom/movable = list( "TRAIT_ASHSTORM_IMMUNE" = TRAIT_ASHSTORM_IMMUNE, diff --git a/code/modules/asset_cache/assets/sheetmaterials.dm b/code/modules/asset_cache/assets/sheetmaterials.dm index 408239edfd04e7..4abdb46d3a6f60 100644 --- a/code/modules/asset_cache/assets/sheetmaterials.dm +++ b/code/modules/asset_cache/assets/sheetmaterials.dm @@ -3,4 +3,5 @@ /datum/asset/spritesheet_batched/sheetmaterials/create_spritesheets() insert_all_icons("", 'icons/obj/stack_objects.dmi') + insert_all_icons("", 'modular_doppler/shipbreaking/icons/stacks.dmi') // DOPPLER EDIT ADDITION - SHIPBREAKING MATS DONT RENDER RIGHT diff --git a/modular_doppler/colony_fabricator/code/power/rtg.dm b/modular_doppler/colony_fabricator/code/power/rtg.dm index ddedc450e57de2..002cd7707278e6 100644 --- a/modular_doppler/colony_fabricator/code/power/rtg.dm +++ b/modular_doppler/colony_fabricator/code/power/rtg.dm @@ -21,6 +21,11 @@ AddElement(/datum/element/radioactive, threshold = RAD_VERY_LIGHT_INSULATION, minimum_exposure_time = NEBULA_RADIATION_MINIMUM_EXPOSURE_TIME) AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER) +/obj/machinery/power/rtg/portable/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool, time = 2 SECONDS) + return ITEM_INTERACT_SUCCESS + /obj/machinery/power/rtg/portable/RefreshParts() . = ..() power_gen = initial(power_gen) diff --git a/modular_doppler/epic_loot/code/loot_items/components.dm b/modular_doppler/epic_loot/code/loot_items/components.dm index 116507d6923e8a..15f88279f23b9a 100644 --- a/modular_doppler/epic_loot/code/loot_items/components.dm +++ b/modular_doppler/epic_loot/code/loot_items/components.dm @@ -1,5 +1,5 @@ /datum/export/epic_loot_components - cost = PAYCHECK_COMMAND + cost = 50 unit_name = "low value salvage" export_types = list( /obj/item/epic_loot/grenade_fuze, @@ -10,7 +10,7 @@ ) /datum/export/epic_loot_components_super - cost = PAYCHECK_COMMAND * 2 + cost = 75 unit_name = "salvage" export_types = list( /obj/item/epic_loot/water_filter, @@ -20,7 +20,7 @@ ) /datum/export/epic_loot_components_super_super - cost = PAYCHECK_COMMAND * 3 + cost = 125 unit_name = "high value salvage" export_types = list( /obj/item/epic_loot/thermal_camera, diff --git a/modular_doppler/epic_loot/code/loot_items/electronics.dm b/modular_doppler/epic_loot/code/loot_items/electronics.dm index c144fa7da23e06..b360f92c413781 100644 --- a/modular_doppler/epic_loot/code/loot_items/electronics.dm +++ b/modular_doppler/epic_loot/code/loot_items/electronics.dm @@ -1,5 +1,5 @@ /datum/export/epic_loot_electronics - cost = PAYCHECK_COMMAND + cost = 50 unit_name = "electronic salvage" export_types = list( /obj/item/epic_loot/device_fan, @@ -10,7 +10,7 @@ ) /datum/export/epic_loot_electronics_super - cost = PAYCHECK_COMMAND * 2 + cost = 75 unit_name = "high value electronic salvage" export_types = list( /obj/item/epic_loot/display, diff --git a/modular_doppler/epic_loot/code/loot_items/medical.dm b/modular_doppler/epic_loot/code/loot_items/medical.dm index d645cc4160f0a0..e2050c3b3f279d 100644 --- a/modular_doppler/epic_loot/code/loot_items/medical.dm +++ b/modular_doppler/epic_loot/code/loot_items/medical.dm @@ -1,5 +1,5 @@ /datum/export/epic_loot_super_med_tools - cost = PAYCHECK_COMMAND * 5 + cost = 250 unit_name = "high value medical salvage" export_types = list( /obj/item/epic_loot/vein_finder, diff --git a/modular_doppler/epic_loot/code/loot_items/valuables.dm b/modular_doppler/epic_loot/code/loot_items/valuables.dm index fb209e9a6485e3..2638ebf221961b 100644 --- a/modular_doppler/epic_loot/code/loot_items/valuables.dm +++ b/modular_doppler/epic_loot/code/loot_items/valuables.dm @@ -1,5 +1,5 @@ /datum/export/epic_loot_valuables - cost = PAYCHECK_COMMAND * 3 + cost = 150 unit_name = "recovered valuables" export_types = list( /obj/item/epic_loot/press_pass, @@ -10,7 +10,7 @@ ) /datum/export/epic_loot_valuables_super - cost = PAYCHECK_COMMAND * 4 + cost = 200 unit_name = "recovered high valuables" export_types = list( /obj/item/epic_loot/ssd, diff --git a/modular_doppler/shipbreaking/code/docking_clamp.dm b/modular_doppler/shipbreaking/code/docking_clamp.dm index f23eb4ce0cb1f7..362f74a7ed36fc 100644 --- a/modular_doppler/shipbreaking/code/docking_clamp.dm +++ b/modular_doppler/shipbreaking/code/docking_clamp.dm @@ -1,17 +1,47 @@ /obj/effect/temp_visual/telegraphing/long_duration duration = 15 SECONDS +// Circuit and RND + +/obj/item/circuitboard/machine/docking_clamp + name = "Salvage Clamp" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/docking_clamp + +/datum/design/board/salvage_docking_clamp + name = "Salvage Clamp" + desc = "A large clamp for holding shuttles in place without using their own power." + id = "salvage_docking_clamp" + build_path = /obj/item/circuitboard/machine/docking_clamp + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + +/datum/techweb_node/mining/New() + design_ids += list( + "salvage_docking_clamp", + ) + return ..() + +// Everything else + /obj/machinery/docking_clamp name = "salvage clamp" desc = "A large clamp for holding shuttles in place without using their own power." icon = 'icons/obj/machines/floor.dmi' icon_state = "mass_driver" use_power = NO_POWER_USE + circuit = /obj/item/circuitboard/machine/docking_clamp /// The docking port we use to connect ships with var/obj/docking_port/stationary/salvage_dock/docking_port /// The computer the clamp is linked to var/obj/machinery/computer/salvage_bay_controller/controller +/obj/machinery/docking_clamp/Initialize(mapload) + . = ..() + AddComponent(/datum/component/simple_rotation) + /obj/machinery/docking_clamp/Destroy(force) if(controller) controller.delink_clamp() @@ -64,7 +94,10 @@ balloon_alert(user, "not secured!") return ..() if(docking_port) - balloon_alert(user, "already set!") + balloon_alert(user, "unsetting...") + if(!do_after(user, 3 SECONDS, src)) + return ..() + QDEL_NULL(docking_port) return ..() balloon_alert(user, "setting clamp") if(!do_after(user, 2 SECONDS, src)) @@ -97,6 +130,16 @@ docking_port = temp_docking_port return ..() +/// Scans the docking port area for if living mobs are present inside, TRUE means a mob is in the way (or we have no port?) +/obj/machinery/docking_clamp/proc/check_for_clear_bay() + if(!docking_port) + return TRUE // what ?? No + var/list/docking_turfs = docking_port.return_turfs() + for(var/turf/checked_turf as anything in docking_turfs) + for(var/mob/living/living_mob in checked_turf.contents) + return TRUE + return FALSE + /obj/docking_port/stationary/salvage_dock name = "Salvage Dock" width = 31 diff --git a/modular_doppler/shipbreaking/code/loot/cargo_sales.dm b/modular_doppler/shipbreaking/code/loot/cargo_sales.dm new file mode 100644 index 00000000000000..03c3a690ee3310 --- /dev/null +++ b/modular_doppler/shipbreaking/code/loot/cargo_sales.dm @@ -0,0 +1,131 @@ +/datum/export/material/aluminum + cost = 35 + material_id = /datum/material/aluminum + message = "cm3 of aluminum" + +/datum/export/material/nanocarbon + cost = 55 + material_id = /datum/material/nanocarbon + message = "cm3 of nanocarbon" + +/datum/export/salvage_generic + cost = 75 + unit_name = "general salvage" + export_types = list( + /obj/structure/engine_covers/thruster_nozzle, + /obj/structure/engine_covers/heater_cover, + /obj/structure/shuttle_decoration/rcs, + /obj/structure/shuttle_decoration/ladder, + /obj/structure/shuttle_decoration/ladder_black, + /obj/structure/shuttle_decoration/eva_catwalks, + /obj/structure/shuttle_decoration/radiator, + /obj/structure/shuttle_decoration/extinguisher, + /obj/structure/shuttle_decoration/bullbar, + /obj/structure/shuttle_decoration/headlight, + /obj/structure/shuttle_decoration/landing_engine, + /obj/structure/shuttle_decoration/aux_engine, + /obj/structure/shuttle_decoration/junction_box, + ) + +/datum/export/shipping_containers + cost = 300 + unit_name = "salvaged shipping containers" + export_types = list( + /obj/structure/closet/shipping_container, + ) + +/datum/export/salvage_scanners + cost = 200 + unit_name = "salvaged sensor equipment" + export_types = list( + /obj/machinery/exoscanner/shuttle_part/radar_panel, + /obj/machinery/exoscanner/shuttle_part/sensors_blister, + /obj/machinery/exoscanner/shuttle_part/open_sensors_blister, + /obj/machinery/exoscanner/shuttle_part/radio_dish, + ) + +/datum/export/salvage_shipmind + cost = 600 + unit_name = "recovered shipmind" + export_types = list( + /obj/structure/shuttle_decoration/liquid_tank/battery/shipmind, + ) + +/datum/export/salvage_reactor + cost = 1000 + unit_name = "salvaged bloom reactor" + export_types = list( + /obj/structure/shuttle_decoration/liquid_tank/reactor, + ) + +/datum/export/salvage_reactor + cost = 1500 + unit_name = "salvaged large bloom reactor" + export_types = list( + /obj/structure/shuttle_decoration/liquid_tank/reactor/super, + ) + +/datum/export/salvage_engines + cost = 300 + unit_name = "salvaged engines" + export_types = list( + /obj/machinery/power/shuttle_engine/propulsion/salvage, + /obj/machinery/power/shuttle_engine/heater/salvage, + /obj/structure/engine_covers/ion_plate, + ) + +/datum/export/salvage_hazard + cost = 200 + unit_name = "hazardous salvage" + export_types = list( + /obj/structure/shuttle_decoration/liquid_tank/battery, + /obj/structure/shuttle_decoration/liquid_tank/coolant, + ) + +/datum/export/salvage_munitions + cost = 250 + unit_name = "salvaged munitions" + export_types = list( + /obj/structure/shuttle_decoration/munition/missile, + /obj/structure/shuttle_decoration/munition/missile/orbital, + /obj/structure/shuttle_decoration/munition/missile/extraorbital, + /obj/structure/shuttle_decoration/munition/ciws, + /obj/structure/shuttle_decoration/munition/autocannon, + /obj/structure/shuttle_decoration/munition/chaff_flares, + ) + +/datum/export/salvage_fuel + cost = 200 + unit_name = "salvaged fuel tanks" + export_types = list( + /obj/structure/shuttle_decoration/liquid_tank/explosive, + /obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, + /obj/structure/shuttle_decoration/liquid_tank/explosive/lithium, + ) + +/datum/export/salvage_fuel_big + cost = 400 + unit_name = "salvaged large tanks" + export_types = list( + /obj/structure/shuttle_decoration/liquid_tank/explosive/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/lithium/industrial, + ) + +/datum/export/salvage_crates + cost = 150 + unit_name = "salvaged shipping crates" + export_types = list( + /obj/structure/closet/crate/shuttle, + /obj/structure/closet/crate/shuttle/small, + /obj/structure/closet/crate/shuttle_hard, + ) + +/datum/export/salvage_airlocks + cost = 100 + unit_name = "salvaged airlocks" + export_types = list( + /obj/structure/hull_plating/airlock, + /obj/structure/hull_plating/airlock/interior, + /obj/structure/hull_plating/airlock/access_panel, + ) diff --git a/modular_doppler/shipbreaking/code/loot/item_spawners.dm b/modular_doppler/shipbreaking/code/loot/item_spawners.dm new file mode 100644 index 00000000000000..331d12cb8cfe18 --- /dev/null +++ b/modular_doppler/shipbreaking/code/loot/item_spawners.dm @@ -0,0 +1,256 @@ +/obj/effect/spawner/random/salvage + abstract_type = /obj/effect/spawner/random/salvage + name = "shipbreaking random spawner" + icon = 'modular_doppler/shipbreaking/icons/spawners.dmi' + icon_state = null + +/obj/effect/spawner/random/salvage/munitions + name = "random munitions" + icon_state = "munitions" + loot = list( + /obj/structure/shuttle_decoration/munition/missile, + /obj/structure/shuttle_decoration/munition/missile/orbital, + /obj/structure/shuttle_decoration/munition/missile/extraorbital, + /obj/structure/shuttle_decoration/munition/ciws, + /obj/structure/shuttle_decoration/munition/autocannon, + /obj/structure/shuttle_decoration/munition/chaff_flares, + ) + +/obj/effect/spawner/random/salvage/munitions/only_ammoboxes + name = "random ammo crates" + icon_state = "ammo" + loot = list( + /obj/structure/shuttle_decoration/munition/ciws, + /obj/structure/shuttle_decoration/munition/autocannon, + /obj/structure/shuttle_decoration/munition/chaff_flares, + ) + +/obj/effect/spawner/random/salvage/munitions/only_missiles + name = "random missiles" + icon_state = "missiles" + loot = list( + /obj/structure/shuttle_decoration/munition/missile, + /obj/structure/shuttle_decoration/munition/missile/orbital, + /obj/structure/shuttle_decoration/munition/missile/extraorbital, + ) + +/obj/effect/spawner/random/salvage/interior_trash_n_debris + name = "random shuttle interior trash and debris" + icon_state = "interior_debris" + spawn_random_offset = TRUE + loot = list( + /obj/effect/spawner/random/salvage/shuttle_maintenance = 2, + /obj/effect/spawner/random/trash/deluxe_garbage/no_mobs_ever = 4, + /obj/effect/spawner/random/engineering/tool = 2, + /obj/effect/spawner/random/bureaucracy/pen = 2, + /obj/effect/spawner/random/bureaucracy/paper = 2, + /obj/effect/spawner/random/engineering/flashlight = 2, + /obj/effect/spawner/random/engineering/toolbox = 1, + /obj/effect/spawner/random/contraband = 1, + /obj/effect/spawner/random/entertainment/coin = 1, + /obj/effect/spawner/random/maintenance/no_decals = 2, + ) + +/obj/effect/spawner/random/salvage/shuttle_maintenance + name = "random shuttle maintenance items" + icon_state = "maint_loot" + loot = list( + /obj/item/epic_loot/water_filter = 2, + /obj/item/epic_loot/thermometer = 2, + /obj/item/epic_loot/nail_box = 2, + /obj/item/epic_loot/cold_weld = 2, + /obj/item/epic_loot/electric_motor = 2, + /obj/item/epic_loot/current_converter = 2, + /obj/item/epic_loot/signal_amp = 2, + /obj/item/epic_loot/thermal_camera = 2, + /obj/item/epic_loot/fuel_conditioner = 2, + /obj/item/epic_loot/shuttle_gyro = 1, + /obj/item/epic_loot/phased_array = 1, + /obj/item/epic_loot/shuttle_battery = 1, + /obj/item/epic_loot/device_fan = 2, + /obj/item/epic_loot/display = 1, + /obj/item/epic_loot/display_broken = 2, + /obj/item/epic_loot/graphics = 1, + /obj/item/epic_loot/military_circuit = 1, + /obj/item/epic_loot/civilian_circuit = 2, + /obj/item/epic_loot/processor = 1, + /obj/item/epic_loot/power_supply = 2, + /obj/item/epic_loot/disk_drive = 2, + /obj/item/epic_loot/ssd = 1, + /obj/item/epic_loot/hdd = 2, + ) + +/obj/effect/spawner/random/salvage/shuttle_maintenance/random_offset + spawn_random_offset = TRUE + +/obj/effect/spawner/random/food_or_drink/seed_rare/one + spawn_loot_count = 1 + +/obj/effect/spawner/random/food_or_drink/plant_produce/one + spawn_loot_count = 1 + +/obj/effect/spawner/random/food_or_drink/seed/one + spawn_loot_count = 1 + +/obj/effect/spawner/random/food_or_drink/seed_flowers/one + spawn_all_loot = FALSE + +/obj/effect/spawner/random/salvage/cargo_machine + name = "random cargo machine" + icon_state = "machine" + loot = list( + /obj/machinery/portable_atmospherics/pump, + /obj/machinery/portable_atmospherics/scrubber, + /obj/machinery/portable_atmospherics/scrubber/huge/movable/cargo, + /obj/machinery/power/port_gen/pacman/solid_fuel, + /obj/machinery/power/rtg/portable, + /obj/machinery/power/portagrav, + /obj/machinery/chem_dispenser/big_drink_machine/unanchored, + /obj/machinery/chem_dispenser/spice_machine/unanchored, + /obj/machinery/chem_dispenser, + /obj/machinery/chem_dispenser/mutagensaltpeter, + /obj/machinery/coffeemaker/impressa, + /obj/machinery/dish_drive, + /obj/machinery/electrolyzer, + /obj/machinery/electrolyzer/co2_cracker, + /obj/machinery/exoscanner, + /obj/machinery/fishing_portal_generator, + /obj/machinery/fishing_portal_generator/full, + /obj/machinery/food_cart, + /obj/machinery/icecream_vat, + /obj/machinery/hydroponics/constructable, + /obj/machinery/hydroponics/constructable/fullupgrade, + /obj/machinery/microwave/engineering/cell_included/unanchored, + /obj/machinery/photocopier/gratis/prebuilt, + /obj/machinery/smesbank/super/full, + /obj/machinery/smoke_machine, + /obj/machinery/space_heater, + /obj/machinery/washing_machine, + /obj/effect/spawner/random/engineering/atmospherics_portable, + /obj/effect/spawner/random/engineering/canister, + /obj/effect/spawner/random/engineering/canister/lots_of_them, + /obj/effect/spawner/random/engineering/tank, + /obj/effect/spawner/random/structure/tank_holder, + ) + +/obj/effect/spawner/random/salvage/cargo_machine/medical_or_research + loot = list( + /obj/machinery/power/port_gen/pacman/solid_fuel, + /obj/machinery/power/rtg/portable, + /obj/machinery/power/portagrav, + /obj/machinery/chem_dispenser, + /obj/machinery/chem_dispenser/mutagensaltpeter, + /obj/machinery/coffeemaker/impressa, + /obj/machinery/electrolyzer, + /obj/machinery/electrolyzer/co2_cracker, + /obj/machinery/exoscanner, + /obj/machinery/hydroponics/constructable, + /obj/machinery/hydroponics/constructable/fullupgrade, + /obj/machinery/chem_master, + /obj/machinery/chem_heater/withbuffer, + /obj/machinery/chem_mass_spec, + /obj/effect/spawner/random/engineering/canister/lots_of_them, + ) + +/obj/effect/spawner/random/salvage/cargo_machine/construction + loot = list( + /obj/machinery/portable_atmospherics/pump, + /obj/machinery/portable_atmospherics/scrubber, + /obj/machinery/portable_atmospherics/scrubber/huge/movable/cargo, + /obj/machinery/power/rtg/portable, + /obj/machinery/electrolyzer, + /obj/machinery/electrolyzer/co2_cracker, + /obj/machinery/smesbank/super/full, + /obj/machinery/smoke_machine, + /obj/machinery/space_heater, + /obj/structure/girder/displaced, + /obj/effect/spawner/random/engineering/atmospherics_portable, + /obj/effect/spawner/random/engineering/canister/lots_of_them, + /obj/effect/spawner/random/engineering/tank, + /obj/effect/spawner/random/structure/tank_holder, + ) + +/obj/effect/spawner/random/salvage/civilian_supply + loot = list( + /obj/machinery/portable_atmospherics/pump, + /obj/machinery/portable_atmospherics/scrubber, + /obj/machinery/power/port_gen/pacman/solid_fuel, + /obj/machinery/chem_dispenser/big_drink_machine/unanchored, + /obj/machinery/chem_dispenser/spice_machine/unanchored, + /obj/machinery/coffeemaker/impressa, + /obj/machinery/dish_drive, + /obj/machinery/electrolyzer/co2_cracker, + /obj/machinery/fishing_portal_generator, + /obj/machinery/fishing_portal_generator/full, + /obj/machinery/food_cart, + /obj/machinery/icecream_vat, + /obj/machinery/hydroponics/constructable, + /obj/machinery/hydroponics/constructable/fullupgrade, + /obj/machinery/microwave/engineering/cell_included/unanchored, + /obj/machinery/photocopier/gratis/prebuilt, + /obj/machinery/space_heater, + /obj/machinery/washing_machine, + /obj/effect/spawner/random/engineering/tank, + ) + +/obj/effect/spawner/random/salvage/cargo_machine/military + loot = list( + /obj/machinery/power/port_gen/pacman/solid_fuel = 1, + /obj/machinery/power/rtg/portable = 1, + /obj/machinery/electrolyzer/co2_cracker = 1, + /obj/machinery/exoscanner = 1, + /obj/effect/spawner/random/salvage/munitions = 2, + ) + +/obj/effect/spawner/random/salvage/cargo_machine/scrap + loot = list( + /obj/structure/hull_plating/airlock, + /obj/structure/hull_plating/airlock/interior, + /obj/structure/hull_plating/airlock/access_panel, + /obj/structure/hull_plating/nanocarbon, + /obj/structure/hull_plating/nanocarbon/floor, + /obj/structure/hull_plating/gold_foil, + /obj/structure/hull_plating/silver_foil, + /obj/structure/hull_plating/plastamic_sheets, + /obj/structure/hull_plating/armor_panels, + /obj/structure/hull_plating/aluminum, + /obj/structure/hull_plating/aluminum/floor, + /obj/effect/spawner/random/salvage/nanocarbon_shards, + /obj/structure/girder/displaced, + /obj/effect/spawner/random/engineering/canister, + /obj/effect/spawner/random/engineering/tank, + /obj/effect/spawner/random/engineering/canister/lots_of_them, + /obj/effect/spawner/random/structure/tank_holder, + ) + +/obj/effect/spawner/random/salvage/nanocarbon_shards + name = "random nanocarbon shards" + icon_state = "maint_loot" + spawn_loot_count = 5 + spawn_random_offset = TRUE + loot = list( + /obj/item/nanocarbon_shard, + ) + +/obj/effect/spawner/random/engineering/canister/lots_of_them + loot = list( + /obj/machinery/portable_atmospherics/canister/air, + /obj/machinery/portable_atmospherics/canister/anesthetic_mix, + /obj/machinery/portable_atmospherics/canister/bz, + /obj/machinery/portable_atmospherics/canister/carbon_dioxide, + /obj/machinery/portable_atmospherics/canister/freon, + /obj/machinery/portable_atmospherics/canister/hydrogen, + /obj/machinery/portable_atmospherics/canister/helium, + /obj/machinery/portable_atmospherics/canister/nitrogen, + /obj/machinery/portable_atmospherics/canister/nitrous_oxide, + /obj/machinery/portable_atmospherics/canister/oxygen, + /obj/machinery/portable_atmospherics/canister/plasma, + /obj/machinery/portable_atmospherics/canister/water_vapor, + ) + +/obj/effect/spawner/random/trash/deluxe_garbage/no_mobs_ever + +/obj/effect/spawner/random/trash/deluxe_garbage/no_mobs_ever/Initialize(mapload) + loot -= /mob/living/basic/mouse + loot -= /mob/living/basic/snail + return ..() diff --git a/modular_doppler/shipbreaking/code/loot/military.dm b/modular_doppler/shipbreaking/code/loot/military.dm new file mode 100644 index 00000000000000..ece311af02b682 --- /dev/null +++ b/modular_doppler/shipbreaking/code/loot/military.dm @@ -0,0 +1,16 @@ +/obj/effect/spawner/random/salvage/salvaged_gun + name = "random salvage shuttle gun" + icon_state = "armory" + spawn_random_offset = FALSE + loot = list( + /obj/item/gun/ballistic/rifle/boltaction/surplus = 2, + /obj/item/gun/ballistic/rifle/boltaction = 2, + /obj/item/gun/ballistic/rifle/boltaction/prime = 1, + /obj/item/gun/ballistic/rifle/osako = 2, + /obj/item/gun/ballistic/rifle/crash = 2, + /obj/item/gun/ballistic/automatic/marcielle = 2, + /obj/item/gun/ballistic/automatic/marcielle/sport = 1, + ) + +/obj/effect/spawner/random/salvage/salvaged_gun/random_offset + spawn_random_offset = TRUE diff --git a/modular_doppler/shipbreaking/code/loot/random_cargo.dm b/modular_doppler/shipbreaking/code/loot/random_cargo.dm new file mode 100644 index 00000000000000..5ef20538c9796c --- /dev/null +++ b/modular_doppler/shipbreaking/code/loot/random_cargo.dm @@ -0,0 +1,241 @@ +// Only random shipping containers + +/obj/effect/spawner/random/salvage/container + name = "random shipping container" + icon_state = "container" + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot, + ) + +/obj/effect/spawner/random/salvage/container/medical_or_research + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/medical_or_research, + ) + +/obj/effect/spawner/random/salvage/container/construction + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/construction, + ) + +/obj/effect/spawner/random/salvage/container/civilian_supply + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/civilian_supply, + ) + +/obj/effect/spawner/random/salvage/container/military + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/military, + ) + +/obj/effect/spawner/random/salvage/container/salvage + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/salvage, + ) + +// Random crates and shipping containers + +/obj/effect/spawner/random/salvage/container_or_crate + name = "random crate or shipping container" + icon_state = "container" + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot, + /obj/structure/closet/crate/shuttle/secured/random_loot, + /obj/structure/closet/crate/shuttle/small/secured/random_loot, + ) + +/obj/effect/spawner/random/salvage/container_or_crate/medical_or_research + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/medical_or_research, + ) + +/obj/effect/spawner/random/salvage/container_or_crate/construction + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/construction, + ) + +/obj/effect/spawner/random/salvage/container_or_crate/civilian_supply + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/civilian_supply, + ) + +/obj/effect/spawner/random/salvage/container_or_crate/military + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/military, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/military, + ) + +/obj/effect/spawner/random/salvage/container_or_crate/salvage + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/salvage, + ) + +// Only random crates without shipping containers + +/obj/effect/spawner/random/salvage/crate_only + name = "random crate" + icon_state = "crate" + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot, + /obj/structure/closet/crate/shuttle/secured/random_loot, + /obj/structure/closet/crate/shuttle/small/secured/random_loot, + ) + +/obj/effect/spawner/random/salvage/crate_only/medical_or_research + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/medical_or_research, + ) + +/obj/effect/spawner/random/salvage/crate_only/construction + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/construction, + ) + +/obj/effect/spawner/random/salvage/crate_only/civilian_supply + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/civilian_supply, + ) + +/obj/effect/spawner/random/salvage/crate_only/military + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/military, + ) + +/obj/effect/spawner/random/salvage/crate_only/salvage + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/salvage, + ) + +// Random crates and shipping containers and misc. cargo + +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo + name = "random crate or shipping container or cargo" + icon_state = "container" + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot, + /obj/structure/closet/crate/shuttle/secured/random_loot, + /obj/structure/closet/crate/shuttle/small/secured/random_loot, + /obj/effect/spawner/random/salvage/cargo_machine, + ) + +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo/medical_or_research + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/medical_or_research, + /obj/effect/spawner/random/salvage/cargo_machine/medical_or_research, + ) + +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo/construction + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/construction, + /obj/effect/spawner/random/salvage/cargo_machine/construction, + ) + +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo/civilian_supply + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/civilian_supply, + /obj/effect/spawner/random/salvage/civilian_supply, + ) + +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo/military + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/military, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/military, + /obj/effect/spawner/random/salvage/cargo_machine/military, + ) + +/obj/effect/spawner/random/salvage/container_or_crate_or_cargo/salvage + loot = list( + /obj/structure/closet/shipping_container/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/salvage, + /obj/effect/spawner/random/salvage/cargo_machine/scrap, + ) + +// Random crates and misc. cargo, no shipping containers + +/obj/effect/spawner/random/salvage/crate_or_cargo + name = "random crate or cargo" + icon_state = "crate" + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot, + /obj/structure/closet/crate/shuttle/secured/random_loot, + /obj/structure/closet/crate/shuttle/small/secured/random_loot, + /obj/effect/spawner/random/salvage/cargo_machine, + ) + +/obj/effect/spawner/random/salvage/crate_or_cargo/medical_or_research + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/secured/random_loot/medical_or_research, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/medical_or_research, + /obj/effect/spawner/random/salvage/cargo_machine/medical_or_research, + ) + +/obj/effect/spawner/random/salvage/crate_or_cargo/construction + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/secured/random_loot/construction, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/construction, + /obj/effect/spawner/random/salvage/cargo_machine/construction, + ) + +/obj/effect/spawner/random/salvage/crate_or_cargo/civilian_supply + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/secured/random_loot/civilian_supply, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/civilian_supply, + /obj/effect/spawner/random/salvage/civilian_supply, + ) + +/obj/effect/spawner/random/salvage/crate_or_cargo/military + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/secured/random_loot/military, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/military, + /obj/effect/spawner/random/salvage/cargo_machine/military, + ) + +/obj/effect/spawner/random/salvage/crate_or_cargo/salvage + loot = list( + /obj/structure/closet/crate/shuttle_hard/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/secured/random_loot/salvage, + /obj/structure/closet/crate/shuttle/small/secured/random_loot/salvage, + /obj/effect/spawner/random/salvage/cargo_machine/scrap, + ) diff --git a/modular_doppler/shipbreaking/code/loot/random_crate_items.dm b/modular_doppler/shipbreaking/code/loot/random_crate_items.dm new file mode 100644 index 00000000000000..f2712581169edd --- /dev/null +++ b/modular_doppler/shipbreaking/code/loot/random_crate_items.dm @@ -0,0 +1,429 @@ +/// Create subtypes for the different sizes of crate for loot spawners +#define SALVAGE_CRATE_LOOT_SPAWNER(path) ##path/small {\ + spawn_loot_count = 3; \ +} \ +##path/medium {\ + spawn_loot_count = 5; \ +} \ +##path/large {\ + spawn_loot_count = 7; \ +} \ +##path/shipping {\ + spawn_loot_count = 10; \ +} + +// Crates + +/obj/structure/closet/shipping_container/secured/random_loot + /// List of spawners we can choose from + var/list/loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/money/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/shipping, + ) + /// The chance this crate has to spawn with nothing in it + var/empty_chance = 25 + +/obj/structure/closet/shipping_container/secured/random_loot/PopulateContents() + if(prob(empty_chance)) + return + var/obj/effect/spawner/random/loot_spawner = pick(loot_spawners) + new loot_spawner(src) + +/obj/structure/closet/shipping_container/secured/random_loot/medical_or_research + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/shipping, + ) + +/obj/structure/closet/shipping_container/secured/random_loot/construction + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/shipping, + ) + +/obj/structure/closet/shipping_container/secured/random_loot/civilian_supply + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/shipping, + ) + +/obj/structure/closet/shipping_container/secured/random_loot/military + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/shipping, + ) + +/obj/structure/closet/shipping_container/secured/random_loot/salvage + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/shipping, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/shipping, + ) + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot + /// List of spawners we can choose from + var/list/loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/money/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/large, + ) + /// The chance this crate has to spawn with nothing in it + var/empty_chance = 30 + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot/PopulateContents() + if(prob(empty_chance)) + return + var/obj/effect/spawner/random/loot_spawner = pick(loot_spawners) + new loot_spawner(src) + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot/medical_or_research + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/large, + ) + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot/construction + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/large, + ) + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot/civilian_supply + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/large, + ) + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot/military + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/large, + ) + +/obj/structure/closet/crate/shuttle_hard/secured/random_loot/salvage + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/large, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/large, + ) + +/obj/structure/closet/crate/shuttle/secured/random_loot + /// List of spawners we can choose from + var/list/loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/money/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/medium, + ) + /// The chance this crate has to spawn with nothing in it + var/empty_chance = 40 + +/obj/structure/closet/crate/shuttle/secured/random_loot/PopulateContents() + if(prob(empty_chance)) + return + var/obj/effect/spawner/random/loot_spawner = pick(loot_spawners) + new loot_spawner(src) + +/obj/structure/closet/crate/shuttle/secured/random_loot/medical_or_research + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/medium, + ) + +/obj/structure/closet/crate/shuttle/secured/random_loot/construction + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/medium, + ) + +/obj/structure/closet/crate/shuttle/secured/random_loot/civilian_supply + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/medium, + ) + +/obj/structure/closet/crate/shuttle/secured/random_loot/military + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/medium, + ) + +/obj/structure/closet/crate/shuttle/secured/random_loot/salvage + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/medium, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/medium, + ) + +/obj/structure/closet/crate/shuttle/small/secured/random_loot + /// List of spawners we can choose from + var/list/loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/money/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/small, + ) + /// The chance this crate has to spawn with nothing in it + var/empty_chance = 40 + +/obj/structure/closet/crate/shuttle/small/secured/random_loot/PopulateContents() + if(prob(empty_chance)) + return + var/obj/effect/spawner/random/loot_spawner = pick(loot_spawners) + new loot_spawner(src) + +/obj/structure/closet/crate/shuttle/small/secured/random_loot/medical_or_research + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk/small, + ) + +/obj/structure/closet/crate/shuttle/small/secured/random_loot/construction + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/small, + ) + +/obj/structure/closet/crate/shuttle/small/secured/random_loot/civilian_supply + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/bedding/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/produce/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/seeds/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/booze/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes/small, + ) + +/obj/structure/closet/crate/shuttle/small/secured/random_loot/military + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/food/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/military/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything/small, + ) + +/obj/structure/closet/crate/shuttle/small/secured/random_loot/salvage + loot_spawners = list( + /obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/components/small, + /obj/effect/spawner/random/salvage/crate_loot_spawner/engineering/small, + ) + +// Spawners + +/obj/effect/spawner/random/salvage/crate_loot_spawner + abstract_type = /obj/effect/spawner/random/salvage/salvaged_gun + name = "crate contents spawner" + +/obj/effect/spawner/random/salvage/crate_loot_spawner/bedding + loot = list( + /obj/effect/spawner/random/bedsheet = 2, + /obj/effect/spawner/random/bedsheet/double = 1, + /obj/item/pillow/random = 2, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/bedding) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day + loot = list( + /obj/effect/spawner/random/trash/deluxe_garbage/no_mobs_ever, + /obj/effect/spawner/random/maintenance/no_decals, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/garbage_day) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/food + loot = list( + /obj/effect/spawner/random/food_or_drink/any_snack_or_beverage, + /obj/effect/spawner/random/epic_loot/random_provisions, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/food) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/produce + loot = list( + /obj/effect/spawner/random/food_or_drink/plant_produce/one, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/produce) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/seeds + loot = list( + /obj/effect/spawner/random/food_or_drink/seed_rare/one = 1, + /obj/effect/spawner/random/food_or_drink/seed/one = 3, + /obj/effect/spawner/random/food_or_drink/seed_flowers/one = 1, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/seeds) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/booze + loot = list( + /obj/effect/spawner/random/food_or_drink/booze, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/booze) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/components + loot = list( + /obj/effect/spawner/random/epic_loot/random_components, + /obj/effect/spawner/random/epic_loot/random_computer_parts, + /obj/effect/spawner/random/epic_loot/random_construction, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/components) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/engineering + loot = list( + /obj/effect/spawner/random/epic_loot/random_engineering, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/engineering) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/military + loot = list( + /obj/effect/spawner/random/epic_loot/random_other_military_loot = 4, + /obj/effect/spawner/random/epic_loot/random_documents = 1, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/military) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot + loot = list( + /obj/effect/spawner/random/epic_loot/random_strongbox_loot, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/safe_loot) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/money + loot = list( + /obj/effect/spawner/random/entertainment/money_small = 2, + /obj/effect/spawner/random/entertainment/money = 1, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/money) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything + loot = list( + /obj/effect/spawner/random/epic_loot/medical_everything, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/medical_anything) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals + loot = list( + /obj/effect/spawner/random/epic_loot/chemical = 2, + /obj/effect/spawner/random/epic_loot/medpens = 2, + /obj/effect/spawner/random/epic_loot/medpens_combat_based_redpilled = 1, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/chemicals) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk + loot = list( + /obj/effect/spawner/random/medical/minor_healing = 4, + /obj/effect/spawner/random/medical/supplies = 3, + /obj/effect/spawner/random/medical/medkit = 3, + /obj/effect/spawner/random/medical/medkit_rare = 1, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/medical_bulk) + +/obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes + loot = list( + /obj/effect/spawner/random/entertainment/cigarette_pack, + ) + +SALVAGE_CRATE_LOOT_SPAWNER(/obj/effect/spawner/random/salvage/crate_loot_spawner/five_hundred_cigarettes) diff --git a/modular_doppler/shipbreaking/code/loot/tanks.dm b/modular_doppler/shipbreaking/code/loot/tanks.dm new file mode 100644 index 00000000000000..6b1d569ed25cd6 --- /dev/null +++ b/modular_doppler/shipbreaking/code/loot/tanks.dm @@ -0,0 +1,38 @@ +/obj/effect/spawner/random/salvage/every_small_tank + name = "random small tank" + icon_state = "tank" + loot = list( + /obj/structure/shuttle_decoration/liquid_tank/battery, + /obj/structure/shuttle_decoration/liquid_tank/coolant, + /obj/structure/shuttle_decoration/liquid_tank/explosive, + /obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, + /obj/structure/shuttle_decoration/liquid_tank/explosive/lithium, + ) + +/obj/effect/spawner/random/salvage/small_fuel_tanks + name = "random small fuel tank" + icon_state = "fuel" + loot = list( + /obj/structure/shuttle_decoration/liquid_tank/explosive, + /obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine, + /obj/structure/shuttle_decoration/liquid_tank/explosive/lithium, + ) + +/obj/effect/spawner/random/salvage/every_industrial_tank + name = "random industrial tank" + icon_state = "industrial" + loot = list( + /obj/structure/shuttle_decoration/liquid_tank/coolant/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/lithium/industrial, + ) + +/obj/effect/spawner/random/salvage/industrial_fuel_only + name = "random industrial fuel tank" + icon_state = "industrial" + loot = list( + /obj/structure/shuttle_decoration/liquid_tank/explosive/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine/industrial, + /obj/structure/shuttle_decoration/liquid_tank/explosive/lithium/industrial, + ) diff --git a/modular_doppler/shipbreaking/code/prior_owners/medical.dm b/modular_doppler/shipbreaking/code/prior_owners/medical.dm new file mode 100644 index 00000000000000..16c4b20623f0f5 --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners/medical.dm @@ -0,0 +1,36 @@ +/datum/shipbreaking_owner/medical + +/datum/shipbreaking_owner/medical/cybersun + owner_name = "Cybersun-Osaka Industries" + ship_primary_colour = "#d5d5d5" + ship_secondary_colour = "#e12e1d" + +/datum/shipbreaking_owner/medical/oms + owner_name = "Osaka Medical Systems" + ship_primary_colour = "#d5d5d5" + ship_secondary_colour = "#5fcde4" + +/datum/shipbreaking_owner/medical/deforest + owner_name = "Deforest Far Field Team" + ship_primary_colour = "#5fcde4" + ship_secondary_colour = "#5b975a" + +/datum/shipbreaking_owner/medical/venezia + owner_name = "Venezia" + ship_primary_colour = "#ffbb00" + ship_secondary_colour = "#d5d5d5" + +/datum/shipbreaking_owner/medical/scalpel + owner_name = "Scalpel & Suture Medical" + ship_primary_colour = "#a1aeb5" + ship_secondary_colour = "#534b6b" + +/datum/shipbreaking_owner/medical/stop_n_stitch + owner_name = "Breakneck Bandages" + ship_primary_colour = "#518997" + ship_secondary_colour = "#a43926" + +/datum/shipbreaking_owner/medical/gutzpaw + owner_name = "Gutzpaw 'n Gory" + ship_primary_colour = "#578263" + ship_secondary_colour = "#1ac0e5" diff --git a/modular_doppler/shipbreaking/code/prior_owners/military.dm b/modular_doppler/shipbreaking/code/prior_owners/military.dm new file mode 100644 index 00000000000000..e893b322aa162a --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners/military.dm @@ -0,0 +1,31 @@ +/datum/shipbreaking_owner/military + +/datum/shipbreaking_owner/military/void_corps + owner_name = "Void Corps Xth Expeditionary" + ship_primary_colour = "#353333" + ship_secondary_colour = "#a75b14" + +/datum/shipbreaking_owner/military/long_stretch + owner_name = "Long Stretch Prisoner Transport" + ship_primary_colour = "#a75b14" + ship_secondary_colour = "#353333" + +/datum/shipbreaking_owner/military/dragons_breath + owner_name = "Dragon's Breath Securities" + ship_primary_colour = "#3d2e2e" + ship_secondary_colour = "#ff912b" + +/datum/shipbreaking_owner/military/hearts_n_minds + owner_name = "Hearts & Minds Defense Contractors" + ship_primary_colour = "#f59de9" + ship_secondary_colour = "#f0f0f0" + +/datum/shipbreaking_owner/military/corkbern + owner_name = "Corkbern & Harkenbrook" + ship_primary_colour = "#571f1f" + ship_secondary_colour = "#d1bc1c" + +/datum/shipbreaking_owner/military/breaker + owner_name = "Breaker Independent Company" + ship_primary_colour = "#ea7f0c" + ship_secondary_colour = "#852020" diff --git a/modular_doppler/shipbreaking/code/prior_owners/mining.dm b/modular_doppler/shipbreaking/code/prior_owners/mining.dm new file mode 100644 index 00000000000000..8ce79a5ba9bde4 --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners/mining.dm @@ -0,0 +1,41 @@ +/datum/shipbreaking_owner/mining + +/datum/shipbreaking_owner/mining/amundsen + owner_name = "Amundsen-Scott Mineral Prospecting" + ship_primary_colour = "#243f65" + ship_secondary_colour = "#c8c8c8" + +/datum/shipbreaking_owner/mining/kahraman + owner_name = "Kahraman Heavy Industry" + ship_primary_colour = "#820a16" + ship_secondary_colour = "#e3ddc3" + +/datum/shipbreaking_owner/mining/exagon + owner_name = "Exagon-Ichikawa Orbital Resourcing" + ship_primary_colour = "#d5d5d5" + ship_secondary_colour = "#d92d29" + +/datum/shipbreaking_owner/mining/honk_mimi + owner_name = "Marina's Interstellar Minerals, Incorperated" + ship_primary_colour = "#ffe600" + ship_secondary_colour = "#ffa291" + +/datum/shipbreaking_owner/mining/blackbird_interactive + owner_name = "Blackbird Industrial" + ship_primary_colour = "#d4d4d4" + ship_secondary_colour = "#3b3b3b" + +/datum/shipbreaking_owner/mining/crag_jumpers + owner_name = "Crag Jumpers" + ship_primary_colour = "#9c659b" + ship_secondary_colour = "#b17e46" + +/datum/shipbreaking_owner/mining/kel_vet + owner_name = "Kel'Vet Extraction" + ship_primary_colour = "#404040" + ship_secondary_colour = "#ca9340" + +/datum/shipbreaking_owner/mining/brightstar + owner_name = "BrightStar Salvage Group" + ship_primary_colour = "#b18aa9" + ship_secondary_colour = "#55476e" diff --git a/modular_doppler/shipbreaking/code/prior_owners/research.dm b/modular_doppler/shipbreaking/code/prior_owners/research.dm new file mode 100644 index 00000000000000..490b21b9889e66 --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners/research.dm @@ -0,0 +1,51 @@ +/datum/shipbreaking_owner/research + +/datum/shipbreaking_owner/research/solar_exogeological + owner_name = "Solar Exogeological Survey" + ship_primary_colour = "#c4dacf" + ship_secondary_colour = "#836298" + +/datum/shipbreaking_owner/research/terraforming_4ca + owner_name = "4CA Terraforming Coalition" + ship_primary_colour = "#d08916" + ship_secondary_colour = "#cfcfcf" + +/datum/shipbreaking_owner/research/great_northern + owner_name = "Great Northern Frontier Agriculture" + ship_primary_colour = "#2a66b0" + ship_secondary_colour = "#ec7828" + +/datum/shipbreaking_owner/research/cthon + owner_name = "CTHON-Incorporated" + ship_primary_colour = "#3e3e3e" + ship_secondary_colour = "#836298" + +/datum/shipbreaking_owner/research/rocinante + owner_name = "Rocinante Expeditions" + ship_primary_colour = "#ffbb00" + ship_secondary_colour = "#9c9c9c" + +/datum/shipbreaking_owner/research/meier_fox + owner_name = "Meier-Fox Advanced Synthetics" + ship_primary_colour = "#d5d5d5" + ship_secondary_colour = "#60416d" + +/datum/shipbreaking_owner/research/pathos + owner_name = "PATHOS-II" + ship_primary_colour = "#5d89ba" + ship_secondary_colour = "#efefef" + +/datum/shipbreaking_owner/research/fitobiologi + owner_name = "Fitobiologi Padan" + ship_primary_colour = "#3dd09c" + ship_secondary_colour = "#414463" + +/datum/shipbreaking_owner/research/fv_cyberware + owner_name = "F.V. Cyberware" + ship_primary_colour = "#4e1616" + ship_secondary_colour = "#f0f0f0" + +/datum/shipbreaking_owner/research/veritas_exo + owner_name = "Veritas Exosciences" + ship_primary_colour = "#1ee9f4" + ship_secondary_colour = "#8516a0" diff --git a/modular_doppler/shipbreaking/code/prior_owners/shipping.dm b/modular_doppler/shipbreaking/code/prior_owners/shipping.dm new file mode 100644 index 00000000000000..98293468296c8c --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners/shipping.dm @@ -0,0 +1,76 @@ +/datum/shipbreaking_owner/shipping + +/datum/shipbreaking_owner/shipping/four_winds + owner_name = "Four Winds Freighting Caravan" + ship_primary_colour = "#5b5b71" + ship_secondary_colour = "#ffdd00" + +/datum/shipbreaking_owner/shipping/crusoe_intermodal + owner_name = "Crusoe's Intermodal Shipping" + ship_primary_colour = "#169b5a" + ship_secondary_colour = "#176a96" + +/datum/shipbreaking_owner/shipping/crusoe_settlement + owner_name = "Crusoe's Rest Settlement Oversight" + ship_primary_colour = "#169b5a" + ship_secondary_colour = "#8f7930" + +/datum/shipbreaking_owner/shipping/conarex + owner_name = "Conarex Aeronautics" + ship_primary_colour = "#5096e3" + ship_secondary_colour = "#cfcfcf" + +/datum/shipbreaking_owner/shipping/sunda + owner_name = "Sunda Galaksi Near Orbital" + ship_primary_colour = "#e3b302" + ship_secondary_colour = "#3c3f45" + +/datum/shipbreaking_owner/shipping/apa + owner_name = "Adriatic Petrochemical Association" + ship_primary_colour = "#e3b302" + ship_secondary_colour = "#cfcfcf" + +/datum/shipbreaking_owner/shipping/orion_spur + owner_name = "Orion Spur Logistics" + ship_primary_colour = "#e3b302" + ship_secondary_colour = "#16d8d2" + +/datum/shipbreaking_owner/shipping/li_interstellar + owner_name = "Li Interstellar & Industrial" + ship_primary_colour = "#d6d6d6" + ship_secondary_colour = "#844384" + +/datum/shipbreaking_owner/shipping/footpath + owner_name = "Footpath Stellar Transit" + ship_primary_colour = "#ffe100" + ship_secondary_colour = "#87cce2" + +/datum/shipbreaking_owner/shipping/ibex + owner_name = "Ibex Interstellar" + ship_primary_colour = "#acacac" + ship_secondary_colour = "#91e6db" + +/datum/shipbreaking_owner/shipping/beemster + owner_name = "Beemster Consumer Starworks" + ship_primary_colour = "#ddc7a4" + ship_secondary_colour = "#8c6743" + +/datum/shipbreaking_owner/shipping/negative + owner_name = "Negative Pressure Shipping Company" + ship_primary_colour = "#dab643" + ship_secondary_colour = "#94ce82" + +/datum/shipbreaking_owner/shipping/red_sun_over_paradise + owner_name = "Red Sun Faring" + ship_primary_colour = "#d37e1c" + ship_secondary_colour = "#722c1e" + +/datum/shipbreaking_owner/shipping/princeton + owner_name = "Nouveau-Prince Interstellar Freight" + ship_primary_colour = "#2e8332" + ship_secondary_colour = "#343434" + +/datum/shipbreaking_owner/shipping/arrai + owner_name = "Arrai-Tistodo Obligate Movers" + ship_primary_colour = "#353535" + ship_secondary_colour = "#7e2a2a" diff --git a/modular_doppler/shipbreaking/code/prior_owners/unique.dm b/modular_doppler/shipbreaking/code/prior_owners/unique.dm new file mode 100644 index 00000000000000..9027939805e3b6 --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners/unique.dm @@ -0,0 +1,4 @@ +/datum/shipbreaking_owner/pallas + owner_name = "Pallas Cat Authority" + ship_primary_colour = COLOR_GOLD + ship_secondary_colour = COLOR_DARK diff --git a/modular_doppler/shipbreaking/code/prior_owners_base.dm b/modular_doppler/shipbreaking/code/prior_owners_base.dm new file mode 100644 index 00000000000000..6f3e97ab737d63 --- /dev/null +++ b/modular_doppler/shipbreaking/code/prior_owners_base.dm @@ -0,0 +1,7 @@ +/datum/shipbreaking_owner + /// What is the name of the last owner + var/owner_name + /// Primary colour of ships with this owner + var/ship_primary_colour + /// Secondary colour of ships with this owner + var/ship_secondary_colour diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 9f342c9e0ca574..6cd7411d9e2b7d 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -10,13 +10,38 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( /obj/tear_in_reality, ))) +// Circuit and RND + +/obj/item/circuitboard/computer/salvage_computer + name = "Salvage Bay Controller" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/computer/salvage_bay_controller + +/datum/design/board/salvage_computer + name = "Salvage Bay Controller" + desc = "A bulky and old looking terminal that looks like it was dug straight out of the bottom of the ship's \ + databanks. Likely to be from the very early concept stages of the Dark Locations type ships, where resources \ + would be obtained through recycling the many old pioneer vessels scattered through the system." + id = "salvage_computer" + build_path = /obj/machinery/computer/salvage_bay_controller + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + +/datum/techweb_node/mining/New() + design_ids += list( + "salvage_computer", + ) + return ..() + +// Everything else + /obj/machinery/computer/salvage_bay_controller name = "salvage bay control console" desc = "A bulky and old looking terminal that looks like it was dug straight out of the bottom of the ship's \ databanks. Likely to be from the very early concept stages of the Dark Locations type ships, where resources \ - would be obtained through recycling the many old pioneer vessels scattered through the system. While planetary \ - extraction was deemed easier, the designs and systems still work, and the system is still filled with old ships \ - sitting mothballed in orbits all over." + would be obtained through recycling the many old pioneer vessels scattered through the system." icon_screen = "supply" circuit = /obj/item/circuitboard/computer/personal_shuttle_order light_color = COLOR_BRIGHT_ORANGE @@ -25,9 +50,7 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( /// The docking clamp machine we are linked to var/obj/machinery/docking_clamp/clamp /// The types of shuttle templates we can call - var/list/valid_shuttle_templates = list( - /datum/map_template/shuttle/salvage_scrap/scrappie, - ) + var/list/valid_shuttle_templates = list() /// List of the subtypes for map templates we can buy, DO NOT SET DIRECTLY, USE VALID SHUTTLE TEMPLATES FOR DIFFERENT SELECTIONS var/list/valid_shuttle_templates_subtypes = list() /// Assoc list of every shuttle that can be purchased from the choice list, includes name and price and whatnot, filled on init of the console @@ -72,18 +95,19 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( /// Fills the shopping list with names and templates /obj/machinery/computer/salvage_bay_controller/proc/try_and_fill_shopping_list() if(!length(valid_shuttle_templates)) - message_admins("HEY!!! [src] had nothing in its valid shuttle templates list, this is wrong or you just spawned the basetype!!") - return + valid_shuttle_templates = subtypesof(/datum/map_template/shuttle/salvage_scrap) if(length(valid_shuttle_templates_subtypes)) message_admins("For some reason, [src] already had a filled valid_shuttle_templates_subtypes, this may or may not be a bug.") return - for(var/datum/template as anything in valid_shuttle_templates) + for(var/datum/map_template/shuttle/salvage_scrap/template as anything in valid_shuttle_templates) + if(!template.shows_up_as_salvage) + continue valid_shuttle_templates_subtypes.Add(template) // This makes the var a lie bog off -/// Not used yet, provides detail about the currently docked shuttle for a little lore -#define SALVAGE_CONSOLE_BAY_INFO "Bay Info" +/// Loads specifically "Scrappie" the training shuttle +#define SALVAGE_CONSOLE_TRAINING "Training Ship" /// Loads a new shuttle into the linked salvage bay if the bay is clear -#define SALVAGE_CONSOLE_NEW_SHUTTLE "New Shuttle" +#define SALVAGE_CONSOLE_NEW_SHUTTLE "New Salvage" /// Clears the bay of any shuttle currently inside of it #define SALVAGE_CONSOLE_CLEAR_BAY "Clear Bay" @@ -123,17 +147,24 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( docked_salvage.jumpToNullSpace() say("Dock clearing, keep clear of moving clamps to prevent injury.") bay_occupied = FALSE - if(SALVAGE_CONSOLE_NEW_SHUTTLE) + if(SALVAGE_CONSOLE_NEW_SHUTTLE, SALVAGE_CONSOLE_TRAINING) if(!clamp?.docking_port) say("Connection to salvage clamp lost, please check equipment and try again later.") return - var/datum/map_template/shuttle/salvage_template = pick(valid_shuttle_templates_subtypes) + var/datum/map_template/shuttle/salvage_template + if(menu_option == SALVAGE_CONSOLE_NEW_SHUTTLE) + salvage_template = pick(valid_shuttle_templates_subtypes) + else + salvage_template = /datum/map_template/shuttle/salvage_scrap/scrappie if(!salvage_template) say("No salvageable ships are available, please reference your local administrator.") return if(bay_occupied) say("Bay already occupied, or currently retrieving salvage, please wait.") return + if(clamp.check_for_clear_bay()) + say("Please ensure salvage bay is clear of work crew before collecting salvage.") + return bay_occupied = TRUE salvage_template = new salvage_template() var/obj/docking_port/mobile/loaded_port = SSshuttle.action_load(salvage_template, clamp.docking_port, FALSE) @@ -145,7 +176,7 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( say("Failed to retrieve ship for salvage, please try again later.") bay_occupied = FALSE -#undef SALVAGE_CONSOLE_BAY_INFO +#undef SALVAGE_CONSOLE_TRAINING #undef SALVAGE_CONSOLE_NEW_SHUTTLE #undef SALVAGE_CONSOLE_CLEAR_BAY @@ -160,12 +191,17 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( ticket_contents += "
" ticket_contents += "

Ship details:

" ticket_contents += "

Designation - [template.prior_name]
" - ticket_contents += "Prior Owner - [template.prior_owner]
" + ticket_contents += "Prior Owner - [template.prior_owner_datum.owner_name]
" ticket_contents += "Operation History from [template.prior_date]:
" ticket_contents += "[template.prior_usage]

" ticket_contents += "
" - ticket_contents += "

Ship Class - [template.ship_class]
" - ticket_contents += "[template.ship_hazards]

" + ticket_contents += "

Ship Class - [template.ship_class]


" + ticket_contents += "

Detected Hazards:

" + if(!length(template.ship_hazards)) + ticket_contents += "No hazards were detected, continue with caution.
" + else + for(var/hazard as anything in template.ship_hazards) + ticket_contents += "- [hazard]
" ticket_contents += "
" ticket_contents += "

Signature or stamp confirms receipt of salvage ownership, and that any and all contents of the salvage are the direct responsibility of all signees.

" ticket_contents += "

\[___________________________________\]

" diff --git a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm index b6ffa826882c62..497507385a0505 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttle_base.dm @@ -9,28 +9,44 @@ who_can_purchase = null width = 35 height = 24 + /// Is this ship going to show up in the random ships from the salvage controller? + var/shows_up_as_salvage = TRUE /// The name of the ship before it got abandoned, randomized if null var/prior_name = null /// A general ship class, similarly shaped ships should have the same class to help players var/ship_class = "UNKNOWN" /// What the ship was doing before it got abandoned, tells players what to expect inside the ship var/prior_usage = "BEING BROKEN" + /// DO NOT SET PRIOR_OWNER_DATUM IF YOU SET ANYTHING IN HERE, list of datum owner types this ship will pick from + var/list/prior_owner_random_list = list() /// Who owned the ship before it was salvage, randomized if null - var/prior_owner = null + var/datum/shipbreaking_owner/prior_owner_datum = null /// Operation date, "(year) to (year)", randomized if empty var/prior_date = null /// What kind of hazards the crews could expect to be in the ship, unknown by default - var/ship_hazards = "Unknown present hazards -- Proceed with caution" + var/list/ship_hazards = list() /datum/map_template/shuttle/salvage_scrap/New() . = ..() if(!prior_name) prior_name = pick_list_replacements(SALVAGE_SHUTTLE_STRINGS, "ship_name") - if(!prior_owner) - prior_owner = pick_list_replacements(SALVAGE_SHUTTLE_STRINGS, "ship_companies") + if(!prior_owner_datum) + var/list/random_owner_subtypes = list() + for(var/datum/shipbreaking_owner/past_owner_type as anything in prior_owner_random_list) + random_owner_subtypes += subtypesof(past_owner_type) + prior_owner_datum = pick(random_owner_subtypes) if(!prior_date) prior_date = "[rand(2490, 2504)] to [rand(2504, 2525)]" +/datum/map_template/shuttle/salvage_scrap/post_load(obj/docking_port/mobile/shuttle_port) + . = ..() + var/area/shuttle_area = get_area(shuttle_port) + for(var/atom/recolorable_thing as anything in shuttle_area.contents) + if(HAS_TRAIT(recolorable_thing, TRAIT_SHIP_PRIMARY_COLOUR)) + recolorable_thing.color = prior_owner_datum.ship_primary_colour + else if(HAS_TRAIT(recolorable_thing, TRAIT_SHIP_SECONDARY_COLOUR)) + recolorable_thing.color = prior_owner_datum.ship_secondary_colour + /obj/docking_port/mobile/salvage name = "salvaged shuttle" shuttle_id = "shuttle_salvage_scrap" @@ -77,10 +93,10 @@ /area/shuttle/salvaged_shuttle name = "Shuttle Salvage" requires_power = TRUE - always_unpowered = TRUE + always_unpowered = FALSE power_equip = FALSE power_light = FALSE - power_environ = FALSE + power_environ = TRUE power_apc_charge = FALSE default_gravity = ZERO_GRAVITY area_limited_icon_smoothing = /area/shuttle/salvaged_shuttle diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/cargo.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/cargo.dm new file mode 100644 index 00000000000000..3be052dc771ab9 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/cargo.dm @@ -0,0 +1,65 @@ +/datum/map_template/shuttle/salvage_scrap/meridian_cargo + name = "Meridian Cargo Shuttle" + suffix = "meridian_cargo" + ship_class = "Meridian Cargo Shuttle" + prior_usage = "Short range cargo delivery." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + SALVAGE_HAZARD_CARGO, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/shipping, + /datum/shipbreaking_owner/mining, + ) + +/datum/map_template/shuttle/salvage_scrap/ikwa_cargo + name = "Ikwa Heavy Cargo" + suffix = "ikwa_cargo" + ship_class = "Ikwa Heavy Cargo" + prior_usage = "Long range cargo hauling." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_COOLANT, + SALVAGE_HAZARD_CARGO, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/shipping, + ) + +/datum/map_template/shuttle/salvage_scrap/ikwa_tanker + name = "Ikwa Fuel Tanker" + suffix = "ikwa_tanker" + ship_class = "Ikwa Fuel Tanker" + prior_usage = "Long range fuel hauling." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_COOLANT, + SALVAGE_HAZARD_CARGO, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/shipping, + /datum/shipbreaking_owner/mining, + /datum/shipbreaking_owner/military, + ) + +/datum/map_template/shuttle/salvage_scrap/vautour_cargo + name = "Vautour Container Skipper" + suffix = "vautour_cargo" + ship_class = "Vautour Container Skipper" + prior_usage = "Inter-orbital container and large cargo shipping." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_COOLANT, + SALVAGE_HAZARD_CARGO, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/shipping, + ) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm index df1887446ecf96..355ac6229dddeb 100644 --- a/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/example.dm @@ -5,6 +5,12 @@ suffix = "scrappie" prior_name = "Scrappie" ship_class = "Training Ship" - prior_usage = "Unknown history" - prior_owner = "Pallas Cat Authority" + prior_usage = "Shipbreaker training vessel." + ship_hazards = list( + SALVAGE_HAZARD_COOLANT, + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_CARGO, + ) + prior_owner_datum = /datum/shipbreaking_owner/pallas prior_date = "2520 to Present" + shows_up_as_salvage = FALSE // scrappie doesn't randomly roll with the other shuttles diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/military.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/military.dm new file mode 100644 index 00000000000000..ea6b7778fa5d61 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/military.dm @@ -0,0 +1,14 @@ +/datum/map_template/shuttle/salvage_scrap/fengzhou_patrol + name = "Fengzhou Short Range Patrol" + suffix = "ikwa_cargo" + ship_class = "Fengzhou Short Range Patrol" + prior_usage = "Local system security patrols." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + SALVAGE_HAZARD_WEAPONS + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/military, + ) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/passenger.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/passenger.dm new file mode 100644 index 00000000000000..b666b5ab80c905 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/passenger.dm @@ -0,0 +1,15 @@ +/datum/map_template/shuttle/salvage_scrap/meridian_passenger + name = "Meridian Station Hopper" + suffix = "meridian_passenger" + ship_class = "Meridian Station Hopper" + prior_usage = "Short range passenger transfer." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/shipping, + /datum/shipbreaking_owner/medical, + /datum/shipbreaking_owner/mining, + ) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/research.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/research.dm new file mode 100644 index 00000000000000..57c89f7b92b043 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/research.dm @@ -0,0 +1,15 @@ +/datum/map_template/shuttle/salvage_scrap/meridian_exolab + name = "Meridian Exolab" + suffix = "meridian_exolab" + ship_class = "Meridian Exolab" + prior_usage = "Local system research and surveys." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + SALVAGE_HAZARD_CARGO, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/research, + /datum/shipbreaking_owner/medical, + ) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/salvage.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/salvage.dm new file mode 100644 index 00000000000000..e4723e6a08601a --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/salvage.dm @@ -0,0 +1,16 @@ +/datum/map_template/shuttle/salvage_scrap/vautour_salvage + name = "Vautour Salvage Runner" + suffix = "vautour_salvage" + ship_class = "Vautour Salvage Runner" + prior_usage = "In-situ salvage operations." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_COOLANT, + SALVAGE_HAZARD_CARGO, + SALVAGE_HAZARD_FUEL, + SALVAGE_HAZARD_REACTOR, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/shipping, + /datum/shipbreaking_owner/mining, + ) diff --git a/modular_doppler/shipbreaking/code/salvage_shuttles/unmanned.dm b/modular_doppler/shipbreaking/code/salvage_shuttles/unmanned.dm new file mode 100644 index 00000000000000..ec69031ffe3675 --- /dev/null +++ b/modular_doppler/shipbreaking/code/salvage_shuttles/unmanned.dm @@ -0,0 +1,28 @@ +/datum/map_template/shuttle/salvage_scrap/solar_probe + name = "Solestra Probe (Research)" + suffix = "solestra_probe" + ship_class = "Solestra Probe" + prior_usage = "Unmanned research data collection and observation" + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_SHIPMIND, + SALVAGE_HAZARD_COOLANT, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/research, + ) + +/datum/map_template/shuttle/salvage_scrap/mining_probe + name = "Solestra Probe (Mining)" + suffix = "solestra_probe_mining" + ship_class = "Solestra Probe" + prior_usage = "Unmanned material and geological surveys." + ship_hazards = list( + SALVAGE_HAZARD_ELECTRICAL, + SALVAGE_HAZARD_SHIPMIND, + SALVAGE_HAZARD_COOLANT, + SALVAGE_HAZARD_FUEL, + ) + prior_owner_random_list = list( + /datum/shipbreaking_owner/mining, + ) diff --git a/modular_doppler/shipbreaking/code/shuttle_decoration.dm b/modular_doppler/shipbreaking/code/shuttle_decoration.dm new file mode 100644 index 00000000000000..a1b85ca412eac5 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_decoration.dm @@ -0,0 +1,63 @@ +/obj/structure/shuttle_decoration + abstract_type = /obj/structure/shuttle_decoration + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + obj_flags = CAN_BE_HIT | IGNORE_DENSITY + density = FALSE + anchored = TRUE + pass_flags_self = LETPASSTHROW|PASSSTRUCTURE + armor_type = /datum/armor/structure_railing + max_integrity = 75 + layer = LOW_ITEM_LAYER + /// How long to either unwrench or unweld + var/unfasten_time = 1 SECONDS + /// Does this need to be welded off the wall, instead of using a wrench + var/requires_welder = FALSE + +/obj/structure/shuttle_decoration/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) + AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) + find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + register_context() + +/obj/structure/shuttle_decoration/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(isnull(held_item)) + return NONE + if(requires_welder) + if(held_item.tool_behaviour == TOOL_WELDER) + context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" + return CONTEXTUAL_SCREENTIP_SET + else + if(held_item.tool_behaviour == TOOL_WRENCH) + context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" + return CONTEXTUAL_SCREENTIP_SET + +/obj/structure/shuttle_decoration/examine(mob/user) + . = ..() + if(requires_welder) + . += span_notice("Can be removed by cutting it off.") + else + . += span_notice("Can be removed by unfastening it.") + +/// Disconnects the part from the wall its mounted on +/obj/structure/shuttle_decoration/proc/knock_down() + set_anchored(FALSE) + +/obj/structure/shuttle_decoration/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(requires_welder) + return NONE + default_unfasten_wrench(user, tool, time = unfasten_time) + return ITEM_INTERACT_SUCCESS + +/obj/structure/shuttle_decoration/welder_act(mob/living/user, obj/item/tool) + if(!requires_welder) + return NONE + balloon_alert(user, anchored ? "cutting..." : "securing...") + if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) + return ITEM_INTERACT_BLOCKING + set_anchored(!anchored) + if(anchored) + find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + return ITEM_INTERACT_SUCCESS diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm b/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm index bba9c9ad352c6d..8281e4fc6307a0 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/airlocks.dm @@ -4,6 +4,7 @@ icon = 'modular_doppler/shipbreaking/icons/doors.dmi' icon_state = "exterior" pass_flags_self = PASSDOORS + smoothing_groups = SMOOTH_GROUP_AIRLOCK armor_type = /datum/armor/machinery_door disassembled_type = /obj/structure/hull_plating/airlock @@ -87,6 +88,7 @@ opacity = TRUE density = TRUE pass_flags_self = PASSDOORS + smoothing_groups = SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_WALLS max_integrity = 150 armor_type = /datum/armor/machinery_door /// What does this unweld into @@ -113,4 +115,4 @@ name = "disconnected maintenance panel" desc = "A maintenance panel used for access to crawlspaces and engines in ships, this one has been cut from the frame." icon_state = "access_free" - reconnect_type = /obj/structure/mineral_door/manual_colony_door/shuttle/interior + reconnect_type = /obj/structure/shuttle_access_panel diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/crates.dm b/modular_doppler/shipbreaking/code/shuttle_parts/crates.dm new file mode 100644 index 00000000000000..c2f93bc91ee764 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/crates.dm @@ -0,0 +1,117 @@ +/obj/structure/closet/shipping_container + name = "shipping container" + desc = "Heavy duty shipping containers, insulated from pressure and temperature changes, and resistant to most impacts." + icon = 'modular_doppler/shipbreaking/icons/closet.dmi' + icon_state = "shipping" + base_icon_state = "shipping" + delivery_icon = null + sealed = TRUE + paint_jobs = null + can_weld_shut = TRUE + can_install_electronics = FALSE + mob_storage_capacity = 5 + storage_capacity = 50 + inertia_force_weight = 2 + drag_slowdown = 3 + max_integrity = 400 + door_anim_time = 0 // no animation + contents_pressure_protection = 1 + contents_thermal_insulation = 1 + material_drop = /obj/item/stack/sheet/plasteel + material_drop_amount = 5 + custom_materials = list( + /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 5, + ) + /// The chance that this container spawns welded shut + var/welded_chance = 15 + +/obj/structure/closet/shipping_container/secured + anchored = TRUE + +/obj/structure/closet/shipping_container/Initialize(mapload) + . = ..() + base_icon_state = pick( + "shipping", + "shippingyellow", + "shippinggreen", + "shippingred", + "shippingourple", + ) + icon_state = base_icon_state + if(prob(welded_chance)) + welded = TRUE + update_appearance(UPDATE_ICON) + +/obj/structure/closet/crate/shuttle + name = "shipping crate" + desc = "A soft, padded crate for shipping things around without denting up your walls, or your skull, when someone hits the brakes." + icon = 'modular_doppler/shipbreaking/icons/crates.dmi' + icon_state = "soft" + base_icon_state = "soft" + lid_icon_state = "softopen" + delivery_icon = null + sealed = FALSE + resistance_flags = FLAMMABLE + pass_flags_self = PASSSTRUCTURE + cutting_tool = /obj/item/wirecutters + material_drop = /obj/item/stack/sheet/durathread + material_drop_amount = 4 + open_sound = 'sound/items/poster/poster_ripped.ogg' + close_sound = 'sound/machines/cardboard_box.ogg' + open_sound_volume = 25 + close_sound_volume = 25 + paint_jobs = null + can_weld_shut = FALSE + can_install_electronics = FALSE + dense_when_open = FALSE + mob_storage_capacity = 0 + storage_capacity = 20 + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + ) + contents_pressure_protection = 0 + contents_thermal_insulation = 0.1 + +/obj/structure/closet/crate/shuttle/secured + anchored = TRUE + +/obj/structure/closet/crate/shuttle/small + name = "small shipping crate" + desc = "A soft, padded crate for shipping small things around without denting up your walls, or your skull, when someone hits the brakes." + icon_state = "softsmall" + base_icon_state = "softsmall" + lid_icon_state = "softsmallopen" + material_drop_amount = 2 + storage_capacity = 10 + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT, + ) + +/obj/structure/closet/crate/shuttle/small/secured + anchored = TRUE + +/obj/structure/closet/crate/shuttle_hard + name = "hard shipping crate" + desc = "A hard plastic crate for shipping valuable things that don't like to go bump in the night." + icon = 'modular_doppler/shipbreaking/icons/crates.dmi' + icon_state = "hard" + base_icon_state = "hard" + lid_icon_state = "hardopen" + delivery_icon = null + sealed = TRUE + material_drop = /obj/item/stack/sheet/plastic_wall_panel + material_drop_amount = 4 + paint_jobs = null + can_weld_shut = FALSE + can_install_electronics = FALSE + mob_storage_capacity = 1 + storage_capacity = 30 + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, + ) + contents_pressure_protection = 1 + contents_thermal_insulation = 0.75 + +/obj/structure/closet/crate/shuttle_hard/secured + anchored = TRUE diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/engine_covers.dm b/modular_doppler/shipbreaking/code/shuttle_parts/engine_covers.dm new file mode 100644 index 00000000000000..5eebf1a9334334 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/engine_covers.dm @@ -0,0 +1,107 @@ +/obj/structure/engine_covers + abstract_type = /obj/structure/engine_covers + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + icon_state = null + flags_1 = ON_BORDER_1 + obj_flags = CAN_BE_HIT | IGNORE_DENSITY + density = FALSE + anchored = TRUE + pass_flags_self = LETPASSTHROW|PASSSTRUCTURE + armor_type = /datum/armor/nanocarbon_anything + max_integrity = 150 + layer = ABOVE_OBJ_LAYER + inertia_force_weight = 2 + /// How long to unweld + var/unfasten_time = 1 SECONDS + +/obj/structure/engine_covers/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) + AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) + var/static/list/loc_connections = list( + COMSIG_ATOM_EXIT = PROC_REF(on_exit), + ) + AddElement(/datum/element/connect_loc, loc_connections) + register_context() + +/obj/structure/engine_covers/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(isnull(held_item)) + return NONE + if(held_item.tool_behaviour == TOOL_WELDER) + context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" + return CONTEXTUAL_SCREENTIP_SET + +/obj/structure/engine_covers/examine(mob/user) + . = ..() + . += span_notice("You can [anchored ? "unsecure" : "secure"] it with a welding tool.") + +/obj/structure/engine_covers/welder_act(mob/living/user, obj/item/tool) + balloon_alert(user, anchored ? "cutting..." : "securing...") + if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) + return ITEM_INTERACT_BLOCKING + set_anchored(!anchored) + return ITEM_INTERACT_SUCCESS + +/// Determines what to do when something is leaving our turf +/obj/structure/engine_covers/proc/on_exit(datum/source, atom/movable/leaving, direction) + SIGNAL_HANDLER + if(leaving == src) + return // Let's not block ourselves. + if(!(direction & dir)) + return + if (!density) + return + if (leaving.movement_type & (PHASING)) + return + if (leaving.move_force >= MOVE_FORCE_EXTREMELY_STRONG) + return + leaving.Bump(src) + return COMPONENT_ATOM_BLOCK_EXIT + +/obj/structure/engine_covers/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + if(border_dir != dir) + return TRUE + +/obj/structure/engine_covers/CanPass(atom/movable/mover, border_dir) + return (border_dir & dir) ? ..() : TRUE + +/obj/structure/engine_covers/CanAStarPass(to_dir, datum/can_pass_info/pass_info) + return !density || (dir != to_dir) + +/obj/structure/engine_covers/can_atmos_pass(turf/the_turf, vertical = FALSE) + if(get_dir(loc, the_turf) == dir) + return !density + else + return TRUE + +/obj/structure/engine_covers/thruster_nozzle + name = "thruster nozzle" + desc = "A protective nozzle for shuttle engines, to keep debris from getting inside the combustion chamber." + icon_state = "nozzle" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + ) + +/obj/structure/engine_covers/heater_cover + name = "engine cover" + desc = "A protective cover for engine components, as well as a barrier to prevent atmosphere escape." + icon_state = "engine_plate" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + ) + +/obj/structure/engine_covers/ion_plate + name = "ion plate" + desc = "An orbital engine using extremely high voltages and a bit of lead for good luck to propel ships without \ + needing to use expensive chemical fuels." + icon_state = "ion_plate" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/engines.dm b/modular_doppler/shipbreaking/code/shuttle_parts/engines.dm new file mode 100644 index 00000000000000..9a84dd4b4aa146 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/engines.dm @@ -0,0 +1,44 @@ +/obj/machinery/power/shuttle_engine/heater/salvage + name = "combustion chamber" + desc = "Large tanks, turbopumps, valves, pipes, everything you need to combine chemical fuels into just the right \ + combination to work as a rocket rather than a giant bomb." + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + icon_state = "chamber" + circuit = null + inertia_force_weight = 2 + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 8, + ) + +/obj/machinery/power/shuttle_engine/heater/salvage/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) + +// Don't want people accidentally deconstructing these and losing all the resources +/obj/machinery/power/shuttle_engine/heater/salvage/crowbar_act(mob/living/user, obj/item/tool) + return + +/obj/machinery/power/shuttle_engine/propulsion/salvage + name = "chemical propulsion engine" + desc = "The bell of an old type of chemical combustion engine for ship propulsion. Uses a comedically toxic \ + tri-propellant mix banned from the atmospheres of most inhabited planets with a specific impulse into the thousands of \ + seconds." + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + icon_state = "engine" + circuit = null + inertia_force_weight = 2 + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 12, + /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, + ) + +/obj/machinery/power/shuttle_engine/propulsion/salvage/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) + +// Don't want people accidentally deconstructing these and losing all the resources +/obj/machinery/power/shuttle_engine/propulsion/salvage/crowbar_act(mob/living/user, obj/item/tool) + return diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm b/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm new file mode 100644 index 00000000000000..b1bb5d38ad246c --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm @@ -0,0 +1,92 @@ +/obj/machinery/exoscanner/shuttle_part + abstract_type = /obj/machinery/exoscanner/shuttle_part + icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' + icon_state = null + circuit = null + layer = LOW_ITEM_LAYER + +/obj/machinery/exoscanner/shuttle_part/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) + find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + +/obj/machinery/exoscanner/shuttle_part/screwdriver_act(mob/user, obj/item/tool) + return + +/obj/machinery/exoscanner/shuttle_part/update_icon_state() + . = ..() + icon_state = base_icon_state + +/// Disconnects the part from the wall its mounted on +/obj/machinery/exoscanner/shuttle_part/proc/knock_down() + set_anchored(FALSE) + +/obj/machinery/exoscanner/shuttle_part/radar_panel + name = "radar panel" + desc = "A radar panel, made to be mounted flat to the walls of ships for directional scanning." + icon_state = "radar_panel" + base_icon_state = "radar_panel" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radar_panel, 3) + +/obj/machinery/exoscanner/shuttle_part/sensors_blister + name = "sensors blister" + desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ + housing. This one was left closed." + icon_state = "blister_closed" + base_icon_state = "blister_closed" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/sensors_blister, 18) + +// The north facing one has to be special due to the antennae +/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/north + SET_BASE_PIXEL(0, 26) + +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister + name = "sensors blister" + desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ + housing. This one was left open." + icon_state = "blister_open" + base_icon_state = "blister_open" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/open_sensors_blister, 18) + +// The north facing one has to be special due to the antennae +/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north + SET_BASE_PIXEL(0, 26) + +/obj/machinery/exoscanner/shuttle_part/radio_dish + name = "radio dish" + desc = "A directional radio dish, for extremely long range communication and sensing." + icon_state = "dish" + base_icon_state = "dish" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 12) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm index b7101c39994b0d..86cb2837c8a5f7 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/exterior_pieces.dm @@ -1,250 +1,3 @@ -// Shuttle engine covers - -/obj/structure/engine_covers - abstract_type = /obj/structure/engine_covers - icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' - icon_state = null - flags_1 = ON_BORDER_1 - obj_flags = CAN_BE_HIT | IGNORE_DENSITY - density = FALSE - anchored = TRUE - pass_flags_self = LETPASSTHROW|PASSSTRUCTURE - armor_type = /datum/armor/nanocarbon_anything - max_integrity = 150 - layer = ABOVE_OBJ_LAYER - /// How long to unweld - var/unfasten_time = 1 SECONDS - -/obj/structure/engine_covers/Initialize(mapload) - . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) - var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = PROC_REF(on_exit), - ) - AddElement(/datum/element/connect_loc, loc_connections) - register_context() - -/obj/structure/engine_covers/add_context(atom/source, list/context, obj/item/held_item, mob/user) - . = ..() - if(isnull(held_item)) - return NONE - if(held_item.tool_behaviour == TOOL_WELDER) - context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" - return CONTEXTUAL_SCREENTIP_SET - -/obj/structure/engine_covers/examine(mob/user) - . = ..() - . += span_notice("You can [anchored ? "unsecure" : "secure"] it with a welding tool.") - -/obj/structure/engine_covers/welder_act(mob/living/user, obj/item/tool) - balloon_alert(user, anchored ? "cutting..." : "securing...") - if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) - return ITEM_INTERACT_BLOCKING - set_anchored(!anchored) - return ITEM_INTERACT_SUCCESS - -/// Determines what to do when something is leaving our turf -/obj/structure/engine_covers/proc/on_exit(datum/source, atom/movable/leaving, direction) - SIGNAL_HANDLER - if(leaving == src) - return // Let's not block ourselves. - if(!(direction & dir)) - return - if (!density) - return - if (leaving.movement_type & (PHASING)) - return - if (leaving.move_force >= MOVE_FORCE_EXTREMELY_STRONG) - return - leaving.Bump(src) - return COMPONENT_ATOM_BLOCK_EXIT - -/obj/structure/engine_covers/CanAllowThrough(atom/movable/mover, border_dir) - . = ..() - if(border_dir != dir) - return TRUE - -/obj/structure/engine_covers/CanPass(atom/movable/mover, border_dir) - return (border_dir & dir) ? ..() : TRUE - -/obj/structure/engine_covers/CanAStarPass(to_dir, datum/can_pass_info/pass_info) - return !density || (dir != to_dir) - -/obj/structure/engine_covers/can_atmos_pass(turf/the_turf, vertical = FALSE) - if(get_dir(loc, the_turf) == dir) - return !density - else - return TRUE - -/obj/structure/engine_covers/thruster_nozzle - name = "thruster nozzle" - desc = "A protective nozzle for shuttle engines, to keep debris from getting inside the combustion chamber." - icon_state = "nozzle" - -/obj/structure/engine_covers/heater_cover - name = "engine cover" - desc = "A protective cover for engine components, as well as a barrier to prevent atmosphere escape." - icon_state = "engine_plate" - -// Anything that uses an existing machine for function - -/obj/machinery/exoscanner/shuttle_part - abstract_type = /obj/machinery/exoscanner/shuttle_part - icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' - icon_state = null - circuit = null - layer = LOW_ITEM_LAYER - -/obj/machinery/exoscanner/shuttle_part/Initialize(mapload) - . = ..() - find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) - -/obj/machinery/exoscanner/shuttle_part/screwdriver_act(mob/user, obj/item/tool) - return - -/obj/machinery/exoscanner/shuttle_part/update_icon_state() - . = ..() - icon_state = base_icon_state - -/// Disconnects the part from the wall its mounted on -/obj/machinery/exoscanner/shuttle_part/proc/knock_down() - set_anchored(FALSE) - -/obj/machinery/exoscanner/shuttle_part/radar_panel - name = "radar panel" - desc = "A radar panel, made to be mounted flat to the walls of ships for directional scanning." - icon_state = "radar_panel" - base_icon_state = "radar_panel" - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, - /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, - /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, - /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, - ) - -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radar_panel, 3) - -/obj/machinery/exoscanner/shuttle_part/sensors_blister - name = "sensors blister" - desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ - housing. This one was left closed." - icon_state = "blister_closed" - base_icon_state = "blister_closed" - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, - /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, - ) - -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/sensors_blister, 18) - -// The north facing one has to be special due to the antennae -/obj/machinery/exoscanner/shuttle_part/sensors_blister/directional/north - SET_BASE_PIXEL(0, 26) - -/obj/machinery/exoscanner/shuttle_part/open_sensors_blister - name = "sensors blister" - desc = "A tightly-packed sensors blister holding all manner of receiving and transmitting equipment in a protective \ - housing. This one was left open." - icon_state = "blister_open" - base_icon_state = "blister_open" - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, - /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, - ) - -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/open_sensors_blister, 18) - -// The north facing one has to be special due to the antennae -/obj/machinery/exoscanner/shuttle_part/open_sensors_blister/directional/north - SET_BASE_PIXEL(0, 26) - -/obj/machinery/exoscanner/shuttle_part/radio_dish - name = "radio dish" - desc = "A directional radio dish, for extremely long range communication and sensing." - icon_state = "dish" - base_icon_state = "dish" - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, - /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, - /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, - /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, - ) - -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/exoscanner/shuttle_part/radio_dish, 12) - -// Special type for inert decorations - -/obj/structure/shuttle_decoration - abstract_type = /obj/structure/shuttle_decoration - icon = 'modular_doppler/shipbreaking/icons/exterior.dmi' - obj_flags = CAN_BE_HIT | IGNORE_DENSITY - density = FALSE - anchored = TRUE - pass_flags_self = LETPASSTHROW|PASSSTRUCTURE - armor_type = /datum/armor/structure_railing - max_integrity = 75 - layer = LOW_ITEM_LAYER - /// How long to either unwrench or unweld - var/unfasten_time = 1 SECONDS - /// Does this need to be welded off the wall, instead of using a wrench - var/requires_welder = FALSE - -/obj/structure/shuttle_decoration/Initialize(mapload) - . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) - find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) - register_context() - -/obj/structure/shuttle_decoration/add_context(atom/source, list/context, obj/item/held_item, mob/user) - . = ..() - if(isnull(held_item)) - return NONE - if(requires_welder) - if(held_item.tool_behaviour == TOOL_WELDER) - context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" - return CONTEXTUAL_SCREENTIP_SET - else - if(held_item.tool_behaviour == TOOL_WRENCH) - context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" - return CONTEXTUAL_SCREENTIP_SET - -/obj/structure/shuttle_decoration/examine(mob/user) - . = ..() - if(requires_welder) - . += span_notice("Can be removed by cutting it off.") - else - . += span_notice("Can be removed by unfastening it.") - -/// Disconnects the part from the wall its mounted on -/obj/structure/shuttle_decoration/proc/knock_down() - set_anchored(FALSE) - -/obj/structure/shuttle_decoration/wrench_act(mob/living/user, obj/item/tool) - . = ..() - if(requires_welder) - return NONE - default_unfasten_wrench(user, tool, time = unfasten_time) - return ITEM_INTERACT_SUCCESS - -/obj/structure/shuttle_decoration/welder_act(mob/living/user, obj/item/tool) - if(!requires_welder) - return NONE - balloon_alert(user, anchored ? "cutting..." : "securing...") - if(!tool.use_tool(src, user, unfasten_time, amount = 1, volume=50)) - return ITEM_INTERACT_BLOCKING - set_anchored(!anchored) - if(anchored) - find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) - return ITEM_INTERACT_SUCCESS - /obj/structure/shuttle_decoration/rcs name = "reaction control thruster" desc = "A small cold gas thruster used to orient the ship in place while in space." @@ -284,6 +37,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/ladder_black, 5) desc = "A narrow catwalk for use on EVA." icon_state = "catwalk" layer = CATWALK_LAYER + plane = FLOOR_PLANE + obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, @@ -345,8 +100,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/radiator, 4) /// Makes a cloud of extinguisher foam at the tile given /obj/structure/shuttle_decoration/extinguisher/proc/make_the_foam(turf/target_turf) var/datum/effect_system/fluid_spread/foam/foam = new - var/datum/reagents/foamreagent = new /datum/reagents(25) - foamreagent.add_reagent(/datum/reagent/firefighting_foam, 25) + var/datum/reagents/foamreagent = new /datum/reagents(60) + foamreagent.add_reagent(/datum/reagent/firefighting_foam, 60) foam.set_up(4, holder = src, location = target_turf, carry = foamreagent) foam.start() @@ -409,123 +164,25 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/landing_engine, 15 MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/aux_engine, 10) -/obj/structure/shuttle_decoration/wall_plate - abstract_type = /obj/structure/shuttle_decoration/wall_plate - icon = 'modular_doppler/shipbreaking/icons/wall_platings.dmi' - max_integrity = 125 - unfasten_time = 2 SECONDS - requires_welder = TRUE - /// What type of hull plate object do we spawn when cut off the wall - var/obj/structure/hull_plating/cut_plating = /obj/structure/hull_plating - /// Do we transfer our color to the cut_plating - var/keep_color = FALSE - -/obj/structure/shuttle_decoration/wall_plate/knock_down() - new cut_plating(get_turf(src)) - qdel(src) - -/obj/structure/shuttle_decoration/wall_plate/welder_act(mob/living/user, obj/item/tool) - if(!requires_welder) - return NONE - balloon_alert(user, "cutting...") - if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) - return ITEM_INTERACT_BLOCKING - var/obj/new_plating = new cut_plating(get_turf(src)) - if(keep_color) - new_plating.color = color - qdel(src) - return ITEM_INTERACT_SUCCESS - -/obj/structure/shuttle_decoration/wall_plate/gold_foil - name = "gold foil wrapping" - desc = "Gold foil insulation to keep the heat in (or out) of a ship or satellite." - icon_state = "gold_foil" - cut_plating = /obj/structure/hull_plating/gold_foil - -/obj/structure/shuttle_decoration/wall_plate/gold_foil/diagonal - icon_state = "gold_foil_diag" - -/obj/structure/shuttle_decoration/wall_plate/silver_foil - name = "silver foil wrapping" - desc = "Silver foil insulation to keep the heat in (or out) of a ship or satellite." - icon_state = "silver_foil" - cut_plating = /obj/structure/hull_plating/silver_foil - -/obj/structure/shuttle_decoration/wall_plate/silver_foil/diagonal - icon_state = "silver_foil_diag" - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon - name = "nanocarbon hull screen" - desc = "A standoff screen of nanocarbon used typically for in atmosphere aerodynamics, or layered protection." - icon_state = "nanocarbon" - cut_plating = /obj/structure/hull_plating/nanocarbon/floor - keep_color = TRUE - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal - icon_state = "nanocarbon_diag" - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/ex_act(severity, target) - . = ..() - if(severity >= EXPLODE_HEAVY) - nanocarbon_nuke() - return TRUE - -/// Makes shards of nanocarbon -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/proc/nanocarbon_nuke() - var/random_shards = 2 - for(var/iteration in 1 to random_shards) - var/obj/item/shard = new /obj/item/nanocarbon_shard(src) - shard.pixel_x = rand(-6, 6) - shard.pixel_y = rand(-6, 6) - shard.color = color - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black - color = COLOR_DARK - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/black - color = COLOR_DARK - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/standard - color = COLOR_SILVER - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/standard - color = COLOR_SILVER - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/red - color = COLOR_BUBBLEGUM_RED - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/red - color = COLOR_BUBBLEGUM_RED - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/green - color = COLOR_IRISH_GREEN - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/green - color = COLOR_IRISH_GREEN - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue - color = COLOR_COMMAND_BLUE - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/blue - color = COLOR_COMMAND_BLUE - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow - color = COLOR_GOLD - -/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/yellow - color = COLOR_GOLD +/obj/structure/shuttle_decoration/junction_box + name = "junction box" + desc = "A power junction box for routing high voltage power through a ship's systems." + icon_state = "junction" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) -/obj/structure/shuttle_decoration/wall_plate/armor - name = "armor plating" - desc = "Thick armor plating to protect ships from anything between asteroid impacts and weapons fire." - icon_state = "armor" - cut_plating = /obj/structure/hull_plating/armor_panels +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/junction_box, 4) -/obj/structure/shuttle_decoration/wall_plate/armor/diagonal - icon_state = "armor_diag" +/obj/structure/shuttle_decoration/console + name = "computer console" + desc = "Controls for the ship, monitoring for the reactor, or even just a screen for watching \"Extremely Large Baseball\" on." + icon_state = "console" + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, + ) -/obj/structure/shuttle_decoration/wall_plate/plastamic - name = "plastamic cladding" - desc = "Polymer sheets used to cover a typically much uglier hull plate behind them." - icon_state = "plastic" - cut_plating = /obj/structure/hull_plating/plastamic_sheets +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/shuttle_decoration/console, 10) diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/girders.dm b/modular_doppler/shipbreaking/code/shuttle_parts/girders.dm new file mode 100644 index 00000000000000..dbdc45751405c1 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/girders.dm @@ -0,0 +1,41 @@ +/obj/structure/titanium_structure + name = "titanium framing" + desc = "A large skeleton made of titanium steel that makes up the outer structure of most ships" + icon = 'modular_doppler/shipbreaking/icons/smooth/girder_titan.dmi' + icon_state = "girder_titan-0" + base_icon_state = "girder_titan" + anchored = TRUE + density = TRUE + max_integrity = 200 + rad_insulation = RAD_VERY_LIGHT_INSULATION + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_GIRDER + canSmoothWith = SMOOTH_GROUP_GIRDER + SMOOTH_GROUP_WALLS + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 1, + ) + +/obj/structure/titanium_structure/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) + register_context() + +/obj/structure/titanium_structure/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(isnull(held_item)) + return NONE + if(held_item.tool_behaviour == TOOL_WELDER) + context[SCREENTIP_CONTEXT_LMB] = anchored ? "Unsecure" : "Secure" + return CONTEXTUAL_SCREENTIP_SET + +/obj/structure/titanium_structure/examine(mob/user) + . = ..() + . += span_notice("Can be removed by cutting it off.") + +/obj/structure/titanium_structure/welder_act(mob/living/user, obj/item/tool) + balloon_alert(user, anchored ? "cutting..." : "securing...") + if(!tool.use_tool(src, user, 2 SECONDS, amount = 1, volume=50)) + return ITEM_INTERACT_BLOCKING + set_anchored(!anchored) + return ITEM_INTERACT_SUCCESS diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hazards.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hazards.dm new file mode 100644 index 00000000000000..85ff8bc73efe2f --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hazards.dm @@ -0,0 +1,261 @@ +/obj/structure/shuttle_decoration/liquid_tank + abstract_type = /obj/structure/shuttle_decoration/liquid_tank + name = "liquid tank basetype" + desc = "A basetype for liquid tanks that you SHOULD NOT BE SEEING!!" + icon_state = "basic_tank" + density = TRUE + unfasten_time = 3 SECONDS + drag_slowdown = 3 + inertia_force_weight = 2 + /// What is the range of our rupture effects? Doesn't cover explosions. + var/rupture_range = 2 + +/// When the tank is damaged enough to break, this is what it does +/obj/structure/shuttle_decoration/liquid_tank/proc/rupture_tank() + return + +/obj/structure/shuttle_decoration/liquid_tank/battery + name = "ship battery" + desc = "A large ship's battery for long term storage of power, extremely dangerous when damaged." + icon_state = "battery" + custom_materials = list( + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + +/obj/structure/shuttle_decoration/liquid_tank/battery/rupture_tank() + tesla_zap(source = src, zap_range = 5, power = 1e7, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN | ZAP_ALLOW_DUPLICATES) + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/battery/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + tesla_zap(source = src, zap_range = 3, power = 1e4, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN | ZAP_ALLOW_DUPLICATES) + +/obj/structure/shuttle_decoration/liquid_tank/battery/shipmind + name = "HECS-2 Shipmind Core" + desc = "An automated shipmind core containing everything from flight control, battery storage, and even reaction wheels \ + for smaller vessels. A probe core suitable for advanced satellites and small ships. You are assured that these are \ + \"usually\" uninhabited." + icon_state = "shipmind" + custom_materials = list( + /datum/material/alloy/titaniumglass = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, + ) + /// Is this shipmind core inhabitable by ghosts with a soulcatcher? + var/has_soulcatcher = TRUE + +/obj/structure/shuttle_decoration/liquid_tank/battery/shipmind/Initialize(mapload) + . = ..() + if(has_soulcatcher) + var/datum/component/soulcatcher/shipmind = AddComponent(/datum/component/soulcatcher/shipmind_core) + shipmind.create_room(target_name = "Shipmind Corespace", target_desc = "An environment of constantly flowing information, data, controls, you should be in control of a ship, and yet your contacts have worn and senses dulled.") + +/obj/structure/shuttle_decoration/liquid_tank/battery/shipmind/inert + has_soulcatcher = FALSE + +/datum/component/soulcatcher/shipmind_core + name = "Defunct Shipmind Core" + ghost_joinable = TRUE + require_approval = FALSE + max_souls = 1 + communicate_as_parent = TRUE + removable = FALSE + +/obj/structure/shuttle_decoration/liquid_tank/coolant + name = "coolant tank" + desc = "A tank of semi-radioactive coolant used to keep the interiors of ships habitable. Freezes AND irradiates \ + everything around it when ruptured!" + icon_state = "coolant" + custom_materials = list( + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, + ) + rupture_range = 2 + +/obj/structure/shuttle_decoration/liquid_tank/coolant/industrial + name = "industrial coolant tank" + icon = 'modular_doppler/shipbreaking/icons/closet.dmi' + icon_state = "coolant_big" + custom_materials = list( + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, + ) + rupture_range = 5 + +// Basically does the same thing as a gluon grenade, radiation and freezing everyone nearby +/obj/structure/shuttle_decoration/liquid_tank/coolant/rupture_tank() + playsound(loc, 'sound/effects/empulse.ogg', 50, TRUE) + radiation_pulse(src, max_range = rupture_range, threshold = RAD_HEAVY_INSULATION, chance = 100) + for(var/turf/open/floor/floor in view(rupture_range, loc)) + floor.freeze_turf() + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/explosive + name = "tank of fuming acid" + desc = "One of the three components to standard chemical shuttle fuel of the last century, fuming acid. \ + Highly explosive if the tank is ruptured." + icon_state = "acid" + custom_materials = list( + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5, + ) + rupture_range = 4 + +/obj/structure/shuttle_decoration/liquid_tank/explosive/industrial + name = "industrial tank of fuming acid" + icon = 'modular_doppler/shipbreaking/icons/closet.dmi' + icon_state = "acid_big" + custom_materials = list( + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 7, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, + ) + rupture_range = 7 + +/obj/structure/shuttle_decoration/liquid_tank/explosive/rupture_tank() + playsound(src, 'sound/effects/bamf.ogg', 75, TRUE) + var/datum/effect_system/fluid_spread/foam/foam = new + var/datum/reagents/foamreagent = new /datum/reagents(100) + foamreagent.add_reagent(/datum/reagent/toxin/acid/nitracid, 30) + foamreagent.add_reagent(/datum/reagent/toxin/acid, 70) + foam.set_up(rupture_range, holder = src, location = get_turf(src), carry = foamreagent) + foam.start() + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine + name = "tank of nitrohydrazine" + desc = "One of the three components to standard chemical shuttle fuel of the last century, nitrohydrazine. \ + Highly explosive if the tank is ruptured, because hydrazine didn't have enough nitrogen already." + icon_state = "nitrohydrazine" + +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine/rupture_tank() + explosion(src, heavy_impact_range = 1, light_impact_range = 2, flame_range = 4, flash_range = 5, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine/industrial + name = "industrial tank of nitrohydrazine" + icon = 'modular_doppler/shipbreaking/icons/closet.dmi' + icon_state = "hydrazine_big" + +/obj/structure/shuttle_decoration/liquid_tank/explosive/hydrazine/industrial/rupture_tank() + explosion(src, heavy_impact_range = 2, light_impact_range = 4, flame_range = 8, flash_range = 12, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/explosive/lithium + name = "tank of lithium" + desc = "One of the three components to standard chemical shuttle fuel of the last century, lithium. \ + Highly explosive if the tank is ruptured." + icon_state = "lithium" + rupture_range = 2 + +/obj/structure/shuttle_decoration/liquid_tank/explosive/lithium/industrial + name = "industrial tank of lithium" + icon = 'modular_doppler/shipbreaking/icons/closet.dmi' + icon_state = "lithium_big" + rupture_range = 5 + +/obj/structure/shuttle_decoration/liquid_tank/explosive/lithium/rupture_tank() + playsound(src, 'sound/effects/bamf.ogg', 75, TRUE) + var/datum/effect_system/fluid_spread/foam/long/foam = new + var/datum/reagents/foamreagent = new /datum/reagents(100) + foamreagent.add_reagent(/datum/reagent/clf3, 50) + foamreagent.add_reagent(/datum/reagent/napalm, 50) + foam.set_up(rupture_range, holder = src, location = get_turf(src), carry = foamreagent) + foam.start() + explosion(src, heavy_impact_range = 0, light_impact_range = 0, flame_range = rupture_range, flash_range = rupture_range * 3, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/reactor + name = "ethereal bloom reactor" + desc = "Superceded by modern ship reactor designs, this older type of generator can be most accurately described as \ + a \"Tortured Chrysalid\". Utilizing the same type of core process that powers the ethereal, it recycles energy with nearly \ + perfect efficiency. Calling it a reactor is a complete misnomer, as these act more closely to a large battery \ + with a generational lifespan." + icon_state = "reactor" + custom_materials = list( + /datum/material/alloy/alien = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 6.5, + /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 4, + ) + light_on = TRUE + light_power = 2 + light_range = 3 + light_color = LIGHT_COLOR_PURPLE + rupture_range = 14 + +/obj/structure/shuttle_decoration/liquid_tank/reactor/rupture_tank() + playsound(src, 'modular_doppler/shipbreaking/sound/plasma_bomb.ogg', 100, FALSE, 70, pressure_affected = FALSE, ignore_walls = TRUE) + radiation_pulse(src, max_range = rupture_range, threshold = RAD_EXTREME_INSULATION, chance = 100) + var/vaporize_that_guy = rand(2, 4) + for(var/iterator in 1 to vaporize_that_guy) + tesla_zap(source = src, zap_range = rupture_range / 5, power = 1e7, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN | ZAP_ALLOW_DUPLICATES) + goonchem_vortex(get_turf(src), FALSE, 10) + explosion(src, heavy_impact_range = 3, light_impact_range = 7, flame_range = 12, flash_range = 23, silent = TRUE, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/reactor/super + name = "large ethereal bloom reactor" + icon_state = "super_reactor" + custom_materials = list( + /datum/material/alloy/alien = SHEET_MATERIAL_AMOUNT * 13, + /datum/material/alloy/plastitaniumglass = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 6, + /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 7, + ) + rupture_range = 25 + +/obj/structure/shuttle_decoration/liquid_tank/reactor/super/rupture_tank() + playsound(src, 'modular_doppler/shipbreaking/sound/plasma_bomb.ogg', 100, FALSE, 100, pressure_affected = FALSE, ignore_walls = TRUE) + radiation_pulse(src, max_range = 25, threshold = RAD_EXTREME_INSULATION, chance = 100) + var/vaporize_that_guy = rand(3, 6) + for(var/iterator in 1 to vaporize_that_guy) + tesla_zap(source = src, zap_range = 5, power = 5e7, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN | ZAP_ALLOW_DUPLICATES) + goonchem_vortex(get_turf(src), FALSE, 13) + explosion(src, heavy_impact_range = 5, light_impact_range = 10, flame_range = 15, flash_range = 34, silent = TRUE, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/liquid_tank/blob_act(obj/structure/blob/blob_bit) + rupture_tank() + +/obj/structure/shuttle_decoration/liquid_tank/ex_act() + rupture_tank() + return TRUE + +/obj/structure/shuttle_decoration/liquid_tank/fire_act(exposed_temperature, exposed_volume) + rupture_tank() + +/obj/structure/shuttle_decoration/liquid_tank/zap_act(power, zap_flags) + . = ..() + if(ZAP_OBJ_DAMAGE & zap_flags) + rupture_tank() + +/obj/structure/shuttle_decoration/liquid_tank/bullet_act(obj/projectile/hitting_projectile) + if(hitting_projectile.damage > 0 && ((hitting_projectile.damage_type == BURN) || (hitting_projectile.damage_type == BRUTE))) + log_bomber(hitting_projectile.firer, "ruptured", src, "via projectile") + rupture_tank() + return hitting_projectile.on_hit(src, 0) + return ..() + +/obj/structure/shuttle_decoration/liquid_tank/welder_act(mob/living/user, obj/item/tool) + user.visible_message( + span_danger("[user] cuts into [src]!"), + span_userdanger("Is [src] supposed to make that sound?")) + log_bomber(user, "ruptured", src, "via [tool.name]") + rupture_tank() + return ITEM_INTERACT_SUCCESS diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm index b9816b5c2df2b8..d4fe353ebe46fd 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull.dm @@ -4,11 +4,13 @@ density = TRUE anchored = FALSE drag_slowdown = 1.5 + inertia_force_weight = 2 /// How much damage we do when we fall on or crash into someone var/crush_damage = 40 /obj/structure/hull_plating/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) AddElement(/datum/element/falling_hazard, damage = crush_damage, wound_bonus = 20, hardhat_safety = FALSE, crushes = TRUE, impact_sound = 'sound/effects/bang.ogg') /obj/structure/hull_plating/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) @@ -38,7 +40,7 @@ // Femur breaker if you're not lucky carbon_target.take_bodypart_damage(crush_damage, 0, check_armor = TRUE, wound_bonus = 5) carbon_target.take_bodypart_damage(crush_damage, 0, check_armor = TRUE, wound_bonus = 5) - carbon_target.AddElement(/datum/element/squish, 80 SECONDS) + carbon_target.AddElement(/datum/element/squish, 30 SECONDS) else living_target.apply_damage(crush_damage, BRUTE, blocked = blocked, forced = TRUE, attack_direction = get_dir(src, atom_target)) living_target.Paralyze(4 SECONDS) @@ -52,7 +54,6 @@ atom_target.visible_message(span_danger("[atom_target] is crushed by [src]!"), span_userdanger("You are crushed by [src]!")) playsound(src, 'sound/effects/bang.ogg', 40) visible_message(span_danger("[src] crashes into [atom_target]!")) - Move(osha_nonworker, get_dir(src, osha_nonworker)) /obj/structure/hull_plating/nanocarbon name = "nanocarbon panels" @@ -62,6 +63,7 @@ /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, ) crush_damage = 50 + color = COLOR_SILVER /obj/structure/hull_plating/nanocarbon/ex_act(severity, target) . = ..() @@ -77,6 +79,8 @@ shard.pixel_x = rand(-6, 6) shard.pixel_y = rand(-6, 6) shard.color = color + var/atom/throw_target = get_edge_target_turf(shard, pick(GLOB.alldirs)) + shard.throw_at(throw_target, 6, 6) /obj/structure/hull_plating/nanocarbon/floor name = "nanocarbon panel" @@ -147,166 +151,3 @@ custom_materials = list( /datum/material/aluminum = SHEET_MATERIAL_AMOUNT, ) - -/turf/closed/wall/mineral/nanocarbon - name = "nanocarbon hull" - desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." - icon = 'modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi' - icon_state = "nanocarbon_wall-0" - base_icon_state = "nanocarbon_wall" - explosive_resistance = 3 - flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD - sheet_type = /obj/item/stack/sheet/nanocarbon - hardness = 20 - smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS | SMOOTH_OBJ - smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS - canSmoothWith = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS - custom_materials = list( - /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, - ) - rust_resistance = RUST_RESISTANCE_TITANIUM - baseturfs = /turf/baseturf_bottom - /// How many shards of nanocarbon the wall will make when exploded, maximum - var/number_of_shards = 6 - -/turf/closed/wall/mineral/nanocarbon/break_wall() - var/obj/new_plating = new /obj/structure/hull_plating/nanocarbon(src) - new_plating.color = color - if(girder_type) - return new girder_type(src) - -/turf/closed/wall/mineral/nanocarbon/devastate_wall() - var/random_shards = rand(2, number_of_shards) - for(var/iteration in 1 to random_shards) - var/obj/item/shard = new /obj/item/nanocarbon_shard(src) - shard.pixel_x = rand(-6, 6) - shard.pixel_y = rand(-6, 6) - shard.color = color - if(girder_type) - return new girder_type(src) - -/turf/closed/wall/mineral/nanocarbon/nodiagonal - icon = MAP_SWITCH('modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi', 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi') - icon_state = MAP_SWITCH("nanocarbon_wall-0", "nanocarbon_nd") - smoothing_flags = SMOOTH_BITMASK - -/turf/closed/wall/mineral/nanocarbon/black - color = COLOR_DARK - -/turf/closed/wall/mineral/nanocarbon/nodiagonal/black - color = COLOR_DARK - -/turf/closed/wall/mineral/nanocarbon/standard - color = COLOR_SILVER - -/turf/closed/wall/mineral/nanocarbon/nodiagonal/standard - color = COLOR_SILVER - -/turf/closed/wall/mineral/nanocarbon/red - color = COLOR_BUBBLEGUM_RED - -/turf/closed/wall/mineral/nanocarbon/nodiagonal/red - color = COLOR_BUBBLEGUM_RED - -/turf/closed/wall/mineral/nanocarbon/green - color = COLOR_IRISH_GREEN - -/turf/closed/wall/mineral/nanocarbon/nodiagonal/green - color = COLOR_IRISH_GREEN - -/turf/closed/wall/mineral/nanocarbon/blue - color = COLOR_COMMAND_BLUE - -/turf/closed/wall/mineral/nanocarbon/nodiagonal/blue - color = COLOR_COMMAND_BLUE - -/turf/closed/wall/mineral/nanocarbon/yellow - color = COLOR_GOLD - -/turf/closed/wall/mineral/nanocarbon/nodiagonal/yellow - color = COLOR_GOLD - -/turf/closed/wall/mineral/aluminum - name = "aluminum wall" - desc = "A thin aluminum wall, commonly used to plate the interior of ships." - icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi' - icon_state = "aluminum_wall-0" - base_icon_state = "aluminum_wall" - sheet_type = /obj/item/stack/sheet/aluminum - hardness = 50 - explosive_resistance = 0 - smoothing_flags = SMOOTH_BITMASK | SMOOTH_OBJ - smoothing_groups = SMOOTH_GROUP_TITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS - canSmoothWith = SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_TITANIUM_WALLS - custom_materials = list( - /datum/material/aluminum = SHEET_MATERIAL_AMOUNT * 2, - ) - rust_resistance = RUST_RESISTANCE_TITANIUM - baseturfs = /turf/open/floor/plating/nanocarbon - -/turf/closed/wall/mineral/aluminum/break_wall() - var/obj/new_plating = new /obj/structure/hull_plating/aluminum(src) - new_plating.color = color - if(girder_type) - return new girder_type(src) - -/turf/open/floor/plating/nanocarbon - name = "nanocarbon hull" - desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." - icon = 'modular_doppler/shipbreaking/icons/turfs/floors.dmi' - icon_state = "nanocarbon" - base_icon_state = "nanocarbon" - attachment_holes = FALSE - upgradable = FALSE - rust_resistance = RUST_RESISTANCE_TITANIUM - /// What kind of plating we make when cut apart - var/obj/cut_plating = /obj/structure/hull_plating/nanocarbon/floor - -/turf/open/floor/plating/nanocarbon/Initialize(mapload) - . = ..() - var/static/list/tool_behaviors = list( - TOOL_WELDER = list( - SCREENTIP_CONTEXT_LMB = "Cut Hull", - ), - ) - AddElement(/datum/element/contextual_screentip_tools, tool_behaviors) - -/turf/open/floor/plating/nanocarbon/welder_act(mob/living/user, obj/item/tool) - balloon_alert(user, "cutting...") - if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) - return ITEM_INTERACT_BLOCKING - new cut_plating(get_turf(src)) - ScrapeAway() - return ITEM_INTERACT_SUCCESS - -/turf/open/floor/plating/aluminum - name = "aluminum hull" - desc = "Thin aluminum hull, commonly used to plate the cargo bays of ships." - icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum.dmi' - icon_state = "aluminum-0" - base_icon_state = "aluminum" - attachment_holes = FALSE - upgradable = FALSE - rust_resistance = RUST_RESISTANCE_TITANIUM - smoothing_flags = SMOOTH_BITMASK - smoothing_groups = SMOOTH_GROUP_TURF_CHASM - canSmoothWith = SMOOTH_GROUP_TURF_CHASM - /// What kind of plating we make when cut apart - var/obj/cut_plating = /obj/structure/hull_plating/aluminum/floor - -/turf/open/floor/plating/aluminum/Initialize(mapload) - . = ..() - var/static/list/tool_behaviors = list( - TOOL_WELDER = list( - SCREENTIP_CONTEXT_LMB = "Cut Plating", - ), - ) - AddElement(/datum/element/contextual_screentip_tools, tool_behaviors) - -/turf/open/floor/plating/aluminum/welder_act(mob/living/user, obj/item/tool) - balloon_alert(user, "cutting...") - if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) - return ITEM_INTERACT_BLOCKING - new cut_plating(get_turf(src)) - ScrapeAway() - return ITEM_INTERACT_SUCCESS diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/hull_turfs.dm b/modular_doppler/shipbreaking/code/shuttle_parts/hull_turfs.dm new file mode 100644 index 00000000000000..7f97a043c011e9 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/hull_turfs.dm @@ -0,0 +1,244 @@ +/turf/closed/wall/mineral/nanocarbon + name = "nanocarbon hull" + desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi' + icon_state = "nanocarbon_wall-0" + base_icon_state = "nanocarbon_wall" + explosive_resistance = 3 + flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD + sheet_type = /obj/item/stack/sheet/nanocarbon + hardness = 20 + smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS | SMOOTH_OBJ + smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS + canSmoothWith = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + custom_materials = list( + /datum/material/nanocarbon = SHEET_MATERIAL_AMOUNT * 3, + ) + rust_resistance = RUST_RESISTANCE_TITANIUM + baseturfs = /turf/baseturf_bottom + girder_type = /obj/structure/titanium_structure + /// How many shards of nanocarbon the wall will make when exploded, maximum + var/number_of_shards = 6 + +/turf/closed/wall/mineral/nanocarbon/break_wall() + var/obj/new_plating = new /obj/structure/hull_plating/nanocarbon(src) + new_plating.color = color + if(girder_type) + return new girder_type(src) + +/turf/closed/wall/mineral/nanocarbon/devastate_wall() + var/random_shards = rand(2, number_of_shards) + for(var/iteration in 1 to random_shards) + var/obj/item/shard = new /obj/item/nanocarbon_shard(src) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + shard.color = color + var/atom/throw_target = get_edge_target_turf(shard, pick(GLOB.alldirs)) + shard.throw_at(throw_target, 6, 6) + if(girder_type && prob(40)) + new girder_type(src) + +/turf/closed/wall/mineral/nanocarbon/nodiagonal + icon = MAP_SWITCH('modular_doppler/shipbreaking/icons/turfs/nanocarbon_wall.dmi', 'modular_doppler/shipbreaking/icons/turfs/walls_misc.dmi') + icon_state = MAP_SWITCH("nanocarbon_wall-0", "nanocarbon_nd") + smoothing_flags = SMOOTH_BITMASK + +/turf/closed/wall/mineral/nanocarbon/primary_colour + color = COLOR_AMETHYST + +/turf/closed/wall/mineral/nanocarbon/primary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_PRIMARY_COLOUR, TRAIT_GENERIC) + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour + color = COLOR_AMETHYST + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/primary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_PRIMARY_COLOUR, TRAIT_GENERIC) + +/turf/closed/wall/mineral/nanocarbon/secondary_colour + color = COLOR_BROWN + +/turf/closed/wall/mineral/nanocarbon/secondary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_SECONDARY_COLOUR, TRAIT_GENERIC) + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour + color = COLOR_BROWN + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/secondary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_SECONDARY_COLOUR, TRAIT_GENERIC) + +/turf/closed/wall/mineral/nanocarbon/black + color = COLOR_DARK + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/black + color = COLOR_DARK + +/turf/closed/wall/mineral/nanocarbon/standard + color = COLOR_SILVER + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/standard + color = COLOR_SILVER + +/turf/closed/wall/mineral/nanocarbon/red + color = COLOR_BUBBLEGUM_RED + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/red + color = COLOR_BUBBLEGUM_RED + +/turf/closed/wall/mineral/nanocarbon/green + color = COLOR_IRISH_GREEN + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/green + color = COLOR_IRISH_GREEN + +/turf/closed/wall/mineral/nanocarbon/blue + color = COLOR_COMMAND_BLUE + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/blue + color = COLOR_COMMAND_BLUE + +/turf/closed/wall/mineral/nanocarbon/yellow + color = COLOR_GOLD + +/turf/closed/wall/mineral/nanocarbon/nodiagonal/yellow + color = COLOR_GOLD + +/turf/closed/wall/mineral/aluminum + name = "aluminum wall" + desc = "A thin aluminum wall, commonly used to plate the interior of ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum_wall.dmi' + icon_state = "aluminum_wall-0" + base_icon_state = "aluminum_wall" + sheet_type = /obj/item/stack/sheet/aluminum + hardness = 50 + explosive_resistance = 0 + smoothing_flags = SMOOTH_BITMASK | SMOOTH_OBJ + smoothing_groups = SMOOTH_GROUP_TITANIUM_WALLS + SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS + canSmoothWith = SMOOTH_GROUP_AIRLOCK + SMOOTH_GROUP_PLASTITANIUM_WALLS + SMOOTH_GROUP_TITANIUM_WALLS + custom_materials = list( + /datum/material/aluminum = SHEET_MATERIAL_AMOUNT * 2, + ) + rust_resistance = RUST_RESISTANCE_TITANIUM + baseturfs = /turf/open/floor/plating/nanocarbon + +/turf/closed/wall/mineral/aluminum/break_wall() + var/obj/new_plating = new /obj/structure/hull_plating/aluminum(src) + new_plating.color = color + if(girder_type) + return new girder_type(src) + +/turf/open/floor/plating/nanocarbon + name = "nanocarbon hull" + desc = "A durable nanocarbon-metal alloy hull used commonly in high endurance ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/floors.dmi' + icon_state = "nanocarbon" + base_icon_state = "nanocarbon" + attachment_holes = FALSE + upgradable = FALSE + rust_resistance = RUST_RESISTANCE_TITANIUM + /// What kind of plating we make when cut apart + var/obj/cut_plating = /obj/structure/hull_plating/nanocarbon/floor + +/turf/open/floor/plating/nanocarbon/Initialize(mapload) + . = ..() + var/static/list/tool_behaviors = list( + TOOL_WELDER = list( + SCREENTIP_CONTEXT_LMB = "Cut Hull", + ), + ) + AddElement(/datum/element/contextual_screentip_tools, tool_behaviors) + +/turf/open/floor/plating/nanocarbon/welder_act(mob/living/user, obj/item/tool) + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) + return ITEM_INTERACT_BLOCKING + new cut_plating(get_turf(src)) + ScrapeAway() + return ITEM_INTERACT_SUCCESS + +/turf/open/floor/plating/nanocarbon/ex_act(severity, target) + if(severity >= EXPLODE_HEAVY) + nanocarbon_nuke() + return ..() + +/// Makes shards of nanocarbon +/turf/open/floor/plating/nanocarbon/proc/nanocarbon_nuke() + for(var/iteration in 1 to 2) + var/obj/item/shard = new /obj/item/nanocarbon_shard(src) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + shard.color = color + var/atom/throw_target = get_edge_target_turf(shard, pick(GLOB.alldirs)) + shard.throw_at(throw_target, 6, 6) + +/turf/open/floor/plating/nanocarbon/exterior + icon_state = "nanocarbon_outside" + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/floor/plating/nanocarbon/exterior/primary_colour + color = COLOR_AMETHYST + +/turf/open/floor/plating/nanocarbon/exterior/primary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_PRIMARY_COLOUR, TRAIT_GENERIC) + +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour + color = COLOR_BROWN + +/turf/open/floor/plating/nanocarbon/exterior/secondary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_SECONDARY_COLOUR, TRAIT_GENERIC) + +/turf/open/floor/plating/nanocarbon/exterior/black + color = COLOR_DARK + +/turf/open/floor/plating/nanocarbon/exterior/standard + color = COLOR_SILVER + +/turf/open/floor/plating/nanocarbon/exterior/red + color = COLOR_BUBBLEGUM_RED + +/turf/open/floor/plating/nanocarbon/exterior/green + color = COLOR_IRISH_GREEN + +/turf/open/floor/plating/nanocarbon/exterior/blue + color = COLOR_COMMAND_BLUE + +/turf/open/floor/plating/nanocarbon/exterior/yellow + color = COLOR_GOLD + +/turf/open/floor/plating/aluminum + name = "aluminum hull" + desc = "Thin aluminum hull, commonly used to plate the cargo bays of ships." + icon = 'modular_doppler/shipbreaking/icons/turfs/aluminum.dmi' + icon_state = "aluminum-0" + base_icon_state = "aluminum" + attachment_holes = FALSE + upgradable = FALSE + rust_resistance = RUST_RESISTANCE_TITANIUM + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_TURF_CHASM + canSmoothWith = SMOOTH_GROUP_TURF_CHASM + /// What kind of plating we make when cut apart + var/obj/cut_plating = /obj/structure/hull_plating/aluminum/floor + +/turf/open/floor/plating/aluminum/Initialize(mapload) + . = ..() + var/static/list/tool_behaviors = list( + TOOL_WELDER = list( + SCREENTIP_CONTEXT_LMB = "Cut Plating", + ), + ) + AddElement(/datum/element/contextual_screentip_tools, tool_behaviors) + +/turf/open/floor/plating/aluminum/welder_act(mob/living/user, obj/item/tool) + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) + return ITEM_INTERACT_BLOCKING + new cut_plating(get_turf(src)) + ScrapeAway() + return ITEM_INTERACT_SUCCESS diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm b/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm index 72e65e6cad1875..324fecebf1d2d5 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/materials.dm @@ -27,11 +27,11 @@ sheet_type = /obj/item/stack/sheet/aluminum ore_type = null value_per_unit = 30 / SHEET_MATERIAL_AMOUNT - minimum_value_override = 20 + minimum_value_override = 10 mat_rust_resistance = RUST_RESISTANCE_TITANIUM mineral_rarity = 0 points_per_unit = 1 / SHEET_MATERIAL_AMOUNT - tradable = TRUE + tradable = FALSE tradable_base_quantity = MATERIAL_QUANTITY_UNCOMMON fish_weight_modifier = 1.1 strength_modifier = 0.8 @@ -70,11 +70,11 @@ sheet_type = /obj/item/stack/sheet/nanocarbon ore_type = null value_per_unit = 50 / SHEET_MATERIAL_AMOUNT - minimum_value_override = 40 + minimum_value_override = 25 mat_rust_resistance = RUST_RESISTANCE_TITANIUM mineral_rarity = 0 points_per_unit = 1 / SHEET_MATERIAL_AMOUNT - tradable = TRUE + tradable = FALSE tradable_base_quantity = MATERIAL_QUANTITY_UNCOMMON fish_weight_modifier = 0.8 strength_modifier = 1.5 diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/munitions.dm b/modular_doppler/shipbreaking/code/shuttle_parts/munitions.dm new file mode 100644 index 00000000000000..4929a71bbfadd8 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/munitions.dm @@ -0,0 +1,179 @@ +/obj/structure/shuttle_decoration/munition + abstract_type = /obj/structure/shuttle_decoration/munition + name = "munition basetype" + desc = "A basetype for munitions that you SHOULD NOT BE SEEING!!" + icon = 'modular_doppler/shipbreaking/icons/64x32.dmi' + icon_state = null + density = TRUE + unfasten_time = 3 SECONDS + drag_slowdown = 3 + inertia_force_weight = 2 + SET_BASE_PIXEL(-16, 0) + /// Has the weapon been armed by mistake? + var/armed_and_dangerous = FALSE + /// Do we even need to be armed to do our problem effect? + var/needs_to_be_armed = TRUE + /// Are we currently in the process of exploding? + var/currently_cooking_off = FALSE + /// Chance to arm on throw impact + var/chance_to_arm = 100 + +/obj/structure/shuttle_decoration/munition/examine(mob/user) + . = ..() + if(needs_to_be_armed) + . += "[span_notice("It will not go off unless under extreme circumstances, unless it is armed. Which, currently,")] [armed_and_dangerous ? span_warning("it is.") : span_nicegreen("it isn't.")]" + else + . += span_warning("It looks old and unstable, and might go off if handled improperly.") + +/// Determines if the weapon should go off or not when non-catastrophic accidents occur to it +/obj/structure/shuttle_decoration/munition/proc/set_off() + if(needs_to_be_armed && !armed_and_dangerous) + return FALSE + subtle_foreshadowing() + return TRUE + +/// Makes the munition start sparking and spewing fire as a leadup to exploding, like rimworld +/obj/structure/shuttle_decoration/munition/proc/subtle_foreshadowing() + if(currently_cooking_off) + return // We're already exploding, have some patience + currently_cooking_off = TRUE + visible_message(span_boldwarning("[src] sparks into a violent jet of flame!"), blind_message = span_boldwarning("You hear a violent burning jet of fire!")) + playsound(src, 'sound/effects/fuse.ogg', 50, TRUE) + set_light(3, 2, LIGHT_COLOR_ELECTRIC_CYAN, l_on = TRUE) + addtimer(CALLBACK(src, PROC_REF(disaster_effects)), 5 SECONDS) + +/// Makes the munition explode, or do whatever it does +/obj/structure/shuttle_decoration/munition/proc/disaster_effects() + return + +/obj/structure/shuttle_decoration/munition/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + if(!armed_and_dangerous && needs_to_be_armed && prob(chance_to_arm)) + armed_and_dangerous = TRUE + playsound(src, 'sound/items/timer.ogg', 50, TRUE) + visible_message(span_warning("[src] makes an ominous beep!"), blind_message = span_warning("You hear an ominous beep!")) + else if(!needs_to_be_armed && prob(chance_to_arm)) + subtle_foreshadowing() + +/obj/structure/shuttle_decoration/munition/update_overlays() + . = ..() + if(currently_cooking_off) + . += mutable_appearance('icons/effects/welding_effect.dmi', "welding_sparks", GASFIRE_LAYER, src, ABOVE_LIGHTING_PLANE, appearance_flags = RESET_COLOR|KEEP_APART) + +/obj/structure/shuttle_decoration/munition/blob_act(obj/structure/blob/blob_bit) + set_off() + +/obj/structure/shuttle_decoration/munition/ex_act() + subtle_foreshadowing() // No chance when you blow up the missiles + return TRUE + +/obj/structure/shuttle_decoration/munition/fire_act(exposed_temperature, exposed_volume) + set_off() + +/obj/structure/shuttle_decoration/munition/zap_act(power, zap_flags) + . = ..() + if(ZAP_OBJ_DAMAGE & zap_flags) + set_off() + +/obj/structure/shuttle_decoration/munition/bullet_act(obj/projectile/hitting_projectile) + if(hitting_projectile.damage > 0 && ((hitting_projectile.damage_type == BURN) || (hitting_projectile.damage_type == BRUTE))) + log_bomber(hitting_projectile.firer, "ruptured", src, "via projectile") + set_off() + return hitting_projectile.on_hit(src, 0) + return ..() + +/obj/structure/shuttle_decoration/munition/welder_act(mob/living/user, obj/item/tool) + if(!set_off()) + return ITEM_INTERACT_SUCCESS + user.visible_message(span_danger("[user] cuts into [src]!")) + log_bomber(user, "set off", src, "via [tool.name]") + return ITEM_INTERACT_SUCCESS + +/obj/structure/shuttle_decoration/munition/missile + name = "\improper M-Seira Transorbital Missile" + desc = "Considering the choices of your life that brought you before a decade old missile is an important first step. \ + Every information packet that exists gives only one simple direction for safely handling these: Don't. Failing that, \ + you could at least try to be gentle with it." + icon_state = "mseira" + custom_materials = list( + /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 2.5, + ) + +/obj/structure/shuttle_decoration/munition/missile/Initialize(mapload) + . = ..() + AddElement(/datum/element/noisy_movement) + +/obj/structure/shuttle_decoration/munition/missile/disaster_effects() + explosion(src, heavy_impact_range = 1, light_impact_range = 2, flame_range = 4, flash_range = 5, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/munition/missile/orbital + name = "\improper Cha-Seira Orbital Interceptor" + icon_state = "chaseira" + +/obj/structure/shuttle_decoration/munition/missile/extraorbital + name = "\improper Cha-Seira Extra-Orbital Interceptor" + icon_state = "chaseira_extended" + +/obj/structure/shuttle_decoration/munition/ciws + name = "defense cannon shell crate" + desc = "A large box of dusty old 26mm point defense cannon shells. While the fuzes for the heads are inert until fired \ + from their weapon, the shells remain violently flammable if mistreated." + icon_state = "autocannon" + needs_to_be_armed = FALSE + custom_materials = list( + /datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 1.5, + ) + +/obj/structure/shuttle_decoration/munition/ciws/disaster_effects() + explosion(src, heavy_impact_range = 0, light_impact_range = 0, flame_range = 1, flash_range = 2, smoke = TRUE) + Destroy() + +/obj/structure/shuttle_decoration/munition/autocannon + name = "large autocannon shell cart" + desc = "A cart laden with large 64mm autocannon shells. While they sit securely in foam inserts on the cart, \ + severe mistreatment could still set them off." + icon_state = "shells" + needs_to_be_armed = FALSE + custom_materials = list( + /datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 1.5, + ) + +/obj/structure/shuttle_decoration/munition/autocannon/Initialize(mapload) + . = ..() + AddElement(/datum/element/noisy_movement) + +/obj/structure/shuttle_decoration/munition/autocannon/disaster_effects() + explosion(src, heavy_impact_range = 0, light_impact_range = 1, flame_range = 2, flash_range = 5, smoke = TRUE) + var/obj/item/grenade/shrapnel_maker = new /obj/item/grenade/c980payload(get_turf(src)) + shrapnel_maker.detonate() + qdel(shrapnel_maker) + Destroy() + +/obj/structure/shuttle_decoration/munition/chaff_flares + name = "large calibre countermeasures cart" + desc = "A cart laden with large calibre countermeasure canisters, filled to the brim with metal strips of all flavours \ + to distract incoming weapons and radar. The explosive launching charge attached to each canister demands respect." + icon_state = "flares" + needs_to_be_armed = FALSE + custom_materials = list( + /datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 1.5, + ) + +/obj/structure/shuttle_decoration/munition/chaff_flares/Initialize(mapload) + . = ..() + AddElement(/datum/element/noisy_movement) + +/obj/structure/shuttle_decoration/munition/chaff_flares/disaster_effects() + explosion(src, heavy_impact_range = 0, light_impact_range = 1, flame_range = 2, flash_range = 5, smoke = TRUE) + var/datum/effect_system/fluid_spread/smoke/ecm/smoke = new + smoke.set_up(5, holder = src, location = src) + smoke.start() + Destroy() diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm b/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm new file mode 100644 index 00000000000000..51e8024970d5d4 --- /dev/null +++ b/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm @@ -0,0 +1,189 @@ +/obj/structure/shuttle_decoration/wall_plate + abstract_type = /obj/structure/shuttle_decoration/wall_plate + icon = 'modular_doppler/shipbreaking/icons/wall_platings.dmi' + max_integrity = 125 + unfasten_time = 2 SECONDS + requires_welder = TRUE + pass_flags_self = NONE + layer = ABOVE_MOB_LAYER + flags_1 = ON_BORDER_1 + density = TRUE + obj_flags = CAN_BE_HIT | IGNORE_DENSITY + /// What type of hull plate object do we spawn when cut off the wall + var/obj/structure/hull_plating/cut_plating = /obj/structure/hull_plating + /// Do we transfer our color to the cut_plating + var/keep_color = FALSE + +/obj/structure/shuttle_decoration/wall_plate/Initialize(mapload) + . = ..() + var/static/list/loc_connections = list( + COMSIG_ATOM_EXIT = PROC_REF(on_exit), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/obj/structure/shuttle_decoration/wall_plate/knock_down() + new cut_plating(get_turf(src)) + qdel(src) + +/obj/structure/shuttle_decoration/wall_plate/welder_act(mob/living/user, obj/item/tool) + if(!requires_welder) + return NONE + balloon_alert(user, "cutting...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 1, volume=50)) + return ITEM_INTERACT_BLOCKING + var/obj/new_plating = new cut_plating(get_turf(src)) + if(keep_color) + new_plating.color = color + qdel(src) + return ITEM_INTERACT_SUCCESS + +/// Determines what to do when something is leaving our turf +/obj/structure/shuttle_decoration/wall_plate/proc/on_exit(datum/source, atom/movable/leaving, direction) + SIGNAL_HANDLER + if(leaving == src) + return // Let's not block ourselves. + if(!(direction & dir)) + return + if (!density) + return + if (leaving.movement_type & (PHASING)) + return + if (leaving.move_force >= MOVE_FORCE_EXTREMELY_STRONG) + return + leaving.Bump(src) + return COMPONENT_ATOM_BLOCK_EXIT + +/obj/structure/shuttle_decoration/wall_plate/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + if(border_dir != dir) + return TRUE + +/obj/structure/shuttle_decoration/wall_plate/CanPass(atom/movable/mover, border_dir) + return (border_dir & dir) ? ..() : TRUE + +/obj/structure/shuttle_decoration/wall_plate/CanAStarPass(to_dir, datum/can_pass_info/pass_info) + return !density || (dir != to_dir) + +/obj/structure/shuttle_decoration/wall_plate/gold_foil + name = "gold foil wrapping" + desc = "Gold foil insulation to keep the heat in (or out) of a ship or satellite." + icon_state = "gold_foil" + cut_plating = /obj/structure/hull_plating/gold_foil + +/obj/structure/shuttle_decoration/wall_plate/gold_foil/diagonal + icon_state = "gold_foil_diag" + +/obj/structure/shuttle_decoration/wall_plate/silver_foil + name = "silver foil wrapping" + desc = "Silver foil insulation to keep the heat in (or out) of a ship or satellite." + icon_state = "silver_foil" + cut_plating = /obj/structure/hull_plating/silver_foil + +/obj/structure/shuttle_decoration/wall_plate/silver_foil/diagonal + icon_state = "silver_foil_diag" + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon + name = "nanocarbon hull screen" + desc = "A standoff screen of nanocarbon used typically for in atmosphere aerodynamics, or layered protection." + icon_state = "nanocarbon" + armor_type = /datum/armor/nanocarbon_anything + max_integrity = 150 + cut_plating = /obj/structure/hull_plating/nanocarbon/floor + keep_color = TRUE + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal + icon_state = "nanocarbon_diag" + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/ex_act(severity, target) + . = ..() + if(severity >= EXPLODE_HEAVY) + nanocarbon_nuke() + return TRUE + +/// Makes shards of nanocarbon +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/proc/nanocarbon_nuke() + var/random_shards = 2 + for(var/iteration in 1 to random_shards) + var/obj/item/shard = new /obj/item/nanocarbon_shard(src) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + shard.color = color + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour + color = COLOR_AMETHYST + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/primary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_PRIMARY_COLOUR, TRAIT_GENERIC) + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour + color = COLOR_AMETHYST + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/primary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_PRIMARY_COLOUR, TRAIT_GENERIC) + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour + color = COLOR_BROWN + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/secondary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_SECONDARY_COLOUR, TRAIT_GENERIC) + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour + color = COLOR_BROWN + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/secondary_colour/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SHIP_SECONDARY_COLOUR, TRAIT_GENERIC) + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/black + color = COLOR_DARK + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/black + color = COLOR_DARK + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/standard + color = COLOR_SILVER + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/standard + color = COLOR_SILVER + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/red + color = COLOR_BUBBLEGUM_RED + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/red + color = COLOR_BUBBLEGUM_RED + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/green + color = COLOR_IRISH_GREEN + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/green + color = COLOR_IRISH_GREEN + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/blue + color = COLOR_COMMAND_BLUE + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/blue + color = COLOR_COMMAND_BLUE + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/yellow + color = COLOR_GOLD + +/obj/structure/shuttle_decoration/wall_plate/nanocarbon/diagonal/yellow + color = COLOR_GOLD + +/obj/structure/shuttle_decoration/wall_plate/armor + name = "armor plating" + desc = "Thick armor plating to protect ships from anything between asteroid impacts and weapons fire." + icon_state = "armor" + cut_plating = /obj/structure/hull_plating/armor_panels + +/obj/structure/shuttle_decoration/wall_plate/armor/diagonal + icon_state = "armor_diag" + +/obj/structure/shuttle_decoration/wall_plate/plastamic + name = "plastamic cladding" + desc = "Polymer sheets used to cover a typically much uglier hull plate behind them." + icon_state = "plastic" + cut_plating = /obj/structure/hull_plating/plastamic_sheets diff --git a/modular_doppler/shipbreaking/icons/64x32.dmi b/modular_doppler/shipbreaking/icons/64x32.dmi new file mode 100644 index 0000000000000000000000000000000000000000..17849e87166536884e572fa5243c595c422e0be0 GIT binary patch literal 1843 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 N002ovPDHLkV1g;ViN62< literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/exterior.dmi b/modular_doppler/shipbreaking/icons/exterior.dmi index 568a785a7d04d1e7ee19ea3ff82be01f01f83435..c6b4447639cb279975a10e173fae18bef70a34b4 100644 GIT binary patch literal 18451 zcmZ5{WmufC()O~rYk}fUacFUOx8km)xLbk6y|}x(ySKPgba8iw#a&*``OdHJ$8%ko z$t0OP$t0OOlW=84DO4l^Bme+_DkCkf0sue>|K~%1`{0bn7L|VxLY`_`F5+g+rcRa) zE|&Io0Kl)zs6;-yK30?v^Jg5%dOU@dCb>AW;VHeITxw1eF}V19) z_Ie!fO=EQ@#SQmT1>XuAbO0up=f_H!ICnqi3y^D zbFag!M*sV7K6SVe_*R;a*~7ougOV~xPHIeN8=#bD6dGTUM=QiITfcO=;G4705?C4< zT(Z~g2>?jO$cT%m{mMMcLanva)ZWl#?=W{spy7H z2gXP3@20N2eY(mriMq-fP!UIpQuKJk5cNrU-<3dD;DD>{H&V~{4$YSL9!O0!pXc-i zF>ttRXgB8T7vF$$Sl*u|nt;G-9jtK#GT#TWbr88Qdub(3Pj{dnzqh@P?qg?HPD)_C zNY~Psh$udTB9WHY)wj-#j99MdGi$>(A@URlvQ3T=GgnS>zx2HwQ<-2g32Jp1kIt*S zspvJ0P6*_{qfjs`D;k|MFU@HVkDc6)h<}&5Qh4-RXsu}LE?Yj539nnum3~*w=oCzg zrvI4O0ngn)pjTjdTQmK|oRDX*XOvj9BjRp7Zw6*JRzN5{MGbvO0z??KN@yZHE-%NT&r(D>0MCno0bOcG6YKIz!NTMdJl zLhb)K=sZZy(0qTXFw|dr*iNyjq7`&}MVtV~g{A&3SDkUEY#g z5fo1TW(}1Yf9TkHk@SXo;Y^6!PX3sYE@(X`vgs*YXpJbvV6F*(j&?&&ferIksUcUo zH$)>f@D{b9{a$!WXZE1yyW+MidBAo@Lht?h=w6knjl7vyM!kN6Tims*K_;nDsiA3S z+aLhL>E967(6ep^b!DBh!|Rj>ZeB}`ZFzn&tZzTq6_~eOFz_idBXw@`3Nn0O=-k=q zJE&QG?;ecr=G+zA@I6n{B&hLK1#0c&<&>*yVQITEAhLvt2dy98XtpC&qVh!y3<3Ln z+NOe{#pC8nw%gy(y%!$`8yA1BgeL4f$yI>O^72vgN9bAIX_(hKMqVr0A*)u_zcfck zevY?9t*@yGN(#r4>dE}#sWZtba8DLG)B~{Fh?b~Fi8<)Mubj7zJrFLeoPUG#jkvyU zIE_JAE5NpSZx6RZbq16*@8l?_Ll!|Z`J43ccx3m|p;#UhuxEdQS~Z8gi^k$clHiYi zJ-TGcYUer4D$4RSd710m`q3>`zuyX7SnSw$b9O34ov>6XrUZ}1C>Xr=02ANjsJHfn zVH9Zdai~e_%ZxkDJMV))i%0Dgj^!Oy=j{ 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 z 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 literal 12229 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 diff --git a/modular_doppler/shipbreaking/icons/smooth/girder_titan.dmi b/modular_doppler/shipbreaking/icons/smooth/girder_titan.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c403e133fdacee2ff24592814b809e3bbe165c7a GIT binary patch literal 6895 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 literal 0 HcmV?d00001 diff --git a/modular_doppler/shipbreaking/icons/smooth/girder_titan.png b/modular_doppler/shipbreaking/icons/smooth/girder_titan.png new file mode 100644 index 0000000000000000000000000000000000000000..54e7c354a761457c4378f14f36a3534220e8ac58 GIT binary patch literal 1689 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

5Zqs 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 = { diamond: 8, 'bluespace crystal': 9, bananium: 10, + aluminum: 11, // DOPPLER EDIT ADDITION - LETS MATERIALS PROPERLY DISPLAY + nanocarbon: 12, // DOPPLER EDIT ADDITION - LETS MATERIALS PROPERLY DISPLAY }; export type MaterialAccessBarProps = { diff --git a/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx b/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx index d770757cb2602a..27883a8cd044a7 100644 --- a/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx +++ b/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx @@ -53,6 +53,18 @@ const MATERIAL_ICONS: Record = { [17, 'sheet-plastic_2'], [34, 'sheet-plastic_3'], ], + // DOPPLER EDIT ADDITION START - MAKES CUSTOM MATERIALS DISPLAY CORRECTLY + aluminum: [ + [0, 'aluminum'], + [17, 'aluminum_2'], + [34, 'aluminum_3'], + ], + nanocarbon: [ + [0, 'nanocarbon'], + [17, 'nanocarbon_2'], + [34, 'nanocarbon_3'], + ], + // DOPPLER EDIT ADDITION END }; export type MaterialIconProps = { From 41e34c7d239dc32e58bef4d7f62cf5b372bfd53a Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Thu, 26 Mar 2026 21:10:50 -0400 Subject: [PATCH 26/29] a little bit of formatting --- modular_doppler/shipbreaking/code/salvage_computer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/shipbreaking/code/salvage_computer.dm b/modular_doppler/shipbreaking/code/salvage_computer.dm index 6cd7411d9e2b7d..fe89628ea1930a 100644 --- a/modular_doppler/shipbreaking/code/salvage_computer.dm +++ b/modular_doppler/shipbreaking/code/salvage_computer.dm @@ -195,7 +195,7 @@ GLOBAL_LIST_INIT(blacklisted_salvage_removal_types, typecacheof(list( ticket_contents += "Operation History from [template.prior_date]:
" ticket_contents += "[template.prior_usage]

" ticket_contents += "
" - ticket_contents += "

Ship Class - [template.ship_class]


" + ticket_contents += "

Ship Class - [template.ship_class]

" ticket_contents += "

Detected Hazards:

" if(!length(template.ship_hazards)) ticket_contents += "No hazards were detected, continue with caution.
" From c52f3a5caa0f8f18896939401497a72bf4ff0f3a Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Fri, 27 Mar 2026 01:50:54 -0400 Subject: [PATCH 27/29] j kurwa --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 90187ee001dfe1..d29ed2d9636640 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7760,7 +7760,6 @@ #include "modular_doppler\shipbreaking\code\shuttle_parts\hull.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\hull_turfs.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\materials.dm" -#include "modular_doppler\shipbreaking\code\shuttle_parts\munitions.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\wall_plating.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\windows.dm" #include "modular_doppler\ships_r_us\code\buyable_shuttle_template.dm" From 1217c7cd744595e58af6a98400b27c06d35d36f7 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Fri, 27 Mar 2026 01:51:11 -0400 Subject: [PATCH 28/29] kurwa j --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index d29ed2d9636640..90187ee001dfe1 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7760,6 +7760,7 @@ #include "modular_doppler\shipbreaking\code\shuttle_parts\hull.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\hull_turfs.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\materials.dm" +#include "modular_doppler\shipbreaking\code\shuttle_parts\munitions.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\wall_plating.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\windows.dm" #include "modular_doppler\ships_r_us\code\buyable_shuttle_template.dm" From 8f1463203bea1459f9982830b81e502d6050705f Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Fri, 27 Mar 2026 16:51:22 -0400 Subject: [PATCH 29/29] some fixes --- modular_doppler/shipbreaking/code/shuttle_decoration.dm | 8 ++------ .../shipbreaking/code/shuttle_parts/exoscanners.dm | 6 +----- .../shipbreaking/code/shuttle_parts/wall_plating.dm | 4 ---- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/modular_doppler/shipbreaking/code/shuttle_decoration.dm b/modular_doppler/shipbreaking/code/shuttle_decoration.dm index a1b85ca412eac5..fc1c6725f24a53 100644 --- a/modular_doppler/shipbreaking/code/shuttle_decoration.dm +++ b/modular_doppler/shipbreaking/code/shuttle_decoration.dm @@ -17,7 +17,7 @@ . = ..() ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) AddComponent(/datum/component/simple_rotation, ROTATION_NEEDS_ROOM) - find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + find_and_hang_on_wall() register_context() /obj/structure/shuttle_decoration/add_context(atom/source, list/context, obj/item/held_item, mob/user) @@ -40,10 +40,6 @@ else . += span_notice("Can be removed by unfastening it.") -/// Disconnects the part from the wall its mounted on -/obj/structure/shuttle_decoration/proc/knock_down() - set_anchored(FALSE) - /obj/structure/shuttle_decoration/wrench_act(mob/living/user, obj/item/tool) . = ..() if(requires_welder) @@ -59,5 +55,5 @@ return ITEM_INTERACT_BLOCKING set_anchored(!anchored) if(anchored) - find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + find_and_hang_on_wall() return ITEM_INTERACT_SUCCESS diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm b/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm index b1bb5d38ad246c..29a4c3c3f34198 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/exoscanners.dm @@ -8,7 +8,7 @@ /obj/machinery/exoscanner/shuttle_part/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_RECYCLE_LIKE_ITEM, TRAIT_GENERIC) - find_and_hang_on_wall(custom_drop_callback = CALLBACK(src, PROC_REF(knock_down))) + find_and_hang_on_wall() /obj/machinery/exoscanner/shuttle_part/screwdriver_act(mob/user, obj/item/tool) return @@ -17,10 +17,6 @@ . = ..() icon_state = base_icon_state -/// Disconnects the part from the wall its mounted on -/obj/machinery/exoscanner/shuttle_part/proc/knock_down() - set_anchored(FALSE) - /obj/machinery/exoscanner/shuttle_part/radar_panel name = "radar panel" desc = "A radar panel, made to be mounted flat to the walls of ships for directional scanning." diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm b/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm index 51e8024970d5d4..556ddf9b197b78 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm @@ -21,10 +21,6 @@ ) AddElement(/datum/element/connect_loc, loc_connections) -/obj/structure/shuttle_decoration/wall_plate/knock_down() - new cut_plating(get_turf(src)) - qdel(src) - /obj/structure/shuttle_decoration/wall_plate/welder_act(mob/living/user, obj/item/tool) if(!requires_welder) return NONE