Addresses various things re pda refactor

This commit is contained in:
Tastyfish
2016-02-12 16:42:27 -05:00
parent a8f9ea2086
commit d3ddd683f7
9 changed files with 80 additions and 67 deletions
+14 -6
View File
@@ -121,7 +121,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(cartridge)
prog_list |= cartridge.programs
for(var/datum/data/pda/P in prog_list)
for(var/A in prog_list)
var/datum/data/pda/P = A
if(P.hidden)
continue
var/list/cat
@@ -196,7 +198,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
shortcut_cache.Cut()
/obj/item/device/pda/proc/update_programs()
for(var/datum/data/pda/P in programs)
for(var/A in programs)
var/datum/data/pda/P = A
P.pda = src
/obj/item/device/pda/Topic(href, href_list)
@@ -421,10 +424,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/Destroy()
PDAs -= src
if (src.id)
src.id.loc = get_turf(src.loc)
if(src.pai)
src.pai.loc = get_turf(src.loc)
var/T = get_turf(loc)
if (id)
id.loc = T
if(pai)
pai.loc = T
for(var/A in programs)
qdel(A)
if(cartridge)
cartridge.loc = T
return ..()
// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
+4 -4
View File
@@ -18,7 +18,7 @@
set name = "Send PDA Message"
set src in usr
if(usr.stat == 2)
if(usr.stat == DEAD)
usr << "You can't send PDA messages because you are dead!"
return
var/datum/data/pda/app/messenger/M = find_program(/datum/data/pda/app/messenger)
@@ -37,7 +37,7 @@
set name = "Show Message Log"
set src in usr
if(usr.stat == 2)
if(usr.stat == DEAD)
usr << "You can't do that because you are dead!"
return
var/datum/data/pda/app/messenger/M = find_program(/datum/data/pda/app/messenger)
@@ -57,7 +57,7 @@
set name = "Toggle Sender/Receiver"
set src in usr
if(usr.stat == 2)
if(usr.stat == DEAD)
usr << "You can't do that because you are dead!"
return
var/datum/data/pda/app/messenger/M = find_program(/datum/data/pda/app/messenger)
@@ -70,7 +70,7 @@
set name = "Toggle Ringer"
set src in usr
if(usr.stat == 2)
if(usr.stat == DEAD)
usr << "You can't do that because you are dead!"
return
var/datum/data/pda/app/messenger/M = find_program(/datum/data/pda/app/messenger)
+13 -6
View File
@@ -17,11 +17,22 @@
/obj/item/weapon/cartridge/New()
if(ticker && ticker.current_state >= GAME_STATE_SETTING_UP)
initialize()
/obj/item/weapon/cartridge/Destroy()
if(radio)
qdel(radio)
for(var/A in programs)
qdel(A)
for(var/A in messenger_plugins)
qdel(A)
return ..()
/obj/item/weapon/cartridge/proc/update_programs(obj/item/device/pda/pda)
for(var/datum/data/pda/P in programs)
for(var/A in programs)
var/datum/data/pda/P = A
P.pda = pda
for(var/datum/data/pda/messenger_plugin/P in messenger_plugins)
for(var/A in messenger_plugins)
var/datum/data/pda/messenger_plugin/P = A
P.pda = pda
/obj/item/weapon/cartridge/engineering
@@ -117,10 +128,6 @@
radio = new /obj/item/radio/integrated/signal(src)
..()
/obj/item/weapon/cartridge/signal/Destroy()
qdel(radio)
return ..()
/obj/item/weapon/cartridge/signal/toxins
name = "Signal Ace 2"
desc = "Complete with integrated radio signaler!"
@@ -128,7 +128,8 @@
records["general"] = general_records.fields
return records
else
for(var/datum/data/record/R in sortRecord(data_core.general))
for(var/A in sortRecord(data_core.general))
var/datum/data/record/R = A
records += list(list(Name = R.fields["name"], "ref" = "\ref[R]"))
data["recordsList"] = records
return null
@@ -167,7 +168,8 @@
/datum/data/pda/app/crew_records/medical/load_records(datum/data/record/R)
..(R)
for (var/datum/data/record/E in data_core.medical)
for(var/A in data_core.medical)
var/datum/data/record/E = A
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
medical_records = E
break
@@ -192,7 +194,8 @@
/datum/data/pda/app/crew_records/security/load_records(datum/data/record/R)
..(R)
for (var/datum/data/record/E in data_core.security)
for(var/A in data_core.security)
var/datum/data/record/E = A
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
security_records = E
break
@@ -32,7 +32,8 @@
var/convopdas[0]
var/pdas[0]
var/count = 0
for (var/obj/item/device/pda/P in PDAs)
for(var/A in PDAs)
var/obj/item/device/pda/P = A
var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger)
if (!P.owner || PM.toff || P == pda || PM.m_hidden)
@@ -60,7 +61,8 @@
var/list/plugins = list()
if(pda.cartridge)
for(var/datum/data/pda/messenger_plugin/P in pda.cartridge.messenger_plugins)
for(var/A in pda.cartridge.messenger_plugins)
var/datum/data/pda/messenger_plugin/P = A
plugins += list(list(name = P.name, icon = P.icon, ref = "\ref[P]"))
data["plugins"] = plugins
@@ -172,7 +174,8 @@
//var/telecomms_intact = telecomms_process(P.owner, owner, t)
var/obj/machinery/message_server/useMS = null
if(message_servers)
for (var/obj/machinery/message_server/MS in message_servers)
for(var/A in message_servers)
var/obj/machinery/message_server/MS = A
//PDAs are now dependent on the Message Server.
if(MS.active)
useMS = MS
@@ -198,28 +201,12 @@
useMS.send_pda_message("[P.owner]","[pda.owner]","[t]")
tnote.Add(list(list("sent" = 1, "owner" = "[P.owner]", "job" = "[P.ownjob]", "message" = "[t]", "target" = "\ref[P]")))
PM.tnote.Add(list(list("sent" = 0, "owner" = "[pda.owner]", "job" = "[pda.ownjob]", "message" = "[t]", "target" = "\ref[pda]")))
/* for(var/mob/M in player_list)
if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) // src.client is so that ghosts don't have to listen to mice
if(istype(M, /mob/new_player))
continue
M.show_message("<span class='game say'>PDA Message - <span class='name'>[owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>") */
pda.investigate_log("<span class='game say'>PDA Message - <span class='name'>[U.key] - [pda.owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>", "pda")
if(!conversations.Find("\ref[P]"))
conversations.Add("\ref[P]")
if(!PM.conversations.Find("\ref[pda]"))
PM.conversations.Add("\ref[pda]")
/*
if (prob(15)) //Give the AI a chance of intercepting the message
var/who = src.owner
if(prob(50))
who = P.owner
for(var/mob/living/silicon/ai/ai in mob_list)
// Allows other AIs to intercept the message but the AI won't intercept their own message.
if(ai.aiPDA != P && ai.aiPDA != src)
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
*/
PM.play_ringtone()
//Search for holder of the PDA.
var/mob/living/L = null
@@ -249,7 +236,7 @@
else
S = 'sound/machines/twobeep.ogg'
playsound(pda.loc, S, 50, 1)
for (var/mob/O in hearers(3, pda.loc))
for(var/mob/O in hearers(3, pda.loc))
if(!silent)
O.show_message(text("\icon[pda] *[pda.ttone]*"))
@@ -262,7 +249,8 @@
usr << "Turn on your receiver in order to send messages."
return
for (var/obj/item/device/pda/P in PDAs)
for(var/A in PDAs)
var/obj/item/device/pda/P = A
var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger)
if(!P.owner || !PM || PM.hidden || P == pda || PM.toff)
+1 -1
View File
@@ -177,7 +177,7 @@
icon = 'icons/obj/pda.dmi'
icon_state = "pdabox"
New()
/obj/item/weapon/storage/box/PDAs/New()
..()
new /obj/item/device/pda(src)
new /obj/item/device/pda(src)
@@ -29,7 +29,7 @@
var/remote_door_id = ""
/datum/data/pda/utility/toggle_door/start()
for(var/obj/machinery/door/poddoor/M in world)
for(var/obj/machinery/door/poddoor/M in airlocks)
if(M.id_tag == remote_door_id)
if(M.density)
M.open()
@@ -41,8 +41,7 @@
icon = "heart-o"
/datum/data/pda/utility/scanmode/medical/scan_mob(mob/living/C as mob, mob/living/user as mob)
for (var/mob/O in viewers(C, null))
O.show_message("<span class=warning>[user] has analyzed [C]'s vitals!</span>", 1)
C.visible_message("<span class=warning>[user] has analyzed [C]'s vitals!</span>")
user.show_message("<span class=notice>Analyzing Results for [C]:</span>")
user.show_message("<span class=notice>\t Overall Status: [C.stat > 1 ? "dead" : "[C.health - C.halloss]% healthy"]</span>", 1)
@@ -66,27 +65,34 @@
icon = "link"
/datum/data/pda/utility/scanmode/dna/scan_mob(mob/living/C as mob, mob/living/user as mob)
if (!istype(C:dna, /datum/dna))
user << "<span class=notice>No fingerprints found on [C]</span>"
if(istype(C, /mob/living/carbon/human))
var/mob/living/carbon/human/H = C
if (!istype(H.dna, /datum/dna))
user << "<span class=notice>No fingerprints found on [H]</span>"
else
user << "<span class=notice>[H]'s Fingerprints: [md5(H.dna.uni_identity)]</span>"
scan_blood(C, user)
/datum/data/pda/utility/scanmode/dna/scan_atom(atom/A as mob|obj|turf|area, mob/user as mob)
scan_blood(A, user)
/datum/data/pda/utility/scanmode/dna/proc/scan_blood(atom/A, mob/user)
if (!A.blood_DNA)
user << "<span class=notice>No blood found on [A]</span>"
if(A.blood_DNA)
qdel(A.blood_DNA)
else
user << "<span class=notice>[C]'s Fingerprints: [md5(C:dna.uni_identity)]</span>"
if (!C:blood_DNA)
user << "<span class=notice>No blood found on [C]</span>"
if(C:blood_DNA)
qdel(C:blood_DNA)
else
user << "<span class=notice>Blood found on [C]. Analysing...</span>"
user << "<span class=notice>Blood found on [A]. Analysing...</span>"
spawn(15)
for(var/blood in C:blood_DNA)
user << "<span class=notice>Blood type: [C:blood_DNA[blood]]\nDNA: [blood]</span>"
for(var/blood in A.blood_DNA)
user << "<span class=notice>Blood type: [A.blood_DNA[blood]]\nDNA: [blood]</span>"
/datum/data/pda/utility/scanmode/halogen
base_name = "Halogen Counter"
icon = "exclamation-circle"
/datum/data/pda/utility/scanmode/halogen/scan_mob(mob/living/C as mob, mob/living/user as mob)
for (var/mob/O in viewers(C, null))
O.show_message("<span class=warning>[user] has analyzed [C]'s radiation levels!</span>", 1)
C.visible_message("<span class=warning>[user] has analyzed [C]'s radiation levels!</span>")
user.show_message("<span class=notice>Analyzing Results for [C]:</span>")
if(C.radiation)
@@ -103,7 +109,7 @@
if(A.reagents.reagent_list.len > 0)
var/reagents_length = A.reagents.reagent_list.len
user << "<span class='notice'>[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.</span>"
for (var/re in A.reagents.reagent_list)
for(var/re in A.reagents.reagent_list)
user << "<span class='notice'>\t [re]</span>"
else
user << "<span class='notice'>No active chemical agents found in [A].</span>"
@@ -138,7 +144,7 @@
else if (istype(A, /obj/machinery/atmospherics/unary/tank))
var/obj/machinery/atmospherics/unary/tank/T = A
pda.atmosanalyzer_scan(T.air_contents, user, T)
/datum/data/pda/utility/scanmode/notes
base_name = "Note Scanner"
icon = "clipboard"
@@ -151,7 +157,7 @@
/datum/data/pda/utility/scanmode/notes/scan_atom(atom/A as mob|obj|turf|area, mob/user as mob)
if(notes && istype(A, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = A
// JMO 20140705: Makes scanned document show up properly in the notes. Not pretty for formatted documents,
// as this will clobber the HTML, but at least it lets you scan a document. You can restore the original
// notes by editing the note again. (Was going to allow you to edit, but scanned documents are too long.)