From bb477c9dbdffc51b4f52e478602712c25397fe77 Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Tue, 5 May 2026 22:12:50 -0500 Subject: [PATCH] Admins can now varedit blobs to not instantly end the round on victory (#95878) ## About The Pull Request Originally this PR was just supposed to split blob's "start victory" thing into its own proc and add an extra check that could be overridden, both for downstreams because a friend asked, but then I thought "wouldn't it be funny if you could varedit a blob to not end the round on critical mass?" so now we're here. Anyways, it's about what it says on the tin. Blobs now have a variable, `end_round_on_victory`, which defaults to TRUE (preserving current behavior). Setting it to 0/FALSE: - Makes the blob no longer gain infinite points upon reaching critical mass - Makes it announce an "emergency containment activation" instead of killing everyone if it does hit critical mass - Prevents the blob from expanding over the blob victory count (400 by default). - ...basically does nothing else. (You're still going to have to manually remove the blob from SSshuttle's hostile environments list!) ## Why It's Good For The Game Maybe you want to jumpscare the station with a giant fight they have to take but then not actually kill them in the sake they don't actually win. You could make an event out of this (said in the same cadence as "You could make a religion out of this"), probably. ## Changelog :cl: admin: Admins can now varedit blob overminds (the eye mob) to not kill everyone on the station if they hit critical mass. (Admins will still have to remove the blob from the shuttle subsystem's "hostile environments" tracker, though.) /:cl: --------- Co-authored-by: Hatterhat --- code/modules/antagonists/blob/overmind.dm | 47 +++++++++++++------ .../antagonists/blob/structures/_blob.dm | 16 ++++++- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index e6f8ad51e22..dcfc2a184f4 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -61,6 +61,9 @@ GLOBAL_LIST_EMPTY(blob_nodes) /// The list of strains the blob can reroll for. var/list/strain_choices + /// Adminbus potential - if this is set to FALSE, the blob won't end the round upon reaching critical mass. + var/end_round_on_victory = TRUE + /mob/eye/blob/Initialize(mapload, starting_points = OVERMIND_STARTING_POINTS) ADD_TRAIT(src, TRAIT_BLOB_ALLY, INNATE_TRAIT) validate_location() @@ -160,16 +163,8 @@ GLOBAL_LIST_EMPTY(blob_nodes) qdel(src) else if(!victory_in_progress && (blobs_legit.len >= blobwincount)) - victory_in_progress = TRUE - priority_announce("Biohazard has reached critical mass. Station loss is imminent.", "Biohazard Alert") - SSsecurity_level.set_level(SEC_LEVEL_DELTA) + begin_victory() - // Set status displays to biohazard alert - critical level - send_status_display_biohazard_alert() - - max_blob_points = INFINITY - blob_points = INFINITY - addtimer(CALLBACK(src, PROC_REF(victory)), 45 SECONDS) else if(!free_strain_rerolls && (last_reroll_time + BLOB_POWER_REROLL_FREE_TIME= controller.blobwincount)) + return FALSE + // Otherwise, it's probably fine. + return TRUE + +/obj/structure/blob/proc/expand(turf/T = null, mob/eye/blob/controller = null, expand_reaction = 1) if(!T) var/list/dirs = list(1,2,4,8) for(var/i = 1 to 4) @@ -172,6 +183,9 @@ return var/make_blob = TRUE //can we make a blob? + if(!can_make_blob(controller)) + make_blob = FALSE + if(isspaceturf(T) && !(locate(/obj/structure/lattice) in T) && prob(80)) make_blob = FALSE playsound(src.loc, 'sound/effects/splat.ogg', 50, TRUE) //Let's give some feedback that we DID try to spawn in space, since players are used to it