From 00fd32e582dff0307d350a7511910fb94bba0b30 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 13 Jun 2026 20:50:49 -0400 Subject: [PATCH 01/11] demo charges yippie! --- .../shipbreaking/code/tools/demo_charge.dm | 107 ++++++++++++++++++ .../shipbreaking/code/tools/rnd.dm | 36 ++++++ modular_doppler/shipbreaking/icons/tools.dmi | Bin 0 -> 1107 bytes tgstation.dme | 2 + 4 files changed, 145 insertions(+) create mode 100644 modular_doppler/shipbreaking/code/tools/demo_charge.dm create mode 100644 modular_doppler/shipbreaking/code/tools/rnd.dm create mode 100644 modular_doppler/shipbreaking/icons/tools.dmi diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm new file mode 100644 index 00000000000000..79c3978d15f36f --- /dev/null +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -0,0 +1,107 @@ +GLOBAL_LIST_EMPTY(demolition_charges) + +/obj/item/demo_charge_detonator + name = "demolition vac-charge clacker" + desc = "A big scary remote controller that makes a satisfying click when the lever on the side is pressed. \ + As a safety measure, the remote needs to be used multiple times in order to detonate any charges." + icon = 'modular_doppler/shipbreaking/icons/tools.dmi' + icon_state = "detonator" + inhand_icon_state = "signaler" + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL + +/obj/item/demo_charge_detonator/attack_self(mob/user) + user.balloon_alert_to_viewers("clack") + playsound(src, 'sound/items/pen_click.ogg', 40, TRUE) + for(var/obj/item/grenade/c4/demo_charge/charge as anything in GLOB.demolition_charges) + if(charge.clacks >= charge.clacks_needed) + charge.detonate() + charge.clack() + +/obj/item/grenade/c4/demo_charge + name = "low-pyrotechnic shaped demolition vac-charge" + desc = "A special demolition charge for the rapid deconstruction of salvaged ships. Uses a special process to make use of minimal explosive mass \ + vaporizing a precision formed strip of material, which then reflects off of the sturdy casing of the explosive to direct the full force into \ + whatever surface the charge is attached to. Involves minimal risk to any operators standing near the charge." + icon = 'modular_doppler/shipbreaking/icons/tools.dmi' + icon_state = "charge0" + inhand_icon_state = "ninja-explosive" + worn_icon_state = null + lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/bombs_righthand.dmi' + directional = TRUE + directional_arc = 90 + boom_sizes = list(0, 3, 5) + full_damage_on_mobs = FALSE + /// How many times the detonator has pulsed on this demo charge + var/clacks = 0 + /// How many times the detonator needs to be pulsed to detonate the charge + var/clacks_needed = 3 + +/obj/item/grenade/c4/demo_charge/Initialize(mapload) + . = ..() + if(prob(20)) + clacks_needed += rand(1, 3) + +/// Decides on random effects to play when the detonator has been clicked but nothing happens yet +/obj/item/grenade/c4/demo_charge/proc/clack() + clacks++ + if(prob(75)) + return + do_sparks(3, FALSE, target) + +/obj/item/grenade/c4/demo_charge/Destroy() + if(src in GLOB.demolition_charges) + GLOB.demolition_charges -= src + return ..() + +/obj/item/grenade/c4/demo_charge/attack_self(mob/user) + return + +/obj/item/grenade/c4/demo_charge/plant_c4(atom/bomb_target, mob/living/user) + if(!(obj_flags & EMAGGED)) + if(isliving(bomb_target)) + to_chat(user, span_warning("The demolition charge refuses to latch onto something living!")) + return FALSE + var/area/target_area = get_area(bomb_target) + if(!istype(target_area, /area/shuttle/salvaged_shuttle)) + to_chat(user, span_warning("The charge refuses to latch onto anything other than inactive salvage shuttles!")) + return FALSE + if(bomb_target != user && HAS_TRAIT(user, TRAIT_PACIFISM) && isliving(bomb_target)) + to_chat(user, span_warning("You don't want to harm other living beings!")) + return FALSE + balloon_alert(user, "planting...") + if(!do_after(user, 3 SECONDS, target = bomb_target)) + return FALSE + if(!user.temporarilyRemoveItemFromInventory(src)) + return FALSE + target = bomb_target + active = TRUE + + if(obj_flags & EMAGGED) + message_admins("[ADMIN_LOOKUPFLW(user)] planted a hacked demolition charge on [target.name] at [ADMIN_VERBOSEJMP(target)]") + var/icon/target_icon = icon(bomb_target.icon, bomb_target.icon_state) + target_icon.Blend(icon(icon, icon_state), ICON_OVERLAY) + var/mutable_appearance/bomb_target_image = mutable_appearance(target_icon) + notify_ghosts( + "[user.real_name] has planted a hacked demolition charge on [target]!", + source = bomb_target, + header = "Explosive Planted", + alert_overlay = bomb_target_image, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ) + user.log_message("planted [name] on [target.name].", LOG_ATTACK) + + moveToNullspace() + if(isitem(bomb_target)) //your crappy throwing star can't fly so good with a giant brick of c4 on it. + var/obj/item/thrown_weapon = bomb_target + thrown_weapon.throw_speed = max(1, (thrown_weapon.throw_speed - 3)) + thrown_weapon.throw_range = max(1, (thrown_weapon.throw_range - 3)) + thrown_weapon.get_embed()?.embed_chance = 0 + else if(isliving(bomb_target)) + plastic_overlay.layer = FLOAT_LAYER + target.add_overlay(plastic_overlay) + to_chat(user, span_notice("You plant the charge, red light on the shell blinking ominously.")) + GLOB.demolition_charges += src + return TRUE diff --git a/modular_doppler/shipbreaking/code/tools/rnd.dm b/modular_doppler/shipbreaking/code/tools/rnd.dm new file mode 100644 index 00000000000000..df13adfdeb2e1c --- /dev/null +++ b/modular_doppler/shipbreaking/code/tools/rnd.dm @@ -0,0 +1,36 @@ +/datum/design/demo_remote + name = "Demolition Vac-Charge Clacker" + id = "demo_remote" + build_type = PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.75, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.8, + /datum/material/nanocarbon = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/demo_charge_detonator + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/demo_charge + name = "Low-Pyrotechnic Shaped Demolition Vac-Charge" + id = "demo_charge" + build_type = PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + materials = list( + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/aluminum = HALF_SHEET_MATERIAL_AMOUNT / 2, + /datum/material/plasma = SMALL_MATERIAL_AMOUNT, + ) + build_path = /obj/item/grenade/c4/demo_charge + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/techweb_node/plasma_mining/New() + design_ids |= list( + "demo_remote", + "demo_charge", + ) + return ..() diff --git a/modular_doppler/shipbreaking/icons/tools.dmi b/modular_doppler/shipbreaking/icons/tools.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e099103f29c671a680ee1b611d668f8577656b94 GIT binary patch literal 1107 zcmV-Z1g!gsP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DJ8WeKQFN)zetITGbOXA7$|1Q#hF%=n41b=!&N3{Bo?Ko8W5?@ zkVth#*wq1@o06K7SP2r=!E{7?Vsc4lSt?O_l@(n5T)<%i03ldW^@ZCvIRF3yc}YY; zRCt{2ozH6%K@`WgMMQ~ELDC>d55b~6*AQxn&_jCgSdXH36ufy8^(5%co8UhocvA3U zXtg~Q?@A>|5hMl=J>*iswQuW-yJ-mX(wV&M%l8AzY_e0nv-91ZAG>eTC;|Wg030Zl zN^!YdjS7Z`QY`oJ-*V zH-C$l=8`g0R`(A+?I+(=R?kM;?@lKBTnWAjrSEJ&ujpWAqs8B~_{r9WHxpW|))ZX? z|I3l(@Vmn+(zp2`^_@FmzRg_oUj5@@l#Je!r>l;yJc5pKvk-z1`l3D{Ev5k(o4(x{ z{!A4hxlqPIU)%|k0J+?o_Odzc-z;ih>ubA7C- z+^I8BZDuC&Ir?FEa>HZn%NNdNj(`6CD@l2{NTZfK=zDn<#CHQ#eu&WzK_^ZdpCF%b zdY_JQK5P12ma5A!ZMSdUNjBQ&V{fa~n6?nQRv$%(Z&RvpZhnXlTkGBS{_#>RraOQ} zKp~nTi-?+_-Uo5i{-@ze-`LwbcEKhE@9zUbjQ=eoo`~^?hnt~)9dOLe5Sktt;>t=7 zMbmSD5aWIT0000000000000000E`x^FU7U>o!^LAjnCKCcQ(Lke7?56=r!V?_;`W} zF^bSYOZuXy2#fLg+WMlX2#fLg+WH~`#wkAk{_=z9`NwCOw7&LeWcn)W0~qc2{C<^B z>8Ma!A7C*)Ut8Zfqt*C)ZGGn^NIO1$()G{r!0IN6~p#A&(R>{@+ z0E^^meSk%VULT+lpKp<&<^kIA`IZnFKqH{1cdtaJ%dew{w-%11bd2%hbYL5lzInV)Frf(os=xqcV1P0(Kp7aI3=B{P1}Fmqlz{=t Z`~|-*Dw_)VkmCRV002ovPDHLkV1iwo47mUR literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 8ca1e32ee4c9d2..bf6d85d6756904 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7855,6 +7855,8 @@ #include "modular_doppler\shipbreaking\code\shuttle_parts\wall_plating.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\water_cycler.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\windows.dm" +#include "modular_doppler\shipbreaking\code\tools\demo_charge.dm" +#include "modular_doppler\shipbreaking\code\tools\rnd.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 a53f6681e96c7d67ed4a18c568794f21b2d6693c Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 13 Jun 2026 21:15:32 -0400 Subject: [PATCH 02/11] updates aclack chain --- modular_doppler/shipbreaking/code/tools/demo_charge.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm index 79c3978d15f36f..bce16544d5ff9f 100644 --- a/modular_doppler/shipbreaking/code/tools/demo_charge.dm +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -15,8 +15,6 @@ GLOBAL_LIST_EMPTY(demolition_charges) user.balloon_alert_to_viewers("clack") playsound(src, 'sound/items/pen_click.ogg', 40, TRUE) for(var/obj/item/grenade/c4/demo_charge/charge as anything in GLOB.demolition_charges) - if(charge.clacks >= charge.clacks_needed) - charge.detonate() charge.clack() /obj/item/grenade/c4/demo_charge @@ -47,9 +45,11 @@ GLOBAL_LIST_EMPTY(demolition_charges) /// Decides on random effects to play when the detonator has been clicked but nothing happens yet /obj/item/grenade/c4/demo_charge/proc/clack() clacks++ - if(prob(75)) + if(prob(25)) + do_sparks(3, FALSE, target) + if(clacks < clacks_needed) return - do_sparks(3, FALSE, target) + detonate() /obj/item/grenade/c4/demo_charge/Destroy() if(src in GLOB.demolition_charges) From d68300142a828e487c70f94139ad67e864f8c2a2 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 13 Jun 2026 21:21:30 -0400 Subject: [PATCH 03/11] fixes little exploit --- modular_doppler/shipbreaking/code/tools/demo_charge.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm index bce16544d5ff9f..b803018686558d 100644 --- a/modular_doppler/shipbreaking/code/tools/demo_charge.dm +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -49,7 +49,12 @@ GLOBAL_LIST_EMPTY(demolition_charges) do_sparks(3, FALSE, target) if(clacks < clacks_needed) return - detonate() + if(obj_flags & EMAGGED) + detonate() + return + if(istype(get_area(target), /area/shuttle/salvaged_shuttle)) + detonate() + return /obj/item/grenade/c4/demo_charge/Destroy() if(src in GLOB.demolition_charges) From 95d74c3bd5a2b83db6b2a9e638ef8030a6b29427 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sat, 13 Jun 2026 21:22:19 -0400 Subject: [PATCH 04/11] makes it two clacks because clack clack boom --- modular_doppler/shipbreaking/code/tools/demo_charge.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm index b803018686558d..f3556b60c33d53 100644 --- a/modular_doppler/shipbreaking/code/tools/demo_charge.dm +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -35,7 +35,7 @@ GLOBAL_LIST_EMPTY(demolition_charges) /// How many times the detonator has pulsed on this demo charge var/clacks = 0 /// How many times the detonator needs to be pulsed to detonate the charge - var/clacks_needed = 3 + var/clacks_needed = 2 /obj/item/grenade/c4/demo_charge/Initialize(mapload) . = ..() From b09b51bfd649e4c0621c2e64d131b492272a5bd7 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 14 Jun 2026 00:15:16 -0400 Subject: [PATCH 05/11] more stuff --- .../shipbreaking/code/tools/demo_charge.dm | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm index f3556b60c33d53..85474859fed7cb 100644 --- a/modular_doppler/shipbreaking/code/tools/demo_charge.dm +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_EMPTY(demolition_charges) whatever surface the charge is attached to. Involves minimal risk to any operators standing near the charge." icon = 'modular_doppler/shipbreaking/icons/tools.dmi' icon_state = "charge0" + base_icon_state = "charge" inhand_icon_state = "ninja-explosive" worn_icon_state = null lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi' @@ -35,19 +36,46 @@ GLOBAL_LIST_EMPTY(demolition_charges) /// How many times the detonator has pulsed on this demo charge var/clacks = 0 /// How many times the detonator needs to be pulsed to detonate the charge - var/clacks_needed = 2 + var/clacks_needed = 3 + /// If the charge has more explosive than normal + var/more_explosive = FALSE /obj/item/grenade/c4/demo_charge/Initialize(mapload) . = ..() + randomize_explosives() + plastic_overlay = mutable_appearance(icon, "[base_icon_state]2", HIGH_OBJ_LAYER) if(prob(20)) clacks_needed += rand(1, 3) +/obj/item/grenade/c4/demo_charge/examine(mob/user) + . = ..() + if(more_explosive) + . += span_notice("It feels heavier than usual. Did they overload it?") + if(obj_flags & EMAGGED) + . += span_notice("It keeps trying to stick to everything around it, it looks like the safety is fried.") + +/// Randomizes the explosive power of the charge and gives it a really low chance to not be directional just for fun +/obj/item/grenade/c4/demo_charge/proc/randomize_explosives() + if(prob(5)) + directional = FALSE + var/random_explosive_mass = rand(1,10) + switch(random_explosive_mass) + if(1) + boom_sizes = list(1, 4, 6) + if(2) + boom_sizes = list(1, 3, 5) + if(3) + boom_sizes = list(0, 5, 7) + else + return + more_explosive = TRUE + /// Decides on random effects to play when the detonator has been clicked but nothing happens yet /obj/item/grenade/c4/demo_charge/proc/clack() clacks++ if(prob(25)) do_sparks(3, FALSE, target) - if(clacks < clacks_needed) + if(clacks_needed > clacks) return if(obj_flags & EMAGGED) detonate() From 56887ff9922709db56f86831f374af5a85cba2b1 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 14 Jun 2026 01:10:45 -0400 Subject: [PATCH 06/11] actually adds emag and emp interaction --- .../shipbreaking/code/tools/demo_charge.dm | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm index 85474859fed7cb..0ed4cb3f60231b 100644 --- a/modular_doppler/shipbreaking/code/tools/demo_charge.dm +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -50,9 +50,26 @@ GLOBAL_LIST_EMPTY(demolition_charges) /obj/item/grenade/c4/demo_charge/examine(mob/user) . = ..() if(more_explosive) - . += span_notice("It feels heavier than usual. Did they overload it?") + . += span_notice("It feels heavier than it should. This one probably has more explosives in it than usual.") + if(!directional) + . += span_notice("The casing feels pretty thing. It seems like a good idea to be nowhere in line of sight of this when it goes off.") if(obj_flags & EMAGGED) - . += span_notice("It keeps trying to stick to everything around it, it looks like the safety is fried.") + . += span_notice("It keeps trying to stick to everything around it, looks like the safety is fried.") + +/obj/item/grenade/c4/demo_charge/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return FALSE + playsound(src, SFX_SPARKS, 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + do_sparks(3, cardinal_only = FALSE, source = src) + obj_flags |= EMAGGED + return TRUE + +/obj/item/grenade/c4/demo_charge/emp_act(severity) + . = ..() + if(prob(5)) + detonate() + return + emag_act() /// Randomizes the explosive power of the charge and gives it a really low chance to not be directional just for fun /obj/item/grenade/c4/demo_charge/proc/randomize_explosives() @@ -62,10 +79,13 @@ GLOBAL_LIST_EMPTY(demolition_charges) switch(random_explosive_mass) if(1) boom_sizes = list(1, 4, 6) + directional_arc = 60 if(2) boom_sizes = list(1, 3, 5) + directional_arc = 200 if(3) boom_sizes = list(0, 5, 7) + directional_arc = 160 else return more_explosive = TRUE From b248939033ac736d4b168c2381f0c7aeb4f05b93 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 14 Jun 2026 14:04:37 -0400 Subject: [PATCH 07/11] fixes worn icons --- modular_doppler/shipbreaking/code/tools/demo_charge.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/shipbreaking/code/tools/demo_charge.dm b/modular_doppler/shipbreaking/code/tools/demo_charge.dm index 0ed4cb3f60231b..0f0d1eedd5eea2 100644 --- a/modular_doppler/shipbreaking/code/tools/demo_charge.dm +++ b/modular_doppler/shipbreaking/code/tools/demo_charge.dm @@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(demolition_charges) icon_state = "charge0" base_icon_state = "charge" inhand_icon_state = "ninja-explosive" - worn_icon_state = null + worn_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/bombs_righthand.dmi' directional = TRUE From bf6904016b0f4ef1c50e8108afea81e2418f933c Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Sun, 14 Jun 2026 21:00:30 -0400 Subject: [PATCH 08/11] adds collector inlet vacuums --- .../deltastation_shipbreaking.dmm | 48 +++++++----- .../metastation/metastation_shipbreaking.dmm | 26 +++++-- .../nebulastation_shipbreaking.dmm | 42 +++++++---- .../tramstation/tramstation_shipbreaking.dmm | 70 ++++++++++++------ _maps/map_files/Pubbystation/pubbystation.dmm | 60 +++++++++------ .../code/tools/collector_vacuum.dm | 18 +++++ modular_doppler/shipbreaking/icons/inlet.dmi | Bin 0 -> 1522 bytes tgstation.dme | 1 + 8 files changed, 178 insertions(+), 87 deletions(-) create mode 100644 modular_doppler/shipbreaking/code/tools/collector_vacuum.dm create mode 100644 modular_doppler/shipbreaking/icons/inlet.dmi diff --git a/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm index 941259cf8d951d..b3bc2315619f17 100644 --- a/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm @@ -117,6 +117,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/side, /area/station/salvage_bay) +"jS" = ( +/obj/effect/wind/shipbreaking_collector{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) "kd" = ( /obj/structure/girder/reinforced, /obj/structure/shuttle_decoration/wall_plate/armor, @@ -635,6 +641,12 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark, /area/station/salvage_bay) +"UW" = ( +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) "Vd" = ( /obj/machinery/conveyor{ dir = 1; @@ -981,9 +993,9 @@ Pb Vd iA ul -yB -yB -Ir +jS +jS +jS wA wA wA @@ -1024,9 +1036,9 @@ oW GU LO iA -Ir -Ir -Ir +jS +jS +jS wA wA wA @@ -1067,9 +1079,9 @@ Er GU YA nZ -yB -yB -Ir +jS +jS +jS wA wA wA @@ -1153,9 +1165,9 @@ GU vX OC ul -yB -yB -Ir +UW +UW +UW wA wA wA @@ -1196,9 +1208,9 @@ GU tR OC iA -Ir -Ir -Ir +UW +UW +UW wA wA wA @@ -1239,9 +1251,9 @@ Vd iA OC nZ -yB -yB -Ir +UW +UW +UW wA wA wA diff --git a/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm index 964f07c98d30c2..b25a2afd198ba5 100644 --- a/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm @@ -575,6 +575,10 @@ }, /turf/open/space/basic, /area/space/nearstation) +"Fr" = ( +/obj/effect/wind/shipbreaking_collector/scrap, +/turf/open/space/basic, +/area/space) "FL" = ( /obj/effect/spawner/random/salvage/container_or_crate_or_cargo/salvage, /obj/effect/decal/cleanable/dirt, @@ -758,6 +762,7 @@ "OK" = ( /obj/effect/turf_decal/loading_area/red, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/wind/shipbreaking_collector/scrap, /turf/open/floor/plating/reinforced/airless, /area/space/nearstation) "OO" = ( @@ -805,6 +810,10 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/plating, /area/station/salvage_bay) +"Rh" = ( +/obj/effect/wind/shipbreaking_collector, +/turf/open/space/basic, +/area/space) "Rj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -822,6 +831,7 @@ "Rv" = ( /obj/effect/turf_decal/loading_area/white, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/wind/shipbreaking_collector, /turf/open/floor/plating/reinforced/airless, /area/space/nearstation) "RY" = ( @@ -1454,8 +1464,8 @@ Oq Oq Oq Oq -Oq -Oq +Fr +Fr OK xn Zc @@ -1486,8 +1496,8 @@ Oq Oq Oq Oq -Oq -Oq +Fr +Fr OK fi Zc @@ -1742,8 +1752,8 @@ Oq Oq Oq Oq -Oq -Oq +Rh +Rh Rv xn TU @@ -1774,8 +1784,8 @@ Oq Oq Oq Oq -Oq -Oq +Rh +Rh Rv fi vC diff --git a/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm index aaa951df5167c4..2487e749ab8371 100644 --- a/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm @@ -233,6 +233,10 @@ }, /turf/open/floor/plating, /area/station/salvage_bay) +"lw" = ( +/obj/effect/wind/shipbreaking_collector/scrap, +/turf/open/space/openspace, +/area/space) "ml" = ( /obj/machinery/computer/salvage_bay_controller{ dir = 8 @@ -339,6 +343,7 @@ "rJ" = ( /obj/effect/turf_decal/loading_area/red, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/wind/shipbreaking_collector/scrap, /turf/open/floor/plating/reinforced/airless, /area/space/nearstation) "ss" = ( @@ -499,6 +504,10 @@ /obj/structure/sign/poster/random/directional/north, /turf/open/floor/plating/aluminum, /area/station/salvage_bay) +"CZ" = ( +/obj/effect/wind/shipbreaking_collector, +/turf/open/space/openspace, +/area/space) "EF" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/teal, @@ -670,6 +679,7 @@ "Sf" = ( /obj/effect/turf_decal/loading_area/white, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/wind/shipbreaking_collector, /turf/open/floor/plating/reinforced/airless, /area/space/nearstation) "Sr" = ( @@ -1023,7 +1033,7 @@ xU xU xU xU -Ad +xU xh Nq Nq @@ -1061,9 +1071,9 @@ xU xU xU xU -xU -xU -Ad +CZ +CZ +CZ Sf re iM @@ -1101,9 +1111,9 @@ xU xU xU xU -xU -xU -Ad +CZ +CZ +CZ Sf HY WW @@ -1143,7 +1153,7 @@ xU xU xU xU -Ad +xU xh Nq Kp @@ -1343,7 +1353,7 @@ xU xU xU xU -Ad +xU Nc Nq Nq @@ -1381,9 +1391,9 @@ xU xU xU xU -xU -xU -Ad +lw +lw +lw rJ re ak @@ -1421,9 +1431,9 @@ xU xU xU xU -xU -xU -Ad +lw +lw +lw rJ HY ak @@ -1463,7 +1473,7 @@ xU xU xU xU -Ad +xU Nc Nq Nq diff --git a/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm b/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm index bf3f4bff83d73c..15f6033930dc96 100644 --- a/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm @@ -80,6 +80,12 @@ "eP" = ( /turf/template_noop, /area/template_noop) +"eS" = ( +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 8 + }, +/turf/open/space/openspace, +/area/space) "fz" = ( /obj/structure/railing{ dir = 9 @@ -224,6 +230,12 @@ "ll" = ( /turf/open/floor/iron/grimy, /area/station/salvage_bay) +"lr" = ( +/obj/effect/wind/shipbreaking_collector{ + dir = 8 + }, +/turf/open/space/openspace, +/area/space) "lt" = ( /obj/structure/lattice/catwalk, /turf/open/space/openspace, @@ -313,6 +325,9 @@ /obj/effect/turf_decal/loading_area/red{ dir = 8 }, +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/station/asteroid) "pT" = ( @@ -507,6 +522,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/salvage_bay) +"yN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/station/asteroid) "yO" = ( /obj/structure/railing{ dir = 8 @@ -837,6 +859,9 @@ /obj/effect/turf_decal/loading_area/white{ dir = 8 }, +/obj/effect/wind/shipbreaking_collector{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/station/asteroid) "SQ" = ( @@ -940,6 +965,9 @@ /area/station/salvage_bay) "Yx" = ( /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/wind/shipbreaking_collector{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/station/asteroid) "YG" = ( @@ -1882,9 +1910,9 @@ Yx Yx Yx pB -Yx -Yx -Yx +yN +yN +yN yn fU fU @@ -1937,15 +1965,15 @@ vv vv WN lt -Wu -Wu -Wu -Wu -Wu -Wu -Wu -Wu -Wu +So +lr +lr +lr +So +eS +eS +eS +So Wu Wu VD @@ -1997,15 +2025,15 @@ Sl lt lt lt -lt -lt -lt -lt -lt -lt -lt -lt -lt +So +lr +lr +lr +So +eS +eS +eS +So lt lt WA diff --git a/_maps/map_files/Pubbystation/pubbystation.dmm b/_maps/map_files/Pubbystation/pubbystation.dmm index 2ced4d27ae99ce..5429ddeecb7bef 100644 --- a/_maps/map_files/Pubbystation/pubbystation.dmm +++ b/_maps/map_files/Pubbystation/pubbystation.dmm @@ -45759,6 +45759,12 @@ }, /turf/open/floor/iron/terracotta/small, /area/station/service/kitchen) +"qyV" = ( +/obj/effect/wind/shipbreaking_collector{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) "qze" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/firealarm/directional/south, @@ -49761,6 +49767,12 @@ dir = 8 }, /area/station/engineering/atmos/hfr_room) +"tmV" = ( +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) "tmY" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -80554,10 +80566,10 @@ abI qos eTg gZu -aht -aht -cdm -aaa +qyV +qyV +qyV +qyV aaa aaa aaa @@ -80811,10 +80823,10 @@ abI fLG eTg eTg -cdm -cdm -cdm -aaa +qyV +qyV +qyV +qyV aaa aaa aaa @@ -81068,10 +81080,10 @@ fEk dYG eTg qnM -aht -aht -cdm -aaa +qyV +qyV +qyV +qyV aaa aaa aaa @@ -81582,10 +81594,10 @@ wwa sww nYb gZu -aht -aht -cdm -aaa +tmV +tmV +tmV +tmV aaa aaa aaa @@ -81839,10 +81851,10 @@ abI tFr nYb eTg -cdm -cdm -cdm -aaa +tmV +tmV +tmV +tmV aaa aaa aaa @@ -82096,10 +82108,10 @@ abI rlk nYb qnM -aht -aht -cdm -aaa +tmV +tmV +tmV +tmV aaa aaa aaa diff --git a/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm b/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm new file mode 100644 index 00000000000000..c8b29187f06211 --- /dev/null +++ b/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm @@ -0,0 +1,18 @@ +/obj/effect/wind/shipbreaking_collector + name = "salvage inlet collector field" + desc = "Creates an artificial pull in the direction it moves, typically towards a nearby salvage collector inlet." + icon = 'modular_doppler/shipbreaking/icons/inlet.dmi' + icon_state = "inlet" + invisibility = 0 + color = "#4699a6" + +/obj/effect/wind/shipbreaking_collector/Initialize(mapload) + . = ..() + update_appearance(UPDATE_OVERLAYS) + +/obj/effect/wind/shipbreaking_collector/update_overlays() + . = ..() + . += emissive_appearance(icon, icon_state, src) + +/obj/effect/wind/shipbreaking_collector/scrap + color = "#d99f3a" diff --git a/modular_doppler/shipbreaking/icons/inlet.dmi b/modular_doppler/shipbreaking/icons/inlet.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5ed3f11e89deaa6c178989822495cfffdf52767d GIT binary patch literal 1522 zcmVV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DKjr8wM2=FGbOXA7^I1dGp#5wHx1kh})LYYb!Qt^`2wD(tk<~dnc}j`gLcu8KR|^?t=$rjvkLYDRMbBpiQQWLh{7}%6P>;1%ig`lgUeoYbrTg`0z%)mInh~l}sg{WOkR^S~# zl2v6lL(_skc5E*t)&kdghM$p?b?ra}5`kqEI z_o|)_kQ@jHKs*b`!r!xi=xx~O_4{jG(9vG|-qACGISlHRZY{4hPkeDCsT1w$Po71< z^aRcl7M=z80pAlCc@|LXCHErL*YB0w!;T*Q-w3L=G@hE#IJGnFjwjV?=G@h@Cvd{a zwYbNL+ykN~Fk(&KwM!cXrAxrcdC3IJd;)1Mh(Zt{gkZxZfDl5`!XCiL(gy1H2fcyjL4RBxeD21lwUp&whXjwf&k8Vpm_k zSL%4HdiDb(hy4HxoLGx%PUar$2T0D}9DpA{URViC4xhpfv;1Twa%uFDa}yE+&jR9r zDFwG6oCUPD^w5Uo87D$M#G25%3G4OBat@EW!0B2;0cIC)HPo*~odsk7#sNk|o&{t8 z-T@?aeTgP3@D6~8HoCO>sP+E_!U0%{CXYayQ>^Gu%wayMgr_EG#crwnJ-x@6t3WIP zPr-Yww$3e9fawW*0=s<aV#BduL2m1kpyvq^*5uSTbqxA=7J;z%u0SH_T^=p!F-P_fS#?K6l1B@u% zy<3Rd)$H;vO8~qBl$+bRNr`3!ZSiKL_ZoKvcn3g28&zKEBXa?=z=@J=WLcPO@GfTo zpB4s4pr>NM96*5eTJ4=%%wRu2a@Y@$9QFewXIP8&K8$%%gqS(+$~{P(Upw}Sp8Ws| zM3!p3$6ne6SRBSk-|Llxa!L9IJ_qnV3z*&as>VtmF?af&Kx;#3$%oU_U@|RKI7Yp)F?oXPB`)qd8`WU^`=3=p*J%-w!aGchy!aeZ<^< Y0M-(ac7Doz5C8xG07*qoM6N<$f~u*wrvLx| literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index bf6d85d6756904..ac39ea0cf9826e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7855,6 +7855,7 @@ #include "modular_doppler\shipbreaking\code\shuttle_parts\wall_plating.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\water_cycler.dm" #include "modular_doppler\shipbreaking\code\shuttle_parts\windows.dm" +#include "modular_doppler\shipbreaking\code\tools\collector_vacuum.dm" #include "modular_doppler\shipbreaking\code\tools\demo_charge.dm" #include "modular_doppler\shipbreaking\code\tools\rnd.dm" #include "modular_doppler\ships_r_us\code\buyable_shuttle_template.dm" From f69a3864336dcbe2271326c4ef90c261f1a8a7eb Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 16 Jun 2026 16:11:05 -0400 Subject: [PATCH 09/11] collector field updates --- .../deltastation_shipbreaking.dmm | 26 +++++++-- .../tramstation/tramstation_shipbreaking.dmm | 58 ++++++++++++++----- _maps/map_files/Pubbystation/pubbystation.dmm | 26 +++++++-- .../code/tools/collector_vacuum.dm | 4 ++ 4 files changed, 86 insertions(+), 28 deletions(-) diff --git a/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm index b3bc2315619f17..9901314cdbd069 100644 --- a/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm @@ -215,6 +215,13 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"rV" = ( +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "sw" = ( /obj/structure/lattice, /obj/structure/marker_beacon/yellow, @@ -497,6 +504,13 @@ /obj/structure/railing/eva_handhold/directional/west, /turf/open/space/basic, /area/space/nearstation) +"MY" = ( +/obj/effect/wind/shipbreaking_collector{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "MZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -995,6 +1009,7 @@ iA ul jS jS +MY jS wA wA @@ -1014,7 +1029,6 @@ wA wA wA wA -wA Ir yB YJ @@ -1038,6 +1052,7 @@ LO iA jS jS +MY jS wA wA @@ -1057,7 +1072,6 @@ wA wA wA wA -wA Ir yB uy @@ -1081,6 +1095,7 @@ YA nZ jS jS +MY jS wA wA @@ -1100,7 +1115,6 @@ wA wA wA wA -wA Ir yB YJ @@ -1167,6 +1181,7 @@ OC ul UW UW +rV UW wA wA @@ -1186,7 +1201,6 @@ wA wA wA wA -wA Ir yB YJ @@ -1210,6 +1224,7 @@ OC iA UW UW +rV UW wA wA @@ -1229,7 +1244,6 @@ wA wA wA wA -wA Ir yB uy @@ -1253,6 +1267,7 @@ OC nZ UW UW +rV UW wA wA @@ -1272,7 +1287,6 @@ wA wA wA wA -wA Ir yB YJ diff --git a/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm b/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm index 15f6033930dc96..ced324508526ce 100644 --- a/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm @@ -635,6 +635,14 @@ }, /turf/open/floor/iron, /area/station/salvage_bay) +"Gs" = ( +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 8 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/openspace, +/area/space/nearstation) "Gu" = ( /obj/machinery/atmospherics/components/unary/passive_vent/layer2{ dir = 8 @@ -656,6 +664,11 @@ }, /turf/open/misc/asteroid, /area/station/salvage_bay) +"Hm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/lattice, +/turf/open/space/openspace, +/area/space/nearstation) "Ij" = ( /obj/structure/girder/reinforced, /obj/effect/decal/cleanable/dirt/dust, @@ -876,6 +889,11 @@ dir = 1 }, /area/station/salvage_bay) +"TK" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/openspace, +/area/space/nearstation) "TN" = ( /obj/machinery/camera/autoname/directional/south, /turf/open/misc/asteroid, @@ -939,6 +957,14 @@ /obj/structure/shuttle_decoration/headlight/directional/east, /turf/closed/wall/r_wall, /area/space/nearstation) +"Xd" = ( +/obj/effect/wind/shipbreaking_collector{ + dir = 8 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/openspace, +/area/space/nearstation) "XK" = ( /obj/structure/railing{ dir = 1 @@ -1969,7 +1995,7 @@ So lr lr lr -So +TK eS eS eS @@ -2025,15 +2051,15 @@ Sl lt lt lt -So -lr -lr -lr -So -eS -eS -eS -So +TK +Xd +Xd +Xd +Hm +Gs +Gs +Gs +TK lt lt WA @@ -2086,13 +2112,13 @@ lt So So So +lr +lr +lr So -So -So -So -So -So -So +eS +eS +eS So So So diff --git a/_maps/map_files/Pubbystation/pubbystation.dmm b/_maps/map_files/Pubbystation/pubbystation.dmm index 5429ddeecb7bef..c72ddfb01d2c7e 100644 --- a/_maps/map_files/Pubbystation/pubbystation.dmm +++ b/_maps/map_files/Pubbystation/pubbystation.dmm @@ -40069,6 +40069,13 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/science/xenobiology) +"msC" = ( +/obj/effect/wind/shipbreaking_collector/scrap{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "msO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -48964,6 +48971,13 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"sOd" = ( +/obj/effect/wind/shipbreaking_collector{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "sOm" = ( /obj/structure/shuttle_decoration/wall_plate/armor{ dir = 4 @@ -80568,7 +80582,7 @@ eTg gZu qyV qyV -qyV +sOd qyV aaa aaa @@ -80825,7 +80839,7 @@ eTg eTg qyV qyV -qyV +sOd qyV aaa aaa @@ -81082,7 +81096,7 @@ eTg qnM qyV qyV -qyV +sOd qyV aaa aaa @@ -81596,7 +81610,7 @@ nYb gZu tmV tmV -tmV +msC tmV aaa aaa @@ -81853,7 +81867,7 @@ nYb eTg tmV tmV -tmV +msC tmV aaa aaa @@ -82110,7 +82124,7 @@ nYb qnM tmV tmV -tmV +msC tmV aaa aaa diff --git a/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm b/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm index c8b29187f06211..e5e4652dcc0bf8 100644 --- a/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm +++ b/modular_doppler/shipbreaking/code/tools/collector_vacuum.dm @@ -5,10 +5,14 @@ icon_state = "inlet" invisibility = 0 color = "#4699a6" + light_range = 1 + light_power = 2 + light_on = TRUE /obj/effect/wind/shipbreaking_collector/Initialize(mapload) . = ..() update_appearance(UPDATE_OVERLAYS) + light_color = color /obj/effect/wind/shipbreaking_collector/update_overlays() . = ..() From 0893992bc88e9619c458820206ddea438b8699ce Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 16 Jun 2026 17:28:24 -0400 Subject: [PATCH 10/11] fixes everything --- .../deltastation/deltastation_shipbreaking.dmm | 12 ++++++++++++ .../metastation/metastation_shipbreaking.dmm | 13 ++++++++++++- .../nebulastation/nebulastation_shipbreaking.dmm | 12 ++++++++++++ .../tramstation/tramstation_shipbreaking.dmm | 12 ++++++++++++ _maps/map_files/Pubbystation/pubbystation.dmm | 12 ++++++++++++ code/datums/storage/subtypes/bags.dm | 8 +++++++- .../shipbreaking/code/shuttle_parts/wall_plating.dm | 4 ++-- 7 files changed, 69 insertions(+), 4 deletions(-) diff --git a/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm index 9901314cdbd069..be5675c34ae960 100644 --- a/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/deltastation/deltastation_shipbreaking.dmm @@ -575,6 +575,18 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm/directional/north, /obj/machinery/light/dim/directional/north, +/obj/structure/shelf, +/obj/item/storage/bag/construction{ + pixel_y = -4; + pixel_x = -4 + }, +/obj/item/storage/bag/construction{ + pixel_x = 2 + }, +/obj/item/storage/bag/construction{ + pixel_x = -1; + pixel_y = 7 + }, /turf/open/floor/plating, /area/station/salvage_bay) "PN" = ( diff --git a/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm index b25a2afd198ba5..16aff7dc14af99 100644 --- a/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/metastation/metastation_shipbreaking.dmm @@ -849,11 +849,22 @@ /turf/open/floor/iron/smooth, /area/station/salvage_bay) "Tu" = ( -/obj/structure/closet/secure_closet/engineering_electrical, /obj/structure/railing{ dir = 10 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf, +/obj/item/storage/bag/construction{ + pixel_y = -4; + pixel_x = -4 + }, +/obj/item/storage/bag/construction{ + pixel_x = 2 + }, +/obj/item/storage/bag/construction{ + pixel_x = -1; + pixel_y = 7 + }, /turf/open/floor/iron/smooth, /area/station/salvage_bay) "TC" = ( diff --git a/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm b/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm index 2487e749ab8371..df1dfc5b7a8ec1 100644 --- a/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/nebulastation/nebulastation_shipbreaking.dmm @@ -15,6 +15,18 @@ "ap" = ( /obj/structure/sign/poster/random/directional/south, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf, +/obj/item/storage/bag/construction{ + pixel_y = -4; + pixel_x = -4 + }, +/obj/item/storage/bag/construction{ + pixel_x = 2 + }, +/obj/item/storage/bag/construction{ + pixel_x = -1; + pixel_y = 7 + }, /turf/open/floor/iron/smooth, /area/station/salvage_bay) "ar" = ( diff --git a/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm b/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm index ced324508526ce..1ea14cedf45a7c 100644 --- a/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm +++ b/_maps/doppler/automapper/templates/tramstation/tramstation_shipbreaking.dmm @@ -814,6 +814,18 @@ /turf/open/floor/iron, /area/station/salvage_bay) "Pp" = ( +/obj/structure/shelf, +/obj/item/storage/bag/construction{ + pixel_y = -4; + pixel_x = -4 + }, +/obj/item/storage/bag/construction{ + pixel_x = 2 + }, +/obj/item/storage/bag/construction{ + pixel_x = -1; + pixel_y = 7 + }, /obj/structure/railing{ dir = 8 }, diff --git a/_maps/map_files/Pubbystation/pubbystation.dmm b/_maps/map_files/Pubbystation/pubbystation.dmm index c72ddfb01d2c7e..e2fc1857eaa6eb 100644 --- a/_maps/map_files/Pubbystation/pubbystation.dmm +++ b/_maps/map_files/Pubbystation/pubbystation.dmm @@ -44847,6 +44847,18 @@ }, /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf, +/obj/item/storage/bag/construction{ + pixel_y = -4; + pixel_x = -4 + }, +/obj/item/storage/bag/construction{ + pixel_x = 2 + }, +/obj/item/storage/bag/construction{ + pixel_x = -1; + pixel_y = 7 + }, /turf/open/floor/plating, /area/station/salvage_bay) "pWb" = ( diff --git a/code/datums/storage/subtypes/bags.dm b/code/datums/storage/subtypes/bags.dm index 73e6670e56749f..da620be0a162b6 100644 --- a/code/datums/storage/subtypes/bags.dm +++ b/code/datums/storage/subtypes/bags.dm @@ -204,7 +204,7 @@ /datum/storage/bag/construction max_total_storage = 100 max_slots = 50 - max_specific_storage = WEIGHT_CLASS_SMALL + max_specific_storage = WEIGHT_CLASS_SMALL // DOPPLER EDIT - Construction bags hold shipbreaking scrap items - max_specific_storage = WEIGHT_CLASS_SMALL /datum/storage/bag/construction/New(atom/parent, max_slots, max_specific_storage, max_total_storage, rustle_sound, remove_rustle_sound) . = ..() @@ -220,6 +220,12 @@ /obj/item/stack/sheet, /obj/item/rcd_ammo, /obj/item/stack/rods, + // DOPPLER ADDITION START - Construction bags hold shipbreaking scrap items + /obj/item/epic_loot, + /obj/item/nanocarbon_shard, + /obj/item/demo_charge_detonator, + /obj/item/grenade/c4/demo_charge, + // DOPPLER ADDITION END )) ///Harpoon quiver bag diff --git a/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm b/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm index cf350af98f53db..aeedcb161c678c 100644 --- a/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm +++ b/modular_doppler/shipbreaking/code/shuttle_parts/wall_plating.dm @@ -40,11 +40,11 @@ SIGNAL_HANDLER if(leaving == src) return // Let's not block ourselves. - if(!(direction & dir)) + if(!(direction & dir) && (dir in GLOB.cardinals)) return if (!density) return - if (leaving.movement_type & (PHASING)) + if (leaving.movement_type & MOVETYPES_NOT_TOUCHING_GROUND) return if (leaving.move_force >= MOVE_FORCE_EXTREMELY_STRONG) return From ce5df581e8c3aacd71978bc19aeddec707a9f0d2 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 16 Jun 2026 17:28:47 -0400 Subject: [PATCH 11/11] more... normal --- code/datums/storage/subtypes/bags.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/storage/subtypes/bags.dm b/code/datums/storage/subtypes/bags.dm index da620be0a162b6..d0904692874196 100644 --- a/code/datums/storage/subtypes/bags.dm +++ b/code/datums/storage/subtypes/bags.dm @@ -204,7 +204,7 @@ /datum/storage/bag/construction max_total_storage = 100 max_slots = 50 - max_specific_storage = WEIGHT_CLASS_SMALL // DOPPLER EDIT - Construction bags hold shipbreaking scrap items - max_specific_storage = WEIGHT_CLASS_SMALL + max_specific_storage = WEIGHT_CLASS_NORMAL // DOPPLER EDIT - Construction bags hold shipbreaking scrap items - max_specific_storage = WEIGHT_CLASS_SMALL /datum/storage/bag/construction/New(atom/parent, max_slots, max_specific_storage, max_total_storage, rustle_sound, remove_rustle_sound) . = ..()