[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
@@ -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)