From b8768cc5a6a18df394c4d8542b899eeae78036e5 Mon Sep 17 00:00:00 2001 From: joonoro Date: Mon, 5 Jan 2015 14:00:31 +0200 Subject: [PATCH 1/4] fixes #6372 --- code/modules/reagents/Chemistry-Holder.dm | 2 +- code/modules/reagents/reagent_containers/syringes.dm | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 254b10db479..4f1ac2a0eb8 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -331,7 +331,7 @@ datum/reagents/proc/update_total() for(var/datum/reagent/R in reagent_list) if(R.volume < 0.1) del_reagent(R.id) - else + else if (total_volume + R.volume <= maximum_volume) // only add to the volume if it can hold that much total_volume += R.volume return 0 diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index ce8256a3d34..76569a6a395 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -14,6 +14,7 @@ possible_transfer_amounts = null //list(5, 10, 15) volume = 15 var/mode = SYRINGE_DRAW + var/busy = 0 // needed for delayed drawing of blood g_amt = 20 m_amt = 10 @@ -43,6 +44,8 @@ return /obj/item/weapon/reagent_containers/syringe/afterattack(obj/target, mob/user , proximity) + if(busy) + return if(!proximity) return if(!target.reagents) return @@ -81,7 +84,9 @@ if(target != user) target.visible_message("[user] is trying to take a blood sample from [target]!", \ "[user] is trying to take a blood sample from [target]!") + busy = 1 if(!do_mob(user, target)) + busy = 0 return B.holder = src B.volume = amount @@ -119,11 +124,12 @@ B.data["gender"] = T.gender B.data["real_name"] = T.real_name B.data["factions"] = T.faction - reagents.reagent_list += B + reagents.reagent_list = list(B) // syringes can only hold one blood reagent reagents.update_total() on_reagent_change() reagents.handle_reactions() user.visible_message("[user] takes a blood sample from [target].") + busy = 0 else //if not mob if(!target.reagents.total_volume) From c6404d92bfda13d12acc7f04e1d1ea819d62df9e Mon Sep 17 00:00:00 2001 From: joonoro Date: Mon, 5 Jan 2015 14:26:35 +0200 Subject: [PATCH 2/4] fixes #6372 --- code/modules/reagents/Chemistry-Holder.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 4f1ac2a0eb8..254b10db479 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -331,7 +331,7 @@ datum/reagents/proc/update_total() for(var/datum/reagent/R in reagent_list) if(R.volume < 0.1) del_reagent(R.id) - else if (total_volume + R.volume <= maximum_volume) // only add to the volume if it can hold that much + else total_volume += R.volume return 0 From 012237af17ab55eacf695b5fe1790152d149e9a6 Mon Sep 17 00:00:00 2001 From: joonoro Date: Mon, 5 Jan 2015 14:51:05 +0200 Subject: [PATCH 3/4] revert reagent assignment when drawing blood --- code/modules/reagents/reagent_containers/syringes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 76569a6a395..35e86aae71a 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -124,7 +124,7 @@ B.data["gender"] = T.gender B.data["real_name"] = T.real_name B.data["factions"] = T.faction - reagents.reagent_list = list(B) // syringes can only hold one blood reagent + reagents.reagent_list += B reagents.update_total() on_reagent_change() reagents.handle_reactions() From 25e434e9a120bbc4c98df8b00d835a7328b1c4d1 Mon Sep 17 00:00:00 2001 From: joonoro Date: Wed, 7 Jan 2015 12:49:54 +0200 Subject: [PATCH 4/4] improved syringe fix readability --- code/modules/reagents/reagent_containers/syringes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 35e86aae71a..83e0f65a320 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -88,6 +88,7 @@ if(!do_mob(user, target)) busy = 0 return + busy = 0 B.holder = src B.volume = amount //set reagent data @@ -129,7 +130,6 @@ on_reagent_change() reagents.handle_reactions() user.visible_message("[user] takes a blood sample from [target].") - busy = 0 else //if not mob if(!target.reagents.total_volume)