From 9d2ba41a3a30783a12cd3bdfade26f192693a66e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 17 Mar 2015 07:44:56 +0100 Subject: [PATCH] Ghosts with antagHUD enabled can now see AI/borg laws on examine. --- code/modules/mob/living/silicon/ai/examine.dm | 15 ++++++++++++--- code/modules/mob/living/silicon/robot/examine.dm | 1 + code/modules/mob/living/silicon/silicon.dm | 5 ++--- code/modules/mob/mob_helpers.dm | 11 ++++++++--- code/modules/nano/modules/law_manager.dm | 2 +- code/modules/nano/modules/nano_module.dm | 3 --- 6 files changed, 24 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm index af71223f7c6..286edc2ce0f 100644 --- a/code/modules/mob/living/silicon/ai/examine.dm +++ b/code/modules/mob/living/silicon/ai/examine.dm @@ -1,7 +1,7 @@ /mob/living/silicon/ai/examine(mob/user) if(!..(user)) return - + var/msg = "" if (src.stat == DEAD) msg += "It appears to be powered-down.\n" @@ -23,5 +23,14 @@ msg += "" msg += "*---------*" - usr << msg - return \ No newline at end of file + user << msg + user.showLaws(src) + + return + +/mob/proc/showLaws(var/mob/living/silicon/S) + return + +/mob/dead/observer/showLaws(var/mob/living/silicon/S) + if(antagHUD || is_admin(src)) + S.laws.show_laws(src) diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index 20820369f59..1e5c7201e54 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -39,4 +39,5 @@ msg += "\nIt is [pose]" user << msg + user.showLaws(src) return diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index c9af4bbbf29..acce80ea361 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -162,13 +162,12 @@ // This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms /mob/living/silicon/Stat() - ..() - statpanel("Status") - if (src.client.statpanel == "Status") + if(statpanel("Status")) show_station_time() show_emergency_shuttle_eta() show_system_integrity() show_malf_ai() + ..() // this function displays the stations manifest in a separate window /mob/living/silicon/proc/show_station_manifest() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 5c75a492ba1..bc1498a5bb7 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -84,13 +84,13 @@ if(istype(A, /mob/living/silicon/ai)) return 1 return 0 - + /mob/proc/isAI() return 0 /mob/living/silicon/ai/isAI() return 1 - + /mob/proc/isRobot() return 0 @@ -154,7 +154,7 @@ proc/hassensorlevel(A, var/level) var/obj/item/clothing/under/U = H.w_uniform return U.sensor_mode >= level return 0 - + proc/getsensorlevel(A) var/mob/living/carbon/human/H = A if(istype(H) && istype(H.w_uniform, /obj/item/clothing/under)) @@ -162,6 +162,11 @@ proc/getsensorlevel(A) return U.sensor_mode return SUIT_SENSOR_OFF + +/proc/is_admin(var/mob/user) + return check_rights(R_ADMIN, 0, user) != 0 + + /proc/hsl2rgb(h, s, l) return //TODO: Implement diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm index 91d9628d595..2f1d6d95782 100644 --- a/code/modules/nano/modules/law_manager.dm +++ b/code/modules/nano/modules/law_manager.dm @@ -222,7 +222,7 @@ return law_sets /obj/nano_module/law_manager/proc/is_malf(var/mob/user) - return is_admin(user) || (owner.isAI() && owner.mind.special_role == "malfunction") + return is_admin(user) || (owner.mind && (owner.mind.special_role == "malfunction" || owner.mind.special_role == "traitor")) /obj/nano_module/law_manager/proc/is_slaved() if(owner.isRobot()) diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 4e40f714b88..3787639c9d0 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,5 +1,2 @@ /obj/nano_module/proc/can_still_topic() return CanUseTopic(usr, list(), default_state) == STATUS_INTERACTIVE - -/obj/nano_module/proc/is_admin(var/mob/user) - return check_rights(R_ADMIN, 0, user) != 0