From e1303fe0ba48faacdcf85e45ab9861176210493b Mon Sep 17 00:00:00 2001 From: Charlie Nolan Date: Tue, 26 Mar 2024 03:55:28 -0700 Subject: [PATCH] Make the nuclear beer keg react to the NAD. (#24637) * Make the nuclear beer keg react to the NAD. * Made the beer keg nuke attackable again. * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Switched to addtimer per review suggestion. * Update code/modules/reagents/reagent_dispenser.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --- code/modules/reagents/reagent_dispenser.dm | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 7216ee0177f..48875c4435a 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -279,6 +279,32 @@ icon = 'icons/obj/nuclearbomb.dmi' icon_state = "nuclearbomb0" anchored = TRUE + /// If TRUE, prevents the player from inserting the disk again while it is currently exploding. + var/exploding = FALSE + +/obj/structure/reagent_dispensers/beerkeg/nuke/attackby(obj/item/O, mob/user, params) + . = ..() + if(exploding) + return + if(!istype(O, /obj/item/disk/nuclear)) + return + user.visible_message( + "[user] inserts [O] into [src] and it begins making a loud beeping noise! Uh-oh!", + "You prime [src] with [O] and it begins making a loud beeping noise! Better run!") + playsound(src, 'sound/machines/alarm.ogg', 100, FALSE, 0) + exploding = TRUE + addtimer(CALLBACK(src, PROC_REF(explode)), 13 SECONDS) + +/obj/structure/reagent_dispensers/beerkeg/nuke/proc/explode() + var/datum/reagents/R = new(100) + R.my_atom = src + R.add_reagent("beer", 100) + var/datum/effect_system/smoke_spread/chem/smoke = new + smoke.set_up(R, src, TRUE) + playsound(src.loc, 'sound/effects/smoke.ogg', 50, TRUE, -3) + smoke.start(3) + qdel(R) + qdel(src) /obj/structure/reagent_dispensers/beerkeg/nuke/update_overlays() . = ..()