From 4bb05991531a398a0b570e1ba2d88bfcceb1bb08 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Tue, 27 Aug 2019 21:25:06 -0800 Subject: [PATCH 1/2] Merge pull request #6423 from chaoko99/stomach_pump Ports Bay's stomach pump. --- code/game/machinery/Sleeper.dm | 42 ++++++++++++++++----- html/changelogs/chaoko99 - stomach_pump.yml | 36 ++++++++++++++++++ nano/templates/sleeper.tmpl | 3 ++ 3 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 html/changelogs/chaoko99 - stomach_pump.yml diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index b259fe1dedc..f89927e375c 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -29,8 +29,7 @@ sleeper = sleepernew sleepernew.console = src set_dir(get_dir(src, sleepernew)) - return - return + /obj/machinery/sleep_console/attack_ai(var/mob/user) return attack_hand(user) @@ -45,7 +44,7 @@ to_chat(user, "Sleeper not found!") return - if(sleeper.panel_open) + if(panel_open) to_chat(user, "Close the maintenance panel first.") return @@ -108,6 +107,7 @@ else data["beaker"] = -1 data["filtering"] = S.filtering + data["pump"] = S.pumping var/stasis_level_name = "Error!" for(var/N in S.stasis_choices) @@ -142,6 +142,9 @@ if(href_list["sleeper_filter"]) if(S.filtering != text2num(href_list["sleeper_filter"])) S.toggle_filter() + if(href_list["pump"]) + if(S.pumping != text2num(href_list["pump"])) + S.toggle_pump() if(href_list["chemical"] && href_list["amount"]) if(S.occupant && S.occupant.stat != DEAD) if(href_list["chemical"] in S.available_chemicals) // Your hacks are bad and you should feel bad @@ -166,6 +169,7 @@ var/list/base_chemicals = list("inaprovaline" = "Inaprovaline", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin") var/obj/item/weapon/reagent_containers/glass/beaker = null var/filtering = 0 + var/pumping = 0 var/obj/machinery/sleep_console/console var/stasis_level = 0 //Every 'this' life ticks are applied to the mob (when life_ticks%stasis_level == 1) var/stasis_choices = list("Complete (1%)" = 100, "Deep (10%)" = 10, "Moderate (20%)" = 5, "Light (50%)" = 2, "None (100%)" = 0) @@ -263,6 +267,17 @@ else toggle_filter() + if(pumping > 0) + if(beaker) + if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) + var/pumped = 0 + for(var/datum/reagent/x in occupant.ingested.reagent_list) + occupant.reagents.trans_to_obj(beaker, 3) + pumped++ + if(ishuman(occupant)) + occupant.ingested.trans_to_obj(beaker, pumped + 1) + else + toggle_pump() /obj/machinery/sleeper/update_icon() icon_state = "sleeper_[occupant ? "1" : "0"]" @@ -301,14 +316,12 @@ return if(UNCONSCIOUS) to_chat(usr, "You struggle through the haze to hit the eject button. This will take a couple of minutes...") - sleep(2 MINUTES) - if(!src || !usr || !occupant || (occupant != usr)) //Check if someone's released/replaced/bombed him already - return - go_out() + if(do_after(usr, 2 MINUTES, src)) + go_out() if(CONSCIOUS) go_out() else - if(usr.stat != 0) + if(usr.stat != CONSCIOUS) return go_out() add_fingerprint(usr) @@ -326,6 +339,9 @@ if(filtering) toggle_filter() + if(pumping) + toggle_pump() + if(stat & (BROKEN|NOPOWER)) ..(severity) return @@ -340,6 +356,12 @@ return filtering = !filtering +/obj/machinery/sleeper/proc/toggle_pump() + if(!occupant || !beaker) + pumping = 0 + return + pumping = !pumping + /obj/machinery/sleeper/proc/go_in(var/mob/M, var/mob/user) if(!M) return @@ -370,7 +392,8 @@ update_icon() /obj/machinery/sleeper/proc/go_out() - if(!occupant) + if(!occupant || occupant.loc != src) + occupant = null // JUST IN CASE return if(occupant.client) occupant.client.eye = occupant.client.mob @@ -387,6 +410,7 @@ update_use_power(1) update_icon() toggle_filter() + toggle_pump() /obj/machinery/sleeper/proc/remove_beaker() if(beaker) diff --git a/html/changelogs/chaoko99 - stomach_pump.yml b/html/changelogs/chaoko99 - stomach_pump.yml new file mode 100644 index 00000000000..ff753858ebb --- /dev/null +++ b/html/changelogs/chaoko99 - stomach_pump.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# hey can we PLEASE get a changelog bot already + +# Your name. +author: chaoko99 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Ported Bay's stomach pump." \ No newline at end of file diff --git a/nano/templates/sleeper.tmpl b/nano/templates/sleeper.tmpl index a0e9da787c5..885a1c025c1 100644 --- a/nano/templates/sleeper.tmpl +++ b/nano/templates/sleeper.tmpl @@ -51,6 +51,9 @@
{{:helper.link(data.filtering ? "Dialysis active" : "Dialysis inactive", null, {'sleeper_filter' : !data.filtering})}}
+
+ {{:helper.link(data.pump ? "Stomach pump active" : "Stomach pump inactive", null, {'pump' : !data.pump})}} +
{{:helper.link("Eject occupant", null, {'eject' : 0})}}