diff --git a/baystation12.dme b/baystation12.dme index 8e8f6a8f9e6..419a2d3ac7f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1445,6 +1445,8 @@ #include "code\modules\modular_computers\computers\item\modular_computer.dm" #include "code\modules\modular_computers\computers\item\processor.dm" #include "code\modules\modular_computers\computers\item\tablet.dm" +#include "code\modules\modular_computers\computers\item\tablet_presets.dm" +#include "code\modules\modular_computers\computers\machinery\console_presets.dm" #include "code\modules\modular_computers\computers\machinery\modular_computer.dm" #include "code\modules\modular_computers\computers\machinery\modular_console.dm" #include "code\modules\modular_computers\computers\machinery\modular_laptop.dm" diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 0f9c790503f..40cd37094dd 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -1106,6 +1106,18 @@ var/global/list/gear_datums = list() sort_category = "utility" cost = 2 +/datum/gear/cheaptablet + display_name = "cheap tablet computer" + path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap + sort_category = "utility" + cost = 3 + +/datum/gear/normaltablet + display_name = "tablet computer" + path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced + sort_category = "utility" + cost = 4 + // The rest of the trash. /datum/gear/ashtray diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm new file mode 100644 index 00000000000..5555d92d655 --- /dev/null +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -0,0 +1,17 @@ + +// Available as custom loadout item, this is literally the worst possible cheap tablet +/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/New() + . = ..() + desc = "A low-end tablet often seen among low ranked station personnel" + battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src) + network_card = new/obj/item/weapon/computer_hardware/network_card(src) + +// Alternative version, an average one, for higher ranked positions mostly +/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New() + . = ..() + battery_module = new/obj/item/weapon/computer_hardware/battery_module(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src) + network_card = new/obj/item/weapon/computer_hardware/network_card(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm new file mode 100644 index 00000000000..a423fba92e7 --- /dev/null +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -0,0 +1,83 @@ +/obj/machinery/modular_computer/console/preset/ + // Can be changed to give devices specific hardware + var/_has_id_slot = 0 + var/_has_printer = 0 + var/_has_battery = 0 + +/obj/machinery/modular_computer/console/preset/New() + . = ..() + if(!cpu) + return + if(_has_id_slot) + cpu.card_slot = new/obj/item/weapon/computer_hardware/card_slot(cpu) + if(_has_printer) + cpu.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(cpu) + if(_has_battery) + cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(cpu) + install_programs() + +// Override in child types to install preset-specific programs. +/obj/machinery/modular_computer/console/preset/proc/install_programs() + return + +// ===== ENGINEERING CONSOLE ===== +/obj/machinery/modular_computer/console/preset/engineering + console_department = "Engineering" + desc = "A stationary computer. This one comes preloaded with engineering programs." + +/obj/machinery/modular_computer/console/preset/engineering/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/power_monitor()) + cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) + cpu.hard_drive.store_file(new/datum/computer_file/program/atmos_control()) + cpu.hard_drive.store_file(new/datum/computer_file/program/rcon_console()) + + +// ===== MEDICAL CONSOLE ===== +/obj/machinery/modular_computer/console/preset/medical + console_department = "Medbay" + desc = "A stationary computer. This one comes preloaded with medical programs." + +/obj/machinery/modular_computer/console/preset/medical/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/suit_sensors()) + + +// ===== RESEARCH CONSOLE ===== +/obj/machinery/modular_computer/console/preset/research + console_department = "Medbay" + desc = "A stationary computer. This one comes preloaded with research programs." + +/obj/machinery/modular_computer/console/preset/research/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor()) + cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) + + +// ===== COMMAND CONSOLE ===== +/obj/machinery/modular_computer/console/preset/command + console_department = "Command" + desc = "A stationary computer. This one comes preloaded with command programs." + _has_id_slot = 1 + +/obj/machinery/modular_computer/console/preset/command/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) + cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod()) + + +// ===== SECURITY CONSOLE ===== +/obj/machinery/modular_computer/console/preset/security + console_department = "Security" + desc = "A stationary computer. This one comes preloaded with security programs." + +/obj/machinery/modular_computer/console/preset/security/install_programs() + return // No security programs exist, yet, but the preset is ready so it may be mapped in. + + +// ===== CIVILIAN CONSOLE ===== +/obj/machinery/modular_computer/console/preset/civilian + console_department = "Civilian" + desc = "A stationary computer. This one comes preloaded with generic programs." + +/obj/machinery/modular_computer/console/preset/civilian/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) + cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm index e5f0cecdb68..bfda0005552 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -11,6 +11,7 @@ /obj/item/weapon/computer_hardware/card_slot/Destroy() if(holder2 && (holder2.card_slot == src)) holder2.card_slot = null - stored_card.loc = get_turf(holder2) + if(stored_card) + stored_card.forceMove(get_turf(holder2)) holder2 = null ..() \ No newline at end of file