[MDB IGNORE] Removes tablet cartridges + reworks a ton more (#66505)

- All tablets who previously had apps in a cartridge now has them built-into their tablet instead. This means it costs space for it.
- Rebalances the sizes of several apps to help them fit on Command tablets (Cargo ordering costed 20!!)
- Removes tablet cartridges, they've been reworked into a regular old portable disk (the same you use for toxins/borgs)
- Removes Signaller (the module required to run the signaller app) from tablets (likely will remove more in the future)
- Refactors the health/chem scanning app to not be as bad
- Dehardcodes detomatix resistance
- Ability to send PDA's to all is now tied to your access rather than a cartridge
- Moves 'eject disk' button to the very top of the UI
This commit is contained in:
John Willard
2022-05-11 12:04:11 -04:00
committed by GitHub
parent 95e72851c8
commit cc57407c79
53 changed files with 9149 additions and 9165 deletions

View File

@@ -1,30 +1,32 @@
/obj/proc/is_modular_computer()
return
return FALSE
//item
/obj/item/modular_computer/is_modular_computer()
return TRUE
//machine
/obj/machinery/modular_computer/is_modular_computer()
return TRUE
/obj/proc/get_modular_computer_part(part_type)
return null
/obj/item/modular_computer/is_modular_computer()
return TRUE
//item
/obj/item/modular_computer/get_modular_computer_part(part_type)
if(!part_type)
stack_trace("get_modular_computer_part() called without a valid part_type")
return null
return all_components[part_type]
/obj/machinery/modular_computer/is_modular_computer()
return TRUE
//machine
/obj/machinery/modular_computer/get_modular_computer_part(part_type)
if(!part_type)
stack_trace("get_modular_computer_part() called without a valid part_type")
return null
return cpu?.all_components[part_type]
/obj/proc/get_modular_computer_parts_examine(mob/user)
. = list()
if(!is_modular_computer())

View File

@@ -303,7 +303,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
. = ..()
context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove ID"
context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB] = "Remove Job Disk"
context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB] = "Remove Disk"
return CONTEXTUAL_SCREENTIP_SET
@@ -340,11 +340,12 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
if(.)
return
var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB]
var/obj/item/computer_hardware/hard_drive/ssd = all_components[MC_SDD]
if(!ssd)
return
if(uninstall_component(ssd, usr))
user.put_in_hands(ssd)
playsound(src, 'sound/machines/card_slide.ogg', 50)
/obj/item/modular_computer/proc/turn_on(mob/user)
var/issynth = issilicon(user) // Robots and AIs get different activation messages.

View File

@@ -66,7 +66,6 @@
data["disk"] = null
var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD]
var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB]
data["cardholder"] = FALSE
if(cardholder)
@@ -87,20 +86,9 @@
IDJob = cardholder.current_job,
)
if(ssd)
data["disk"] = ssd
data["disk_name"] = ssd.name
for(var/datum/computer_file/program/prog in ssd.stored_files)
var/running = FALSE
if(prog in idle_threads)
running = TRUE
data["disk_programs"] += list(list("name" = prog.filename, "desc" = prog.filedesc, "running" = running, "icon" = prog.program_icon, "alert" = prog.alert_pending))
data["removable_media"] = list()
if(all_components[MC_SDD])
data["removable_media"] += "removable storage disk"
data["removable_media"] += "Eject Disk"
var/obj/item/computer_hardware/ai_slot/intelliholder = all_components[MC_AI]
if(intelliholder?.stored_card)
data["removable_media"] += "intelliCard"
@@ -168,13 +156,10 @@
var/prog = params["name"]
var/is_disk = params["is_disk"]
var/datum/computer_file/program/P = null
var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB]
var/mob/user = usr
if(hard_drive && !is_disk)
P = hard_drive.find_file_by_name(prog)
if(ssd && is_disk)
P = ssd.find_file_by_name(prog)
if(!P || !istype(P)) // Program not found or it's not executable program.
to_chat(user, span_danger("\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning."))
@@ -228,20 +213,13 @@
var/param = params["name"]
var/mob/user = usr
switch(param)
if("removable storage disk")
if("Eject Disk")
var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD]
if(!portable_drive)
return
if(uninstall_component(portable_drive, usr))
user.put_in_hands(portable_drive)
playsound(src, 'sound/machines/card_slide.ogg', 50)
if("job disk")
var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB]
if(!ssd)
return
if(uninstall_component(ssd, usr))
user.put_in_hands(ssd)
playsound(src, 'sound/machines/card_slide.ogg', 50)
if("intelliCard")
var/obj/item/computer_hardware/ai_slot/intelliholder = all_components[MC_AI]
if(!intelliholder)

View File

@@ -1,85 +1,24 @@
/obj/item/modular_computer/tablet/pda/medical
name = "medical PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/medical
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#3F96CC"
/obj/item/modular_computer/tablet/pda/viro
name = "virology PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/medical
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#FAFAFA#355FAC#57C451"
/obj/item/modular_computer/tablet/pda/engineering
name = "engineering PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/engineering
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#D99A2E#69DBF3#E3DF3D"
/obj/item/modular_computer/tablet/pda/security
name = "security PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/security
greyscale_colors = "#EA3232#0000cc"
/obj/item/modular_computer/tablet/pda/detective
name = "detective PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/detective
greyscale_colors = "#805A2F#990202"
/obj/item/modular_computer/tablet/pda/warden
name = "warden PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/security
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#EA3232#0000CC#363636"
/obj/item/modular_computer/tablet/pda/janitor
name = "janitor PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/janitor
greyscale_colors = "#933ea8#235AB2"
/obj/item/modular_computer/tablet/pda/science
name = "scientist PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/signal/ordnance
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#B347BC"
/**
* Command
*/
/obj/item/modular_computer/tablet/pda/heads
default_disk = /obj/item/computer_hardware/hard_drive/role/head
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#67A364#a92323"
default_applications = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
)
/obj/item/modular_computer/tablet/pda/heads/hop
name = "head of personnel PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/hop
/obj/item/modular_computer/tablet/pda/heads/Initialize(mapload)
. = ..()
install_component(new /obj/item/computer_hardware/card_slot/secondary)
/obj/item/modular_computer/tablet/pda/heads/hos
name = "head of security PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/hos
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#EA3232#0000CC"
/obj/item/modular_computer/tablet/pda/heads/ce
name = "chief engineer PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/ce
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#D99A2E#69DBF3#FAFAFA"
/obj/item/modular_computer/tablet/pda/heads/cmo
name = "chief medical officer PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/cmo
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#3F96CC"
/obj/item/modular_computer/tablet/pda/heads/rd
name = "research director PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/rd
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#B347BC"
insert_type = /obj/item/pen/fountain
/obj/item/modular_computer/tablet/pda/captain
/obj/item/modular_computer/tablet/pda/heads/captain
name = "captain PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/captain
greyscale_config = /datum/greyscale_config/tablet/captain
greyscale_colors = "#2C7CB2#FF0000#FFFFFF#FFD55B"
insert_type = /obj/item/pen/fountain
@@ -88,10 +27,205 @@
. = ..()
RegisterSignal(src, COMSIG_TABLET_CHECK_DETONATE, .proc/tab_no_detonate)
/obj/item/modular_computer/tablet/pda/heads/hop
name = "head of personnel PDA"
default_applications = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/records/security,
/datum/computer_file/program/job_management,
)
/obj/item/modular_computer/tablet/pda/heads/hos
name = "head of security PDA"
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#EA3232#0000CC"
default_applications = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/records/security,
)
/obj/item/modular_computer/tablet/pda/heads/ce
name = "chief engineer PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#D99A2E#69DBF3#FAFAFA"
default_applications = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/alarm_monitor,
/datum/computer_file/program/power_monitor,
/datum/computer_file/program/supermatter_monitor,
)
/obj/item/modular_computer/tablet/pda/heads/cmo
name = "chief medical officer PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#3F96CC"
default_applications = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/phys_scanner/all,
/datum/computer_file/program/records/medical,
)
/obj/item/modular_computer/tablet/pda/heads/rd
name = "research director PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#B347BC"
insert_type = /obj/item/pen/fountain
default_applications = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/phys_scanner/chemistry,
/datum/computer_file/program/signal_commander,
)
/**
* Security
*/
/obj/item/modular_computer/tablet/pda/security
name = "security PDA"
greyscale_colors = "#EA3232#0000cc"
default_applications = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/tablet/pda/detective
name = "detective PDA"
greyscale_colors = "#805A2F#990202"
default_applications = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/phys_scanner/medical,
)
/obj/item/modular_computer/tablet/pda/warden
name = "warden PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#EA3232#0000CC#363636"
default_applications = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/robocontrol,
)
/**
* Engineering
*/
/obj/item/modular_computer/tablet/pda/engineering
name = "engineering PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#D99A2E#69DBF3#E3DF3D"
default_applications = list(
/datum/computer_file/program/power_monitor,
/datum/computer_file/program/supermatter_monitor,
)
/obj/item/modular_computer/tablet/pda/atmos
name = "atmospherics PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#EEDC43#00E5DA#727272"
default_applications = list(
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/alarm_monitor,
)
/**
* Science
*/
/obj/item/modular_computer/tablet/pda/science
name = "scientist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#B347BC"
default_applications = list(
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/signal_commander,
)
/obj/item/modular_computer/tablet/pda/roboticist
name = "roboticist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#484848#0099CC#D94927"
default_applications = list(
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/tablet/pda/geneticist
name = "geneticist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#FAFAFA#000099#0097CA"
default_applications = list(
/datum/computer_file/program/phys_scanner/medical,
/datum/computer_file/program/records/medical,
)
/**
* Medical
*/
/obj/item/modular_computer/tablet/pda/medical
name = "medical PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#3F96CC"
default_applications = list(
/datum/computer_file/program/phys_scanner/medical,
/datum/computer_file/program/records/medical,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/tablet/pda/viro
name = "virology PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#FAFAFA#355FAC#57C451"
default_applications = list(
/datum/computer_file/program/phys_scanner/medical,
/datum/computer_file/program/records/medical,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/tablet/pda/chemist
name = "chemist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#355FAC#EA6400"
default_applications = list(
/datum/computer_file/program/phys_scanner/chemistry,
)
/**
* Supply
*/
/obj/item/modular_computer/tablet/pda/cargo
name = "cargo technician PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/quartermaster
greyscale_colors = "#D6B328#6506CA"
default_applications = list(
/datum/computer_file/program/shipping,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/tablet/pda/quartermaster/Initialize(mapload)
. = ..()
@@ -99,9 +233,13 @@
/obj/item/modular_computer/tablet/pda/quartermaster
name = "quartermaster PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/quartermaster
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#D6B328#6506CA#927444"
default_applications = list(
/datum/computer_file/program/shipping,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/tablet/pda/quartermaster/Initialize(mapload)
. = ..()
@@ -112,6 +250,17 @@
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#927444#D6B328#6C3BA1"
/**
* Service
*/
/obj/item/modular_computer/tablet/pda/janitor
name = "janitor PDA"
greyscale_colors = "#933ea8#235AB2"
default_applications = list(
/datum/computer_file/program/radar/custodial_locator,
)
/obj/item/modular_computer/tablet/pda/chaplain
name = "chaplain PDA"
greyscale_config = /datum/greyscale_config/tablet/chaplain
@@ -119,21 +268,17 @@
/obj/item/modular_computer/tablet/pda/lawyer
name = "lawyer PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/lawyer
greyscale_colors = "#4C76C8#FFE243"
insert_type = /obj/item/pen/fountain
default_applications = list(
/datum/computer_file/program/records/security,
)
/obj/item/modular_computer/tablet/pda/botanist
name = "botanist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#50E193#E26F41#71A7CA"
/obj/item/modular_computer/tablet/pda/roboticist
name = "roboticist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#484848#0099CC#D94927"
default_disk = /obj/item/computer_hardware/hard_drive/role/roboticist
/obj/item/modular_computer/tablet/pda/cook
name = "cook PDA"
greyscale_colors = "#FAFAFA#A92323"
@@ -142,27 +287,9 @@
name = "bartender PDA"
greyscale_colors = "#333333#C7C7C7"
/obj/item/modular_computer/tablet/pda/atmos
name = "atmospherics PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/atmos
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#EEDC43#00E5DA#727272"
/obj/item/modular_computer/tablet/pda/chemist
name = "chemist PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/chemistry
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#355FAC#EA6400"
/obj/item/modular_computer/tablet/pda/geneticist
name = "geneticist PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/medical
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#FAFAFA#000099#0097CA"
/obj/item/modular_computer/tablet/pda/clown
name = "clown PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/virus/clown
loaded_cartridge = /obj/item/computer_hardware/hard_drive/portable/virus/clown
icon_state = "pda-clown"
greyscale_config = null
greyscale_colors = null
@@ -179,7 +306,7 @@
/obj/item/modular_computer/tablet/pda/clown/proc/AfterSlip(mob/living/carbon/human/M)
if (istype(M) && (M.real_name != saved_identification))
var/obj/item/computer_hardware/hard_drive/role/virus/clown/cart = all_components[MC_HDD_JOB]
var/obj/item/computer_hardware/hard_drive/portable/virus/clown/cart = all_components[MC_SDD]
if(istype(cart) && cart.charges < 5)
cart.charges++
playsound(src,'sound/machines/ping.ogg',30,TRUE)
@@ -189,7 +316,7 @@
/obj/item/modular_computer/tablet/pda/mime
name = "mime PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/virus/mime
loaded_cartridge = /obj/item/computer_hardware/hard_drive/portable/virus/mime
greyscale_config = /datum/greyscale_config/tablet/mime
greyscale_colors = "#FAFAFA#EA3232"
insert_type = /obj/item/toy/crayon/mime
@@ -205,11 +332,13 @@
/obj/item/modular_computer/tablet/pda/curator
name = "curator PDA"
default_disk = /obj/item/computer_hardware/hard_drive/role/curator
greyscale_config = null
greyscale_colors = null
icon_state = "pda-library"
insert_type = /obj/item/pen/fountain
default_applications = list(
/datum/computer_file/program/newscaster,
)
/obj/item/modular_computer/tablet/pda/curator/Initialize(mapload)
. = ..()
@@ -219,6 +348,10 @@
for(var/datum/computer_file/program/messenger/msg in hdd.stored_files)
msg.allow_emojis = TRUE
/**
* Non-roles
*/
/obj/item/modular_computer/tablet/pda/syndicate
name = "military PDA"
greyscale_colors = "#891417#80FF80"

View File

@@ -80,6 +80,17 @@
remove_pen(user)
///Finds how hard it is to send a virus to this tablet, checking all programs downloaded.
/obj/item/modular_computer/tablet/proc/get_detomatix_difficulty()
var/detomatix_difficulty
var/obj/item/computer_hardware/hard_drive/hdd = all_components[MC_HDD]
if(hdd)
for(var/datum/computer_file/program/downloaded_apps as anything in hdd.stored_files)
detomatix_difficulty += downloaded_apps.detomatix_resistance
return detomatix_difficulty
/obj/item/modular_computer/tablet/proc/tab_no_detonate()
SIGNAL_HANDLER
return COMPONENT_TABLET_NO_DETONATE
@@ -118,7 +129,7 @@
if(T)
T.hotspot_expose(700,125)
if(istype(all_components[MC_HDD_JOB], /obj/item/computer_hardware/hard_drive/role/virus/deto))
if(istype(all_components[MC_SDD], /obj/item/computer_hardware/hard_drive/portable/virus/deto))
explosion(src, devastation_range = -1, heavy_impact_range = 1, light_impact_range = 3, flash_range = 4)
else
explosion(src, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 2, flash_range = 3)
@@ -277,7 +288,10 @@
bypass_state = TRUE
allow_chunky = TRUE
var/default_disk = 0
///All applications this tablet has pre-installed
var/list/default_applications = list()
///The pre-installed cartridge that comes with the tablet
var/loaded_cartridge
/obj/item/modular_computer/tablet/pda/update_overlays()
. = ..()
@@ -305,8 +319,13 @@
install_component(new /obj/item/computer_hardware/identifier)
install_component(new /obj/item/computer_hardware/sensorpackage)
if(default_disk)
var/obj/item/computer_hardware/hard_drive/portable/disk = new default_disk(src)
if(!isnull(default_applications))
var/obj/item/computer_hardware/hard_drive/small/hard_drive = find_hardware_by_name("solid state drive")
for(var/datum/computer_file/program/default_programs as anything in default_applications)
hard_drive.store_file(new default_programs)
if(loaded_cartridge)
var/obj/item/computer_hardware/hard_drive/portable/disk = new loaded_cartridge(src)
install_component(disk)
if(insert_type)

View File

@@ -28,8 +28,7 @@
install_component(hard_drive)
install_component(new /obj/item/computer_hardware/card_slot)
install_component(new /obj/item/computer_hardware/network_card)
install_component(new /obj/item/computer_hardware/radio_card)
hard_drive.store_file(new /datum/computer_file/program/signaler)
hard_drive.store_file(new /datum/computer_file/program/signal_commander)
/obj/item/modular_computer/tablet/preset/cargo/Initialize(mapload)
. = ..()