From b5134e5197bbba5d87945899907b44c6cfefdba3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 29 Jan 2020 23:01:06 -0700 Subject: [PATCH] Update pool_controller.dm --- code/modules/pool/pool_controller.dm | 31 ++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/code/modules/pool/pool_controller.dm b/code/modules/pool/pool_controller.dm index 94e16a245a..d88db80f9b 100644 --- a/code/modules/pool/pool_controller.dm +++ b/code/modules/pool/pool_controller.dm @@ -1,3 +1,5 @@ +#define POOL_NO_OVERDOSE_MEDICINE_MAX 5 //max units of no-overdose medicine to allow mobs to have through duplication + //Originally stolen from paradise. Credits to tigercat2000. //Modified a lot by Kokojo and Tortellini Tony for hippiestation. //Heavily refactored by tgstation @@ -53,6 +55,10 @@ var/shocked = FALSE /// Old reagent color, used to determine if update_color needs to reset colors. var/old_rcolor + /// Just to prevent spam + var/draining = FALSE + /// Reagent blacklisting + var/respect_reagent_blacklist = TRUE /obj/machinery/pool/controller/examine(mob/user) . = ..() @@ -105,13 +111,15 @@ /obj/machinery/pool/controller/AltClick(mob/user) . = ..() - if(isliving(user) && !user.IsStun() && !user.IsKnockdown() && !user.incapacitated()) + if(isliving(user) && user.Adjacent(src) && user.CanReach(src) && !user.IsStun() && !user.IsKnockdown() && !user.incapacitated()) visible_message("[user] starts to drain [src]!") + draining = TRUE if(do_after(user, 50, target = src)) reagents.remove_all(INFINITY) visible_message("[user] drains [src].") say("Reagents cleared.") update_color() + draining = FALSE /obj/machinery/pool/controller/attackby(obj/item/W, mob/user) if(shocked && !(stat & NOPOWER)) @@ -137,15 +145,16 @@ var/list/reagent_names = list() var/list/rejected = list() for(var/datum/reagent/R in reagents.reagent_list) - if(R.volume >= min_reagent_amount) + if((R.volume >= min_reagent_amount) && (!respect_reagent_blacklist || !R.blacklisted)) reagent_names += R.name else reagents.remove_reagent(R.type, INFINITY) rejected += R.name if(length(reagent_names)) reagent_names = english_list(reagent_names) - log_game("[key_name(user)] has changed the [src] chems to [reagent_names]") - message_admins("[key_name_admin(user)] has changed the [src] chems to [reagent_names].") + var/msg = "POOL: [key_name(user)] has changed [src]'s chems to [reagent_names]" + log_game(msg) + message_admins(msg) if(length(rejected)) rejected = english_list(rejected) to_chat(user, "[src] rejects the following chemicals as they do not have at least [min_reagent_amount] units of volume: [rejected]") @@ -193,8 +202,9 @@ for(var/datum/reagent/R in reagents.reagent_list) if(R.reagent_state == SOLID) R.reagent_state = LIQUID - swimee.reagents.add_reagent(R.type, 0.5) //osmosis - reagents.reaction(swimee, VAPOR, 0.03) //3 percent + if(!swimee.has_reagent(POOL_NO_OVERDOSE_MEDICINE_MAX)) + swimee.reagents.add_reagent(R.type, 0.5) //osmosis + reagents.reaction(swimee, VAPOR, 0.03) //3 percent. Need to find a way to prevent this from stacking chems at some point like the above. for(var/obj/objects in W) if(W.reagents) W.reagents.reaction(objects, VAPOR, 1) @@ -301,15 +311,24 @@ visible_message("[usr] presses a button on [src].") temperature++ update_temp() + var/msg = "POOL: [key_name(usr)] increased [src]'s pool temperature at [COORD(src)] to [temperature]" + log_game(msg) + message_admins(msg) interact_delay = world.time + 15 if(href_list["DecreaseTemp"]) if(CanDownTemp(usr)) visible_message("[usr] presses a button on [src].") temperature-- update_temp() + var/msg = "POOL: [key_name(usr)] decreased [src]'s pool temperature at [COORD(src)] to [temperature]" + log_game(msg) + message_admins(msg) interact_delay = world.time + 15 if(href_list["Activate Drain"]) if((drainable || issilicon(usr) || IsAdminGhost(usr)) && !linked_drain.active) + var/msg = "POOL: [key_name(usr)] activated [src]'s pool drain in [linked_drain.filling? "FILLING" : "DRAINING"] mode at [COORD(src)]" + log_game(msg) + message_admins(msg) visible_message("[usr] presses a button on [src].") mist_off() interact_delay = world.time + 60