here we go again (#2456)
This commit is contained in:
@@ -35,7 +35,7 @@ GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new)
|
||||
add_log("NTNet logging system activated.")
|
||||
|
||||
// Simplified logging: Adds a log. log_string is mandatory parameter, source is optional.
|
||||
/datum/ntnet/proc/add_log(log_string, obj/item/weapon/computer_hardware/network_card/source = null)
|
||||
/datum/ntnet/proc/add_log(log_string, obj/item/computer_hardware/network_card/source = null)
|
||||
var/log_text = "[worldtime2text()] - "
|
||||
if(source)
|
||||
log_text += "[source.get_network_tag()] - "
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
icon_state = "bus"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
circuit = /obj/item/weapon/circuitboard/machine/ntnet_relay
|
||||
circuit = /obj/item/circuitboard/machine/ntnet_relay
|
||||
var/datum/ntnet/NTNet = null // This is mostly for backwards reference and to allow varedit modifications from ingame.
|
||||
var/enabled = 1 // Set to 0 if the relay was turned off
|
||||
var/dos_failure = 0 // Set to 1 if the relay failed due to (D)DoS attack
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
kill_program(forced = TRUE)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
for(var/H in all_components)
|
||||
var/obj/item/weapon/computer_hardware/CH = all_components[H]
|
||||
var/obj/item/computer_hardware/CH = all_components[H]
|
||||
if(CH.holder == src)
|
||||
CH.on_remove(src)
|
||||
CH.holder = null
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
if(issilicon(usr))
|
||||
return
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
if(usr.canUseTopic(src))
|
||||
card_slot.try_eject(null, usr)
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
if(issilicon(usr))
|
||||
return
|
||||
var/obj/item/weapon/computer_hardware/ai_slot/ai_slot = all_components[MC_AI]
|
||||
var/obj/item/computer_hardware/ai_slot/ai_slot = all_components[MC_AI]
|
||||
if(usr.canUseTopic(src))
|
||||
ai_slot.try_eject(null, usr,1)
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
return
|
||||
|
||||
if(usr.canUseTopic(src))
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
|
||||
var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
|
||||
if(uninstall_component(portable_drive, usr))
|
||||
portable_drive.verb_pickup()
|
||||
|
||||
@@ -132,9 +132,9 @@
|
||||
return
|
||||
|
||||
if(user.canUseTopic(src))
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
var/obj/item/weapon/computer_hardware/ai_slot/ai_slot = all_components[MC_AI]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
var/obj/item/computer_hardware/ai_slot/ai_slot = all_components[MC_AI]
|
||||
var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
|
||||
if(portable_drive)
|
||||
if(uninstall_component(portable_drive, user))
|
||||
portable_drive.verb_pickup()
|
||||
@@ -147,13 +147,13 @@
|
||||
|
||||
// Gets IDs/access levels from card slot. Would be useful when/if PDAs would become modular PCs.
|
||||
/obj/item/device/modular_computer/GetAccess()
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
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()
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
|
||||
if(card_slot)
|
||||
return card_slot.GetID()
|
||||
return ..()
|
||||
@@ -224,7 +224,7 @@
|
||||
return
|
||||
|
||||
// If we have a recharger, enable it automatically. Lets computer without a battery work.
|
||||
var/obj/item/weapon/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
if(recharger)
|
||||
recharger.enabled = 1
|
||||
|
||||
@@ -282,8 +282,8 @@
|
||||
/obj/item/device/modular_computer/proc/get_header_data()
|
||||
var/list/data = list()
|
||||
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
var/obj/item/weapon/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
|
||||
if(battery_module && battery_module.battery)
|
||||
switch(battery_module.battery.percent())
|
||||
@@ -348,7 +348,7 @@
|
||||
|
||||
// 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)
|
||||
var/obj/item/weapon/computer_hardware/network_card/network_card = all_components[MC_NET]
|
||||
var/obj/item/computer_hardware/network_card/network_card = all_components[MC_NET]
|
||||
if(network_card)
|
||||
return network_card.get_signal(specific_action)
|
||||
else
|
||||
@@ -357,7 +357,7 @@
|
||||
/obj/item/device/modular_computer/proc/add_log(text)
|
||||
if(!get_ntnet_status())
|
||||
return FALSE
|
||||
var/obj/item/weapon/computer_hardware/network_card/network_card = all_components[MC_NET]
|
||||
var/obj/item/computer_hardware/network_card/network_card = all_components[MC_NET]
|
||||
return GLOB.ntnet_global.add_log(text, network_card)
|
||||
|
||||
/obj/item/device/modular_computer/proc/shutdown_computer(loud = 1)
|
||||
@@ -371,19 +371,19 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/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/weapon/computer_hardware/H = all_components[h]
|
||||
var/obj/item/computer_hardware/H = all_components[h]
|
||||
if(H.try_insert(W, user))
|
||||
return
|
||||
|
||||
// Insert new hardware
|
||||
if(istype(W, /obj/item/weapon/computer_hardware))
|
||||
if(istype(W, /obj/item/computer_hardware))
|
||||
if(install_component(W, user))
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(istype(W, /obj/item/wrench))
|
||||
if(all_components.len)
|
||||
to_chat(user, "<span class='warning'>Remove all components from \the [src] before disassembling it.</span>")
|
||||
return
|
||||
@@ -393,8 +393,8 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(!WT.isOn())
|
||||
to_chat(user, "<span class='warning'>\The [W] is off.</span>")
|
||||
return
|
||||
@@ -410,13 +410,13 @@
|
||||
to_chat(user, "<span class='notice'>You repair \the [src].</span>")
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
if(!all_components.len)
|
||||
to_chat(user, "<span class='warning'>This device doesn't have any components installed.</span>")
|
||||
return
|
||||
var/list/component_names = list()
|
||||
for(var/h in all_components)
|
||||
var/obj/item/weapon/computer_hardware/H = all_components[h]
|
||||
var/obj/item/computer_hardware/H = all_components[h]
|
||||
component_names.Add(H.name)
|
||||
|
||||
var/choice = input(user, "Which component do you want to uninstall?", "Computer maintenance", null) as null|anything in component_names
|
||||
@@ -427,7 +427,7 @@
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
|
||||
var/obj/item/weapon/computer_hardware/H = find_hardware_by_name(choice)
|
||||
var/obj/item/computer_hardware/H = find_hardware_by_name(choice)
|
||||
|
||||
if(!H)
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/modular_computer/proc/can_install_component(obj/item/weapon/computer_hardware/H, mob/living/user = null)
|
||||
/obj/item/device/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/weapon/computer_hardware/H, mob/living/user = null)
|
||||
/obj/item/device/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/weapon/computer_hardware/H, mob/living/user = null)
|
||||
/obj/item/device/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
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
component_probability = damage_amount * 0.66
|
||||
if(component_probability)
|
||||
for(var/I in all_components)
|
||||
var/obj/item/weapon/computer_hardware/H = all_components[I]
|
||||
var/obj/item/computer_hardware/H = all_components[I]
|
||||
if(prob(component_probability))
|
||||
H.take_damage(round(damage_amount*0.5), damage_type, damage_flag, 0)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/turf/newloc = get_turf(src)
|
||||
new /obj/item/stack/sheet/metal(newloc, round(steel_sheet_cost/2))
|
||||
for(var/C in all_components)
|
||||
var/obj/item/weapon/computer_hardware/H = all_components[C]
|
||||
var/obj/item/computer_hardware/H = all_components[C]
|
||||
uninstall_component(H)
|
||||
H.forceMove(newloc)
|
||||
if(prob(25))
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
if(check_power_override())
|
||||
return TRUE
|
||||
|
||||
var/obj/item/weapon/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
|
||||
if(recharger && recharger.check_functionality())
|
||||
if(recharger.use_power(amount))
|
||||
return TRUE
|
||||
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
|
||||
if(battery_module && battery_module.battery && battery_module.battery.charge)
|
||||
var/obj/item/weapon/stock_parts/cell/cell = battery_module.battery
|
||||
var/obj/item/stock_parts/cell/cell = battery_module.battery
|
||||
if(cell.use(amount * GLOB.CELLRATE))
|
||||
return TRUE
|
||||
else // Discharge the cell anyway.
|
||||
@@ -21,13 +21,13 @@
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/modular_computer/proc/give_power(amount)
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
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()
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL]
|
||||
if(battery_module && battery_module.battery)
|
||||
return battery_module.battery
|
||||
|
||||
@@ -43,13 +43,13 @@
|
||||
|
||||
// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
|
||||
/obj/item/device/modular_computer/proc/handle_power()
|
||||
var/obj/item/weapon/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
|
||||
if(recharger)
|
||||
recharger.process()
|
||||
|
||||
var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage
|
||||
|
||||
for(var/obj/item/weapon/computer_hardware/H in all_components)
|
||||
for(var/obj/item/computer_hardware/H in all_components)
|
||||
if(H.enabled)
|
||||
power_usage += H.power_usage
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
// We are still here, that means there is no program loaded. Load the BIOS/ROM/OS/whatever you want to call it.
|
||||
// This screen simply lists available programs and user may select them.
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len)
|
||||
to_chat(user, "<span class='danger'>\The [src] beeps three times, it's screen displaying a \"DISK ERROR\" warning.</span>")
|
||||
return // No HDD, No HDD files list or no stored files. Something is very broken.
|
||||
@@ -42,7 +42,7 @@
|
||||
/obj/item/device/modular_computer/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
data["programs"] = list()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
for(var/datum/computer_file/program/P in hard_drive.stored_files)
|
||||
var/running = 0
|
||||
if(P in idle_threads)
|
||||
@@ -60,7 +60,7 @@
|
||||
/obj/item/device/modular_computer/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
switch(action)
|
||||
if("PC_exit")
|
||||
kill_program()
|
||||
@@ -118,7 +118,7 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
var/obj/item/weapon/computer_hardware/processor_unit/PU = all_components[MC_CPU]
|
||||
var/obj/item/computer_hardware/processor_unit/PU = all_components[MC_CPU]
|
||||
|
||||
if(idle_threads.len > PU.max_idle_programs)
|
||||
to_chat(user, "<span class='danger'>\The [src] displays a \"Maximal CPU load reached. Unable to run another program.\" error.</span>")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/obj/item/device/modular_computer/laptop/preset/New()
|
||||
. = ..()
|
||||
install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/battery(src, /obj/item/weapon/stock_parts/cell/computer))
|
||||
install_component(new /obj/item/weapon/computer_hardware/hard_drive)
|
||||
install_component(new /obj/item/weapon/computer_hardware/network_card)
|
||||
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))
|
||||
install_component(new /obj/item/computer_hardware/hard_drive)
|
||||
install_component(new /obj/item/computer_hardware/network_card)
|
||||
install_programs()
|
||||
|
||||
|
||||
@@ -18,6 +18,6 @@
|
||||
|
||||
|
||||
/obj/item/device/modular_computer/laptop/preset/civillian/install_programs()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
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())
|
||||
@@ -5,25 +5,25 @@
|
||||
|
||||
/obj/item/device/modular_computer/tablet/preset/cheap/New()
|
||||
. = ..()
|
||||
install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/battery(src, /obj/item/weapon/stock_parts/cell/computer/micro))
|
||||
install_component(new /obj/item/weapon/computer_hardware/hard_drive/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/network_card)
|
||||
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))
|
||||
install_component(new /obj/item/computer_hardware/hard_drive/small)
|
||||
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/New()
|
||||
. = ..()
|
||||
install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/battery(src, /obj/item/weapon/stock_parts/cell/computer))
|
||||
install_component(new /obj/item/weapon/computer_hardware/hard_drive/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/network_card)
|
||||
install_component(new /obj/item/weapon/computer_hardware/card_slot)
|
||||
install_component(new /obj/item/weapon/computer_hardware/printer/mini)
|
||||
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))
|
||||
install_component(new /obj/item/computer_hardware/hard_drive/small)
|
||||
install_component(new /obj/item/computer_hardware/network_card)
|
||||
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/New()
|
||||
. = ..()
|
||||
install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/battery(src, /obj/item/weapon/stock_parts/cell/computer))
|
||||
install_component(new /obj/item/weapon/computer_hardware/hard_drive/small)
|
||||
install_component(new /obj/item/weapon/computer_hardware/network_card)
|
||||
install_component(new /obj/item/weapon/computer_hardware/printer/mini)
|
||||
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))
|
||||
install_component(new /obj/item/computer_hardware/hard_drive/small)
|
||||
install_component(new /obj/item/computer_hardware/network_card)
|
||||
install_component(new /obj/item/computer_hardware/printer/mini)
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
. = ..()
|
||||
if(!cpu)
|
||||
return
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/processor_unit)
|
||||
cpu.install_component(new /obj/item/computer_hardware/processor_unit)
|
||||
|
||||
if(_has_id_slot)
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/card_slot)
|
||||
cpu.install_component(new /obj/item/computer_hardware/card_slot)
|
||||
if(_has_printer)
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/printer)
|
||||
cpu.install_component(new /obj/item/computer_hardware/printer)
|
||||
if(_has_battery)
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/battery(cpu, /obj/item/weapon/stock_parts/cell/computer/super))
|
||||
cpu.install_component(new /obj/item/computer_hardware/battery(cpu, /obj/item/stock_parts/cell/computer/super))
|
||||
if(_has_ai)
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/ai_slot)
|
||||
cpu.install_component(new /obj/item/computer_hardware/ai_slot)
|
||||
install_programs()
|
||||
|
||||
// Override in child types to install preset-specific programs.
|
||||
@@ -33,7 +33,7 @@
|
||||
desc = "A stationary computer. This one comes preloaded with engineering programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/engineering/install_programs()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
hard_drive.store_file(new/datum/computer_file/program/power_monitor())
|
||||
hard_drive.store_file(new/datum/computer_file/program/alarm_monitor())
|
||||
hard_drive.store_file(new/datum/computer_file/program/supermatter_monitor())
|
||||
@@ -45,7 +45,7 @@
|
||||
_has_ai = 1
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/research/install_programs()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor())
|
||||
hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
@@ -60,7 +60,7 @@
|
||||
_has_printer = 1
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/command/install_programs()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
hard_drive.store_file(new/datum/computer_file/program/card_mod())
|
||||
|
||||
@@ -70,6 +70,6 @@
|
||||
desc = "A stationary computer. This one comes preloaded with generic programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/civilian/install_programs()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
// Used in following function to reduce copypaste
|
||||
/obj/machinery/modular_computer/proc/power_failure(malfunction = 0)
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL]
|
||||
if(cpu && cpu.enabled) // Shut down the computer
|
||||
visible_message("<span class='danger'>\The [src]'s screen flickers [battery_module ? "\"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.</span>")
|
||||
if(cpu)
|
||||
@@ -124,7 +124,7 @@
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, mob/user)
|
||||
/obj/machinery/modular_computer/attackby(var/obj/item/W as obj, mob/user)
|
||||
if(cpu && !(flags_1 & NODECONSTRUCT_1))
|
||||
return cpu.attackby(W, user)
|
||||
return ..()
|
||||
|
||||
@@ -22,24 +22,24 @@
|
||||
/obj/machinery/modular_computer/console/buildable/Initialize()
|
||||
. = ..()
|
||||
// User-built consoles start as empty frames.
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/network_card = cpu.all_components[MC_NET]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/recharger = cpu.all_components[MC_CHARGE]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/network_card = cpu.all_components[MC_NET]
|
||||
var/obj/item/computer_hardware/hard_drive/recharger = cpu.all_components[MC_CHARGE]
|
||||
qdel(recharger)
|
||||
qdel(network_card)
|
||||
qdel(hard_drive)
|
||||
|
||||
/obj/machinery/modular_computer/console/Initialize()
|
||||
. = ..()
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL]
|
||||
if(battery_module)
|
||||
qdel(battery_module)
|
||||
|
||||
var/obj/item/weapon/computer_hardware/network_card/wired/network_card = new()
|
||||
var/obj/item/computer_hardware/network_card/wired/network_card = new()
|
||||
|
||||
cpu.install_component(network_card)
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/recharger/APC)
|
||||
cpu.install_component(new /obj/item/weapon/computer_hardware/hard_drive/super) // Consoles generally have better HDDs due to lower space limitations
|
||||
cpu.install_component(new /obj/item/computer_hardware/recharger/APC)
|
||||
cpu.install_component(new /obj/item/computer_hardware/hard_drive/super) // Consoles generally have better HDDs due to lower space limitations
|
||||
|
||||
var/area/A = get_area(src)
|
||||
// Attempts to set this console's tag according to our area. Since some areas have stuff like "XX - YY" in their names we try to remove that too.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
var/filename = "NewFile" // Placeholder. No spacebars
|
||||
var/filetype = "XXX" // File full names are [filename].[filetype] so like NewFile.XXX in this case
|
||||
var/size = 1 // File size in GQ. Integers only!
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/holder // Holder that contains this file.
|
||||
var/obj/item/computer_hardware/hard_drive/holder // Holder that contains this file.
|
||||
var/unsendable = 0 // Whether the file may be sent to someone via NTNet transfer or other means.
|
||||
var/undeletable = 0 // Whether the file may be deleted. Setting to 1 prevents deletion/renaming/etc.
|
||||
var/uid // UID of this file
|
||||
|
||||
@@ -91,14 +91,14 @@
|
||||
return 1
|
||||
|
||||
if(ishuman(user))
|
||||
var/obj/item/weapon/card/id/D
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/card/id/D
|
||||
var/obj/item/computer_hardware/card_slot/card_slot
|
||||
if(computer && card_slot)
|
||||
card_slot = computer.all_components[MC_CARD]
|
||||
D = card_slot.GetID()
|
||||
var/mob/living/carbon/human/h = user
|
||||
var/obj/item/weapon/card/id/I = h.get_idcard()
|
||||
var/obj/item/weapon/card/id/C = h.get_active_held_item()
|
||||
var/obj/item/card/id/I = h.get_idcard()
|
||||
var/obj/item/card/id/C = h.get_active_held_item()
|
||||
if(C)
|
||||
C = C.GetID()
|
||||
if(!(C && istype(C)))
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/datum/computer_file/program/aidiag/proc/get_ai(cardcheck)
|
||||
|
||||
var/obj/item/weapon/computer_hardware/ai_slot/ai_slot
|
||||
var/obj/item/computer_hardware/ai_slot/ai_slot
|
||||
|
||||
if(computer)
|
||||
ai_slot = computer.all_components[MC_AI]
|
||||
@@ -47,7 +47,7 @@
|
||||
return TRUE
|
||||
if("PRG_eject")
|
||||
if(computer.all_components[MC_AI])
|
||||
var/obj/item/weapon/computer_hardware/ai_slot/ai_slot = computer.all_components[MC_AI]
|
||||
var/obj/item/computer_hardware/ai_slot/ai_slot = computer.all_components[MC_AI]
|
||||
if(ai_slot && ai_slot.stored_card)
|
||||
ai_slot.try_eject(0,usr)
|
||||
return TRUE
|
||||
@@ -58,7 +58,7 @@
|
||||
return
|
||||
var/obj/item/device/aicard/cardhold = get_ai(2)
|
||||
|
||||
var/obj/item/weapon/computer_hardware/ai_slot/ai_slot = get_ai(1)
|
||||
var/obj/item/computer_hardware/ai_slot/ai_slot = get_ai(1)
|
||||
|
||||
|
||||
var/mob/living/silicon/ai/A = get_ai()
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
executed = 1
|
||||
target.dos_sources.Add(src)
|
||||
if(GLOB.ntnet_global.intrusion_detection_enabled)
|
||||
var/obj/item/weapon/computer_hardware/network_card/network_card = computer.all_components[MC_NET]
|
||||
var/obj/item/computer_hardware/network_card/network_card = computer.all_components[MC_NET]
|
||||
GLOB.ntnet_global.add_log("IDS WARNING - Excess traffic flood targeting relay [target.uid] detected from device: [network_card.get_network_tag()]")
|
||||
GLOB.ntnet_global.intrusion_detection_alarm = 1
|
||||
return 1
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
computer.visible_message("<span class='notice'>\The [computer]'s screen brightly flashes and loud electrical buzzing is heard.</span>")
|
||||
computer.enabled = 0
|
||||
computer.update_icon()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = computer.all_components[MC_CELL]
|
||||
var/obj/item/weapon/computer_hardware/recharger/recharger = computer.all_components[MC_CHARGE]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/battery/battery_module = computer.all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/recharger/recharger = computer.all_components[MC_CHARGE]
|
||||
qdel(hard_drive)
|
||||
computer.take_damage(25, BRUTE, 0, 0)
|
||||
if(battery_module && prob(25))
|
||||
|
||||
@@ -83,8 +83,8 @@
|
||||
return 0
|
||||
|
||||
/datum/computer_file/program/card_mod/proc/format_jobs(list/jobs)
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
var/obj/item/weapon/card/id/id_card = card_slot.stored_card
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
var/obj/item/card/id/id_card = card_slot.stored_card
|
||||
var/list/formatted = list()
|
||||
for(var/job in jobs)
|
||||
formatted.Add(list(list(
|
||||
@@ -98,19 +98,19 @@
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/weapon/computer_hardware/printer/printer
|
||||
var/obj/item/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
if(computer)
|
||||
card_slot = computer.all_components[MC_CARD]
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
if(!card_slot)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/card/id/user_id_card = null
|
||||
var/obj/item/card/id/user_id_card = null
|
||||
var/mob/user = usr
|
||||
|
||||
var/obj/item/weapon/card/id/id_card = card_slot.stored_card
|
||||
var/obj/item/weapon/card/id/auth_card = card_slot.stored_card2
|
||||
var/obj/item/card/id/id_card = card_slot.stored_card
|
||||
var/obj/item/card/id/auth_card = card_slot.stored_card2
|
||||
|
||||
if(auth_card)
|
||||
user_id_card = auth_card
|
||||
@@ -174,7 +174,7 @@
|
||||
card_slot.try_eject(1, user)
|
||||
else
|
||||
var/obj/item/I = usr.get_active_held_item()
|
||||
if (istype(I, /obj/item/weapon/card/id))
|
||||
if (istype(I, /obj/item/card/id))
|
||||
if(!usr.drop_item())
|
||||
return
|
||||
I.forceMove(computer)
|
||||
@@ -190,7 +190,7 @@
|
||||
card_slot.try_eject(2, user)
|
||||
else
|
||||
var/obj/item/I = usr.get_active_held_item()
|
||||
if (istype(I, /obj/item/weapon/card/id))
|
||||
if (istype(I, /obj/item/card/id))
|
||||
if(!usr.drop_item())
|
||||
return
|
||||
I.forceMove(computer)
|
||||
@@ -285,19 +285,19 @@
|
||||
|
||||
return 1
|
||||
|
||||
/datum/computer_file/program/card_mod/proc/remove_nt_access(obj/item/weapon/card/id/id_card)
|
||||
/datum/computer_file/program/card_mod/proc/remove_nt_access(obj/item/card/id/id_card)
|
||||
id_card.access -= get_all_accesses()
|
||||
id_card.access -= get_all_centcom_access()
|
||||
|
||||
/datum/computer_file/program/card_mod/proc/apply_access(obj/item/weapon/card/id/id_card, list/accesses)
|
||||
/datum/computer_file/program/card_mod/proc/apply_access(obj/item/card/id/id_card, list/accesses)
|
||||
id_card.access |= accesses
|
||||
|
||||
/datum/computer_file/program/card_mod/ui_data(mob/user)
|
||||
|
||||
var/list/data = get_header_data()
|
||||
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/weapon/computer_hardware/printer/printer
|
||||
var/obj/item/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
|
||||
if(computer)
|
||||
card_slot = computer.all_components[MC_CARD]
|
||||
@@ -308,7 +308,7 @@
|
||||
var/authed = 0
|
||||
if(computer)
|
||||
if(card_slot)
|
||||
var/obj/item/weapon/card/id/auth_card = card_slot.stored_card2
|
||||
var/obj/item/card/id/auth_card = card_slot.stored_card2
|
||||
data["auth_name"] = auth_card ? strip_html_simple(auth_card.name) : "-----"
|
||||
authed = authorized()
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
|
||||
if(mod_mode == 1 && computer)
|
||||
if(card_slot)
|
||||
var/obj/item/weapon/card/id/id_card = card_slot.stored_card
|
||||
var/obj/item/card/id/id_card = card_slot.stored_card
|
||||
|
||||
data["has_id"] = !!id_card
|
||||
data["id_rank"] = id_card && id_card.assignment ? html_encode(id_card.assignment) : "Unassigned"
|
||||
@@ -382,7 +382,7 @@
|
||||
|
||||
|
||||
if(card_slot.stored_card)
|
||||
var/obj/item/weapon/card/id/id_card = card_slot.stored_card
|
||||
var/obj/item/card/id/id_card = card_slot.stored_card
|
||||
if(is_centcom)
|
||||
var/list/all_centcom_access = list()
|
||||
for(var/access in get_all_centcom_access())
|
||||
@@ -443,9 +443,9 @@
|
||||
|
||||
/datum/computer_file/program/card_mod/proc/authorized()
|
||||
if(!authenticated && computer)
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
if(card_slot)
|
||||
var/obj/item/weapon/card/id/auth_card = card_slot.stored_card2
|
||||
var/obj/item/card/id/auth_card = card_slot.stored_card2
|
||||
if(auth_card)
|
||||
region_access = list()
|
||||
if(ACCESS_CHANGE_IDS in auth_card.GetAccess())
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
|
||||
/datum/computer_file/program/computerconfig/ui_data(mob/user)
|
||||
movable = computer
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = movable.all_components[MC_HDD]
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = movable.all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = movable.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/battery/battery_module = movable.all_components[MC_CELL]
|
||||
if(!istype(movable))
|
||||
movable = null
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
var/list/all_entries[0]
|
||||
for(var/I in movable.all_components)
|
||||
var/obj/item/weapon/computer_hardware/H = movable.all_components[I]
|
||||
var/obj/item/computer_hardware/H = movable.all_components[I]
|
||||
all_entries.Add(list(list(
|
||||
"name" = H.name,
|
||||
"desc" = H.desc,
|
||||
@@ -61,7 +61,7 @@
|
||||
return
|
||||
switch(action)
|
||||
if("PC_toggle_component")
|
||||
var/obj/item/weapon/computer_hardware/H = movable.find_hardware_by_name(params["name"])
|
||||
var/obj/item/computer_hardware/H = movable.find_hardware_by_name(params["name"])
|
||||
if(H && istype(H))
|
||||
H.enabled = !H.enabled
|
||||
. = TRUE
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.all_components[MC_HDD]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/RHDD = computer.all_components[MC_SDD]
|
||||
var/obj/item/weapon/computer_hardware/printer/printer = computer.all_components[MC_PRINT]
|
||||
var/obj/item/computer_hardware/hard_drive/HDD = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/RHDD = computer.all_components[MC_SDD]
|
||||
var/obj/item/computer_hardware/printer/printer = computer.all_components[MC_PRINT]
|
||||
|
||||
switch(action)
|
||||
if("PRG_openfile")
|
||||
@@ -181,8 +181,8 @@
|
||||
/datum/computer_file/program/filemanager/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.all_components[MC_HDD]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD = computer.all_components[MC_SDD]
|
||||
var/obj/item/computer_hardware/hard_drive/HDD = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/portable/RHDD = computer.all_components[MC_SDD]
|
||||
if(error)
|
||||
data["error"] = error
|
||||
if(open_file)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(PRG.available_on_syndinet && !computer.emagged)
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
|
||||
if(!computer || !hard_drive || !hard_drive.can_store_file(PRG))
|
||||
return 0
|
||||
@@ -63,7 +63,7 @@
|
||||
if(!downloaded_file)
|
||||
return
|
||||
generate_network_log("Completed download of file [hacked_download ? "**ENCRYPTED**" : "[downloaded_file.filename].[downloaded_file.filetype]"].")
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
if(!computer || !hard_drive || !hard_drive.store_file(downloaded_file))
|
||||
// The download failed
|
||||
downloaderror = "I/O ERROR - Unable to save file. Check whether you have enough free space on your hard drive and whether your hard drive is properly connected. If the issue persists contact your system administrator for assistance."
|
||||
@@ -123,7 +123,7 @@
|
||||
data["downloadspeed"] = download_netspeed
|
||||
data["downloadcompletion"] = round(download_completion, 0.1)
|
||||
else // No download running, pick file.
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = my_computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = my_computer.all_components[MC_HDD]
|
||||
data["disk_size"] = hard_drive.max_capacity
|
||||
data["disk_used"] = hard_drive.used_capacity
|
||||
var/list/all_entries[0]
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
logfile.stored_data += "[logstring]\[BR\]"
|
||||
logfile.stored_data += "\[b\]Logfile dump completed.\[/b\]"
|
||||
logfile.calculate_size()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
if(!computer || !hard_drive || !hard_drive.store_file(logfile))
|
||||
if(!computer)
|
||||
// This program shouldn't even be runnable without computer.
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
// Finishes download and attempts to store the file on HDD
|
||||
/datum/computer_file/program/nttransfer/proc/finish_download()
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
if(!computer || !hard_drive || !hard_drive.store_file(downloaded_file))
|
||||
error = "I/O Error: Unable to save file. Check your hard drive and try again."
|
||||
finalize_download()
|
||||
@@ -122,7 +122,7 @@
|
||||
server_password = pass
|
||||
return 1
|
||||
if("PRG_uploadfile")
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
for(var/datum/computer_file/F in hard_drive.stored_files)
|
||||
if("[F.uid]" == params["id"])
|
||||
if(F.unsendable)
|
||||
@@ -161,7 +161,7 @@
|
||||
data["upload_filename"] = "[provided_file.filename].[provided_file.filetype]"
|
||||
else if (upload_menu)
|
||||
var/list/all_files[0]
|
||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
|
||||
for(var/datum/computer_file/F in hard_drive.stored_files)
|
||||
all_files.Add(list(list(
|
||||
"uid" = F.uid,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// CPU that allows the computer to run programs.
|
||||
// Better CPUs are obtainable via research and can run more programs on background.
|
||||
|
||||
/obj/item/weapon/computer_hardware/processor_unit
|
||||
/obj/item/computer_hardware/processor_unit
|
||||
name = "processor board"
|
||||
desc = "A standard CPU board used in most computers. It can run up to three programs simultaneously."
|
||||
icon_state = "cpuboard"
|
||||
@@ -13,10 +13,10 @@
|
||||
var/max_idle_programs = 2 // 2 idle, + 1 active = 3 as said in description.
|
||||
device_type = MC_CPU
|
||||
|
||||
/obj/item/weapon/computer_hardware/processor_unit/on_remove(obj/item/device/modular_computer/MC, mob/user)
|
||||
/obj/item/computer_hardware/processor_unit/on_remove(obj/item/device/modular_computer/MC, mob/user)
|
||||
MC.shutdown_computer()
|
||||
|
||||
/obj/item/weapon/computer_hardware/processor_unit/small
|
||||
/obj/item/computer_hardware/processor_unit/small
|
||||
name = "microprocessor"
|
||||
desc = "A miniaturised CPU used in portable devices. It can run up to two programs simultaneously."
|
||||
icon_state = "cpu"
|
||||
@@ -25,7 +25,7 @@
|
||||
max_idle_programs = 1
|
||||
origin_tech = "programming=2;engineering=2"
|
||||
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic
|
||||
/obj/item/computer_hardware/processor_unit/photonic
|
||||
name = "photonic processor board"
|
||||
desc = "An advanced experimental CPU board that uses photonic core instead of regular circuitry. It can run up to five programs simultaneously, but uses a lot of power."
|
||||
icon_state = "cpuboard_super"
|
||||
@@ -34,7 +34,7 @@
|
||||
max_idle_programs = 4
|
||||
origin_tech = "programming=5;engineering=4"
|
||||
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic/small
|
||||
/obj/item/computer_hardware/processor_unit/photonic/small
|
||||
name = "photonic microprocessor"
|
||||
desc = "An advanced miniaturised CPU for use in portable devices. It uses photonic core instead of regular circuitry. It can run up to three programs simultaneously."
|
||||
icon_state = "cpu_super"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware
|
||||
/obj/item/computer_hardware
|
||||
name = "hardware"
|
||||
desc = "Unknown Hardware."
|
||||
icon = 'icons/obj/module.dmi'
|
||||
@@ -20,18 +20,18 @@
|
||||
var/malfunction_probability = 10// Chance of malfunction when the component is damaged
|
||||
var/device_type
|
||||
|
||||
/obj/item/weapon/computer_hardware/New(var/obj/L)
|
||||
/obj/item/computer_hardware/New(var/obj/L)
|
||||
..()
|
||||
pixel_x = rand(-8, 8)
|
||||
pixel_y = rand(-8, 8)
|
||||
|
||||
/obj/item/weapon/computer_hardware/Destroy()
|
||||
/obj/item/computer_hardware/Destroy()
|
||||
if(holder)
|
||||
holder.uninstall_component(src)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/attackby(obj/item/I, mob/living/user)
|
||||
/obj/item/computer_hardware/attackby(obj/item/I, mob/living/user)
|
||||
// Multitool. Runs diagnostics
|
||||
if(istype(I, /obj/item/device/multitool))
|
||||
to_chat(user, "***** DIAGNOSTICS REPORT *****")
|
||||
@@ -56,11 +56,11 @@
|
||||
return ..()
|
||||
|
||||
// Called on multitool click, prints diagnostic information to the user.
|
||||
/obj/item/weapon/computer_hardware/proc/diagnostics(var/mob/user)
|
||||
/obj/item/computer_hardware/proc/diagnostics(var/mob/user)
|
||||
to_chat(user, "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]")
|
||||
|
||||
// Handles damage checks
|
||||
/obj/item/weapon/computer_hardware/proc/check_functionality()
|
||||
/obj/item/computer_hardware/proc/check_functionality()
|
||||
if(!enabled) // Disabled.
|
||||
return FALSE
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
return TRUE // Good to go.
|
||||
|
||||
/obj/item/weapon/computer_hardware/examine(var/mob/user)
|
||||
/obj/item/computer_hardware/examine(var/mob/user)
|
||||
. = ..()
|
||||
if(damage > damage_failure)
|
||||
to_chat(user, "<span class='danger'>It seems to be severely damaged!</span>")
|
||||
@@ -83,21 +83,21 @@
|
||||
to_chat(user, "<span class='notice'>It seems to be slightly damaged.</span>")
|
||||
|
||||
// Component-side compatibility check.
|
||||
/obj/item/weapon/computer_hardware/proc/can_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/can_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
return can_install
|
||||
|
||||
// Called when component is installed into PC.
|
||||
/obj/item/weapon/computer_hardware/proc/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
return
|
||||
|
||||
// Called when component is removed from PC.
|
||||
/obj/item/weapon/computer_hardware/proc/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/on_remove(obj/item/device/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.
|
||||
/obj/item/weapon/computer_hardware/proc/try_insert(obj/item/I, mob/living/user = null)
|
||||
/obj/item/computer_hardware/proc/try_insert(obj/item/I, mob/living/user = null)
|
||||
return FALSE
|
||||
|
||||
// Called when someone tries to eject something from it - card from card reader, etc.
|
||||
/obj/item/weapon/computer_hardware/proc/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
/obj/item/computer_hardware/proc/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
return FALSE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware/ai_slot
|
||||
/obj/item/computer_hardware/ai_slot
|
||||
name = "intelliCard interface slot"
|
||||
desc = "A module allowing this computer to interface with most common intelliCard modules. Necessary for some programs to run properly."
|
||||
power_usage = 100 //W
|
||||
@@ -11,18 +11,18 @@
|
||||
var/locked = FALSE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/examine(mob/user)
|
||||
/obj/item/computer_hardware/ai_slot/examine(mob/user)
|
||||
..()
|
||||
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/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
M.remove_verb(device_type)
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
/obj/item/computer_hardware/ai_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
return FALSE
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/try_eject(slot=0,mob/living/user = null,forced = 0)
|
||||
/obj/item/computer_hardware/ai_slot/try_eject(slot=0,mob/living/user = null,forced = 0)
|
||||
if(!stored_card)
|
||||
to_chat(user, "<span class='warning'>There is no card in \the [src].</span>")
|
||||
return FALSE
|
||||
@@ -60,10 +60,10 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/attackby(obj/item/I, mob/living/user)
|
||||
/obj/item/computer_hardware/ai_slot/attackby(obj/item/I, mob/living/user)
|
||||
if(..())
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
to_chat(user, "<span class='notice'>You press down on the manual eject button with \the [I].</span>")
|
||||
try_eject(,user,1)
|
||||
return
|
||||
@@ -1,23 +1,23 @@
|
||||
/obj/item/weapon/computer_hardware/battery
|
||||
/obj/item/computer_hardware/battery
|
||||
name = "power cell controller"
|
||||
desc = "A charge controller for standard power cells, used in all kinds of modular computers."
|
||||
icon_state = "cell_con"
|
||||
critical = 1
|
||||
malfunction_probability = 1
|
||||
origin_tech = "powerstorage=1;engineering=1"
|
||||
var/obj/item/weapon/stock_parts/cell/battery = null
|
||||
var/obj/item/stock_parts/cell/battery = null
|
||||
device_type = MC_CELL
|
||||
|
||||
/obj/item/weapon/computer_hardware/battery/New(loc, battery_type = null)
|
||||
/obj/item/computer_hardware/battery/New(loc, battery_type = null)
|
||||
if(battery_type)
|
||||
battery = new battery_type(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/computer_hardware/battery/try_insert(obj/item/I, mob/living/user = null)
|
||||
/obj/item/computer_hardware/battery/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
return FALSE
|
||||
|
||||
if(!istype(I, /obj/item/weapon/stock_parts/cell))
|
||||
if(!istype(I, /obj/item/stock_parts/cell))
|
||||
return FALSE
|
||||
|
||||
if(battery)
|
||||
@@ -37,7 +37,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/battery/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
/obj/item/computer_hardware/battery/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
if(!battery)
|
||||
to_chat(user, "<span class='warning'>There is no power cell connected to \the [src].</span>")
|
||||
return FALSE
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/computer
|
||||
/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."
|
||||
icon = 'icons/obj/module.dmi'
|
||||
@@ -69,7 +69,7 @@
|
||||
maxcharge = 750
|
||||
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/computer/advanced
|
||||
/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."
|
||||
icon_state = "cell"
|
||||
@@ -77,7 +77,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
maxcharge = 1500
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/computer/super
|
||||
/obj/item/stock_parts/cell/computer/super
|
||||
name = "super battery"
|
||||
desc = "An advanced power cell, often used in high-end laptops."
|
||||
icon_state = "cell"
|
||||
@@ -85,13 +85,13 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
maxcharge = 2000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/computer/micro
|
||||
/obj/item/stock_parts/cell/computer/micro
|
||||
name = "micro battery"
|
||||
desc = "A small power cell, commonly seen in most portable microcomputers."
|
||||
icon_state = "cell_micro"
|
||||
maxcharge = 500
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/computer/nano
|
||||
/obj/item/stock_parts/cell/computer/nano
|
||||
name = "nano battery"
|
||||
desc = "A tiny power cell, commonly seen in low-end portable microcomputers."
|
||||
icon_state = "cell_micro"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware/card_slot
|
||||
/obj/item/computer_hardware/card_slot
|
||||
name = "identification card authentication 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
|
||||
@@ -7,14 +7,14 @@
|
||||
origin_tech = "programming=2"
|
||||
device_type = MC_CARD
|
||||
|
||||
var/obj/item/weapon/card/id/stored_card = null
|
||||
var/obj/item/weapon/card/id/stored_card2 = null
|
||||
var/obj/item/card/id/stored_card = null
|
||||
var/obj/item/card/id/stored_card2 = null
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/Destroy()
|
||||
/obj/item/computer_hardware/card_slot/Destroy()
|
||||
try_eject()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/GetAccess()
|
||||
/obj/item/computer_hardware/card_slot/GetAccess()
|
||||
if(stored_card && stored_card2) // Best of both worlds
|
||||
return (stored_card.GetAccess() | stored_card2.GetAccess())
|
||||
else if(stored_card)
|
||||
@@ -23,24 +23,24 @@
|
||||
return stored_card2.GetAccess()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/GetID()
|
||||
/obj/item/computer_hardware/card_slot/GetID()
|
||||
if(stored_card)
|
||||
return stored_card
|
||||
else if(stored_card2)
|
||||
return stored_card2
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
M.remove_verb(device_type)
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
/obj/item/computer_hardware/card_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
return FALSE
|
||||
|
||||
if(!istype(I, /obj/item/weapon/card/id))
|
||||
if(!istype(I, /obj/item/card/id))
|
||||
return FALSE
|
||||
|
||||
if(stored_card && stored_card2)
|
||||
@@ -61,7 +61,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
/obj/item/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
if(!stored_card && !stored_card2)
|
||||
to_chat(user, "<span class='warning'>There are no cards in \the [src].</span>")
|
||||
return FALSE
|
||||
@@ -96,15 +96,15 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user)
|
||||
/obj/item/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user)
|
||||
if(..())
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
to_chat(user, "<span class='notice'>You press down on the manual eject button with \the [I].</span>")
|
||||
try_eject(0,user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/examine(mob/user)
|
||||
/obj/item/computer_hardware/card_slot/examine(mob/user)
|
||||
..()
|
||||
if(stored_card || stored_card2)
|
||||
to_chat(user, "There appears to be something loaded in the card slots.")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware/hard_drive
|
||||
/obj/item/computer_hardware/hard_drive
|
||||
name = "hard disk drive"
|
||||
desc = "A small HDD, for use in basic computers where power efficiency is desired."
|
||||
power_usage = 25
|
||||
@@ -11,26 +11,26 @@
|
||||
var/used_capacity = 0
|
||||
var/list/stored_files = list() // List of stored files on this drive. DO NOT MODIFY DIRECTLY!
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/on_remove(obj/item/device/modular_computer/MC, mob/user)
|
||||
/obj/item/computer_hardware/hard_drive/on_remove(obj/item/device/modular_computer/MC, mob/user)
|
||||
MC.shutdown_computer()
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/proc/install_default_programs()
|
||||
/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.
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/examine(user)
|
||||
/obj/item/computer_hardware/hard_drive/examine(user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>It has [max_capacity] GQ of storage capacity.</span>")
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/diagnostics(var/mob/user)
|
||||
/obj/item/computer_hardware/hard_drive/diagnostics(var/mob/user)
|
||||
..()
|
||||
// 999 is a byond limit that is in place. It's unlikely someone will reach that many files anyway, since you would sooner run out of space.
|
||||
to_chat(user, "NT-NFS File Table Status: [stored_files.len]/999")
|
||||
to_chat(user, "Storage capacity: [used_capacity]/[max_capacity]GQ")
|
||||
|
||||
// Use this proc to add file to the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks.
|
||||
/obj/item/weapon/computer_hardware/hard_drive/proc/store_file(var/datum/computer_file/F)
|
||||
/obj/item/computer_hardware/hard_drive/proc/store_file(var/datum/computer_file/F)
|
||||
if(!F || !istype(F))
|
||||
return 0
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
return 1
|
||||
|
||||
// Use this proc to remove file from the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks.
|
||||
/obj/item/weapon/computer_hardware/hard_drive/proc/remove_file(var/datum/computer_file/F)
|
||||
/obj/item/computer_hardware/hard_drive/proc/remove_file(var/datum/computer_file/F)
|
||||
if(!F || !istype(F))
|
||||
return 0
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
return 0
|
||||
|
||||
// Loops through all stored files and recalculates used_capacity of this drive
|
||||
/obj/item/weapon/computer_hardware/hard_drive/proc/recalculate_size()
|
||||
/obj/item/computer_hardware/hard_drive/proc/recalculate_size()
|
||||
var/total_size = 0
|
||||
for(var/datum/computer_file/F in stored_files)
|
||||
total_size += F.size
|
||||
@@ -79,7 +79,7 @@
|
||||
used_capacity = total_size
|
||||
|
||||
// Checks whether file can be stored on the hard drive. We can only store unique files, so this checks whether we wouldn't get a duplicity by adding a file.
|
||||
/obj/item/weapon/computer_hardware/hard_drive/proc/can_store_file(var/datum/computer_file/F)
|
||||
/obj/item/computer_hardware/hard_drive/proc/can_store_file(var/datum/computer_file/F)
|
||||
if(!F || !istype(F))
|
||||
return 0
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
|
||||
// Tries to find the file by filename. Returns null on failure
|
||||
/obj/item/weapon/computer_hardware/hard_drive/proc/find_file_by_name(var/filename)
|
||||
/obj/item/computer_hardware/hard_drive/proc/find_file_by_name(var/filename)
|
||||
if(!check_functionality())
|
||||
return null
|
||||
|
||||
@@ -117,16 +117,16 @@
|
||||
return F
|
||||
return null
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/Destroy()
|
||||
/obj/item/computer_hardware/hard_drive/Destroy()
|
||||
stored_files = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/New()
|
||||
/obj/item/computer_hardware/hard_drive/New()
|
||||
install_default_programs()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/advanced
|
||||
/obj/item/computer_hardware/hard_drive/advanced
|
||||
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
|
||||
@@ -135,7 +135,7 @@
|
||||
icon_state = "harddisk_mini"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/super
|
||||
/obj/item/computer_hardware/hard_drive/super
|
||||
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
|
||||
@@ -144,7 +144,7 @@
|
||||
icon_state = "harddisk_mini"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/cluster
|
||||
/obj/item/computer_hardware/hard_drive/cluster
|
||||
name = "cluster hard disk drive"
|
||||
desc = "A large storage cluster consisting of multiple HDDs for usage in dedicated storage systems."
|
||||
power_usage = 500
|
||||
@@ -154,7 +154,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
// For tablets, etc. - highly power efficient.
|
||||
/obj/item/weapon/computer_hardware/hard_drive/small
|
||||
/obj/item/computer_hardware/hard_drive/small
|
||||
name = "solid state drive"
|
||||
desc = "An efficient SSD for portable devices."
|
||||
power_usage = 10
|
||||
@@ -163,7 +163,7 @@
|
||||
icon_state = "ssd_mini"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/micro
|
||||
/obj/item/computer_hardware/hard_drive/micro
|
||||
name = "micro solid state drive"
|
||||
desc = "A highly efficient SSD chip for portable devices."
|
||||
power_usage = 2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware/network_card
|
||||
/obj/item/computer_hardware/network_card
|
||||
name = "network card"
|
||||
desc = "A basic wireless network card for usage with standard NTNet frequencies."
|
||||
power_usage = 50
|
||||
@@ -12,7 +12,7 @@
|
||||
device_type = MC_NET
|
||||
var/global/ntnet_card_uid = 1
|
||||
|
||||
/obj/item/weapon/computer_hardware/network_card/diagnostics(var/mob/user)
|
||||
/obj/item/computer_hardware/network_card/diagnostics(var/mob/user)
|
||||
..()
|
||||
to_chat(user, "NIX Unique ID: [identification_id]")
|
||||
to_chat(user, "NIX User Tag: [identification_string]")
|
||||
@@ -23,16 +23,16 @@
|
||||
if(ethernet)
|
||||
to_chat(user, "OpenEth (Physical Connection) - Physical network connection port")
|
||||
|
||||
/obj/item/weapon/computer_hardware/network_card/New(var/l)
|
||||
/obj/item/computer_hardware/network_card/New(var/l)
|
||||
..()
|
||||
identification_id = ntnet_card_uid++
|
||||
|
||||
// Returns a string identifier of this network card
|
||||
/obj/item/weapon/computer_hardware/network_card/proc/get_network_tag()
|
||||
/obj/item/computer_hardware/network_card/proc/get_network_tag()
|
||||
return "[identification_string] (NID [identification_id])"
|
||||
|
||||
// 0 - No signal, 1 - Low signal, 2 - High signal. 3 - Wired Connection
|
||||
/obj/item/weapon/computer_hardware/network_card/proc/get_signal(var/specific_action = 0)
|
||||
/obj/item/computer_hardware/network_card/proc/get_signal(var/specific_action = 0)
|
||||
if(!holder) // Hardware is not installed in anything. No signal. How did this even get called?
|
||||
return 0
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
return 0 // Computer is not on station and does not have upgraded network card. No signal.
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced
|
||||
/obj/item/computer_hardware/network_card/advanced
|
||||
name = "advanced network card"
|
||||
desc = "An advanced network card for usage with standard NTNet frequencies. Its transmitter is strong enough to connect even off-station."
|
||||
long_range = 1
|
||||
@@ -72,7 +72,7 @@
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/weapon/computer_hardware/network_card/wired
|
||||
/obj/item/computer_hardware/network_card/wired
|
||||
name = "wired network card"
|
||||
desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection."
|
||||
ethernet = 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable
|
||||
/obj/item/computer_hardware/hard_drive/portable
|
||||
name = "data disk"
|
||||
desc = "Removable disk used to store data."
|
||||
power_usage = 10
|
||||
@@ -9,24 +9,24 @@
|
||||
origin_tech = "programming=1"
|
||||
device_type = MC_SDD
|
||||
|
||||
/obj/item/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
..()
|
||||
M.remove_verb(device_type)
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable/install_default_programs()
|
||||
/obj/item/computer_hardware/hard_drive/portable/install_default_programs()
|
||||
return // Empty by default
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable/advanced
|
||||
/obj/item/computer_hardware/hard_drive/portable/advanced
|
||||
name = "advanced data disk"
|
||||
power_usage = 20
|
||||
icon_state = "datadisk5"
|
||||
max_capacity = 64
|
||||
origin_tech = "programming=2"
|
||||
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable/super
|
||||
/obj/item/computer_hardware/hard_drive/portable/super
|
||||
name = "super data disk"
|
||||
desc = "Removable disk used to store large amounts of data."
|
||||
power_usage = 40
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/computer_hardware/printer
|
||||
/obj/item/computer_hardware/printer
|
||||
name = "printer"
|
||||
desc = "Computer-integrated printer with paper recycling module."
|
||||
power_usage = 100
|
||||
@@ -9,22 +9,22 @@
|
||||
var/stored_paper = 20
|
||||
var/max_paper = 30
|
||||
|
||||
/obj/item/weapon/computer_hardware/printer/diagnostics(mob/living/user)
|
||||
/obj/item/computer_hardware/printer/diagnostics(mob/living/user)
|
||||
..()
|
||||
to_chat(user, "Paper level: [stored_paper]/[max_paper]")
|
||||
|
||||
/obj/item/weapon/computer_hardware/printer/examine(mob/user)
|
||||
/obj/item/computer_hardware/printer/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Paper level: [stored_paper]/[max_paper]</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/printer/proc/print_text(var/text_to_print, var/paper_title = "")
|
||||
/obj/item/computer_hardware/printer/proc/print_text(var/text_to_print, var/paper_title = "")
|
||||
if(!stored_paper)
|
||||
return FALSE
|
||||
if(!check_functionality())
|
||||
return FALSE
|
||||
|
||||
var/obj/item/weapon/paper/P = new/obj/item/weapon/paper(get_turf(holder))
|
||||
var/obj/item/paper/P = new/obj/item/paper(get_turf(holder))
|
||||
|
||||
// Damaged printer causes the resulting paper to be somewhat harder to read.
|
||||
if(damage > damage_malfunction)
|
||||
@@ -39,8 +39,8 @@
|
||||
P = null
|
||||
return TRUE
|
||||
|
||||
/obj/item/weapon/computer_hardware/printer/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(istype(I, /obj/item/weapon/paper))
|
||||
/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>")
|
||||
return FALSE
|
||||
@@ -53,7 +53,7 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/computer_hardware/printer/mini
|
||||
/obj/item/computer_hardware/printer/mini
|
||||
name = "miniprinter"
|
||||
desc = "A small printer with paper recycling module."
|
||||
power_usage = 50
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
/obj/item/weapon/computer_hardware/recharger
|
||||
/obj/item/computer_hardware/recharger
|
||||
critical = 1
|
||||
enabled = 1
|
||||
var/charge_rate = 100
|
||||
device_type = MC_CHARGE
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/proc/use_power(amount, charging=0)
|
||||
/obj/item/computer_hardware/recharger/proc/use_power(amount, charging=0)
|
||||
if(charging)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/process()
|
||||
/obj/item/computer_hardware/recharger/process()
|
||||
..()
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = holder.all_components[MC_CELL]
|
||||
var/obj/item/computer_hardware/battery/battery_module = holder.all_components[MC_CELL]
|
||||
if(!holder || !battery_module || !battery_module.battery)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/stock_parts/cell/cell = battery_module.battery
|
||||
var/obj/item/stock_parts/cell/cell = battery_module.battery
|
||||
if(cell.charge >= cell.maxcharge)
|
||||
return
|
||||
|
||||
@@ -23,14 +23,14 @@
|
||||
holder.give_power(charge_rate * GLOB.CELLRATE)
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/APC
|
||||
/obj/item/computer_hardware/recharger/APC
|
||||
name = "area power connector"
|
||||
desc = "A device that wirelessly recharges connected device from nearby APC."
|
||||
icon_state = "charger_APC"
|
||||
w_class = WEIGHT_CLASS_SMALL // Can't be installed into tablets/PDAs
|
||||
origin_tech = "programming=2;engineering=2;powerstorage=3"
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/APC/use_power(amount, charging=0)
|
||||
/obj/item/computer_hardware/recharger/APC/use_power(amount, charging=0)
|
||||
if(istype(holder.physical, /obj/machinery))
|
||||
var/obj/machinery/M = holder.physical
|
||||
if(M.powered())
|
||||
@@ -47,20 +47,20 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/wired
|
||||
/obj/item/computer_hardware/recharger/wired
|
||||
name = "wired power connector"
|
||||
desc = "A power connector that recharges connected device from nearby power wire. Incompatible with portable computers."
|
||||
icon_state = "charger_wire"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
origin_tech = "engineering=2;powerstorage=1"
|
||||
|
||||
/obj/item/weapon/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/device/modular_computer/M, mob/living/user = null)
|
||||
if(istype(M.physical, /obj/machinery) && M.physical.anchored)
|
||||
return ..()
|
||||
to_chat(user, "<span class='warning'>\The [src] is incompatible with portable computers!</span>")
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/wired/use_power(amount, charging=0)
|
||||
/obj/item/computer_hardware/recharger/wired/use_power(amount, charging=0)
|
||||
if(istype(holder.physical, /obj/machinery) && holder.physical.anchored)
|
||||
var/obj/machinery/M = holder.physical
|
||||
var/turf/T = M.loc
|
||||
@@ -82,12 +82,12 @@
|
||||
|
||||
|
||||
// This is not intended to be obtainable in-game. Intended for adminbus and debugging purposes.
|
||||
/obj/item/weapon/computer_hardware/recharger/lambda
|
||||
/obj/item/computer_hardware/recharger/lambda
|
||||
name = "lambda coil"
|
||||
desc = "A very complex device that draws power from its own bluespace dimension."
|
||||
icon_state = "charger_lambda"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
charge_rate = 100000
|
||||
|
||||
/obj/item/weapon/computer_hardware/recharger/lambda/use_power(amount, charging=0)
|
||||
/obj/item/computer_hardware/recharger/lambda/use_power(amount, charging=0)
|
||||
return 1
|
||||
|
||||
@@ -50,116 +50,116 @@
|
||||
/obj/machinery/lapvend/proc/fabricate_and_recalc_price(fabricate = 0)
|
||||
total_price = 0
|
||||
if(devtype == 1) // Laptop, generally cheaper to make it accessible for most station roles
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = null
|
||||
var/obj/item/computer_hardware/battery/battery_module = null
|
||||
if(fabricate)
|
||||
fabricated_laptop = new /obj/item/device/modular_computer/laptop/buildable(src)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/battery)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/battery)
|
||||
battery_module = fabricated_laptop.all_components[MC_CELL]
|
||||
total_price = 99
|
||||
switch(dev_cpu)
|
||||
if(1)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/processor_unit/small)
|
||||
if(2)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/processor_unit)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/processor_unit)
|
||||
total_price += 299
|
||||
switch(dev_battery)
|
||||
if(1) // Basic(750C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer)
|
||||
battery_module.try_insert(new /obj/item/stock_parts/cell/computer)
|
||||
if(2) // Upgraded(1100C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/advanced)
|
||||
battery_module.try_insert(new /obj/item/stock_parts/cell/computer/advanced)
|
||||
total_price += 199
|
||||
if(3) // Advanced(1500C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/super)
|
||||
battery_module.try_insert(new /obj/item/stock_parts/cell/computer/super)
|
||||
total_price += 499
|
||||
switch(dev_disk)
|
||||
if(1) // Basic(128GQ)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/hard_drive)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/hard_drive)
|
||||
if(2) // Upgraded(256GQ)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/hard_drive/advanced)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/hard_drive/advanced)
|
||||
total_price += 99
|
||||
if(3) // Advanced(512GQ)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/hard_drive/super)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/hard_drive/super)
|
||||
total_price += 299
|
||||
switch(dev_netcard)
|
||||
if(1) // Basic(Short-Range)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/network_card)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/network_card)
|
||||
total_price += 99
|
||||
if(2) // Advanced (Long Range)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/network_card/advanced)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/network_card/advanced)
|
||||
total_price += 299
|
||||
if(dev_apc_recharger)
|
||||
total_price += 399
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/recharger/APC)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/recharger/APC)
|
||||
if(dev_printer)
|
||||
total_price += 99
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/printer/mini)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/printer/mini)
|
||||
if(dev_card)
|
||||
total_price += 199
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/card_slot)
|
||||
fabricated_laptop.install_component(new /obj/item/computer_hardware/card_slot)
|
||||
|
||||
return total_price
|
||||
else if(devtype == 2) // Tablet, more expensive, not everyone could probably afford this.
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = null
|
||||
var/obj/item/computer_hardware/battery/battery_module = null
|
||||
if(fabricate)
|
||||
fabricated_tablet = new(src)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/battery)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
fabricated_tablet.install_component(new /obj/item/computer_hardware/battery)
|
||||
fabricated_tablet.install_component(new /obj/item/computer_hardware/processor_unit/small)
|
||||
battery_module = fabricated_tablet.all_components[MC_CELL]
|
||||
total_price = 199
|
||||
switch(dev_battery)
|
||||
if(1) // Basic(300C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/nano)
|
||||
battery_module.try_insert(new /obj/item/stock_parts/cell/computer/nano)
|
||||
if(2) // Upgraded(500C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/micro)
|
||||
battery_module.try_insert(new /obj/item/stock_parts/cell/computer/micro)
|
||||
total_price += 199
|
||||
if(3) // Advanced(750C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer)
|
||||
battery_module.try_insert(new /obj/item/stock_parts/cell/computer)
|
||||
total_price += 499
|
||||
switch(dev_disk)
|
||||
if(1) // Basic(32GQ)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/hard_drive/micro)
|
||||
fabricated_tablet.install_component(new /obj/item/computer_hardware/hard_drive/micro)
|
||||
if(2) // Upgraded(64GQ)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/hard_drive/small)
|
||||
fabricated_tablet.install_component(new /obj/item/computer_hardware/hard_drive/small)
|
||||
total_price += 99
|
||||
if(3) // Advanced(128GQ)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/hard_drive)
|
||||
fabricated_tablet.install_component(new /obj/item/computer_hardware/hard_drive)
|
||||
total_price += 299
|
||||
switch(dev_netcard)
|
||||
if(1) // Basic(Short-Range)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/network_card)
|
||||
fabricated_tablet.install_component(new/obj/item/computer_hardware/network_card)
|
||||
total_price += 99
|
||||
if(2) // Advanced (Long Range)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/network_card/advanced)
|
||||
fabricated_tablet.install_component(new/obj/item/computer_hardware/network_card/advanced)
|
||||
total_price += 299
|
||||
if(dev_printer)
|
||||
total_price += 99
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/printer)
|
||||
fabricated_tablet.install_component(new/obj/item/computer_hardware/printer)
|
||||
if(dev_card)
|
||||
total_price += 199
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/card_slot)
|
||||
fabricated_tablet.install_component(new/obj/item/computer_hardware/card_slot)
|
||||
return total_price
|
||||
return 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user