From 0218f2c41a86a62ff6f66298e2e5cbee8dd317b5 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Tue, 1 May 2012 14:23:35 +0100 Subject: [PATCH] TG: View variables now properly displays the contents of an associative list (ie stuff like list("ballnumber" = 2)). Changed around a few access levels; only jobs who need to do maintenance have access to maintenance tunnels. Also the heads and detective. Removed the radio mode toggle verb, as telecomms has long left the "experimental" stage. Messed with sec huds. Their readings are far more reliable. Officers can now use huds to modify humans' criminal statuses on the go. To do this, simply examine a human and at the end should be a clickable link to change the status. Uses /mob/living/carbon/human/Topic(). Added some new sprites from the forums, including those spider sprites and the new, more feline-looking cat. Dat changelog Revision: r3383 Author: vageyenaman --- code/datums/datumvars.dm | 15 ++++++++ code/game/jobs/access.dm | 10 +++--- code/modules/admin/admin_verbs.dm | 1 + code/modules/clothing/glasses/hud.dm | 25 ++++++++------ .../mob/living/carbon/human/examine.dm | 25 ++++++++++++++ code/modules/mob/living/carbon/human/human.dm | 34 +++++++++++++++++++ 6 files changed, 95 insertions(+), 15 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index d79785eb823..3cc9f01be64 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -239,6 +239,7 @@ client body += "" body += "" body += "" +// body += "" if(ishuman(D)) body += "" body += "" @@ -497,6 +498,20 @@ client togglebuildmode(MOB) href_list["datumrefresh"] = href_list["build_mode"] +/* else if (href_list["direct_control"]) + if(!href_list["direct_control"]) + return + var/mob/MOB = locate(href_list["direct_control"]) + if(!MOB) + return + if(!ismob(MOB)) + return + if(!src.holder) + return + + if(usr.client) + usr.client.cmd_assume_direct_control(MOB)*/ + else if (href_list["delall"]) if(!href_list["delall"]) return diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index ecabec80f83..934acd653db 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -188,7 +188,7 @@ if("Librarian") // -- TLE return list(access_library) if("Lawyer") //Muskets 160910 - return list(access_maint_tunnels, access_lawyer, access_court) + return list(access_lawyer, access_court) if("Captain") return get_all_accesses() if("Security Officer") @@ -219,9 +219,9 @@ if("Janitor") return list(access_janitor, access_maint_tunnels) if("Clown") - return list(access_maint_tunnels, access_clown, access_theatre) + return list(access_clown, access_theatre) if("Mime") - return list(access_maint_tunnels, access_mime, access_theatre) + return list(access_mime, access_theatre) if("Chef") return list(access_kitchen) if("Roboticist") @@ -229,7 +229,7 @@ if("Cargo Technician") return list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) if("Shaft Miner") - return list(access_maint_tunnels, access_mining, access_mint, access_mining_station) + return list(access_mining, access_mint, access_mining_station) if("Quartermaster") return list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining) if("Chief Engineer") @@ -239,7 +239,7 @@ access_mint, access_ce, access_RC_announce, access_keycard_auth, access_tcomsat) if("Research Director") return list(access_medlab, access_rd, - access_maint_tunnels, access_heads, access_tox, + access_heads, access_tox, access_tox_storage, access_chemistry, access_teleporter, access_research, access_robotics, access_xenobiology, access_RC_announce, access_keycard_auth, access_tcomsat) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 82149e232d1..277d6e5ec30 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -265,6 +265,7 @@ //verbs += /client/proc/cmd_admin_emp --Merged with view variables //verbs += /client/proc/give_spell --Merged with view variables //verbs += /client/proc/cmd_admin_ninjafy --Merged with view variables + //verbs += /client/proc/cmd_switch_radio --removed as tcommsat is staying // Moved over from tg's Game Master: verbs += /obj/admins/proc/toggle_aliens //toggle aliens verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 0899491ab8a..02043fd7de0 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -5,6 +5,7 @@ origin_tech = "magnets=3;biotech=2" var list/icon/current = list() //the current hud icons + proc process_hud(var/mob/M) return @@ -88,25 +89,28 @@ var/client/C = M.client var/icon/tempHud = 'hud.dmi' for(var/mob/living/carbon/human/perp in view(M)) + if(!C) continue + var/perpname = "wot" if(perp.wear_id) C.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]") - var/perpname = "wot" if(istype(perp.wear_id,/obj/item/weapon/card/id)) perpname = perp.wear_id:registered_name else if(istype(perp.wear_id,/obj/item/device/pda)) var/obj/item/device/pda/tempPda = perp.wear_id perpname = tempPda.owner - for (var/datum/data/record/E in data_core.general) - if (E.fields["name"] == perpname) - for (var/datum/data/record/R in data_core.security) - if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*")) - C.images += image(tempHud,perp,"hudwanted") - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated")) - C.images += image(tempHud,perp,"hudprisoner") - break else + perpname = perp.name C.images += image(tempHud,perp,"hudunknown") + + for (var/datum/data/record/E in data_core.general) + if (E.fields["name"] == perpname) + for (var/datum/data/record/R in data_core.security) + if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*")) + C.images += image(tempHud,perp,"hudwanted") + break + else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated")) + C.images += image(tempHud,perp,"hudprisoner") + break for(var/named in perp.organs) var/datum/organ/external/E = perp.organs[named] for(var/obj/item/weapon/implant/I in E.implant) @@ -116,3 +120,4 @@ if(istype(I,/obj/item/weapon/implant/loyalty)) C.images += image(tempHud,perp,"hud_imp_loyal") + diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 024bb726c99..8167317b46d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -524,6 +524,31 @@ // usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]." // continue + if(istype(usr, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = usr + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)) + var/perpname = "wot" + var/criminal = "None" + + if(wear_id) + if(istype(wear_id,/obj/item/weapon/card/id)) + perpname = wear_id:registered_name + else if(istype(wear_id,/obj/item/device/pda)) + var/obj/item/device/pda/tempPda = wear_id + perpname = tempPda.owner + else + perpname = src.name + + for (var/datum/data/record/E in data_core.general) + if (E.fields["name"] == perpname) + for (var/datum/data/record/R in data_core.security) + if (R.fields["id"] == E.fields["id"]) + criminal = R.fields["criminal"] + + + msg += "Criminal status: \[[criminal]\]\n" + //msg += "\[Set Hostile Identification\]\n" + if(print_flavor_text()) msg += "[print_flavor_text()]\n" msg += "\blue *---------*" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 39ba8fc0b17..9f88a62a75c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2582,6 +2582,40 @@ It can still be worn/put on as normal. spawn( 0 ) O.process() return + + if (href_list["criminal"]) + if(istype(usr, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = usr + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)) + var/perpname = "wot" + var/modified = 0 + + if(wear_id) + if(istype(wear_id,/obj/item/weapon/card/id)) + perpname = wear_id:registered_name + else if(istype(wear_id,/obj/item/device/pda)) + var/obj/item/device/pda/tempPda = wear_id + perpname = tempPda.owner + else + perpname = src.name + + for (var/datum/data/record/E in data_core.general) + if (E.fields["name"] == perpname) + for (var/datum/data/record/R in data_core.security) + if (R.fields["id"] == E.fields["id"]) + + var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel") + + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)) + if(setcriminal != "Cancel") + R.fields["criminal"] = setcriminal + modified = 1 + + spawn() + H.handle_regular_hud_updates() + + if(!modified) + usr << "\red Unable to locate a data core entry for this person." ..() return