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 += "
\[[ReturnFullName(TRUE)]\]" // 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 += "Their Vassals were..." @@ -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