mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-20 22:54:46 +00:00
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event (#73024) ## About The Pull Request This PR description might be a bit rushed because I accidentally submitted the PR and want to bang out a quick explanation of what this is before people start asking questions. Adds a new, rare, ghost-themed anomaly event -- The Ectoplasmic Outburst.  This event increases in power as more ghosts orbit it, with three important thresholds to meet. If 10% or more of all active observers are orbiting the anomaly, an effect will occur in the nearby area akin to the revenant's defile spell, damaging flooring, windows, and making a mess. If 35% or more are orbiting the anomaly, nearby objects in the effect radius have a chance to become haunted, and will fling themselves at anyone nearby for a bit. Spooky! Now, at 50% or more participation, things get serious. Ghosts orbiting the anomaly will be polled to be brought back into the world for a brief period as a vengeful spirit, anchored to a SUPER spooky ghost portal. The portal closes after two minutes (alternatively, smash it with a toolbox) and deletes all of the ghosts it spawned. Vengeful spirits are mostly just meant to smash stuff and be a nuisance while they can. It's a wonderful opportunity to let deadchat desalinate a little.  Oh, also, the anomaly is deadchat controlled. With enough ghosts, you could theoretically outrun anyone trying to neutralize it! The associated reactive armor has an effect similar to the anomaly, haunting nearby objects for a time when the wearer is struck. Not particularly outstanding, but it can introduce an element of chaos into a fight that your opponent might not expect. ## Why It's Good For The Game Anomaly events are great for ghosts. Why not make one tailored just for them! Gives admins something to spawn when a wizard has killed half of the crew but it's not quiiiite time for an ERT. It's a bit of a silly event with a novelty reward, but I think it's rare enough not to be a huge issue. ## Changelog 🆑 Rhials add: Ectoplasmic Outburst anomaly event add: Reactive Ectoplasm Armor /🆑 * Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event --------- Co-authored-by: Rhials <Datguy33456@gmail.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
98 lines
3.5 KiB
Plaintext
98 lines
3.5 KiB
Plaintext
/**
|
|
* # Raw Anomaly Cores
|
|
*
|
|
* The current precursor to anomaly cores, these are manufactured into 'finished' anomaly cores for use in research, items, and more.
|
|
*
|
|
* The current amounts created is stored in `SSresearch.created_anomaly_types[ANOMALY_CORE_TYPE_DEFINE] = amount`.
|
|
* The hard limits are in `code/__DEFINES/anomalies.dm`.
|
|
*/
|
|
/obj/item/raw_anomaly_core
|
|
name = "raw anomaly core"
|
|
desc = "You shouldn't be seeing this. Someone screwed up."
|
|
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
|
icon_state = "broken_state"
|
|
|
|
/// Anomaly type
|
|
var/anomaly_type
|
|
|
|
/obj/item/raw_anomaly_core/bluespace
|
|
name = "raw bluespace core"
|
|
desc = "The raw core of a bluespace anomaly, glowing and full of potential."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/bluespace
|
|
icon_state = "rawcore_bluespace"
|
|
|
|
/obj/item/raw_anomaly_core/vortex
|
|
name = "raw vortex core"
|
|
desc = "The raw core of a vortex anomaly. Feels heavy to the touch."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/vortex
|
|
icon_state = "rawcore_vortex"
|
|
|
|
/obj/item/raw_anomaly_core/grav
|
|
name = "raw gravity core"
|
|
desc = "The raw core of a gravity anomaly. The air seems attracted to it."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/grav
|
|
icon_state = "rawcore_grav"
|
|
|
|
/obj/item/raw_anomaly_core/pyro
|
|
desc = "The raw core of a pyro anomaly. It is warm to the touch."
|
|
name = "raw pyro core"
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/pyro
|
|
icon_state = "rawcore_pyro"
|
|
|
|
/obj/item/raw_anomaly_core/flux
|
|
name = "raw flux core"
|
|
desc = "The raw core of a flux anomaly, faintly crackling with energy."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/flux
|
|
icon_state = "rawcore_flux"
|
|
|
|
/obj/item/raw_anomaly_core/hallucination
|
|
name = "raw hallucination core"
|
|
desc = "The raw core of a hallucination anomaly, makes your head spin."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/hallucination
|
|
icon_state = "rawcore_hallucination"
|
|
|
|
/obj/item/raw_anomaly_core/random
|
|
name = "random raw core"
|
|
desc = "You should not see this!"
|
|
icon_state = "rawcore_bluespace"
|
|
|
|
/obj/item/raw_anomaly_core/bioscrambler
|
|
name = "raw bioscrambler core"
|
|
desc = "The raw core of a bioscrambler anomaly, it squirms."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/bioscrambler
|
|
icon_state = "rawcore_bioscrambler"
|
|
|
|
/obj/item/raw_anomaly_core/dimensional
|
|
name = "raw dimensional core"
|
|
desc = "The raw core of a dimensional anomaly, vibrating with infinite potential."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/dimensional
|
|
icon_state = "rawcore_dimensional"
|
|
|
|
/obj/item/raw_anomaly_core/ectoplasm //Has no cargo order option, but can sometimes be a roundstart pick
|
|
name = "\improper ectoplasm anomaly core"
|
|
desc = "The raw core of an ectoplasmic anomaly. It wants to share its secrets with you."
|
|
anomaly_type = /obj/item/assembly/signaler/anomaly/ectoplasm
|
|
icon_state = "dimensional_core"
|
|
|
|
/obj/item/raw_anomaly_core/random/Initialize(mapload)
|
|
. = ..()
|
|
var/path = pick(subtypesof(/obj/item/raw_anomaly_core))
|
|
new path(loc)
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/**
|
|
* Created the resulting core after being "made" into it.
|
|
*
|
|
* Arguments:
|
|
* * newloc - Where the new core will be created
|
|
* * del_self - should we qdel(src)
|
|
* * count_towards_limit - should we increment the amount of created cores on SSresearch
|
|
*/
|
|
/obj/item/raw_anomaly_core/proc/create_core(newloc, del_self = FALSE, count_towards_limit = FALSE)
|
|
. = new anomaly_type(newloc)
|
|
if(count_towards_limit)
|
|
var/existing = SSresearch.created_anomaly_types[anomaly_type] || 0
|
|
SSresearch.created_anomaly_types[anomaly_type] = existing + 1
|
|
if(del_self)
|
|
qdel(src)
|