From 747c71096e87748cc97777bec7e048076e9a844e Mon Sep 17 00:00:00 2001 From: comma Date: Sun, 4 Aug 2013 00:32:37 +0400 Subject: [PATCH] Fixed monkeys not getting space rabies via syringes. --- code/modules/organs/blood.dm | 26 ++++++++++++------- .../reagents/reagent_containers/syringes.dm | 6 ++--- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 78ccd65c287..dd31d28ac76 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -189,18 +189,11 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 . = ..() vessel.remove_reagent("blood",amount) // Removes blood if human -//Transfers blood from container ot vessels, respecting blood types compatability. -/mob/living/carbon/human/proc/inject_blood(obj/item/weapon/reagent_containers/container, var/amount) - var/datum/reagent/blood/our = get_blood(vessel) +//Transfers blood from container ot vessels +/mob/living/carbon/proc/inject_blood(obj/item/weapon/reagent_containers/container, var/amount) var/datum/reagent/blood/injected = get_blood(container.reagents) if (!injected) return - if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) ) - reagents.add_reagent("toxin",amount * 0.5) - reagents.update_total() - else - vessel.add_reagent("blood", amount, injected.data) - vessel.update_total() src.virus2 |= virus_copylist(injected.data["virus2"]) if (injected.data["antibodies"] && prob(5)) antibodies |= injected.data["antibodies"] @@ -208,11 +201,24 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 chems = params2list(injected.data["trace_chem"]) for(var/C in chems) src.reagents.add_reagent(C, (text2num(chems[C]) / 560) * amount)//adds trace chemicals to owner's blood - //world << "added [(text2num(chems[C])/560) * amount] = [text2num(chems[C])]/560*[amount] units of [C] to [src]" //DEBUG reagents.update_total() container.reagents.remove_reagent("blood", amount) +//Transfers blood from container ot vessels, respecting blood types compatability. +/mob/living/carbon/human/inject_blood(obj/item/weapon/reagent_containers/container, var/amount) + var/datum/reagent/blood/our = get_blood(vessel) + var/datum/reagent/blood/injected = get_blood(container.reagents) + if (!injected || !our) + return + if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) ) + reagents.add_reagent("toxin",amount * 0.5) + reagents.update_total() + else + vessel.add_reagent("blood", amount, injected.data) + vessel.update_total() + ..() + //Gets human's own blood. /mob/living/carbon/proc/get_blood(datum/reagents/container) var/datum/reagent/blood/res = locate() in container.reagent_list //Grab some blood diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index d93ce042295..38e9c6f6882 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -154,9 +154,9 @@ B = d break var/trans - if(B && ishuman(target)) - var/mob/living/carbon/human/H = target - H.inject_blood(src,5) + if(B && istype(target,/mob/living/carbon)) + var/mob/living/carbon/C = target + C.inject_blood(src,5) else trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units."