mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-17 21:52:42 +00:00
Updates Part Ten
This commit is contained in:
@@ -140,3 +140,152 @@
|
|||||||
else
|
else
|
||||||
. = valid_reagents[metadata]
|
. = valid_reagents[metadata]
|
||||||
I.reagents.add_reagent(., I.reagents.get_free_space())
|
I.reagents.add_reagent(., I.reagents.get_free_space())
|
||||||
|
|
||||||
|
|
||||||
|
/datum/gear_tweak/tablet
|
||||||
|
var/list/ValidProcessors = list(/obj/item/weapon/computer_hardware/processor_unit/small)
|
||||||
|
var/list/ValidBatteries = list(/obj/item/weapon/computer_hardware/battery_module/nano, /obj/item/weapon/computer_hardware/battery_module/micro, /obj/item/weapon/computer_hardware/battery_module)
|
||||||
|
var/list/ValidHardDrives = list(/obj/item/weapon/computer_hardware/hard_drive/micro, /obj/item/weapon/computer_hardware/hard_drive/small, /obj/item/weapon/computer_hardware/hard_drive)
|
||||||
|
var/list/ValidNetworkCards = list(/obj/item/weapon/computer_hardware/network_card, /obj/item/weapon/computer_hardware/network_card/advanced)
|
||||||
|
var/list/ValidNanoPrinters = list(null, /obj/item/weapon/computer_hardware/nano_printer)
|
||||||
|
var/list/ValidCardSlots = list(null, /obj/item/weapon/computer_hardware/card_slot)
|
||||||
|
var/list/ValidTeslaLinks = list(null, /obj/item/weapon/computer_hardware/tesla_link)
|
||||||
|
|
||||||
|
/datum/gear_tweak/tablet/get_contents(var/list/metadata)
|
||||||
|
var/list/names = list()
|
||||||
|
var/obj/O = ValidProcessors[metadata[1]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
O = ValidBatteries[metadata[2]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
O = ValidHardDrives[metadata[3]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
O = ValidNetworkCards[metadata[4]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
O = ValidNanoPrinters[metadata[5]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
O = ValidCardSlots[metadata[6]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
O = ValidTeslaLinks[metadata[7]]
|
||||||
|
if(O)
|
||||||
|
names += initial(O.name)
|
||||||
|
return "[english_list(names, and_text = ", ")]"
|
||||||
|
|
||||||
|
/datum/gear_tweak/tablet/get_metadata(var/user, var/metadata)
|
||||||
|
. = list()
|
||||||
|
|
||||||
|
var/list/names = list()
|
||||||
|
var/counter = 1
|
||||||
|
for(var/i in ValidProcessors)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
var/entry = input(user, "Choose a processor.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
names = list()
|
||||||
|
counter = 1
|
||||||
|
for(var/i in ValidBatteries)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
entry = input(user, "Choose a battery.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
names = list()
|
||||||
|
counter = 1
|
||||||
|
for(var/i in ValidHardDrives)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
entry = input(user, "Choose a hard drive.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
names = list()
|
||||||
|
counter = 1
|
||||||
|
for(var/i in ValidNetworkCards)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
entry = input(user, "Choose a network card.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
names = list()
|
||||||
|
counter = 1
|
||||||
|
for(var/i in ValidNanoPrinters)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
entry = input(user, "Choose a nanoprinter.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
names = list()
|
||||||
|
counter = 1
|
||||||
|
for(var/i in ValidCardSlots)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
entry = input(user, "Choose a card slot.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
names = list()
|
||||||
|
counter = 1
|
||||||
|
for(var/i in ValidTeslaLinks)
|
||||||
|
if(i)
|
||||||
|
var/obj/O = i
|
||||||
|
names[initial(O.name)] = counter++
|
||||||
|
else
|
||||||
|
names["None"] = counter++
|
||||||
|
|
||||||
|
entry = input(user, "Choose a tesla link.", "Character Preference") in names
|
||||||
|
. += names[entry]
|
||||||
|
|
||||||
|
/datum/gear_tweak/tablet/get_default()
|
||||||
|
return list(1, 1, 1, 1, 1, 1, 1)
|
||||||
|
|
||||||
|
/datum/gear_tweak/tablet/tweak_item(var/obj/item/modular_computer/tablet/I, var/list/metadata)
|
||||||
|
if(ValidProcessors[metadata[1]])
|
||||||
|
var/t = ValidProcessors[metadata[1]]
|
||||||
|
I.processor_unit = new t(I)
|
||||||
|
if(ValidBatteries[metadata[2]])
|
||||||
|
var/t = ValidBatteries[metadata[2]]
|
||||||
|
I.battery_module = new t(I)
|
||||||
|
I.battery_module.charge_to_full()
|
||||||
|
if(ValidHardDrives[metadata[3]])
|
||||||
|
var/t = ValidHardDrives[metadata[3]]
|
||||||
|
I.hard_drive = new t(I)
|
||||||
|
if(ValidNetworkCards[metadata[4]])
|
||||||
|
var/t = ValidNetworkCards[metadata[4]]
|
||||||
|
I.network_card = new t(I)
|
||||||
|
if(ValidNanoPrinters[metadata[5]])
|
||||||
|
var/t = ValidNanoPrinters[metadata[5]]
|
||||||
|
I.nano_printer = new t(I)
|
||||||
|
if(ValidCardSlots[metadata[6]])
|
||||||
|
var/t = ValidCardSlots[metadata[6]]
|
||||||
|
I.card_slot = new t(I)
|
||||||
|
if(ValidTeslaLinks[metadata[7]])
|
||||||
|
var/t = ValidTeslaLinks[metadata[7]]
|
||||||
|
I.tesla_link = new t(I)
|
||||||
|
|||||||
@@ -158,14 +158,23 @@
|
|||||||
..()
|
..()
|
||||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||||
|
|
||||||
/datum/gear/cheaptablet
|
/datum/gear/utility/cheaptablet
|
||||||
display_name = "cheap tablet computer"
|
display_name = "cheap tablet computer"
|
||||||
|
display_name = "tablet computer: cheap"
|
||||||
path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap
|
path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap
|
||||||
sort_category = "utility"
|
|
||||||
cost = 3
|
cost = 3
|
||||||
|
|
||||||
/datum/gear/normaltablet
|
/datum/gear/utility/normaltablet
|
||||||
display_name = "tablet computer"
|
display_name = "tablet computer"
|
||||||
|
display_name = "tablet computer: advanced"
|
||||||
path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced
|
path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced
|
||||||
sort_category = "utility"
|
|
||||||
cost = 4
|
cost = 4
|
||||||
|
|
||||||
|
/datum/gear/utility/customtablet
|
||||||
|
display_name = "tablet computer: custom"
|
||||||
|
path = /obj/item/modular_computer/tablet
|
||||||
|
cost = 4
|
||||||
|
|
||||||
|
/datum/gear/utility/customtablet/New()
|
||||||
|
..()
|
||||||
|
gear_tweaks += new /datum/gear_tweak/tablet()
|
||||||
@@ -13,7 +13,8 @@
|
|||||||
var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged
|
var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged
|
||||||
var/last_world_time = "00:00"
|
var/last_world_time = "00:00"
|
||||||
var/list/last_header_icons
|
var/list/last_header_icons
|
||||||
var/computer_emagged = 0 // Whether the computer is emagged.
|
var/computer_emagged = FALSE // Whether the computer is emagged.
|
||||||
|
var/apc_powered = FALSE
|
||||||
|
|
||||||
var/base_active_power_usage = 50 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
|
var/base_active_power_usage = 50 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
|
||||||
var/base_idle_power_usage = 5 // Power usage when the computer is idle and screen is off (currently only applies to laptops)
|
var/base_idle_power_usage = 5 // Power usage when the computer is idle and screen is off (currently only applies to laptops)
|
||||||
@@ -39,11 +40,12 @@
|
|||||||
var/obj/item/weapon/computer_hardware/processor_unit/processor_unit // CPU. Without it the computer won't run. Better CPUs can run more programs at once.
|
var/obj/item/weapon/computer_hardware/processor_unit/processor_unit // CPU. Without it the computer won't run. Better CPUs can run more programs at once.
|
||||||
var/obj/item/weapon/computer_hardware/network_card/network_card // Network Card component of this computer. Allows connection to NTNet
|
var/obj/item/weapon/computer_hardware/network_card/network_card // Network Card component of this computer. Allows connection to NTNet
|
||||||
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive // Hard Drive component of this computer. Stores programs and files.
|
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive // Hard Drive component of this computer. Stores programs and files.
|
||||||
var/obj/item/weapon/computer_hardware/battery_module/battery_module // An internal power source for this computer. Can be recharged.
|
|
||||||
// Optional hardware (improves functionality, but is not critical for computer to work)
|
// Optional hardware (improves functionality, but is not critical for computer to work)
|
||||||
|
var/obj/item/weapon/computer_hardware/battery_module/battery_module // An internal power source for this computer. Can be recharged.
|
||||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot // ID Card slot component of this computer. Mostly for HoP modification console that needs ID slot for modification.
|
var/obj/item/weapon/computer_hardware/card_slot/card_slot // ID Card slot component of this computer. Mostly for HoP modification console that needs ID slot for modification.
|
||||||
var/obj/item/weapon/computer_hardware/nano_printer/nano_printer // Nano Printer component of this computer, for your everyday paperwork needs.
|
var/obj/item/weapon/computer_hardware/nano_printer/nano_printer // Nano Printer component of this computer, for your everyday paperwork needs.
|
||||||
var/obj/item/weapon/computer_hardware/hard_drive/portable/portable_drive // Portable data storage
|
var/obj/item/weapon/computer_hardware/hard_drive/portable/portable_drive // Portable data storage
|
||||||
|
var/obj/item/weapon/computer_hardware/tesla_link/tesla_link // Tesla Link, Allows remote charging from nearest APC.
|
||||||
|
|
||||||
var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with.
|
var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with.
|
||||||
|
|
||||||
@@ -165,17 +167,13 @@
|
|||||||
else
|
else
|
||||||
overlays.Add(icon_state_menu)
|
overlays.Add(icon_state_menu)
|
||||||
|
|
||||||
// Used by child types if they have other power source than battery
|
|
||||||
/obj/item/modular_computer/proc/check_power_override()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
// Operates NanoUI
|
// Operates NanoUI
|
||||||
/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if(!screen_on || !enabled)
|
if(!screen_on || !enabled)
|
||||||
if(ui)
|
if(ui)
|
||||||
ui.close()
|
ui.close()
|
||||||
return 0
|
return 0
|
||||||
if((!battery_module || !battery_module.battery.charge) && !check_power_override())
|
if(!apc_power(0) && !battery_power(0))
|
||||||
if(ui)
|
if(ui)
|
||||||
ui.close()
|
ui.close()
|
||||||
return 0
|
return 0
|
||||||
@@ -233,6 +231,8 @@
|
|||||||
qdel()
|
qdel()
|
||||||
|
|
||||||
/obj/item/modular_computer/proc/turn_on(var/mob/user)
|
/obj/item/modular_computer/proc/turn_on(var/mob/user)
|
||||||
|
if(tesla_link)
|
||||||
|
tesla_link.enabled = 1
|
||||||
var/issynth = issilicon(user) // Robots and AIs get different activation messages.
|
var/issynth = issilicon(user) // Robots and AIs get different activation messages.
|
||||||
if(damage > broken_damage)
|
if(damage > broken_damage)
|
||||||
if(issynth)
|
if(issynth)
|
||||||
@@ -240,7 +240,7 @@
|
|||||||
else
|
else
|
||||||
to_chat(user, "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again.")
|
to_chat(user, "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again.")
|
||||||
return
|
return
|
||||||
if(processor_unit && ((battery_module && battery_module.battery.charge && battery_module.check_functionality()) || check_power_override())) // Battery-run and charged or non-battery but powered by APC.
|
if(processor_unit && (apc_power(0) || battery_power(0))) // Battery-run and charged or non-battery but powered by APC.
|
||||||
if(issynth)
|
if(issynth)
|
||||||
to_chat(user, "You send an activation signal to \the [src], turning it on")
|
to_chat(user, "You send an activation signal to \the [src], turning it on")
|
||||||
else
|
else
|
||||||
@@ -273,17 +273,17 @@
|
|||||||
|
|
||||||
if(active_program)
|
if(active_program)
|
||||||
if(active_program.program_state != PROGRAM_STATE_KILLED)
|
if(active_program.program_state != PROGRAM_STATE_KILLED)
|
||||||
active_program.process_tick()
|
|
||||||
active_program.ntnet_status = get_ntnet_status()
|
active_program.ntnet_status = get_ntnet_status()
|
||||||
active_program.computer_emagged = computer_emagged
|
active_program.computer_emagged = computer_emagged
|
||||||
|
active_program.process_tick()
|
||||||
else
|
else
|
||||||
active_program = null
|
active_program = null
|
||||||
|
|
||||||
for(var/datum/computer_file/program/P in idle_threads)
|
for(var/datum/computer_file/program/P in idle_threads)
|
||||||
if(P.program_state != PROGRAM_STATE_KILLED)
|
if(P.program_state != PROGRAM_STATE_KILLED)
|
||||||
P.process_tick()
|
|
||||||
P.ntnet_status = get_ntnet_status()
|
P.ntnet_status = get_ntnet_status()
|
||||||
P.computer_emagged = computer_emagged
|
P.computer_emagged = computer_emagged
|
||||||
|
P.process_tick()
|
||||||
else
|
else
|
||||||
idle_threads.Remove(P)
|
idle_threads.Remove(P)
|
||||||
|
|
||||||
@@ -315,6 +315,9 @@
|
|||||||
data["PC_batterypercent"] = "N/C"
|
data["PC_batterypercent"] = "N/C"
|
||||||
data["PC_showbatteryicon"] = battery_module ? 1 : 0
|
data["PC_showbatteryicon"] = battery_module ? 1 : 0
|
||||||
|
|
||||||
|
if(tesla_link && tesla_link.enabled && apc_powered)
|
||||||
|
data["PC_apclinkicon"] = "charging.gif"
|
||||||
|
|
||||||
switch(get_ntnet_status())
|
switch(get_ntnet_status())
|
||||||
if(0)
|
if(0)
|
||||||
data["PC_ntneticon"] = "sig_none.gif"
|
data["PC_ntneticon"] = "sig_none.gif"
|
||||||
@@ -463,33 +466,56 @@
|
|||||||
// Used in following function to reduce copypaste
|
// Used in following function to reduce copypaste
|
||||||
/obj/item/modular_computer/proc/power_failure(var/malfunction = 0)
|
/obj/item/modular_computer/proc/power_failure(var/malfunction = 0)
|
||||||
if(enabled) // Shut down the computer
|
if(enabled) // Shut down the computer
|
||||||
visible_message("<span class='danger'>\The [src]'s screen flickers \"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\" warning as it shuts down unexpectedly.</span>")
|
visible_message("<span class='danger'>\The [src]'s screen flickers briefly and then goes dark.</span>")
|
||||||
if(active_program)
|
if(active_program)
|
||||||
active_program.event_powerfailure(0)
|
active_program.event_powerfailure(0)
|
||||||
for(var/datum/computer_file/program/PRG in idle_threads)
|
for(var/datum/computer_file/program/PRG in idle_threads)
|
||||||
PRG.event_powerfailure(1)
|
PRG.event_powerfailure(1)
|
||||||
shutdown_computer(0)
|
shutdown_computer(0)
|
||||||
|
|
||||||
|
// Tries to use power from battery. Passing 0 as parameter results in this proc returning whether battery is functional or not.
|
||||||
|
/obj/item/modular_computer/proc/battery_power(var/power_usage = 0)
|
||||||
|
apc_powered = FALSE
|
||||||
|
if(!battery_module || !battery_module.check_functionality() || battery_module.battery.charge <= 0)
|
||||||
|
return FALSE
|
||||||
|
if(battery_module.battery.use(power_usage * CELLRATE) || ((power_usage == 0) && battery_module.battery.charge))
|
||||||
|
return TRUE
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
// Tries to use power from APC, if present.
|
||||||
|
/obj/item/modular_computer/proc/apc_power(var/power_usage = 0)
|
||||||
|
apc_powered = TRUE
|
||||||
|
// Tesla link was originally limited to machinery only, but this probably works too, and the benefit of being able to power all devices from an APC outweights
|
||||||
|
// the possible minor performance loss.
|
||||||
|
if(!tesla_link || !tesla_link.check_functionality())
|
||||||
|
return FALSE
|
||||||
|
var/area/A = get_area(src)
|
||||||
|
if(!istype(A) || !A.powered(EQUIP))
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
// At this point, we know that APC can power us for this tick. Check if we also need to charge our battery, and then actually use the power.
|
||||||
|
if(battery_module && (battery_module.battery.charge < battery_module.battery.maxcharge) && (power_usage > 0))
|
||||||
|
power_usage += tesla_link.passive_charging_rate
|
||||||
|
battery_module.battery.give(tesla_link.passive_charging_rate * CELLRATE)
|
||||||
|
|
||||||
|
A.use_power(power_usage, EQUIP)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
|
// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged
|
||||||
/obj/item/modular_computer/proc/handle_power()
|
/obj/item/modular_computer/proc/handle_power()
|
||||||
if(!battery_module || battery_module.battery.charge <= 0) // Battery-run but battery is depleted.
|
|
||||||
power_failure()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage
|
var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage
|
||||||
|
|
||||||
for(var/obj/item/weapon/computer_hardware/H in get_all_components())
|
for(var/obj/item/weapon/computer_hardware/H in get_all_components())
|
||||||
if(H.enabled)
|
if(H.enabled)
|
||||||
power_usage += H.power_usage
|
power_usage += H.power_usage
|
||||||
|
|
||||||
if(battery_module)
|
|
||||||
if(!battery_module.check_functionality())
|
|
||||||
power_failure(1)
|
|
||||||
return
|
|
||||||
battery_module.battery.use(power_usage * CELLRATE)
|
|
||||||
|
|
||||||
last_power_usage = power_usage
|
last_power_usage = power_usage
|
||||||
|
|
||||||
|
// First tries to charge from an APC, if APC is unavailable switches to battery power. If neither works the computer fails.
|
||||||
|
if(apc_power(power_usage))
|
||||||
|
return
|
||||||
|
if(battery_power(power_usage))
|
||||||
|
return
|
||||||
|
power_failure()
|
||||||
|
|
||||||
/obj/item/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
/obj/item/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||||
if(istype(W, /obj/item/weapon/card/id)) // ID Card, try to insert it.
|
if(istype(W, /obj/item/weapon/card/id)) // ID Card, try to insert it.
|
||||||
var/obj/item/weapon/card/id/I = W
|
var/obj/item/weapon/card/id/I = W
|
||||||
@@ -619,6 +645,12 @@
|
|||||||
return
|
return
|
||||||
found = 1
|
found = 1
|
||||||
processor_unit = H
|
processor_unit = H
|
||||||
|
else if(istype(H, /obj/item/weapon/computer_hardware/tesla_link))
|
||||||
|
if(tesla_link)
|
||||||
|
to_chat(user, "This computer's tesla link slot is already occupied by \the [tesla_link].")
|
||||||
|
return
|
||||||
|
found = 1
|
||||||
|
tesla_link = H
|
||||||
if(found)
|
if(found)
|
||||||
to_chat(user, "You install \the [H] into \the [src]")
|
to_chat(user, "You install \the [H] into \the [src]")
|
||||||
H.holder2 = src
|
H.holder2 = src
|
||||||
@@ -650,6 +682,9 @@
|
|||||||
processor_unit = null
|
processor_unit = null
|
||||||
found = 1
|
found = 1
|
||||||
critical = 1
|
critical = 1
|
||||||
|
if(tesla_link == H)
|
||||||
|
tesla_link = null
|
||||||
|
found = 1
|
||||||
if(found)
|
if(found)
|
||||||
if(user)
|
if(user)
|
||||||
to_chat(user, "You remove \the [H] from \the [src].")
|
to_chat(user, "You remove \the [H] from \the [src].")
|
||||||
@@ -678,6 +713,8 @@
|
|||||||
return battery_module
|
return battery_module
|
||||||
if(processor_unit && (processor_unit.name == name))
|
if(processor_unit && (processor_unit.name == name))
|
||||||
return processor_unit
|
return processor_unit
|
||||||
|
if(tesla_link && (tesla_link.name == name))
|
||||||
|
return tesla_link
|
||||||
return null
|
return null
|
||||||
|
|
||||||
// Returns list of all components
|
// Returns list of all components
|
||||||
@@ -697,6 +734,8 @@
|
|||||||
all_components.Add(battery_module)
|
all_components.Add(battery_module)
|
||||||
if(processor_unit)
|
if(processor_unit)
|
||||||
all_components.Add(processor_unit)
|
all_components.Add(processor_unit)
|
||||||
|
if(tesla_link)
|
||||||
|
all_components.Add(tesla_link)
|
||||||
return all_components
|
return all_components
|
||||||
|
|
||||||
/obj/item/modular_computer/proc/update_uis()
|
/obj/item/modular_computer/proc/update_uis()
|
||||||
|
|||||||
@@ -34,11 +34,6 @@
|
|||||||
else if(damage)
|
else if(damage)
|
||||||
to_chat(user, "It is damaged.")
|
to_chat(user, "It is damaged.")
|
||||||
|
|
||||||
// Power interaction is handled by our machinery part, due to machinery having APC connection.
|
|
||||||
/obj/item/modular_computer/processor/handle_power()
|
|
||||||
if(machinery_computer)
|
|
||||||
machinery_computer.handle_power()
|
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/New(var/comp)
|
/obj/item/modular_computer/processor/New(var/comp)
|
||||||
if(!comp || !istype(comp, /obj/machinery/modular_computer))
|
if(!comp || !istype(comp, /obj/machinery/modular_computer))
|
||||||
CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.")
|
CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.")
|
||||||
@@ -55,31 +50,10 @@
|
|||||||
/obj/item/modular_computer/processor/relay_qdel()
|
/obj/item/modular_computer/processor/relay_qdel()
|
||||||
qdel(machinery_computer)
|
qdel(machinery_computer)
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/find_hardware_by_name(var/N)
|
|
||||||
var/obj/item/weapon/computer_hardware/H = machinery_computer.find_hardware_by_name(N)
|
|
||||||
if(H)
|
|
||||||
return H
|
|
||||||
else
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/update_icon()
|
/obj/item/modular_computer/processor/update_icon()
|
||||||
if(machinery_computer)
|
if(machinery_computer)
|
||||||
return machinery_computer.update_icon()
|
return machinery_computer.update_icon()
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/get_header_data()
|
|
||||||
var/list/L = ..()
|
|
||||||
if(machinery_computer.tesla_link && machinery_computer.tesla_link.enabled && machinery_computer.powered())
|
|
||||||
L["PC_apclinkicon"] = "charging.gif"
|
|
||||||
return L
|
|
||||||
|
|
||||||
// Checks whether the machinery computer doesn't take power from APC network
|
|
||||||
/obj/item/modular_computer/processor/check_power_override()
|
|
||||||
if(!machinery_computer)
|
|
||||||
return 0
|
|
||||||
if(!machinery_computer.tesla_link || !machinery_computer.tesla_link.enabled)
|
|
||||||
return 0
|
|
||||||
return machinery_computer.powered()
|
|
||||||
|
|
||||||
// This thing is not meant to be used on it's own, get topic data from our machinery owner.
|
// This thing is not meant to be used on it's own, get topic data from our machinery owner.
|
||||||
/obj/item/modular_computer/processor/CanUseTopic(user, state)
|
/obj/item/modular_computer/processor/CanUseTopic(user, state)
|
||||||
if(!machinery_computer)
|
if(!machinery_computer)
|
||||||
@@ -94,40 +68,8 @@
|
|||||||
machinery_computer.use_power = 0
|
machinery_computer.use_power = 0
|
||||||
return
|
return
|
||||||
|
|
||||||
// Tesla links only work on machinery types, so we'll override the default try_install_component() proc
|
|
||||||
/obj/item/modular_computer/processor/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0)
|
|
||||||
if(istype(H, /obj/item/weapon/computer_hardware/tesla_link))
|
|
||||||
if(machinery_computer.tesla_link)
|
|
||||||
to_chat(user, "This computer's tesla link slot is already occupied by \the [machinery_computer.tesla_link].")
|
|
||||||
return
|
|
||||||
var/obj/item/weapon/computer_hardware/tesla_link/L = H
|
|
||||||
L.holder = machinery_computer
|
|
||||||
machinery_computer.tesla_link = L
|
|
||||||
found = 1
|
|
||||||
..(user, H, found)
|
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0)
|
|
||||||
if(machinery_computer.tesla_link == H)
|
|
||||||
machinery_computer.tesla_link = null
|
|
||||||
var/obj/item/weapon/computer_hardware/tesla_link/L = H
|
|
||||||
L.holder = null
|
|
||||||
found = 1
|
|
||||||
..(user, H, found, critical)
|
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/get_all_components()
|
|
||||||
var/list/all_components = ..()
|
|
||||||
if(machinery_computer && machinery_computer.tesla_link)
|
|
||||||
all_components.Add(machinery_computer.tesla_link)
|
|
||||||
return all_components
|
|
||||||
|
|
||||||
// Perform adjacency checks on our machinery counterpart, rather than on ourselves.
|
// Perform adjacency checks on our machinery counterpart, rather than on ourselves.
|
||||||
/obj/item/modular_computer/processor/Adjacent(var/atom/neighbor)
|
/obj/item/modular_computer/processor/Adjacent(var/atom/neighbor)
|
||||||
if(!machinery_computer)
|
if(!machinery_computer)
|
||||||
return 0
|
return 0
|
||||||
return machinery_computer.Adjacent(neighbor)
|
return machinery_computer.Adjacent(neighbor)
|
||||||
|
|
||||||
/obj/item/modular_computer/processor/turn_on(var/mob/user)
|
|
||||||
// If we have a tesla link on our machinery counterpart, enable it automatically. Lets computer without a battery work.
|
|
||||||
if(machinery_computer && machinery_computer.tesla_link)
|
|
||||||
machinery_computer.tesla_link.enabled = 1
|
|
||||||
..()
|
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
battery_module.charge_to_full()
|
battery_module.charge_to_full()
|
||||||
hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src)
|
hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src)
|
||||||
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
|
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
|
||||||
|
tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src)
|
||||||
|
|
||||||
// Alternative version, an average one, for higher ranked positions mostly
|
// Alternative version, an average one, for higher ranked positions mostly
|
||||||
/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New()
|
/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New()
|
||||||
@@ -18,4 +19,5 @@
|
|||||||
hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src)
|
hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src)
|
||||||
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
|
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
|
||||||
nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src)
|
nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src)
|
||||||
card_slot = new/obj/item/weapon/computer_hardware/card_slot(src)
|
card_slot = new/obj/item/weapon/computer_hardware/card_slot(src)
|
||||||
|
tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src)
|
||||||
@@ -7,7 +7,6 @@ var/list/global_modular_computers = list()
|
|||||||
name = "modular computer"
|
name = "modular computer"
|
||||||
desc = "An advanced computer."
|
desc = "An advanced computer."
|
||||||
|
|
||||||
var/battery_powered = 0 // Whether computer should be battery powered. It is set automatically
|
|
||||||
use_power = 0
|
use_power = 0
|
||||||
var/hardware_flag = 0 // A flag that describes this device type
|
var/hardware_flag = 0 // A flag that describes this device type
|
||||||
var/last_power_usage = 0 // Power usage during last tick
|
var/last_power_usage = 0 // Power usage during last tick
|
||||||
@@ -29,9 +28,6 @@ var/list/global_modular_computers = list()
|
|||||||
|
|
||||||
var/_max_damage = 100
|
var/_max_damage = 100
|
||||||
var/_break_damage = 50
|
var/_break_damage = 50
|
||||||
|
|
||||||
var/obj/item/weapon/computer_hardware/tesla_link/tesla_link // Tesla Link component of this computer. Allows remote charging from nearest APC.
|
|
||||||
|
|
||||||
var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things.
|
var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things.
|
||||||
|
|
||||||
/obj/machinery/modular_computer/attack_ghost(var/mob/observer/dead/user)
|
/obj/machinery/modular_computer/attack_ghost(var/mob/observer/dead/user)
|
||||||
@@ -46,7 +42,7 @@ var/list/global_modular_computers = list()
|
|||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
|
|
||||||
if(!cpu || !cpu.enabled)
|
if(!cpu || !cpu.enabled)
|
||||||
if (!(stat & NOPOWER) || battery_powered)
|
if (!(stat & NOPOWER))
|
||||||
overlays.Add(screen_icon_screensaver)
|
overlays.Add(screen_icon_screensaver)
|
||||||
set_light(0)
|
set_light(0)
|
||||||
return
|
return
|
||||||
@@ -102,72 +98,6 @@ var/list/global_modular_computers = list()
|
|||||||
cpu.name = src.name
|
cpu.name = src.name
|
||||||
cpu.process(1)
|
cpu.process(1)
|
||||||
|
|
||||||
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
|
|
||||||
/obj/machinery/modular_computer/proc/find_hardware_by_name(var/N)
|
|
||||||
if(tesla_link && (tesla_link.name == N))
|
|
||||||
return tesla_link
|
|
||||||
return null
|
|
||||||
|
|
||||||
// Used in following function to reduce copypaste
|
|
||||||
/obj/machinery/modular_computer/proc/power_failure(var/malfunction = 0)
|
|
||||||
if(cpu && cpu.enabled) // Shut down the computer
|
|
||||||
visible_message("<span class='danger'>\The [src]'s screen flickers [cpu.battery_module ? "\"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.</span>")
|
|
||||||
if(cpu)
|
|
||||||
cpu.shutdown_computer(0)
|
|
||||||
battery_powered = 0
|
|
||||||
stat |= NOPOWER
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
// Called by cpu item's process() automatically, handles our power interaction.
|
|
||||||
/obj/machinery/modular_computer/proc/handle_power()
|
|
||||||
if(cpu.battery_module && cpu.battery_module.battery.charge <= 0) // Battery-run but battery is depleted.
|
|
||||||
power_failure()
|
|
||||||
return 0
|
|
||||||
else if(!cpu.battery_module && (!powered() || !tesla_link || !tesla_link.enabled || !tesla_link.check_functionality())) // Not battery run, but lacking APC connection.
|
|
||||||
power_failure()
|
|
||||||
return 0
|
|
||||||
else if(stat & NOPOWER)
|
|
||||||
stat &= ~NOPOWER
|
|
||||||
|
|
||||||
if(cpu.battery_module && cpu.battery_module.battery.charge)
|
|
||||||
battery_powered = 1
|
|
||||||
else
|
|
||||||
battery_powered = 0
|
|
||||||
|
|
||||||
var/power_usage = cpu.screen_on ? base_active_power_usage : base_idle_power_usage
|
|
||||||
for(var/obj/item/weapon/computer_hardware/CH in src.cpu.get_all_components())
|
|
||||||
if(CH.enabled)
|
|
||||||
power_usage += CH.power_usage
|
|
||||||
|
|
||||||
// Wireless APC connection exists.
|
|
||||||
if(tesla_link && tesla_link.enabled && tesla_link.check_functionality())
|
|
||||||
idle_power_usage = power_usage
|
|
||||||
active_power_usage = idle_power_usage + 100 // APCLink only charges at 100W rate, but covers any power usage.
|
|
||||||
use_power = 1
|
|
||||||
// Battery is not fully charged. Begin slowly recharging.
|
|
||||||
if(cpu.battery_module && (cpu.battery_module.battery.charge < cpu.battery_module.battery.maxcharge))
|
|
||||||
use_power = 2
|
|
||||||
|
|
||||||
if(cpu.battery_module && powered() && (use_power == 2)) // Battery charging itself
|
|
||||||
cpu.battery_module.battery.give(100 * CELLRATE)
|
|
||||||
else if(cpu.battery_module && !powered()) // Unpowered, but battery covers the usage.
|
|
||||||
cpu.battery_module.battery.use(idle_power_usage * CELLRATE)
|
|
||||||
|
|
||||||
else // No wireless connection run only on battery.
|
|
||||||
use_power = 0
|
|
||||||
if (cpu.battery_module)
|
|
||||||
if(!cpu.battery_module.check_functionality())
|
|
||||||
power_failure(1)
|
|
||||||
return
|
|
||||||
cpu.battery_module.battery.use(power_usage * CELLRATE)
|
|
||||||
cpu.last_power_usage = power_usage
|
|
||||||
|
|
||||||
// Modular computers can have battery in them, we handle power in previous proc, so prevent this from messing it up for us.
|
|
||||||
/obj/machinery/modular_computer/power_change()
|
|
||||||
if(battery_powered)
|
|
||||||
return
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||||
if(cpu)
|
if(cpu)
|
||||||
return cpu.attackby(W, user)
|
return cpu.attackby(W, user)
|
||||||
|
|||||||
@@ -21,15 +21,14 @@
|
|||||||
/obj/machinery/modular_computer/console/buildable/New()
|
/obj/machinery/modular_computer/console/buildable/New()
|
||||||
..()
|
..()
|
||||||
// User-built consoles start as empty frames.
|
// User-built consoles start as empty frames.
|
||||||
qdel(tesla_link)
|
qdel(cpu.tesla_link)
|
||||||
qdel(cpu.network_card)
|
qdel(cpu.network_card)
|
||||||
qdel(cpu.hard_drive)
|
qdel(cpu.hard_drive)
|
||||||
|
|
||||||
/obj/machinery/modular_computer/console/New()
|
/obj/machinery/modular_computer/console/New()
|
||||||
..()
|
..()
|
||||||
cpu.battery_module = null
|
|
||||||
cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src)
|
cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src)
|
||||||
tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src)
|
cpu.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src)
|
||||||
cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) // Consoles generally have better HDDs due to lower space limitations
|
cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) // Consoles generally have better HDDs due to lower space limitations
|
||||||
var/area/A = get_area(src)
|
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.
|
// 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.
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
/obj/machinery/modular_computer/laptop/buildable/New()
|
/obj/machinery/modular_computer/laptop/buildable/New()
|
||||||
..()
|
..()
|
||||||
// User-built consoles start as empty frames.
|
// User-built consoles start as empty frames.
|
||||||
qdel(tesla_link)
|
qdel(cpu.tesla_link)
|
||||||
qdel(cpu.network_card)
|
qdel(cpu.network_card)
|
||||||
qdel(cpu.hard_drive)
|
qdel(cpu.hard_drive)
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
s.start()
|
s.start()
|
||||||
if(istype(computer, /obj/item/modular_computer/processor))
|
if(istype(computer, /obj/item/modular_computer/processor))
|
||||||
var/obj/item/modular_computer/processor/P = computer
|
var/obj/item/modular_computer/processor/P = computer
|
||||||
if(P.machinery_computer.tesla_link && prob(50))
|
if(P.tesla_link && prob(50))
|
||||||
qdel(P.machinery_computer.tesla_link)
|
qdel(P.tesla_link)
|
||||||
computer.visible_message("<span class='notice'>\The [computer]'s tesla link explodes in rain of sparks.</span>")
|
computer.visible_message("<span class='notice'>\The [computer]'s tesla link explodes in rain of sparks.</span>")
|
||||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||||
s.set_up(10, 1, computer.loc)
|
s.set_up(10, 1, computer.loc)
|
||||||
|
|||||||
@@ -63,6 +63,9 @@
|
|||||||
|
|
||||||
// Handles damage checks
|
// Handles damage checks
|
||||||
/obj/item/weapon/computer_hardware/proc/check_functionality()
|
/obj/item/weapon/computer_hardware/proc/check_functionality()
|
||||||
|
// Turned off
|
||||||
|
if(!enabled)
|
||||||
|
return 0
|
||||||
// Too damaged to work at all.
|
// Too damaged to work at all.
|
||||||
if(damage > damage_failure)
|
if(damage > damage_failure)
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -4,9 +4,10 @@
|
|||||||
critical = 0
|
critical = 0
|
||||||
enabled = 1
|
enabled = 1
|
||||||
icon_state = "teslalink"
|
icon_state = "teslalink"
|
||||||
hardware_size = 2 // Can't be installed into tablets
|
hardware_size = 1
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
|
||||||
var/obj/machinery/modular_computer/holder
|
var/obj/machinery/modular_computer/holder
|
||||||
|
var/passive_charging_rate = 250 // W
|
||||||
|
|
||||||
/obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L)
|
/obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L)
|
||||||
if(istype(L, /obj/machinery/modular_computer))
|
if(istype(L, /obj/machinery/modular_computer))
|
||||||
@@ -15,6 +16,6 @@
|
|||||||
..(L)
|
..(L)
|
||||||
|
|
||||||
/obj/item/weapon/computer_hardware/tesla_link/Destroy()
|
/obj/item/weapon/computer_hardware/tesla_link/Destroy()
|
||||||
if(holder && (holder.tesla_link == src))
|
if(holder2 && (holder2.tesla_link == src))
|
||||||
holder.tesla_link = null
|
holder2.tesla_link = null
|
||||||
..()
|
..()
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
var/dev_battery = 1 // 1: Default, 2: Upgraded, 3: Advanced
|
var/dev_battery = 1 // 1: Default, 2: Upgraded, 3: Advanced
|
||||||
var/dev_disk = 1 // 1: Default, 2: Upgraded, 3: Advanced
|
var/dev_disk = 1 // 1: Default, 2: Upgraded, 3: Advanced
|
||||||
var/dev_netcard = 0 // 0: None, 1: Basic, 2: Long-Range
|
var/dev_netcard = 0 // 0: None, 1: Basic, 2: Long-Range
|
||||||
var/dev_tesla = 0 // 0: None, 1: Standard (LAPTOP ONLY)
|
var/dev_tesla = 0 // 0: None, 1: Standard
|
||||||
var/dev_nanoprint = 0 // 0: None, 1: Standard
|
var/dev_nanoprint = 0 // 0: None, 1: Standard
|
||||||
var/dev_card = 0 // 0: None, 1: Standard
|
var/dev_card = 0 // 0: None, 1: Standard
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
if(dev_tesla)
|
if(dev_tesla)
|
||||||
total_price += 399
|
total_price += 399
|
||||||
if(fabricate)
|
if(fabricate)
|
||||||
fabricated_laptop.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop)
|
fabricated_laptop.cpu.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop.cpu)
|
||||||
if(dev_nanoprint)
|
if(dev_nanoprint)
|
||||||
total_price += 99
|
total_price += 99
|
||||||
if(fabricate)
|
if(fabricate)
|
||||||
@@ -153,6 +153,10 @@
|
|||||||
total_price += 199
|
total_price += 199
|
||||||
if(fabricate)
|
if(fabricate)
|
||||||
fabricated_tablet.card_slot = new/obj/item/weapon/computer_hardware/card_slot(fabricated_tablet)
|
fabricated_tablet.card_slot = new/obj/item/weapon/computer_hardware/card_slot(fabricated_tablet)
|
||||||
|
if(dev_tesla)
|
||||||
|
total_price += 399
|
||||||
|
if(fabricate)
|
||||||
|
fabricated_tablet.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_tablet)
|
||||||
return total_price
|
return total_price
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,10 @@
|
|||||||
<td>{{:helper.link('Standard', null, { "hw_cpu" : 1 }, data.hw_cpu == 1 ? 'selected' : null)}}
|
<td>{{:helper.link('Standard', null, { "hw_cpu" : 1 }, data.hw_cpu == 1 ? 'selected' : null)}}
|
||||||
<td>{{:helper.link('Advanced', null, { "hw_cpu" : 2 }, data.hw_cpu == 2 ? 'selected' : null)}}
|
<td>{{:helper.link('Advanced', null, { "hw_cpu" : 2 }, data.hw_cpu == 2 ? 'selected' : null)}}
|
||||||
<tr>
|
<tr>
|
||||||
|
{{/if}}
|
||||||
<td><b>Tesla Relay:</b>
|
<td><b>Tesla Relay:</b>
|
||||||
<td>{{:helper.link('None', null, { "hw_tesla" : 0 }, data.hw_tesla == 0 ? 'selected' : null)}}
|
<td>{{:helper.link('None', null, { "hw_tesla" : 0 }, data.hw_tesla == 0 ? 'selected' : null)}}
|
||||||
<td>{{:helper.link('Standard', null, { "hw_tesla" : 1 }, data.hw_tesla == 1 ? 'selected' : null)}}
|
<td>{{:helper.link('Standard', null, { "hw_tesla" : 1 }, data.hw_tesla == 1 ? 'selected' : null)}}
|
||||||
{{/if}}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>Nano Printer:</b>
|
<td><b>Nano Printer:</b>
|
||||||
<td>{{:helper.link('None', null, { "hw_nanoprint" : 0 }, data.hw_nanoprint == 0 ? 'selected' : null)}}
|
<td>{{:helper.link('None', null, { "hw_nanoprint" : 0 }, data.hw_nanoprint == 0 ? 'selected' : null)}}
|
||||||
@@ -53,11 +53,11 @@
|
|||||||
<hr>
|
<hr>
|
||||||
<b>Battery</b> allows your device to operate without external utility power source. Advanced batteries increase battery life.<br>
|
<b>Battery</b> allows your device to operate without external utility power source. Advanced batteries increase battery life.<br>
|
||||||
<b>Hard Drive</b> stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.<br>
|
<b>Hard Drive</b> stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.<br>
|
||||||
<b>Network Card</b> allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.<br>
|
<b>Network Card</b> allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts. Advanced cards also tend to have better bandwidth.<br>
|
||||||
<b>Processor Unit</b> is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.<br>
|
<b>Processor Unit</b> is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.<br>
|
||||||
<b>Tesla Relay</b> is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.<br>
|
<b>Tesla Relay</b> is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source.<br>
|
||||||
<b>Nano Printer</b> is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.<br>
|
<b>Nano Printer</b> is device that allows printing of various documents. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.<br>
|
||||||
<b>Card Reader</b> adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards.
|
<b>Card Reader</b> adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards.<br>
|
||||||
</div>
|
</div>
|
||||||
{{else data.state == 2}}
|
{{else data.state == 2}}
|
||||||
<h2>Step 3: Payment</h2>
|
<h2>Step 3: Payment</h2>
|
||||||
|
|||||||
Reference in New Issue
Block a user