From 25d306d9fc99f503115247f042f23f36d4e124bd Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Fri, 22 Nov 2013 01:12:56 -0600 Subject: [PATCH] Replaced role checks by loyalty implant checks --- code/datums/mind.dm | 84 ++++++++++++++----- code/modules/mob/living/carbon/human/human.dm | 6 ++ 2 files changed, 68 insertions(+), 22 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index f8d443f810e..f073d6e7ee3 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -123,6 +123,7 @@ datum/mind out += "Factions and special roles:
" var/list/sections = list( + "implant", "revolution", "cult", "wizard", @@ -133,19 +134,23 @@ datum/mind "malfunction", ) var/text = "" - + var/mob/living/carbon/human/H = current if (istype(current, /mob/living/carbon/human) || istype(current, /mob/living/carbon/monkey)) + /** Impanted**/ + if(H.is_loyalty_implanted(H)) + text = "Loyalty Implant:Remove|Implanted
" + else + text = "Loyalty Implant:No Implant|Implant him!
" + sections["implant"] = text /** REVOLUTION ***/ text = "revolution" if (ticker.mode.config_tag=="revolution") - text = uppertext(text) + text += uppertext(text) text = "[text]: " - if (assigned_role in command_positions) - text += "HEAD|officer|employee|headrev|rev" - else if (assigned_role in list("Security Officer", "Detective", "Warden")) - text += "head|OFFICER|employee|headre|rev" + if (H.is_loyalty_implanted(H)) + text += "LOYAL EMPLOYEE|headrev|rev" else if (src in ticker.mode.head_revolutionaries) - text = "head|officer|employee|HEADREV|rev" + text = "employee|HEADREV|rev" text += "
Flash: give" var/list/L = current.get_contents() @@ -162,9 +167,9 @@ datum/mind if (objectives.len==0) text += "
Objectives are empty! Set to kill all heads." else if (src in ticker.mode.revolutionaries) - text += "head|officer|employee|headrev|REV" + text += "employee|headrev|REV" else - text += "head|officer|EMPLOYEE|headrev|rev" + text += "EMPLOYEE|headrev|rev" sections["revolution"] = text /** CULT ***/ @@ -172,19 +177,17 @@ datum/mind if (ticker.mode.config_tag=="cult") text = uppertext(text) text = "[text]: " - if (assigned_role in command_positions) - text += "HEAD|officer|employee|cultist" - else if (assigned_role in list("Security Officer", "Detective", "Warden")) - text += "head|OFFICER|employee|cultist" + if (H.is_loyalty_implanted(H)) + text += "LOYAL EMPLOYEE|cultist" else if (src in ticker.mode.cult) - text += "head|officer|employee|CULTIST" + text += "employee|CULTIST" text += "
Give tome|amulet." /* if (objectives.len==0) text += "
Objectives are empty! Set to sacrifice and escape or summon." */ else - text += "head|officer|EMPLOYEE|cultist" + text += "EMPLOYEE|cultist" sections["cult"] = text /** WIZARD ***/ @@ -243,12 +246,16 @@ datum/mind if (ticker.mode.config_tag=="traitor" || ticker.mode.config_tag=="traitorchan") text = uppertext(text) text = "[text]: " - if (src in ticker.mode.traitors) - text += "TRAITOR|loyal" - if (objectives.len==0) - text += "
Objectives are empty! Randomize!" + if(istype(current, /mob/living/carbon/human)) + if (H.is_loyalty_implanted(H)) + text +="traitor|LOYAL EMPLOYEE" else - text += "traitor|LOYAL" + if (src in ticker.mode.traitors) + text += "TRAITOR|Employee" + if (objectives.len==0) + text += "
Objectives are empty! Randomize!" + else + text += "traitor|Employee" sections["traitor"] = text /** MONKEY ***/ @@ -496,6 +503,39 @@ datum/mind if(!istype(objective)) return objective.completed = !objective.completed + else if(href_list["implant"]) + var/mob/living/carbon/human/H = current + switch(href_list["implant"]) + if("remove") + for(var/obj/item/weapon/implant/loyalty/I in H.contents) + I.Del() + H << "\blue Your loyalty implant has been deactivated." + if("add") + H.contents.Add( new /obj/item/weapon/implant/loyalty (src) ) + H << "\red You somehow have become the recepient of a loyalty transplant, and it just activated!" + if(src in ticker.mode.revolutionaries) + special_role = null + ticker.mode.revolutionaries -= src + src << "\red The nanobots in the loyalty implant remove all thoughts about being a revolutionary. Get back to work!" + if(src in ticker.mode.head_revolutionaries) + special_role = null + ticker.mode.head_revolutionaries -=src + src << "\red The nanobots in the loyalty implant remove all thoughts about being a revolutionary. Get back to work!" + if(src in ticker.mode.cult) + ticker.mode.cult -= src + ticker.mode.update_cult_icons_removed(src) + special_role = null + var/datum/game_mode/cult/cult = ticker.mode + if (istype(cult)) + cult.memoize_cult_objectives(src) + current << "\red The nanobots in the loyalty implant remove all thoughts about being in a cult. Have a productive day!" + memory = "" + if(src in ticker.mode.traitors) + ticker.mode.traitors -= src + special_role = null + current << "\red The nanobots in the loyalty implant remove all thoughts about being a traitor to Nanotrasen. Have a nice day!" + log_admin("[key_name_admin(usr)] has de-traitor'ed [current].") + else if (href_list["revolution"]) switch(href_list["revolution"]) if("clear") @@ -762,8 +802,8 @@ datum/mind special_role = "traitor" current << "\red You are a traitor!" log_admin("[key_name_admin(usr)] has traitor'ed [current].") - if(isAI(current)) - var/mob/living/silicon/ai/A = current + if(istype(current, /mob/living/silicon)) + var/mob/living/silicon/A = current call(/datum/game_mode/proc/add_law_zero)(A) A.show_laws() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b896813cd56..f3d66aa3fc5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -317,6 +317,12 @@ if(armor >= 2) return +/mob/living/carbon/human/proc/is_loyalty_implanted(mob/living/carbon/human/M) + for(var/L in M.contents) + if(istype(L, /obj/item/weapon/implant/loyalty)) + return 1 + return 0 + /mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob) if(M.Victim) return // can't attack while eating!