Files
Bubberstation/code/modules/power/singularity/reality_tear.dm
MrMelbert 9b40e13f8b Makes dust animation look less 2006 (#87435)
## About The Pull Request

This was inspired by an effect I saw on Paradise but I sprited my own


https://github.com/user-attachments/assets/2130053c-a6ea-48e6-8b62-4c08563fd154

(Todo, make the skeleton appearing less jank)

## Why It's Good For The Game

1. Looks less 2006. 
2. The dust sprite will reflect the mob being dusted, since it's
literally just Your Sprite. Your clothes, species, etc.
3. All species and all mob types now animate being dusted - from corgi
to xenos, from borgs to lizards -, and we can even reuse this effect for
items being dusted if we so desire

## Changelog

🆑 Melbert
image: The animation for being dusted now takes into account your
sprite, rather than being a normal nude spaceman
/🆑
2024-11-12 10:31:03 +13:00

69 lines
2.8 KiB
Plaintext

/// Tear in the Fabric of Reality ///
// Typically spawned by placing two bags of holding into one another, collapsing into a wandering singularity after a brief period as a stationary singularity.
/obj/reality_tear
name = "tear in the fabric of reality"
desc = "As you gaze into the abyss, the only thing you can think is... \"Should I really be this close to it?\""
anchored = TRUE
appearance_flags = LONG_GLIDE
density = TRUE
icon = 'icons/effects/96x96.dmi'
icon_state = "boh_tear"
plane = MASSIVE_OBJ_PLANE
plane = ABOVE_LIGHTING_PLANE
light_range = 6
move_resist = INFINITY
obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION
pixel_x = -32
pixel_y = -32
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
flags_1 = SUPERMATTER_IGNORES_1
/// Range that our singularity component consumes objects
var/singularity_consume_range = 1
/// Ranges that the singularity pulls objects
var/singularity_grav_pull = 21
/// Time before we begin our bagulo spawn
var/collapse_spawn_time = 9 SECONDS
/obj/reality_tear/proc/start_disaster()
apply_wibbly_filters(src)
playsound(loc, 'sound/effects/clockcult_gateway_disrupted.ogg', vary = 200, extrarange = 3, falloff_exponent = 1, frequency = 0.33, pressure_affected = FALSE, ignore_walls = TRUE, falloff_distance = 7)
AddComponent(
/datum/component/singularity, \
consume_range = singularity_consume_range, \
grav_pull = singularity_grav_pull, \
roaming = FALSE, \
singularity_size = STAGE_SIX, \
)
addtimer(CALLBACK(src, PROC_REF(reality_collapse)), collapse_spawn_time, TIMER_DELETE_ME)
animate(src, time = 7.5 SECONDS, transform = transform.Scale(2), flags = ANIMATION_PARALLEL)
animate(time = 2 SECONDS, transform = transform.Scale(0.25), easing = ELASTIC_EASING)
animate(time = 0.5 SECONDS, alpha = 0)
/obj/reality_tear/proc/reality_collapse()
playsound(loc, 'sound/effects/supermatter.ogg', 200, vary = TRUE, extrarange = 3, falloff_exponent = 1, frequency = 0.5, pressure_affected = FALSE, ignore_walls = TRUE, falloff_distance = 7)
var/obj/singularity/bagulo = new(loc)
bagulo.expand(STAGE_TWO)
bagulo.energy = 400
qdel(src)
/obj/reality_tear/attack_tk(mob/user)
if(!isliving(user))
return
var/mob/living/jedi = user
to_chat(jedi, span_userdanger("You don't feel like you are real anymore."))
jedi.dust(just_ash = TRUE)
return COMPONENT_CANCEL_ATTACK_CHAIN
//The temporary tears in reality. Collapses into nothing, and has a significantly lower gravity pull range, but consumes more widely.
/obj/reality_tear/temporary
name = "puncture in the fabric of reality"
desc = "Count your lucky stars that this wasn't anywhere near you."
singularity_consume_range = 2
singularity_grav_pull = 3
collapse_spawn_time = 2 SECONDS
/obj/reality_tear/temporary/reality_collapse()
qdel(src)