From 1f4cad192c195581e7a46fbbcf5c44828afd1588 Mon Sep 17 00:00:00 2001 From: Enric Gabriel <43283559+SandPoot@users.noreply.github.com> Date: Sat, 4 Jul 2020 14:15:04 -0300 Subject: [PATCH] ic quick spawn revamped (#19) --- code/datums/helper_datums/teleport.dm | 8 ++- code/modules/admin/verbs/debug.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 8 +++ icons/mob/actions/actions_spells.dmi | Bin 26698 -> 27017 bytes .../modules/mob/dead/observer/observer.dm | 53 ++++++++++++++++++ sandcode/code/modules/spells/spell.dm | 31 ++++++++++ tgstation.dme | 2 + 7 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 sandcode/code/modules/mob/dead/observer/observer.dm create mode 100644 sandcode/code/modules/spells/spell.dm diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index c46a03a986..d4f530b219 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -8,7 +8,9 @@ // no_effects: disable the default effectin/effectout of sparks // forceMove: if false, teleport will use Move() proc (dense objects will prevent teleportation) // forced: whether or not to ignore no_teleport -/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, forceMove = TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE, channel=TELEPORT_CHANNEL_BLUESPACE, forced = FALSE) + +// Skyrat Change +/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, forceMove = TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE, channel=TELEPORT_CHANNEL_BLUESPACE, forced = FALSE, effects_multiplier = 1) // teleporting most effects just deletes them var/static/list/delete_atoms = typecacheof(list( /obj/effect, @@ -42,7 +44,7 @@ // if effects are not specified and not explicitly disabled, sparks if ((!effectin || !effectout) && !no_effects) var/datum/effect_system/spark_spread/sparks = new - sparks.set_up(5, 1, teleatom) + sparks.set_up(5 * effects_multiplier, 1, teleatom) // Skyrat change if (!effectin) effectin = sparks if (!effectout) @@ -51,7 +53,7 @@ // if effects are not specified and not explicitly disabled, rainbow sparks if ((!effectin || !effectout) && !no_effects) var/datum/effect_system/spark_spread/quantum/sparks = new - sparks.set_up(5, 1, teleatom) + sparks.set_up(5 * effects_multiplier, 1, teleatom) // Skyrat change if (!effectin) effectin = sparks if (!effectout) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 8406248164..862ceeeffc 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -502,7 +502,7 @@ dresscode = outfits[dresscode] if(dresscode == "Cancel") - return + return FALSE // Skyrat change if (dresscode == "As Job...") var/list/job_paths = subtypesof(/datum/outfit/job) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 397af1b9d0..7a1c1c8682 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -136,6 +136,11 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) show_data_huds() data_huds_on = 1 + // Skyrat change START + RegisterSignal(src, COMSIG_CLICK_CTRL_SHIFT, .proc/on_click_ctrl_shift) + RegisterSignal(src, COMSIG_CLICK_CTRL, .proc/on_click_ctrl) + // Skyrat change END + /mob/dead/observer/get_photo_description(obj/item/camera/camera) if(!invisibility || camera.see_ghosts) return "You can also see a g-g-g-g-ghooooost!" @@ -903,9 +908,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(usr, "Can't become a pAI candidate while not dead!") +// Skyrat change - moved to modular/signals. +/* /mob/dead/observer/CtrlShiftClick(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/examine(mob/user) . = ..() diff --git a/icons/mob/actions/actions_spells.dmi b/icons/mob/actions/actions_spells.dmi index 72e72ad6f3490936431115acb4c44756c2fd5663..401697c0d4fd47fa9935fa27d3c92a3540d916d6 100644 GIT binary patch delta 5505 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 D(zV5* delta 5183 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 diff --git a/sandcode/code/modules/mob/dead/observer/observer.dm b/sandcode/code/modules/mob/dead/observer/observer.dm new file mode 100644 index 0000000000..38a1f8f5e6 --- /dev/null +++ b/sandcode/code/modules/mob/dead/observer/observer.dm @@ -0,0 +1,53 @@ +/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/teleport_option = alert(src, "How would you like to be spawned in?","IC Quick Spawn","Bluespace","Droppod", "Cancel") + if (teleport_option == "Cancel") + return + var/dresscode = client.robust_dress_shop() + if (!dresscode) + return + var/grant_spell = alert(src, "Do you want to get the 'Return' spell?","IC Quick Spawn","Yes","No") + + var/turf/current_turf = get_turf(src) + var/mob/living/carbon/human/spawned_player = new(src) + + 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) + + 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("Droppod") + 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/abstract/DPtarget(current_turf, empty_pod) diff --git a/sandcode/code/modules/spells/spell.dm b/sandcode/code/modules/spells/spell.dm new file mode 100644 index 0000000000..e7ccc6bf83 --- /dev/null +++ b/sandcode/code/modules/spells/spell.dm @@ -0,0 +1,31 @@ +/obj/effect/proc_holder/spell/self/return_back // Admin only spell, teleports and deletes the body, ghosting the user. + name = "Return" + desc = "Activates your return beacon." + mobs_whitelist = list(/mob/living/carbon/human) + clothes_req = NONE + charge_max = 1 + cooldown_min = 1 + + invocation = "Return on!" // pls someone get reference <3 + invocation_type = "whisper" + school = "evocation" + action_icon_state = "exitstate" + +/obj/effect/proc_holder/spell/self/return_back/cast(mob/living/carbon/human/user) + user.mind.RemoveSpell(src) + + playsound(get_turf(user.loc), 'sound/magic/Repulse.ogg', 100, 1) + + var/mob/dead/observer/ghost = user.ghostize(1, voluntary = TRUE) + + var/datum/effect_system/spark_spread/quantum/sparks = new + sparks.set_up(10, 1, user) + sparks.attach(user.loc) + sparks.start() + + qdel(user) + + // Get them back to their regular name. + ghost.set_ghost_appearance() + if(ghost.client && ghost.client.prefs) + ghost.deadchat_name = ghost.client.prefs.real_name diff --git a/tgstation.dme b/tgstation.dme index 1510c484f9..199dc96003 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3518,6 +3518,7 @@ #include "sandcode\code\modules\language\language.dm" #include "sandcode\code\modules\misc\misc.dm" #include "sandcode\code\modules\mob\emote.dm" +#include "sandcode\code\modules\mob\dead\observer\observer.dm" #include "sandcode\code\modules\mob\living\give.dm" #include "sandcode\code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm" #include "sandcode\code\modules\mob\living\simple_animal\hostile\megafauna\sand.dm" @@ -3536,6 +3537,7 @@ #include "sandcode\code\modules\research\techweb\all_nodes.dm" #include "sandcode\code\modules\research\techweb\bluespace_nodes.dm" #include "sandcode\code\modules\shuttle\spaceship_navigation_beacon.dm" +#include "sandcode\code\modules\spells\spell.dm" #include "sandcode\code\modules\spells\spell_types\shapeshift.dm" #include "sandcode\code\modules\surgery\organs\augments_arms.dm" #include "sandcode\code\modules\telescience\telepad.dm"