Files
Bubberstation/code/datums/mutations/adaptation.dm
Ghom 14fb86e3e8 Mutation code cleanup, mutations now have sources to avoid concurrency problems. (#91346)
## About The Pull Request
This PR aims to clean or bring up to date portions of code about dna,
the dna console and mutations. This includes taking care of or removing
some of the awful choices like the pratically useless
`datum/mutation/human` pathing, or the class variable, in favor of using
sources to avoid potential issues with extraneous sources of a mutation.

The files changed are over a hundred just because I removed the
`datum/mutation/human` path, but the actual bulk of the code is mainly
shared between the datum/dna.dm, _mutations.dm and dna_console.dm.

## Why It's Good For The Game
Mutation shitcode is hurting my future plans for infusions a little.
Also it's a much needed refactor. Drafted 'till I'm sure it works
without issues.

## Changelog

🆑
refactor: Refactored mutation code backend. Report any issue.
/🆑
2025-06-08 13:57:10 +02:00

59 lines
2.7 KiB
Plaintext

/datum/mutation/adaptation
name = "Adaptation"
desc = "A strange mutation that renders the host immune to damage from extreme temperatures. Does not protect from vacuums."
quality = POSITIVE
difficulty = 16
text_gain_indication = span_notice("Your body feels normal!")
instability = NEGATIVE_STABILITY_MAJOR
locked = TRUE // fake parent
conflicts = list(/datum/mutation/adaptation)
mutation_traits = list(TRAIT_WADDLING)
/// Icon used for the adaptation overlay
var/adapt_icon = "meow"
/datum/mutation/adaptation/New(datum/mutation/copymut)
..()
conflicts = typesof(/datum/mutation/adaptation)
if(!(type in visual_indicators))
visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', adapt_icon, -MUTATIONS_LAYER))
/datum/mutation/adaptation/get_visual_indicator()
return visual_indicators[type][1]
/datum/mutation/adaptation/cold
name = "Cold Adaptation"
desc = "A strange mutation that renders the host immune to damage from low temperature environments. It also prevents the host from slipping on ice."
text_gain_indication = span_notice("Your body feels refreshingly cold.")
instability = POSITIVE_INSTABILITY_MODERATE
mutation_traits = list(TRAIT_RESISTCOLD, TRAIT_NO_SLIP_ICE)
adapt_icon = "cold"
locked = FALSE
/datum/mutation/adaptation/heat
name = "Heat Adaptation"
desc = "A strange mutation that renders the host immune to damage from high temperature, including being set alight, though the flame itself still burns clothing. It also seems to make the host resist ash storms."
text_gain_indication = span_notice("Your body feels invigoratingly warm.")
instability = POSITIVE_INSTABILITY_MODERATE
mutation_traits = list(TRAIT_RESISTHEAT, TRAIT_ASHSTORM_IMMUNE)
adapt_icon = "fire"
locked = FALSE
/datum/mutation/adaptation/thermal
name = "Thermal Adaptation"
desc = "A strange mutation that renders the host immune to damage from both low and high temperature environments. Does not protect from high or low pressure environments."
difficulty = 32
text_gain_indication = span_notice("Your body feels pleasantly room temperature.")
instability = POSITIVE_INSTABILITY_MAJOR
mutation_traits = list(TRAIT_RESISTHEAT, TRAIT_RESISTCOLD)
adapt_icon = "thermal"
locked = TRUE // recipe
/datum/mutation/adaptation/pressure
name = "Pressure Adaptation"
desc = "A strange mutation that renders the host immune to damage from both low and high pressure environments. Does not protect from temperature, including the cold of space."
text_gain_indication = span_notice("Your body feels impressively pressurized.")
instability = POSITIVE_INSTABILITY_MODERATE
adapt_icon = "pressure"
mutation_traits = list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE)
locked = FALSE