From a10149753904ab47772e0815af8b9aa92f58accf Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 6 Jul 2017 20:12:38 -0500 Subject: [PATCH] Warp cubes are slightly less instant but way cooler --- .../temporary_visuals/miscellaneous.dm | 28 +++++++++++ .../mining/lavaland/necropolis_chests.dm | 46 ++++++++++++++++--- 2 files changed, 67 insertions(+), 7 deletions(-) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 1e671bbe51..dc293bf4a4 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -380,3 +380,31 @@ icon_state = "bleed10" duration = 12 shrink = FALSE + +/obj/effect/temp_visual/warp_cube + duration = 5 + var/outgoing = TRUE + +/obj/effect/temp_visual/warp_cube/Initialize(mapload, atom/teleporting_atom, warp_color, new_outgoing) + . = ..() + if(teleporting_atom) + outgoing = new_outgoing + appearance = teleporting_atom.appearance + setDir(teleporting_atom.dir) + if(warp_color) + color = list(warp_color, warp_color, warp_color, list(0,0,0)) + set_light(1.4, 1, warp_color) + mouse_opacity = 0 + var/matrix/skew = transform + skew = skew.Turn(180) + skew = skew.Interpolate(transform, 0.5) + if(!outgoing) + transform = skew * 2 + skew = teleporting_atom.transform + alpha = 0 + animate(src, alpha = teleporting_atom.alpha, transform = skew, time = duration) + else + skew *= 2 + animate(src, alpha = 0, transform = skew, time = duration) + else + return INITIALIZE_HINT_QDEL diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 156fd1a5d5..af42e12771 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -134,6 +134,8 @@ build_path = /obj/item/borg/upgrade/modkit/bounty //Spooky special loot + +//Wisp Lantern /obj/item/device/wisp_lantern name = "spooky lantern" desc = "This lantern gives off no light, but is home to a friendly wisp." @@ -179,7 +181,6 @@ wisp.visible_message("[wisp] has a sad feeling for a moment, then it passes.") ..() -//Wisp Lantern /obj/effect/wisp name = "friendly wisp" desc = "Happy to light your way." @@ -188,29 +189,54 @@ luminosity = 7 layer = ABOVE_ALL_MOB_LAYER +//Red/Blue Cubes /obj/item/device/warp_cube name = "blue cube" desc = "A mysterious blue cube." icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "blue_cube" + var/teleport_color = "#3FBAFD" var/obj/item/device/warp_cube/linked - - -//Red/Blue Cubes + var/teleporting = FALSE /obj/item/device/warp_cube/attack_self(mob/user) if(!linked) to_chat(user, "[src] fizzles uselessly.") return - new /obj/effect/particle_effect/smoke(user.loc) - user.forceMove(get_turf(linked)) + if(teleporting) + return + teleporting = TRUE + linked.teleporting = TRUE + var/turf/T = get_turf(src) + new /obj/effect/temp_visual/warp_cube(T, user, teleport_color, TRUE) SSblackbox.add_details("warp_cube","[src.type]") - new /obj/effect/particle_effect/smoke(user.loc) + new /obj/effect/temp_visual/warp_cube(get_turf(linked), user, linked.teleport_color, FALSE) + var/obj/effect/warp_cube/link_holder = new /obj/effect/warp_cube(T) + user.forceMove(link_holder) //mess around with loc so the user can't wander around + sleep(2.5) + if(QDELETED(user)) + qdel(link_holder) + return + if(QDELETED(linked)) + user.forceMove(get_turf(link_holder)) + qdel(link_holder) + return + link_holder.forceMove(get_turf(linked)) + sleep(2.5) + if(QDELETED(user)) + qdel(link_holder) + return + teleporting = FALSE + if(!QDELETED(linked)) + linked.teleporting = FALSE + user.forceMove(get_turf(link_holder)) + qdel(link_holder) /obj/item/device/warp_cube/red name = "red cube" desc = "A mysterious red cube." icon_state = "red_cube" + teleport_color = "#FD3F48" /obj/item/device/warp_cube/red/Initialize() ..() @@ -219,6 +245,12 @@ linked = blue blue.linked = src +/obj/effect/warp_cube + mouse_opacity = 0 + +/obj/effect/warp_cube/ex_act(severity, target) + return + //Meat Hook /obj/item/weapon/gun/magic/hook name = "meat hook"