diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index f99fe5c3e4..4c82046e07 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -9,9 +9,10 @@ GLOBAL_LIST_EMPTY(objectives)
var/explanation_text = "Nothing" //What that person is supposed to do.
var/team_explanation_text //For when there are multiple owners.
var/datum/mind/target = null //If they are focused on a particular person.
- var/target_amount = 0 //If they are focused on a particular number. Steal objectives have their own counter.
- var/completed = 0 //currently only used for custom objectives.
- var/martyr_compatible = 0 //If the objective is compatible with martyr objective, i.e. if you can still do it while dead.
+ var/target_amount = FALSE //If they are focused on a particular number. Steal objectives have their own counter.
+ var/completed = FALSE //currently only used for custom objectives.
+ var/completable = TRUE //Whether this objective shows greentext when completed
+ var/martyr_compatible = FALSE //If the objective is compatible with martyr objective, i.e. if you can still do it while dead.
/datum/objective/New(var/text)
GLOB.objectives += src // CITADEL EDIT FOR CRYOPODS
diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm
index 1672310567..ffb086a18d 100644
--- a/code/modules/admin/antag_panel.dm
+++ b/code/modules/admin/antag_panel.dm
@@ -47,7 +47,7 @@ GLOBAL_VAR(antag_prototypes)
else
var/obj_count = 1
for(var/datum/objective/objective in objectives)
- result += "[obj_count]: [objective.explanation_text] Edit Delete [objective.completed ? "Mark as incomplete" : "Mark as complete"]
"
+ result += "[obj_count]: [objective.explanation_text] Edit Delete [objective.completed ? "Mark as incomplete" : "Mark as complete"]
"
obj_count++
result += "Add objective
"
result += "Announce objectives
"
@@ -214,4 +214,4 @@ GLOBAL_VAR(antag_prototypes)
var/datum/browser/panel = new(usr, "traitorpanel", "", 600, 600)
panel.set_content(out)
panel.open()
- return
\ No newline at end of file
+ return
diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm
index 064ae9043e..4587a3c8ab 100644
--- a/code/modules/antagonists/_common/antag_datum.dm
+++ b/code/modules/antagonists/_common/antag_datum.dm
@@ -144,7 +144,7 @@ GLOBAL_LIST_EMPTY(antagonists)
if(objectives.len)
report += printobjectives(objectives)
for(var/datum/objective/objective in objectives)
- if(!objective.check_completion())
+ if(objective.completable && !objective.check_completion())
objectives_complete = FALSE
break
diff --git a/code/modules/antagonists/_common/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm
index 486b5b0414..b376287f7a 100644
--- a/code/modules/antagonists/_common/antag_team.dm
+++ b/code/modules/antagonists/_common/antag_team.dm
@@ -36,11 +36,14 @@
var/win = TRUE
var/objective_count = 1
for(var/datum/objective/objective in objectives)
- if(objective.check_completion())
- report += "Objective #[objective_count]: [objective.explanation_text] Success!"
+ if(objective.completable)
+ if(objective.check_completion())
+ report += "Objective #[objective_count]: [objective.explanation_text] Success!"
+ else
+ report += "Objective #[objective_count]: [objective.explanation_text] Fail."
+ win = FALSE
else
- report += "Objective #[objective_count]: [objective.explanation_text] Fail."
- win = FALSE
+ report += "Objective #[objective_count]: [objective.explanation_text]"
objective_count++
if(win)
report += "The [name] was successful!"
diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm
index 7c589bb3ab..1388ba745c 100644
--- a/code/modules/antagonists/brother/brother.dm
+++ b/code/modules/antagonists/brother/brother.dm
@@ -108,13 +108,16 @@
var/win = TRUE
var/objective_count = 1
for(var/datum/objective/objective in objectives)
- if(objective.check_completion())
- parts += "Objective #[objective_count]: [objective.explanation_text] Success!"
+ if(objective.completable)
+ if(objective.check_completion())
+ report += "Objective #[objective_count]: [objective.explanation_text] Success!"
+ else
+ report += "Objective #[objective_count]: [objective.explanation_text] Fail."
+ win = FALSE
else
- parts += "Objective #[objective_count]: [objective.explanation_text] Fail."
- win = FALSE
+ report += "Objective #[objective_count]: [objective.explanation_text]"
objective_count++
- if(win)
+if(win)
parts += "The blood brothers were successful!"
else
parts += "The blood brothers have failed!"
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index 0d68660d9d..e76c0ed054 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -552,11 +552,14 @@
if(objectives.len)
var/count = 1
for(var/datum/objective/objective in objectives)
- if(objective.check_completion())
- parts += "Objective #[count]: [objective.explanation_text] Success!"
+ if(objective.completable)
+ if(objective.check_completion())
+ report += "Objective #[count]: [objective.explanation_text] Success!"
+ else
+ report += "Objective #[count]: [objective.explanation_text] Fail."
+ win = FALSE
else
- parts += "Objective #[count]: [objective.explanation_text] Fail."
- changelingwin = 0
+ report += "Objective #[count]: [objective.explanation_text]"
count++
if(changelingwin)
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 595ce5bb90..25fe24b605 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -369,11 +369,14 @@
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!"
+ if(objective.completable)
+ if(objective.check_completion())
+ report += "Objective #[count]: [objective.explanation_text] Success!"
+ else
+ report += "Objective #[count]: [objective.explanation_text] Fail."
+ traitorwin = FALSE
else
- objectives_text += "
Objective #[count]: [objective.explanation_text] Fail."
- traitorwin = FALSE
+ report += "Objective #[count]: [objective.explanation_text]"
count++
if(uplink_true)
diff --git a/code/modules/antagonists/valentines/valentine.dm b/code/modules/antagonists/valentines/valentine.dm
index 19c08f3076..d3bcdf0c04 100644
--- a/code/modules/antagonists/valentines/valentine.dm
+++ b/code/modules/antagonists/valentines/valentine.dm
@@ -35,7 +35,7 @@
var/objectives_complete = TRUE
if(objectives.len)
for(var/datum/objective/objective in objectives)
- if(!objective.check_completion())
+ if(objective.completable && !objective.check_completion())
objectives_complete = FALSE
break
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index a88eb1e42a..d89d6a2744 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -62,7 +62,7 @@
/datum/antagonist/wizard/proc/create_objectives()
var/datum/objective/new_objective = new("Cause as much creative mayhem as you can aboard the station! The more outlandish your methods of achieving this, the better! Make sure there's a decent amount of crew alive to tell of your tale.")
- new_objective.completed = TRUE //So they can greentext without admin intervention.
+ new_objective.completable = FALSE
new_objective.owner = owner
objectives += new_objective