mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 04:30:44 +01:00
[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:
@@ -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())
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
var/alert_silenced = FALSE
|
||||
/// Whether to highlight our program in the main screen. Intended for alerts, but loosely available for any need to notify of changed conditions. Think Windows task bar highlighting. Available even if alerts are muted.
|
||||
var/alert_pending = FALSE
|
||||
/// How well this program will help combat detomatix viruses.
|
||||
var/detomatix_resistance = NONE
|
||||
|
||||
/datum/computer_file/program/New(obj/item/modular_computer/comp = null)
|
||||
..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
program_icon_state = "alert-green"
|
||||
extended_desc = "This program provides visual interface for a station's alarm system."
|
||||
requires_ntnet = 1
|
||||
size = 5
|
||||
size = 4
|
||||
tgui_id = "NtosStationAlertConsole"
|
||||
program_icon = "bell"
|
||||
/// If there is any station alert
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
extended_desc = "Nanotrasen Internal Requisition Network interface for supply purchasing using a department budget account."
|
||||
requires_ntnet = TRUE
|
||||
usage_flags = PROGRAM_LAPTOP | PROGRAM_TABLET
|
||||
size = 20
|
||||
size = 10
|
||||
tgui_id = "NtosCargo"
|
||||
///Are you actually placing orders with it?
|
||||
var/requestonly = TRUE
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
size = 4
|
||||
tgui_id = "NtosCrewManifest"
|
||||
program_icon = "clipboard-list"
|
||||
detomatix_resistance = DETOMATIX_RESIST_MAJOR
|
||||
|
||||
/datum/computer_file/program/crew_manifest/ui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
to_chat(usr, span_notice("ERROR: Device has receiving disabled."))
|
||||
return
|
||||
if(sending_virus)
|
||||
var/obj/item/computer_hardware/hard_drive/role/virus/disk = computer.all_components[MC_HDD_JOB]
|
||||
var/obj/item/computer_hardware/hard_drive/portable/virus/disk = computer.all_components[MC_SDD]
|
||||
if(istype(disk))
|
||||
disk.send_virus(target, usr)
|
||||
return(UI_UPDATE)
|
||||
@@ -176,8 +176,6 @@
|
||||
/datum/computer_file/program/messenger/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
|
||||
var/obj/item/computer_hardware/hard_drive/role/disk = computer.all_components[MC_HDD_JOB]
|
||||
|
||||
data["owner"] = computer.saved_identification
|
||||
data["messages"] = messages
|
||||
data["ringer_status"] = ringer_status
|
||||
@@ -188,9 +186,14 @@
|
||||
data["isSilicon"] = is_silicon
|
||||
data["photo"] = photo_path
|
||||
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
if(card_slot)
|
||||
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : ""
|
||||
data["canSpam"] = (ACCESS_LAWYER in id_card?.access)
|
||||
|
||||
var/obj/item/computer_hardware/hard_drive/portable/virus/disk = computer.all_components[MC_SDD]
|
||||
if(disk)
|
||||
data["canSpam"] = disk.CanSpam()
|
||||
data["virus_attach"] = istype(disk, /obj/item/computer_hardware/hard_drive/role/virus)
|
||||
data["virus_attach"] = istype(disk, /obj/item/computer_hardware/hard_drive/portable/virus)
|
||||
data["sending_virus"] = sending_virus
|
||||
|
||||
return data
|
||||
@@ -332,7 +335,7 @@
|
||||
L = get(holder.holder, /mob/living/silicon)
|
||||
|
||||
if(L && (L.stat == CONSCIOUS || L.stat == SOFT_CRIT))
|
||||
var/reply = "(<a href='byond://?src=[REF(src)];choice=[signal.data["rigged"] ? "Mess_us_up" : "Message"];skiprefresh=1;target=[signal.data["ref"]]'>Reply</a>)"
|
||||
var/reply = "(<a href='byond://?src=[REF(src)];choice=[signal.data["rigged"] ? "mess_us_up" : "Message"];skiprefresh=1;target=[signal.data["ref"]]'>Reply</a>)"
|
||||
var/hrefstart
|
||||
var/hrefend
|
||||
if (isAI(L))
|
||||
@@ -360,7 +363,7 @@
|
||||
switch(href_list["choice"])
|
||||
if("Message")
|
||||
send_message(usr, list(locate(href_list["target"])))
|
||||
if("Mess_us_up")
|
||||
if("mess_us_up")
|
||||
if(!HAS_TRAIT(src, TRAIT_PDA_CAN_EXPLODE))
|
||||
var/obj/item/modular_computer/tablet/comp = computer
|
||||
comp.explode(usr, from_message_menu = TRUE)
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define TABLET_MEDICAL_MODE (1<<0)
|
||||
#define TABLET_CHEMISTRY_MODE (1<<1)
|
||||
|
||||
/datum/computer_file/program/phys_scanner
|
||||
filename = "phys_scanner"
|
||||
filedesc = "Physical Scanner"
|
||||
@@ -10,32 +13,32 @@
|
||||
program_icon = "barcode"
|
||||
|
||||
var/current_mode = 0
|
||||
var/available_modes = 0
|
||||
var/available_modes = NONE
|
||||
|
||||
var/last_record = ""
|
||||
|
||||
/datum/computer_file/program/phys_scanner/proc/ReadModes()
|
||||
var/reads = list()
|
||||
|
||||
if(available_modes & DISK_CHEM)
|
||||
if(available_modes & TABLET_CHEMISTRY_MODE)
|
||||
reads += "Reagent"
|
||||
|
||||
if(available_modes & DISK_MED)
|
||||
if(available_modes & TABLET_MEDICAL_MODE)
|
||||
reads += "Health"
|
||||
|
||||
return reads
|
||||
|
||||
/datum/computer_file/program/phys_scanner/proc/ReadCurrent()
|
||||
if(current_mode & DISK_CHEM)
|
||||
if(current_mode & TABLET_CHEMISTRY_MODE)
|
||||
return "Reagent"
|
||||
if(current_mode & DISK_MED)
|
||||
if(current_mode & TABLET_MEDICAL_MODE)
|
||||
return "Health"
|
||||
|
||||
/datum/computer_file/program/phys_scanner/tap(atom/A, mob/living/user, params)
|
||||
. = ..()
|
||||
|
||||
switch(current_mode)
|
||||
if(DISK_CHEM)
|
||||
if(TABLET_CHEMISTRY_MODE)
|
||||
if(!isnull(A.reagents))
|
||||
if(A.reagents.reagent_list.len > 0)
|
||||
var/reagents_length = A.reagents.reagent_list.len
|
||||
@@ -46,7 +49,7 @@
|
||||
last_record = "No active chemical agents found in [A]."
|
||||
else
|
||||
last_record = "No significant chemical agents found in [A]."
|
||||
if(DISK_MED)
|
||||
if(TABLET_MEDICAL_MODE)
|
||||
var/mob/living/carbon/carbon = A
|
||||
if(istype(carbon))
|
||||
carbon.visible_message(span_notice("[user] analyzes [A]'s vitals."))
|
||||
@@ -61,9 +64,9 @@
|
||||
if("selectMode")
|
||||
switch(params["newMode"])
|
||||
if("Reagent")
|
||||
current_mode = DISK_CHEM
|
||||
current_mode = TABLET_CHEMISTRY_MODE
|
||||
if("Health")
|
||||
current_mode = DISK_MED
|
||||
current_mode = TABLET_MEDICAL_MODE
|
||||
|
||||
return UI_UPDATE
|
||||
|
||||
@@ -76,3 +79,15 @@
|
||||
data["available_modes"] = ReadModes()
|
||||
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/phys_scanner/medical
|
||||
available_modes = TABLET_MEDICAL_MODE
|
||||
|
||||
/datum/computer_file/program/phys_scanner/chemistry
|
||||
available_modes = TABLET_CHEMISTRY_MODE
|
||||
|
||||
/datum/computer_file/program/phys_scanner/all
|
||||
available_modes = TABLET_MEDICAL_MODE | TABLET_CHEMISTRY_MODE
|
||||
|
||||
#undef TABLET_MEDICAL_MODE
|
||||
#undef TABLET_CHEMISTRY_MODE
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
transfer_access = list(ACCESS_ENGINE)
|
||||
usage_flags = PROGRAM_CONSOLE
|
||||
requires_ntnet = 0
|
||||
size = 9
|
||||
size = 8
|
||||
tgui_id = "NtosPowerMonitor"
|
||||
program_icon = "plug"
|
||||
detomatix_resistance = DETOMATIX_RESIST_MINOR
|
||||
|
||||
var/has_alert = 0
|
||||
var/datum/weakref/attached_wire_ref
|
||||
|
||||
@@ -258,6 +258,7 @@
|
||||
available_on_ntnet = TRUE
|
||||
program_icon = "broom"
|
||||
size = 2
|
||||
detomatix_resistance = DETOMATIX_RESIST_MINOR
|
||||
|
||||
/datum/computer_file/program/radar/custodial_locator/find_atom()
|
||||
return locate(selected) in GLOB.janitor_devices
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
size = 4
|
||||
usage_flags = PROGRAM_TABLET | PROGRAM_LAPTOP
|
||||
available_on_ntnet = FALSE
|
||||
detomatix_resistance = DETOMATIX_RESIST_MINOR
|
||||
|
||||
var/mode
|
||||
|
||||
|
||||
@@ -6,15 +6,14 @@
|
||||
program_icon_state = "robot"
|
||||
extended_desc = "A remote controller used for giving basic commands to non-sentient robots."
|
||||
requires_ntnet = TRUE
|
||||
size = 12
|
||||
size = 6
|
||||
tgui_id = "NtosRoboControl"
|
||||
program_icon = "robot"
|
||||
///Number of simple robots on-station.
|
||||
var/botcount = 0
|
||||
///Access granted by the used to summon robots.
|
||||
var/list/current_access = list()
|
||||
///Whether or not this is the cartridge program version.
|
||||
var/cart_mode = FALSE
|
||||
///List of all ping types you can annoy drones with.
|
||||
var/list/drone_ping_types = list(
|
||||
"Low",
|
||||
"Medium",
|
||||
@@ -29,23 +28,18 @@
|
||||
var/list/botlist = list()
|
||||
var/list/mulelist = list()
|
||||
|
||||
var/obj/item/computer_hardware/hard_drive/role/job_disk = computer ? computer.all_components[MC_HDD_JOB] : null
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = computer ? computer.all_components[MC_CARD] : null
|
||||
data["have_id_slot"] = !!card_slot
|
||||
if(computer)
|
||||
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : ""
|
||||
data["id_owner"] = id_card
|
||||
if(cart_mode && job_disk)
|
||||
data["id_owner"] = "JOB DISK OVERRIDE"
|
||||
|
||||
botcount = 0
|
||||
|
||||
for(var/mob/living/simple_animal/bot/simple_bot as anything in GLOB.bots_list)
|
||||
if(simple_bot.z != zlevel || !(simple_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) //Only non-emagged bots on the same Z-level are detected!
|
||||
continue
|
||||
if(computer && !simple_bot.check_access(user) && !cart_mode) // Only check Bots we can access)
|
||||
continue
|
||||
if(!(simple_bot.bot_type in job_disk.bot_access) && cart_mode)
|
||||
if(computer && !simple_bot.check_access(user)) // Only check Bots we can access)
|
||||
continue
|
||||
var/list/newbot = list(
|
||||
"name" = simple_bot.name,
|
||||
|
||||
+9
-26
@@ -1,4 +1,4 @@
|
||||
/datum/computer_file/program/signaler
|
||||
/datum/computer_file/program/signal_commander
|
||||
filename = "signaler"
|
||||
filedesc = "SignalCommander"
|
||||
category = PROGRAM_CATEGORY_MISC
|
||||
@@ -15,35 +15,18 @@
|
||||
/// Radio connection datum used by signalers.
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/datum/computer_file/program/signaler/run_program(mob/living/user)
|
||||
. = ..()
|
||||
if (!.)
|
||||
return
|
||||
var/obj/item/computer_hardware/hard_drive/role/signal/disk = computer?.get_modular_computer_part(MC_HDD_JOB)
|
||||
if(!(computer?.get_modular_computer_part(MC_SIGNALER) || istype(disk))) //Giving a clue to users why the program is spitting out zeros.
|
||||
to_chat(user, span_warning("\The [computer] flashes an error: \"hardware\\signal_hardware\\startup.bin -- file not found\"."))
|
||||
|
||||
|
||||
/datum/computer_file/program/signaler/ui_data(mob/user)
|
||||
/datum/computer_file/program/signal_commander/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
var/obj/item/computer_hardware/radio_card/sensor = computer?.get_modular_computer_part(MC_SIGNALER)
|
||||
var/obj/item/computer_hardware/hard_drive/role/signal/disk = computer?.get_modular_computer_part(MC_HDD_JOB)
|
||||
if(sensor?.check_functionality() || istype(disk))
|
||||
data["frequency"] = signal_frequency
|
||||
data["code"] = signal_code
|
||||
data["minFrequency"] = MIN_FREE_FREQ
|
||||
data["maxFrequency"] = MAX_FREE_FREQ
|
||||
data["frequency"] = signal_frequency
|
||||
data["code"] = signal_code
|
||||
data["minFrequency"] = MIN_FREE_FREQ
|
||||
data["maxFrequency"] = MAX_FREE_FREQ
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/signaler/ui_act(action, list/params)
|
||||
/datum/computer_file/program/signal_commander/ui_act(action, list/params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/obj/item/computer_hardware/radio_card/sensor = computer?.get_modular_computer_part(MC_SIGNALER)
|
||||
var/obj/item/computer_hardware/hard_drive/role/signal/disk = computer?.get_modular_computer_part(MC_HDD_JOB)
|
||||
if(!(sensor?.check_functionality() || istype(disk)))
|
||||
playsound(src, 'sound/machines/scanbuzz.ogg', 100, FALSE)
|
||||
return
|
||||
switch(action)
|
||||
if("signal")
|
||||
INVOKE_ASYNC(src, .proc/signal)
|
||||
@@ -63,7 +46,7 @@
|
||||
signal_code = initial(signal_code)
|
||||
. = TRUE
|
||||
|
||||
/datum/computer_file/program/signaler/proc/signal()
|
||||
/datum/computer_file/program/signal_commander/proc/signal()
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
@@ -78,7 +61,7 @@
|
||||
var/datum/signal/signal = new(list("code" = signal_code), logging_data = logging_data)
|
||||
radio_connection.post_signal(computer, signal)
|
||||
|
||||
/datum/computer_file/program/signaler/proc/set_frequency(new_frequency)
|
||||
/datum/computer_file/program/signal_commander/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(computer, signal_frequency)
|
||||
signal_frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(computer, signal_frequency, RADIO_SIGNALER)
|
||||
@@ -4,7 +4,7 @@
|
||||
program_icon = "signal"
|
||||
program_icon_state = "generic"
|
||||
requires_ntnet = TRUE
|
||||
size = 4
|
||||
size = 1
|
||||
|
||||
extended_desc = "An app used to change the message on the station status displays."
|
||||
tgui_id = "NtosStatus"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
program_icon_state = "research"
|
||||
extended_desc = "Connect to the internal science server in order to assist in station research efforts."
|
||||
requires_ntnet = TRUE
|
||||
size = 16
|
||||
size = 10
|
||||
tgui_id = "NtosTechweb"
|
||||
program_icon = "atom"
|
||||
required_access = list(ACCESS_HEADS, ACCESS_RND)
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
store_file(messenger)
|
||||
|
||||
// Syndicate variant - very slight better
|
||||
/obj/item/computer_hardware/hard_drive/small/syndicate
|
||||
/obj/item/computer_hardware/hard_drive/portable/syndicate
|
||||
desc = "An efficient SSD for portable devices developed by a rival organisation."
|
||||
power_usage = 8
|
||||
max_capacity = 70
|
||||
|
||||
@@ -1,256 +0,0 @@
|
||||
/obj/item/computer_hardware/hard_drive/role
|
||||
name = "job data disk"
|
||||
desc = "A disk meant to give a worker the needed programs to work."
|
||||
power_usage = 0
|
||||
icon_state = "datadisk6"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
critical = FALSE
|
||||
max_capacity = 500
|
||||
device_type = MC_HDD_JOB
|
||||
default_installs = FALSE
|
||||
|
||||
var/disk_flags = 0 // bit flag for the programs
|
||||
var/can_spam = FALSE
|
||||
var/list/bot_access = list()
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/on_remove(obj/item/modular_computer/remove_from, mob/user)
|
||||
return
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/Initialize(mapload)
|
||||
. = ..()
|
||||
var/list/progs_to_store = list()
|
||||
|
||||
if(disk_flags & DISK_POWER)
|
||||
progs_to_store += new /datum/computer_file/program/power_monitor(src)
|
||||
progs_to_store += new /datum/computer_file/program/supermatter_monitor(src)
|
||||
|
||||
if(disk_flags & DISK_ATMOS)
|
||||
progs_to_store += new /datum/computer_file/program/atmosscan(src)
|
||||
|
||||
if(disk_flags & DISK_MANIFEST)
|
||||
progs_to_store += new /datum/computer_file/program/crew_manifest(src)
|
||||
|
||||
if(disk_flags & DISK_SEC)
|
||||
progs_to_store += new /datum/computer_file/program/records/security(src)
|
||||
|
||||
if(disk_flags & DISK_JANI)
|
||||
progs_to_store += new /datum/computer_file/program/radar/custodial_locator(src)
|
||||
|
||||
if((disk_flags & DISK_CHEM) || (disk_flags & DISK_MED))
|
||||
var/datum/computer_file/program/phys_scanner/scanner = new(src)
|
||||
|
||||
if(disk_flags & DISK_CHEM)
|
||||
scanner.available_modes += DISK_CHEM
|
||||
|
||||
if(disk_flags & DISK_MED)
|
||||
progs_to_store += new /datum/computer_file/program/records/medical(src)
|
||||
scanner.available_modes += DISK_MED
|
||||
|
||||
progs_to_store += scanner
|
||||
|
||||
if(disk_flags & DISK_ROBOS)
|
||||
var/datum/computer_file/program/robocontrol/robo = new(src)
|
||||
robo.cart_mode = TRUE
|
||||
progs_to_store += robo
|
||||
|
||||
if(disk_flags & DISK_CARGO)
|
||||
progs_to_store += new /datum/computer_file/program/shipping(src)
|
||||
|
||||
if(disk_flags & DISK_SIGNAL)
|
||||
progs_to_store += new /datum/computer_file/program/signaler(src)
|
||||
|
||||
if(disk_flags & DISK_NEWS)
|
||||
progs_to_store += new /datum/computer_file/program/newscaster(src)
|
||||
|
||||
if(disk_flags & DISK_BUDGET)
|
||||
progs_to_store += new /datum/computer_file/program/budgetorders(src)
|
||||
|
||||
if(disk_flags & DISK_STATUS)
|
||||
progs_to_store += new /datum/computer_file/program/status(src)
|
||||
|
||||
if(disk_flags & DISK_SCI)
|
||||
progs_to_store += new /datum/computer_file/program/science(src)
|
||||
|
||||
for (var/datum/computer_file/program/prog in progs_to_store)
|
||||
prog.usage_flags = PROGRAM_ALL
|
||||
prog.required_access = list()
|
||||
prog.transfer_access = list()
|
||||
store_file(prog)
|
||||
|
||||
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/proc/CanSpam()
|
||||
return can_spam
|
||||
|
||||
// Disk Definitions
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/engineering
|
||||
name = "Power-ON disk"
|
||||
desc = "Engineers ignoring station power-draw since 2400."
|
||||
icon_state = "datadisk2"
|
||||
disk_flags = DISK_POWER
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/atmos
|
||||
name = "\improper BreatheDeep disk"
|
||||
icon_state = "datadisk2"
|
||||
disk_flags = DISK_ATMOS | DISK_ROBOS
|
||||
bot_access = list(
|
||||
FLOOR_BOT,
|
||||
FIRE_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/medical
|
||||
name = "\improper Med-U disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_MED | DISK_ROBOS
|
||||
bot_access = list(
|
||||
MED_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/chemistry
|
||||
name = "\improper ChemWhiz disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_CHEM
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/security
|
||||
name = "\improper R.O.B.U.S.T. disk"
|
||||
icon_state = "datadisk9"
|
||||
disk_flags = DISK_SEC | DISK_MANIFEST | DISK_ROBOS
|
||||
bot_access = list(
|
||||
SEC_BOT,
|
||||
ADVANCED_SEC_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/detective
|
||||
name = "\improper D.E.T.E.C.T. disk"
|
||||
icon_state = "datadisk9"
|
||||
disk_flags = DISK_MED | DISK_SEC | DISK_MANIFEST | DISK_ROBOS
|
||||
bot_access = list(
|
||||
SEC_BOT,
|
||||
ADVANCED_SEC_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/janitor
|
||||
name = "\improper CustodiPRO disk"
|
||||
icon_state = "datadisk5"
|
||||
desc = "The ultimate in clean-room design."
|
||||
disk_flags = DISK_JANI | DISK_ROBOS
|
||||
bot_access = list(
|
||||
CLEAN_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/lawyer
|
||||
name = "\improper P.R.O.V.E. disk"
|
||||
icon_state = "datadisk9"
|
||||
disk_flags = DISK_SEC
|
||||
can_spam = TRUE
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/curator
|
||||
name = "\improper Lib-Tweet disk"
|
||||
icon_state = "datadisk2"
|
||||
disk_flags = DISK_NEWS
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/roboticist
|
||||
name = "\improper B.O.O.P. Remote Control disk"
|
||||
icon_state = "datadisk5"
|
||||
desc = "Packed with heavy duty quad-bot interlink!"
|
||||
disk_flags = DISK_ROBOS
|
||||
bot_access = list(
|
||||
FLOOR_BOT,
|
||||
CLEAN_BOT,
|
||||
MED_BOT,
|
||||
FIRE_BOT,
|
||||
VIBE_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/signal
|
||||
name = "generic signaler disk"
|
||||
icon_state = "datadisk5"
|
||||
desc = "A data disk with an integrated radio signaler module."
|
||||
disk_flags = DISK_SIGNAL
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/signal/ordnance
|
||||
name = "\improper Signal Ace 2 disk"
|
||||
icon_state = "datadisk5"
|
||||
desc = "Complete with integrated radio signaler!"
|
||||
disk_flags = DISK_ATMOS | DISK_SIGNAL | DISK_CHEM
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/quartermaster
|
||||
name = "space parts & space vendors disk"
|
||||
icon_state = "datadisk0"
|
||||
desc = "Perfect for the Quartermaster on the go!"
|
||||
disk_flags = DISK_CARGO | DISK_ROBOS | DISK_BUDGET
|
||||
bot_access = list(
|
||||
MULE_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/head
|
||||
name = "\improper Easy-Record DELUXE disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_BUDGET | DISK_SCI
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/hop
|
||||
name = "\improper HumanResources9001 disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_JANI | DISK_SEC | DISK_NEWS | DISK_CARGO | DISK_ROBOS | DISK_BUDGET | DISK_SCI
|
||||
bot_access = list(
|
||||
MULE_BOT,
|
||||
CLEAN_BOT,
|
||||
VIBE_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/hos
|
||||
name = "\improper R.O.B.U.S.T. DELUXE disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_SEC | DISK_ROBOS | DISK_BUDGET | DISK_SCI
|
||||
bot_access = list(
|
||||
SEC_BOT,
|
||||
ADVANCED_SEC_BOT,
|
||||
)
|
||||
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/ce
|
||||
name = "\improper Power-On DELUXE disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_POWER | DISK_ATMOS | DISK_MANIFEST | DISK_STATUS | DISK_ROBOS | DISK_BUDGET | DISK_SCI
|
||||
bot_access = list(
|
||||
FLOOR_BOT,
|
||||
FIRE_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/cmo
|
||||
name = "\improper Med-U DELUXE disk"
|
||||
icon_state = "datadisk7"
|
||||
disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_CHEM | DISK_ROBOS | DISK_BUDGET | DISK_SCI
|
||||
bot_access = list(
|
||||
MED_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/rd
|
||||
name = "\improper Signal Ace DELUXE disk"
|
||||
icon_state = "rndmajordisk"
|
||||
disk_flags = DISK_ATMOS | DISK_MANIFEST | DISK_STATUS | DISK_CHEM | DISK_ROBOS | DISK_BUDGET | DISK_SIGNAL | DISK_SCI
|
||||
bot_access = list(
|
||||
FLOOR_BOT,
|
||||
CLEAN_BOT,
|
||||
MED_BOT,
|
||||
FIRE_BOT,
|
||||
VIBE_BOT,
|
||||
)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/captain
|
||||
name = "\improper Value-PAK disk"
|
||||
icon_state = "datadisk8"
|
||||
desc = "Now with 350% more value!" //Give the Captain...EVERYTHING! (Except Mime, Clown, and Syndie)
|
||||
disk_flags = ~0
|
||||
can_spam = TRUE
|
||||
bot_access = list(
|
||||
SEC_BOT,
|
||||
ADVANCED_SEC_BOT,
|
||||
MULE_BOT,
|
||||
FLOOR_BOT,
|
||||
CLEAN_BOT,
|
||||
MED_BOT,
|
||||
FIRE_BOT,
|
||||
VIBE_BOT,
|
||||
)
|
||||
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* Command
|
||||
*/
|
||||
/obj/item/computer_hardware/hard_drive/portable/command
|
||||
icon_state = "datadisk7"
|
||||
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/crew_manifest(src))
|
||||
store_file(new /datum/computer_file/program/science(src))
|
||||
store_file(new /datum/computer_file/program/status(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/captain
|
||||
name = "captain data disk"
|
||||
desc = "Removable disk used to download essential Captain tablet apps."
|
||||
icon_state = "datadisk10"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/captain/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/records/security(src))
|
||||
store_file(new /datum/computer_file/program/records/medical(src))
|
||||
store_file(new /datum/computer_file/program/phys_scanner/all(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/cmo
|
||||
name = "chief medical officer data disk"
|
||||
desc = "Removable disk used to download essential CMO tablet apps."
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/cmo/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/phys_scanner/all(src))
|
||||
store_file(new /datum/computer_file/program/records/medical(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/rd
|
||||
name = "research director data disk"
|
||||
desc = "Removable disk used to download essential RD tablet apps."
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/rd/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/signal_commander(src))
|
||||
store_file(new /datum/computer_file/program/phys_scanner/chemistry(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/hos
|
||||
name = "head of security data disk"
|
||||
desc = "Removable disk used to download essential HoS tablet apps."
|
||||
icon_state = "datadisk9"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/hos/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/records/security(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/hop
|
||||
name = "head of personnel data disk"
|
||||
desc = "Removable disk used to download essential HoP tablet apps."
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/hop/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/records/security(src))
|
||||
store_file(new /datum/computer_file/program/job_management(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/ce
|
||||
name = "chief engineer data disk"
|
||||
desc = "Removable disk used to download essential CE tablet apps."
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/command/ce/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/power_monitor(src))
|
||||
store_file(new /datum/computer_file/program/supermatter_monitor(src))
|
||||
store_file(new /datum/computer_file/program/atmosscan(src))
|
||||
store_file(new /datum/computer_file/program/alarm_monitor(src))
|
||||
|
||||
/**
|
||||
* Security
|
||||
*/
|
||||
/obj/item/computer_hardware/hard_drive/portable/security
|
||||
name = "security officer data disk"
|
||||
desc = "Removable disk used to download security-related tablet apps."
|
||||
icon_state = "datadisk9"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/security/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/records/security(src))
|
||||
store_file(new /datum/computer_file/program/crew_manifest(src))
|
||||
|
||||
/**
|
||||
* Medical
|
||||
*/
|
||||
/obj/item/computer_hardware/hard_drive/portable/medical
|
||||
name = "medical doctor data disk"
|
||||
desc = "Removable disk used to download medical-related tablet apps."
|
||||
icon_state = "datadisk7"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/medical/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/phys_scanner/medical(src))
|
||||
store_file(new /datum/computer_file/program/records/medical(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/chemistry
|
||||
name = "chemistry data disk"
|
||||
desc = "Removable disk used to download chemistry-related tablet apps."
|
||||
icon_state = "datadisk5"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/chemistry/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/phys_scanner/chemistry(src))
|
||||
|
||||
/**
|
||||
* Supply
|
||||
*/
|
||||
/obj/item/computer_hardware/hard_drive/portable/quartermaster
|
||||
name = "cargo data disk"
|
||||
desc = "Removable disk used to download cargo-related tablet apps."
|
||||
icon_state = "cargodisk"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/quartermaster/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/shipping(src))
|
||||
store_file(new /datum/computer_file/program/budgetorders(src))
|
||||
|
||||
/**
|
||||
* Science
|
||||
*/
|
||||
/obj/item/computer_hardware/hard_drive/portable/ordnance
|
||||
name = "ordnance data disk"
|
||||
desc = "Removable disk used to download ordnance-related tablet apps."
|
||||
icon_state = "datadisk5"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/ordnance/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/signal_commander(src))
|
||||
|
||||
/**
|
||||
* Engineering
|
||||
*/
|
||||
/obj/item/computer_hardware/hard_drive/portable/engineering
|
||||
name = "station engineer data disk"
|
||||
desc = "Removable disk used to download engineering-related tablet apps."
|
||||
icon_state = "datadisk6"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/engineering/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/power_monitor(src))
|
||||
store_file(new /datum/computer_file/program/supermatter_monitor(src))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/atmos
|
||||
name = "atmospheric technician data disk"
|
||||
desc = "Removable disk used to download atmos-related tablet apps."
|
||||
icon_state = "datadisk6"
|
||||
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/portable/atmos/install_default_programs()
|
||||
. = ..()
|
||||
store_file(new /datum/computer_file/program/atmosscan(src))
|
||||
store_file(new /datum/computer_file/program/alarm_monitor(src))
|
||||
@@ -6,12 +6,3 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
device_type = MC_SENSORS
|
||||
expansion_hw = TRUE
|
||||
|
||||
/obj/item/computer_hardware/radio_card
|
||||
name = "integrated radio card"
|
||||
desc = "An integrated signaling assembly for computers to send an outgoing frequency signal. Required by certain programs."
|
||||
icon_state = "signal_card"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
device_type = MC_SIGNALER
|
||||
expansion_hw = TRUE
|
||||
power_usage = 10
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
/obj/item/computer_hardware/hard_drive/role/virus
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus
|
||||
name = "\improper generic virus disk"
|
||||
icon_state = "virusdisk"
|
||||
var/charges = 5
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/proc/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/proc/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
return
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/clown
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/clown
|
||||
name = "\improper H.O.N.K. disk"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/clown/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/clown/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
if(charges <= 0)
|
||||
to_chat(user, span_notice("ERROR: Out of charges."))
|
||||
return
|
||||
@@ -21,10 +21,10 @@
|
||||
else
|
||||
to_chat(user, span_notice("ERROR: Could not find device."))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/mime
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/mime
|
||||
name = "\improper sound of silence disk"
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/mime/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/mime/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
if(charges <= 0)
|
||||
to_chat(user, span_notice("ERROR: Out of charges."))
|
||||
return
|
||||
@@ -41,22 +41,16 @@
|
||||
else
|
||||
to_chat(user, span_notice("ERROR: Could not find device."))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/deto
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/deto
|
||||
name = "\improper D.E.T.O.M.A.T.I.X. disk"
|
||||
charges = 6
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/deto/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/deto/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
if(charges <= 0)
|
||||
to_chat(user, span_notice("ERROR: Out of charges."))
|
||||
return
|
||||
|
||||
var/difficulty = 0
|
||||
var/obj/item/computer_hardware/hard_drive/role/disk = target.all_components[MC_HDD_JOB]
|
||||
|
||||
if(disk)
|
||||
difficulty += bit_count(disk.disk_flags & (DISK_MED | DISK_SEC | DISK_POWER | DISK_MANIFEST))
|
||||
if(disk.disk_flags & DISK_MANIFEST)
|
||||
difficulty++ //if cartridge has manifest access it has extra snowflake difficulty
|
||||
var/difficulty = target.get_detomatix_difficulty()
|
||||
if(SEND_SIGNAL(target, COMSIG_TABLET_CHECK_DETONATE) & COMPONENT_TABLET_NO_DETONATE || prob(difficulty * 15))
|
||||
user.show_message(span_danger("ERROR: Target could not be bombed."), MSG_VISUAL)
|
||||
charges--
|
||||
@@ -81,13 +75,13 @@
|
||||
ADD_TRAIT(target, TRAIT_PDA_MESSAGE_MENU_RIGGED, reference)
|
||||
addtimer(TRAIT_CALLBACK_REMOVE(target, TRAIT_PDA_MESSAGE_MENU_RIGGED, reference), 10 SECONDS)
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/frame
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/frame
|
||||
name = "\improper F.R.A.M.E. disk"
|
||||
|
||||
var/telecrystals = 0
|
||||
var/current_progression = 0
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/frame/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/frame/send_virus(obj/item/modular_computer/tablet/target, mob/living/user)
|
||||
if(charges <= 0)
|
||||
to_chat(user, span_notice("ERROR: Out of charges."))
|
||||
return
|
||||
@@ -126,7 +120,7 @@
|
||||
else
|
||||
to_chat(user, span_notice("ERROR: Could not find device."))
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/role/virus/frame/attackby(obj/item/I, mob/user, params)
|
||||
/obj/item/computer_hardware/hard_drive/portable/virus/frame/attackby(obj/item/I, mob/user, params)
|
||||
. = ..()
|
||||
if(istype(I, /obj/item/stack/telecrystal))
|
||||
if(!charges)
|
||||
|
||||
Reference in New Issue
Block a user