Modular PDAs: The End of an Era (#10319)

PDAs are dead, long live PDAs. All trace of old PDAs has been scoured from the codebase, and in its place are modular computer PDAs that are feature-equivalent. Essentially every PDA function except the Syndicate detonation feature and Notepad has been ported over, and battery life for handheld computers has been boosted alongside the addition of charging cables to make things easier.
This commit is contained in:
JohnWildkins
2020-11-01 21:09:50 +02:00
committed by GitHub
parent a5d891763c
commit 616776f886
167 changed files with 2017 additions and 3332 deletions
+19
View File
@@ -174,6 +174,25 @@
var/obj/effect/ebeam/B = beam
B.color = set_color
/datum/beam/power
var/obj/item/computer_hardware/tesla_link/charging_cable/owner
/datum/beam/power/End()
owner.beam = null
owner.untether(FALSE)
return ..()
/datum/beam/power/get_x_translation_vector()
return (world.icon_size * target_oldloc.x) - (world.icon_size * origin_oldloc.x)
/datum/beam/power/get_y_translation_vector()
return (world.icon_size * target_oldloc.y) - (world.icon_size * origin_oldloc.y)
/datum/beam/power/afterDraw()
for(var/beam in elements)
var/obj/effect/ebeam/B = beam
B.color = COLOR_GRAY40
/obj/effect/ebeam
mouse_opacity = 0
anchored = 1
+1 -6
View File
@@ -467,13 +467,8 @@
var/is_currently_brigged = 0
if(A?.is_prison())
is_currently_brigged = 1
for(var/obj/item/card/id/card in current)
if(current.GetIdCard())
is_currently_brigged = 0
break // if they still have ID they're not brigged
for(var/obj/item/device/pda/P in current)
if(P.id)
is_currently_brigged = 0
break // if they still have ID they're not brigged
if(!is_currently_brigged)
brigged_since = -1
+1 -1
View File
@@ -32,7 +32,7 @@
l_pocket = /obj/item/melee/energy/sword
r_pocket = /obj/item/cloaking_device
id = /obj/item/card/id/syndicate
pda = /obj/item/device/pda/heads
pda = /obj/item/modular_computer/handheld/pda/command
/datum/outfit/admin/killer/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
var/obj/item/storage/secure/briefcase/sec_briefcase = new(H)
@@ -118,7 +118,7 @@
l_pocket = /obj/item/reagent_containers/spray/pepper
r_pocket = /obj/item/device/taperecorder/cciaa
l_hand = /obj/item/storage/lockbox/cciaa
pda = /obj/item/device/pda/central
pda = /obj/item/modular_computer/handheld/pda/command/cciaa
id_access = "CCIA Agent"
@@ -304,7 +304,7 @@
name = "NTCC Odin Sanitation Specialist"
uniform = /obj/item/clothing/under/rank/janitor
pda = /obj/item/device/pda/janitor
pda = /obj/item/modular_computer/handheld/pda/civilian
shoes = /obj/item/clothing/shoes/galoshes
l_ear = /obj/item/device/radio/headset/headset_service
l_pocket = /obj/item/grenade/chem_grenade/cleaner
+39 -18
View File
@@ -35,6 +35,11 @@
var/dufflebag = /obj/item/storage/backpack/duffel
var/messengerbag = /obj/item/storage/backpack/messenger
var/allow_pda_choice = FALSE
var/tab_pda = /obj/item/modular_computer/handheld/pda/civilian
var/tablet = /obj/item/modular_computer/handheld/preset/civilian
var/wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/civilian
var/internals_slot = null //ID of slot containing a gas tank
var/list/backpack_contents = list() //In the list(path=count,otherpath=count) format
var/list/accessory_contents = list()
@@ -45,7 +50,7 @@
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//to be overriden for customization depending on client prefs,species etc
if(allow_backbag_choice)
var/use_job_specific = H.backbag_style == 1
var/use_job_specific = H.backbag_style == TRUE
switch(H.backbag)
if (1)
back = null
@@ -165,22 +170,40 @@
if(r_hand)
H.put_in_r_hand(new r_hand(H))
if(pda && !visualsOnly) //Dont equip and imprint the PDA in visuals only (preview) to avoid duplicates
if(allow_pda_choice)
switch(H.pda_choice)
if (1)
pda = null
if (7)
pda = tablet
if (8)
pda = wristbound
else
pda = tab_pda
if(pda && !visualsOnly)
var/obj/item/I = new pda(H)
imprint_pda(H,I)
switch(H.pda_choice)
if(3)
I.icon = 'icons/obj/pda_old.dmi'
if(4)
I.icon = 'icons/obj/pda_rugged.dmi'
if(5)
I.icon = 'icons/obj/pda_slate.dmi'
if(6)
I.icon = 'icons/obj/pda_smart.dmi'
I.update_icon()
H.equip_or_collect(I, slot_wear_id)
if(id)
var/obj/item/device/pda/P = H.wear_id
var/obj/item/modular_computer/P = H.wear_id
var/obj/item/I = new id(H)
imprint_idcard(H,I)
if(istype(P))
I.forceMove(P)
P.id = I
if(istype(P) && P.card_slot)
addtimer(CALLBACK(src, .proc/register_pda, P, I), 1 SECOND)
else
H.equip_or_collect(I, slot_wear_id)
if(!visualsOnly) // Items in pockets or backpack don't show up on mob's icon.
if(l_pocket)
equip_item(H, l_pocket, slot_l_store)
@@ -272,16 +295,14 @@
if(H.mind && H.mind.initial_account)
C.associated_account_number = H.mind.initial_account.account_number
/datum/outfit/proc/imprint_pda(mob/living/carbon/human/H, obj/item/device/pda/PDA)
var/obj/item/card/id/C = PDA.id
PDA.owner = H.real_name
if(istype(PDA) && istype(C))
PDA.ownjob = C.assignment
PDA.ownrank = C.rank
else //As a fallback if the id isnt inside of the PDA
PDA.ownjob = get_id_assignment(H)
PDA.ownrank = get_id_rank(H)
PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
/datum/outfit/proc/register_pda(obj/item/modular_computer/P, obj/item/card/id/I)
if(!P.card_slot)
return
P.card_slot.insert_id(I)
if(P.card_slot.stored_card && !P.hidden)
P.set_autorun("ntnrc_client")
P.enable_computer(null, TRUE) // passing null because we don't want the UI to open
P.minimize_program()
/datum/outfit/proc/get_id_access(mob/living/carbon/human/H)
return list()
+1 -1
View File
@@ -81,7 +81,7 @@
name = "Random Visitor"
id = /obj/item/card/id
pda = /obj/item/device/pda
pda = /obj/item/modular_computer/handheld/pda/civilian
/datum/outfit/admin/random/visitor/get_id_assignment()
return "Visitor"
+1
View File
@@ -151,6 +151,7 @@
belt = /obj/item/storage/belt/military
gloves = /obj/item/clothing/gloves/swat
shoes = /obj/item/clothing/shoes/jackboots
pda = /obj/item/modular_computer/handheld/pda/syndicate
backpack_contents = list(
/obj/item/storage/box/engineer = 1,
-1
View File
@@ -32,7 +32,6 @@ They sell generic supplies and ask for generic supplies.
/obj/item/device/assembly_holder = TRADER_BLACKLIST_ALL,
/obj/item/device/encryptionkey = TRADER_BLACKLIST_SUB, //Why should ai want NT encryption keys?
/obj/item/device/radio = TRADER_BLACKLIST_ALL,
/obj/item/device/pda = TRADER_BLACKLIST_SUB,
/obj/item/device/chameleon = TRADER_BLACKLIST, // Why should it want a chameleon projector
/obj/item/device/dociler = TRADER_BLACKLIST, //Item unobtaineable
/obj/item/device/flashlight/drone = TRADER_BLACKLIST, // No drone stuff
+1 -2
View File
@@ -88,8 +88,7 @@
/obj/item/clothing/mask/gas/sexyclown = TRADER_THIS_TYPE,
/obj/item/clothing/shoes/clown_shoes = TRADER_THIS_TYPE,
/obj/item/clothing/under/rank/clown = TRADER_THIS_TYPE,
/obj/item/device/pda/clown = TRADER_THIS_TYPE,
/obj/item/cartridge/clown = TRADER_THIS_TYPE,
/obj/item/modular_computer/handheld/pda/civilian/clown = TRADER_THIS_TYPE,
/obj/item/stamp/clown = TRADER_THIS_TYPE,
/obj/item/storage/backpack/clown = TRADER_THIS_TYPE,
/obj/item/bananapeel = TRADER_THIS_TYPE,
@@ -19,11 +19,6 @@
item_cost = 2
path = /obj/item/storage/box/syndie_kit/toxin
/datum/uplink_item/item/stealthy_weapons/detomatix
name = "Detomatix PDA Cartridge"
item_cost = 4
path = /obj/item/cartridge/syndicate
/datum/uplink_item/item/stealthy_weapons/pens
name = "Pen-jector Kit"
desc = "A kit that contains four differently coloured pens. A blue pacifying pen, a green pen containing healing chemicals, and a yellow hyperzine pen."