diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index d37012519a6..1b870b45e32 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -223,10 +223,10 @@ var/bomb_set deployable = 1 return -/obj/machinery/nuclearbomb/proc/is_auth(user as mob) +/obj/machinery/nuclearbomb/proc/is_auth(var/mob/user) if(auth) return 1 - if(isobserver(user) && check_rights(R_ADMIN, 0, user)) + else if(user.can_admin_interact()) return 1 else return 0 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 83510cd8357..603d293dd55 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -821,8 +821,8 @@ ui.open() ui.set_auto_update(1) -/obj/machinery/alarm/proc/is_authenticated(mob/user as mob, href_list) - if(isobserver(user) && check_rights(R_ADMIN, 0, user)) +/obj/machinery/alarm/proc/is_authenticated(var/mob/user, href_list) + if(user.can_admin_interact()) return 1 else if(isAI(user) || isrobot(user) || emagged || is_auth_rcon(href_list)) return 1 diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index f8e177a32d8..d255e4837e6 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -50,8 +50,8 @@ var/time_last_changed_position = 0 /obj/machinery/computer/card/proc/is_centcom() return istype(src, /obj/machinery/computer/card/centcom) -/obj/machinery/computer/card/proc/is_authenticated(user as mob) - if(isobserver(user) && check_rights(R_ADMIN, 0, user)) +/obj/machinery/computer/card/proc/is_authenticated(var/mob/user) + if(user.can_admin_interact()) return 1 if(scan) return check_access(scan) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 19412baf4ae..207042aeb37 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -65,10 +65,10 @@ var/shuttle_call/shuttle_calls[0] ..() crew_announcement.newscast = 1 -/obj/machinery/computer/communications/proc/is_authenticated(user as mob, var/message = 1) +/obj/machinery/computer/communications/proc/is_authenticated(var/mob/user, var/message = 1) if(authenticated == 2) return 2 - else if(isobserver(user) && check_rights(R_ADMIN, 0, user)) + else if(user.can_admin_interact()) return 2 else if(authenticated) return 1 diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 87450ae699b..86f81d0a3b7 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -85,10 +85,6 @@ add_fingerprint(user) spawn(0) attack_self(user) - -/obj/item/device/radio/intercom/attack_ghost(mob/user as mob) - spawn(0) - attack_self(user) /obj/item/device/radio/intercom/attack_hand(mob/user as mob) add_fingerprint(user) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 29378d8a911..05cc51ca5ba 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -81,6 +81,9 @@ var/global/list/default_medbay_channels = list( for (var/ch_name in channels) secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) +/obj/item/device/radio/attack_ghost(mob/user) + interact(user) + /obj/item/device/radio/attack_self(mob/user as mob) user.set_machine(src) interact(user) @@ -140,18 +143,19 @@ var/global/list/default_medbay_channels = list( if(!(freq in internal_channels)) return 0 - - if(isobserver(user) && check_rights(R_ADMIN,0)) - return 1 - var/list/access = list() - if(issilicon(user)) - access = get_all_accesses() - else - var/obj/item/weapon/card/id/I = user.get_id_card() - if(istype(I)) - access = I.access - return has_access(list(), internal_channels[freq], access) + return user.has_internal_radio_channel_access(user, internal_channels[freq]) + +/mob/proc/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses) + var/obj/item/weapon/card/id/I = user.get_id_card() + return has_access(list(), req_one_accesses, I ? I.GetAccess() : list()) + +/mob/living/silicon/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses) + var/list/access = get_all_accesses() + return has_access(list(), req_one_accesses, access) + +/mob/dead/observer/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses) + return can_admin_interact() /obj/item/device/radio/proc/text_wires() if (b_stat) diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 4c40a9ef035..a4a27209d3b 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -14,8 +14,8 @@ light_color = LIGHT_COLOR_GREEN -/obj/machinery/computer/account_database/proc/get_access_level(user as mob) - if(isobserver(user) && check_rights(R_ADMIN, 0, user)) +/obj/machinery/computer/account_database/proc/get_access_level(var/mob/user) + if(user.can_admin_interact()) return 2 if (!held_card) return 0 diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 3c61d7c2f6e..17e67c89b8a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -517,9 +517,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << "\blue Temperature: [round(environment.temperature-T0C,0.1)]°C" src << "\blue Heat Capacity: [round(environment.heat_capacity(),0.1)]" - - -/mob/dead/observer/verb/view_manfiest() + +/mob/dead/observer/verb/view_manifest() set name = "View Crew Manifest" set category = "Ghost" @@ -638,4 +637,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp client.images |= ghost_darkness_images if (ghostimage) client.images -= ghostimage //remove ourself - \ No newline at end of file + +/mob/proc/can_admin_interact() + return 0 + +/mob/dead/observer/can_admin_interact() + return check_rights(R_ADMIN, 0, src) \ No newline at end of file diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm index a1498bf8189..deaae348d30 100644 --- a/code/modules/nano/interaction/default.dm +++ b/code/modules/nano/interaction/default.dm @@ -10,7 +10,7 @@ return STATUS_CLOSE // By default no mob can do anything with NanoUI /mob/dead/observer/default_can_use_topic() - if(check_rights(R_ADMIN, 0, src)) + if(can_admin_interact()) return STATUS_INTERACTIVE // Admins are more equal return STATUS_UPDATE // Ghosts can view updates diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index c399fe4e969..dd0fbd2fc7e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -836,8 +836,8 @@ return wires.IsIndexCut(wireIndex) -/obj/machinery/power/apc/proc/can_use(mob/user as mob, var/loud = 0) //used by attack_hand() and Topic() - if(isobserver(user) && check_rights(R_ADMIN, 0, user)) +/obj/machinery/power/apc/proc/can_use(var/mob/user, var/loud = 0) //used by attack_hand() and Topic() + if(user.can_admin_interact()) return 1 autoflag = 5 diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index eb6ff7e1400..24434b119df 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -14,7 +14,7 @@ return if(!allowed(user) && !isobserver(user)) - user << "Access Denied." + user << "Access denied." return 1 ui_interact(user)