diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 74f63060c0c..a3299a4e5d8 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -109,9 +109,25 @@ datum trans_data = current_reagent.data if(current_reagent.id == "blood" && ishuman(target)) // can never be sure var/mob/living/carbon/human/H = target - H.vessel.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data) + + var/datum/reagent/blood/HisBlood = locate() in H.vessel.reagent_list //Grab some blood + if(HisBlood) // Make sure there's some blood at all + if(HisBlood.data["donor"] != H) //If it's not theirs, then we look for theirs + for(var/datum/reagent/blood/D in H.vessel.reagent_list) + if(D.data["donor"] == H) + HisBlood = D + break + if(HisBlood && HisBlood.data && trans_data) + if(blood_incompatible(trans_data["blood_type"],HisBlood.data["blood_type"])) + H.reagents.add_reagent("toxin",(current_reagent_transfer * multiplier * 0.5)) + H.reagents.update_total() + else + H.vessel.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data) + H.vessel.update_total() + else + H.vessel.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data) + H.vessel.update_total() src.remove_reagent(current_reagent.id, current_reagent_transfer) - H.vessel.update_total() else R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data) src.remove_reagent(current_reagent.id, current_reagent_transfer)