diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index fd41c77e985..ec971e84e59 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -293,7 +293,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha H.vessel.remove_reagent("blood",25) if(ishuman(src)) var/mob/living/carbon/human/V = src - V.nutrition += blood + V.nutrition = min(450,V.nutrition+(blood/2)) src.mind.vampire.draining = null src << "\blue You stop draining [H.name] of blood." diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 843ccbf63ff..141e3d9ee5d 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -61,6 +61,19 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if(blood_volume < 560 && blood_volume) var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood if(B) // Make sure there's some blood at all + + if(src.mind) //Handles vampires "eating" blood that isn't their own. + if(src.mind in ticker.mode.vampires) + for(var/datum/reagent/blood/BL in vessel.reagent_list) + if(src.nutrition >= 450) + break //We don't want blood tranfusions making vampires fat. + if(BL.data["donor"] != src) + src.nutrition += (15 * REAGENTS_METABOLISM) + BL.volume -= REAGENTS_METABOLISM + if(BL.volume <= 0) + del(BL) + break //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires. + if(B.data["donor"] != src) //If it's not theirs, then we look for theirs for(var/datum/reagent/blood/D in vessel.reagent_list) if(D.data["donor"] == src) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 0ac2c811d88..add60c68e58 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1486,9 +1486,9 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - if(prob(50)) M.heal_organ_damage(1,0) if(!(M.mind in ticker.mode.vampires)) M.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) ..() return