diff --git a/code/__DEFINES/mobs/innate_abilities.dm b/code/__DEFINES/mobs/innate_abilities.dm
index d2d3dbbc67..05253387b0 100644
--- a/code/__DEFINES/mobs/innate_abilities.dm
+++ b/code/__DEFINES/mobs/innate_abilities.dm
@@ -14,6 +14,8 @@
/// limb regrowth
#define INNATE_ABILITY_LIMB_REGROWTH "limb_regrowth"
+#define INNATE_ABILITY_VBITE "vbite"
+
/// ability properties
// customization/body change
/// is this silent?
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 222dc5cd39..69707e910b 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -73,6 +73,7 @@
/// Prevents voluntary movement.
#define TRAIT_IMMOBILIZED "immobilized"
/// Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage).
+#define BLOODFLEDGE "BloodFledge"
#define TRAIT_HANDS_BLOCKED "handsblocked"
#define TRAIT_BLIND "blind"
#define TRAIT_MUTE "mute"
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index aebe6ec7fa..14f5b79907 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -186,3 +186,90 @@
value = 0
medical_record_text = "Patient should not come into contact with sodium."
mob_trait = TRAIT_SALT_SENSITIVE
+
+/datum/quirk/vampire
+ name = "Bloodsucker Fledgeling"
+ desc = "you need blood for nutriment, you have fangs to aid with this, the church does not harm you"
+ value = 3
+ medical_record_text = "this person was partially infected by a bloodsucker"
+ mob_trait = BLOODFLEDGE
+ gain_text = "You feel an otherworldly thirst."
+ lose_text = "you feel an otherworldy burden remove itself"
+ processing_quirk = TRUE
+
+/datum/quirk/vampire/on_spawn()
+ . = ..()
+ var/mob/living/carbon/human/H = quirk_holder
+ var/mob/living/carbon/C = quirk_holder
+ ADD_TRAIT(H,TRAIT_NO_PROCESS_FOOD,SPECIES_TRAIT)
+ ADD_TRAIT(H,TRAIT_COLDBLOODED,SPECIES_TRAIT)
+ ADD_TRAIT(H,TRAIT_NOBREATH,SPECIES_TRAIT)
+ ADD_TRAIT(H,TRAIT_NOTHIRST,SPECIES_TRAIT)
+ if(!C.dna.skin_tone_override)
+ H.skin_tone = "albino"
+ H.grant_ability_from_source(list(INNATE_ABILITY_VBITE),ABILITY_SOURCE_SPECIES)//gives the ability, check innate_abilities for defining new abilities
+
+/datum/quirk/vampire/on_process()
+ . = ..()
+ var/mob/living/carbon/C = quirk_holder
+ var/area/A = get_area(C)
+ if(istype(A, /area/service/chapel) && C.mind?.assigned_role != "Chaplain")
+ to_chat(C, "You don't belong here!")
+ C.adjustFireLoss(5)
+ C.adjust_fire_stacks(6)
+
+/// quirk actions ///
+
+//vampire bite
+/datum/action/vbite
+ name = "Bite Victim"
+ button_icon_state = "power_feed"
+ icon_icon = 'icons/mob/actions/bloodsucker.dmi'
+ desc = "bite the person you are grabbing with your fangs"
+
+#define VAMP_DRAIN_AMOUNT 50
+
+/datum/action/vbite/Trigger()
+ . = ..()
+ var/drain_cooldown = 0
+ if(iscarbon(owner))
+ var/mob/living/carbon/H = owner
+ if(H.nutrition >= 800)
+ to_chat(H, "You are too full to drain any more.")
+ return
+ if(drain_cooldown >= world.time)
+ to_chat(H, "You just drained blood, wait a few seconds.")
+ return
+ if(H.pulling && iscarbon(H.pulling))
+ var/mob/living/carbon/victim = H.pulling
+ drain_cooldown = world.time + 40
+ if(victim.anti_magic_check(FALSE, TRUE, FALSE, 0))
+ to_chat(victim, "[H] tries to bite you, but stops before touching you!")
+ to_chat(H, "[victim] is blessed! You stop just in time to avoid catching fire.")
+ return
+ //Here we check now for both the garlic cloves on the neck and for blood in the victims bloodstream.
+ if(!blood_sucking_checks(victim, TRUE, TRUE))
+ return
+ if(!do_after(H, 30, target = victim))
+ return
+ var/blood_volume_difference = BLOOD_VOLUME_MAXIMUM - H.blood_volume //How much capacity we have left to absorb blood
+ var/drained_blood = min(victim.blood_volume, VAMP_DRAIN_AMOUNT, blood_volume_difference)
+ H.reagents.add_reagent(/datum/reagent/blood/, drained_blood)
+ to_chat(victim, "[H] is draining your blood!")
+ H.visible_message("[H] Bites down on [victim]'s neck!")
+ to_chat(H, "You drain some blood!")
+ playsound(H, 'sound/items/drink.ogg', 30, 1, -2)
+ victim.blood_volume = clamp(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM)
+ if(!victim.blood_volume)
+ to_chat(H, "You finish off [victim]'s blood supply!")
+
+/datum/action/vbite/New(Target)//defines the button
+ link_to(Target)
+ button = new
+ button.linked_action = src
+ button.name = name
+ button.actiontooltipstyle = buttontooltipstyle
+ if(desc)
+ button.desc = desc
+
+//put next quirk action here
diff --git a/code/modules/mob/innate_abilities.dm b/code/modules/mob/innate_abilities.dm
index aa2a924abe..579fc98d5c 100644
--- a/code/modules/mob/innate_abilities.dm
+++ b/code/modules/mob/innate_abilities.dm
@@ -18,7 +18,8 @@ GLOBAL_LIST_INIT(innate_ability_typepaths, all_innate_ability_typepaths())
return list(
INNATE_ABILITY_HUMANOID_CUSTOMIZATION = /datum/action/innate/ability/humanoid_customization,
INNATE_ABILITY_SLIME_BLOBFORM = /datum/action/innate/ability/slime_blobform,
- INNATE_ABILITY_LIMB_REGROWTH = /datum/action/innate/ability/limb_regrowth
+ INNATE_ABILITY_LIMB_REGROWTH = /datum/action/innate/ability/limb_regrowth,
+ INNATE_ABILITY_VBITE = /datum/action/vbite
)
/**
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 601ac81f0f..8c39013fa0 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -57,9 +57,11 @@
/datum/reagent/blood/on_mob_life(mob/living/carbon/C) //Because lethals are preferred over stamina. damnifino.
var/blood_id = C.get_blood_id()
- if((blood_id in GLOB.blood_reagent_types) && !HAS_TRAIT(C, TRAIT_NOMARROW))
+ if((blood_id in GLOB.blood_reagent_types) && !HAS_TRAIT(C, TRAIT_NOMARROW) && !HAS_TRAIT(C, BLOODFLEDGE))
if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be
C.adjustToxLoss(rand(2,8)*REAGENTS_EFFECT_MULTIPLIER, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person
+ if(HAS_TRAIT(C,BLOODFLEDGE))
+ C.adjust_nutrition(20)
..()
/datum/reagent/blood/reaction_obj(obj/O, volume)