diff --git a/__DEFINES/reagents.dm b/__DEFINES/reagents.dm index 221f1d73ac6..a062f407c04 100644 --- a/__DEFINES/reagents.dm +++ b/__DEFINES/reagents.dm @@ -487,6 +487,7 @@ #define MIDAZOLINE "midazoline" #define LOCUTOGEN "locutogen" #define BUMCIVILIAN "bumcivilian" +#define PUNCTUALITE "punctualite" //Plant-specific reagents #define TANNIC_ACID "tannic_acid" diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 297639901b3..9e768827a88 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -10335,6 +10335,43 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood") if(!locate(/obj/effect/decal/cleanable/purpledrank) in T) new /obj/effect/decal/cleanable/purpledrank(T) +/datum/reagent/punctualite + name = "Punctualite" + id = PUNCTUALITE + description = "Nicknamed mad chemist's alarm clock. Explodes on the turn of the hour when within a living creature." + reagent_state = REAGENT_STATE_LIQUID + color = "#8d8791" //rgb: 200, 165, 220 + custom_metabolism = 0 //Wouldn't be much fun if it all got metabolized beforehand + var/currentHour = 0 //The hour it was introduced into the system so it doesn't blow right away + +/datum/reagent/punctualite/on_mob_life(var/mob/living/M) + if(..()) + return 1 + if(prob(5) && prob(5)) //0.25% chance per tick + var/mob/living/carbon/human/earProtMan = null + if(ishuman(M)) + earProtMan = M + if(!M.is_deaf() && !earProtMan || !earProtMan.earprot()) + if(prob(50)) + to_chat(M, "You hear a ticking sound") + else + to_chat(M, "You hear a tocking sound") + if((floor(world.time / (1 HOURS)) + 1) > currentHour) + if(!currentHour) + currentHour = floor(world.time / (1 HOURS)) + 1 + else + punctualiteExplode(M) + currentHour = floor(world.time / (1 HOURS)) + 1 + +/datum/reagent/punctualite/proc/punctualiteExplode(var/mob/living/H) + var/bigBoom = 0 + var/medBoom = 0 + var/litBoom = 0 + bigBoom = min(floor(volume/150), 2) //Max breach is 2, twice a welder tank + medBoom = min(floor(volume/50), 4) + litBoom = min(floor(volume/20), 7) + explosion(get_turf(H), bigBoom, medBoom, litBoom) + /datum/reagent/hyperzine/methamphetamine //slightly better than 'zine name = "Methamphetamine" //Only used on the Laundromat spess vault id = METHAMPHETAMINE diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index dfc48f5f096..71c15fc4403 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -4171,5 +4171,13 @@ var/list/allowed_reagents = chemical_reagents_list - blocked_chems holder.add_reagent(pick(allowed_reagents),created_volume) +/datum/chemical_reaction/punctualite + name = "Punctualite" + id = PUNCTUALITE + result = PUNCTUALITE + required_reagents = list(HYPERZINE = 10, FUEL = 10) + required_catalysts = list(ZOMBIEPOWDER = 5) + result_amount = 5 + #undef ALERT_AMOUNT_ONLY #undef ALERT_ALL_REAGENTS