diff --git a/yogstation/code/datums/antagonists/vampire.dm b/yogstation/code/datums/antagonists/vampire.dm
index 0b7bb8367cbc..16de4e573ec2 100644
--- a/yogstation/code/datums/antagonists/vampire.dm
+++ b/yogstation/code/datums/antagonists/vampire.dm
@@ -9,7 +9,9 @@
var/usable_blood = 0
var/total_blood = 0
+ var/converted = 0
var/fullpower = FALSE
+ var/full_objectives = TRUE
var/draining
var/list/objectives_given = list()
@@ -36,6 +38,11 @@
/obj/effect/proc_holder/spell/targeted/vampirize = 450,
/obj/effect/proc_holder/spell/self/revive = 0)
+/datum/antagonist/vampire/new_blood
+ full_objectives = FALSE
+ roundend_category = "new bloods"
+ show_in_antagpanel = FALSE
+
/datum/antagonist/vampire/get_admin_commands()
. = ..()
.["Full Power"] = CALLBACK(src,.proc/admin_set_full_power)
@@ -99,6 +106,8 @@
to_chat(owner, "You are a creature of the night -- holy water, the chapel, and space will cause you to burn.")
to_chat(owner, "Hit someone in the head with harm intent to start sucking their blood. However, only blood from living, non-vampiric creatures is usable!")
to_chat(owner, "Coffins will heal you.")
+ if(full_objectives == FALSE)
+ to_chat(owner, "You are not required to obey other vampires, however, you have gained a respect for them.")
if(LAZYLEN(objectives_given))
owner.announce_objectives()
owner.current.playsound_local(get_turf(owner.current), 'yogstation/sound/ambience/antag/vampire.ogg',80,0)
@@ -109,8 +118,14 @@
blood_objective.gen_amount_goal()
add_objective(blood_objective)
- for(var/i = 1, i < CONFIG_GET(number/traitor_objectives_amount), i++)
- forge_single_objective()
+ if(full_objectives)
+ for(var/i = 1, i < CONFIG_GET(number/traitor_objectives_amount), i++)
+ forge_single_objective()
+
+ var/datum/objective/convert/convert_objective = new
+ convert_objective.owner = owner
+ convert_objective.gen_amount_goal()
+ add_objective(convert_objective)
if(!(locate(/datum/objective/escape) in objectives))
var/datum/objective/escape/escape_objective = new
diff --git a/yogstation/code/game/gamemodes/vampire/vampire.dm b/yogstation/code/game/gamemodes/vampire/vampire.dm
index bb22821d08bc..25b69870bd98 100644
--- a/yogstation/code/game/gamemodes/vampire/vampire.dm
+++ b/yogstation/code/game/gamemodes/vampire/vampire.dm
@@ -70,11 +70,15 @@
..()
return TRUE
-/proc/add_vampire(mob/living/L)
- if(!L || !L.mind || is_vampire(L))
- return FALSE
- var/datum/antagonist/vampire/vamp = L.mind.add_antag_datum(/datum/antagonist/vampire)
- return vamp
+/proc/add_vampire(mob/living/L, full_vampire = TRUE)
+ if(!L || !L.mind || is_vampire(L))
+ return FALSE
+ var/datum/antagonist/vampire/vamp
+ if(full_vampire == TRUE)
+ vamp = L.mind.add_antag_datum(/datum/antagonist/vampire)
+ else
+ vamp = L.mind.add_antag_datum(/datum/antagonist/vampire/new_blood)
+ return vamp
/proc/remove_vampire(mob/living/L)
if(!L || !L.mind || !is_vampire(L))
diff --git a/yogstation/code/game/gamemodes/vampire/vampire_objectives.dm b/yogstation/code/game/gamemodes/vampire/vampire_objectives.dm
index 7a1647bf13d0..72441468b5df 100644
--- a/yogstation/code/game/gamemodes/vampire/vampire_objectives.dm
+++ b/yogstation/code/game/gamemodes/vampire/vampire_objectives.dm
@@ -10,4 +10,21 @@
if(vamp && target_amount <= vamp.total_blood)
return TRUE
else
- return FALSE
\ No newline at end of file
+ return FALSE
+
+/datum/objective/convert/proc/gen_amount_goal(lowbound = 1, highbound = 3)
+ target_amount = rand (lowbound,highbound)
+ if(target_amount == 1)
+ explanation_text = "Turn a crew member into a vampire using Lilith's Pact."
+ else
+ explanation_text = "Turn [target_amount] crew members into vampires using Lilith's Pact."
+ return target_amount
+
+/datum/objective/convert/check_completion()
+ if(!owner)
+ return FALSE
+ var/datum/antagonist/vampire/vamp = owner.has_antag_datum(/datum/antagonist/vampire)
+ if(vamp && target_amount <= vamp.converted)
+ return TRUE
+ else
+ return FALSE
diff --git a/yogstation/code/game/gamemodes/vampire/vampire_powers.dm b/yogstation/code/game/gamemodes/vampire/vampire_powers.dm
index 9a0a21c7dde7..6690547f3b4f 100644
--- a/yogstation/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/yogstation/code/game/gamemodes/vampire/vampire_powers.dm
@@ -259,16 +259,17 @@
addtimer(VARSET_CALLBACK(src, range, -1), 10) //Avoid fuckery
/obj/effect/proc_holder/spell/targeted/vampirize
- name = "Lilith's Pact (400)"
+ name = "Lilith's Pact (300)"
desc = "You drain a victim's blood, and fill them with new blood, blessed by Lilith, turning them into a new vampire."
gain_desc = "You have gained the ability to force someone, given time, to become a vampire."
action_icon = 'yogstation/icons/mob/vampire.dmi'
action_background_icon_state = "bg_demon"
action_icon_state = "oath"
- blood_used = 400
+ blood_used = 300
vamp_req = TRUE
/obj/effect/proc_holder/spell/targeted/vampirize/cast(list/targets, mob/user = usr)
+ var/datum/antagonist/vampire/vamp = user.mind.has_antag_datum(/datum/antagonist/vampire)
for(var/mob/living/carbon/target in targets)
if(is_vampire(target))
to_chat(user, "They're already a vampire!")
@@ -276,12 +277,12 @@
if(HAS_TRAIT(target, TRAIT_MINDSHIELD))
to_chat(user, "[target]'s mind is too strong!")
continue
- user.visible_message("[user] latches onto [target]'s neck, and a pure dread eminates from them.", "You latch onto [target]'s neck, preparing to transfer your unholy blood to them.", "A dreadful feeling overcomes you")
+ user.visible_message("[user] latches onto [target]'s neck, pure dread eminating from them.", "You latch onto [target]'s neck, preparing to transfer your unholy blood to them.", "A dreadful feeling overcomes you")
target.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 10) //incase you're choking the victim
for(var/progress = 0, progress <= 3, progress++)
switch(progress)
if(1)
- to_chat(target, "Visions of dread flood your vision...")
+ to_chat(target, "Wicked shadows invade your sight, beckoning to you.")
to_chat(user, "We begin to drain [target]'s blood in, so Lilith can bless it.")
if(2)
to_chat(target, "Demonic whispers fill your mind, and they become irressistible...")
@@ -301,9 +302,11 @@
to_chat(target, "Strike fear into their hearts...")
to_chat(user, "They have signed the pact!")
to_chat(target, "You sign Lilith's Pact.")
- target.mind.store_memory("[user] showed you the glory of Lilith. You are not required to respect or obey [user] in any way")
- add_vampire(target)
-
+ target.mind.store_memory("[user] showed you the glory of Lilith. You are not required to obey [user], however, you have gained a respect for them.")
+ target.Sleeping(600)
+ target.blood_volume = 560
+ add_vampire(target, FALSE)
+ vamp.converted ++
/obj/effect/proc_holder/spell/self/revive
name = "Revive"