diff --git a/code/citadel/cit_crewobjectives.dm b/code/citadel/cit_crewobjectives.dm
index b3b8c4be26..6935106ed6 100644
--- a/code/citadel/cit_crewobjectives.dm
+++ b/code/citadel/cit_crewobjectives.dm
@@ -33,6 +33,8 @@
/datum/objective/crew/proc/setup()
+/* COMMAND OBJECTIVES */
+
/datum/objective/crew/captain/
/datum/objective/crew/captain/hat
@@ -43,3 +45,66 @@
return 1
else
return 0
+
+/datum/objective/crew/captain/datfukkendisk
+ explanation_text = "Defend the nuclear authentication disk at all costs, and personally deliver it to Centcom."
+
+/datum/objective/crew/captain/datfukkendisk/check_completion()
+ if(owner.current && owner.current.check_contents_for(/obj/item/disk/nuclear) && SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
+ return 1
+ else
+ return 0
+
+/* SECURITY OBJECTIVES */
+
+/datum/objective/crew/headofsecurity/
+
+/datum/objective/crew/headofsecurity/justicecrew
+ explanation_text = "Ensure there are no innocent crew members in the brig when the shift ends."
+
+/datum/objective/crew/headofsecurity/justicecrew/check_completion()
+ if(owner.current)
+ for(var/datum/mind/M in SSticker.minds)
+ if(M.current && isliving(owner))
+ if(!M.special_role && !M.assigned_role = "Security Officer" && !M.assigned_role = "Detective" && !M.assigned_role = "Head of Security" && !M.assigned_role = "Lawyer" && get_area(M.current) != typesof(/area/security))
+ return 0
+ return 1
+
+/datum/objective/crew/securityofficer/
+
+/datum/objective/crew/securityofficer/justicecrew
+ explanation_text = "Ensure there are no innocent crew members in the brig when the shift ends."
+
+/datum/objective/crew/securityofficer/justicecrew/check_completion()
+ if(owner.current)
+ for(var/datum/mind/M in SSticker.minds)
+ if(M.current && isliving(owner))
+ if(!M.special_role && !M.assigned_role = "Security Officer" && !M.assigned_role = "Detective" && !M.assigned_role = "Head of Security" && !M.assigned_role = "Lawyer" && get_area(M.current) != typesof(/area/security))
+ return 0
+ return 1
+
+/datum/objective/crew/detective/
+
+/datum/objective/crew/detective/justicecrew
+ explanation_text = "Ensure there are no innocent crew members in the brig when the shift ends."
+
+/datum/objective/crew/detective/justicecrew/check_completion()
+ if(owner.current)
+ for(var/datum/mind/M in SSticker.minds)
+ if(M.current && isliving(owner))
+ if(!M.special_role && !M.assigned_role = "Security Officer" && !M.assigned_role = "Detective" && !M.assigned_role = "Head of Security" && !M.assigned_role = "Lawyer" && get_area(M.current) != typesof(/area/security))
+ return 0
+ return 1
+
+/datum/objective/crew/lawyer/
+
+/datum/objective/crew/lawyer/justicecrew
+ explanation_text = "Ensure there are no innocent crew members in the brig when the shift ends."
+
+/datum/objective/crew/lawyer/justicecrew/check_completion()
+ if(owner.current)
+ for(var/datum/mind/M in SSticker.minds)
+ if(M.current && isliving(owner))
+ if(!M.special_role && !M.assigned_role = "Security Officer" && !M.assigned_role = "Detective" && !M.assigned_role = "Head of Security" && !M.assigned_role = "Lawyer" && get_area(M.current) != typesof(/area/security))
+ return 0
+ return 1
diff --git a/code/citadel/cit_miscreants.dm b/code/citadel/cit_miscreants.dm
index e383dfbb51..dcfe4b4b26 100644
--- a/code/citadel/cit_miscreants.dm
+++ b/code/citadel/cit_miscreants.dm
@@ -50,3 +50,6 @@
/datum/objective/miscreant/whiny
explanation_text = "Complain incessantly about every minor issue you find."
+
+/datum/objective/miscreant/immersions
+ explanation_text = "Act as out of character as you possibly can."
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 5ad749836b..d288a7fe58 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -615,6 +615,7 @@ SUBSYSTEM_DEF(ticker)
to_chat(world, " The following crew members were miscreants:")
for(var/i in miscreants)
to_chat(world, "[i]")
+ to_chat(world, "
")
CHECK_TICK