diff --git a/code/_onclick/hud/pai.dm b/code/_onclick/hud/pai.dm index 953b28c720e..c779e81f618 100644 --- a/code/_onclick/hud/pai.dm +++ b/code/_onclick/hud/pai.dm @@ -88,13 +88,14 @@ return var/mob/living/silicon/pai/pAI = usr var/list/modifiers = params2list(params) - if(iscarbon(pAI.card.loc)) + var/mob/living/carbon/holder = get(pAI.card.loc, /mob/living/carbon) + if(holder) if (LAZYACCESS(modifiers, RIGHT_CLICK)) - pAI.hostscan.attack_secondary(pAI.card.loc, pAI) + pAI.hostscan.attack_secondary(holder, pAI) else - pAI.hostscan.attack(pAI.card.loc, pAI) + pAI.hostscan.attack(holder, pAI) else - to_chat(src, span_warning("You are not being carried by anyone!")) + to_chat(usr, span_warning("You are not being carried by anyone!")) return FALSE /atom/movable/screen/pai/crew_manifest diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index fb1e0a86b3f..703405f3331 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -58,13 +58,13 @@ SUBSYSTEM_DEF(pai) candidate.savefile_load(usr) //In case people have saved unsanitized stuff. if(candidate.name) - candidate.name = copytext_char(sanitize(candidate.name),1,MAX_NAME_LEN) + candidate.name = copytext_char(candidate.name,1,MAX_NAME_LEN) if(candidate.description) - candidate.description = copytext_char(sanitize(candidate.description),1,MAX_MESSAGE_LEN) + candidate.description = copytext_char(candidate.description,1,MAX_MESSAGE_LEN) if(candidate.role) - candidate.role = copytext_char(sanitize(candidate.role),1,MAX_MESSAGE_LEN) + candidate.role = copytext_char(candidate.role,1,MAX_MESSAGE_LEN) if(candidate.comments) - candidate.comments = copytext_char(sanitize(candidate.comments),1,MAX_MESSAGE_LEN) + candidate.comments = copytext_char(candidate.comments,1,MAX_MESSAGE_LEN) if("submit") if(candidate) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c452dd61f4f..1b209716d45 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1207,24 +1207,24 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, span_alert("Turn on your receiver in order to send messages.")) return - for (var/obj/item/pda/P in get_viewable_pdas()) - if (P == src) + for (var/obj/item/pda/pda as anything in get_viewable_pdas()) + if (pda == src) continue - else if (P == aiPDA) + else if (pda == aiPDA) continue - plist[avoid_assoc_duplicate_keys(P.owner, namecounts)] = P + plist[avoid_assoc_duplicate_keys(pda.owner, namecounts)] = pda - var/c = input(user, "Please select a PDA") as null|anything in sortList(plist) + var/choice = tgui_input_list(user, "Please select a PDA", "PDA Messenger", sortList(plist)) - if (!c) + if (!choice) return - var/selected = plist[c] + var/selected = plist[choice] if(aicamera.stored.len) - var/add_photo = input(user,"Do you want to attach a photo?","Photo","No") as null|anything in list("Yes","No") - if(add_photo=="Yes") + var/add_photo = tgui_alert(user,"Do you want to attach a photo?", "PDA Messenger", list("Yes","No")) + if(add_photo == "Yes") var/datum/picture/Pic = aicamera.selectpicture(user) aiPDA.picture = Pic diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 157be028163..851b79de446 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -200,3 +200,21 @@ return /obj/item/assembly/signaler/cyborg/screwdriver_act(mob/living/user, obj/item/I) return + +/obj/item/assembly/signaler/internal + name = "internal remote signaling device" + +/obj/item/assembly/signaler/internal/ui_state(mob/user) + return GLOB.inventory_state + +/obj/item/assembly/signaler/internal/attackby(obj/item/W, mob/user, params) + return + +/obj/item/assembly/signaler/internal/screwdriver_act(mob/living/user, obj/item/I) + return + +/obj/item/assembly/signaler/internal/can_interact(mob/user) + if(istype(user, /mob/living/silicon/pai)) + return TRUE + . = ..() + diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 7fcb85d1f13..b0693900fb9 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -59,7 +59,7 @@ var/obj/machinery/door/hackdoor // The airlock being hacked var/hackprogress = 0 // Possible values: 0 - 100, >= 100 means the hack is complete and will be reset upon next check - var/obj/item/integrated_signaler/signaler // AI's signaller + var/obj/item/assembly/signaler/internal/signaler // AI's signaler var/obj/item/instrument/piano_synth/internal_instrument var/obj/machinery/newscaster //pAI Newscaster @@ -136,7 +136,7 @@ forceMove(P) card = P job = "Personal AI" - signaler = new(src) + signaler = new /obj/item/assembly/signaler/internal(src) hostscan = new /obj/item/healthanalyzer(src) newscaster = new /obj/machinery/newscaster(src) if(!aicamera) @@ -316,13 +316,20 @@ /mob/living/silicon/pai/process(delta_time) emitterhealth = clamp((emitterhealth + (emitter_regen_per_second * delta_time)), -50, emittermaxhealth) -/obj/item/paicard/attackby(obj/item/W, mob/user, params) - if(pai && (istype(W, /obj/item/encryptionkey) || W.tool_behaviour == TOOL_SCREWDRIVER)) +/mob/living/silicon/pai/can_interact_with(atom/A) + if(A == signaler) // Bypass for signaler + return TRUE + + return ..() + +/obj/item/paicard/attackby(obj/item/used, mob/user, params) + if(pai && (istype(used, /obj/item/encryptionkey) || used.tool_behaviour == TOOL_SCREWDRIVER)) if(!pai.encryptmod) to_chat(user, span_alert("Encryption Key ports not configured.")) return user.set_machine(src) - pai.radio.attackby(W, user, params) + pai.radio.attackby(used, user, params) + to_chat(user, span_notice("You insert [used] into the [src].")) return return ..() diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 4a2475d2590..4a021c67f85 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -13,7 +13,7 @@ "digital messenger" = 5, "atmosphere sensor" = 5, "photography module" = 5, - "remote signaller" = 10, + "remote signaler" = 10, "medical records" = 10, "security records" = 10, "camera zoom" = 10, @@ -68,10 +68,6 @@ left_part = medicalAnalysis() if("doorjack") left_part = softwareDoor() - if("signaller") - left_part = softwareSignal() - if("loudness") - left_part = softwareLoudness() if("hostscan") left_part = softwareHostScan() @@ -165,23 +161,8 @@ if("camzoom") aicamera.adjust_zoom(usr) - if("signaller") - if(href_list["send"]) - signaler.send_activation() - audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*") - playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) - - if(href_list["freq"]) - var/new_frequency = (signaler.frequency + text2num(href_list["freq"])) - if(new_frequency < MIN_FREE_FREQ || new_frequency > MAX_FREE_FREQ) - new_frequency = sanitize_frequency(new_frequency) - signaler.set_frequency(new_frequency) - - if(href_list["code"]) - signaler.code += text2num(href_list["code"]) - signaler.code = round(signaler.code) - signaler.code = min(100, signaler.code) - signaler.code = max(1, signaler.code) + if("signaler") + signaler.ui_interact(src) if("directive") if(href_list["getdna"]) @@ -281,8 +262,9 @@ if("loudness") - if(subscreen == 1) // Open Instrument - internal_instrument.interact(src) + if(!internal_instrument) + internal_instrument = new(src) + internal_instrument.interact(src) // Open Instrument if("internalgps") if(!internal_gps) @@ -317,8 +299,8 @@ dat += "Medical Records
" if(s == "security records") dat += "Security Records
" - if(s == "remote signaller") - dat += "Remote Signaller
" + if(s == "remote signaler") + dat += "Remote Signaler
" if(s == "loudness booster") dat += "Loudness Booster
" if(s == "internal gps") @@ -414,28 +396,6 @@ // -=-=-=-= Software =-=-=-=-=- // -//Remote Signaller -/mob/living/silicon/pai/proc/softwareSignal() - var/dat = "" - dat += "

Remote Signaller



" - dat += {"Frequency/Code for signaler:
- Frequency: - - - - - [format_frequency(signaler.frequency)] - + - +
- - Code: - - - - - [signaler.code] - + - +
- - Send Signal
"} - return dat - // Crew Manifest /mob/living/silicon/pai/proc/softwareManifest() . += "

Crew Manifest



" @@ -612,12 +572,3 @@ dat += "

" dat += "Messages:
[aiPDA.tnote]" return dat - -// Loudness Booster -/mob/living/silicon/pai/proc/softwareLoudness() - if(!internal_instrument) - internal_instrument = new(src) - var/dat = "

Sound Synthesizer

" - dat += "Open Synthesizer Interface
" - dat += "Choose Instrument Type" - return dat