Files
a69e8ddc13 [MIRROR] Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art. (#28285)
* Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art. (#83934)

## About The Pull Request

Replaces the Particle Acceleration Rifle, or the Beam Marksman Rifle,
with the Event Horizon Anti-Existential Beam Rifle.

In short, it shoots black holes.

It takes five cores to make.

It pretty much kills everything you point it at and their immediate
bystanders as well.

You can do this from the relative safety of a whole four screens away
thanks to it having a scope.

There can only ever be one vortex anomaly made in the round. The recipe,
however, always requires the maximum number of cores that can be made in
a round. If the number goes up for some reason (maybe someone wants to
add more vortex items), so does the total number of cores needed to make
an AEBR.

## Why It's Good For The Game

Firstly; the beam rifle? Awful. Jank code. Bad performance. Ancient
balancing considerations. Just too strong to bring out regularly against
specifically blobs, but completely fucking useless against anyone else.

So I'm hitting all these problems at once. I reduced a 600 line file to
less than 60. I've removed all that bad code. I've also made it
specifically unable to combat blobs at all because singularities send
blobs off to safety.

Secondly; this is maybe the first example of 'more cores = bigger
power'. The rifle was already utterly trash to have around, and I just
didn't think the way it worked currently could really excite anyone
enough to go on a big ol' quest to get it. Solution?

You will cause a shuttle call if you get this weapon.

## Changelog
🆑
add: Replaces the Particle Acceleration Rifle with the Event Horizon
anti-existential beam rifle. It shoots black holes. You can make this
in-game. That's right, YOU!
balance: Only one vortex anomaly can be made in a round.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art.

* Fix linter

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-06-21 13:14:49 +05:30

71 lines
2.9 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_animation()
jedi.spawn_dust()
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, attack_hand), jedi), 0.5 SECONDS)
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)