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"