mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
Fixes some stupid behavior in computer hardware code. (#61350)
This commit is contained in:
@@ -12,8 +12,8 @@
|
||||
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/modular_computer/MC, mob/user)
|
||||
MC.shutdown_computer()
|
||||
/obj/item/computer_hardware/processor_unit/on_remove(obj/item/modular_computer/remove_from, mob/user)
|
||||
remove_from.shutdown_computer()
|
||||
|
||||
/obj/item/computer_hardware/processor_unit/small
|
||||
name = "microprocessor"
|
||||
|
||||
@@ -9,29 +9,29 @@
|
||||
var/obj/item/modular_computer/holder = null
|
||||
// Computer that holds this hardware, if any.
|
||||
|
||||
// If the hardware uses extra power, change this.
|
||||
/// If the hardware uses extra power, change this.
|
||||
var/power_usage = 0
|
||||
// If the hardware is turned off set this to 0.
|
||||
/// If the hardware is turned off set this to 0.
|
||||
var/enabled = TRUE
|
||||
// Prevent disabling for important component, like the CPU.
|
||||
/// Prevent disabling for important component, like the CPU.
|
||||
var/critical = FALSE
|
||||
// Prevents direct installation of removable media.
|
||||
/// Prevents direct installation of removable media.
|
||||
var/can_install = TRUE
|
||||
// Hardware that fits into expansion bays.
|
||||
/// Hardware that fits into expansion bays.
|
||||
var/expansion_hw = FALSE
|
||||
// Whether the hardware is removable or not.
|
||||
/// Whether the hardware is removable or not.
|
||||
var/removable = TRUE
|
||||
// Current damage level
|
||||
/// Current damage level
|
||||
var/damage = 0
|
||||
// Maximal damage level.
|
||||
// Maximal damage level.
|
||||
var/max_damage = 100
|
||||
// "Malfunction" threshold. When damage exceeds this value the hardware piece will semi-randomly fail and do !!FUN!! things
|
||||
/// "Malfunction" threshold. When damage exceeds this value the hardware piece will semi-randomly fail and do !!FUN!! things
|
||||
var/damage_malfunction = 20
|
||||
// "Failure" threshold. When damage exceeds this value the hardware piece will not work at all.
|
||||
/// "Failure" threshold. When damage exceeds this value the hardware piece will not work at all.
|
||||
var/damage_failure = 50
|
||||
// Chance of malfunction when the component is damaged
|
||||
/// Chance of malfunction when the component is damaged
|
||||
var/malfunction_probability = 10
|
||||
// What define is used to qualify this piece of hardware? Important for upgraded versions of the same hardware.
|
||||
/// What define is used to qualify this piece of hardware? Important for upgraded versions of the same hardware.
|
||||
var/device_type
|
||||
|
||||
/obj/item/computer_hardware/New(obj/L)
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
/obj/item/computer_hardware/Destroy()
|
||||
if(holder)
|
||||
holder.uninstall_component(src)
|
||||
holder.forget_component(src)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -69,11 +69,11 @@
|
||||
to_chat(user, "******************************")
|
||||
return TRUE
|
||||
|
||||
// Called on multitool click, prints diagnostic information to the user.
|
||||
/// Called on multitool click, prints diagnostic information to the user.
|
||||
/obj/item/computer_hardware/proc/diagnostics(mob/user)
|
||||
to_chat(user, "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]")
|
||||
|
||||
// Handles damage checks
|
||||
/// Handles damage checks
|
||||
/obj/item/computer_hardware/proc/check_functionality()
|
||||
if(!enabled) // Disabled.
|
||||
return FALSE
|
||||
@@ -96,20 +96,20 @@
|
||||
else if(damage)
|
||||
. += span_notice("It seems to be slightly damaged.")
|
||||
|
||||
// Component-side compatibility check.
|
||||
/obj/item/computer_hardware/proc/can_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
/// Component-side compatibility check.
|
||||
/obj/item/computer_hardware/proc/can_install(obj/item/modular_computer/install_into, mob/living/user = null)
|
||||
return can_install
|
||||
|
||||
// Called when component is installed into PC.
|
||||
/obj/item/computer_hardware/proc/on_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
/// Called when component is installed into PC.
|
||||
/obj/item/computer_hardware/proc/on_install(obj/item/modular_computer/install_into, mob/living/user = null)
|
||||
return
|
||||
|
||||
// Called when component is removed from PC.
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/modular_computer/M, mob/living/user)
|
||||
if(M.physical || !QDELETED(M))
|
||||
/// Called when component is removed from PC.
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/modular_computer/remove_from, mob/living/user)
|
||||
if(remove_from.physical && !QDELETED(remove_from) && !QDELETED(src))
|
||||
try_eject(forced = TRUE)
|
||||
|
||||
// Called when someone tries to insert something in it - paper in printer, card in card reader, etc.
|
||||
/// Called when someone tries to insert something in it - paper in printer, card in card reader, etc.
|
||||
/obj/item/computer_hardware/proc/try_insert(obj/item/I, mob/living/user = null)
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
battery = new battery_type(src)
|
||||
|
||||
/obj/item/computer_hardware/battery/Destroy()
|
||||
battery = null
|
||||
if(battery)
|
||||
QDEL_NULL(battery)
|
||||
return ..()
|
||||
|
||||
///What happens when the battery is removed (or deleted) from the module, through try_eject() or not.
|
||||
|
||||
@@ -28,7 +28,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/card_slot/Destroy()
|
||||
try_eject(forced = TRUE)
|
||||
if(stored_card) //If you didn't expect this behavior for some dumb reason, do something different instead of directly destroying the slot
|
||||
QDEL_NULL(stored_card)
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/card_slot/GetAccess()
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
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/modular_computer/MC, mob/user)
|
||||
MC.shutdown_computer()
|
||||
/obj/item/computer_hardware/hard_drive/on_remove(obj/item/modular_computer/remove_from, mob/user)
|
||||
remove_from.shutdown_computer()
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/proc/install_default_programs()
|
||||
store_file(new/datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
max_capacity = 16
|
||||
device_type = MC_SDD
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/on_remove(obj/item/modular_computer/MC, mob/user)
|
||||
/obj/item/computer_hardware/hard_drive/portable/on_remove(obj/item/modular_computer/remove_from, mob/user)
|
||||
return //this is a floppy disk, let's not shut the computer down when it gets pulled out.
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/install_default_programs()
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
icon_state = "charger_wire"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/computer_hardware/recharger/wired/can_install(obj/item/modular_computer/M, mob/living/user = null)
|
||||
if(ismachinery(M.physical) && M.physical.anchored)
|
||||
/obj/item/computer_hardware/recharger/wired/can_install(obj/item/modular_computer/install_into, mob/living/user = null)
|
||||
if(ismachinery(install_into.physical) && install_into.physical.anchored)
|
||||
return ..()
|
||||
to_chat(user, span_warning("\The [src] is incompatible with portable computers!"))
|
||||
return FALSE
|
||||
|
||||
Reference in New Issue
Block a user