Kills off /obj/item/device (#6561)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
// This is the base type that does all the hardware stuff.
|
||||
// Other types expand it - tablets use a direct subtypes, and
|
||||
// consoles and laptops use "procssor" item that is held inside machinery piece
|
||||
/obj/item/device/modular_computer
|
||||
/obj/item/modular_computer
|
||||
name = "modular microcomputer"
|
||||
desc = "A small portable microcomputer."
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
var/comp_light_color //The color of that light
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/Initialize()
|
||||
/obj/item/modular_computer/Initialize()
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(!physical)
|
||||
@@ -56,7 +56,7 @@
|
||||
idle_threads = list()
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/modular_computer/Destroy()
|
||||
/obj/item/modular_computer/Destroy()
|
||||
kill_program(forced = TRUE)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
for(var/H in all_components)
|
||||
@@ -70,26 +70,26 @@
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/proc/add_verb(var/path)
|
||||
/obj/item/modular_computer/proc/add_verb(var/path)
|
||||
switch(path)
|
||||
if(MC_CARD)
|
||||
verbs += /obj/item/device/modular_computer/proc/eject_id
|
||||
verbs += /obj/item/modular_computer/proc/eject_id
|
||||
if(MC_SDD)
|
||||
verbs += /obj/item/device/modular_computer/proc/eject_disk
|
||||
verbs += /obj/item/modular_computer/proc/eject_disk
|
||||
if(MC_AI)
|
||||
verbs += /obj/item/device/modular_computer/proc/eject_card
|
||||
verbs += /obj/item/modular_computer/proc/eject_card
|
||||
|
||||
/obj/item/device/modular_computer/proc/remove_verb(path)
|
||||
/obj/item/modular_computer/proc/remove_verb(path)
|
||||
switch(path)
|
||||
if(MC_CARD)
|
||||
verbs -= /obj/item/device/modular_computer/proc/eject_id
|
||||
verbs -= /obj/item/modular_computer/proc/eject_id
|
||||
if(MC_SDD)
|
||||
verbs -= /obj/item/device/modular_computer/proc/eject_disk
|
||||
verbs -= /obj/item/modular_computer/proc/eject_disk
|
||||
if(MC_AI)
|
||||
verbs -= /obj/item/device/modular_computer/proc/eject_card
|
||||
verbs -= /obj/item/modular_computer/proc/eject_card
|
||||
|
||||
// Eject ID card from computer, if it has ID slot with card inside.
|
||||
/obj/item/device/modular_computer/proc/eject_id()
|
||||
/obj/item/modular_computer/proc/eject_id()
|
||||
set name = "Eject ID"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
@@ -101,7 +101,7 @@
|
||||
card_slot.try_eject(null, usr)
|
||||
|
||||
// Eject ID card from computer, if it has ID slot with card inside.
|
||||
/obj/item/device/modular_computer/proc/eject_card()
|
||||
/obj/item/modular_computer/proc/eject_card()
|
||||
set name = "Eject Intellicard"
|
||||
set category = "Object"
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
|
||||
// Eject ID card from computer, if it has ID slot with card inside.
|
||||
/obj/item/device/modular_computer/proc/eject_disk()
|
||||
/obj/item/modular_computer/proc/eject_disk()
|
||||
set name = "Eject Data Disk"
|
||||
set category = "Object"
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
if(uninstall_component(portable_drive, usr))
|
||||
portable_drive.verb_pickup()
|
||||
|
||||
/obj/item/device/modular_computer/AltClick(mob/user)
|
||||
/obj/item/modular_computer/AltClick(mob/user)
|
||||
..()
|
||||
if(issilicon(user))
|
||||
return
|
||||
@@ -145,28 +145,28 @@
|
||||
|
||||
|
||||
// Gets IDs/access levels from card slot. Would be useful when/if PDAs would become modular PCs.
|
||||
/obj/item/device/modular_computer/GetAccess()
|
||||
/obj/item/modular_computer/GetAccess()
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
if(card_slot)
|
||||
return card_slot.GetAccess()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/modular_computer/GetID()
|
||||
/obj/item/modular_computer/GetID()
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
if(card_slot)
|
||||
return card_slot.GetID()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/modular_computer/MouseDrop(obj/over_object, src_location, over_location)
|
||||
/obj/item/modular_computer/MouseDrop(obj/over_object, src_location, over_location)
|
||||
var/mob/M = usr
|
||||
if((!istype(over_object, /obj/screen)) && usr.canUseTopic(src))
|
||||
return attack_self(M)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/modular_computer/attack_ai(mob/user)
|
||||
/obj/item/modular_computer/attack_ai(mob/user)
|
||||
return attack_self(user)
|
||||
|
||||
/obj/item/device/modular_computer/attack_ghost(mob/dead/observer/user)
|
||||
/obj/item/modular_computer/attack_ghost(mob/dead/observer/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
@@ -177,7 +177,7 @@
|
||||
if(response == "Yes")
|
||||
turn_on(user)
|
||||
|
||||
/obj/item/device/modular_computer/emag_act(mob/user)
|
||||
/obj/item/modular_computer/emag_act(mob/user)
|
||||
if(obj_flags & EMAGGED)
|
||||
to_chat(user, "<span class='warning'>\The [src] was already emagged.</span>")
|
||||
return 0
|
||||
@@ -186,14 +186,14 @@
|
||||
to_chat(user, "<span class='notice'>You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message.</span>")
|
||||
return 1
|
||||
|
||||
/obj/item/device/modular_computer/examine(mob/user)
|
||||
/obj/item/modular_computer/examine(mob/user)
|
||||
..()
|
||||
if(obj_integrity <= integrity_failure)
|
||||
to_chat(user, "<span class='danger'>It is heavily damaged!</span>")
|
||||
else if(obj_integrity < max_integrity)
|
||||
to_chat(user, "<span class='warning'>It is damaged.</span>")
|
||||
|
||||
/obj/item/device/modular_computer/update_icon()
|
||||
/obj/item/modular_computer/update_icon()
|
||||
cut_overlays()
|
||||
if(!enabled)
|
||||
icon_state = icon_state_unpowered
|
||||
@@ -210,13 +210,13 @@
|
||||
|
||||
|
||||
// On-click handling. Turns on the computer if it's off and opens the GUI.
|
||||
/obj/item/device/modular_computer/interact(mob/user)
|
||||
/obj/item/modular_computer/interact(mob/user)
|
||||
if(enabled)
|
||||
ui_interact(user)
|
||||
else
|
||||
turn_on(user)
|
||||
|
||||
/obj/item/device/modular_computer/proc/turn_on(mob/user)
|
||||
/obj/item/modular_computer/proc/turn_on(mob/user)
|
||||
var/issynth = issilicon(user) // Robots and AIs get different activation messages.
|
||||
if(obj_integrity <= integrity_failure)
|
||||
if(issynth)
|
||||
@@ -245,7 +245,7 @@
|
||||
to_chat(user, "<span class='warning'>You press the power button but \the [src] does not respond.</span>")
|
||||
|
||||
// Process currently calls handle_power(), may be expanded in future if more things are added.
|
||||
/obj/item/device/modular_computer/process()
|
||||
/obj/item/modular_computer/process()
|
||||
if(!enabled) // The computer is turned off
|
||||
last_power_usage = 0
|
||||
return 0
|
||||
@@ -281,7 +281,7 @@
|
||||
//check_update_ui_need()
|
||||
|
||||
// Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_"
|
||||
/obj/item/device/modular_computer/proc/get_header_data()
|
||||
/obj/item/modular_computer/proc/get_header_data()
|
||||
var/list/data = list()
|
||||
|
||||
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
@@ -339,7 +339,7 @@
|
||||
return data
|
||||
|
||||
// Relays kill program request to currently active program. Use this to quit current program.
|
||||
/obj/item/device/modular_computer/proc/kill_program(forced = FALSE)
|
||||
/obj/item/modular_computer/proc/kill_program(forced = FALSE)
|
||||
if(active_program)
|
||||
active_program.kill_program(forced)
|
||||
active_program = null
|
||||
@@ -349,20 +349,20 @@
|
||||
update_icon()
|
||||
|
||||
// Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on)
|
||||
/obj/item/device/modular_computer/proc/get_ntnet_status(specific_action = 0)
|
||||
/obj/item/modular_computer/proc/get_ntnet_status(specific_action = 0)
|
||||
var/obj/item/computer_hardware/network_card/network_card = all_components[MC_NET]
|
||||
if(network_card)
|
||||
return network_card.get_signal(specific_action)
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/device/modular_computer/proc/add_log(text)
|
||||
/obj/item/modular_computer/proc/add_log(text)
|
||||
if(!get_ntnet_status())
|
||||
return FALSE
|
||||
var/obj/item/computer_hardware/network_card/network_card = all_components[MC_NET]
|
||||
return SSnetworks.station_network.add_log(text, network_card)
|
||||
|
||||
/obj/item/device/modular_computer/proc/shutdown_computer(loud = 1)
|
||||
/obj/item/modular_computer/proc/shutdown_computer(loud = 1)
|
||||
kill_program(forced = TRUE)
|
||||
for(var/datum/computer_file/program/P in idle_threads)
|
||||
P.kill_program(forced = TRUE)
|
||||
@@ -373,7 +373,7 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/attackby(obj/item/W as obj, mob/user as mob)
|
||||
/obj/item/modular_computer/attackby(obj/item/W as obj, mob/user as mob)
|
||||
// Insert items into the components
|
||||
for(var/h in all_components)
|
||||
var/obj/item/computer_hardware/H = all_components[h]
|
||||
@@ -437,11 +437,11 @@
|
||||
..()
|
||||
|
||||
// Used by processor to relay qdel() to machinery type.
|
||||
/obj/item/device/modular_computer/proc/relay_qdel()
|
||||
/obj/item/modular_computer/proc/relay_qdel()
|
||||
return
|
||||
|
||||
// Perform adjacency checks on our physical counterpart, if any.
|
||||
/obj/item/device/modular_computer/Adjacent(atom/neighbor)
|
||||
/obj/item/modular_computer/Adjacent(atom/neighbor)
|
||||
if(physical && physical != src)
|
||||
return physical.Adjacent(neighbor)
|
||||
return ..()
|
||||
|
||||
Reference in New Issue
Block a user