frontend
This commit is contained in:
@@ -4,22 +4,34 @@
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "std_mod"
|
||||
|
||||
w_class = WEIGHT_CLASS_TINY // w_class limits which devices can contain this component.
|
||||
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/modular_computer/holder = null
|
||||
// Computer that holds this hardware, if any.
|
||||
|
||||
var/power_usage = 0 // If the hardware uses extra power, change this.
|
||||
var/enabled = TRUE // If the hardware is turned off set this to 0.
|
||||
var/critical = FALSE // Prevent disabling for important component, like the CPU.
|
||||
var/can_install = TRUE // Prevents direct installation of removable media.
|
||||
var/expansion_hw = FALSE // Hardware that fits into expansion bays.
|
||||
var/removable = TRUE // Whether the hardware is removable or not.
|
||||
var/damage = 0 // Current damage level
|
||||
var/max_damage = 100 // Maximal damage level.
|
||||
var/damage_malfunction = 20 // "Malfunction" threshold. When damage exceeds this value the hardware piece will semi-randomly fail and do !!FUN!! things
|
||||
var/damage_failure = 50 // "Failure" threshold. When damage exceeds this value the hardware piece will not work at all.
|
||||
var/malfunction_probability = 10// Chance of malfunction when the component is damaged
|
||||
// If the hardware uses extra power, change this.
|
||||
var/power_usage = 0
|
||||
// If the hardware is turned off set this to 0.
|
||||
var/enabled = TRUE
|
||||
// Prevent disabling for important component, like the CPU.
|
||||
var/critical = FALSE
|
||||
// Prevents direct installation of removable media.
|
||||
var/can_install = TRUE
|
||||
// Hardware that fits into expansion bays.
|
||||
var/expansion_hw = FALSE
|
||||
// Whether the hardware is removable or not.
|
||||
var/removable = TRUE
|
||||
// Current damage level
|
||||
var/damage = 0
|
||||
// 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
|
||||
var/damage_malfunction = 20
|
||||
// "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
|
||||
var/malfunction_probability = 10
|
||||
// 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)
|
||||
@@ -38,10 +50,10 @@
|
||||
if(istype(I, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/S = I
|
||||
if(obj_integrity == max_integrity)
|
||||
to_chat(user, "<span class='warning'>\The [src] doesn't seem to require repairs.</span>")
|
||||
to_chat(user, span_warning("\The [src] doesn't seem to require repairs."))
|
||||
return 1
|
||||
if(S.use(1))
|
||||
to_chat(user, "<span class='notice'>You patch up \the [src] with a bit of \the [I].</span>")
|
||||
to_chat(user, span_notice("You patch up \the [src] with a bit of \the [I]."))
|
||||
obj_integrity = min(obj_integrity + 10, max_integrity)
|
||||
return 1
|
||||
|
||||
@@ -78,11 +90,11 @@
|
||||
/obj/item/computer_hardware/examine(mob/user)
|
||||
. = ..()
|
||||
if(damage > damage_failure)
|
||||
. += "<span class='danger'>It seems to be severely damaged!</span>"
|
||||
. += span_danger("It seems to be severely damaged!")
|
||||
else if(damage > damage_malfunction)
|
||||
. += "<span class='warning'>It seems to be damaged!</span>"
|
||||
. += span_warning("It seems to be damaged!")
|
||||
else if(damage)
|
||||
. += "<span class='notice'>It seems to be slightly damaged.</span>"
|
||||
. += 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)
|
||||
@@ -93,8 +105,9 @@
|
||||
return
|
||||
|
||||
// Called when component is removed from PC.
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/modular_computer/M, mob/living/user = null)
|
||||
try_eject(forced = TRUE)
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/modular_computer/M, mob/living/user)
|
||||
if(M.physical || !QDELETED(M))
|
||||
try_eject(forced = TRUE)
|
||||
|
||||
// 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)
|
||||
|
||||
@@ -7,13 +7,14 @@
|
||||
device_type = MC_AI
|
||||
expansion_hw = TRUE
|
||||
|
||||
var/obj/item/aicard/stored_card = null
|
||||
var/obj/item/aicard/stored_card
|
||||
var/locked = FALSE
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/handle_atom_del(atom/A)
|
||||
if(A == stored_card)
|
||||
try_eject(forced = TRUE)
|
||||
. = ..()
|
||||
///What happens when the intellicard is removed (or deleted) from the module, through try_eject() or not.
|
||||
/obj/item/computer_hardware/ai_slot/Exited(atom/movable/gone, direction)
|
||||
if(stored_card == gone)
|
||||
stored_card = null
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -28,34 +29,33 @@
|
||||
return FALSE
|
||||
|
||||
if(stored_card)
|
||||
to_chat(user, "<span class='warning'>You try to insert \the [I] into \the [src], but the slot is occupied.</span>")
|
||||
to_chat(user, span_warning("You try to insert \the [I] into \the [src], but the slot is occupied."))
|
||||
return FALSE
|
||||
if(user && !user.transferItemToLoc(I, src))
|
||||
return FALSE
|
||||
|
||||
stored_card = I
|
||||
to_chat(user, "<span class='notice'>You insert \the [I] into \the [src].</span>")
|
||||
to_chat(user, span_notice("You insert \the [I] into \the [src]."))
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/try_eject(mob/living/user = null, forced = FALSE)
|
||||
if(!stored_card)
|
||||
to_chat(user, "<span class='warning'>There is no card in \the [src].</span>")
|
||||
to_chat(user, span_warning("There is no card in \the [src]."))
|
||||
return FALSE
|
||||
|
||||
if(locked && !forced)
|
||||
to_chat(user, "<span class='warning'>Safeties prevent you from removing the card until reconstruction is complete...</span>")
|
||||
to_chat(user, span_warning("Safeties prevent you from removing the card until reconstruction is complete..."))
|
||||
return FALSE
|
||||
|
||||
if(stored_card)
|
||||
to_chat(user, "<span class='notice'>You remove [stored_card] from [src].</span>")
|
||||
to_chat(user, span_notice("You remove [stored_card] from [src]."))
|
||||
locked = FALSE
|
||||
if(user)
|
||||
if(Adjacent(user))
|
||||
user.put_in_hands(stored_card)
|
||||
else
|
||||
stored_card.forceMove(drop_location())
|
||||
stored_card = null
|
||||
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -64,6 +64,6 @@
|
||||
if(..())
|
||||
return
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
to_chat(user, "<span class='notice'>You press down on the manual eject button with \the [I].</span>")
|
||||
to_chat(user, span_notice("You press down on the manual eject button with \the [I]."))
|
||||
try_eject(user, TRUE)
|
||||
return
|
||||
|
||||
@@ -4,25 +4,28 @@
|
||||
icon_state = "cell_con"
|
||||
critical = 1
|
||||
malfunction_probability = 1
|
||||
var/obj/item/stock_parts/cell/battery = null
|
||||
var/obj/item/stock_parts/cell/battery
|
||||
device_type = MC_CELL
|
||||
|
||||
/obj/item/computer_hardware/battery/get_cell()
|
||||
return battery
|
||||
|
||||
/obj/item/computer_hardware/battery/New(loc, battery_type = null)
|
||||
/obj/item/computer_hardware/battery/Initialize(mapload, battery_type)
|
||||
. = ..()
|
||||
if(battery_type)
|
||||
battery = new battery_type(src)
|
||||
..()
|
||||
|
||||
/obj/item/computer_hardware/battery/Destroy()
|
||||
. = ..()
|
||||
QDEL_NULL(battery)
|
||||
battery = null
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/battery/handle_atom_del(atom/A)
|
||||
if(A == battery)
|
||||
try_eject(forced = TRUE)
|
||||
. = ..()
|
||||
///What happens when the battery is removed (or deleted) from the module, through try_eject() or not.
|
||||
/obj/item/computer_hardware/battery/Exited(atom/movable/gone, direction)
|
||||
if(battery == gone)
|
||||
battery = null
|
||||
if(holder?.enabled && !holder.use_power())
|
||||
holder.shutdown_computer()
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/battery/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
@@ -32,46 +35,33 @@
|
||||
return FALSE
|
||||
|
||||
if(battery)
|
||||
to_chat(user, "<span class='warning'>You try to connect \the [I] to \the [src], but its connectors are occupied.</span>")
|
||||
to_chat(user, span_warning("You try to connect \the [I] to \the [src], but its connectors are occupied."))
|
||||
return FALSE
|
||||
|
||||
if(I.w_class > holder.max_hardware_size)
|
||||
to_chat(user, "<span class='warning'>This power cell is too large for \the [holder]!</span>")
|
||||
to_chat(user, span_warning("This power cell is too large for \the [holder]!"))
|
||||
return FALSE
|
||||
|
||||
if(user && !user.transferItemToLoc(I, src))
|
||||
return FALSE
|
||||
|
||||
battery = I
|
||||
to_chat(user, "<span class='notice'>You connect \the [I] to \the [src].</span>")
|
||||
to_chat(user, span_notice("You connect \the [I] to \the [src]."))
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/computer_hardware/battery/try_eject(mob/living/user = null, forced = FALSE)
|
||||
/obj/item/computer_hardware/battery/try_eject(mob/living/user, forced = FALSE)
|
||||
if(!battery)
|
||||
to_chat(user, "<span class='warning'>There is no power cell connected to \the [src].</span>")
|
||||
to_chat(user, span_warning("There is no power cell connected to \the [src]."))
|
||||
return FALSE
|
||||
else
|
||||
if(user)
|
||||
user.put_in_hands(battery)
|
||||
to_chat(user, span_notice("You detach \the [battery] from \the [src]."))
|
||||
else
|
||||
battery.forceMove(drop_location())
|
||||
to_chat(user, "<span class='notice'>You detach \the [battery] from \the [src].</span>")
|
||||
battery = null
|
||||
|
||||
if(holder)
|
||||
if(holder.enabled && !holder.use_power())
|
||||
holder.shutdown_computer()
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/stock_parts/cell/computer
|
||||
name = "standard battery"
|
||||
desc = "A standard power cell, commonly seen in high-end portable microcomputers or low-end laptops."
|
||||
@@ -80,7 +70,6 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
maxcharge = 750
|
||||
|
||||
|
||||
/obj/item/stock_parts/cell/computer/advanced
|
||||
name = "advanced battery"
|
||||
desc = "An advanced power cell, often used in most laptops. It is too large to be fitted into smaller devices."
|
||||
|
||||
@@ -1,17 +1,31 @@
|
||||
/obj/item/computer_hardware/card_slot
|
||||
name = "primary RFID card module" // \improper breaks the find_hardware_by_name proc
|
||||
name = "primary RFID card module" // \improper breaks the find_hardware_by_name proc
|
||||
desc = "A module allowing this computer to read or write data on ID cards. Necessary for some programs to run properly."
|
||||
power_usage = 10 //W
|
||||
icon_state = "card_mini"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
device_type = MC_CARD
|
||||
|
||||
var/obj/item/card/id/stored_card = null
|
||||
var/obj/item/card/id/stored_card
|
||||
|
||||
/obj/item/computer_hardware/card_slot/handle_atom_del(atom/A)
|
||||
if(A == stored_card)
|
||||
try_eject(null, TRUE)
|
||||
. = ..()
|
||||
///What happens when the ID card is removed (or deleted) from the module, through try_eject() or not.
|
||||
/obj/item/computer_hardware/card_slot/Exited(atom/movable/gone, direction)
|
||||
if(stored_card == gone)
|
||||
stored_card = null
|
||||
if(holder)
|
||||
if(holder.active_program)
|
||||
holder.active_program.event_idremoved(0)
|
||||
for(var/p in holder.idle_threads)
|
||||
var/datum/computer_file/program/computer_program = p
|
||||
computer_program.event_idremoved(1)
|
||||
|
||||
holder.update_slot_icon()
|
||||
|
||||
if(ishuman(holder.loc))
|
||||
var/mob/living/carbon/human/human_wearer = holder.loc
|
||||
if(human_wearer.wear_id == holder)
|
||||
human_wearer.sec_hud_set_ID()
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/card_slot/Destroy()
|
||||
try_eject(forced = TRUE)
|
||||
@@ -47,6 +61,11 @@
|
||||
|
||||
if(stored_card)
|
||||
return FALSE
|
||||
|
||||
// item instead of player is checked so telekinesis will still work if the item itself is close
|
||||
if(!in_range(src, I))
|
||||
return FALSE
|
||||
|
||||
if(user)
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
return FALSE
|
||||
@@ -54,38 +73,32 @@
|
||||
I.forceMove(src)
|
||||
|
||||
stored_card = I
|
||||
to_chat(user, "<span class='notice'>You insert \the [I] into \the [expansion_hw ? "secondary":"primary"] [src].</span>")
|
||||
to_chat(user, span_notice("You insert \the [I] into \the [expansion_hw ? "secondary":"primary"] [src]."))
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.sec_hud_set_ID()
|
||||
|
||||
var/holder_loc = holder.loc
|
||||
if(ishuman(holder_loc))
|
||||
var/mob/living/carbon/human/human_wearer = holder_loc
|
||||
if(human_wearer.wear_id == holder)
|
||||
human_wearer.sec_hud_set_ID()
|
||||
holder.update_slot_icon()
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/computer_hardware/card_slot/try_eject(mob/living/user = null, forced = FALSE)
|
||||
if(!stored_card)
|
||||
to_chat(user, "<span class='warning'>There are no cards in \the [src].</span>")
|
||||
to_chat(user, span_warning("There are no cards in \the [src]."))
|
||||
return FALSE
|
||||
|
||||
if(user)
|
||||
if(user && !issilicon(user) && in_range(src, user))
|
||||
user.put_in_hands(stored_card)
|
||||
else
|
||||
stored_card.forceMove(drop_location())
|
||||
stored_card = null
|
||||
|
||||
if(holder)
|
||||
if(holder.active_program)
|
||||
holder.active_program.event_idremoved(0)
|
||||
|
||||
for(var/p in holder.idle_threads)
|
||||
var/datum/computer_file/program/computer_program = p
|
||||
computer_program.event_idremoved(1)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human_user = user
|
||||
human_user.sec_hud_set_ID()
|
||||
to_chat(user, "<span class='notice'>You remove the card from \the [src].</span>")
|
||||
to_chat(user, span_notice("You remove the card from \the [src]."))
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/item/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user)
|
||||
@@ -93,11 +106,11 @@
|
||||
return
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
if(stored_card)
|
||||
to_chat(user, "<span class='notice'>You press down on the manual eject button with \the [I].</span>")
|
||||
to_chat(user, span_notice("You press down on the manual eject button with \the [I]."))
|
||||
try_eject(user)
|
||||
return
|
||||
swap_slot()
|
||||
to_chat(user, "<span class='notice'>You adjust the connecter to fit into [expansion_hw ? "an expansion bay" : "the primary ID bay"].</span>")
|
||||
to_chat(user, span_notice("You adjust the connecter to fit into [expansion_hw ? "an expansion bay" : "the primary ID bay"]."))
|
||||
|
||||
/**
|
||||
*Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay.
|
||||
|
||||
@@ -8,19 +8,19 @@
|
||||
device_type = MC_HDD
|
||||
var/max_capacity = 128
|
||||
var/used_capacity = 0
|
||||
var/list/stored_files = list() // List of stored files on this drive. DO NOT MODIFY DIRECTLY!
|
||||
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/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
|
||||
store_file(new/datum/computer_file/program/ntnetdownload(src)) // NTNet Downloader Utility, allows users to download more software from NTNet repository
|
||||
store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation.
|
||||
store_file(new/datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar
|
||||
store_file(new/datum/computer_file/program/ntnetdownload(src)) // NTNet Downloader Utility, allows users to download more software from NTNet repository
|
||||
store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation.
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/examine(user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>It has [max_capacity] GQ of storage capacity.</span>"
|
||||
. += span_notice("It has [max_capacity] GQ of storage capacity.")
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/diagnostics(mob/user)
|
||||
..()
|
||||
@@ -117,7 +117,7 @@
|
||||
return null
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/Destroy()
|
||||
stored_files = null
|
||||
QDEL_LIST(stored_files)
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/Initialize()
|
||||
@@ -129,7 +129,7 @@
|
||||
name = "advanced hard disk drive"
|
||||
desc = "A hybrid HDD, for use in higher grade computers where balance between power efficiency and capacity is desired."
|
||||
max_capacity = 256
|
||||
power_usage = 50 // Hybrid, medium capacity and medium power storage
|
||||
power_usage = 50 // Hybrid, medium capacity and medium power storage
|
||||
icon_state = "harddisk_mini"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
name = "super hard disk drive"
|
||||
desc = "A high capacity HDD, for use in cluster storage solutions where capacity is more important than power efficiency."
|
||||
max_capacity = 512
|
||||
power_usage = 100 // High-capacity but uses lots of power, shortening battery life. Best used with APC link.
|
||||
power_usage = 100 // High-capacity but uses lots of power, shortening battery life. Best used with APC link.
|
||||
icon_state = "harddisk_mini"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
@@ -161,8 +161,8 @@
|
||||
|
||||
// For borg integrated tablets. No downloader.
|
||||
/obj/item/computer_hardware/hard_drive/small/integrated/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
|
||||
store_file(new /datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation.
|
||||
store_file(new /datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar
|
||||
store_file(new /datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation.
|
||||
store_file(new /datum/computer_file/program/robotact(src))
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
desc = "A basic wireless network card for usage with standard NTNet frequencies."
|
||||
power_usage = 50
|
||||
icon_state = "radio_mini"
|
||||
var/identification_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user.
|
||||
var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user.
|
||||
// network_id = NETWORK_CARDS // Network we are on
|
||||
var/hardware_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user.
|
||||
var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user.
|
||||
var/long_range = 0
|
||||
var/ethernet = 0 // Hard-wired, therefore always on, ignores NTNet wireless checks.
|
||||
malfunction_probability = 1
|
||||
@@ -13,7 +14,7 @@
|
||||
|
||||
/obj/item/computer_hardware/network_card/diagnostics(mob/user)
|
||||
..()
|
||||
to_chat(user, "NIX Unique ID: [identification_id]")
|
||||
to_chat(user, "NIX Unique ID: [hardware_id]")
|
||||
to_chat(user, "NIX User Tag: [identification_string]")
|
||||
to_chat(user, "Supported protocols:")
|
||||
to_chat(user, "511.m SFS (Subspace) - Standard Frequency Spread")
|
||||
@@ -24,11 +25,11 @@
|
||||
|
||||
/obj/item/computer_hardware/network_card/New(l)
|
||||
..()
|
||||
identification_id = ntnet_card_uid++
|
||||
hardware_id = ntnet_card_uid++
|
||||
|
||||
// Returns a string identifier of this network card
|
||||
/obj/item/computer_hardware/network_card/proc/get_network_tag()
|
||||
return "[identification_string] (NID [identification_id])"
|
||||
return "[identification_string] (NID [hardware_id])"
|
||||
|
||||
// 0 - No signal, 1 - Low signal, 2 - High signal. 3 - Wired Connection
|
||||
/obj/item/computer_hardware/network_card/proc/get_signal(specific_action = 0)
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
|
||||
/obj/item/computer_hardware/printer/diagnostics(mob/living/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Paper level: [stored_paper]/[max_paper].</span>")
|
||||
to_chat(user, span_notice("Paper level: [stored_paper]/[max_paper]."))
|
||||
|
||||
/obj/item/computer_hardware/printer/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Paper level: [stored_paper]/[max_paper].</span>"
|
||||
. += span_notice("Paper level: [stored_paper]/[max_paper].")
|
||||
|
||||
|
||||
/obj/item/computer_hardware/printer/proc/print_text(text_to_print, paper_title = "")
|
||||
@@ -33,7 +33,7 @@
|
||||
P.info = text_to_print
|
||||
if(paper_title)
|
||||
P.name = paper_title
|
||||
P.update_icon()
|
||||
P.update_appearance()
|
||||
stored_paper--
|
||||
P = null
|
||||
return TRUE
|
||||
@@ -41,12 +41,12 @@
|
||||
/obj/item/computer_hardware/printer/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(istype(I, /obj/item/paper))
|
||||
if(stored_paper >= max_paper)
|
||||
to_chat(user, "<span class='warning'>You try to add \the [I] into [src], but its paper bin is full!</span>")
|
||||
to_chat(user, span_warning("You try to add \the [I] into [src], but its paper bin is full!"))
|
||||
return FALSE
|
||||
|
||||
if(user && !user.temporarilyRemoveItemFromInventory(I))
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You insert \the [I] into [src]'s paper recycler.</span>")
|
||||
to_chat(user, span_notice("You insert \the [I] into [src]'s paper recycler."))
|
||||
qdel(I)
|
||||
stored_paper++
|
||||
return TRUE
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
/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>")
|
||||
to_chat(user, span_warning("\The [src] is incompatible with portable computers!"))
|
||||
return FALSE
|
||||
|
||||
/obj/item/computer_hardware/recharger/wired/use_power(amount, charging=0)
|
||||
@@ -96,3 +96,4 @@
|
||||
|
||||
/obj/item/computer_hardware/recharger/lambda/use_power(amount, charging=0)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -6,3 +6,12 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
device_type = MC_SENSORS
|
||||
expansion_hw = TRUE
|
||||
|
||||
/obj/item/computer_hardware/radio_card
|
||||
name = "integrated radio card"
|
||||
desc = "An integrated signaling assembly for computers to send an outgoing frequency signal. Required by certain programs."
|
||||
icon_state = "signal_card"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
device_type = MC_SIGNALER
|
||||
expansion_hw = TRUE
|
||||
power_usage = 10
|
||||
|
||||
Reference in New Issue
Block a user