From 479dcd295e61796282f57a132361e2873f45fbcd Mon Sep 17 00:00:00 2001 From: Timberpoes Date: Sun, 7 Nov 2021 03:03:51 +0000 Subject: [PATCH] Makes dash actions and Bluespace Prophecy trauma utilise teleport code instead of forced movement code. (#62471) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/datums/brain_damage/special.dm | 14 +++++++++++--- code/datums/dash_weapon.dm | 14 +++++++++++--- code/modules/antagonists/cult/cult_items.dm | 2 +- code/modules/mining/lavaland/megafauna_loot.dm | 8 ++++---- code/modules/ninja/energy_katana.dm | 2 +- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index bc53d575b8a..267bad5c265 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -126,10 +126,18 @@ "slides out of a fold in spacetime") to_chat(user, span_notice("You try to align with the bluespace stream...")) if(do_after(user, 20, target = src)) - new /obj/effect/temp_visual/bluespace_fissure(get_turf(src)) - new /obj/effect/temp_visual/bluespace_fissure(get_turf(linked_to)) - user.forceMove(get_turf(linked_to)) + var/turf/source_turf = get_turf(src) + var/turf/destination_turf = get_turf(linked_to) + + new /obj/effect/temp_visual/bluespace_fissure(source_turf) + new /obj/effect/temp_visual/bluespace_fissure(destination_turf) + user.visible_message(span_warning("[user] [slip_in_message]."), null, null, null, user) + + if(!do_teleport(user, destination_turf, no_effects = TRUE)) + user.visible_message(span_warning("[user] [slip_out_message], ending up exactly where they left."), null, null, null, user) + return + user.visible_message(span_warning("[user] [slip_out_message]."), span_notice("...and find your way to the other side.")) /datum/brain_trauma/special/quantum_alignment diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm index f601de1def3..d4251b414c9 100644 --- a/code/datums/dash_weapon.dm +++ b/code/datums/dash_weapon.dm @@ -30,19 +30,27 @@ /datum/action/innate/dash/Activate() dashing_item.attack_self(owner) //Used to toggle dash behavior in the dashing item -/datum/action/innate/dash/proc/Teleport(mob/user, atom/target) +/// Teleports user to target using do_teleport. Returns TRUE if teleport successful, FALSE otherwise. +/datum/action/innate/dash/proc/teleport(mob/user, atom/target) if(!IsAvailable()) - return + return FALSE + var/turf/target_turf = get_turf(target) if(target in view(user.client.view, user)) + if(!do_teleport(user, target_turf, no_effects = TRUE)) + user.balloon_alert(user, "dash blocked by location!") + return FALSE + var/obj/spot1 = new phaseout(get_turf(user), user.dir) - user.forceMove(target_turf) playsound(target_turf, dash_sound, 25, TRUE) var/obj/spot2 = new phasein(get_turf(user), user.dir) spot1.Beam(spot2,beam_effect,time=2 SECONDS) current_charges-- owner.update_action_buttons_icon() addtimer(CALLBACK(src, .proc/charge), charge_rate) + return TRUE + + return FALSE /datum/action/innate/dash/proc/charge() current_charges = clamp(current_charges + 1, 0, max_charges) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 36c1c4575ce..a634df846b4 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -210,7 +210,7 @@ /obj/item/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) . = ..() if(dash_toggled && !proximity) - jaunt.Teleport(user, target) + jaunt.teleport(user, target) return if(!proximity) return diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 46115962f7f..8034abe8ca6 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -16,14 +16,14 @@ // It's a simple purple beam, works well enough for the purple hiero effects. beam_effect = "plasmabeam" -/datum/action/innate/dash/hierophant/Teleport(mob/user, atom/target) +/datum/action/innate/dash/hierophant/teleport(mob/user, atom/target) var/dist = get_dist(user, target) if(dist > HIEROPHANT_BLINK_RANGE) - to_chat(user, span_hierophant_warning("Blink destination out of range.")) + user.balloon_alert(user, "destination out of range!") return var/turf/target_turf = get_turf(target) if(target_turf.is_blocked_turf_ignore_climbable()) - to_chat(user, span_hierophant_warning("Blink destination blocked.")) + user.balloon_alert(user, "destination blocked!") return . = ..() if(!current_charges) @@ -117,7 +117,7 @@ if((target == beacon) && target.Adjacent(src)) return if(blink_activated) - blink.Teleport(user, target) + blink.teleport(user, target) /obj/item/hierophant_club/update_icon_state() icon_state = inhand_icon_state = "hierophant_club[blink_charged ? "_ready":""][(!QDELETED(beacon)) ? "":"_beacon"]" diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index e7012cf9e3d..1f5b5d770e6 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -45,7 +45,7 @@ var/list/modifiers = params2list(click_parameters) if(LAZYACCESS(modifiers, RIGHT_CLICK) && !target.density) - jaunt.Teleport(user, target) + jaunt.teleport(user, target) /obj/item/energy_katana/pickup(mob/living/user) . = ..()