diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 79b6c877..47920852 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -691,10 +691,16 @@
usr = current
traitor_panel()
+/datum/mind/proc/get_all_objectives()
+ var/list/all_objectives = list()
+ for(var/datum/antagonist/A in antag_datums)
+ all_objectives |= A.objectives
+ return all_objectives
+
/datum/mind/proc/announce_objectives()
var/obj_count = 1
to_chat(current, "Your current objectives:")
- for(var/objective in objectives)
+ for(var/objective in get_all_objectives())
var/datum/objective/O = objective
to_chat(current, "Objective #[obj_count]: [O.explanation_text]")
obj_count++
diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
index 2332b8d6..6685dc07 100644
--- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
+++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
@@ -41,6 +41,7 @@
// REMOVED: TRAIT_NODEATH
// TO ADD:
//var/static/list/defaultOrgans = list (/obj/item/organ/heart/vampheart,/obj/item/organ/heart/vampeyes)
+ var/traitorwin = TRUE
/datum/antagonist/bloodsucker/on_gain()
SSticker.mode.bloodsuckers |= owner // Add if not already in here (and you might be, if you were picked at round start)
@@ -67,18 +68,18 @@
/datum/antagonist/bloodsucker/greet()
var/fullname = ReturnFullName(TRUE)
- to_chat(owner, "You are [fullname], a bloodsucking vampire!
")
+ to_chat(owner, "You are [fullname], a strain of vampire dubbed bloodsucker!
")
owner.announce_objectives()
to_chat(owner, "* You regenerate your health slowly, you're weak to fire, and you depend on blood to survive. Allow your stolen blood to run too low, and you will find yourself at \
risk of being discovered!
")
//to_chat(owner, "As an immortal, your power is linked to your age. The older you grow, the more abilities you will have access to.")
- var/vamp_greet
- vamp_greet += "* Other Bloodsuckers are not necessarily your friends, but your survival may depend on cooperation. Betray them at your own discretion and peril.
"
- vamp_greet += "* Use \",b\" to speak your ancient Bloodsucker language.
"
- vamp_greet += "Bloodsucker Tip: Rest in a Coffin to claim it, and that area, as your lair.
"
- vamp_greet += "Bloodsucker Tip: Fear the daylight! Solar flares will bombard the station periodically, and only your coffin can guarantee your safety.
"
- vamp_greet += "Bloodsucker Tip: You wont loose blood if you are unconcious or sleeping. Use this to your advantage to conserve blood.
"
- to_chat(owner, vamp_greet)
+ var/bloodsucker_greet
+ bloodsucker_greet += "* Other Bloodsuckers are not necessarily your friends, but your survival may depend on cooperation. Betray them at your own discretion and peril.
"
+ bloodsucker_greet += "* Use \",b\" to speak your ancient Bloodsucker language.
"
+ bloodsucker_greet += "Bloodsucker Tip: Rest in a Coffin to claim it, and that area, as your lair.
"
+ bloodsucker_greet += "Bloodsucker Tip: Fear the daylight! Solar flares will bombard the station periodically, and only your coffin can guarantee your safety.
"
+ bloodsucker_greet += "Bloodsucker Tip: You wont loose blood if you are unconcious or sleeping. Use this to your advantage to conserve blood.
"
+ to_chat(owner, bloodsucker_greet)
owner.current.playsound_local(null, 'sound/bloodsucker/BloodsuckerAlert.ogg', 100, FALSE, pressure_affected = FALSE)
antag_memory += "Although you were born a mortal, in un-death you earned the name [fullname].
"
@@ -436,8 +437,20 @@ datum/antagonist/bloodsucker/proc/SpendRank()
report += "
"
// Default Report
- report += ..()
+ //report += ..() //Hyperstation fix until https://github.com/Citadel-Station-13/Citadel-Station-13/pull/10623 is pulled
+ report += printplayer(owner)
+ var/objectives_text = ""
+ if(objectives.len)//If the traitor had no objectives, don't need to process this.
+ var/count = 1
+ for(var/datum/objective/objective in objectives)
+ if(objective.check_completion())
+ objectives_text += "
Objective #[count]: [objective.explanation_text] Success!"
+ else
+ objectives_text += "
Objective #[count]: [objective.explanation_text] Fail."
+ traitorwin = FALSE
+ count++
+ report += objectives_text
// Now list their vassals
if (vassals.len > 0)
report += ""
@@ -446,6 +459,13 @@ datum/antagonist/bloodsucker/proc/SpendRank()
var/jobname = V.owner.assigned_role ? "the [V.owner.assigned_role]" : ""
report += "[V.owner.name] [jobname]"
+ var/special_role_text = lowertext(name)
+ if(traitorwin)
+ report += "The [special_role_text] was successful!"
+ else
+ report += "The [special_role_text] has failed!"
+ SEND_SOUND(owner.current, 'sound/ambience/ambifailure.ogg')
+
return report.Join("
")
//Displayed at the start of roundend_category section, default to roundend_category header
diff --git a/code/modules/crafting/recipes/recipes_misc.dm b/code/modules/crafting/recipes/recipes_misc.dm
index e76950bb..a02146b9 100644
--- a/code/modules/crafting/recipes/recipes_misc.dm
+++ b/code/modules/crafting/recipes/recipes_misc.dm
@@ -336,40 +336,40 @@
time = 70
category = CAT_MISC
- /datum/crafting_recipe/bloodsucker/vassalrack
- name = "Persuasion Rack"
- //desc = "For converting crewmembers into loyal Vassals."
- result = /obj/structure/bloodsucker/vassalrack
- tools = list(/obj/item/weldingtool,
- ///obj/item/screwdriver,
- /obj/item/wrench
- )
- reqs = list(/obj/item/stack/sheet/mineral/wood = 3,
- /obj/item/stack/sheet/metal = 2,
- /obj/item/restraints/handcuffs/cable = 2,
- ///obj/item/storage/belt = 1
- ///obj/item/stack/sheet/animalhide = 1, // /obj/item/stack/sheet/leather = 1,
- ///obj/item/stack/sheet/plasteel = 5
+/datum/crafting_recipe/bloodsucker/vassalrack
+ name = "Persuasion Rack"
+ //desc = "For converting crewmembers into loyal Vassals."
+ result = /obj/structure/bloodsucker/vassalrack
+ tools = list(/obj/item/weldingtool,
+ ///obj/item/screwdriver,
+ /obj/item/wrench
)
- //parts = list(/obj/item/storage/belt = 1
- // )
+ reqs = list(/obj/item/stack/sheet/mineral/wood = 3,
+ /obj/item/stack/sheet/metal = 2,
+ /obj/item/restraints/handcuffs/cable = 2,
+ ///obj/item/storage/belt = 1
+ ///obj/item/stack/sheet/animalhide = 1, // /obj/item/stack/sheet/leather = 1,
+ ///obj/item/stack/sheet/plasteel = 5
+ )
+ //parts = list(/obj/item/storage/belt = 1
+ // )
- time = 150
- category = CAT_MISC
- always_availible = FALSE // Disabled til learned
+ time = 150
+ category = CAT_MISC
+ always_availible = FALSE // Disabled til learned
- /datum/crafting_recipe/bloodsucker/candelabrum
- name = "Candelabrum"
- //desc = "For converting crewmembers into loyal Vassals."
- result = /obj/structure/bloodsucker/candelabrum
- tools = list(/obj/item/weldingtool,
- /obj/item/wrench
- )
- reqs = list(/obj/item/stack/sheet/metal = 3,
- /obj/item/stack/rods = 1,
- /obj/item/candle = 1
+/datum/crafting_recipe/bloodsucker/candelabrum
+ name = "Candelabrum"
+ //desc = "For converting crewmembers into loyal Vassals."
+ result = /obj/structure/bloodsucker/candelabrum
+ tools = list(/obj/item/weldingtool,
+ /obj/item/wrench
)
- time = 100
- category = CAT_MISC
- always_availible = FALSE // Disabled til learned
+ reqs = list(/obj/item/stack/sheet/metal = 3,
+ /obj/item/stack/rods = 1,
+ /obj/item/candle = 1
+ )
+ time = 100
+ category = CAT_MISC
+ always_availible = FALSE // Disabled til learned