diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 6098542729..467c344832 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -419,8 +419,7 @@ client
break
M.real_name = new_name
M.name = new_name
- if(M.mind)
- M.mind.name = new_name
+ if(M.mind) M.mind.name = new_name
href_list["datumrefresh"] = href_list["rename"]
else if (href_list["varnameedit"])
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index d5119dacd8..95b6a8049c 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -31,13 +31,12 @@
datum/mind
var/key
- var/name //replaces mob/var/original_name
+ var/name //replaces mob/var/original_name
var/mob/living/current
- var/mob/living/original
+ var/mob/living/original //TODO: remove.not used in any meaningful way ~Carn. First I'll need to tweak the way silicon-mobs handle minds.
var/active = 0
var/memory
- //TODO: store original name --rastaf0
var/assigned_role
var/special_role
@@ -778,16 +777,16 @@ datum/mind
ticker.mode.malf_ai -= src
special_role = null
- current.verbs -= /mob/living/silicon/ai/proc/choose_modules
- current.verbs -= /datum/game_mode/malfunction/proc/takeover
- current.verbs -= /datum/game_mode/malfunction/proc/ai_win
- current.verbs -= /client/proc/fireproof_core
- current.verbs -= /client/proc/upgrade_turrets
- current.verbs -= /client/proc/disable_rcd
- current.verbs -= /client/proc/overload_machine
- current.verbs -= /client/proc/blackout
- current.verbs -= /client/proc/interhack
- current.verbs -= /client/proc/reactivate_camera
+ current.verbs.Remove(/mob/living/silicon/ai/proc/choose_modules,
+ /datum/game_mode/malfunction/proc/takeover,
+ /datum/game_mode/malfunction/proc/ai_win,
+ /client/proc/fireproof_core,
+ /client/proc/upgrade_turrets,
+ /client/proc/disable_rcd,
+ /client/proc/overload_machine,
+ /client/proc/blackout,
+ /client/proc/interhack,
+ /client/proc/reactivate_camera)
current:laws = new /datum/ai_laws/asimov
del(current:malf_picker)
@@ -1092,8 +1091,6 @@ datum/mind
//Initialisation procs
/mob/living/proc/mind_initialize()
if(mind)
- if(mind.key != key)
- world.log << "## DEBUG: mind_initialize(): [key] took possession of [mind.key]'s mind"
mind.key = key
else
mind = new /datum/mind(key)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 877edc3431..b4c10c9347 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -156,36 +156,50 @@
changeling_mob.make_changeling()
/datum/game_mode/proc/auto_declare_completion_changeling()
- for(var/datum/mind/changeling in changelings)
- var/changelingwin = 1
- var/changeling_name
- if((changeling.current) && (changeling.current.changeling))
- changeling_name = "[changeling.current.real_name] (played by [changeling.key])"
- world << "The changeling was [changeling_name]."
- world << "[changeling.current.gender=="male"?"His":"Her"] changeling ID was [changeling.current.gender=="male"?"Mr.":"Mrs."] [changeling.current.changeling.changelingID]."
- world << "Genomes absorbed: [changeling.current.changeling.absorbedcount]"
+ if(changelings.len)
+ var/text = "The changelings were:"
+ for(var/datum/mind/changeling in changelings)
+ var/changelingwin = 1
- var/count = 1
- for(var/datum/objective/objective in changeling.objectives)
- if(objective.check_completion())
- world << "Objective #[count]: [objective.explanation_text] \green Success"
- feedback_add_details("changeling_objective","[objective.type]|SUCCESS")
+ text += "
[changeling.key] was [changeling.name] ("
+ if(changeling.current && changeling.current.changeling)
+ if(changeling.current.stat == DEAD)
+ text += "died"
else
- world << "Objective #[count]: [objective.explanation_text] \red Failed"
- feedback_add_details("changeling_objective","[objective.type]|FAIL")
- changelingwin = 0
- count++
+ text += "survived"
+ if(changeling.current.real_name != changeling.name)
+ text += " as [changeling.current.real_name]"
+ else
+ text += "body destroyed"
+ changelingwin = 0
+ text += ")"
+
+ if(changeling.current && changeling.current.changeling)
+ text += "
changeling ID: [changeling.current.gender==MALE?"Mr.":"Ms."] [changeling.current.changeling.changelingID]."
+ text += "
Genomes absorbed: [changeling.current.changeling.absorbedcount]"
+
+ if(changeling.objectives.len)
+ var/count = 1
+ for(var/datum/objective/objective in changeling.objectives)
+ if(objective.check_completion())
+ text += "
Objective #[count]: [objective.explanation_text] \green Success"
+ feedback_add_details("changeling_objective","[objective.type]|SUCCESS")
+ else
+ text += "
Objective #[count]: [objective.explanation_text] \red Failed"
+ feedback_add_details("changeling_objective","[objective.type]|FAIL")
+ changelingwin = 0
+ count++
+
+ if(changelingwin)
+ text += "
The changeling was successful!"
+ feedback_add_details("changeling_success","SUCCESS")
+ else
+ text += "
The changeling has failed!"
+ feedback_add_details("changeling_success","FAIL")
+
+ world << text
- else
- changeling_name = "[changeling.key] (character destroyed)"
- changelingwin = 0
- if(changelingwin)
- world << "The changeling was successful!"
- feedback_add_details("changeling_success","SUCCESS")
- else
- world << "The changeling has failed!"
- feedback_add_details("changeling_success","FAIL")
return 1
/datum/changeling //stores changeling powers, changeling recharge thingie, changeling absorbed DNA and changeling ID (for changeling hivemind)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index e12390aa5a..6f251d99e9 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -111,8 +111,8 @@
if("survive")
explanation = "Our knowledge must live on. Make sure at least [acolytes_needed] acolytes escape on the shuttle to spread their work on an another station."
if("sacrifice")
- if(sacrifice_target && sacrifice_target.current)
- explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell blood join) and three acolytes to do so."
+ if(sacrifice_target)
+ explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell blood join) and three acolytes to do so."
else
explanation = "Free objective."
if("eldergod")
@@ -310,58 +310,60 @@
feedback_set("round_end_result",acolytes_survived)
world << "\red The staff managed to stop the cult!"
- world << "\b Cultists escaped: [acolytes_survived]"
+ var/text = "Cultists escaped: [acolytes_survived]"
- world << "The cultists' objectives were:"
-
- for(var/obj_count=1,obj_count <= objectives.len,obj_count++)
- var/explanation
- switch(objectives[obj_count])
- if("survive")
- if(!check_survive())
- explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. \green Success!"
- feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]")
- else
- explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. \red Failed."
- feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]")
- if("sacrifice")
- if(!sacrifice_target)
- explanation = "Free objective"
- else
- if(sacrificed.Find(sacrifice_target))
- explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. \green Success!"
- feedback_add_details("cult_objective","cult_sacrifice|SUCCESS")
- else if(sacrifice_target && sacrifice_target.current)
- explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. \red Failed."
- feedback_add_details("cult_objective","cult_sacrifice|FAIL")
+ if(objectives.len)
+ text += "
The cultists' objectives were:"
+ for(var/obj_count=1, obj_count <= objectives.len, obj_count++)
+ var/explanation
+ switch(objectives[obj_count])
+ if("survive")
+ if(!check_survive())
+ explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. \green Success!"
+ feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]")
else
- explanation = "Sacrifice Unknown, the Unknown whos body was likely gibbed. \red Failed."
- feedback_add_details("cult_objective","cult_sacrifice|FAIL|GIBBED")
- if("eldergod")
- if(!eldergod)
- explanation = "Summon Nar-Sie. \green Success!"
- feedback_add_details("cult_objective","cult_narsie|SUCCESS")
- else
- explanation = "Summon Nar-Sie. \red Failed."
- feedback_add_details("cult_objective","cult_narsie|FAIL")
- world << "Objective #[obj_count]: [explanation]"
+ explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. \red Failed."
+ feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]")
+ if("sacrifice")
+ if(sacrifice_target)
+ if(sacrifice_target in sacrificed)
+ explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. \green Success!"
+ feedback_add_details("cult_objective","cult_sacrifice|SUCCESS")
+ else if(sacrifice_target && sacrifice_target.current)
+ explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. \red Failed."
+ feedback_add_details("cult_objective","cult_sacrifice|FAIL")
+ else
+ explanation = "Sacrifice Unknown, the Unknown whos body was likely gibbed. \red Failed."
+ feedback_add_details("cult_objective","cult_sacrifice|FAIL|GIBBED")
+ if("eldergod")
+ if(!eldergod)
+ explanation = "Summon Nar-Sie. \green Success!"
+ feedback_add_details("cult_objective","cult_narsie|SUCCESS")
+ else
+ explanation = "Summon Nar-Sie. \red Failed."
+ feedback_add_details("cult_objective","cult_narsie|FAIL")
+ text += "
Objective #[obj_count]: [explanation]"
+ world << text
..()
return 1
/datum/game_mode/proc/auto_declare_completion_cult()
- if (cult.len!=0 || (ticker && istype(ticker.mode,/datum/game_mode/cult)))
- world << "The cultists were: "
- var/text = ""
- for(var/datum/mind/cult_nh_mind in cult)
- if(cult_nh_mind.current)
- text += "[cult_nh_mind.current.real_name]"
- if(cult_nh_mind.current.stat == 2)
- text += " (Dead)"
+ if( cult.len || (ticker && istype(ticker.mode,/datum/game_mode/cult)) )
+ var/text = "The cultists were:"
+ for(var/datum/mind/cultist in cult)
+
+ text += "
[cultist.key] was [cultist.name] ("
+ if(cultist.current)
+ if(cultist.current.stat == DEAD)
+ text += "died"
else
- text += " (Survived!)"
+ text += "survived"
+ if(cultist.current.real_name != cultist.name)
+ text += " as [cultist.current.real_name]"
else
- text += "[cult_nh_mind.key] (character destroyed)"
- text += ", "
+ text += "body destroyed"
+ text += ")"
+
world << text
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 95ab805265..27d418330f 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -338,22 +338,21 @@ var/global/datum/controller/gameticker/ticker
mode.declare_completion()//To declare normal completion.
//calls auto_declare_completion_* for all modes
- for (var/handler in typesof(/datum/game_mode/proc))
+ for(var/handler in typesof(/datum/game_mode/proc))
if (findtext("[handler]","auto_declare_completion_"))
call(mode, handler)()
//Print a list of antagonists to the server log
var/list/total_antagonists = list()
//Look into all mobs in world, dead or alive
- for(var/mob/M in mob_list)
- if(M.mind && M.mind.special_role) //If they have a mind and are an antagonist of some sort...
- var/temprole = M.mind.special_role
-
- if(temprole in total_antagonists) //If the role exists already, add the name to it
- total_antagonists[temprole] += ", [M.real_name]([M.ckey])"
+ for(var/datum/mind/Mind in minds)
+ var/temprole = Mind.special_role
+ if(temprole) //if they are an antagonist of some sort.
+ if(temprole in total_antagonists) //If the role exists already, add the name to it
+ total_antagonists[temprole] += ", [Mind.name]([Mind.key])"
else
total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob
- total_antagonists[temprole] += ": [M.real_name]([M.ckey])"
+ total_antagonists[temprole] += ": [Mind.name]([Mind.key])"
//Now print them all into the log!
log_game("Antagonists at round end were...")
diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm
index c23d8f6922..13a3802f31 100644
--- a/code/game/gamemodes/malfunction/malfunction.dm
+++ b/code/game/gamemodes/malfunction/malfunction.dm
@@ -237,21 +237,22 @@
/datum/game_mode/proc/auto_declare_completion_malfunction()
- if (malf_ai.len!=0 || istype(ticker.mode,/datum/game_mode/malfunction))
- if (malf_ai.len==1)
- var/text = ""
- var/datum/mind/ai = malf_ai[1]
- if(ai.current)
- text += "[ai.current.real_name]"
- else
- text += "[ai.key] (character destroyed)"
- world << "The malfunctioning AI was [text]"
- else
- world << "The malfunctioning AI were: "
- var/list/ai_names = new
- for(var/datum/mind/ai in malf_ai)
- if(ai.current)
- ai_names += ai.current.real_name + ((ai.current.stat==2)?" (Dead)":"")
+ if( malf_ai.len || istype(ticker.mode,/datum/game_mode/malfunction) )
+ var/text = "The malfunctioning AI were:"
+
+ for(var/datum/mind/malf in malf_ai)
+
+ text += "
[malf.key] was [malf.name] ("
+ if(malf.current)
+ if(malf.current.stat == DEAD)
+ text += "deactivated"
else
- ai_names += "[ai.key] (character destroyed)"
- world << english_list(ai_names)
+ text += "operational"
+ if(malf.current.real_name != malf.name)
+ text += " as [malf.current.real_name]"
+ else
+ text += "hardware destroyed"
+ text += ")"
+
+ world << text
+ return 1
\ No newline at end of file
diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm
index e620c9be0d..deb28d7689 100644
--- a/code/game/gamemodes/meteor/meteor.dm
+++ b/code/game/gamemodes/meteor/meteor.dm
@@ -37,36 +37,28 @@
/datum/game_mode/meteor/declare_completion()
- var/list/survivors = list()
- var/area/escape_zone = locate(/area/shuttle/escape/centcom)
- var/area/pod_zone = list( /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom )
-
+ var/text
+ var/survivors = 0
for(var/mob/living/player in player_list)
- if (player.stat != 2)
+ if(player.stat != DEAD)
var/turf/location = get_turf(player.loc)
- if (location in escape_zone)
- survivors[player.real_name] = "shuttle"
- else if (location.loc.type in pod_zone)
- survivors[player.real_name] = "pod"
- else
- survivors[player.real_name] = "alive"
+ if(!location) continue
+ switch(location.loc.type)
+ if( /area/shuttle/escape/centcom )
+ text += "
[player.real_name] escaped on the emergency shuttle"
+ if( /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom )
+ text += "
[player.real_name] escaped in a life pod."
+ else
+ text += "
[player.real_name] survived but is stranded without any hope of rescue."
+ survivors++
+
+ if(survivors)
+ world << "\blue The following survived the meteor storm:[text]"
+ else
+ world << "\blue Nobody survived the meteor storm!"
feedback_set_details("round_end_result","end - evacuation")
- feedback_set("round_end_result",survivors.len)
-
- if (survivors.len)
- world << "\blue The following survived the meteor attack!"
- for(var/survivor in survivors)
- var/condition = survivors[survivor]
- switch(condition)
- if("shuttle")
- world << "\t [survivor] escaped on the shuttle!"
- if("pod")
- world << "\t [survivor] escaped on an escape pod!"
- if("alive")
- world << "\t [survivor] stayed alive. Whereabouts unknown."
- else
- world << "\blue No one survived the meteor attack!"
+ feedback_set("round_end_result",survivors)
..()
return 1
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index e7021e7811..8665075e3b 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -322,17 +322,25 @@
/datum/game_mode/proc/auto_declare_completion_nuclear()
- if (syndicates.len!=0 || (ticker && istype(ticker.mode,/datum/game_mode/nuclear)))
- world << "The Syndicate operatives were: "
- for(var/datum/mind/mind in syndicates)
- var/text = ""
- if(mind.current)
- text += "[mind.key] was [mind.current.real_name]"
- if(mind.current.stat == 2)
- text += " (Dead)"
+ if( syndicates.len || (ticker && istype(ticker.mode,/datum/game_mode/nuclear)) )
+ var/text = "The syndicate operatives were:"
+
+ for(var/datum/mind/syndicate in syndicates)
+
+ text += "
[syndicate.key] was [syndicate.name] ("
+ if(syndicate.current)
+ if(syndicate.current.stat == DEAD)
+ text += "died"
+ else
+ text += "survived"
+ if(syndicate.current.real_name != syndicate.name)
+ text += " as [syndicate.current.real_name]"
else
- text += "[mind.key] (character destroyed)"
- world << text
+ text += "body destroyed"
+ text += ")"
+
+ world << text
+ return 1
/proc/nukelastname(var/mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea. Also praise Urist for copypasta ho.
@@ -353,8 +361,8 @@
for(var/datum/mind/synd_mind in syndicates)
switch(synd_mind.current.gender)
if("male")
- synd_mind.current.real_name = "[pick(first_names_male)] [lastname]"
+ synd_mind.name = "[pick(first_names_male)] [lastname]"
if("female")
- synd_mind.current.real_name = "[pick(first_names_female)] [lastname]"
-
+ synd_mind.name = "[pick(first_names_female)] [lastname]"
+ synd_mind.current.real_name = synd_mind.name
return
\ No newline at end of file
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 08dfa060c1..49986a3f9b 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -197,27 +197,16 @@ datum/objective/silence
if(emergency_shuttle.location<2)
return 0
- var/area/shuttle = locate(/area/shuttle/escape/centcom)
- var/area/pod1 = locate(/area/shuttle/escape_pod1/centcom)
- var/area/pod2 = locate(/area/shuttle/escape_pod2/centcom)
- var/area/pod3 = locate(/area/shuttle/escape_pod3/centcom)
- var/area/pod4 = locate(/area/shuttle/escape_pod5/centcom)
-
for(var/mob/living/player in player_list)
- if (player == owner.current)
+ if(player == owner.current)
continue
- if (player.mind)
- if (player.stat != 2)
- if (get_turf(player) in shuttle)
- return 0
- if (get_turf(player) in pod1)
- return 0
- if (get_turf(player) in pod2)
- return 0
- if (get_turf(player) in pod3)
- return 0
- if (get_turf(player) in pod4)
- return 0
+ if(player.mind)
+ if(player.stat != DEAD)
+ var/turf/T = get_turf(player)
+ if(!T) continue
+ switch(T.loc.type)
+ if(/area/shuttle/escape/centcom, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom)
+ return 0
return 1
@@ -260,7 +249,6 @@ datum/objective/escape
datum/objective/survive
explanation_text = "Stay alive until the end."
-
check_completion()
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
return 0 //Brains no longer win survive objectives. --NEO
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index 527bf96da1..bef1f42ef5 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -78,7 +78,7 @@
var/datum/objective/mutiny/rev_obj = new
rev_obj.owner = rev_mind
rev_obj.target = head_mind
- rev_obj.explanation_text = "Assassinate [head_mind.current.real_name], the [head_mind.assigned_role]."
+ rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]."
rev_mind.objectives += rev_obj
// equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO
@@ -109,7 +109,7 @@
var/datum/objective/mutiny/rev_obj = new
rev_obj.owner = rev_mind
rev_obj.target = head_mind
- rev_obj.explanation_text = "Assassinate [head_mind.current.real_name], the [head_mind.assigned_role]."
+ rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]."
rev_mind.objectives += rev_obj
/datum/game_mode/proc/greet_revolutionary(var/datum/mind/rev_mind, var/you_are=1)
@@ -344,64 +344,75 @@
return 1
/datum/game_mode/proc/auto_declare_completion_revolution()
- if(head_revolutionaries.len!=0 || istype(ticker.mode,/datum/game_mode/revolution))
- var/list/names = new
- for(var/datum/mind/i in head_revolutionaries)
- if(i.current)
- var/hstatus = ""
- if(i.current.stat == 2)
- hstatus = "Dead"
- else if(i.current.z != 1)
- hstatus = "Abandoned the station"
- names += i.current.real_name + " ([hstatus])"
- else
- names += "[i.key] (character destroyed)"
- world << "The head revolutionaries were: "
- world << english_list(names)
- if (revolutionaries.len!=0 || istype(ticker.mode,/datum/game_mode/revolution))
- var/list/names = new
- for(var/datum/mind/i in revolutionaries)
- if(i.current)
- var/hstatus = ""
- if(i.current.stat == 2)
- hstatus = "Dead"
- else if(i.current.z != 1)
- hstatus = "Abandoned the station"
- names += i.current.real_name + " ([hstatus])"
- else
- names += "[i.key] (character destroyed)"
- if (revolutionaries.len!=0)
- world << "The ordinary revolutionaries were: "
- world << english_list(names)
- else
- world << "The head revolutionaries failed to enlist any ordinary revolutionaries"
- var/list/heads = get_all_heads()
- var/list/targets = new
- for (var/datum/mind/i in head_revolutionaries)
- for (var/datum/objective/mutiny/o in i.objectives)
- targets |= o.target
- if (head_revolutionaries.len!=0 || \
- revolutionaries.len!=0 || \
- istype(ticker.mode,/datum/game_mode/revolution))
+ var/list/targets = list()
- var/list/names = new
- for(var/datum/mind/i in heads)
- if(i.current)
- var/turf/T = get_turf(i.current)
- var/hstatus = ""
- if(i.current.stat == 2)
- hstatus = "Dead"
- else if((T) && (T.z != 1))
- hstatus = "Abandoned the station"
- names += i.current.real_name + " ([hstatus])" + ((i in targets)?"(target)":"")
- else
- names += "[i.key] (character destroyed)" + ((i in targets)?"(target)":"")
- if (heads.len!=0)
- world << "The heads of staff were: "
- world << english_list(names)
- else
- world << "There were no any heads of staff on the station."
+ if(head_revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
+ var/text = "The head revolutionaries were:"
+ for(var/datum/mind/headrev in head_revolutionaries)
+ text += "
[headrev.key] was [headrev.name] ("
+ if(headrev.current)
+ if(headrev.current.stat == DEAD)
+ text += "died"
+ else if(headrev.current.z != 1)
+ text += "fled the station"
+ else
+ text += "survived the revolution"
+ if(headrev.current.real_name != headrev.name)
+ text += " as [headrev.current.real_name]"
+ else
+ text += "body destroyed"
+ text += ")"
+
+ for(var/datum/objective/mutiny/objective in headrev.objectives)
+ targets |= objective.target
+
+ world << text
+
+ if(revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
+ var/text = "The revolutionaries were:"
+
+ for(var/datum/mind/rev in revolutionaries)
+ text += "
[rev.key] was [rev.name] ("
+ if(rev.current)
+ if(rev.current.stat == DEAD)
+ text += "died"
+ else if(rev.current.z != 1)
+ text += "fled the station"
+ else
+ text += "survived the revolution"
+ if(rev.current.real_name != rev.name)
+ text += " as [rev.current.real_name]"
+ else
+ text += "body destroyed"
+ text += ")"
+
+ world << text
+
+
+ if( head_revolutionaries.len || revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution) )
+ var/text = "The heads of staff were:"
+
+ var/list/heads = get_all_heads()
+ for(var/datum/mind/head in heads)
+ var/target = (head in targets)
+ if(target)
+ text += ""
+ text += "
[head.key] was [head.name] ("
+ if(head.current)
+ if(head.current.stat == DEAD)
+ text += "died"
+ else if(head.current.z != 1)
+ text += "fled the station"
+ else
+ text += "survived the revolution"
+ if(head.current.real_name != head.name)
+ text += " as [head.current.real_name]"
+ else
+ text += "body destroyed"
+ text += ")"
+ if(target)
+ text += ""
/proc/is_convertable_to_rev(datum/mind/mind)
return istype(mind) && \
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index f9ccea19f2..2bc6a55de9 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -164,39 +164,49 @@
/datum/game_mode/proc/auto_declare_completion_traitor()
- for(var/datum/mind/traitor in traitors)
- var/traitor_name
-
- if(traitor.current)
- if(traitor.current == traitor.original)
- traitor_name = "[traitor.current.real_name] (played by [traitor.key])"
- else if (traitor.original)
- traitor_name = "[traitor.current.real_name] (originally [traitor.original.real_name]) (played by [traitor.key])"
- else
- traitor_name = "[traitor.current.real_name] (original character destroyed) (played by [traitor.key])"
- else
- traitor_name = "[traitor.key] (character destroyed)"
- var/special_role_text = traitor.special_role?(lowertext(traitor.special_role)):"antagonist"
- world << "The [special_role_text] was [traitor_name]"
- if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this.
+ if(traitors.len)
+ var/text = "The traitors were:"
+ for(var/datum/mind/traitor in traitors)
var/traitorwin = 1
- var/count = 1
- for(var/datum/objective/objective in traitor.objectives)
- if(objective.check_completion())
- world << "Objective #[count]: [objective.explanation_text] \green Success"
- feedback_add_details("traitor_objective","[objective.type]|SUCCESS")
+
+ text += "
[traitor.key] was [traitor.name] ("
+ if(traitor.current)
+ if(traitor.current.stat == DEAD)
+ text += "died"
else
- world << "Objective #[count]: [objective.explanation_text] \red Failed"
- feedback_add_details("traitor_objective","[objective.type]|FAIL")
- traitorwin = 0
- count++
+ text += "survived"
+ if(traitor.current.real_name != traitor.name)
+ text += " as [traitor.current.real_name]"
+ else
+ text += "body destroyed"
+ text += ")"
+
+ if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this.
+ var/count = 1
+ for(var/datum/objective/objective in traitor.objectives)
+ if(objective.check_completion())
+ text += "
Objective #[count]: [objective.explanation_text] \green Success"
+ feedback_add_details("traitor_objective","[objective.type]|SUCCESS")
+ else
+ text += "
Objective #[count]: [objective.explanation_text] \red Failed"
+ feedback_add_details("traitor_objective","[objective.type]|FAIL")
+ traitorwin = 0
+ count++
+
+ var/special_role_text
+ if(traitor.special_role)
+ special_role_text = lowertext(traitor.special_role)
+ else
+ special_role_text = "antagonist"
if(traitorwin)
- world << "The [special_role_text] was successful!"
+ text += "
The [special_role_text] was successful!"
feedback_add_details("traitor_success","SUCCESS")
else
- world << "The [special_role_text] has failed!"
+ text += "
The [special_role_text] has failed!"
feedback_add_details("traitor_success","FAIL")
+
+ world << text
return 1
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index 64e7cbb8a7..966af9a8a3 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -123,6 +123,8 @@
wizard_mob.real_name = newname
wizard_mob.name = newname
+ if(wizard_mob.mind)
+ wizard_mob.mind.name = newname
return
@@ -207,36 +209,43 @@
/datum/game_mode/proc/auto_declare_completion_wizard()
- for(var/datum/mind/wizard in wizards)
- var/wizard_name
- if(wizard.current)
- if(wizard.current == wizard.original)
- wizard_name = "[wizard.current.real_name] (played by [wizard.key])"
- else if (wizard.original)
- wizard_name = "[wizard.current.real_name] (originally [wizard.original.real_name]) (played by [wizard.key])"
- else
- wizard_name = "[wizard.current.real_name] (original character destroyed) (played by [wizard.key])"
- else
- wizard_name = "[wizard.key] (character destroyed)"
- world << "The wizard was [wizard_name]"
- var/count = 1
- var/wizardwin = 1
- for(var/datum/objective/objective in wizard.objectives)
- if(objective.check_completion())
- world << "Objective #[count]: [objective.explanation_text] \green Success"
- feedback_add_details("wizard_objective","[objective.type]|SUCCESS")
- else
- world << "Objective #[count]: [objective.explanation_text] \red Failed"
- feedback_add_details("wizard_objective","[objective.type]|FAIL")
- wizardwin = 0
- count++
+ if(wizards.len)
+ var/text = "The wizards/witches were:"
- if(wizard.current && wizard.current.stat!=2 && wizardwin)
- world << "The wizard was successful!"
- feedback_add_details("wizard_success","SUCCESS")
- else
- world << "The wizard has failed!"
- feedback_add_details("wizard_success","FAIL")
+ for(var/datum/mind/wizard in wizards)
+
+ text += "
[wizard.key] was [wizard.name] ("
+ if(wizard.current)
+ if(wizard.current.stat == DEAD)
+ text += "died"
+ else
+ text += "survived"
+ if(wizard.current.real_name != wizard.name)
+ text += " as [wizard.current.real_name]"
+ else
+ text += "body destroyed"
+ text += ")"
+
+ var/count = 1
+ var/wizardwin = 1
+ for(var/datum/objective/objective in wizard.objectives)
+ if(objective.check_completion())
+ text += "
Objective #[count]: [objective.explanation_text] \green Success"
+ feedback_add_details("wizard_objective","[objective.type]|SUCCESS")
+ else
+ text += "
Objective #[count]: [objective.explanation_text] \red Failed"
+ feedback_add_details("wizard_objective","[objective.type]|FAIL")
+ wizardwin = 0
+ count++
+
+ if(wizard.current && wizard.current.stat!=2 && wizardwin)
+ text += "
The wizard was successful!"
+ feedback_add_details("wizard_success","SUCCESS")
+ else
+ text += "
The wizard has failed!"
+ feedback_add_details("wizard_success","FAIL")
+
+ world << text
return 1
//OTHER PROCS
diff --git a/tgstation.dme b/tgstation.dme
index 138129a4a9..3e29ad2fbe 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -837,6 +837,7 @@
#include "code\modules\mob\living\silicon\pai\death.dm"
#include "code\modules\mob\living\silicon\pai\examine.dm"
#include "code\modules\mob\living\silicon\pai\hud.dm"
+#include "code\modules\mob\living\silicon\pai\life.dm"
#include "code\modules\mob\living\silicon\pai\pai.dm"
#include "code\modules\mob\living\silicon\pai\personality.dm"
#include "code\modules\mob\living\silicon\pai\recruit.dm"