From 2425531eb2dab84fb27ed864e4c52470bfff6918 Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Fri, 2 Dec 2022 03:15:14 -0500 Subject: [PATCH] Removes tablets (not PDAs) entirely. (#71507) ## About The Pull Request **Comes with an UpdatePaths!** Removes the tablet subtype, PDAs now replaces them entirely. Nukie and Silicon tablets are now subtypes of the PDA instead, while contractor ones were removed entirely as they didn't do anything and were unused (though it wouldn't be hard to re-add). Nukie PDAs are now the only type of PDA that uses modular_tablets.dmi, which is just larger icons of modular_pda. Each application requires an icon state in both of these, for 2 different sizes, which makes it annoying to make new applications, especially if it can also run on computers/laptops. ### Icons Because Silicon tablets are now a subtype of PDA, they use PDA icons instead of tablet ones. Luckily for us, they already exist in code. ![image](https://user-images.githubusercontent.com/53777086/203876575-56eb1593-774c-47c6-8e7d-491a7805f28c.png) AI's don't use a tablet icon though, so they aren't affected. ## Why It's Good For The Game There's very little difference between tablets and PDAs, PDAs overshadow them in every single way, so at this point I don't see why we should have both of these, and if you compare the two in usefulness and actual in-game use by players, it's a no-brainer than the item all players get roundstart and comes with a messenger should be the one we go with. Also as said in the about section, when making an app you would need to make icon states for the program running for all hardware it can run on, which is Computer, Laptop, PDA, and Tablet. Laptop is just a smaller computer icon PDA is just a smaller tablet icon However, you can't simply shrink the size of the icon, instead you have to completely resprite the same app icon FOUR TIMES for it to not bluescreen on all these different devices.
Here's examples of it Computer (NOTE: *They share the same icon file as regular computers*) Laptop Tablet PDA
If we wish to help in simplifying this, we should remove tablet icons entirely, which means 1 less icon to worry about. To do this, we'd need to resprite nukie PDAs, however I am very much not a spriter and never tried GAGS, so I'll leave it to someone else to do. ## Changelog :cl: del: Tablets are now removed, PDAs are now the base 'tablet'. Silicon and nukie tablets are now PDAs. /:cl: --- .../IceRuins/icemoon_surface_engioutpost.dmm | 4 +- .../commswilding_3.dmm | 2 +- _maps/RandomRuins/SpaceRuins/bigderelict1.dmm | 2 +- .../RandomRuins/SpaceRuins/forgottenship.dmm | 2 +- _maps/RandomZLevels/SnowCabin.dmm | 4 +- code/__DEFINES/access.dm | 60 ++-- code/_globalvars/phobias.dm | 2 +- code/controllers/subsystem/id_access.dm | 4 +- code/datums/components/uplink.dm | 6 +- code/datums/mind/antag.dm | 2 +- code/game/machinery/PDApainter.dm | 20 +- code/game/machinery/camera/camera.dm | 6 +- code/game/machinery/computer/security.dm | 2 +- code/game/machinery/navbeacon.dm | 13 +- .../machinery/telecomms/computers/message.dm | 2 +- .../effects/spawners/random/contraband.dm | 2 +- code/game/objects/items/cards_ids.dm | 8 +- code/game/objects/items/storage/backpack.dm | 2 +- .../items/storage/boxes/engineering_boxes.dm | 2 +- .../items/storage/boxes/service_boxes.dm | 2 +- .../game/objects/items/storage/uplink_kits.dm | 6 +- .../crates_lockers/closets/syndicate.dm | 2 +- code/modules/admin/verbs/debug.dm | 4 +- code/modules/antagonists/nukeop/nukeop.dm | 2 +- code/modules/antagonists/nukeop/outfits.dm | 2 +- code/modules/cargo/bounties/science.dm | 4 +- .../cargo/markets/market_items/misc.dm | 2 +- code/modules/clothing/chameleon.dm | 16 +- code/modules/clothing/outfits/ert.dm | 4 +- code/modules/clothing/outfits/standard.dm | 4 +- code/modules/clothing/suits/wintercoats.dm | 2 +- code/modules/jobs/job_types/_job.dm | 4 +- code/modules/jobs/job_types/assistant.dm | 2 +- .../jobs/job_types/atmospheric_technician.dm | 2 +- code/modules/jobs/job_types/bartender.dm | 2 +- code/modules/jobs/job_types/botanist.dm | 2 +- code/modules/jobs/job_types/captain.dm | 2 +- .../jobs/job_types/cargo_technician.dm | 2 +- code/modules/jobs/job_types/chaplain.dm | 2 +- code/modules/jobs/job_types/chemist.dm | 2 +- code/modules/jobs/job_types/chief_engineer.dm | 2 +- .../jobs/job_types/chief_medical_officer.dm | 2 +- code/modules/jobs/job_types/clown.dm | 2 +- code/modules/jobs/job_types/cook.dm | 2 +- code/modules/jobs/job_types/curator.dm | 2 +- code/modules/jobs/job_types/detective.dm | 2 +- code/modules/jobs/job_types/geneticist.dm | 2 +- .../jobs/job_types/head_of_personnel.dm | 2 +- .../jobs/job_types/head_of_security.dm | 2 +- code/modules/jobs/job_types/janitor.dm | 2 +- code/modules/jobs/job_types/lawyer.dm | 2 +- code/modules/jobs/job_types/medical_doctor.dm | 2 +- code/modules/jobs/job_types/mime.dm | 2 +- code/modules/jobs/job_types/paramedic.dm | 2 +- code/modules/jobs/job_types/psychologist.dm | 2 +- code/modules/jobs/job_types/quartermaster.dm | 2 +- .../jobs/job_types/research_director.dm | 2 +- code/modules/jobs/job_types/roboticist.dm | 2 +- code/modules/jobs/job_types/scientist.dm | 2 +- .../jobs/job_types/security_officer.dm | 2 +- code/modules/jobs/job_types/shaft_miner.dm | 2 +- .../jobs/job_types/station_engineer.dm | 2 +- code/modules/jobs/job_types/virologist.dm | 2 +- code/modules/jobs/job_types/warden.dm | 2 +- code/modules/mining/abandoned_crates.dm | 2 +- .../mob/living/carbon/human/human_helpers.dm | 2 +- .../mob/living/carbon/human/species.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 4 +- code/modules/mob/living/silicon/silicon.dm | 8 +- code/modules/mob/mob.dm | 4 +- .../mob_spawn/ghost_roles/space_roles.dm | 2 +- .../mob_spawn/ghost_roles/unused_roles.dm | 2 +- code/modules/mob_spawn/mob_spawn.dm | 2 +- .../computers/item/computer.dm | 21 +- .../computers/item/computer_power.dm | 2 +- .../computers/item/computer_ui.dm | 2 +- .../computers/item/disks/virus_disk.dm | 10 +- .../computers/item/laptop.dm | 2 - .../computers/item/{tablet.dm => pda.dm} | 282 ++++++++---------- .../computers/item/role_tablet_presets.dm | 90 +++--- .../computers/item/tablet_presets.dm | 6 - .../programs/antagonist/revelation.dm | 4 +- .../file_system/programs/ntmessenger.dm | 2 +- .../file_system/programs/robotact.dm | 14 +- .../modular_computers/laptop_vendor.dm | 4 +- .../research/designs/autolathe_designs.dm | 12 - code/modules/research/techweb/all_nodes.dm | 1 - code/modules/unit_tests/create_and_destroy.dm | 2 +- code/modules/vending/cartridge.dm | 2 +- code/modules/vending/modularpc.dm | 2 +- icons/obj/modular_pda.dmi | Bin 17717 -> 18131 bytes tgstation.dme | 3 +- .../Scripts/71507_tablet_to_pda.txt | 6 + 93 files changed, 362 insertions(+), 396 deletions(-) rename code/modules/modular_computers/computers/item/{tablet.dm => pda.dm} (68%) delete mode 100644 code/modules/modular_computers/computers/item/tablet_presets.dm create mode 100644 tools/UpdatePaths/Scripts/71507_tablet_to_pda.txt diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm index 0f96990b598..91cf677ce71 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm @@ -532,11 +532,11 @@ /turf/open/floor/plating, /area/ruin/planetengi) "cI" = ( -/obj/item/modular_computer/tablet/pda/clear, +/obj/item/modular_computer/pda/clear, /turf/open/floor/iron, /area/ruin/planetengi) "cJ" = ( -/obj/item/modular_computer/tablet/pda/engineering, +/obj/item/modular_computer/pda/engineering, /turf/open/floor/iron, /area/ruin/planetengi) "cL" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1/commswilding_3.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1/commswilding_3.dmm index 0aeb318fc6a..b3274359a26 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1/commswilding_3.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1/commswilding_3.dmm @@ -120,7 +120,7 @@ dir = 8; pixel_x = -24 }, -/obj/item/modular_computer/tablet/pda/chameleon/broken{ +/obj/item/modular_computer/pda/chameleon/broken{ pixel_x = 5; pixel_y = 4 }, diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index d613c0d6438..ab5c0c6932d 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -1128,7 +1128,7 @@ /area/ruin/space/has_grav/derelictoutpost/cargostorage) "eC" = ( /obj/structure/closet/crate, -/obj/item/modular_computer/tablet/pda/clear, +/obj/item/modular_computer/pda/clear, /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/ruin/space/has_grav/derelictoutpost/cargostorage) diff --git a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm index ecd265915a5..c86a1a53cf1 100644 --- a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm +++ b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm @@ -435,7 +435,7 @@ }, /obj/item/toy/nuke, /obj/item/clothing/under/chameleon, -/obj/item/modular_computer/tablet/pda/chameleon, +/obj/item/modular_computer/pda/chameleon, /obj/item/clothing/mask/chameleon, /obj/item/card/id/advanced/chameleon, /turf/open/floor/mineral/plastitanium, diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 30c7d8e212b..91720122a5d 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -3851,7 +3851,7 @@ /area/awaymission/cabin/caves) "vD" = ( /obj/effect/turf_decal/weather/snow, -/obj/item/modular_computer/tablet/pda/syndicate{ +/obj/item/modular_computer/pda/syndicate{ desc = "A portable microcomputer by Thinktronic Systems, LTD."; inserted_disk = /obj/item/computer_disk/virus/clown; name = "soviet tablet" @@ -3998,7 +3998,7 @@ /area/awaymission/cabin/caves/mountain) "yR" = ( /obj/structure/table/reinforced, -/obj/item/modular_computer/tablet/pda/syndicate{ +/obj/item/modular_computer/pda/syndicate{ desc = "A portable microcomputer by Thinktronic Systems, LTD."; inserted_disk = /obj/item/computer_disk/virus/mime; name = "soviet tablet" diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index 6781b0fdac0..581a3e45a9f 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -521,36 +521,36 @@ * Used to see pda_region in [/datum/controller/subsystem/id_access/proc/setup_tgui_lists] */ #define PDA_PAINTING_REGIONS list( \ - /obj/item/modular_computer/tablet/pda = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/clown = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/mime = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/medical = list(REGION_MEDBAY), \ - /obj/item/modular_computer/tablet/pda/viro = list(REGION_MEDBAY), \ - /obj/item/modular_computer/tablet/pda/engineering = list(REGION_ENGINEERING), \ - /obj/item/modular_computer/tablet/pda/security = list(REGION_SECURITY), \ - /obj/item/modular_computer/tablet/pda/detective = list(REGION_SECURITY), \ - /obj/item/modular_computer/tablet/pda/warden = list(REGION_SECURITY), \ - /obj/item/modular_computer/tablet/pda/janitor = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/science = list(REGION_RESEARCH), \ - /obj/item/modular_computer/tablet/pda/heads/quartermaster = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/heads/hop = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/heads/hos = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/heads/cmo = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/heads/ce = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/heads/rd = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/heads/captain = list(REGION_COMMAND), \ - /obj/item/modular_computer/tablet/pda/cargo = list(REGION_SUPPLY), \ - /obj/item/modular_computer/tablet/pda/shaftminer = list(REGION_SUPPLY), \ - /obj/item/modular_computer/tablet/pda/chaplain = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/lawyer = list(REGION_GENERAL, REGION_SECURITY), \ - /obj/item/modular_computer/tablet/pda/botanist = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/roboticist = list(REGION_RESEARCH), \ - /obj/item/modular_computer/tablet/pda/curator = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/cook = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/bar = list(REGION_GENERAL), \ - /obj/item/modular_computer/tablet/pda/atmos = list(REGION_ENGINEERING), \ - /obj/item/modular_computer/tablet/pda/chemist = list(REGION_MEDBAY), \ - /obj/item/modular_computer/tablet/pda/geneticist = list(REGION_RESEARCH), \ + /obj/item/modular_computer/pda = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/clown = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/mime = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/medical = list(REGION_MEDBAY), \ + /obj/item/modular_computer/pda/viro = list(REGION_MEDBAY), \ + /obj/item/modular_computer/pda/engineering = list(REGION_ENGINEERING), \ + /obj/item/modular_computer/pda/security = list(REGION_SECURITY), \ + /obj/item/modular_computer/pda/detective = list(REGION_SECURITY), \ + /obj/item/modular_computer/pda/warden = list(REGION_SECURITY), \ + /obj/item/modular_computer/pda/janitor = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/science = list(REGION_RESEARCH), \ + /obj/item/modular_computer/pda/heads/quartermaster = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/heads/hop = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/heads/hos = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/heads/cmo = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/heads/ce = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/heads/rd = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/heads/captain = list(REGION_COMMAND), \ + /obj/item/modular_computer/pda/cargo = list(REGION_SUPPLY), \ + /obj/item/modular_computer/pda/shaftminer = list(REGION_SUPPLY), \ + /obj/item/modular_computer/pda/chaplain = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/lawyer = list(REGION_GENERAL, REGION_SECURITY), \ + /obj/item/modular_computer/pda/botanist = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/roboticist = list(REGION_RESEARCH), \ + /obj/item/modular_computer/pda/curator = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/cook = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/bar = list(REGION_GENERAL), \ + /obj/item/modular_computer/pda/atmos = list(REGION_ENGINEERING), \ + /obj/item/modular_computer/pda/chemist = list(REGION_MEDBAY), \ + /obj/item/modular_computer/pda/geneticist = list(REGION_RESEARCH), \ ) /// All regions that make up the station area. Helper define to quickly designate a region as part of the station or not. Access via SSid_access.station_regions. diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index 7547a8a17c5..f4de4d862fd 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -140,7 +140,7 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/gun/magic/staff/honk, /obj/item/instrument/bikehorn, /obj/item/megaphone/clown, - /obj/item/modular_computer/tablet/pda/clown, + /obj/item/modular_computer/pda/clown, /obj/item/pneumatic_cannon/pie, /obj/item/stack/ore/bananium, /obj/item/stack/tile/mineral/bananium, diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm index bf2e35c56c2..958ec2324fc 100644 --- a/code/controllers/subsystem/id_access.dm +++ b/code/controllers/subsystem/id_access.dm @@ -217,7 +217,7 @@ SUBSYSTEM_DEF(id_access) var/datum/id_trim/trim = trim_singletons_by_path[trim_path] centcom_job_templates[trim_path] = trim.assignment - var/list/all_pda_paths = typesof(/obj/item/modular_computer/tablet/pda) + var/list/all_pda_paths = typesof(/obj/item/modular_computer/pda) var/list/pda_regions = PDA_PAINTING_REGIONS for(var/pda_path in all_pda_paths) if(!(pda_path in pda_regions)) @@ -231,7 +231,7 @@ SUBSYSTEM_DEF(id_access) if(!(whitelisted_region in manager_regions)) continue var/list/manager_pdas = manager_info["pdas"] - var/obj/item/modular_computer/tablet/pda/fake_pda = pda_path + var/obj/item/modular_computer/pda/fake_pda = pda_path manager_pdas[pda_path] = initial(fake_pda.name) station_pda_templates[pda_path] = initial(fake_pda.name) diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 3b2094cae32..393074eb56e 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -58,7 +58,7 @@ RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, PROC_REF(implanting)) RegisterSignal(parent, COMSIG_IMPLANT_OTHER, PROC_REF(old_implant)) RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, PROC_REF(new_implant)) - else if(istype(parent, /obj/item/modular_computer/tablet)) + else if(istype(parent, /obj/item/modular_computer/pda)) RegisterSignal(parent, COMSIG_TABLET_CHANGE_ID, PROC_REF(new_ringtone)) RegisterSignal(parent, COMSIG_TABLET_CHECK_DETONATE, PROC_REF(check_detonate)) else if(istype(parent, /obj/item/radio)) @@ -397,7 +397,7 @@ /datum/component/uplink/proc/setup_unlock_code() unlock_code = generate_code() var/obj/item/P = parent - if(istype(parent,/obj/item/modular_computer/tablet)) + if(istype(parent,/obj/item/modular_computer/pda)) unlock_note = "Uplink Passcode: [unlock_code] ([P.name])." else if(istype(parent,/obj/item/radio)) unlock_note = "Radio Passcode: [unlock_code] ([P.name], [RADIO_TOKEN_UPLINK] channel)." @@ -405,7 +405,7 @@ unlock_note = "Uplink Degrees: [english_list(unlock_code)] ([P.name])." /datum/component/uplink/proc/generate_code() - if(istype(parent,/obj/item/modular_computer/tablet)) + if(istype(parent,/obj/item/modular_computer/pda)) return "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" else if(istype(parent,/obj/item/radio)) return pick(GLOB.phonetic_alphabet) diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm index 1e2b87f2a1d..371666d768a 100644 --- a/code/datums/mind/antag.dm +++ b/code/datums/mind/antag.dm @@ -113,7 +113,7 @@ return var/list/all_contents = traitor_mob.get_all_contents() - var/obj/item/modular_computer/tablet/pda/PDA = locate() in all_contents + var/obj/item/modular_computer/pda/PDA = locate() in all_contents var/obj/item/radio/R = locate() in all_contents var/obj/item/pen/P diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 9c780b5b32c..6a9a64925bb 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -10,14 +10,14 @@ /// Current ID card inserted into the machine. var/obj/item/card/id/stored_id_card = null /// Current PDA inserted into the machine. - var/obj/item/modular_computer/tablet/pda/stored_pda = null + var/obj/item/modular_computer/pda/stored_pda = null /// A blacklist of PDA types that we should not be able to paint. var/static/list/pda_type_blacklist = list( - /obj/item/modular_computer/tablet/pda/heads, - /obj/item/modular_computer/tablet/pda/clear, - /obj/item/modular_computer/tablet/pda/syndicate, - /obj/item/modular_computer/tablet/pda/chameleon, - /obj/item/modular_computer/tablet/pda/chameleon/broken) + /obj/item/modular_computer/pda/heads, + /obj/item/modular_computer/pda/clear, + /obj/item/modular_computer/pda/syndicate, + /obj/item/modular_computer/pda/chameleon, + /obj/item/modular_computer/pda/chameleon/broken) /// A list of the PDA types that this machine can currently paint. var/list/pda_types = list() /// A list of the card trims that this machine can currently imprint onto a card. @@ -130,7 +130,7 @@ to_chat(user, span_warning("The machine rejects your [O]. This ID card does not appear to be compatible with the PDA Painter.")) return - if(istype(O, /obj/item/modular_computer/tablet/pda)) + if(istype(O, /obj/item/modular_computer/pda)) insert_pda(O, user) return @@ -171,7 +171,7 @@ * * new_pda - The PDA to insert. * * user - The user to try and eject the PDA into the hands of. */ -/obj/machinery/pdapainter/proc/insert_pda(obj/item/modular_computer/tablet/pda/new_pda, mob/living/user) +/obj/machinery/pdapainter/proc/insert_pda(obj/item/modular_computer/pda/new_pda, mob/living/user) if(!istype(new_pda)) return FALSE @@ -290,7 +290,7 @@ return TRUE var/obj/item/held_item = usr.get_active_held_item() - if(istype(held_item, /obj/item/modular_computer/tablet/pda)) + if(istype(held_item, /obj/item/modular_computer/pda)) // If we successfully inserted, we've ejected the old item. Return early. if(insert_pda(held_item, usr)) return TRUE @@ -320,7 +320,7 @@ return TRUE var/selection = params["selection"] - var/obj/item/modular_computer/tablet/pda/pda_path = /obj/item/modular_computer/tablet/pda + var/obj/item/modular_computer/pda/pda_path = /obj/item/modular_computer/pda for(var/path in pda_types) if(pda_types[path] == selection) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 4cf2488f112..1e82ebf66f5 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -330,11 +330,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0) return // OTHER - if(istype(attacking_item, /obj/item/modular_computer/tablet)) + if(istype(attacking_item, /obj/item/modular_computer/pda)) var/itemname = "" var/info = "" - var/obj/item/modular_computer/tablet/computer = attacking_item + var/obj/item/modular_computer/computer = attacking_item for(var/datum/computer_file/program/notepad/notepad_app in computer.stored_files) info = notepad_app.written_note break @@ -346,7 +346,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0) user.log_talk(itemname, LOG_GAME, log_globally=TRUE, tag="Pressed to camera") user.changeNext_move(CLICK_CD_MELEE) - for(var/mob/potential_viewer in GLOB.player_list) + for(var/mob/potential_viewer as anything in GLOB.player_list) if(isAI(potential_viewer)) var/mob/living/silicon/ai/ai = potential_viewer if(ai.control_disabled || (ai.stat == DEAD)) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 0270058dc03..1fb8a9cbf6d 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -837,7 +837,7 @@ What a mess.*/ if (!fine || QDELETED(usr) || QDELETED(src) || !canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/datum/data/crime/crime = GLOB.data_core.createCrimeEntry(t1, "", authenticated, station_time_timestamp(), fine) - for (var/obj/item/modular_computer/tablet in GLOB.TabletMessengers) + for (var/obj/item/modular_computer/tablet as anything in GLOB.TabletMessengers) if(tablet.saved_identification == active1.fields["name"]) var/message = "You have been fined [fine] credits for '[t1]'. Fines may be paid at security." var/datum/signal/subspace/messaging/tablet_msg/signal = new(src, list( diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index f3cf22d9f08..6096c231c16 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -96,18 +96,19 @@ if(T.underfloor_accessibility < UNDERFLOOR_INTERACTABLE) return // prevent intraction when T-scanner revealed - else if (isidcard(I) || istype(I, /obj/item/modular_computer/tablet)) + if (isidcard(I) || istype(I, /obj/item/modular_computer/pda)) if(open) - if (src.allowed(user)) - src.locked = !src.locked - to_chat(user, span_notice("Controls are now [src.locked ? "locked" : "unlocked"].")) + if (allowed(user)) + locked = !locked + to_chat(user, span_notice("Controls are now [locked ? "locked" : "unlocked"].")) else to_chat(user, span_danger("Access denied.")) updateDialog() else to_chat(user, span_warning("You must open the cover first!")) - else - return ..() + return + + return ..() /obj/machinery/navbeacon/attack_ai(mob/user) interact(user, 1) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 71b7e371adb..e69b6671162 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -393,7 +393,7 @@ if("Recepient") // Get out list of viable tablets var/list/viewable_tablets = list() - for (var/obj/item/modular_computer/tablet in GLOB.TabletMessengers) + for (var/obj/item/modular_computer/tablet as anything in GLOB.TabletMessengers) var/datum/computer_file/program/messenger/message_app = locate() in tablet.stored_files if(!message_app || message_app.invisible) continue diff --git a/code/game/objects/effects/spawners/random/contraband.dm b/code/game/objects/effects/spawners/random/contraband.dm index c0bfe999c1d..e55ed426269 100644 --- a/code/game/objects/effects/spawners/random/contraband.dm +++ b/code/game/objects/effects/spawners/random/contraband.dm @@ -55,7 +55,7 @@ /obj/item/restraints/handcuffs, /obj/item/paper/fluff/jobs/prisoner/letter, /obj/item/storage/wallet/random, - /obj/item/modular_computer/tablet/pda, + /obj/item/modular_computer/pda, /obj/item/radio/off, ) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index acc7fe4b8a6..21ea2736f01 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -959,9 +959,9 @@ is_intern = FALSE update_label() -/obj/item/card/id/advanced/proc/on_holding_card_slot_moved(obj/item/modular_computer/tablet/source, atom/old_loc, dir, forced) +/obj/item/card/id/advanced/proc/on_holding_card_slot_moved(obj/item/modular_computer/pda/source, atom/old_loc, dir, forced) SIGNAL_HANDLER - if(istype(old_loc, /obj/item/modular_computer/tablet)) + if(istype(old_loc, /obj/item/modular_computer/pda)) UnregisterSignal(old_loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) if(source) @@ -975,7 +975,7 @@ if(istype(old_loc, /obj/item/storage/wallet)) UnregisterSignal(old_loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) - if(istype(old_loc, /obj/item/modular_computer/tablet)) + if(istype(old_loc, /obj/item/modular_computer/pda)) UnregisterSignal(old_loc, COMSIG_MOVABLE_MOVED) UnregisterSignal(old_loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) @@ -984,7 +984,7 @@ RegisterSignal(loc, COMSIG_ITEM_EQUIPPED, PROC_REF(update_intern_status)) RegisterSignal(loc, COMSIG_ITEM_DROPPED, PROC_REF(remove_intern_status)) - if(istype(loc, /obj/item/modular_computer/tablet)) + if(istype(loc, /obj/item/modular_computer/pda)) RegisterSignal(loc, COMSIG_MOVABLE_MOVED, PROC_REF(on_holding_card_slot_moved)) RegisterSignal(loc, COMSIG_ITEM_EQUIPPED, PROC_REF(update_intern_status)) RegisterSignal(loc, COMSIG_ITEM_DROPPED, PROC_REF(remove_intern_status)) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index af940170062..b39edcb7a2d 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -663,7 +663,7 @@ atom_storage.silent = TRUE /obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() - new /obj/item/modular_computer/tablet/pda/clown(src) + new /obj/item/modular_computer/pda/clown(src) new /obj/item/clothing/under/rank/civilian/clown(src) new /obj/item/clothing/shoes/clown_shoes(src) new /obj/item/clothing/mask/gas/clown_hat(src) diff --git a/code/game/objects/items/storage/boxes/engineering_boxes.dm b/code/game/objects/items/storage/boxes/engineering_boxes.dm index 6d6261b5e0d..4bf7953d291 100644 --- a/code/game/objects/items/storage/boxes/engineering_boxes.dm +++ b/code/game/objects/items/storage/boxes/engineering_boxes.dm @@ -58,7 +58,7 @@ /obj/item/flashlight/emp/debug=1, /obj/item/geiger_counter=1, /obj/item/healthanalyzer/advanced=1, - /obj/item/modular_computer/tablet/pda/heads/captain=1, + /obj/item/modular_computer/pda/heads/captain=1, /obj/item/pipe_dispenser=1, /obj/item/stack/spacecash/c1000=50, /obj/item/storage/box/beakers/bluespace=1, diff --git a/code/game/objects/items/storage/boxes/service_boxes.dm b/code/game/objects/items/storage/boxes/service_boxes.dm index f93e699d174..34e8097752f 100644 --- a/code/game/objects/items/storage/boxes/service_boxes.dm +++ b/code/game/objects/items/storage/boxes/service_boxes.dm @@ -26,7 +26,7 @@ /obj/item/storage/box/pdas/PopulateContents() for(var/i in 1 to 4) - new /obj/item/modular_computer/tablet/pda(src) + new /obj/item/modular_computer/pda(src) /obj/item/storage/box/ids name = "box of spare IDs" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 3942a8ef791..c9345ef060c 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -475,7 +475,7 @@ new /obj/item/storage/belt/chameleon(src) new /obj/item/radio/headset/chameleon(src) new /obj/item/stamp/chameleon(src) - new /obj/item/modular_computer/tablet/pda/chameleon(src) + new /obj/item/modular_computer/pda/chameleon(src) new /obj/item/gun/energy/laser/chameleon(src) //5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars. @@ -516,7 +516,7 @@ new /obj/item/radio/headset/headset_cent/empty(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/storage/backpack/satchel(src) - new /obj/item/modular_computer/tablet/pda/heads(src) + new /obj/item/modular_computer/pda/heads(src) new /obj/item/clipboard(src) /obj/item/storage/box/syndie_kit/chameleon/broken/PopulateContents() @@ -532,7 +532,7 @@ new /obj/item/storage/belt/chameleon/broken(src) new /obj/item/radio/headset/chameleon/broken(src) new /obj/item/stamp/chameleon/broken(src) - new /obj/item/modular_computer/tablet/pda/chameleon/broken(src) + new /obj/item/modular_computer/pda/chameleon/broken(src) // No chameleon laser, they can't randomise for //REASONS// /obj/item/storage/box/syndie_kit/bee_grenades diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 60d9fa87da7..81c8a12e548 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -27,7 +27,7 @@ new /obj/item/storage/box/flashbangs(src) new /obj/item/storage/box/teargas(src) new /obj/item/storage/backpack/duffelbag/syndie/med(src) - new /obj/item/modular_computer/tablet/pda/syndicate(src) + new /obj/item/modular_computer/pda/syndicate(src) /obj/structure/closet/syndicate/resources desc = "An old, dusty locker." diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 86c0bbfcf3f..fc8621d715e 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -167,8 +167,8 @@ id.update_icon() if(worn) - if(istype(worn, /obj/item/modular_computer/tablet/pda)) - var/obj/item/modular_computer/tablet/pda/PDA = worn + if(istype(worn, /obj/item/modular_computer/pda)) + var/obj/item/modular_computer/pda/PDA = worn PDA.InsertID(id, H) else if(istype(worn, /obj/item/storage/wallet)) diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index f7bd7e5cba9..2a62e002d41 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -208,7 +208,7 @@ back = /obj/item/mod/control/pre_equipped/empty/elite uniform = /obj/item/clothing/under/syndicate - l_hand = /obj/item/modular_computer/tablet/nukeops + l_hand = /obj/item/modular_computer/pda/nukeops r_hand = /obj/item/shield/energy /datum/outfit/nuclear_operative_elite/post_equip(mob/living/carbon/human/H, visualsOnly) diff --git a/code/modules/antagonists/nukeop/outfits.dm b/code/modules/antagonists/nukeop/outfits.dm index f6f74b276f6..753eb1ed46e 100644 --- a/code/modules/antagonists/nukeop/outfits.dm +++ b/code/modules/antagonists/nukeop/outfits.dm @@ -6,7 +6,7 @@ gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack/fireproof ears = /obj/item/radio/headset/syndicate/alt - l_pocket = /obj/item/modular_computer/tablet/nukeops + l_pocket = /obj/item/modular_computer/pda/nukeops r_pocket = /obj/item/pen/edagger id = /obj/item/card/id/advanced/chameleon belt = /obj/item/gun/ballistic/automatic/pistol/clandestine diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm index 05c3247cb20..aab8429b394 100644 --- a/code/modules/cargo/bounties/science.dm +++ b/code/modules/cargo/bounties/science.dm @@ -55,10 +55,10 @@ //******Modular Computer Bounties****** /datum/bounty/item/science/ntnet name = "Modular Tablets" - description = "Turns out that NTNet wasn't actually a fad afterall, who knew. Fully construct some tablets and send them powered on." + description = "Turns out that NTNet wasn't actually a fad afterall, who knew. Send some fully functional PDAs to help get us up to speed on the latest technology." reward = CARGO_CRATE_VALUE * 6 required_count = 4 - wanted_types = list(/obj/item/modular_computer/tablet = TRUE) + wanted_types = list(/obj/item/modular_computer/pda = TRUE) var/require_powered = TRUE /datum/bounty/item/science/ntnet/applies_to(obj/O) diff --git a/code/modules/cargo/markets/market_items/misc.dm b/code/modules/cargo/markets/market_items/misc.dm index 155c030af8a..d5ee60f49e4 100644 --- a/code/modules/cargo/markets/market_items/misc.dm +++ b/code/modules/cargo/markets/market_items/misc.dm @@ -4,7 +4,7 @@ /datum/market_item/misc/Clear_PDA name = "Clear PDA" desc = "Show off your style with this limited edition clear PDA!." - item = /obj/item/modular_computer/tablet/pda/clear + item = /obj/item/modular_computer/pda/clear price_min = CARGO_CRATE_VALUE * 1.25 price_max = CARGO_CRATE_VALUE *3 diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index b083acd4f43..efac3a3bb39 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -355,13 +355,13 @@ /datum/action/item_action/chameleon/change/tablet/update_item(obj/item/picked_item) ..() - var/obj/item/modular_computer/tablet/pda/agent_pda = target + var/obj/item/modular_computer/pda/agent_pda = target if(istype(agent_pda)) agent_pda.update_appearance() /datum/action/item_action/chameleon/change/tablet/apply_job_data(datum/job/job_datum) ..() - var/obj/item/modular_computer/tablet/pda/agent_pda = target + var/obj/item/modular_computer/pda/agent_pda = target if(istype(agent_pda) && istype(job_datum)) agent_pda.saved_job = job_datum.title @@ -706,26 +706,26 @@ . = ..() chameleon_action.emp_randomise(INFINITY) -/obj/item/modular_computer/tablet/pda/chameleon +/obj/item/modular_computer/pda/chameleon name = "tablet" var/datum/action/item_action/chameleon/change/tablet/chameleon_action -/obj/item/modular_computer/tablet/pda/chameleon/Initialize(mapload) +/obj/item/modular_computer/pda/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) - chameleon_action.chameleon_type = /obj/item/modular_computer/tablet/pda + chameleon_action.chameleon_type = /obj/item/modular_computer/pda chameleon_action.chameleon_name = "tablet" - chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/modular_computer/tablet/pda/heads), only_root_path = TRUE) + chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/modular_computer/pda/heads), only_root_path = TRUE) chameleon_action.initialize_disguises() add_item_action(chameleon_action) -/obj/item/modular_computer/tablet/pda/chameleon/emp_act(severity) +/obj/item/modular_computer/pda/chameleon/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return chameleon_action.emp_randomise() -/obj/item/modular_computer/tablet/pda/chameleon/broken/Initialize(mapload) +/obj/item/modular_computer/pda/chameleon/broken/Initialize(mapload) . = ..() chameleon_action.emp_randomise(INFINITY) diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index b46f4ddf7c9..31a51e7103d 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -160,14 +160,14 @@ gloves = /obj/item/clothing/gloves/color/black shoes = /obj/item/clothing/shoes/sneakers/black l_pocket = /obj/item/pen - r_pocket = /obj/item/modular_computer/tablet/pda/heads + r_pocket = /obj/item/modular_computer/pda/heads l_hand = /obj/item/clipboard /datum/outfit/centcom/centcom_official/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) return - var/obj/item/modular_computer/tablet/pda/heads/pda = H.r_store + var/obj/item/modular_computer/pda/heads/pda = H.r_store pda.saved_identification = H.real_name pda.saved_job = "CentCom Official" diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 1094b651c09..f6eb7c00e62 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -238,7 +238,7 @@ id_trim = /datum/id_trim/reaper_assassin uniform = /obj/item/clothing/under/suit/black neck = /obj/item/clothing/neck/tie/red/hitman/tied - belt = /obj/item/modular_computer/tablet/pda/heads + belt = /obj/item/modular_computer/pda/heads ears = /obj/item/radio/headset gloves = /obj/item/clothing/gloves/color/black glasses = /obj/item/clothing/glasses/sunglasses @@ -264,7 +264,7 @@ sec_briefcase.contents += new /obj/item/ammo_box/a357 sec_briefcase.contents += new /obj/item/grenade/c4/x4 - var/obj/item/modular_computer/tablet/pda/heads/pda = H.belt + var/obj/item/modular_computer/pda/heads/pda = H.belt pda.saved_identification = H.real_name pda.saved_job = "Reaper" diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 38950e4ebb5..34e0fa385e1 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -17,7 +17,7 @@ allowed += list( /obj/item/flashlight, /obj/item/lighter, - /obj/item/modular_computer/tablet/pda, + /obj/item/modular_computer/pda, /obj/item/radio, /obj/item/storage/bag/books, /obj/item/storage/fancy/cigarettes, diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index c92fe6d297c..4edd3434b4e 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -282,7 +282,7 @@ uniform = /obj/item/clothing/under/color/grey id = /obj/item/card/id/advanced ears = /obj/item/radio/headset - belt = /obj/item/modular_computer/tablet/pda + belt = /obj/item/modular_computer/pda back = /obj/item/storage/backpack shoes = /obj/item/clothing/shoes/sneakers/black box = /obj/item/storage/box/survival @@ -357,7 +357,7 @@ equipped.sec_hud_set_ID() - var/obj/item/modular_computer/tablet/pda/pda = equipped.get_item_by_slot(pda_slot) + var/obj/item/modular_computer/pda/pda = equipped.get_item_by_slot(pda_slot) if(istype(pda)) pda.saved_identification = equipped.real_name diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 87cae1d5c9c..89429781679 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -40,7 +40,7 @@ Assistant name = JOB_ASSISTANT jobtype = /datum/job/assistant id_trim = /datum/id_trim/job/assistant - belt = /obj/item/modular_computer/tablet/pda/assistant + belt = /obj/item/modular_computer/pda/assistant /datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/target) ..() diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index e414802aa55..0176bc6eb79 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -47,7 +47,7 @@ uniform = /obj/item/clothing/under/rank/engineering/atmospheric_technician belt = /obj/item/storage/belt/utility/atmostech ears = /obj/item/radio/headset/headset_eng - l_pocket = /obj/item/modular_computer/tablet/pda/atmos + l_pocket = /obj/item/modular_computer/pda/atmos r_pocket = /obj/item/analyzer backpack = /obj/item/storage/backpack/industrial diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index cad636243e0..9fc56f186a8 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -54,7 +54,7 @@ backpack_contents = list( /obj/item/storage/box/beanbag = 1, ) - belt = /obj/item/modular_computer/tablet/pda/bar + belt = /obj/item/modular_computer/pda/bar ears = /obj/item/radio/headset/headset_srv glasses = /obj/item/clothing/glasses/sunglasses/reagent shoes = /obj/item/clothing/shoes/laceup diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 204c78b70f0..2ea1c14fcd9 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -48,7 +48,7 @@ uniform = /obj/item/clothing/under/rank/civilian/hydroponics suit = /obj/item/clothing/suit/apron suit_store = /obj/item/plant_analyzer - belt = /obj/item/modular_computer/tablet/pda/botanist + belt = /obj/item/modular_computer/pda/botanist ears = /obj/item/radio/headset/headset_srv gloves = /obj/item/clothing/gloves/botanic_leather diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 06d80dbf9b6..254a62b3201 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -65,7 +65,7 @@ /obj/item/melee/baton/telescopic = 1, /obj/item/station_charter = 1, ) - belt = /obj/item/modular_computer/tablet/pda/heads/captain + belt = /obj/item/modular_computer/pda/heads/captain ears = /obj/item/radio/headset/heads/captain/alt glasses = /obj/item/clothing/glasses/sunglasses gloves = /obj/item/clothing/gloves/color/captain diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 9be377fb0f5..53807a195ae 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -45,7 +45,7 @@ ) id_trim = /datum/id_trim/job/cargo_technician uniform = /obj/item/clothing/under/rank/cargo/tech - belt = /obj/item/modular_computer/tablet/pda/cargo + belt = /obj/item/modular_computer/pda/cargo ears = /obj/item/radio/headset/headset_cargo l_hand = /obj/item/universal_scanner diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index aa4a52a2b0c..850c10dece1 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -123,7 +123,7 @@ /obj/item/camera/spooky = 1, /obj/item/stamp/chap = 1, ) - belt = /obj/item/modular_computer/tablet/pda/chaplain + belt = /obj/item/modular_computer/pda/chaplain ears = /obj/item/radio/headset/headset_srv backpack = /obj/item/storage/backpack/cultpack diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 43a0298260a..ab8b0914d13 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -46,7 +46,7 @@ id_trim = /datum/id_trim/job/chemist uniform = /obj/item/clothing/under/rank/medical/chemist suit = /obj/item/clothing/suit/toggle/labcoat/chemist - belt = /obj/item/modular_computer/tablet/pda/chemist + belt = /obj/item/modular_computer/pda/chemist ears = /obj/item/radio/headset/headset_med glasses = /obj/item/clothing/glasses/science shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 8572d00aaa0..4496505279a 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -68,7 +68,7 @@ gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/utility/hardhat/white shoes = /obj/item/clothing/shoes/sneakers/brown - l_pocket = /obj/item/modular_computer/tablet/pda/heads/ce + l_pocket = /obj/item/modular_computer/pda/heads/ce backpack = /obj/item/storage/backpack/industrial satchel = /obj/item/storage/backpack/satchel/eng diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index b4dfa465ad1..91d95cec470 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -62,7 +62,7 @@ backpack_contents = list( /obj/item/melee/baton/telescopic = 1, ) - belt = /obj/item/modular_computer/tablet/pda/heads/cmo + belt = /obj/item/modular_computer/pda/heads/cmo ears = /obj/item/radio/headset/heads/cmo head = /obj/item/clothing/head/utility/surgerycap/cmo shoes = /obj/item/clothing/shoes/sneakers/blue diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 9703e291d5a..f2b2846e568 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -59,7 +59,7 @@ /obj/item/food/grown/banana = 1, /obj/item/instrument/bikehorn = 1, ) - belt = /obj/item/modular_computer/tablet/pda/clown + belt = /obj/item/modular_computer/pda/clown ears = /obj/item/radio/headset/headset_srv shoes = /obj/item/clothing/shoes/clown_shoes mask = /obj/item/clothing/mask/gas/clown_hat diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 05397b2a0db..0a65dca8953 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -67,7 +67,7 @@ /obj/item/choice_beacon/ingredient = 1, /obj/item/sharpener = 1, ) - belt = /obj/item/modular_computer/tablet/pda/cook + belt = /obj/item/modular_computer/pda/cook ears = /obj/item/radio/headset/headset_srv head = /obj/item/clothing/head/utility/chefhat mask = /obj/item/clothing/mask/fakemoustache/italian diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index 9381b944d18..218b162afdb 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -47,7 +47,7 @@ /obj/item/barcodescanner = 1, /obj/item/choice_beacon/hero = 1, ) - belt = /obj/item/modular_computer/tablet/pda/curator + belt = /obj/item/modular_computer/pda/curator ears = /obj/item/radio/headset/headset_srv shoes = /obj/item/clothing/shoes/laceup l_pocket = /obj/item/laser_pointer/green diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 72cb0a73542..66576259afe 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -58,7 +58,7 @@ /obj/item/melee/baton = 1, /obj/item/storage/box/evidence = 1, ) - belt = /obj/item/modular_computer/tablet/pda/detective + belt = /obj/item/modular_computer/pda/detective ears = /obj/item/radio/headset/headset_sec/alt gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/fedora/det_hat diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 028e35a8116..6d09163d51f 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -41,7 +41,7 @@ uniform = /obj/item/clothing/under/rank/rnd/geneticist suit = /obj/item/clothing/suit/toggle/labcoat/genetics suit_store = /obj/item/flashlight/pen - belt = /obj/item/modular_computer/tablet/pda/geneticist + belt = /obj/item/modular_computer/pda/geneticist ears = /obj/item/radio/headset/headset_sci shoes = /obj/item/clothing/shoes/sneakers/white l_pocket = /obj/item/sequence_scanner diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 3c4725f41f1..9cac2406d84 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -59,7 +59,7 @@ /obj/item/melee/baton/telescopic = 1, /obj/item/storage/box/ids = 1, ) - belt = /obj/item/modular_computer/tablet/pda/heads/hop + belt = /obj/item/modular_computer/pda/heads/hop ears = /obj/item/radio/headset/heads/hop head = /obj/item/clothing/head/hats/hopcap shoes = /obj/item/clothing/shoes/laceup diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 4c162056c50..e3b89eaafdb 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -56,7 +56,7 @@ backpack_contents = list( /obj/item/evidencebag = 1, ) - belt = /obj/item/modular_computer/tablet/pda/heads/hos + belt = /obj/item/modular_computer/pda/heads/hos ears = /obj/item/radio/headset/heads/hos/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses gloves = /obj/item/clothing/gloves/color/black diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 8278bffb847..c5350e14ab3 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -40,7 +40,7 @@ id_trim = /datum/id_trim/job/janitor uniform = /obj/item/clothing/under/rank/civilian/janitor - belt = /obj/item/modular_computer/tablet/pda/janitor + belt = /obj/item/modular_computer/pda/janitor ears = /obj/item/radio/headset/headset_srv /datum/outfit/job/janitor/pre_equip(mob/living/carbon/human/H, visualsOnly) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 8cf6ef08bda..431fca96f32 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -38,7 +38,7 @@ id_trim = /datum/id_trim/job/lawyer uniform = /obj/item/clothing/under/rank/civilian/lawyer/bluesuit suit = /obj/item/clothing/suit/toggle/lawyer - belt = /obj/item/modular_computer/tablet/pda/lawyer + belt = /obj/item/modular_computer/pda/lawyer ears = /obj/item/radio/headset/headset_srvsec shoes = /obj/item/clothing/shoes/laceup neck = /obj/item/clothing/neck/tie/red/tied diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 1d65727014c..1662d6ba744 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -48,7 +48,7 @@ uniform = /obj/item/clothing/under/rank/medical/scrubs/blue suit = /obj/item/clothing/suit/toggle/labcoat suit_store = /obj/item/flashlight/pen - belt = /obj/item/modular_computer/tablet/pda/medical + belt = /obj/item/modular_computer/pda/medical ears = /obj/item/radio/headset/headset_med head = /obj/item/clothing/head/utility/surgerycap shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index e1d23d94c05..fb421d4d133 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -57,7 +57,7 @@ /obj/item/reagent_containers/cup/glass/bottle/bottleofnothing = 1, /obj/item/stamp/mime = 1, ) - belt = /obj/item/modular_computer/tablet/pda/mime + belt = /obj/item/modular_computer/pda/mime ears = /obj/item/radio/headset/headset_srv gloves = /obj/item/clothing/gloves/color/white head = /obj/item/clothing/head/frenchberet diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 868f5e2565a..f84b1e7c138 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -56,7 +56,7 @@ head = /obj/item/clothing/head/soft/paramedic gloves = /obj/item/clothing/gloves/color/latex/nitrile shoes = /obj/item/clothing/shoes/sneakers/blue - l_pocket = /obj/item/modular_computer/tablet/pda/medical/paramedic + l_pocket = /obj/item/modular_computer/pda/medical/paramedic backpack = /obj/item/storage/backpack/medic satchel = /obj/item/storage/backpack/satchel/med diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm index eb2b1541ed9..18e47208ae5 100644 --- a/code/modules/jobs/job_types/psychologist.dm +++ b/code/modules/jobs/job_types/psychologist.dm @@ -49,7 +49,7 @@ /obj/item/storage/pill_bottle/paxpsych, /obj/item/storage/pill_bottle/psicodine, ) - belt = /obj/item/modular_computer/tablet/pda/medical + belt = /obj/item/modular_computer/pda/medical ears = /obj/item/radio/headset/headset_srvmed shoes = /obj/item/clothing/shoes/laceup l_hand = /obj/item/clipboard diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 1f429cf561e..9d755caaa44 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -46,7 +46,7 @@ id_trim = /datum/id_trim/job/quartermaster id = /obj/item/card/id/advanced/silver uniform = /obj/item/clothing/under/rank/cargo/qm - belt = /obj/item/modular_computer/tablet/pda/heads/quartermaster + belt = /obj/item/modular_computer/pda/heads/quartermaster ears = /obj/item/radio/headset/heads/qm glasses = /obj/item/clothing/glasses/sunglasses shoes = /obj/item/clothing/shoes/sneakers/brown diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 082835bf3b3..06d1d4479b2 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -62,7 +62,7 @@ backpack_contents = list( /obj/item/melee/baton/telescopic = 1, ) - belt = /obj/item/modular_computer/tablet/pda/heads/rd + belt = /obj/item/modular_computer/pda/heads/rd head = /obj/item/clothing/head/beret/science/rd ears = /obj/item/radio/headset/heads/rd shoes = /obj/item/clothing/shoes/jackboots diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index 4a1fbe28251..2b6bbe9d012 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -48,7 +48,7 @@ suit = /obj/item/clothing/suit/toggle/labcoat/roboticist belt = /obj/item/storage/belt/utility/full ears = /obj/item/radio/headset/headset_sci - l_pocket = /obj/item/modular_computer/tablet/pda/roboticist + l_pocket = /obj/item/modular_computer/pda/roboticist backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/science diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index 4d21f6a3bdd..7dfe2621ff7 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -46,7 +46,7 @@ id_trim = /datum/id_trim/job/scientist uniform = /obj/item/clothing/under/rank/rnd/scientist suit = /obj/item/clothing/suit/toggle/labcoat/science - belt = /obj/item/modular_computer/tablet/pda/science + belt = /obj/item/modular_computer/pda/science ears = /obj/item/radio/headset/headset_sci shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index dbb5685777e..3ad3fe7de16 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) backpack_contents = list( /obj/item/evidencebag = 1, ) - belt = /obj/item/modular_computer/tablet/pda/security + belt = /obj/item/modular_computer/pda/security ears = /obj/item/radio/headset/headset_sec/alt gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/helmet/sec diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index cccf8cddc23..153adb055e1 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -42,7 +42,7 @@ /obj/item/mining_voucher = 1, /obj/item/stack/marker_beacon/ten = 1, ) - belt = /obj/item/modular_computer/tablet/pda/shaftminer + belt = /obj/item/modular_computer/pda/shaftminer ears = /obj/item/radio/headset/headset_cargo/mining gloves = /obj/item/clothing/gloves/color/black shoes = /obj/item/clothing/shoes/workboots/mining diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 765f80153b3..26e413add01 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -49,7 +49,7 @@ ears = /obj/item/radio/headset/headset_eng head = /obj/item/clothing/head/utility/hardhat shoes = /obj/item/clothing/shoes/workboots - l_pocket = /obj/item/modular_computer/tablet/pda/engineering + l_pocket = /obj/item/modular_computer/pda/engineering r_pocket = /obj/item/t_scanner backpack = /obj/item/storage/backpack/industrial diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index af4e1a442de..5f33a9e98fb 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -48,7 +48,7 @@ uniform = /obj/item/clothing/under/rank/medical/virologist suit = /obj/item/clothing/suit/toggle/labcoat/virologist suit_store = /obj/item/flashlight/pen - belt = /obj/item/modular_computer/tablet/pda/viro + belt = /obj/item/modular_computer/pda/viro ears = /obj/item/radio/headset/headset_med mask = /obj/item/clothing/mask/surgical shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index cd78869f837..21307c6bdf4 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -55,7 +55,7 @@ backpack_contents = list( /obj/item/evidencebag = 1, ) - belt = /obj/item/modular_computer/tablet/pda/warden + belt = /obj/item/modular_computer/pda/warden ears = /obj/item/radio/headset/headset_sec/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses gloves = /obj/item/clothing/gloves/color/black diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 911eba6d54c..fa884ea9b0e 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -157,7 +157,7 @@ for(var/i in 1 to 5) new /obj/item/toy/snappop/phoenix(src) if(41 to 45) - new /obj/item/modular_computer/tablet/pda/clear(src) + new /obj/item/modular_computer/pda/clear(src) if(46 to 50) new /obj/item/storage/box/syndie_kit/chameleon/broken if(51 to 52) // 2% chance diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index a202d3d595a..5b814d17aab 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -68,7 +68,7 @@ //Useful when player is being seen by other mobs /mob/living/carbon/human/proc/get_id_name(if_no_id = "Unknown") var/obj/item/storage/wallet/wallet = wear_id - var/obj/item/modular_computer/tablet/pda/pda = wear_id + var/obj/item/modular_computer/pda/pda = wear_id var/obj/item/card/id/id = wear_id if(HAS_TRAIT(src, TRAIT_UNKNOWN)) . = if_no_id //You get NOTHING, no id name, good day sir diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 37ac52bfec3..c4d2e2055f6 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -960,7 +960,7 @@ GLOBAL_LIST_EMPTY(features_by_species) if(!disable_warning) to_chat(H, span_warning("The [I.name] is too big to attach!")) //should be src? return FALSE - if( istype(I, /obj/item/modular_computer/tablet) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) ) + if( istype(I, /obj/item/modular_computer/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) ) return TRUE return FALSE if(ITEM_SLOT_HANDCUFFED) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 565ca6a592b..1825a33fef0 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -93,7 +93,7 @@ /mob/living/silicon/robot/model/syndicate/create_modularInterface() if(!modularInterface) - modularInterface = new /obj/item/modular_computer/tablet/integrated/cyborg/syndicate(src) + modularInterface = new /obj/item/modular_computer/pda/silicon/cyborg/syndicate(src) modularInterface.saved_identification = real_name modularInterface.saved_job = "Cyborg" return ..() @@ -109,8 +109,6 @@ if(istype(model, /obj/item/robot_model/syndicate) || emagged) modularInterface.device_theme = "syndicate" modularInterface.icon_state = "tablet-silicon-syndicate" - modularInterface.icon_state_powered = "tablet-silicon-syndicate" - modularInterface.icon_state_unpowered = "tablet-silicon-syndicate" else modularInterface.device_theme = "ntos" modularInterface.icon_state = "tablet-silicon" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 05260fd7435..94a45aaac47 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -49,7 +49,7 @@ var/hack_software = FALSE //Will be able to use hacking actions interaction_range = 7 //wireless control range - var/obj/item/modular_computer/tablet/integrated/modularInterface + var/obj/item/modular_computer/pda/silicon/modularInterface /mob/living/silicon/Initialize(mapload) . = ..() @@ -81,7 +81,7 @@ /mob/living/silicon/proc/create_modularInterface() if(!modularInterface) - modularInterface = new /obj/item/modular_computer/tablet/integrated(src) + modularInterface = new /obj/item/modular_computer/pda/silicon(src) if(isAI(src)) modularInterface.saved_job = "AI" if(ispAI(src)) @@ -93,13 +93,13 @@ /mob/living/silicon/robot/create_modularInterface() if(!modularInterface) - modularInterface = new /obj/item/modular_computer/tablet/integrated/cyborg(src) + modularInterface = new /obj/item/modular_computer/pda/silicon/cyborg(src) modularInterface.saved_job = "Cyborg" return ..() /mob/living/silicon/robot/model/syndicate/create_modularInterface() if(!modularInterface) - modularInterface = new /obj/item/modular_computer/tablet/integrated/cyborg/syndicate(src) + modularInterface = new /obj/item/modular_computer/pda/silicon/cyborg/syndicate(src) modularInterface.saved_job = "Cyborg" return ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b9f3389345e..01942c69f3a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1090,8 +1090,8 @@ break search_id = 0 - else if( search_pda && istype(A, /obj/item/modular_computer/tablet/pda) ) - var/obj/item/modular_computer/tablet/pda/PDA = A + else if( search_pda && istype(A, /obj/item/modular_computer/pda) ) + var/obj/item/modular_computer/pda/PDA = A if(PDA.saved_identification == oldname) PDA.saved_identification = newname PDA.UpdateDisplay() diff --git a/code/modules/mob_spawn/ghost_roles/space_roles.dm b/code/modules/mob_spawn/ghost_roles/space_roles.dm index 3f81e2c5669..05850a17590 100644 --- a/code/modules/mob_spawn/ghost_roles/space_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/space_roles.dm @@ -212,7 +212,7 @@ name = "Syndicate Battlecruiser Assault Operative" uniform = /obj/item/clothing/under/syndicate/combat l_pocket = /obj/item/uplink/nuclear - r_pocket = /obj/item/modular_computer/tablet/nukeops + r_pocket = /obj/item/modular_computer/pda/nukeops belt = /obj/item/storage/belt/military suit = /obj/item/clothing/suit/armor/vest suit_store = /obj/item/gun/ballistic/automatic/pistol/clandestine diff --git a/code/modules/mob_spawn/ghost_roles/unused_roles.dm b/code/modules/mob_spawn/ghost_roles/unused_roles.dm index cc7543f5989..dffac3be04e 100644 --- a/code/modules/mob_spawn/ghost_roles/unused_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/unused_roles.dm @@ -197,7 +197,7 @@ /obj/effect/mob_spawn/ghost_role/human/doctor/alive/equip(mob/living/carbon/human/doctor) . = ..() // Remove radio and PDA so they wouldn't annoy station crew. - var/list/del_types = list(/obj/item/modular_computer/tablet, /obj/item/radio/headset) + var/list/del_types = list(/obj/item/modular_computer/pda, /obj/item/radio/headset) for(var/del_type in del_types) var/obj/item/unwanted_item = locate(del_type) in doctor qdel(unwanted_item) diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index 168c07c5acc..8b65733aa46 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -254,7 +254,7 @@ . = ..() if(conceal_presence) // We don't want corpse PDAs to show up in the messenger list. - var/obj/item/modular_computer/tablet/pda/messenger = locate() in spawned_human + var/obj/item/modular_computer/pda/messenger = locate() in spawned_human if(messenger) var/datum/computer_file/program/messenger/message_app = locate() in messenger.stored_files if(message_app) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 6f6fdc35611..2537b60f7a0 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -50,8 +50,6 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar var/hardware_flag = NONE // Options: PROGRAM_ALL | PROGRAM_CONSOLE | PROGRAM_LAPTOP | PROGRAM_TABLET - ///Whether the icon state should be bypassed entirely, used for PDAs. - var/bypass_state = FALSE ///The theme, used for the main menu and file browser apps. var/device_theme = "ntos" @@ -83,10 +81,12 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar // must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently // If you create a program which is limited to Laptops and Consoles you don't have to add it's icon_state overlay for Tablets too, for example. - var/icon_state_unpowered = null // Icon state when the computer is turned off. - var/icon_state_powered = null // Icon state when the computer is turned on. - var/icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. - var/display_overlays = TRUE // If FALSE, don't draw overlays on this device at all + ///If set, what the icon_state will be if the computer is unpowered. + var/icon_state_unpowered + ///If set, what the icon_state will be if the computer is powered. + var/icon_state_powered + ///Icon state overlay when the computer is turned on, but no program is loaded (programs override this). + var/icon_state_menu = "menu" ///The full name of the stored ID card's identity. These vars should probably be on the PDA. var/saved_identification @@ -382,18 +382,16 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar return . || NONE /obj/item/modular_computer/update_icon_state() - if(!bypass_state) - icon_state = enabled ? icon_state_powered : icon_state_unpowered + if(!icon_state_powered || !icon_state_unpowered) //no valid icon, don't update. + return ..() + icon_state = enabled ? icon_state_powered : icon_state_unpowered return ..() /obj/item/modular_computer/update_overlays() . = ..() var/init_icon = initial(icon) - if(!init_icon) return - if(!display_overlays) - return if(enabled) . += active_program ? mutable_appearance(init_icon, active_program.program_icon_state) : mutable_appearance(init_icon, icon_state_menu) @@ -493,7 +491,6 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar active_program.ntnet_status = get_ntnet_status() handle_power(delta_time) // Handles all computer power interaction - //check_update_ui_need() /** * Displays notification text alongside a soundbeep when requested to by a program. diff --git a/code/modules/modular_computers/computers/item/computer_power.dm b/code/modules/modular_computers/computers/item/computer_power.dm index e9f248dbb67..658b2ceaaa7 100644 --- a/code/modules/modular_computers/computers/item/computer_power.dm +++ b/code/modules/modular_computers/computers/item/computer_power.dm @@ -46,5 +46,5 @@ return FALSE //Integrated (Silicon) tablets don't drain power, because the tablet is required to state laws, so it being disabled WILL cause problems. -/obj/item/modular_computer/tablet/integrated/check_power_override() +/obj/item/modular_computer/pda/silicon/check_power_override() return TRUE diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index 4dfe84ce28b..e146226893a 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -50,7 +50,7 @@ . = ..() var/list/data = list() - data["show_imprint"] = istype(src, /obj/item/modular_computer/tablet) + data["show_imprint"] = istype(src, /obj/item/modular_computer/pda) return data diff --git a/code/modules/modular_computers/computers/item/disks/virus_disk.dm b/code/modules/modular_computers/computers/item/disks/virus_disk.dm index 9714318a859..7416a13348e 100644 --- a/code/modules/modular_computers/computers/item/disks/virus_disk.dm +++ b/code/modules/modular_computers/computers/item/disks/virus_disk.dm @@ -9,7 +9,7 @@ ///How many charges the virus has left var/charges = 5 -/obj/item/computer_disk/virus/proc/send_virus(obj/item/modular_computer/tablet/source, obj/item/modular_computer/tablet/target, mob/living/user) +/obj/item/computer_disk/virus/proc/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user) if(charges <= 0) to_chat(user, span_notice("ERROR: Out of charges.")) return FALSE @@ -26,7 +26,7 @@ /obj/item/computer_disk/virus/clown name = "\improper H.O.N.K. disk" -/obj/item/computer_disk/virus/clown/send_virus(obj/item/modular_computer/tablet/source, obj/item/modular_computer/tablet/target, mob/living/user) +/obj/item/computer_disk/virus/clown/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user) . = ..() if(!.) return FALSE @@ -43,7 +43,7 @@ /obj/item/computer_disk/virus/mime name = "\improper sound of silence disk" -/obj/item/computer_disk/virus/mime/send_virus(obj/item/modular_computer/tablet/source, obj/item/modular_computer/tablet/target, mob/living/user) +/obj/item/computer_disk/virus/mime/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user) . = ..() if(!.) return FALSE @@ -64,7 +64,7 @@ name = "\improper D.E.T.O.M.A.T.I.X. disk" charges = 6 -/obj/item/computer_disk/virus/detomatix/send_virus(obj/item/modular_computer/tablet/source, obj/item/modular_computer/tablet/target, mob/living/user) +/obj/item/computer_disk/virus/detomatix/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user) . = ..() if(!.) return FALSE @@ -120,7 +120,7 @@ telecrystal_stack.use(telecrystal_stack.amount) -/obj/item/computer_disk/virus/frame/send_virus(obj/item/modular_computer/tablet/target, mob/living/user) +/obj/item/computer_disk/virus/frame/send_virus(obj/item/modular_computer/pda/target, mob/living/user) . = ..() if(!.) return FALSE diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index 30cda8c211a..faa4c24638f 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -7,7 +7,6 @@ icon_state_powered = "laptop" icon_state_unpowered = "laptop-off" icon_state_menu = "menu" - display_overlays = FALSE hardware_flag = PROGRAM_LAPTOP max_idle_programs = 3 @@ -111,7 +110,6 @@ w_class = w_class_open screen_on = !screen_on - display_overlays = screen_on update_appearance() diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/pda.dm similarity index 68% rename from code/modules/modular_computers/computers/item/tablet.dm rename to code/modules/modular_computers/computers/item/pda.dm index c5a77688e95..4ef3a4aad60 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -1,31 +1,42 @@ -/obj/item/modular_computer/tablet //Its called tablet for theme of 90ies but actually its a "big smartphone" sized - name = "tablet computer" - icon = 'icons/obj/modular_tablet.dmi' - icon_state = "tablet-red" - icon_state_unpowered = "tablet-red" - icon_state_powered = "tablet-red" - icon_state_menu = "menu" - inhand_icon_state = "electronic" +/obj/item/modular_computer/pda + name = "pda" + icon = 'icons/obj/modular_pda.dmi' + icon_state = "pda" + worn_icon_state = "pda" + base_icon_state = "tablet" + greyscale_config = /datum/greyscale_config/tablet + greyscale_colors = "#999875#a92323" + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - base_icon_state = "tablet" - worn_icon_state = "tablet" - hardware_flag = PROGRAM_TABLET - max_idle_programs = 2 - w_class = WEIGHT_CLASS_SMALL + inhand_icon_state = "electronic" + steel_sheet_cost = 2 - slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT - has_light = TRUE //LED flashlight! - comp_light_luminosity = 2.3 //Same as the PDA - looping_sound = FALSE custom_materials = list(/datum/material/iron=300, /datum/material/glass=100, /datum/material/plastic=100) interaction_flags_atom = INTERACT_ATOM_ALLOW_USER_LOCATION - var/has_variants = TRUE - var/finish_color = null + icon_state_menu = "menu" + max_capacity = 64 + allow_chunky = TRUE + hardware_flag = PROGRAM_TABLET + max_idle_programs = 2 + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT + has_light = TRUE //LED flashlight! + comp_light_luminosity = 2.3 //this is what old PDAs were set to + looping_sound = FALSE ///The item currently inserted into the PDA, starts with a pen. var/obj/item/inserted_item = /obj/item/pen + + ///Whether the PDA should have 'pda_programs' apps installed on Initialize. + var/has_pda_programs = TRUE + ///Static list of default PDA apps to install on Initialize. + var/static/list/datum/computer_file/pda_programs = list( + /datum/computer_file/program/messenger, + /datum/computer_file/program/nt_pay, + /datum/computer_file/program/notepad, + ) ///List of items that can be stored in a PDA var/static/list/contained_item = list( /obj/item/pen, @@ -35,24 +46,43 @@ /obj/item/clothing/mask/cigarette, ) -/obj/item/modular_computer/tablet/Initialize(mapload) +/obj/item/modular_computer/pda/Initialize(mapload) . = ..() if(inserted_item) inserted_item = new inserted_item(src) -/obj/item/modular_computer/tablet/Destroy() +/obj/item/modular_computer/pda/Destroy() if(istype(inserted_item)) QDEL_NULL(inserted_item) return ..() -/obj/item/modular_computer/tablet/update_icon_state() - if(has_variants && !bypass_state) - if(!finish_color) - finish_color = pick("red", "blue", "brown", "green", "black") - icon_state = icon_state_powered = icon_state_unpowered = "[base_icon_state]-[finish_color]" - return ..() +/obj/item/modular_computer/pda/install_default_programs() + var/list/apps_to_download = list() + if(has_pda_programs) + apps_to_download += default_programs + pda_programs + apps_to_download += starting_programs -/obj/item/modular_computer/tablet/attack_self(mob/user) + for(var/programs as anything in apps_to_download) + var/datum/computer_file/program/program_type = new programs + store_file(program_type) + +/obj/item/modular_computer/pda/update_overlays() + . = ..() + if(computer_id_slot) + . += mutable_appearance(initial(icon), "id_overlay") + if(light_on) + . += mutable_appearance(initial(icon), "light_overlay") + +/obj/item/modular_computer/pda/attack_ai(mob/user) + to_chat(user, span_notice("It doesn't feel right to snoop around like that...")) + return // we don't want ais or cyborgs using a private role tablet + +/obj/item/modular_computer/pda/interact(mob/user) + . = ..() + if(HAS_TRAIT(src, TRAIT_PDA_MESSAGE_MENU_RIGGED)) + explode(usr, from_message_menu = TRUE) + +/obj/item/modular_computer/pda/attack_self(mob/user) // bypass literacy checks to access syndicate uplink var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) if(hidden_uplink?.owner && HAS_TRAIT(user, TRAIT_ILLITERATE)) @@ -65,7 +95,7 @@ return ..() -/obj/item/modular_computer/tablet/pre_attack(atom/target, mob/living/user, params) +/obj/item/modular_computer/pda/pre_attack(atom/target, mob/living/user, params) if(!inserted_disk || !ismachinery(target)) return ..() @@ -93,12 +123,7 @@ ) return TRUE -/obj/item/modular_computer/tablet/interact(mob/user) - . = ..() - if(HAS_TRAIT(src, TRAIT_PDA_MESSAGE_MENU_RIGGED)) - explode(usr, from_message_menu = TRUE) - -/obj/item/modular_computer/tablet/add_context(atom/source, list/context, obj/item/held_item, mob/user) +/obj/item/modular_computer/pda/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() if(inserted_item) @@ -110,30 +135,31 @@ return . || NONE -/obj/item/modular_computer/tablet/attackby(obj/item/W, mob/user) +/obj/item/modular_computer/pda/attackby(obj/item/attacking_item, mob/user, params) . = ..() - if(is_type_in_list(W, contained_item)) - if(W.w_class >= WEIGHT_CLASS_SMALL) // Anything equal to or larger than small won't work - user.balloon_alert(user, "too big!") - return - if(inserted_item) - balloon_alert(user, "no room!") - else - if(!user.transferItemToLoc(W, src)) - return - balloon_alert(user, "inserted [W]") - inserted_item = W - playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) + if(!is_type_in_list(attacking_item, contained_item)) + return + if(attacking_item.w_class >= WEIGHT_CLASS_SMALL) // Anything equal to or larger than small won't work + user.balloon_alert(user, "too big!") + return + if(inserted_item) + balloon_alert(user, "no room!") + return + if(!user.transferItemToLoc(attacking_item, src)) + return + balloon_alert(user, "inserted [attacking_item]") + inserted_item = attacking_item + playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) -/obj/item/modular_computer/tablet/AltClick(mob/user) +/obj/item/modular_computer/pda/AltClick(mob/user) . = ..() if(.) return remove_pen(user) -/obj/item/modular_computer/tablet/CtrlClick(mob/user) +/obj/item/modular_computer/pda/CtrlClick(mob/user) . = ..() if(.) return @@ -141,7 +167,7 @@ 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() +/obj/item/modular_computer/pda/proc/get_detomatix_difficulty() var/detomatix_difficulty for(var/datum/computer_file/program/downloaded_apps as anything in stored_files) @@ -149,11 +175,7 @@ return detomatix_difficulty -/obj/item/modular_computer/tablet/proc/tab_no_detonate() - SIGNAL_HANDLER - return COMPONENT_TABLET_NO_DETONATE - -/obj/item/modular_computer/tablet/proc/remove_pen(mob/user) +/obj/item/modular_computer/pda/proc/remove_pen(mob/user) if(issilicon(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) //TK doesn't work even with this removed but here for readability return @@ -165,10 +187,8 @@ update_appearance() playsound(src, 'sound/machines/pda_button2.ogg', 50, TRUE) -// Tablet 'splosion.. - -/obj/item/modular_computer/tablet/proc/explode(mob/target, mob/bomber, from_message_menu = FALSE) - var/turf/T = get_turf(src) +/obj/item/modular_computer/pda/proc/explode(mob/target, mob/bomber, from_message_menu = FALSE) + var/turf/current_turf = get_turf(src) if(from_message_menu) log_bomber(null, null, target, "'s tablet exploded as [target.p_they()] tried to open their tablet message menu because of a recent tablet bomb.") @@ -176,15 +196,20 @@ log_bomber(bomber, "successfully tablet-bombed", target, "as [target.p_they()] tried to reply to a rigged tablet message [bomber && !is_special_character(bomber) ? "(SENT BY NON-ANTAG)" : ""]") if (ismob(loc)) - var/mob/M = loc - M.show_message(span_userdanger("Your [src] explodes!"), MSG_VISUAL, span_warning("You hear a loud *pop*!"), MSG_AUDIBLE) + var/mob/loc_mob = loc + loc_mob.show_message( + msg = span_userdanger("Your [src] explodes!"), + type = MSG_VISUAL, + alt_msg = span_warning("You hear a loud *pop*!"), + alt_type = MSG_AUDIBLE, + ) else visible_message(span_danger("[src] explodes!"), span_warning("You hear a loud *pop*!")) target.client?.give_award(/datum/award/achievement/misc/clickbait, target) - if(T) - T.hotspot_expose(700,125) + if(current_turf) + current_turf.hotspot_expose(700,125) if(istype(inserted_disk, /obj/item/computer_disk/virus/detomatix)) explosion(src, devastation_range = -1, heavy_impact_range = 1, light_impact_range = 3, flash_range = 4) else @@ -199,7 +224,7 @@ * Arguments: * * ringtone_client - The client whose prefs we'll use to set the ringtone of this PDA. */ -/obj/item/modular_computer/tablet/proc/update_ringtone_pref(client/ringtone_client) +/obj/item/modular_computer/pda/proc/update_ringtone_pref(client/ringtone_client) if(!ringtone_client) return @@ -210,56 +235,58 @@ update_ringtone(new_ringtone) - /// A simple proc to set the ringtone from a pda. -/obj/item/modular_computer/tablet/proc/update_ringtone(new_ringtone) +/obj/item/modular_computer/pda/proc/update_ringtone(new_ringtone) if(!istext(new_ringtone)) return for(var/datum/computer_file/program/messenger/messenger_app in stored_files) messenger_app.ringtone = new_ringtone -// SUBTYPES - -/obj/item/modular_computer/tablet/syndicate_contract_uplink - name = "contractor tablet" - icon = 'icons/obj/contractor_tablet.dmi' - icon_state = "tablet" - icon_state_unpowered = "tablet" - icon_state_powered = "tablet" - icon_state_menu = "assign" - w_class = WEIGHT_CLASS_SMALL - slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT - comp_light_luminosity = 6.3 - has_variants = FALSE - -/// Given to Nuke Ops members. -/obj/item/modular_computer/tablet/nukeops +/** + * Nuclear PDA + * + * PDA that doesn't come with the default apps but has Fission360 + * Resistant to emags, these are given to nukies for disk pinpointer stuff. + */ +/obj/item/modular_computer/pda/nukeops + name = "nuclear pda" + icon = 'icons/obj/modular_tablet.dmi' icon_state = "tablet-syndicate" - icon_state_powered = "tablet-syndicate" - icon_state_unpowered = "tablet-syndicate" - comp_light_luminosity = 6.3 - has_variants = FALSE device_theme = "syndicate" + comp_light_luminosity = 6.3 light_color = COLOR_RED + has_pda_programs = FALSE + greyscale_config = null + greyscale_colors = null -/obj/item/modular_computer/tablet/nukeops/emag_act(mob/user) + starting_programs = list( + /datum/computer_file/program/ntnetdownload/syndicate, + /datum/computer_file/program/radar/fission360, + ) + +/obj/item/modular_computer/pda/nukeops/emag_act(mob/user) if(!enabled) to_chat(user, span_warning("You'd need to turn the [src] on first.")) return FALSE to_chat(user, span_notice("You swipe \the [src]. It's screen briefly shows a message reading \"MEMORY CODE INJECTION DETECTED AND SUCCESSFULLY QUARANTINED\".")) return FALSE -/// Borg Built-in tablet interface -/obj/item/modular_computer/tablet/integrated +/** + * Silicon PDA + * + * PDAs that are built-in to Silicons and should not exist at any point without being inside of one. + */ +/obj/item/modular_computer/pda/silicon name = "modular interface" icon_state = "tablet-silicon" - icon_state_powered = "tablet-silicon" - icon_state_unpowered = "tablet-silicon" base_icon_state = "tablet-silicon" + greyscale_config = null + greyscale_colors = null + has_light = FALSE //tablet light button actually enables/disables the borg lamp comp_light_luminosity = 0 - has_variants = FALSE inserted_item = null + has_pda_programs = FALSE starting_programs = list( /datum/computer_file/program/messenger, ) @@ -271,14 +298,14 @@ ///Ref to the silicon we're installed in. Set by the silicon itself during its creation. var/mob/living/silicon/silicon_owner -/obj/item/modular_computer/tablet/integrated/cyborg +/obj/item/modular_computer/pda/silicon/cyborg starting_programs = list( /datum/computer_file/program/computerconfig, /datum/computer_file/program/filemanager, /datum/computer_file/program/robotact, ) -/obj/item/modular_computer/tablet/integrated/Initialize(mapload) +/obj/item/modular_computer/pda/silicon/Initialize(mapload) . = ..() vis_flags |= VIS_INHERIT_ID silicon_owner = loc @@ -287,21 +314,16 @@ stack_trace("[type] initialized outside of a silicon, deleting.") return INITIALIZE_HINT_QDEL -/obj/item/modular_computer/tablet/integrated/install_default_programs() - for(var/programs in starting_programs) - var/datum/computer_file/program/program_type = new programs - store_file(program_type) - -/obj/item/modular_computer/tablet/integrated/Destroy() +/obj/item/modular_computer/pda/silicon/Destroy() silicon_owner = null return ..() -/obj/item/modular_computer/tablet/integrated/turn_on(mob/user, open_ui = FALSE) +/obj/item/modular_computer/pda/silicon/turn_on(mob/user, open_ui = FALSE) if(silicon_owner?.stat != DEAD) return ..() return FALSE -/obj/item/modular_computer/tablet/integrated/get_ntnet_status(specific_action = 0) +/obj/item/modular_computer/pda/silicon/get_ntnet_status(specific_action = 0) //No borg found if(!silicon_owner) return FALSE @@ -328,7 +350,7 @@ * the new copy (such as due to lack of space), the proc will crash with an error. * RoboTact is supposed to be undeletable, so these will create runtime messages. */ -/obj/item/modular_computer/tablet/integrated/proc/get_robotact() +/obj/item/modular_computer/pda/silicon/proc/get_robotact() if(robotact) return robotact robotact = find_file_by_name("robotact") @@ -343,7 +365,7 @@ CRASH("Cyborg [silicon_owner]'s tablet hard drive rejected recieving a new copy of the self-manage app. To fix, check the hard drive's space remaining. Please make a bug report about this.") //Makes the light settings reflect the borg's headlamp settings -/obj/item/modular_computer/tablet/integrated/cyborg/ui_data(mob/user) +/obj/item/modular_computer/pda/silicon/cyborg/ui_data(mob/user) . = ..() .["has_light"] = TRUE if(iscyborg(silicon_owner)) @@ -352,7 +374,7 @@ .["comp_light_color"] = robo.lamp_color //Makes the flashlight button affect the borg rather than the tablet -/obj/item/modular_computer/tablet/integrated/toggle_flashlight() +/obj/item/modular_computer/pda/silicon/toggle_flashlight() if(!silicon_owner || QDELETED(silicon_owner)) return FALSE if(iscyborg(silicon_owner)) @@ -361,7 +383,7 @@ return TRUE //Makes the flashlight color setting affect the borg rather than the tablet -/obj/item/modular_computer/tablet/integrated/set_flashlight_color(color) +/obj/item/modular_computer/pda/silicon/set_flashlight_color(color) if(!silicon_owner || QDELETED(silicon_owner) || !color) return FALSE if(iscyborg(silicon_owner)) @@ -370,55 +392,15 @@ robo.toggle_headlamp(FALSE, TRUE) return TRUE -/obj/item/modular_computer/tablet/integrated/ui_state(mob/user) +/obj/item/modular_computer/pda/silicon/ui_state(mob/user) return GLOB.reverse_contained_state -/obj/item/modular_computer/tablet/integrated/cyborg/syndicate +/obj/item/modular_computer/pda/silicon/cyborg/syndicate icon_state = "tablet-silicon-syndicate" - icon_state_powered = "tablet-silicon-syndicate" - icon_state_unpowered = "tablet-silicon-syndicate" device_theme = "syndicate" - -/obj/item/modular_computer/tablet/integrated/cyborg/syndicate/Initialize(mapload) +/obj/item/modular_computer/pda/silicon/cyborg/syndicate/Initialize(mapload) . = ..() if(iscyborg(silicon_owner)) var/mob/living/silicon/robot/robo = silicon_owner robo.lamp_color = COLOR_RED //Syndicate likes it red - -// Round start tablets - -/obj/item/modular_computer/tablet/pda - icon = 'icons/obj/modular_pda.dmi' - icon_state = "pda" - worn_icon_state = "pda" - - greyscale_config = /datum/greyscale_config/tablet - greyscale_colors = "#999875#a92323" - - max_capacity = 64 - bypass_state = TRUE - allow_chunky = TRUE - - ///Static list of default PDA apps to install on Initialize. - var/static/list/datum/computer_file/pda_programs = list( - /datum/computer_file/program/messenger, - /datum/computer_file/program/nt_pay, - /datum/computer_file/program/notepad, - ) - -/obj/item/modular_computer/tablet/pda/install_default_programs() - for(var/programs as anything in (default_programs + pda_programs + starting_programs)) - var/datum/computer_file/program/program_type = new programs - store_file(program_type) - -/obj/item/modular_computer/tablet/pda/update_overlays() - . = ..() - if(computer_id_slot) - . += mutable_appearance(initial(icon), "id_overlay") - if(light_on) - . += mutable_appearance(initial(icon), "light_overlay") - -/obj/item/modular_computer/tablet/pda/attack_ai(mob/user) - to_chat(user, span_notice("It doesn't feel right to snoop around like that...")) - return // we don't want ais or cyborgs using a private role tablet diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index 0b826b83fa6..192b592489d 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -2,7 +2,7 @@ * Command */ -/obj/item/modular_computer/tablet/pda/heads +/obj/item/modular_computer/pda/heads greyscale_config = /datum/greyscale_config/tablet/head greyscale_colors = "#67A364#a92323" starting_programs = list( @@ -13,19 +13,23 @@ /datum/computer_file/program/budgetorders, ) -/obj/item/modular_computer/tablet/pda/heads/captain +/obj/item/modular_computer/pda/heads/captain name = "captain PDA" greyscale_config = /datum/greyscale_config/tablet/captain greyscale_colors = "#2C7CB2#FF0000#FFFFFF#FFD55B" inserted_item = /obj/item/pen/fountain/captain -/obj/item/modular_computer/tablet/pda/heads/captain/Initialize(mapload) +/obj/item/modular_computer/pda/heads/captain/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_TABLET_CHECK_DETONATE, PROC_REF(tab_no_detonate)) for(var/datum/computer_file/program/messenger/messenger_app in stored_files) messenger_app.spam_mode = TRUE -/obj/item/modular_computer/tablet/pda/heads/hop +/obj/item/modular_computer/pda/heads/captain/proc/tab_no_detonate() + SIGNAL_HANDLER + return COMPONENT_TABLET_NO_DETONATE + +/obj/item/modular_computer/pda/heads/hop name = "head of personnel PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#374f7e#a52f29#a52f29" @@ -39,7 +43,7 @@ /datum/computer_file/program/job_management, ) -/obj/item/modular_computer/tablet/pda/heads/hos +/obj/item/modular_computer/pda/heads/hos name = "head of security PDA" greyscale_config = /datum/greyscale_config/tablet/head greyscale_colors = "#EA3232#0000CC" @@ -52,7 +56,7 @@ /datum/computer_file/program/records/security, ) -/obj/item/modular_computer/tablet/pda/heads/ce +/obj/item/modular_computer/pda/heads/ce name = "chief engineer PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#D99A2E#69DBF3#FAFAFA" @@ -67,7 +71,7 @@ /datum/computer_file/program/supermatter_monitor, ) -/obj/item/modular_computer/tablet/pda/heads/cmo +/obj/item/modular_computer/pda/heads/cmo name = "chief medical officer PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#FAFAFA#000099#3F96CC" @@ -81,7 +85,7 @@ /datum/computer_file/program/records/medical, ) -/obj/item/modular_computer/tablet/pda/heads/rd +/obj/item/modular_computer/pda/heads/rd name = "research director PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#FAFAFA#000099#B347BC" @@ -96,7 +100,7 @@ /datum/computer_file/program/signal_commander, ) -/obj/item/modular_computer/tablet/pda/heads/quartermaster +/obj/item/modular_computer/pda/heads/quartermaster name = "quartermaster PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#D6B328#6506CA#927444" @@ -116,7 +120,7 @@ * Security */ -/obj/item/modular_computer/tablet/pda/security +/obj/item/modular_computer/pda/security name = "security PDA" greyscale_colors = "#EA3232#0000cc" starting_programs = list( @@ -125,7 +129,7 @@ /datum/computer_file/program/robocontrol, ) -/obj/item/modular_computer/tablet/pda/detective +/obj/item/modular_computer/pda/detective name = "detective PDA" greyscale_colors = "#805A2F#990202" starting_programs = list( @@ -135,7 +139,7 @@ /datum/computer_file/program/phys_scanner/medical, ) -/obj/item/modular_computer/tablet/pda/warden +/obj/item/modular_computer/pda/warden name = "warden PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_split greyscale_colors = "#EA3232#0000CC#363636" @@ -149,7 +153,7 @@ * Engineering */ -/obj/item/modular_computer/tablet/pda/engineering +/obj/item/modular_computer/pda/engineering name = "engineering PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#D99A2E#69DBF3#E3DF3D" @@ -157,7 +161,7 @@ /datum/computer_file/program/supermatter_monitor, ) -/obj/item/modular_computer/tablet/pda/atmos +/obj/item/modular_computer/pda/atmos name = "atmospherics PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#EEDC43#00E5DA#727272" @@ -170,7 +174,7 @@ * Science */ -/obj/item/modular_computer/tablet/pda/science +/obj/item/modular_computer/pda/science name = "scientist PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#FAFAFA#000099#B347BC" @@ -179,7 +183,7 @@ /datum/computer_file/program/signal_commander, ) -/obj/item/modular_computer/tablet/pda/roboticist +/obj/item/modular_computer/pda/roboticist name = "roboticist PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_split greyscale_colors = "#484848#0099CC#D94927" @@ -187,7 +191,7 @@ /datum/computer_file/program/robocontrol, ) -/obj/item/modular_computer/tablet/pda/geneticist +/obj/item/modular_computer/pda/geneticist name = "geneticist PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_split greyscale_colors = "#FAFAFA#000099#0097CA" @@ -200,7 +204,7 @@ * Medical */ -/obj/item/modular_computer/tablet/pda/medical +/obj/item/modular_computer/pda/medical name = "medical PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#FAFAFA#000099#3F96CC" @@ -210,7 +214,7 @@ /datum/computer_file/program/robocontrol, ) -/obj/item/modular_computer/tablet/pda/medical/paramedic +/obj/item/modular_computer/pda/medical/paramedic name = "paramedic PDA" starting_programs = list( /datum/computer_file/program/phys_scanner/medical, @@ -218,7 +222,7 @@ /datum/computer_file/program/radar/lifeline, ) -/obj/item/modular_computer/tablet/pda/viro +/obj/item/modular_computer/pda/viro name = "virology PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_split greyscale_colors = "#FAFAFA#355FAC#57C451" @@ -228,7 +232,7 @@ /datum/computer_file/program/robocontrol, ) -/obj/item/modular_computer/tablet/pda/chemist +/obj/item/modular_computer/pda/chemist name = "chemist PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#FAFAFA#355FAC#EA6400" @@ -240,7 +244,7 @@ * Supply */ -/obj/item/modular_computer/tablet/pda/cargo +/obj/item/modular_computer/pda/cargo name = "cargo technician PDA" greyscale_colors = "#D6B328#6506CA" stored_paper = 20 @@ -250,7 +254,7 @@ /datum/computer_file/program/robocontrol, ) -/obj/item/modular_computer/tablet/pda/shaftminer +/obj/item/modular_computer/pda/shaftminer name = "shaft miner PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#927444#D6B328#6C3BA1" @@ -262,7 +266,7 @@ * Service */ -/obj/item/modular_computer/tablet/pda/janitor +/obj/item/modular_computer/pda/janitor name = "janitor PDA" greyscale_colors = "#933ea8#235AB2" starting_programs = list( @@ -270,12 +274,12 @@ /datum/computer_file/program/radar/custodial_locator, ) -/obj/item/modular_computer/tablet/pda/chaplain +/obj/item/modular_computer/pda/chaplain name = "chaplain PDA" greyscale_config = /datum/greyscale_config/tablet/chaplain greyscale_colors = "#333333#D11818" -/obj/item/modular_computer/tablet/pda/lawyer +/obj/item/modular_computer/pda/lawyer name = "lawyer PDA" greyscale_colors = "#4C76C8#FFE243" inserted_item = /obj/item/pen/fountain @@ -283,25 +287,25 @@ /datum/computer_file/program/records/security, ) -/obj/item/modular_computer/tablet/pda/lawyer/Initialize(mapload) +/obj/item/modular_computer/pda/lawyer/Initialize(mapload) . = ..() for(var/datum/computer_file/program/messenger/messenger_app in stored_files) messenger_app.spam_mode = TRUE -/obj/item/modular_computer/tablet/pda/botanist +/obj/item/modular_computer/pda/botanist name = "botanist PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#50E193#E26F41#71A7CA" -/obj/item/modular_computer/tablet/pda/cook +/obj/item/modular_computer/pda/cook name = "cook PDA" greyscale_colors = "#FAFAFA#A92323" -/obj/item/modular_computer/tablet/pda/bar +/obj/item/modular_computer/pda/bar name = "bartender PDA" greyscale_colors = "#333333#C7C7C7" -/obj/item/modular_computer/tablet/pda/clown +/obj/item/modular_computer/pda/clown name = "clown PDA" inserted_disk = /obj/item/computer_disk/virus/clown icon_state = "pda-clown" @@ -309,26 +313,26 @@ greyscale_colors = null inserted_item = /obj/item/toy/crayon/rainbow -/obj/item/modular_computer/tablet/pda/clown/Initialize(mapload) +/obj/item/modular_computer/pda/clown/Initialize(mapload) . = ..() AddComponent(/datum/component/slippery/clowning, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip)), slot_whitelist = list(ITEM_SLOT_ID, ITEM_SLOT_BELT)) AddComponent(/datum/component/wearertargeting/sitcomlaughter, CALLBACK(src, PROC_REF(after_sitcom_laugh))) -/obj/item/modular_computer/tablet/pda/clown/update_overlays() +/obj/item/modular_computer/pda/clown/update_overlays() . = ..() . += mutable_appearance(icon, "pda_stripe_clown") // clowns have eyes that go over their screen, so it needs to be compiled last -/obj/item/modular_computer/tablet/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) +/obj/item/modular_computer/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) if (istype(M) && (M.real_name != saved_identification)) var/obj/item/computer_disk/virus/clown/cart = inserted_disk if(istype(cart) && cart.charges < 5) cart.charges++ playsound(src,'sound/machines/ping.ogg',30,TRUE) -/obj/item/modular_computer/tablet/pda/clown/proc/after_sitcom_laugh(mob/victim) +/obj/item/modular_computer/pda/clown/proc/after_sitcom_laugh(mob/victim) victim.visible_message("[src] lets out a burst of laughter!") -/obj/item/modular_computer/tablet/pda/mime +/obj/item/modular_computer/pda/mime name = "mime PDA" inserted_disk = /obj/item/computer_disk/virus/mime greyscale_config = /datum/greyscale_config/tablet/mime @@ -338,13 +342,13 @@ /datum/computer_file/program/emojipedia, ) -/obj/item/modular_computer/tablet/pda/mime/Initialize(mapload) +/obj/item/modular_computer/pda/mime/Initialize(mapload) . = ..() for(var/datum/computer_file/program/messenger/msg in stored_files) msg.mime_mode = TRUE msg.ringer_status = FALSE -/obj/item/modular_computer/tablet/pda/curator +/obj/item/modular_computer/pda/curator name = "curator PDA" desc = "A small experimental microcomputer." greyscale_config = null @@ -357,7 +361,7 @@ /datum/computer_file/program/newscaster, ) -/obj/item/modular_computer/tablet/pda/curator/Initialize(mapload) +/obj/item/modular_computer/pda/curator/Initialize(mapload) . = ..() for(var/datum/computer_file/program/messenger/msg in stored_files) msg.ringer_status = FALSE @@ -366,7 +370,7 @@ * No Department */ -/obj/item/modular_computer/tablet/pda/assistant +/obj/item/modular_computer/pda/assistant name = "assistant PDA" starting_programs = list( /datum/computer_file/program/bounty_board, @@ -376,20 +380,20 @@ * Non-roles */ -/obj/item/modular_computer/tablet/pda/syndicate +/obj/item/modular_computer/pda/syndicate name = "military PDA" greyscale_colors = "#891417#80FF80" saved_identification = "John Doe" saved_job = "Citizen" device_theme = "syndicate" -/obj/item/modular_computer/tablet/pda/syndicate/Initialize(mapload) +/obj/item/modular_computer/pda/syndicate/Initialize(mapload) . = ..() var/datum/computer_file/program/messenger/msg = locate() in stored_files if(msg) msg.invisible = TRUE -/obj/item/modular_computer/tablet/pda/clear +/obj/item/modular_computer/pda/clear name = "clear PDA" icon_state = "pda-clear" greyscale_config = null diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm deleted file mode 100644 index 207899a8a34..00000000000 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ /dev/null @@ -1,6 +0,0 @@ -/// Given to Nuke Ops members. -/obj/item/modular_computer/tablet/nukeops - starting_programs = list( - /datum/computer_file/program/ntnetdownload/syndicate, - /datum/computer_file/program/radar/fission360, - ) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index 8c1dde8e425..0955125f814 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -19,8 +19,8 @@ /datum/computer_file/program/revelation/proc/activate() if(computer) - if(istype(computer, /obj/item/modular_computer/tablet/integrated)) //If this is a borg's integrated tablet - var/obj/item/modular_computer/tablet/integrated/modularInterface = computer + if(istype(computer, /obj/item/modular_computer/pda/silicon)) //If this is a borg's integrated tablet + var/obj/item/modular_computer/pda/silicon/modularInterface = computer to_chat(modularInterface.silicon_owner,span_userdanger("SYSTEM PURGE DETECTED/")) addtimer(CALLBACK(modularInterface.silicon_owner, TYPE_PROC_REF(/mob/living/silicon/robot/, death)), 2 SECONDS, TIMER_UNIQUE) return diff --git a/code/modules/modular_computers/file_system/programs/ntmessenger.dm b/code/modules/modular_computers/file_system/programs/ntmessenger.dm index aee4e08b458..6873c6ba984 100644 --- a/code/modules/modular_computers/file_system/programs/ntmessenger.dm +++ b/code/modules/modular_computers/file_system/programs/ntmessenger.dm @@ -405,6 +405,6 @@ send_message(usr, list(locate(href_list["target"]))) if("mess_us_up") if(!HAS_TRAIT(src, TRAIT_PDA_CAN_EXPLODE)) - var/obj/item/modular_computer/tablet/comp = computer + var/obj/item/modular_computer/pda/comp = computer comp.explode(usr, from_message_menu = TRUE) return diff --git a/code/modules/modular_computers/file_system/programs/robotact.dm b/code/modules/modular_computers/file_system/programs/robotact.dm index aaf9f4a0f32..4b2039a6244 100644 --- a/code/modules/modular_computers/file_system/programs/robotact.dm +++ b/code/modules/modular_computers/file_system/programs/robotact.dm @@ -14,12 +14,12 @@ program_icon = "terminal" /datum/computer_file/program/robotact/on_start(mob/living/user) - if(!istype(computer, /obj/item/modular_computer/tablet/integrated)) + if(!istype(computer, /obj/item/modular_computer/pda/silicon)) to_chat(user, span_warning("A warning flashes across \the [computer]: Device Incompatible.")) return FALSE . = ..() if(.) - var/obj/item/modular_computer/tablet/integrated/tablet = computer + var/obj/item/modular_computer/pda/silicon/tablet = computer if(tablet.device_theme == "syndicate") program_icon_state = "command-syndicate" return TRUE @@ -31,7 +31,7 @@ return data //Implied, since we can't run on non tablets - var/obj/item/modular_computer/tablet/integrated/tablet = computer + var/obj/item/modular_computer/pda/silicon/tablet = computer var/mob/living/silicon/robot/cyborg = tablet.silicon_owner @@ -77,7 +77,7 @@ return data var/mob/living/silicon/robot/cyborg = user //Implied - var/obj/item/modular_computer/tablet/integrated/tablet = computer + var/obj/item/modular_computer/pda/silicon/tablet = computer data["Laws"] = cyborg.laws.get_law_list(TRUE, TRUE, FALSE) data["borgLog"] = tablet.borglog @@ -89,7 +89,7 @@ if(.) return //Implied type, memes - var/obj/item/modular_computer/tablet/integrated/tablet = computer + var/obj/item/modular_computer/pda/silicon/tablet = computer var/mob/living/silicon/robot/cyborg = tablet.silicon_owner switch(action) @@ -148,9 +148,9 @@ * law changes and borg log additions. */ /datum/computer_file/program/robotact/proc/force_full_update() - if(!istype(computer, /obj/item/modular_computer/tablet/integrated)) + if(!istype(computer, /obj/item/modular_computer/pda/silicon)) return - var/obj/item/modular_computer/tablet/integrated/tablet = computer + var/obj/item/modular_computer/pda/silicon/tablet = computer var/datum/tgui/active_ui = SStgui.get_open_ui(tablet.silicon_owner, src) if(active_ui) active_ui.send_full_update() diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 935d7e24364..0bd04e0b358 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -9,8 +9,8 @@ density = TRUE // The actual laptop/tablet - var/obj/item/modular_computer/laptop/fabricated_laptop = null - var/obj/item/modular_computer/tablet/fabricated_tablet = null + var/obj/item/modular_computer/laptop/fabricated_laptop + var/obj/item/modular_computer/pda/fabricated_tablet // Utility vars var/state = 0 // 0: Select device type, 1: Select loadout, 2: Payment, 3: Thankyou screen diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index c8f315a0298..90cd2c51fa3 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -1543,18 +1543,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/tablet - name = "Tablet Frame" - id = "tablet" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000) - build_path = /obj/item/modular_computer/tablet - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_FRAMES - ) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING - /datum/design/slime_scanner name = "Slime Scanner" id = "slime_scanner" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 6d272dd1bc5..b23674773b8 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -111,7 +111,6 @@ "status_display_frame", "sticky_tape", "syrup_bottle", - "tablet", "tape", "tech_disk", "timer", diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index d9f1af33f69..fe08d5c66e2 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -37,7 +37,7 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) ignore += typesof(/turf/baseturf_skipover) ignore += typesof(/turf/baseturf_bottom) //This demands a borg, so we'll let if off easy - ignore += typesof(/obj/item/modular_computer/tablet/integrated) + ignore += typesof(/obj/item/modular_computer/pda/silicon) //This one demands a computer, ditto ignore += typesof(/obj/item/modular_computer/processor) //Very finiky, blacklisting to make things easier diff --git a/code/modules/vending/cartridge.dm b/code/modules/vending/cartridge.dm index 82ddbcbd663..dabf334c1f9 100644 --- a/code/modules/vending/cartridge.dm +++ b/code/modules/vending/cartridge.dm @@ -13,7 +13,7 @@ /obj/item/computer_disk/ordnance = 10, /obj/item/computer_disk/quartermaster = 10, /obj/item/computer_disk/command/captain = 3, - /obj/item/modular_computer/tablet/pda/heads = 10, + /obj/item/modular_computer/pda/heads = 10, ) refill_canister = /obj/item/vending_refill/cart default_price = PAYCHECK_COMMAND diff --git a/code/modules/vending/modularpc.dm b/code/modules/vending/modularpc.dm index 98d371fbabc..415329366c7 100644 --- a/code/modules/vending/modularpc.dm +++ b/code/modules/vending/modularpc.dm @@ -10,7 +10,7 @@ products = list( /obj/item/computer_disk = 8, /obj/item/modular_computer/laptop = 4, - /obj/item/modular_computer/tablet = 4, + /obj/item/modular_computer/pda = 4, ) premium = list( /obj/item/pai_card = 2, diff --git a/icons/obj/modular_pda.dmi b/icons/obj/modular_pda.dmi index 0418f467b51f8bd46a05682001468fbbca588667..8f9230ce7707e5d65dcad36229de85c0f8becbe0 100644 GIT binary patch literal 18131 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