mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-19 03:49:10 +01:00
Modular PDAs: The End of an Era (#10319)
PDAs are dead, long live PDAs. All trace of old PDAs has been scoured from the codebase, and in its place are modular computer PDAs that are feature-equivalent. Essentially every PDA function except the Syndicate detonation feature and Notepad has been ported over, and battery life for handheld computers has been boosted alongside the addition of charging cables to make things easier.
This commit is contained in:
@@ -69,6 +69,21 @@
|
||||
continue
|
||||
hard_drive.store_file(prog)
|
||||
|
||||
/obj/item/modular_computer/proc/handle_verbs()
|
||||
if(card_slot)
|
||||
if(card_slot.stored_card)
|
||||
verbs += /obj/item/modular_computer/proc/eject_id
|
||||
if(card_slot.stored_item)
|
||||
verbs += /obj/item/modular_computer/proc/eject_item
|
||||
if(portable_drive)
|
||||
verbs += /obj/item/modular_computer/proc/eject_usb
|
||||
if(battery_module && battery_module.hotswappable)
|
||||
verbs += /obj/item/modular_computer/proc/eject_battery
|
||||
if(ai_slot && ai_slot.stored_card)
|
||||
verbs += /obj/item/modular_computer/proc/eject_ai
|
||||
if(personal_ai)
|
||||
verbs += /obj/item/modular_computer/proc/eject_personal_ai
|
||||
|
||||
/obj/item/modular_computer/Initialize()
|
||||
. = ..()
|
||||
listener = new(LISTENER_MODULAR_COMPUTER, src)
|
||||
@@ -76,7 +91,9 @@
|
||||
install_default_hardware()
|
||||
if(hard_drive)
|
||||
install_default_programs()
|
||||
handle_verbs()
|
||||
update_icon()
|
||||
initial_name = name
|
||||
|
||||
/obj/item/modular_computer/Destroy()
|
||||
kill_program(TRUE)
|
||||
@@ -87,6 +104,11 @@
|
||||
QDEL_NULL(listener)
|
||||
return ..()
|
||||
|
||||
/obj/item/modular_computer/CouldUseTopic(var/mob/user)
|
||||
..()
|
||||
if(iscarbon(user))
|
||||
playsound(src, 'sound/machines/pda_click.ogg', 20)
|
||||
|
||||
/obj/item/modular_computer/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(computer_emagged)
|
||||
to_chat(user, SPAN_WARNING("\The [src] has already been emagged."))
|
||||
@@ -155,10 +177,11 @@
|
||||
|
||||
// Relays kill program request to currently active program. Use this to quit current program.
|
||||
/obj/item/modular_computer/proc/kill_program(var/forced = FALSE)
|
||||
if(active_program)
|
||||
active_program.kill_program(forced)
|
||||
if(active_program && active_program.kill_program(forced))
|
||||
src.vueui_transfer(active_program)
|
||||
active_program = null
|
||||
else
|
||||
return FALSE
|
||||
var/mob/user = usr
|
||||
if(user && istype(user) && !forced)
|
||||
ui_interact(user) // Re-open the UI on this computer. It should show the main screen now.
|
||||
@@ -195,14 +218,14 @@
|
||||
enabled = FALSE
|
||||
update_icon()
|
||||
|
||||
/obj/item/modular_computer/proc/enable_computer(var/mob/user)
|
||||
/obj/item/modular_computer/proc/enable_computer(var/mob/user, var/ar_forced=FALSE)
|
||||
enabled = TRUE
|
||||
update_icon()
|
||||
|
||||
// Autorun feature
|
||||
var/datum/computer_file/data/autorun = hard_drive ? hard_drive.find_file_by_name("autorun") : null
|
||||
if(istype(autorun))
|
||||
run_program(autorun.stored_data, user)
|
||||
run_program(autorun.stored_data, user, ar_forced)
|
||||
|
||||
for(var/s in enabled_services)
|
||||
var/datum/computer_file/program/service = s
|
||||
@@ -227,7 +250,7 @@
|
||||
ui_interact(user) // Re-open the UI on this computer. It should show the main screen now.
|
||||
|
||||
|
||||
/obj/item/modular_computer/proc/run_program(prog, mob/user)
|
||||
/obj/item/modular_computer/proc/run_program(prog, mob/user, var/forced=FALSE)
|
||||
var/datum/computer_file/program/P = null
|
||||
if(!istype(user))
|
||||
user = usr
|
||||
@@ -255,7 +278,7 @@
|
||||
to_chat(user, SPAN_WARNING("\The [src] displays, \"Maximal CPU load reached. Unable to run another program.\"."))
|
||||
return
|
||||
|
||||
if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) // The program requires NTNet connection, but we are not connected to NTNet.
|
||||
if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature) && !forced) // The program requires NTNet connection, but we are not connected to NTNet.
|
||||
to_chat(user, FONT_SMALL(SPAN_WARNING("\The [src] displays, \"NETWORK ERROR - Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\".")))
|
||||
return
|
||||
|
||||
@@ -353,11 +376,10 @@
|
||||
if(S in enabled_services)
|
||||
return
|
||||
|
||||
enabled_services += S
|
||||
|
||||
// Start service
|
||||
S.service_activate()
|
||||
S.service_state = PROGRAM_STATE_ACTIVE
|
||||
if(S.service_activate())
|
||||
enabled_services += S
|
||||
S.service_state = PROGRAM_STATE_ACTIVE
|
||||
|
||||
|
||||
/obj/item/modular_computer/proc/disable_service(service, mob/user, var/datum/computer_file/program/S = null)
|
||||
@@ -383,3 +405,73 @@
|
||||
to_chat(user, message)
|
||||
return
|
||||
audible_message(message, hearing_distance = message_range)
|
||||
|
||||
// TODO: Make pretty much everything use these helpers.
|
||||
/obj/item/modular_computer/proc/output_notice(var/message, var/message_range)
|
||||
message = "[icon2html(src, viewers(message_range, get_turf(src)))][src]: " + message
|
||||
output_message(SPAN_NOTICE(message), message_range)
|
||||
|
||||
/obj/item/modular_computer/proc/output_error(var/message, var/message_range)
|
||||
message = "[icon2html(src, viewers(message_range, get_turf(src)))][src]: " + message
|
||||
output_message(SPAN_WARNING(message), message_range)
|
||||
|
||||
/obj/item/modular_computer/proc/get_notification(var/message, var/message_range = 1, var/atom/source)
|
||||
if(silent)
|
||||
return
|
||||
playsound(get_turf(src), 'sound/machines/twobeep.ogg', 20, 1)
|
||||
message = "[icon2html(src, viewers(message_range, get_turf(src)))][src]: [SPAN_DANGER("-!-")] Notification from [source]: " + message
|
||||
output_message(FONT_SMALL(SPAN_BOLD(message)), message_range)
|
||||
|
||||
/obj/item/modular_computer/proc/register_account(var/datum/computer_file/program/PRG = null)
|
||||
var/obj/item/card/id/id = GetID()
|
||||
if(PRG)
|
||||
output_message(SPAN_NOTICE("\The [src] shows a notice: \"[PRG.filedesc] requires a registered NTNRC account. Registering automatically...\""))
|
||||
if(!istype(id))
|
||||
output_message(SPAN_WARNING("\The [src] shows an error: \"No ID card found!\""))
|
||||
return FALSE
|
||||
if(id.chat_registered)
|
||||
output_message(SPAN_WARNING("\The [src] shows an error: \"This card is already registered to another account!\""))
|
||||
return FALSE
|
||||
|
||||
id.chat_registered = TRUE
|
||||
registered_id = id
|
||||
output_message(SPAN_NOTICE("\The [src] beeps: \"Registration successful!\""))
|
||||
playsound(get_turf(src), 'sound/machines/ping.ogg', 20, 0)
|
||||
return registered_id
|
||||
|
||||
/obj/item/modular_computer/proc/unregister_account()
|
||||
if(!registered_id)
|
||||
return FALSE
|
||||
|
||||
registered_id.chat_registered = FALSE
|
||||
registered_id = null
|
||||
|
||||
if(hard_drive)
|
||||
var/datum/computer_file/program/P = hard_drive.find_file_by_name("ntnrc_client")
|
||||
P.event_unregistered()
|
||||
|
||||
output_message(SPAN_NOTICE("\The [src] beeps: \"Successfully unregistered ID!\""))
|
||||
playsound(get_turf(src), 'sound/machines/ping.ogg', 20, 0)
|
||||
return TRUE
|
||||
|
||||
/obj/item/modular_computer/proc/set_autorun(var/fname)
|
||||
if(!fname)
|
||||
return FALSE
|
||||
|
||||
var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun")
|
||||
|
||||
if(istype(autorun) && autorun.stored_data == fname)
|
||||
autorun.stored_data = null
|
||||
return -1
|
||||
|
||||
autorun = new /datum/computer_file/data(src)
|
||||
autorun.filename = "autorun"
|
||||
autorun.stored_data = fname
|
||||
hard_drive.store_file(autorun)
|
||||
return TRUE
|
||||
|
||||
/obj/item/modular_computer/proc/silence_notifications()
|
||||
for (var/datum/computer_file/program/P in hard_drive.stored_files)
|
||||
if (istype(P))
|
||||
P.event_silentmode()
|
||||
silent = !silent
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
return
|
||||
found = TRUE
|
||||
portable_drive = H
|
||||
verbs += /obj/item/modular_computer/proc/eject_usb
|
||||
else if(istype(H, /obj/item/computer_hardware/hard_drive))
|
||||
if(hard_drive)
|
||||
to_chat(user, SPAN_WARNING("\The [src]'s hard drive slot is already occupied by \the [hard_drive]."))
|
||||
@@ -39,6 +40,8 @@
|
||||
return
|
||||
found = TRUE
|
||||
battery_module = H
|
||||
if(battery_module.hotswappable)
|
||||
verbs += /obj/item/modular_computer/proc/eject_battery
|
||||
else if(istype(H, /obj/item/computer_hardware/processor_unit))
|
||||
if(processor_unit)
|
||||
to_chat(user, SPAN_WARNING("\The [src]'s processor slot is already occupied by \the [processor_unit]."))
|
||||
@@ -51,6 +54,7 @@
|
||||
return
|
||||
found = TRUE
|
||||
ai_slot = H
|
||||
verbs += /obj/item/modular_computer/proc/eject_ai
|
||||
else if(istype(H, /obj/item/computer_hardware/tesla_link))
|
||||
if(tesla_link)
|
||||
to_chat(user, SPAN_WARNING("\The [src]'s tesla link slot is already occupied by \the [tesla_link]."))
|
||||
@@ -63,6 +67,7 @@
|
||||
return
|
||||
personal_ai = H
|
||||
to_chat(user, SPAN_NOTICE("You install \the [H] into \the [src]."))
|
||||
verbs += /obj/item/modular_computer/proc/eject_personal_ai
|
||||
personal_ai.pai.parent_computer = src
|
||||
personal_ai.pai.verbs += /mob/living/silicon/pai/proc/personal_computer_interact
|
||||
to_chat(personal_ai.pai, SPAN_NOTICE("You gain access to \the [src]'s computronics."))
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// Eject ID card from computer, if it has ID slot with card inside.
|
||||
/obj/item/modular_computer/verb/eject_id()
|
||||
/obj/item/modular_computer/proc/eject_id()
|
||||
set name = "Eject ID"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
@@ -7,49 +6,12 @@
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
proc_eject_id(usr)
|
||||
|
||||
// Eject ID card from computer, if it has ID slot with card inside.
|
||||
/obj/item/modular_computer/verb/eject_usb()
|
||||
set name = "Eject Portable Storage"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
proc_eject_usb(usr)
|
||||
|
||||
/obj/item/modular_computer/verb/eject_ai()
|
||||
set name = "Eject AI Storage"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
proc_eject_ai(usr)
|
||||
|
||||
/obj/item/modular_computer/verb/eject_personal_ai()
|
||||
set name = "Eject Personal AI"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
proc_eject_personal_ai(usr)
|
||||
|
||||
/obj/item/modular_computer/proc/proc_eject_id(mob/user)
|
||||
if(!user)
|
||||
user = usr
|
||||
|
||||
if(!card_slot)
|
||||
to_chat(user, SPAN_WARNING("\The [src] does not have an ID card slot."))
|
||||
to_chat(usr, SPAN_WARNING("\The [src] does not have an ID card slot."))
|
||||
return
|
||||
|
||||
if(!card_slot.stored_card)
|
||||
to_chat(user, SPAN_WARNING("There is no card in \the [src]."))
|
||||
to_chat(usr, SPAN_WARNING("There is no card in \the [src]."))
|
||||
return
|
||||
|
||||
if(active_program)
|
||||
@@ -57,57 +19,155 @@
|
||||
|
||||
for(var/datum/computer_file/program/P in idle_threads)
|
||||
P.event_idremoved(TRUE)
|
||||
if(ishuman(user))
|
||||
user.put_in_hands(card_slot.stored_card)
|
||||
else
|
||||
card_slot.stored_card.forceMove(get_turf(src))
|
||||
card_slot.stored_card = null
|
||||
|
||||
card_slot.eject_id(usr)
|
||||
|
||||
update_uis()
|
||||
to_chat(user, SPAN_NOTICE("You remove the card from \the [src]."))
|
||||
to_chat(usr, SPAN_NOTICE("You remove the card from \the [src]."))
|
||||
|
||||
|
||||
/obj/item/modular_computer/proc/proc_eject_usb(mob/user)
|
||||
if(!user)
|
||||
user = usr
|
||||
/obj/item/modular_computer/proc/eject_usb()
|
||||
set name = "Eject Portable Storage"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(!portable_drive)
|
||||
to_chat(user, SPAN_WARNING("There is no portable drive connected to \the [src]."))
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
uninstall_component(user, portable_drive, put_in_hands = TRUE)
|
||||
if(!portable_drive)
|
||||
to_chat(usr, SPAN_WARNING("There is no portable drive connected to \the [src]."))
|
||||
return
|
||||
|
||||
uninstall_component(usr, portable_drive, put_in_hands = TRUE)
|
||||
verbs -= /obj/item/modular_computer/proc/eject_usb
|
||||
update_uis()
|
||||
|
||||
/obj/item/modular_computer/proc/proc_eject_ai(mob/user)
|
||||
if(!user)
|
||||
user = usr
|
||||
/obj/item/modular_computer/proc/eject_item()
|
||||
set name = "Eject Stored Item"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
if(!card_slot)
|
||||
to_chat(usr, SPAN_WARNING("\The [src] does not have an ID card slot."))
|
||||
return
|
||||
|
||||
if(!card_slot.stored_item)
|
||||
to_chat(usr, SPAN_WARNING("There is no item stored in \the [src]."))
|
||||
return
|
||||
|
||||
var/I = card_slot.stored_item.name
|
||||
|
||||
if(ishuman(usr))
|
||||
usr.put_in_hands(card_slot.stored_item)
|
||||
else
|
||||
card_slot.stored_item.forceMove(get_turf(src))
|
||||
|
||||
card_slot.stored_item = null
|
||||
update_uis()
|
||||
verbs -= /obj/item/modular_computer/proc/eject_item
|
||||
to_chat(usr, SPAN_NOTICE("You remove \the [I] from \the [src]."))
|
||||
|
||||
/obj/item/modular_computer/proc/eject_battery(mob/usr = usr)
|
||||
set name = "Eject Battery"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
if(!battery_module)
|
||||
to_chat(usr, SPAN_WARNING("\The [src] doesn't have a battery installed."))
|
||||
return
|
||||
|
||||
if(!battery_module.hotswappable)
|
||||
to_chat(usr, SPAN_WARNING("\The [src]'s battery isn't removable without tools!"))
|
||||
return
|
||||
|
||||
uninstall_component(usr, battery_module, put_in_hands = TRUE)
|
||||
verbs -= /obj/item/modular_computer/proc/eject_battery
|
||||
update_uis()
|
||||
|
||||
/obj/item/modular_computer/proc/eject_ai()
|
||||
set name = "Eject AI Storage"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
if(!ai_slot)
|
||||
to_chat(user, SPAN_WARNING("\The [src] doesn't have an intellicard slot."))
|
||||
to_chat(usr, SPAN_WARNING("\The [src] doesn't have an intellicard slot."))
|
||||
return
|
||||
|
||||
if(!ai_slot.stored_card)
|
||||
to_chat(user, SPAN_WARNING("There is no intellicard connected to \the [src]."))
|
||||
to_chat(usr, SPAN_WARNING("There is no intellicard connected to \the [src]."))
|
||||
return
|
||||
|
||||
if(ishuman(user))
|
||||
user.put_in_hands(ai_slot.stored_card)
|
||||
if(ishuman(usr))
|
||||
usr.put_in_hands(ai_slot.stored_card)
|
||||
else
|
||||
ai_slot.stored_card.forceMove(get_turf(src))
|
||||
ai_slot.stored_card = null
|
||||
ai_slot.update_power_usage()
|
||||
verbs -= /obj/item/modular_computer/proc/eject_ai
|
||||
update_uis()
|
||||
|
||||
/obj/item/modular_computer/proc/proc_eject_personal_ai(mob/user)
|
||||
if(!personal_ai)
|
||||
to_chat(user, SPAN_WARNING("There is no personal AI connected to \the [src]."))
|
||||
/obj/item/modular_computer/proc/eject_personal_ai()
|
||||
set name = "Eject Personal AI"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(use_check_and_message(usr))
|
||||
return
|
||||
|
||||
personal_ai.pai.verbs -= /mob/living/silicon/pai/proc/personal_computer_interact
|
||||
personal_ai.pai.parent_computer = null
|
||||
to_chat(personal_ai.pai, SPAN_NOTICE("You lose access to \the [src]'s computronics."))
|
||||
uninstall_component(user, personal_ai, put_in_hands = TRUE)
|
||||
if(!personal_ai)
|
||||
to_chat(usr, SPAN_WARNING("There is no personal AI connected to \the [src]."))
|
||||
return
|
||||
|
||||
uninstall_component(usr, personal_ai, put_in_hands = TRUE)
|
||||
verbs -= /obj/item/modular_computer/proc/eject_personal_ai
|
||||
update_uis()
|
||||
|
||||
/obj/item/modular_computer/AltClick(var/mob/user)
|
||||
if(use_check_and_message(user, 32))
|
||||
return
|
||||
|
||||
if(!card_slot)
|
||||
to_chat(user, SPAN_WARNING("\The [src] does not have an ID card slot."))
|
||||
return
|
||||
|
||||
if(card_slot.stored_card)
|
||||
eject_id()
|
||||
else if(card_slot.stored_item)
|
||||
eject_item()
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("\The [src] does not have a card or item stored in the card slot."))
|
||||
|
||||
/obj/item/modular_computer/attack(mob/living/M, mob/living/user)
|
||||
if(scan_mode == SCANNER_MEDICAL)
|
||||
health_scan_mob(M, user, TRUE)
|
||||
|
||||
/obj/item/modular_computer/afterattack(atom/A, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!proximity_flag)
|
||||
return
|
||||
if(scan_mode == SCANNER_REAGENT)
|
||||
if(!isobj(A) || isnull(A.reagents))
|
||||
return
|
||||
if(A.reagents.reagent_list.len)
|
||||
var/reagents_length = A.reagents.reagent_list.len
|
||||
to_chat(user, SPAN_NOTICE("[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found."))
|
||||
for(var/re in A.reagents.reagent_list)
|
||||
to_chat(user, SPAN_NOTICE(" [re]"))
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("No active chemical agents found in [A]."))
|
||||
|
||||
else if(scan_mode == SCANNER_GAS)
|
||||
analyze_gases(A, user)
|
||||
|
||||
/obj/item/modular_computer/attack_ghost(var/mob/abstract/observer/user)
|
||||
if(enabled)
|
||||
ui_interact(user)
|
||||
@@ -152,15 +212,29 @@
|
||||
if(!card_slot)
|
||||
to_chat(user, SPAN_WARNING("You try to insert \the [I] into \the [src], but it does not have an ID card slot installed."))
|
||||
return
|
||||
if(card_slot.stored_card)
|
||||
to_chat(user, SPAN_WARNING("You try to insert \the [I] into \the [src], but its ID card slot is occupied."))
|
||||
return
|
||||
|
||||
user.drop_from_inventory(I, src)
|
||||
card_slot.stored_card = I
|
||||
if(card_slot.stored_card)
|
||||
eject_id()
|
||||
|
||||
card_slot.insert_id(I)
|
||||
update_uis()
|
||||
to_chat(user, SPAN_NOTICE("You insert \the [I] into \the [src]."))
|
||||
return
|
||||
if(is_type_in_list(W, card_slot?.allowed_items))
|
||||
if(!card_slot)
|
||||
to_chat(user, SPAN_WARNING("You try to insert \the [W] into \the [src], but it does not have an ID card slot installed."))
|
||||
return
|
||||
if(card_slot.stored_item)
|
||||
to_chat(user, SPAN_WARNING("You try to insert \the [W] into \the [src], but its storage slot is occupied."))
|
||||
return
|
||||
|
||||
user.drop_from_inventory(W, src)
|
||||
card_slot.stored_item = W
|
||||
update_uis()
|
||||
verbs += /obj/item/modular_computer/proc/eject_item
|
||||
to_chat(user, SPAN_NOTICE("You insert \the [W] into \the [src]."))
|
||||
return
|
||||
if(istype(W, /obj/item/paper))
|
||||
if(!nano_printer)
|
||||
return
|
||||
@@ -230,6 +304,8 @@
|
||||
var/mob/M = usr
|
||||
if(use_check_and_message(M))
|
||||
return
|
||||
if(istype(over_object, /obj/machinery/power/apc) && tesla_link)
|
||||
return over_object.attackby(src, M)
|
||||
if(!istype(over_object, /obj/screen) && !(over_object == src))
|
||||
return attack_self(M)
|
||||
|
||||
|
||||
@@ -92,9 +92,9 @@
|
||||
if(!istype(P) || P.program_state == PROGRAM_STATE_KILLED)
|
||||
return
|
||||
|
||||
P.kill_program(TRUE)
|
||||
if(P.kill_program())
|
||||
to_chat(user, SPAN_NOTICE("Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed."))
|
||||
update_uis()
|
||||
to_chat(user, SPAN_NOTICE("Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed."))
|
||||
|
||||
if(href_list["PC_runprogram"] )
|
||||
. = run_program(href_list["PC_runprogram"], usr)
|
||||
@@ -103,16 +103,14 @@
|
||||
if(href_list["PC_setautorun"])
|
||||
if(!hard_drive)
|
||||
return
|
||||
var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun")
|
||||
if(!istype(autorun))
|
||||
autorun = new /datum/computer_file/data()
|
||||
autorun.filename = "autorun"
|
||||
hard_drive.store_file(autorun)
|
||||
if(autorun.stored_data == href_list["PC_setautorun"])
|
||||
autorun.stored_data = null
|
||||
else
|
||||
autorun.stored_data = href_list["PC_setautorun"]
|
||||
|
||||
set_autorun(href_list["PC_setautorun"])
|
||||
|
||||
if(href_list["PC_register"])
|
||||
if(registered_id)
|
||||
unregister_account()
|
||||
else if(GetID())
|
||||
register_account()
|
||||
|
||||
if( href_list["PC_toggleservice"] )
|
||||
toggle_service(href_list["PC_toggleservice"], usr)
|
||||
return 1
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// This is the base type that handles everything. Subtypes can be easily created by tweaking variables in this file to your liking.
|
||||
|
||||
/obj/item/modular_computer
|
||||
name = "Modular Computer"
|
||||
desc = "A modular computer. You shouldn't see this."
|
||||
@@ -21,6 +22,12 @@
|
||||
var/_app_preset_type // Used for specifying the software preset of the console
|
||||
var/ambience_last_played // Last time sound was played
|
||||
var/pAI_lock = FALSE // Toggles whether pAI can interact with the modular computer while installed in it
|
||||
var/obj/item/card/id/registered_id = null // ID used for chat client registering
|
||||
var/scan_mode = null // Mode used for health/reagent scanners
|
||||
var/silent = FALSE
|
||||
var/doorcode = "smindicate"
|
||||
var/hidden = FALSE
|
||||
var/initial_name
|
||||
|
||||
// Modular computers can run on various devices. Each DEVICE (Laptop, Console, Tablet,..)
|
||||
// must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently
|
||||
|
||||
+7
-3
@@ -1,19 +1,23 @@
|
||||
/obj/item/modular_computer/tablet
|
||||
/obj/item/modular_computer/handheld
|
||||
name = "tablet computer"
|
||||
desc = "A portable device for your needs on the go."
|
||||
desc_info = "To deploy the charging cable on this device, either drag and drop it over a nearby APC, or click on the APC with the computer in hand."
|
||||
icon = 'icons/obj/modular_tablet.dmi'
|
||||
icon_state = "tablet"
|
||||
icon_state_unpowered = "tablet"
|
||||
icon_state_menu = "menu"
|
||||
slot_flags = SLOT_ID
|
||||
slot_flags = SLOT_ID | SLOT_BELT
|
||||
can_reset = TRUE
|
||||
hardware_flag = PROGRAM_TABLET
|
||||
max_hardware_size = 1
|
||||
w_class = ITEMSIZE_SMALL
|
||||
light_strength = 2 // Same as PDAs
|
||||
|
||||
/obj/item/modular_computer/tablet/Initialize()
|
||||
/obj/item/modular_computer/handheld/Initialize()
|
||||
. = ..()
|
||||
set_icon()
|
||||
|
||||
/obj/item/modular_computer/handheld/proc/set_icon()
|
||||
icon_state += pick("", "-blue", "-green", "-red", "-brown")
|
||||
icon_state_unpowered = icon_state
|
||||
icon_state_broken = icon_state
|
||||
@@ -0,0 +1,27 @@
|
||||
/obj/item/modular_computer/handheld/pda
|
||||
name = "\improper PDA"
|
||||
desc = "The latest in portable microcomputer solutions from Thinktronic Systems, LTD."
|
||||
icon = 'icons/obj/pda.dmi'
|
||||
icon_state = "pda"
|
||||
icon_state_screensaver = "off"
|
||||
icon_state_unpowered = "pda"
|
||||
var/icon_add // this is the "bar" part in "pda-bar"
|
||||
enrolled = DEVICE_PRIVATE
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/set_icon()
|
||||
if(icon_add)
|
||||
icon_state += "-[icon_add]"
|
||||
icon_state_unpowered = icon_state
|
||||
icon_state_broken = icon_state
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/old
|
||||
icon = 'icons/obj/pda_old.dmi'
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/rugged
|
||||
icon = 'icons/obj/pda_rugged.dmi'
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/slate
|
||||
icon = 'icons/obj/pda_slate.dmi'
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/smart
|
||||
icon = 'icons/obj/pda_smart.dmi'
|
||||
@@ -23,10 +23,6 @@
|
||||
computer_host = loc
|
||||
else
|
||||
return
|
||||
// Let's remove integrated verbs for ejecting things.
|
||||
verbs -= /obj/item/modular_computer/verb/eject_ai
|
||||
verbs -= /obj/item/modular_computer/verb/eject_id
|
||||
verbs -= /obj/item/modular_computer/verb/eject_usb
|
||||
|
||||
/obj/item/modular_computer/silicon/computer_use_power(power_usage)
|
||||
// If we have host like AI, borg or pAI we handle there power
|
||||
|
||||
@@ -1,37 +1,31 @@
|
||||
/obj/item/modular_computer/wristbound
|
||||
/obj/item/modular_computer/handheld/wristbound
|
||||
name = "wristbound computer"
|
||||
desc = "A portable wristbound device for your needs on the go. Quite comfortable."
|
||||
desc_info = "A NanoTrasen design, this wristbound computer allows the user to quickly and safely access critical info, without taking their hands out of the equation."
|
||||
desc_fluff = "A NanoTrasen design, this wristbound computer allows the user to quickly and safely access critical info, without taking their hands out of the equation."
|
||||
icon = 'icons/obj/modular_wristbound.dmi'
|
||||
icon_state = "wristbound"
|
||||
icon_state_unpowered = "wristbound"
|
||||
icon_state_menu = "menu"
|
||||
icon_state_screensaver = "standby"
|
||||
hardware_flag = PROGRAM_WRISTBOUND
|
||||
slot_flags = SLOT_GLOVES|SLOT_ID
|
||||
can_reset = TRUE
|
||||
max_hardware_size = 1
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
light_strength = 1
|
||||
menu_light_color = COLOR_GREEN
|
||||
|
||||
/obj/item/modular_computer/CouldUseTopic(var/mob/user)
|
||||
..()
|
||||
if(iscarbon(user))
|
||||
playsound(src, 'sound/machines/pda_click.ogg', 20)
|
||||
|
||||
/obj/item/modular_computer/wristbound/Initialize()
|
||||
/obj/item/modular_computer/handheld/wristbound/set_icon()
|
||||
icon_state_unpowered = icon_state
|
||||
icon_state_broken = icon_state
|
||||
. = ..()
|
||||
|
||||
/obj/item/modular_computer/wristbound/attack_hand(mob/user)
|
||||
/obj/item/modular_computer/handheld/wristbound/attack_hand(mob/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.gloves == src || H.wear_id == src)
|
||||
return attack_self(user)
|
||||
..()
|
||||
|
||||
/obj/item/modular_computer/wristbound/MouseDrop(obj/over_object)
|
||||
/obj/item/modular_computer/handheld/wristbound/MouseDrop(obj/over_object)
|
||||
if(!canremove)
|
||||
return
|
||||
if(!over_object || over_object == src)
|
||||
@@ -59,9 +53,3 @@
|
||||
usr.u_equip(src)
|
||||
usr.put_in_l_hand(src,FALSE)
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/item/modular_computer/wristbound/AltClick(mob/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.gloves == src)
|
||||
H.unEquip(src)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
/obj/item/modular_computer/console/preset/command/captain
|
||||
name = "captain's console"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/captain
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/console/preset/command/hop
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
/obj/item/modular_computer/handheld/custom_loadout/cheap/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/micro(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
/obj/item/modular_computer/handheld/custom_loadout/advanced/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/small(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
nano_printer = new /obj/item/computer_hardware/nano_printer(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
|
||||
// Cargo Delivery
|
||||
/obj/item/modular_computer/handheld/custom_loadout/advanced/cargo_delivery
|
||||
_app_preset_type = /datum/modular_computer_app_presets/cargo_delivery
|
||||
enrolled = DEVICE_PRIVATE
|
||||
|
||||
// Tablet PDA presets
|
||||
/obj/item/modular_computer/handheld/preset
|
||||
enrolled = DEVICE_PRIVATE
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new/obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/small(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
card_slot.stored_item = new /obj/item/pen
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/civilian
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/civilian/bartender/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/civilian/librarian/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
silence_notifications()
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/civilian/janitor
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian/janitor
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/civilian/chaplain/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/civilian/lawyer/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
// Engineering
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/engineering
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/engineering/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/silver
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/engineering/atmos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/atmos
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/engineering/ce
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/ce
|
||||
|
||||
// Supply
|
||||
/obj/item/modular_computer/handheld/preset/supply
|
||||
_app_preset_type = /datum/modular_computer_app_presets/supply
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/supply/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/silver
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/supply/qm/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
// Medical
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/medical
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/medical/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/white
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/medical/psych/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/white
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/medical/cmo
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical/cmo
|
||||
|
||||
// Science
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/research
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/research/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/white
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/research/rd
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research/rd
|
||||
|
||||
// Security
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/security
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/security/detective
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/investigations
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/security/hos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/hos
|
||||
|
||||
// Command / Misc
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/head
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/cciaa
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/hop
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/hop
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/captain
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/captain/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/captain
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/bst
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/command/bst/attack_hand()
|
||||
if(!usr)
|
||||
return
|
||||
if(!istype(usr, /mob/living/carbon/human/bst))
|
||||
to_chat(usr, SPAN_ALERT("Your hand seems to go right through the [src]. It's like it doesn't exist."))
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/ert
|
||||
_app_preset_type = /datum/modular_computer_app_presets/ert
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/syndicate
|
||||
_app_preset_type = /datum/modular_computer_app_presets/merc
|
||||
computer_emagged = TRUE
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/preset/syndicate/install_default_hardware()
|
||||
..()
|
||||
network_card = new /obj/item/computer_hardware/network_card/signaler(src)
|
||||
@@ -13,6 +13,7 @@
|
||||
nano_printer = new /obj/item/computer_hardware/nano_printer(src)
|
||||
nano_printer.max_paper = 10
|
||||
nano_printer.stored_paper = 5
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
|
||||
/obj/item/modular_computer/laptop/preset/install_default_programs()
|
||||
..()
|
||||
@@ -75,7 +76,7 @@
|
||||
/obj/item/modular_computer/laptop/preset/command/captain
|
||||
name = "captain's laptop"
|
||||
desc = "A portable computer belonging to the captain."
|
||||
_app_preset_type = /datum/modular_computer_app_presets/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/captain
|
||||
|
||||
/obj/item/modular_computer/laptop/preset/command/captain/install_default_hardware()
|
||||
..()
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
/obj/item/modular_computer/handheld/pda/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/small(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
card_slot.stored_item = new /obj/item/pen
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
// Civilian
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/bartender/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/librarian
|
||||
icon_add = "libb"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/librarian/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
silence_notifications()
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/janitor
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian/janitor
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/chaplain/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/lawyer
|
||||
icon_add = "h"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/lawyer/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/clown
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian/clown
|
||||
icon_add = "clown"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/clown/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/crayon
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/mime
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian/mime
|
||||
icon_add = "mime"
|
||||
|
||||
// Engineering
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/engineering
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering
|
||||
icon_add = "e"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/engineering/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/silver
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/engineering/atmos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/atmos
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/engineering/ce
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/ce
|
||||
icon_add = "ce"
|
||||
|
||||
// Supply
|
||||
/obj/item/modular_computer/handheld/pda/supply
|
||||
_app_preset_type = /datum/modular_computer_app_presets/supply
|
||||
icon_add = "sup"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/supply/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/silver
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/supply/miner
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/supply/qm
|
||||
icon_add = "q"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/supply/qm/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
// Medical
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/medical
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical
|
||||
icon_add = "m"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/medical/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/white
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/medical/psych/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/white
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/medical/cmo
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical/cmo
|
||||
icon_add = "cmo"
|
||||
|
||||
// Science
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/research
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research
|
||||
icon_add = "tox"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/research/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/white
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/research/rd
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research/rd
|
||||
icon_add = "rd"
|
||||
|
||||
// Security
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/security
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security
|
||||
icon_add = "s"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/security/detective
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/investigations
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/security/hos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/hos
|
||||
icon_add = "hos"
|
||||
|
||||
// Command / Misc
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
icon_add = "h"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/head
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/cciaa
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
icon_add = "h"
|
||||
// detonate = 0
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/hop
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/hop
|
||||
icon_add = "hop"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/captain
|
||||
icon_add = "c"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/captain/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/captain
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/bst
|
||||
icon_add = "h"
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/command/bst/attack_hand()
|
||||
if(!usr)
|
||||
return
|
||||
if(!istype(usr, /mob/living/carbon/human/bst))
|
||||
to_chat(usr, SPAN_ALERT("Your hand seems to go right through the [src]. It's like it doesn't exist."))
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/ert
|
||||
_app_preset_type = /datum/modular_computer_app_presets/ert
|
||||
icon_add = "s"
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/syndicate
|
||||
_app_preset_type = /datum/modular_computer_app_presets/merc
|
||||
icon_add = "syn"
|
||||
computer_emagged = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/syndicate/install_default_hardware()
|
||||
..()
|
||||
network_card = new /obj/item/computer_hardware/network_card/signaler(src)
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/clear
|
||||
icon_add = "transp"
|
||||
|
||||
/obj/item/modular_computer/handheld/pda/civilian/merchant
|
||||
hidden = TRUE
|
||||
@@ -1,23 +0,0 @@
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/micro(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module/nano(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/small(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
nano_printer = new /obj/item/computer_hardware/nano_printer(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
|
||||
// Cargo Delivery
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/cargo_delivery
|
||||
_app_preset_type = /datum/modular_computer_app_presets/cargo_delivery
|
||||
enrolled = 1
|
||||
@@ -1,79 +1,253 @@
|
||||
/obj/item/modular_computer/wristbound/preset/cheap/install_default_hardware()
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/cheap/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/micro(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module/nano(src)
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/cheap/generic
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/cheap/generic
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/install_default_hardware()
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/small(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
nano_printer = new /obj/item/computer_hardware/nano_printer(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module/hotswap(src)
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/cargo
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/cargo
|
||||
icon_state = "wristbound_cargo"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/cargo_delivery
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/engineering
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/engineering
|
||||
icon_state = "wristbound_engineering"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/medical
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/medical
|
||||
icon_state = "wristbound_medical"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/security
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/security
|
||||
icon_state = "wristbound_security"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/security/investigations
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/security/investigations
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/investigations
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/research
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/research
|
||||
icon_state = "wristbound_science"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command
|
||||
icon_state = "wristbound_command"
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
enrolled = 1
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command/ce
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command/ce
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/ce
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command/rd
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command/rd
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research/rd
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command/cmo
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command/cmo
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical/cmo
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command/hop
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command/hop
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/hop
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command/hos
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command/hos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/hos
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/command/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/captain
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/command/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/captain
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/generic
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/generic
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
/obj/item/modular_computer/wristbound/preset/advanced/representative
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/advanced/representative
|
||||
_app_preset_type = /datum/modular_computer_app_presets/representative
|
||||
enrolled = 1
|
||||
enrolled = DEVICE_PRIVATE
|
||||
|
||||
// Wristbound PDA presets
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda
|
||||
enrolled = DEVICE_PRIVATE
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new /obj/item/computer_hardware/processor_unit/small(src)
|
||||
hard_drive = new /obj/item/computer_hardware/hard_drive/small(src)
|
||||
network_card = new /obj/item/computer_hardware/network_card(src)
|
||||
battery_module = new /obj/item/computer_hardware/battery_module(src)
|
||||
card_slot = new /obj/item/computer_hardware/card_slot(src)
|
||||
card_slot.stored_item = new /obj/item/pen
|
||||
tesla_link = new /obj/item/computer_hardware/tesla_link/charging_cable(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/civilian
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/bartender/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/librarian/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
silence_notifications()
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/janitor
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian/janitor
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/chaplain/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/lawyer/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
// Engineering
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/engineering
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering
|
||||
icon_state = "wristbound_engineering"
|
||||
item_state = "wristbound_engineering"
|
||||
icon_state_unpowered = "wristbound_engineering"
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/engineering/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/silver
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/engineering/atmos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/atmos
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/engineering/ce
|
||||
_app_preset_type = /datum/modular_computer_app_presets/engineering/ce
|
||||
|
||||
// Supply
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/supply
|
||||
_app_preset_type = /datum/modular_computer_app_presets/supply
|
||||
icon_state = "wristbound_cargo"
|
||||
item_state = "wristbound_cargo"
|
||||
icon_state_unpowered = "wristbound_cargo"
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/supply/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/silver
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/supply/qm/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/supply/miner
|
||||
_app_preset_type = /datum/modular_computer_app_presets/civilian
|
||||
|
||||
// Medical
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/medical
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical
|
||||
icon_state = "wristbound_medical"
|
||||
item_state = "wristbound_medical"
|
||||
icon_state_unpowered = "wristbound_medical"
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/medical/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/white
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/medical/psych/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/white
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/medical/cmo
|
||||
_app_preset_type = /datum/modular_computer_app_presets/medical/cmo
|
||||
|
||||
// Science
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/research
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research
|
||||
icon_state = "wristbound_science"
|
||||
item_state = "wristbound_science"
|
||||
icon_state_unpowered = "wristbound_science"
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/research/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/white
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/research/rd
|
||||
_app_preset_type = /datum/modular_computer_app_presets/research/rd
|
||||
|
||||
// Security
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/security
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security
|
||||
icon_state = "wristbound_security"
|
||||
item_state = "wristbound_security"
|
||||
icon_state_unpowered = "wristbound_security"
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/security/detective
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/investigations
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/security/hos
|
||||
_app_preset_type = /datum/modular_computer_app_presets/security/hos
|
||||
|
||||
// Command / Misc
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
icon_state = "wristbound_command"
|
||||
item_state = "wristbound_command"
|
||||
icon_state_unpowered = "wristbound_command"
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/head
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/cciaa
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/hop
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/hop
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/captain
|
||||
_app_preset_type = /datum/modular_computer_app_presets/command/captain
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/captain/Initialize()
|
||||
. = ..()
|
||||
card_slot.stored_item = new /obj/item/pen/fountain/captain
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/bst
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/command/bst/attack_hand()
|
||||
if(!usr)
|
||||
return
|
||||
if(!istype(usr, /mob/living/carbon/human/bst))
|
||||
to_chat(usr, SPAN_ALERT("Your hand seems to go right through the [src]. It's like it doesn't exist."))
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/ert
|
||||
_app_preset_type = /datum/modular_computer_app_presets/ert
|
||||
icon_state = "wristbound_command"
|
||||
item_state = "wristbound_command"
|
||||
icon_state_unpowered = "wristbound_command"
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/syndicate
|
||||
_app_preset_type = /datum/modular_computer_app_presets/merc
|
||||
icon_state = "wristbound_security"
|
||||
item_state = "wristbound_security"
|
||||
icon_state_unpowered = "wristbound_security"
|
||||
computer_emagged = TRUE
|
||||
hidden = TRUE
|
||||
|
||||
/obj/item/modular_computer/handheld/wristbound/preset/pda/syndicate/install_default_hardware()
|
||||
..()
|
||||
network_card = new /obj/item/computer_hardware/network_card/signaler(src)
|
||||
|
||||
Reference in New Issue
Block a user