mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 20:20:33 +01:00
[MIRROR] Adds an achievement for saving a cascading SM from the final countdown. [MDB IGNORE] (#23358)
* Adds an achievement for saving a cascading SM from the final countdown. (#77900) ## About The Pull Request Adds the "All Within Theoretical Limits" achievement. You get the achievement for standing inside the engine room at the time where the SM crystal heals from 0% health (when the crystal says "Crystalline hyperstructure returning to safe operating parameters. Harmonic frequency restored within emergency bounds. Anti-resonance filter initiated"), and waiting until the SM heals to at least 25% health. ## Why It's Good For The Game This rewards engineers who stay behind and try to save the engine even in the most dire circumstances. ## Changelog 🆑 distributivgesetz add: Add an achievement for saving a cascading engine from the final countdown. /🆑 * Adds an achievement for saving a cascading SM from the final countdown. --------- Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
This commit is contained in:
co-authored by
distributivgesetz
parent
91e98c032e
commit
c8bbdbed80
@@ -54,6 +54,7 @@
|
||||
#define MEDAL_EARTHQUAKE_VICTIM "Earthquake Victim"
|
||||
#define MEDAL_DEBT_EXTINGUISHED "Debt Extinguished"
|
||||
#define MEDAL_ARCHMAGE "Archmage"
|
||||
#define MEDAL_THEORETICAL_LIMITS "All Within Theoretical Limits"
|
||||
|
||||
//Skill medal hub IDs
|
||||
#define MEDAL_LEGENDARY_MINER "Legendary Miner"
|
||||
|
||||
@@ -241,3 +241,9 @@
|
||||
desc = "I've paid my dues, shift after shift... I've done my sentence but commited no griff..."
|
||||
database_id = MEDAL_DEBT_EXTINGUISHED
|
||||
icon = "outdebted"
|
||||
|
||||
/datum/award/achievement/misc/theoretical_limits
|
||||
name = "All Within Theoretical Limits"
|
||||
desc = "I never thought I'd see a resonance cascade, let alone prevent one..."
|
||||
database_id = MEDAL_THEORETICAL_LIMITS
|
||||
icon = "theoreticallimits"
|
||||
|
||||
@@ -169,6 +169,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
/// Only values greater or equal to the current one can change the strat.
|
||||
var/delam_priority = SM_DELAM_PRIO_NONE
|
||||
|
||||
/// Lazy list of the crazy engineers who managed to turn a cascading engine around.
|
||||
var/list/datum/weakref/saviors = null
|
||||
|
||||
/obj/machinery/power/supermatter_crystal/Initialize(mapload)
|
||||
. = ..()
|
||||
gas_percentage = list()
|
||||
@@ -312,6 +315,16 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
processing_sound()
|
||||
handle_high_power()
|
||||
psychological_examination()
|
||||
|
||||
// handle the engineers that saved the engine from cascading, if there were any
|
||||
if(get_status() < SUPERMATTER_EMERGENCY && !isnull(saviors))
|
||||
for(var/datum/weakref/savior_ref as anything in saviors)
|
||||
var/mob/living/savior = savior_ref.resolve()
|
||||
if(!istype(savior)) // didn't live to tell the tale, sadly.
|
||||
continue
|
||||
savior.client?.give_award(/datum/award/achievement/misc/theoretical_limits, savior)
|
||||
LAZYNULL(saviors)
|
||||
|
||||
if(prob(15))
|
||||
supermatter_pull(loc, min(internal_energy/850, 3))//850, 1700, 2550
|
||||
update_appearance()
|
||||
@@ -515,6 +528,17 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
|
||||
if(healed)
|
||||
final_countdown = FALSE
|
||||
|
||||
if(!istype(delamination_strategy, /datum/sm_delam/cascade))
|
||||
return
|
||||
|
||||
for(var/mob/living/lucky_engi as anything in mobs_in_area_type(list(/area/station/engineering/supermatter)))
|
||||
if(isnull(lucky_engi.client))
|
||||
continue
|
||||
if(isanimal_or_basicmob(lucky_engi))
|
||||
continue
|
||||
LAZYADD(saviors, WEAKREF(lucky_engi))
|
||||
|
||||
return // delam averted
|
||||
sleep(1 SECONDS)
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 233 KiB |
Reference in New Issue
Block a user