From 139f6bd0993d8cdff19771593c0a5690a18ae04e Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 11 May 2014 22:00:28 -0600 Subject: [PATCH] Medbots no longer waste chemicals Medbots will no longer expend the entire contents of their internal beaker on one patient. --- code/game/machinery/bots/medbot.dm | 52 ++++++++++++++++-------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 6ecc335b54c..265467e2563 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -335,9 +335,8 @@ //If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS. if((src.reagent_glass) && (src.use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15)))) for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list) - if(!C.reagents.has_reagent(R)) + if(!C.reagents.has_reagent(R.id)) return 1 - continue //They're injured enough for it! if((C.getBruteLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_brute))) @@ -383,36 +382,40 @@ var/reagent_id = null - //Use whatever is inside the loaded beaker. If there is one. - if((src.use_beaker) && (src.reagent_glass) && (src.reagent_glass.reagents.total_volume)) - reagent_id = "internal_beaker" - if(src.emagged == 2) //Emagged! Time to poison everybody. reagent_id = "toxin" - var/virus = 0 - for(var/datum/disease/D in C.viruses) - virus = 1 + else + var/virus = 0 + for(var/datum/disease/D in C.viruses) + virus = 1 - if (!reagent_id && (virus)) - if(!C.reagents.has_reagent(src.treatment_virus)) - reagent_id = src.treatment_virus + if (!reagent_id && (virus)) + if(!C.reagents.has_reagent(src.treatment_virus)) + reagent_id = src.treatment_virus - if (!reagent_id && (C.getBruteLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(src.treatment_brute)) - reagent_id = src.treatment_brute + if (!reagent_id && (C.getBruteLoss() >= heal_threshold)) + if(!C.reagents.has_reagent(src.treatment_brute)) + reagent_id = src.treatment_brute - if (!reagent_id && (C.getOxyLoss() >= (15 + heal_threshold))) - if(!C.reagents.has_reagent(src.treatment_oxy)) - reagent_id = src.treatment_oxy + if (!reagent_id && (C.getOxyLoss() >= (15 + heal_threshold))) + if(!C.reagents.has_reagent(src.treatment_oxy)) + reagent_id = src.treatment_oxy - if (!reagent_id && (C.getFireLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(src.treatment_fire)) - reagent_id = src.treatment_fire + if (!reagent_id && (C.getFireLoss() >= heal_threshold)) + if(!C.reagents.has_reagent(src.treatment_fire)) + reagent_id = src.treatment_fire - if (!reagent_id && (C.getToxLoss() >= heal_threshold)) - if(!C.reagents.has_reagent(src.treatment_tox)) - reagent_id = src.treatment_tox + if (!reagent_id && (C.getToxLoss() >= heal_threshold)) + if(!C.reagents.has_reagent(src.treatment_tox)) + reagent_id = src.treatment_tox + + //If the patient is injured but doesn't have our special reagent in them then we should give it to them first + if(reagent_id && src.use_beaker && src.reagent_glass && src.reagent_glass.reagents.total_volume) + for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list) + if(!C.reagents.has_reagent(R.id)) + reagent_id = "internal_beaker" + break if(!reagent_id) //If they don't need any of that they're probably cured! src.oldpatient = src.patient @@ -438,7 +441,6 @@ src.currently_healing = 0 return -// src.speak(reagent_id) reagent_id = null return