// bonus probability to chase the target granted by eating a supermatter
#define DARK_MATTER_SUPERMATTER_CHANCE_BONUS 10
/// This type of singularity cannot grow as big, but it constantly hunts down living targets.
/obj/singularity/dark_matter
name = "dark matter singularity"
desc = "\"It is both beautiful and horrifying, \
a cosmic paradox that defies all logic. I can't \
take my eyes off it, even though I know it could \
devour us all in an instant.\
\"
- Chief Engineer Miles O'Brien"
ghost_notification_message = "IT'S HERE"
icon_state = "dark_matter_s1"
singularity_icon_variant = "dark_matter"
maximum_stage = STAGE_FOUR
energy = 250
singularity_component_type = /datum/component/singularity/bloodthirsty
///to avoid cases of the singuloth getting blammed out of existence by the very meteor it rode in on...
COOLDOWN_DECLARE(initial_explosion_immunity)
/obj/singularity/dark_matter/Initialize(mapload, starting_energy)
. = ..()
COOLDOWN_START(src, initial_explosion_immunity, 5 SECONDS)
var/datum/component/singularity/resolved_singularity = singularity_component.resolve()
resolved_singularity.chance_to_move_to_target = 100
addtimer(CALLBACK(src, PROC_REF(normalize_tracking)), 20 SECONDS)
/obj/singularity/dark_matter/examine(mob/user)
. = ..()
if(!COOLDOWN_FINISHED(src, initial_explosion_immunity))
. += span_warning("Protected by dark matter, [src] seems to be immune to explosions for [DisplayTimeText(COOLDOWN_TIMELEFT(src, initial_explosion_immunity))].")
if(consumed_supermatter)
. += span_userdanger("IT HUNGERS")
else
. += span_warning("\"The most disturbing aspect of the singularity is its \
apparent attraction to living organisms. It seems to sense \
their presence and move towards them at a surprisingly fast speed. \
We have observed it consume several specimens of flora and fauna that \
we have collected from this sector. The singularity does not seem \
to care for other inanimate objects or machines, but will consume \
them all the same. We have tried to communicate with it using various \
methods, but received no response.\"
- Research Director Jadzia Dax")
/obj/singularity/dark_matter/ex_act(severity, target)
if(!COOLDOWN_FINISHED(src, initial_explosion_immunity))
return FALSE
return ..()
/obj/singularity/dark_matter/supermatter_upgrade()
var/datum/component/singularity/resolved_singularity = singularity_component.resolve()
resolved_singularity.chance_to_move_to_target += DARK_MATTER_SUPERMATTER_CHANCE_BONUS
name = "Dark Lord Singuloth"
desc = "You managed to make a singularity from dark matter, which makes no sense at all, and then you threw a supermatter into it? Are you fucking insane? Fuck it, praise Lord Singuloth."
consumed_supermatter = TRUE
///For 20 seconds, the singularity has buffed tracking to ensure it actually makes its way to the station, normalizes after 20 seconds
/obj/singularity/dark_matter/proc/normalize_tracking()
var/datum/component/singularity/resolved_singularity = singularity_component.resolve()
resolved_singularity.chance_to_move_to_target = consumed_supermatter ? initial(resolved_singularity.chance_to_move_to_target) + DARK_MATTER_SUPERMATTER_CHANCE_BONUS : initial(resolved_singularity.chance_to_move_to_target)
#undef DARK_MATTER_SUPERMATTER_CHANCE_BONUS