Files
MrMelbert f1ed88ab46 Autogenerate anomaly core cargo orders (#95242)
## About The Pull Request

Anomaly core cargo orders are auto-generated from subtypes of raw
anomaly core.
This makes it marginally easier to add new anomaly core types.

## Changelog

🆑 Melbert
fix: Weather anomaly cores are orderable from cargo
refactor: Anomaly core cargo orders are auto-generated - report any
oddities with them.
/🆑
2026-02-27 10:21:30 +13:00

111 lines
4.0 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/devices/new_assemblies.dmi'
icon_state = "broken_state"
/// Anomaly type
var/obj/item/assembly/signaler/anomaly/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/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 = "raw ectoplasm 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 = "rawcore_dimensional"
/obj/item/raw_anomaly_core/weather
name = "raw weather core"
desc = "The raw core of a weather anomaly. It makes you wish for a rainy day."
anomaly_type = /obj/item/assembly/signaler/anomaly/weather
icon_state = "rawcore_weather"
/obj/item/raw_anomaly_core/random
name = "random raw core"
desc = "You should not see this!"
icon_state = "rawcore_bluespace"
item_flags = parent_type::item_flags | ABSTRACT
/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)
SSresearch.increment_existing_anomaly_cores(anomaly_type)
if(del_self)
qdel(src)
/// Doesn't do anything, consolation prize if you neu
/obj/item/inert_anomaly
name = "inert anomaly core"
desc = "A chunk of fused exotic materials. Useless to you, but some other lab might purchase it."
icon = 'icons/obj/devices/new_assemblies.dmi'
icon_state = "rawcore_inert"