mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Kills off /obj/item/device (#37297)
* Kills off /obj/item/device * whoops * whoops * Fix
This commit is contained in:
committed by
yogstation13-bot
parent
2a3b46ef43
commit
d42a67da02
@@ -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 ..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/modular_computer/proc/can_install_component(obj/item/computer_hardware/H, mob/living/user = null)
|
||||
/obj/item/modular_computer/proc/can_install_component(obj/item/computer_hardware/H, mob/living/user = null)
|
||||
if(!H.can_install(src, user))
|
||||
return FALSE
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
|
||||
// Installs component.
|
||||
/obj/item/device/modular_computer/proc/install_component(obj/item/computer_hardware/H, mob/living/user = null)
|
||||
/obj/item/modular_computer/proc/install_component(obj/item/computer_hardware/H, mob/living/user = null)
|
||||
if(!can_install_component(H, user))
|
||||
return FALSE
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
// Uninstalls component.
|
||||
/obj/item/device/modular_computer/proc/uninstall_component(obj/item/computer_hardware/H, mob/living/user = null)
|
||||
/obj/item/modular_computer/proc/uninstall_component(obj/item/computer_hardware/H, mob/living/user = null)
|
||||
if(H.holder != src) // Not our component at all.
|
||||
return FALSE
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
|
||||
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
|
||||
/obj/item/device/modular_computer/proc/find_hardware_by_name(name)
|
||||
/obj/item/modular_computer/proc/find_hardware_by_name(name)
|
||||
for(var/i in all_components)
|
||||
var/obj/O = all_components[i]
|
||||
if(O.name == name)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/modular_computer/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1)
|
||||
/obj/item/modular_computer/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1)
|
||||
. = ..()
|
||||
var/component_probability = min(50, max(damage_amount*0.1, 1 - obj_integrity/max_integrity))
|
||||
switch(damage_flag)
|
||||
@@ -13,10 +13,10 @@
|
||||
H.take_damage(round(damage_amount*0.5), damage_type, damage_flag, 0)
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/deconstruct(disassembled = TRUE)
|
||||
/obj/item/modular_computer/deconstruct(disassembled = TRUE)
|
||||
break_apart()
|
||||
|
||||
/obj/item/device/modular_computer/proc/break_apart()
|
||||
/obj/item/modular_computer/proc/break_apart()
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
physical.visible_message("\The [src] breaks apart!")
|
||||
var/turf/newloc = get_turf(src)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Tries to draw power from charger or, if no operational charger is present, from power cell.
|
||||
/obj/item/device/modular_computer/proc/use_power(amount = 0)
|
||||
/obj/item/modular_computer/proc/use_power(amount = 0)
|
||||
if(check_power_override())
|
||||
return TRUE
|
||||
|
||||
@@ -20,19 +20,19 @@
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/modular_computer/proc/give_power(amount)
|
||||
/obj/item/modular_computer/proc/give_power(amount)
|
||||
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
if(battery_module && battery_module.battery)
|
||||
return battery_module.battery.give(amount)
|
||||
return 0
|
||||
|
||||
/obj/item/device/modular_computer/get_cell()
|
||||
/obj/item/modular_computer/get_cell()
|
||||
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
if(battery_module && battery_module.battery)
|
||||
return battery_module.battery
|
||||
|
||||
// Used in following function to reduce copypaste
|
||||
/obj/item/device/modular_computer/proc/power_failure()
|
||||
/obj/item/modular_computer/proc/power_failure()
|
||||
if(enabled) // Shut down the computer
|
||||
if(active_program)
|
||||
active_program.event_powerfailure(0)
|
||||
@@ -42,7 +42,7 @@
|
||||
shutdown_computer(0)
|
||||
|
||||
// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
|
||||
/obj/item/device/modular_computer/proc/handle_power()
|
||||
/obj/item/modular_computer/proc/handle_power()
|
||||
var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
if(recharger)
|
||||
recharger.process()
|
||||
@@ -61,5 +61,5 @@
|
||||
return FALSE
|
||||
|
||||
// Used by child types if they have other power source than battery or recharger
|
||||
/obj/item/device/modular_computer/proc/check_power_override()
|
||||
/obj/item/modular_computer/proc/check_power_override()
|
||||
return FALSE
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/obj/item/device/modular_computer/attack_self(mob/user)
|
||||
/obj/item/modular_computer/attack_self(mob/user)
|
||||
. = ..()
|
||||
ui_interact(user)
|
||||
|
||||
// Operates TGUI
|
||||
/obj/item/device/modular_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
if(!enabled)
|
||||
if(ui)
|
||||
ui.close()
|
||||
@@ -43,7 +43,7 @@
|
||||
ui.set_autoupdate(state = 1)
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/ui_data(mob/user)
|
||||
/obj/item/modular_computer/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
data["programs"] = list()
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
|
||||
// Handles user's GUI input
|
||||
/obj/item/device/modular_computer/ui_act(action, params)
|
||||
/obj/item/modular_computer/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
@@ -159,7 +159,7 @@
|
||||
else
|
||||
return
|
||||
|
||||
/obj/item/device/modular_computer/ui_host()
|
||||
/obj/item/modular_computer/ui_host()
|
||||
if(physical)
|
||||
return physical
|
||||
return src
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/modular_computer/laptop
|
||||
/obj/item/modular_computer/laptop
|
||||
name = "laptop"
|
||||
desc = "A portable laptop computer."
|
||||
|
||||
@@ -21,38 +21,38 @@
|
||||
var/w_class_open = WEIGHT_CLASS_BULKY
|
||||
var/slowdown_open = TRUE
|
||||
|
||||
/obj/item/device/modular_computer/laptop/examine(mob/user)
|
||||
/obj/item/modular_computer/laptop/examine(mob/user)
|
||||
..()
|
||||
if(screen_on)
|
||||
to_chat(user, "<span class='notice'>Alt-click to close it.</span>")
|
||||
|
||||
/obj/item/device/modular_computer/laptop/Initialize()
|
||||
/obj/item/modular_computer/laptop/Initialize()
|
||||
. = ..()
|
||||
|
||||
if(start_open && !screen_on)
|
||||
toggle_open()
|
||||
|
||||
/obj/item/device/modular_computer/laptop/update_icon()
|
||||
/obj/item/modular_computer/laptop/update_icon()
|
||||
if(screen_on)
|
||||
..()
|
||||
else
|
||||
cut_overlays()
|
||||
icon_state = icon_state_closed
|
||||
|
||||
/obj/item/device/modular_computer/laptop/attack_self(mob/user)
|
||||
/obj/item/modular_computer/laptop/attack_self(mob/user)
|
||||
if(!screen_on)
|
||||
try_toggle_open(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/modular_computer/laptop/verb/open_computer()
|
||||
/obj/item/modular_computer/laptop/verb/open_computer()
|
||||
set name = "Toggle Open"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
try_toggle_open(usr)
|
||||
|
||||
/obj/item/device/modular_computer/laptop/MouseDrop(obj/over_object, src_location, over_location)
|
||||
/obj/item/modular_computer/laptop/MouseDrop(obj/over_object, src_location, over_location)
|
||||
. = ..()
|
||||
if(over_object == usr || over_object == src)
|
||||
try_toggle_open(usr)
|
||||
@@ -65,14 +65,14 @@
|
||||
return
|
||||
M.put_in_hand(src, H.held_index)
|
||||
|
||||
/obj/item/device/modular_computer/laptop/attack_hand(mob/user)
|
||||
/obj/item/modular_computer/laptop/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(screen_on && isturf(loc))
|
||||
return attack_self(user)
|
||||
|
||||
/obj/item/device/modular_computer/laptop/proc/try_toggle_open(mob/living/user)
|
||||
/obj/item/modular_computer/laptop/proc/try_toggle_open(mob/living/user)
|
||||
if(issilicon(user))
|
||||
return
|
||||
if(!isturf(loc) && !ismob(loc)) // No opening it in backpack.
|
||||
@@ -83,13 +83,13 @@
|
||||
toggle_open(user)
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/laptop/AltClick(mob/user)
|
||||
/obj/item/modular_computer/laptop/AltClick(mob/user)
|
||||
if(screen_on) // Close it.
|
||||
try_toggle_open(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/modular_computer/laptop/proc/toggle_open(mob/living/user=null)
|
||||
/obj/item/modular_computer/laptop/proc/toggle_open(mob/living/user=null)
|
||||
if(screen_on)
|
||||
to_chat(user, "<span class='notice'>You close \the [src].</span>")
|
||||
slowdown = initial(slowdown)
|
||||
@@ -105,5 +105,5 @@
|
||||
|
||||
|
||||
// Laptop frame, starts empty and closed.
|
||||
/obj/item/device/modular_computer/laptop/buildable
|
||||
/obj/item/modular_computer/laptop/buildable
|
||||
start_open = FALSE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/modular_computer/laptop/preset/Initialize()
|
||||
/obj/item/modular_computer/laptop/preset/Initialize()
|
||||
. = ..()
|
||||
install_component(new /obj/item/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/computer_hardware/battery(src, /obj/item/stock_parts/cell/computer))
|
||||
@@ -7,17 +7,17 @@
|
||||
install_programs()
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/laptop/preset/proc/install_programs()
|
||||
/obj/item/modular_computer/laptop/preset/proc/install_programs()
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/laptop/preset/civillian
|
||||
/obj/item/modular_computer/laptop/preset/civillian
|
||||
desc = "A low-end laptop often used for personal recreation."
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/laptop/preset/civillian/install_programs()
|
||||
/obj/item/modular_computer/laptop/preset/civillian/install_programs()
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
@@ -1,5 +1,5 @@
|
||||
// Held by /obj/machinery/modular_computer to reduce amount of copy-pasted code.
|
||||
/obj/item/device/modular_computer/processor
|
||||
/obj/item/modular_computer/processor
|
||||
name = "processing unit"
|
||||
desc = "You shouldn't see this. If you do, report it."
|
||||
icon = null
|
||||
@@ -10,17 +10,17 @@
|
||||
|
||||
var/obj/machinery/modular_computer/machinery_computer = null
|
||||
|
||||
/obj/item/device/modular_computer/processor/Destroy()
|
||||
/obj/item/modular_computer/processor/Destroy()
|
||||
. = ..()
|
||||
if(machinery_computer && (machinery_computer.cpu == src))
|
||||
machinery_computer.cpu = null
|
||||
machinery_computer = null
|
||||
|
||||
/obj/item/device/modular_computer/processor/New(comp)
|
||||
/obj/item/modular_computer/processor/New(comp)
|
||||
STOP_PROCESSING(SSobj, src) // Processed by its machine
|
||||
|
||||
if(!comp || !istype(comp, /obj/machinery/modular_computer))
|
||||
CRASH("Inapropriate type passed to obj/item/device/modular_computer/processor/New()! Aborting.")
|
||||
CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.")
|
||||
return
|
||||
// Obtain reference to machinery computer
|
||||
all_components = list()
|
||||
@@ -36,28 +36,28 @@
|
||||
base_active_power_usage = machinery_computer.base_active_power_usage
|
||||
base_idle_power_usage = machinery_computer.base_idle_power_usage
|
||||
|
||||
/obj/item/device/modular_computer/processor/relay_qdel()
|
||||
/obj/item/modular_computer/processor/relay_qdel()
|
||||
qdel(machinery_computer)
|
||||
|
||||
/obj/item/device/modular_computer/processor/update_icon()
|
||||
/obj/item/modular_computer/processor/update_icon()
|
||||
if(machinery_computer)
|
||||
return machinery_computer.update_icon()
|
||||
|
||||
// This thing is not meant to be used on it's own, get topic data from our machinery owner.
|
||||
//obj/item/device/modular_computer/processor/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE)
|
||||
//obj/item/modular_computer/processor/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE)
|
||||
// if(!machinery_computer)
|
||||
// return 0
|
||||
|
||||
// return machinery_computer.canUseTopic(user, state)
|
||||
|
||||
/obj/item/device/modular_computer/processor/shutdown_computer()
|
||||
/obj/item/modular_computer/processor/shutdown_computer()
|
||||
if(!machinery_computer)
|
||||
return
|
||||
..()
|
||||
machinery_computer.update_icon()
|
||||
return
|
||||
|
||||
/obj/item/device/modular_computer/processor/add_verb(path)
|
||||
/obj/item/modular_computer/processor/add_verb(path)
|
||||
switch(path)
|
||||
if(MC_CARD)
|
||||
machinery_computer.verbs += /obj/machinery/modular_computer/proc/eject_id
|
||||
@@ -66,7 +66,7 @@
|
||||
if(MC_AI)
|
||||
machinery_computer.verbs += /obj/machinery/modular_computer/proc/eject_card
|
||||
|
||||
/obj/item/device/modular_computer/processor/remove_verb(path)
|
||||
/obj/item/modular_computer/processor/remove_verb(path)
|
||||
switch(path)
|
||||
if(MC_CARD)
|
||||
machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_id
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/modular_computer/tablet //Its called tablet for theme of 90ies but actually its a "big smartphone" sized
|
||||
/obj/item/modular_computer/tablet //Its called tablet for theme of 90ies but actually its a "big smartphone" sized
|
||||
name = "tablet computer"
|
||||
icon = 'icons/obj/modular_tablet.dmi'
|
||||
icon_state = "tablet"
|
||||
@@ -14,7 +14,7 @@
|
||||
comp_light_luminosity = 2.3 //Same as the PDA
|
||||
var/finish_color = null
|
||||
|
||||
/obj/item/device/modular_computer/tablet/update_icon()
|
||||
/obj/item/modular_computer/tablet/update_icon()
|
||||
..()
|
||||
if(!finish_color)
|
||||
finish_color = pick("red","blue","brown","green","black")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
// This is literally the worst possible cheap tablet
|
||||
/obj/item/device/modular_computer/tablet/preset/cheap
|
||||
/obj/item/modular_computer/tablet/preset/cheap
|
||||
desc = "A low-end tablet often seen among low ranked station personnel."
|
||||
|
||||
/obj/item/device/modular_computer/tablet/preset/cheap/Initialize()
|
||||
/obj/item/modular_computer/tablet/preset/cheap/Initialize()
|
||||
. = ..()
|
||||
install_component(new /obj/item/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/computer_hardware/battery(src, /obj/item/stock_parts/cell/computer/micro))
|
||||
@@ -11,7 +11,7 @@
|
||||
install_component(new /obj/item/computer_hardware/network_card)
|
||||
|
||||
// Alternative version, an average one, for higher ranked positions mostly
|
||||
/obj/item/device/modular_computer/tablet/preset/advanced/Initialize()
|
||||
/obj/item/modular_computer/tablet/preset/advanced/Initialize()
|
||||
. = ..()
|
||||
install_component(new /obj/item/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/computer_hardware/battery(src, /obj/item/stock_parts/cell/computer))
|
||||
@@ -20,7 +20,7 @@
|
||||
install_component(new /obj/item/computer_hardware/card_slot)
|
||||
install_component(new /obj/item/computer_hardware/printer/mini)
|
||||
|
||||
/obj/item/device/modular_computer/tablet/preset/cargo/Initialize()
|
||||
/obj/item/modular_computer/tablet/preset/cargo/Initialize()
|
||||
. = ..()
|
||||
install_component(new /obj/item/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/computer_hardware/battery(src, /obj/item/stock_parts/cell/computer))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
var/base_active_power_usage = 100 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
|
||||
var/base_idle_power_usage = 10 // Power usage when the computer is idle and screen is off (currently only applies to laptops)
|
||||
|
||||
var/obj/item/device/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things.
|
||||
var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things.
|
||||
|
||||
/obj/machinery/modular_computer/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/required_access = null // List of required accesses to *run* the program.
|
||||
var/transfer_access = null // List of required access to download or file host the program
|
||||
var/program_state = PROGRAM_STATE_KILLED// PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running.
|
||||
var/obj/item/device/modular_computer/computer // Device that runs this program.
|
||||
var/obj/item/modular_computer/computer // Device that runs this program.
|
||||
var/filedesc = "Unknown Program" // User-friendly name of this program.
|
||||
var/extended_desc = "N/A" // Short description of this program's function.
|
||||
var/program_icon_state = null // Program-specific screen icon state
|
||||
@@ -22,7 +22,7 @@
|
||||
var/ui_y = 700
|
||||
var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images!
|
||||
|
||||
/datum/computer_file/program/New(obj/item/device/modular_computer/comp = null)
|
||||
/datum/computer_file/program/New(obj/item/modular_computer/comp = null)
|
||||
..()
|
||||
if(comp && istype(comp))
|
||||
computer = comp
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
..()
|
||||
if(!restoring) //Put the check here so we don't check for an ai all the time
|
||||
return
|
||||
var/obj/item/device/aicard/cardhold = get_ai(2)
|
||||
var/obj/item/aicard/cardhold = get_ai(2)
|
||||
|
||||
var/obj/item/computer_hardware/ai_slot/ai_slot = get_ai(1)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
// A shortcut for getting the AI stored inside the computer. The program already does necessary checks.
|
||||
AI = get_ai()
|
||||
|
||||
var/obj/item/device/aicard/aicard = get_ai(2)
|
||||
var/obj/item/aicard/aicard = get_ai(2)
|
||||
|
||||
if(!aicard)
|
||||
data["nocard"] = TRUE
|
||||
@@ -103,7 +103,7 @@
|
||||
if(!AI)
|
||||
data["error"] = "No AI located"
|
||||
else
|
||||
var/obj/item/device/aicard/cardhold = AI.loc
|
||||
var/obj/item/aicard/cardhold = AI.loc
|
||||
if(cardhold.flush)
|
||||
data["error"] = "Flush in progress"
|
||||
else
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
requires_ntnet = 0
|
||||
tgui_id = "ntos_configuration"
|
||||
|
||||
var/obj/item/device/modular_computer/movable = null
|
||||
var/obj/item/modular_computer/movable = null
|
||||
|
||||
|
||||
/datum/computer_file/program/computerconfig/ui_data(mob/user)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/download_completion = 0 //GQ of downloaded data.
|
||||
var/download_netspeed = 0
|
||||
var/downloaderror = ""
|
||||
var/obj/item/device/modular_computer/my_computer = null
|
||||
var/obj/item/modular_computer/my_computer = null
|
||||
|
||||
/datum/computer_file/program/ntnetdownload/proc/begin_file_download(filename)
|
||||
if(downloaded_file)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/max_idle_programs = 2 // 2 idle, + 1 active = 3 as said in description.
|
||||
device_type = MC_CPU
|
||||
|
||||
/obj/item/computer_hardware/processor_unit/on_remove(obj/item/device/modular_computer/MC, mob/user)
|
||||
/obj/item/computer_hardware/processor_unit/on_remove(obj/item/modular_computer/MC, mob/user)
|
||||
MC.shutdown_computer()
|
||||
|
||||
/obj/item/computer_hardware/processor_unit/small
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
w_class = WEIGHT_CLASS_TINY // w_class limits which devices can contain this component.
|
||||
// 1: PDAs/Tablets, 2: Laptops, 3-4: Consoles only
|
||||
var/obj/item/device/modular_computer/holder = null
|
||||
var/obj/item/modular_computer/holder = null
|
||||
// Computer that holds this hardware, if any.
|
||||
|
||||
var/power_usage = 0 // If the hardware uses extra power, change this.
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
/obj/item/computer_hardware/attackby(obj/item/I, mob/living/user)
|
||||
// Multitool. Runs diagnostics
|
||||
if(istype(I, /obj/item/device/multitool))
|
||||
if(istype(I, /obj/item/multitool))
|
||||
to_chat(user, "***** DIAGNOSTICS REPORT *****")
|
||||
diagnostics(user)
|
||||
to_chat(user, "******************************")
|
||||
@@ -83,15 +83,15 @@
|
||||
to_chat(user, "<span class='notice'>It seems to be slightly damaged.</span>")
|
||||
|
||||
// Component-side compatibility check.
|
||||
/obj/item/computer_hardware/proc/can_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/can_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
return can_install
|
||||
|
||||
// Called when component is installed into PC.
|
||||
/obj/item/computer_hardware/proc/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/on_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
return
|
||||
|
||||
// Called when component is removed from PC.
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/modular_computer/M, mob/living/user = null)
|
||||
try_eject(forced = 1)
|
||||
|
||||
// Called when someone tries to insert something in it - paper in printer, card in card reader, etc.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
device_type = MC_AI
|
||||
|
||||
var/obj/item/device/aicard/stored_card = null
|
||||
var/obj/item/aicard/stored_card = null
|
||||
var/locked = FALSE
|
||||
|
||||
|
||||
@@ -15,17 +15,17 @@
|
||||
if(stored_card)
|
||||
to_chat(user, "There appears to be an intelliCard loaded. There appears to be a pinhole protecting a manual eject button. A screwdriver could probably press it.")
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/ai_slot/on_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/ai_slot/on_remove(obj/item/modular_computer/M, mob/living/user = null)
|
||||
M.remove_verb(device_type)
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
return FALSE
|
||||
|
||||
if(!istype(I, /obj/item/device/aicard))
|
||||
if(!istype(I, /obj/item/aicard))
|
||||
return FALSE
|
||||
|
||||
if(stored_card)
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
return stored_card2
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/card_slot/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/card_slot/on_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/computer_hardware/card_slot/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/card_slot/on_remove(obj/item/modular_computer/M, mob/living/user = null)
|
||||
M.remove_verb(device_type)
|
||||
|
||||
/obj/item/computer_hardware/card_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/used_capacity = 0
|
||||
var/list/stored_files = list() // List of stored files on this drive. DO NOT MODIFY DIRECTLY!
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/on_remove(obj/item/device/modular_computer/MC, mob/user)
|
||||
/obj/item/computer_hardware/hard_drive/on_remove(obj/item/modular_computer/MC, mob/user)
|
||||
MC.shutdown_computer()
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/proc/install_default_programs()
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
max_capacity = 16
|
||||
device_type = MC_SDD
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/hard_drive/portable/on_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/hard_drive/portable/on_remove(obj/item/modular_computer/M, mob/living/user = null)
|
||||
..()
|
||||
M.remove_verb(device_type)
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
icon_state = "charger_wire"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/computer_hardware/recharger/wired/can_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/recharger/wired/can_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
if(ismachinery(M.physical) && M.physical.anchored)
|
||||
return ..()
|
||||
to_chat(user, "<span class='warning'>\The [src] is incompatible with portable computers!</span>")
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
density = TRUE
|
||||
|
||||
// The actual laptop/tablet
|
||||
var/obj/item/device/modular_computer/laptop/fabricated_laptop = null
|
||||
var/obj/item/device/modular_computer/tablet/fabricated_tablet = null
|
||||
var/obj/item/modular_computer/laptop/fabricated_laptop = null
|
||||
var/obj/item/modular_computer/tablet/fabricated_tablet = null
|
||||
|
||||
// Utility vars
|
||||
var/state = 0 // 0: Select device type, 1: Select loadout, 2: Payment, 3: Thankyou screen
|
||||
@@ -52,7 +52,7 @@
|
||||
if(devtype == 1) // Laptop, generally cheaper to make it accessible for most station roles
|
||||
var/obj/item/computer_hardware/battery/battery_module = null
|
||||
if(fabricate)
|
||||
fabricated_laptop = new /obj/item/device/modular_computer/laptop/buildable(src)
|
||||
fabricated_laptop = new /obj/item/modular_computer/laptop/buildable(src)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/battery)
|
||||
battery_module = fabricated_laptop.all_components[MC_CELL]
|
||||
total_price = 99
|
||||
|
||||
Reference in New Issue
Block a user