diff --git a/citadel.dme b/citadel.dme
index 5c76643dc852..39afb0996fa2 100644
--- a/citadel.dme
+++ b/citadel.dme
@@ -4714,6 +4714,7 @@
#include "code\modules\reagents\machinery\reagent_dispenser\water.dm"
#include "code\modules\reagents\machinery\reagent_dispenser\watercooler.dm"
#include "code\modules\reagents\reagent_containers\blood_pack.dm"
+#include "code\modules\reagents\reagent_containers\blood_pack_vr.dm"
#include "code\modules\reagents\reagent_containers\borghydro.dm"
#include "code\modules\reagents\reagent_containers\cartridge.dm"
#include "code\modules\reagents\reagent_containers\dropper.dm"
diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Core.dm
index 3a6f91bf8219..3030bec93dd0 100644
--- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Core.dm
+++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Core.dm
@@ -41,7 +41,7 @@
/datum/reagent/blood/affect_ingest(mob/living/carbon/M, alien, removed)
var/effective_dose = dose
- if(issmall(M))
+ if(issmall(M))
effective_dose *= 2
var/nutritionvalue = 10 //for reference, normal nutrition has a value of about 30.
@@ -76,10 +76,9 @@
M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed) // Same rating as taking iron
else
M.adjust_nutrition(nutritionvalue * removed * volume_mod)
+ M.heal_organ_damage(0.2 * removed * volume_mod, 0) // Heal brute slightly like normal nutrition. More 'effective' blood means more usable material.
M.adjust_hydration(2 * removed) // Still has some water in the form of plasma. Hydrates less than a normal drink.
M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) //same rating as eating nutriment
- if(effective_dose >= 20 && prob(10))
- M.vomit(FALSE, FALSE) //Drinking blood makes you vomit, due to the high iron content and unpleasant consistency
if(data && data["virus2"])
var/list/vlist = data["virus2"]
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 8356dc2934a1..92bade4d10e5 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -78,15 +78,6 @@
name = "[base_name] ([label_text])"
desc = "[base_desc] It is labeled \"[label_text]\"."
-/obj/item/reagent_containers/blood/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
- if(user.a_intent == INTENT_HARM)
- return ..()
- . = CLICKCHAIN_DO_NOT_PROPAGATE
- standard_feed_mob(user, target)
-
-/obj/item/reagent_containers/blood/self_feed_message(var/mob/user)
- to_chat(user, "You drink from \the [src]")
-
/obj/item/reagent_containers/blood/APlus
blood_type = "A+"
@@ -116,78 +107,3 @@
desc = "Seems pretty useless... Maybe if there were a way to fill it?"
icon_state = "empty"
item_state = "bloodpack_empty"
-
-/obj/item/reagent_containers/blood/attack_self(mob/user, datum/event_args/actor/actor)
- . = ..()
- if(.)
- return
- if(istype(user, /mob/living/carbon/human))
- var/mob/living/carbon/human/human_user = user
- if(human_user.species.is_vampire)
- if(user.a_intent == INTENT_HARM)
- if(reagents.total_volume && volume)
- switch(reagents.get_master_reagent_id())
- if("blood")
- user.show_message("You sink your fangs into \the [src] and suck the blood out of it!")
- user.visible_message("[user] sinks their fangs into \the [src] and drains it!")
- standard_feed_mob(user, user)
- update_icon()
- if(!bitten_state)
- desc += " It has two circular puncture marks in it."
- bitten_state = TRUE
- return
- else
- user.show_message("You take a look at \the [src] and notice that it is not filled with blood!")
- return
- else
- user.show_message("You take a look at \the [src] and notice it has nothing in it!")
- return
- else
- return
-
-/obj/item/reagent_containers/blood/prelabeled
- name = "IV Pack"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted."
-
-/obj/item/reagent_containers/blood/prelabeled/update_iv_label()
- return
-
-/obj/item/reagent_containers/blood/prelabeled/APlus
- name = "IV Pack (A+)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled A+."
- blood_type = "A+"
-
-/obj/item/reagent_containers/blood/prelabeled/AMinus
- name = "IV Pack (A-)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled A-."
- blood_type = "A-"
-
-/obj/item/reagent_containers/blood/prelabeled/BPlus
- name = "IV Pack (B+)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled B+."
- blood_type = "B+"
-
-/obj/item/reagent_containers/blood/prelabeled/BMinus
- name = "IV Pack (B-)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled B-."
- blood_type = "B-"
-
-/obj/item/reagent_containers/blood/prelabeled/ABPlus
- name = "IV Pack (AB+)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled AB+."
- blood_type = "AB+"
-
-/obj/item/reagent_containers/blood/prelabeled/ABMinus
- name = "IV Pack (AB-)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled AB-."
- blood_type = "AB-"
-
-/obj/item/reagent_containers/blood/prelabeled/OPlus
- name = "IV Pack (O+)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled O+."
- blood_type = "O+"
-
-/obj/item/reagent_containers/blood/prelabeled/OMinus
- name = "IV Pack (O-)"
- desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled O-."
- blood_type = "O-"
diff --git a/code/modules/reagents/reagent_containers/blood_pack_vr.dm b/code/modules/reagents/reagent_containers/blood_pack_vr.dm
new file mode 100644
index 000000000000..7a7c947e2186
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/blood_pack_vr.dm
@@ -0,0 +1,77 @@
+/obj/item/reagent_containers/blood/attack_self(mob/user, datum/event_args/actor/actor)
+ . = ..()
+ if(.)
+ return
+ if(istype(user, /mob/living/carbon/human))
+ var/mob/living/carbon/human/human_user = user
+ if(human_user.species.is_vampire)
+ if(user.a_intent == INTENT_HARM)
+ if(reagents.total_volume && volume)
+ var/remove_volume = volume* 0.1 //10% of what the bloodpack can hold.
+ var/reagent_to_remove = reagents.get_master_reagent_id()
+ switch(reagents.get_master_reagent_id())
+ if("blood")
+ user.show_message("You sink your fangs into \the [src] and suck the blood out of it!")
+ user.visible_message("[user] sinks their fangs into \the [src] and drains it!")
+ user.nutrition += remove_volume*4
+ reagents.remove_reagent(reagent_to_remove, remove_volume)
+ update_icon()
+ if(!bitten_state)
+ desc += " It has two circular puncture marks in it."
+ bitten_state = TRUE
+ return
+ else
+ user.show_message("You take a look at \the [src] and notice that it is not filled with blood!")
+ return
+ else
+ user.show_message("You take a look at \the [src] and notice it has nothing in it!")
+ return
+ else
+ return
+
+/obj/item/reagent_containers/blood/prelabeled
+ name = "IV Pack"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted."
+
+/obj/item/reagent_containers/blood/prelabeled/update_iv_label()
+ return
+
+/obj/item/reagent_containers/blood/prelabeled/APlus
+ name = "IV Pack (A+)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled A+."
+ blood_type = "A+"
+
+/obj/item/reagent_containers/blood/prelabeled/AMinus
+ name = "IV Pack (A-)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled A-."
+ blood_type = "A-"
+
+/obj/item/reagent_containers/blood/prelabeled/BPlus
+ name = "IV Pack (B+)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled B+."
+ blood_type = "B+"
+
+/obj/item/reagent_containers/blood/prelabeled/BMinus
+ name = "IV Pack (B-)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled B-."
+ blood_type = "B-"
+
+/obj/item/reagent_containers/blood/prelabeled/ABPlus
+ name = "IV Pack (AB+)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled AB+."
+ blood_type = "AB+"
+
+/obj/item/reagent_containers/blood/prelabeled/ABMinus
+ name = "IV Pack (AB-)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled AB-."
+ blood_type = "AB-"
+
+/obj/item/reagent_containers/blood/prelabeled/OPlus
+ name = "IV Pack (O+)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled O+."
+ blood_type = "O+"
+
+/obj/item/reagent_containers/blood/prelabeled/OMinus
+ name = "IV Pack (O-)"
+ desc = "Holds liquids used for transfusion. This one's label seems to be hardprinted. This one is labeled O-."
+ blood_type = "O-"