mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
The Nuke kills everyone when it goes off. (#62807)
This does not make the nuke explode like it used to. The nuke will now dust you in a similar way to the AI doomsday device when it goes off. This will only happen if the nuke successfully detonated on the station and not on a near miss. Otherwise, it kills everything on the z-level. There has been code in the game for an extended period of time that was supposed to make this happen, but I believe it was bugged and did not properly give the z-level of the nuke in the explosion. It should be noted that gameplay-wise this makes it so antagonists who need to escape will no longer get a free pass for being on the station when the nuke goes off, but they will still be counted as escaped if they are in lavaland/another z-level. I would say that this is only good for the game but I understand if it's controversial. The original code gibbed people on the z-level, although I've considered changing it to dusting. I would like opinions on this or alternative methods of death. fixes #62788
This commit is contained in:
@@ -501,11 +501,13 @@ GLOBAL_VAR(station_nuke_source)
|
||||
SSticker.roundend_check_paused = FALSE
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/really_actually_explode(off_station)
|
||||
var/turf/bomb_location = get_turf(src)
|
||||
Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,/datum/controller/subsystem/ticker/proc/station_explosion_detonation,src))
|
||||
INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, z)
|
||||
if(off_station != NUKE_NEAR_MISS) // Don't kill people in the station if the nuke missed, even if we are technically on the same z-level
|
||||
INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, bomb_location.z)
|
||||
|
||||
/obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station)
|
||||
if(off_station < 2)
|
||||
if(off_station < NUKE_NEAR_MISS)
|
||||
return CINEMATIC_SELFDESTRUCT
|
||||
else
|
||||
return CINEMATIC_SELFDESTRUCT_MISS
|
||||
@@ -595,6 +597,7 @@ GLOBAL_VAR(station_nuke_source)
|
||||
return
|
||||
for(var/_victim in GLOB.mob_living_list)
|
||||
var/mob/living/victim = _victim
|
||||
to_chat(victim, span_userdanger("You are shredded to atoms!"))
|
||||
if(victim.stat != DEAD && victim.z == z)
|
||||
victim.gib()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user