From 985f1645413bde2ded589c8b99eab6dd9d6ef71a Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Thu, 16 Jan 2014 12:30:11 -0800 Subject: [PATCH] Add "Die a glorious death" objective. --- code/datums/mind.dm | 4 ++++ code/game/gamemodes/objective.dm | 12 ++++++++++-- code/game/gamemodes/traitor/traitor.dm | 11 ++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 6ccbc3fa20b..c2c12ce8e7c 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -466,6 +466,10 @@ datum/mind new_objective = new /datum/objective/survive new_objective.owner = src + if ("die") + new_objective = new /datum/objective/die + new_objective.owner = src + if ("nuclear") new_objective = new /datum/objective/nuclear new_objective.owner = src diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 9b923396417..6aaf0dd6cd1 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -297,7 +297,6 @@ datum/objective/hijack datum/objective/block explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive." - check_completion() if(!istype(owner.current, /mob/living/silicon)) return 0 @@ -338,7 +337,6 @@ datum/objective/silence datum/objective/escape explanation_text = "Escape on the shuttle or an escape pod alive and free." - check_completion() if(issilicon(owner.current)) return 0 @@ -373,6 +371,16 @@ datum/objective/escape else return 0 +datum/objective/die + explanation_text = "Die a glorious death." + + check_completion() + if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current)) + return 1 //Brains no longer win survive objectives. --NEO + if(issilicon(owner.current) && owner.current != owner.original) + return 1 + return 0 + datum/objective/survive diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 67b99cc3918..866b1221e60 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -85,9 +85,14 @@ kill_objective.find_target() traitor.objectives += kill_objective - var/datum/objective/survive/survive_objective = new - survive_objective.owner = traitor - traitor.objectives += survive_objective + if(prob(25)) + var/datum/objective/die/die_objective = new + die_objective.owner = traitor + traitor.objectives += die_objective + else + var/datum/objective/survive/survive_objective = new + survive_objective.owner = traitor + traitor.objectives += survive_objective if(prob(10)) var/datum/objective/block/block_objective = new