Files
VOREStation/code/game/objects/effects/anomalies/anomaly_stats_mods.dm
T
Guti 7018074d55 Anomaly Harvesting (#19068)
* Automatic changelog compile [ci skip]

* Anomalisci

* TGUI stuffs

* Fimx

* Colours

* Little polish

* Remove mult

* .

* Anomaly harvester

* Particle gun

* Dangerous anomalies

* Emitter update

* Suspension generator

* Flux & Weather update

* Techweb + Mapping

* Fixup maps in TGM format

5cff3b2d1d: maps/tether/tether-01-surface1.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* fimx

* Oops that wasn't updated

* I swear I got it this time

* Adjustments

* Dust anomaly

* Couple of fixes

* Borg stuff

* Scanner module

* Fix attempt

* Boxless

* Fix (Hopefully)

* Changes

* .

* fix ranges

* fix the harvester UI

* wrong typing

* dm icon handles icon sizes internally

* stack gap handles that

* .

* .

* .

* fixes

* refs are unique keys

* release all

* .

* .

* Change

* Grip those samples!

---------

Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2026-03-11 21:17:52 +01:00

88 lines
2.2 KiB
Plaintext

/datum/anomaly_modifiers
var/name
var/description
var/value
var/obj/effect/anomaly/attached_anomaly = null
/datum/anomaly_modifiers/proc/get_description()
return description
/datum/anomaly_modifiers/proc/get_value()
return value
/datum/anomaly_modifiers/proc/on_add(datum/weakref/anomaly)
attached_anomaly = anomaly.resolve()
if(!istype(attached_anomaly))
return FALSE
return TRUE
/datum/anomaly_modifiers/proc/on_remove(datum/weakref/anomaly)
attached_anomaly = anomaly.resolve()
if(!istype(attached_anomaly))
return FALSE
return TRUE
/datum/anomaly_modifiers/reflective
name = "Reflective"
description = "A protective coating was detected."
value = 1.2
/datum/anomaly_modifiers/invisible
name = "Invisible"
description = "Light wave distortion was detected."
value = 1.5
/datum/anomaly_modifiers/invisible/on_add(datum/weakref/anomaly)
if(!..())
return
addtimer(CALLBACK(attached_anomaly, TYPE_PROC_REF(/atom/movable, cloak)), 2 SECONDS)
/datum/anomaly_modifiers/invisible/on_remove(datum/weakref/anomaly)
if(!..())
return
addtimer(CALLBACK(attached_anomaly, TYPE_PROC_REF(/atom/movable, uncloak)), 2 SECONDS)
/*
/datum/anomaly_modifiers/hidden
name = "Hidden"
description = "Interference detected. Some data cannot be read."
value = 0.15
*/
/datum/anomaly_modifiers/move
name = "Move"
description = "Anomalous anchoring could not be detected."
value = 1.4
/datum/anomaly_modifiers/move/on_add(datum/weakref/anomaly)
if(!..())
return
attached_anomaly.move_chance = ANOMALY_MOVECHANCE
/datum/anomaly_modifiers/move/on_remove(datum/weakref/anomaly)
if(!..())
return
attached_anomaly.move_chance = 0
/datum/anomaly_modifiers/fast
name = "Faster Pulses"
description = "Anomalous pulses are more common."
value = 0.9
/datum/anomaly_modifiers/fast/on_add(datum/weakref/anomaly)
if(!..())
return
var/datum/anomaly_stats/stats = attached_anomaly.stats
stats.min_activation = 25 SECONDS
stats.max_activation = 45 SECONDS
/datum/anomaly_modifiers/fast/on_remove(datum/weakref/anomaly)
if(!..())
return
var/datum/anomaly_stats/stats = attached_anomaly.stats
stats.min_activation = initial(stats.min_activation)
stats.max_activation = initial(stats.max_activation)