Files

100 lines
3.6 KiB
Plaintext

/mob/dead/observer/proc/on_click_ctrl_shift(mob/user)
if(isobserver(user) && check_rights(R_SPAWN))
change_mob_type( /mob/living/carbon/human , null, null, TRUE) //always delmob, ghosts shouldn't be left lingering
/mob/dead/observer/proc/on_click_ctrl(mob/user)
quickicspawn(user)
/mob/dead/observer/proc/quickicspawn(mob/user)
if(isobserver(user) && check_rights(R_SPAWN))
var/list/outfits = list()
outfits["Bluespace Tech"] = /datum/outfit/debug/bst
outfits["Bluespace Tech (Hardsuit)"] = /datum/outfit/debug/bsthardsuit
outfits["Show All"] = "Show All"
var/dresscode
var/teleport_option = tgui_alert(user, "How would you like to be spawned in?","IC Quick Spawn",list("Bluespace","Pod", "Cancel"))
if (teleport_option == "Cancel")
return
var/character_option = tgui_alert(user, "Which character?","IC Quick Spawn",list("Selected Character","Randomly Created", "Cancel"))
if (character_option == "Cancel")
return
var/initial_outfits = input("Select outfit", "Quick Dress") as null|anything in outfits
if (!initial_outfits || initial_outfits == "" || initial_outfits == "Cancel")
return
if (initial_outfits == "Show All")
dresscode = client.robust_dress_shop()
if (!dresscode)
return
else
dresscode = outfits[initial_outfits]
var/grant_spell = tgui_alert(user, "Do you want to give them the power to return? Not recommended for non-admins.","Give power?",list("Yes","No", "Cancel"))
if(grant_spell == "Cancel")
return
var/turf/current_turf = get_turf(src)
var/mob/living/carbon/human/spawned_player = new(src)
if (character_option == "Selected Character")
spawned_player.name = src.name
spawned_player.real_name = src.real_name
var/mob/living/carbon/human/H = spawned_player
client?.prefs.copy_to(H)
H.dna.update_dna_identity()
QDEL_IN(src, 1)
if (teleport_option == "Bluespace")
playsound(spawned_player, 'sound/magic/Disable_Tech.ogg', 100, 1)
if(mind && isliving(spawned_player))
mind.transfer_to(spawned_player, 1) // second argument to force key move to new mob
else
transfer_ckey(spawned_player)
if(grant_spell != "No")
spawned_player.mind.AddSpell(new /obj/effect/proc_holder/spell/self/return_back, FALSE)
if(dresscode != "Naked")
spawned_player.equipOutfit(dresscode)
switch(teleport_option)
if("Bluespace")
spawned_player.forceMove(current_turf)
var/datum/effect_system/spark_spread/quantum/sparks = new
sparks.set_up(10, 1, spawned_player)
sparks.attach(get_turf(spawned_player))
sparks.start()
if("Pod")
var/obj/structure/closet/supplypod/empty_pod = new()
empty_pod.style = STYLE_BLUESPACE
empty_pod.bluespace = TRUE
empty_pod.explosionSize = list(0,0,0,0)
empty_pod.desc = "A sleek, and slightly worn bluespace pod - its probably seen many deliveries..."
spawned_player.forceMove(empty_pod)
new /obj/effect/pod_landingzone(current_turf, empty_pod)
//This is more of a hacky fix for performance due to rune-chat
/mob/dead/observer/proc/HearNoPopup(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source)
SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, args) //parent calls can't overwrite the current proc args.
var/atom/movable/to_follow = speaker
if(radio_freq)
var/atom/movable/virtualspeaker/V = speaker
if(isAI(V.source))
var/mob/living/silicon/ai/S = V.source
to_follow = S.eyeobj
else
to_follow = V.source
var/link = FOLLOW_LINK(src, to_follow)
// Recompose the message, because it's scrambled by default
message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode, FALSE, source)
to_chat(src, "[link] [message]")