diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 8d99276354a..9e16d3f3b29 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -179,7 +179,7 @@ return - else if (istype(user, /mob/living/silicon) && src.aidisabled) + else if (user.has_unlimited_silicon_privilege && src.aidisabled) user << "AI control for this Air Alarm interface has been disabled." user << browse(null, "window=air_alarm") return @@ -248,11 +248,10 @@ /obj/machinery/alarm/proc/return_text() var/dat = "" - if(!(istype(usr, /mob/living/silicon)) && locked) - dat += "
Swipe ID card to unlock interface
" + dat += "
Swipe ID card to [locked ? "unlock" : "lock"] interface.
" + if(!usr.has_unlimited_silicon_privilege && locked) dat += "[return_status()]" else - dat += "
Swipe ID card to lock interface
" dat += "[return_status()]
[return_controls()]" return dat @@ -564,7 +563,7 @@ table tr:first-child th:first-child { border: none;} var/datum/tlv/tlv = TLV[env] var/newval = input("Enter [varname] for env", "Alarm triggers", tlv.vars[varname]) as num|null - if (isnull(newval) || ..() || (locked && !issilicon(usr))) + if (isnull(newval) || ..() || (locked && !(usr.has_unlimited_silicon_privilege))) return if (newval<0) tlv.vars[varname] = -1.0 @@ -1108,7 +1107,7 @@ FIRE ALARM var/d1 var/d2 var/dat = "" - if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon)) + if (istype(user, /mob/living/carbon/human) || user.has_unlimited_silicon_privilege) A = A.loc if (A.fire) @@ -1281,7 +1280,7 @@ Code shamelessly copied from apc_frame var/area/A = src.loc var/d1 var/dat - if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) + if (istype(user, /mob/living/carbon/human) || user.has_unlimited_silicon_privilege) A = A.loc if (A.party) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index f95e9b011dd..9830904022d 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -7,34 +7,6 @@ slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") - -/obj/item/weapon/storage/belt/proc/can_use() - if(!ismob(loc)) return 0 - var/mob/M = loc - if(src in M.get_equipped_items()) - return 1 - else - return 0 - - -/obj/item/weapon/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location) - var/mob/M = usr - if(!istype(over_object, /obj/screen)) - return ..() - playsound(src.loc, "rustle", 50, 1, -5) - if (!M.restrained() && !M.stat && can_use()) - switch(over_object.name) - if("r_hand") - M.unEquip(src) - M.put_in_r_hand(src) - if("l_hand") - M.unEquip(src) - M.put_in_l_hand(src) - src.add_fingerprint(usr) - return - - - /obj/item/weapon/storage/belt/utility name = "toolbelt" //Carn: utility belt is nicer, but it bamboozles the text parsing. desc = "Holds tools." diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index e34c3d3620a..9c33619bfbf 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -2,6 +2,7 @@ gender = NEUTER voice_name = "synthesized voice" languages = ROBOT | HUMAN + has_unlimited_silicon_privilege = 1 var/syndicate = 0 var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS var/list/alarms_to_show = list() diff --git a/code/modules/mob/living/simple_animal/friendly/drone.dm b/code/modules/mob/living/simple_animal/friendly/drone.dm index 118b1b7de46..48912230a76 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone.dm @@ -30,6 +30,7 @@ voice_name = "synthesized chirp" languages = DRONE mob_size = 0 + has_unlimited_silicon_privilege = 1 var/picked = FALSE var/list/drone_overlays[TOTAL_LAYERS] var/laws = \ diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6543d5e223b..9e60f9b85ab 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -155,6 +155,8 @@ var/digitalcamo = 0 // Can they be tracked by the AI? + var/has_unlimited_silicon_privilege = 0 // Can they interact with station electronics + var/list/radar_blips = list() // list of screen objects, radar blips var/radar_open = 0 // nonzero is radar is open diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index daf29f7888f..35ddd5458c7 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -690,7 +690,7 @@ "chargingStatus" = charging, "totalLoad" = lastused_equip + lastused_light + lastused_environ, "coverLocked" = coverlocked, - "siliconUser" = istype(user, /mob/living/silicon), + "siliconUser" = user.has_unlimited_silicon_privilege, "malfStatus" = get_malf_status(user), "powerChannels" = list( @@ -778,7 +778,7 @@ if(user.lying) user << "You must stand to use [src]!" return 0 - if (istype(user, /mob/living/silicon)) + if(user.has_unlimited_silicon_privilege) var/mob/living/silicon/ai/AI = user var/mob/living/silicon/robot/robot = user if ( \ @@ -844,7 +844,7 @@ update() else if (href_list["overload"]) - if(istype(usr, /mob/living/silicon)) + if(usr.has_unlimited_silicon_privilege) src.overload_lighting() else if (href_list["malfhack"]) @@ -881,7 +881,7 @@ malfvacate() else if (href_list["toggleaccess"]) - if(istype(usr, /mob/living/silicon)) + if(usr.has_unlimited_silicon_privilege) if(emagged || (stat & (BROKEN|MAINT))) usr << "The APC does not respond to the command." else