Make the Supermatter Crystal More Senstive and Adds More Events (#31767)

* initial commit

* oops i forgot to commit this

* Tidies up the SM manual, clamps the A-4 damage, and fixes a linter

* removes the change to operational temperature

* buffs the flood event

* Update code/modules/power/engines/supermatter/supermatter_event.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Miles <116982774+Burzah@users.noreply.github.com>

* Update code/modules/power/engines/supermatter/supermatter_event.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Miles <116982774+Burzah@users.noreply.github.com>

---------

Signed-off-by: Miles <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Miles <116982774+Burzah@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
Hayden Redacted
2026-04-21 01:03:31 -04:00
committed by GitHub
parent 3c1d985e31
commit 55e42f53a5
3 changed files with 70 additions and 21 deletions
@@ -11,16 +11,16 @@
#define OBJECT (LOWEST + 1)
#define LOWEST (1)
#define PLASMA_HEAT_PENALTY 15 // Higher == Bigger heat and waste penalty from having the crystal surrounded by this gas. Negative numbers reduce penalty.
#define PLASMA_HEAT_PENALTY 20 // Higher == Bigger heat and waste penalty from having the crystal surrounded by this gas. Negative numbers reduce penalty.
#define OXYGEN_HEAT_PENALTY 1
#define CO2_HEAT_PENALTY 0.1
#define NITROGEN_HEAT_PENALTY -1.5
#define HYDROGEN_HEAT_PENALTY 20
#define NITROGEN_HEAT_PENALTY -1
#define HYDROGEN_HEAT_PENALTY 30
#define H2O_HEAT_PENALTY 5
#define OXYGEN_TRANSMIT_MODIFIER 1.5 //Higher == Bigger bonus to power generation.
#define PLASMA_TRANSMIT_MODIFIER 4
#define HYDROGEN_TRANSMIT_MODIFIER 3
#define OXYGEN_TRANSMIT_MODIFIER 2 //Higher == Bigger bonus to power generation.
#define PLASMA_TRANSMIT_MODIFIER 6
#define HYDROGEN_TRANSMIT_MODIFIER 4
#define H2O_TRANSMIT_MODIFIER -10
#define N2O_HEAT_RESISTANCE 6 //Higher == Gas makes the crystal more resistant against heat damage.
@@ -38,7 +38,7 @@
#define H2O_CRUNCH 0.75
#define MOLE_CRUNCH_THRESHOLD 1700 //Above this value we can get lord singulo and
#define MOLE_PENALTY_THRESHOLD 1800 //Above this value we can get lord singulo and independent mol damage, below it we can heal damage
#define MOLE_PENALTY_THRESHOLD 1500 //Above this value we can get lord singulo and independent mol damage, below it we can heal damage
#define MOLE_HEAT_PENALTY 350 //Heat damage scales around this. Too hot setups with this amount of moles do regular damage, anything above and below is scaled
//Along with damage_penalty_point, makes flux anomalies.
/// The cutoff for the minimum amount of power required to trigger the crystal invasion delamination event.
@@ -46,15 +46,15 @@
#define POWER_PENALTY_THRESHOLD 5000 //The cutoff on power properly doing damage, pulling shit around, and delamming into a tesla. Low chance of cryo anomalies, +2 bolts of electricity
#define SEVERE_POWER_PENALTY_THRESHOLD 7000 //+1 bolt of electricity, allows for gravitational anomalies, and higher chances of cryo anomalies
#define CRITICAL_POWER_PENALTY_THRESHOLD 9000 //+1 bolt of electricity.
#define DAMAGE_HARDCAP 0.002
#define DAMAGE_INCREASE_MULTIPLIER 0.25
#define DAMAGE_HARDCAP 0.005
#define DAMAGE_INCREASE_MULTIPLIER 0.5
#define THERMAL_RELEASE_MODIFIER 1 //Higher == less heat released during reaction, not to be confused with the above values
#define PLASMA_RELEASE_MODIFIER 750 //Higher == less plasma released by reaction
#define OXYGEN_RELEASE_MODIFIER 325 //Higher == less oxygen released at high temperature/power
#define REACTION_POWER_MODIFIER 0.55 //Higher == more overall power
#define REACTION_POWER_MODIFIER 0.75 //Higher == more overall power
#define MATTER_POWER_CONVERSION 10 //Crystal converts 1/this value of stored matter into energy.
@@ -116,7 +116,7 @@
///Tracks the bolt color we are using
var/zap_icon = DEFAULT_ZAP_ICON_STATE
///The portion of the gasmix we're on that we should remove
var/gasefficency = 0.15
var/gasefficency = 0.35
///Are we exploding?
var/final_countdown = FALSE
@@ -75,6 +75,14 @@
air.set_carbon_dioxide(2000)
supermatter_turf.blind_release_air(air)
// hydrogen
/datum/engi_event/supermatter_event/delta_tier/hydrogen
name = "D-4"
/datum/engi_event/supermatter_event/delta_tier/hydrogen/on_start()
var/datum/gas_mixture/air = new()
air.set_hydrogen(2000)
supermatter_turf.blind_release_air(air)
// C class events
@@ -159,6 +167,21 @@
supermatter.power += 3000
duration = 10 SECONDS
/datum/engi_event/supermatter_event/bravo_tier/power_surge // basically an arc-lite event
name = "B-4"
duration = 2 MINUTES
/datum/engi_event/supermatter_event/bravo_tier/power_surge/on_start()
supermatter.power_additive = 1500
/datum/engi_event/supermatter_event/bravo_tier/gas_dump // basically a laminate-lite event without the EMP
name = "B-5"
duration = 2 MINUTES
/datum/engi_event/supermatter_event/bravo_tier/gas_dump/on_start()
supermatter.heat_multiplier = 2
supermatter.gas_multiplier = 2
//A class events
/datum/engi_event/supermatter_event/alpha_tier
threat_level = SM_EVENT_THREAT_A
@@ -191,6 +214,15 @@
/datum/engi_event/supermatter_event/alpha_tier/gas_multiplier/on_start()
supermatter.gas_multiplier = 4
/datum/engi_event/supermatter_event/alpha_tier/integrity_hit
name = "A-4"
/datum/engi_event/supermatter_event/alpha_tier/integrity_hit/on_start()
supermatter.damage += rand(350, 650)
clamp((supermatter.damage + rand(350, 650)), 0, 1000)
supermatter.matter_power += 1000
// S-tier events are special. They are very dangerous, but give a 5 minute warning to the engis.
/datum/engi_event/supermatter_event/sierra_tier
threat_level = SM_EVENT_THREAT_S
@@ -226,3 +258,16 @@
supermatter.heat_multiplier = 25
supermatter.gas_multiplier = 25
empulse(supermatter, 3, 6, TRUE, "S-laminite event")
// Flood
/datum/engi_event/supermatter_event/sierra_tier/flood
name = "S-FLOOD OUTPOUR"
/datum/engi_event/supermatter_event/sierra_tier/flood/start_sierra_event()
..()
var/datum/gas_mixture/air = new()
air.set_toxins(20000)
air.set_oxygen(15000)
supermatter_turf.blind_release_air(air) // WHO HAS AN RCD, SPACE IT
supermatter.gas_multiplier = 40
empulse(supermatter, 3, 6, TRUE, "S-flood event")