diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm
index ec15894f573..bcb215ff934 100644
--- a/code/modules/events/holiday/vday.dm
+++ b/code/modules/events/holiday/vday.dm
@@ -19,6 +19,45 @@
var/obj/item/weapon/storage/backpack/b = locate() in H.contents
new /obj/item/weapon/reagent_containers/food/snacks/candyheart(b)
+
+ var/list/valentines = list()
+ for(var/mob/living/M in player_list)
+ if(!M.stat && M.client && M.mind)
+ valentines |= M
+
+
+ while(valentines.len)
+ var/mob/living/L = pick_n_take(valentines)
+ if(valentines.len)
+ var/mob/living/date = pick_n_take(valentines)
+
+
+ forge_valentines_objective(L, date)
+
+ forge_valentines_objective(date, L)
+
+
+
+ else
+ L << "You didn't get a date! They're all having fun without you! you'll show them though..."
+ var/datum/objective/martyr/normiesgetout = new
+ normiesgetout.owner = L.mind
+ ticker.mode.traitors |= L.mind
+ L.mind.objectives += normiesgetout
+
+/proc/forge_valentines_objective(mob/living/lover,mob/living/date)
+
+ ticker.mode.traitors |= lover.mind
+ lover.mind.special_role = "valentine"
+
+ var/datum/objective/protect/protect_objective = new /datum/objective/protect
+ protect_objective.owner = lover.mind
+ protect_objective.target = date.mind
+ protect_objective.explanation_text = "Protect [date.real_name], your date."
+ lover.mind.objectives += protect_objective
+ lover << "You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties."
+
+
/datum/round_event/valentines/announce()
priority_announce("It's Valentine's Day! Give a valentine to that special someone!")
@@ -126,4 +165,4 @@
"A heart-shaped candy that reads: FACEHUGGER",
"A heart-shaped candy that reads: DOMINATOR",
"A heart-shaped candy that reads: GET TESLA'D")
- icon_state = pick("candyheart", "candyheart2", "candyheart3", "candyheart4")
\ No newline at end of file
+ icon_state = pick("candyheart", "candyheart2", "candyheart3", "candyheart4")