diff --git a/_maps/map_files/templates/shelter_1.dmm b/_maps/map_files/templates/shelter_1.dmm index d3745951e23..19071ada955 100644 --- a/_maps/map_files/templates/shelter_1.dmm +++ b/_maps/map_files/templates/shelter_1.dmm @@ -1,7 +1,7 @@ "a" = (/turf/simulated/wall/survival,/area/survivalpod) "b" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/survival,/area/survivalpod) "c" = (/obj/structure/fans,/turf/simulated/floor/pod,/area/survivalpod) -"d" = (/obj/machinery/smartfridge/survival_pod,/turf/simulated/floor/pod,/area/survivalpod) +"d" = (/obj/machinery/smartfridge/survival_pod/loaded,/turf/simulated/floor/pod,/area/survivalpod) "e" = (/obj/item/device/gps/computer,/turf/simulated/floor/pod,/area/survivalpod) "f" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/survival,/area/survivalpod) "g" = (/obj/machinery/sleeper/survival_pod,/turf/simulated/floor/pod,/area/survivalpod) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index a0b3f147b46..60e650691e5 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -577,4 +577,17 @@ light_color = LIGHT_COLOR_DARKRED +/obj/machinery/sleeper/syndie/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/sleeper/syndicate(null) + var/obj/item/weapon/stock_parts/matter_bin/B = new(null) + B.rating = initial_bin_rating + component_parts += B + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/stack/cable_coil(null, 1) + RefreshParts() + #undef ADDICTION_SPEEDUP_TIME \ No newline at end of file diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 2defdbf4623..2c6740ffbb3 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -744,6 +744,15 @@ obj/item/weapon/circuitboard/rdserver /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 2) +/obj/item/weapon/circuitboard/sleeper/syndicate + name = "circuit board (Sleeper Syndicate)" + build_path = /obj/machinery/sleeper/syndie + +/obj/item/weapon/circuitboard/sleeper/survival + name = "circuit board (Sleeper Survival Pod)" + build_path = /obj/machinery/sleeper/survival_pod + + /obj/item/weapon/circuitboard/bodyscanner name = "circuit board (Body Scanner)" build_path = /obj/machinery/bodyscanner diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 518304fda5f..b003d9ef1d6 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -386,6 +386,8 @@ Class Procs: I.crit_fail = 1 I.forceMove(loc) qdel(src) + return 1 + return 0 /obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/icon_state_open, var/icon_state_closed, var/obj/item/weapon/screwdriver/S) if(istype(S)) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index a012afa74f9..d403b4aae4b 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -779,6 +779,17 @@ Post_Consume(mob/living/M) M.reagents.add_reagent("omnizine", 15) +/obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket_weak + name = "Lightly Warm Donk-pocket" + desc = "The food of choice for the seasoned traitor. This one is lukewarm." + icon_state = "donkpocket" + filling_color = "#DEDEAB" + +/obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket_weak/New() + ..() + reagents.add_reagent("nutriment", 4) + reagents.add_reagent("weak_omnizine", 3) + /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket name = "Donk-pocket" desc = "This donk-pocket is emitting a small amount of heat." diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 9a670e42d7a..c6f7e54a003 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -49,6 +49,8 @@ /obj/machinery/smartfridge/Destroy() qdel(wires) wires = null + for(var/atom/movable/A in contents) + A.forceMove(loc) return ..() /obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) @@ -207,7 +209,8 @@ power_change() return - default_deconstruction_crowbar(O) + if(default_deconstruction_crowbar(O)) + return if(istype(O, /obj/item/device/multitool)||istype(O, /obj/item/weapon/wirecutters)) if(panel_open) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index cf1c4745435..1b1e4755e9b 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -372,6 +372,19 @@ icon_state = "sleeper-open" density = 0 +/obj/machinery/sleeper/survival_pod/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/sleeper/survival(null) + var/obj/item/weapon/stock_parts/matter_bin/B = new(null) + B.rating = initial_bin_rating + component_parts += B + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/stack/cable_coil(null, 1) + RefreshParts() + //Computer /obj/item/device/gps/computer name = "pod computer" @@ -411,15 +424,29 @@ max_n_of_items = 10 pixel_y = -4 +/obj/item/weapon/circuitboard/smartfridge/survival + name = "circuit board (Smartfridge Survival)" + build_path = /obj/machinery/smartfridge/survival_pod + +/obj/item/weapon/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params) + return + /obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) if(istype(O, /obj/item)) return 1 return 0 /obj/machinery/smartfridge/survival_pod/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/smartfridge/survival(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + RefreshParts() + +/obj/machinery/smartfridge/survival_pod/loaded/New() ..() for(var/i in 1 to 5) - var/obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket/W = new(src) + var/obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket_weak/W = new(src) load(W) if(prob(50)) var/obj/item/weapon/storage/pill_bottle/dice/D = new(src) @@ -494,4 +521,14 @@ name = "tubes" anchored = 1 layer = MOB_LAYER - 0.2 - density = 0 \ No newline at end of file + density = 0 + +/obj/structure/tubes/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/wrench)) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + user.visible_message("[user] disassembles [src].", \ + "You start to disassemble [src]...", "You hear clanking and banging noises.") + if(do_after(user, 20, target = src)) + new /obj/item/stack/rods(loc) + qdel(src) + return ..() \ No newline at end of file diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index e5e7af93b66..c9cb554b64f 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -1007,4 +1007,55 @@ M.adjustToxLoss(-5*REM) M.adjustBrainLoss(-15*REM) M.adjustCloneLoss(-3*REM) - ..() \ No newline at end of file + ..() + + +/datum/reagent/omnizine_diluted + name = "Diluted Omnizine" + id = "weak_omnizine" + description = "Slowly heals all damage types. A far weaker substitute than actual omnizine." + reagent_state = LIQUID + color = "#DCDCDC" + overdose_threshold = 30 + metabolization_rate = 0.1 + +/datum/reagent/omnizine_diluted/on_mob_life(mob/living/M) + M.adjustToxLoss(-0.5*REM) + M.adjustOxyLoss(-0.5*REM) + M.adjustBruteLoss(-0.5*REM) + M.adjustFireLoss(-0.5*REM) + ..() + +/datum/reagent/omnizine_diluted/overdose_process(mob/living/M, severity) + var/effect = ..() + if(severity == 1) //lesser + M.stuttering += 1 + if(effect <= 1) + M.visible_message("[M] suddenly cluches their gut!") + M.emote("scream") + M.Stun(4) + M.Weaken(4) + else if(effect <= 3) + M.visible_message("[M] completely spaces out for a moment.") + M.confused += 15 + else if(effect <= 5) + M.visible_message("[M] stumbles and staggers.") + M.Dizzy(5) + M.Weaken(3) + else if(effect <= 7) + M.visible_message("[M] shakes uncontrollably.") + M.Jitter(30) + else if(severity == 2) // greater + if(effect <= 2) + M.visible_message("[M] suddenly cluches their gut!") + M.emote("scream") + M.Stun(7) + M.Weaken(7) + else if(effect <= 5) + M.visible_message("[M] jerks bolt upright, then collapses!") + M.Paralyse(5) + M.Weaken(4) + else if(effect <= 8) + M.visible_message("[M] stumbles and staggers.") + M.Dizzy(5) + M.Weaken(3) \ No newline at end of file diff --git a/icons/obj/lavaland/survival_pod.dmi b/icons/obj/lavaland/survival_pod.dmi index 3895ac4d10e..fae242d524f 100644 Binary files a/icons/obj/lavaland/survival_pod.dmi and b/icons/obj/lavaland/survival_pod.dmi differ