diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm new file mode 100644 index 00000000000..662649f087f --- /dev/null +++ b/code/game/machinery/poolcontroller.dm @@ -0,0 +1,66 @@ +/obj/machinery/poolcontroller + name = "Pool Controller" + desc = "A controller for the nearby pool." + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_control_standby" + var/list/linkedturfs = list() + var/temperature = "normal" + var/srange = 5 + +/obj/machinery/poolcontroller/New() + for(var/turf/simulated/floor/beach/water/W in range(srange,src)) + src.linkedturfs += W + processing_objects.Add(src) + +/obj/machinery/poolcontroller/attack_hand() + if(!Adjacent(usr)) + usr << "You moved away." + return + var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Hot","Cold","Normal","Cancel") + switch(temp) + if("Hot") + temperature = "hot" + if("Cold") + temperature = "cold" + if("Normal") + temperature = "normal" + if("Cancel") + return + + usr << "You flick the pool temperature to [temperature]." + +/obj/machinery/poolcontroller/process() + if(!linkedturfs) + processing_objects.Remove(src) + return + for(var/turf/simulated/floor/beach/water/W in linkedturfs) + for(var/mob/M in W) + if(M) + updateMobs() + +/obj/machinery/poolcontroller/proc/updateMobs() + for(var/turf/simulated/floor/beach/water/W in linkedturfs) + for(var/mob/M in W) + switch(temperature) + if("hot") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.bodytemperature = min(500, H.bodytemperature + 35) + H.adjustFireLoss(5) + H << "The water is searing hot!" + else + M.bodytemperature = min(500, M.bodytemperature + 35) + M << "The water is searing hot!" + + if("cold") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.bodytemperature = max(80, H.bodytemperature - 80) + H.adjustFireLoss(5) + H << "The water is freezing!" + else + M.bodytemperature = max(80, M.bodytemperature - 80) + M << "The water is freezing!" + + if("normal") + return \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index d84b2c5f513..488f052f047 100644 --- a/paradise.dme +++ b/paradise.dme @@ -449,6 +449,7 @@ #include "code\game\machinery\OpTable.dm" #include "code\game\machinery\overview.dm" #include "code\game\machinery\PDApainter.dm" +#include "code\game\machinery\poolcontroller.dm" #include "code\game\machinery\portable_tag_turret.dm" #include "code\game\machinery\portable_turret.dm" #include "code\game\machinery\programmable_unloader.dm"