anchor.diff:  	messages += list(message_data)
   
   	var/mob/living/L = null
  -	if(computer.loc && isliving(computer.loc))
  -		L = computer.loc
  +	if(holder.holder.loc && isliving(holder.holder.loc))
  +		L = holder.holder.loc
   	//Maybe they are a pAI!
   	else
  -		L = get(computer, /mob/living/silicon)
  +		L = get(holder.holder, /mob/living/silicon)
   
   	if(L && (L.stat == CONSCIOUS || L.stat == SOFT_CRIT))
   		var/reply = "(<a href='byond://?src=[REF(src)];choice=[signal.data["rigged"] ? "Mess_us_up" : "Message"];skiprefresh=1;target=[signal.data["ref"]]'>Reply</a>)"
  
positive.code: 	var/list/message_data = list()
  	message_data["name"] = signal.data["name"]
  	message_data["job"] = signal.data["job"]
  	message_data["contents"] = html_decode(signal.data["message"])
  	message_data["outgoing"] = TRUE
  	message_data["ref"] = signal.data["ref"]
  	message_data["photo"] = signal.data["photo"]
  
  	// Show it to ghosts
  	var/ghost_message = span_name("[message_data["name"]] </span><span class='game say'>[rigged ? "Rigged" : ""] PDA Message</span> --> [span_name("[signal.format_target()]")]: <span class='message'>[signal.data["message"]]")
  	for(var/mob/M in GLOB.player_list)
  		if(isobserver(M) && (M.client?.prefs.chat_toggles & CHAT_GHOSTPDA))
  			to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]")
  
negative.code: 	user.log_talk(message, LOG_PDA, tag="[rigged ? "Rigged" : ""] PDA: [initial(message_data["name"])] to [signal.format_target()]")
  	if(rigged)
  		log_bomber(user, "sent a rigged PDA message (Name: [message_data["name"]]. Job: [message_data["job"]]) to [english_list(string_targets)] [!is_special_character(user) ? "(SENT BY NON-ANTAG)" : ""]")
  	to_chat(user, span_info("PDA message sent to [signal.format_target()]: [signal.format_message()]"))
  
  	if (ringer_status)
  		computer.send_sound()
  