Brand new Robot Drugs + Space Drugs Work for Robots! (#29781)

* Update drugs.dm

* weeeeeeed

* Apply suggestions from code review

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update drugs.dm

* Update code/modules/reagents/chemistry/reagents/drugs.dm

Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/reagents/chemistry/reagents/drugs.dm

Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update drugs.dm

---------

Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
CRUNCH
2025-08-07 03:54:03 +01:00
committed by GitHub
parent 993df94094
commit 9757fe73b0
2 changed files with 155 additions and 11 deletions

View File

@@ -39,9 +39,10 @@
/datum/reagent/space_drugs
name = "Space drugs"
id = "space_drugs"
description = "An illegal chemical compound used as drug."
description = "A synthetic compound well-known for its narcotic effects in both organics and synthetics. It is also an important constituent of some chemical reactions."
reagent_state = LIQUID
color = "#9087A2"
process_flags = ORGANIC | SYNTHETIC // These are SPACE drugs! This is the FUTURE! We can get EVERYONE high!
metabolization_rate = 0.2
addiction_chance = 15
addiction_threshold = 10
@@ -57,7 +58,10 @@
if((M.mobility_flags & MOBILITY_MOVE) && !M.restrained())
step(M, pick(GLOB.cardinal))
if(prob(7))
M.emote(pick("twitch","drool","moan","giggle"))
if(!ismachineperson(M))
M.emote(pick("twitch", "drool", "moan", "giggle"))
else
M.emote(pick("twitch", "stare", "moan", "giggle"))
return ..() | update_flags
/datum/reagent/psilocybin
@@ -312,7 +316,7 @@
M.bodytemperature--
M.emote("smile")
if(prob(5))
to_chat(M, "<span class='notice'>You feel too chill!</span>")
to_chat(M, "<span class='warning'>You feel too chill!</span>")
M.emote(pick("yawn", "drool"))
M.Stun(2 SECONDS, FALSE)
update_flags |= M.adjustToxLoss(1, FALSE)
@@ -343,7 +347,10 @@
M.emote("cry")
else if(severity == 2)
if(effect <= 2)
M.visible_message("<span class='warning'>[M] sways and falls over!</span>")
M.visible_message(
"<span class='warning'>[M] sways and falls over!</span>",
"<span class='warning'>You sway and fall over!</span>"
)
update_flags |= M.adjustToxLoss(3, FALSE)
update_flags |= M.adjustBrainLoss(3, FALSE)
M.Weaken(16 SECONDS)
@@ -351,7 +358,10 @@
else if(effect <= 4)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.visible_message("<span class='warning'>[M]'s skin is rotting away!</span>")
H.visible_message(
"<span class='danger'>[M]'s skin is rotting away!</span>",
"<span class='userdanger'>Your skin is rotting away!</span>"
)
update_flags |= H.adjustBruteLoss(25, FALSE)
H.emote("scream")
H.become_husk("krokodil_overdose")
@@ -1121,12 +1131,129 @@
#undef MEPHEDRONE_BLUR_EFFECT
#undef MEPHEDRONE_OVERDOSE_BLUR_EFFECT
//MARK: Robot Drugs
// Made for robots, by robots.
//////////////////////////////
// Synth-Drugs //
//////////////////////////////
// Robot weed. Mixes the effects of CBD and THC.
/datum/reagent/w33d
name = "W33D"
id = "w33d"
description = "A thick, oily concoction designed to mimic the effects of cannabis in synthetics. \
As a happy coincidence, when it dries out it can also function as servicable filler, sealant, and insulator."
reagent_state = LIQUID
color = "#17dd17"
process_flags = SYNTHETIC
taste_description = "man, like, totally the best most relaxing thing ever, dude"
//Ultra-Lube: Meth
/datum/reagent/w33d/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(prob(10))
M.AdjustStuttering(rand(0, 6 SECONDS))
if(prob(5))
M.emote(pick("hsigh", "giggle", "laugh", "smile"))
if(prob(5))
to_chat(M, "<span class='notice'>[pick("You feel peaceful.", "You whirr softly.", "You feel chill.", "You vibe.")]</span>")
if(prob(4))
M.Confused(20 SECONDS)
if(prob(10))
M.AdjustConfused(-10 SECONDS)
M.SetWeakened(0, FALSE)
if(prob(25))
if(ishuman(M))
var/mob/living/carbon/human/dude = M
update_flags |= dude.adjustBruteLoss(-2, FALSE, robotic = TRUE)
update_flags |= dude.adjustFireLoss(-2, FALSE, robotic = TRUE)
if(volume >= 50 && prob(25))
if(prob(10))
M.Drowsy(20 SECONDS)
return ..() | update_flags
// Robot Krokodil
/datum/reagent/grokodil
name = "Grokodil"
id = "grokodil"
description = "An experimental compound cooked up in the back alleys of New Canaan, designed to mimic the effects of Krokodil in synthetics. \
Unfortunately, this worked a little too well, as it also faithfully replicates the fact that there are serious side-effects. \
Overconsumption will cause extreme corrosion and a combonation of endothermic and exothermic reactions that will lead to localized melting and generalized temperature reduction."
color = "#212121"
process_flags = SYNTHETIC
overdose_threshold = 20
addiction_chance = 10
addiction_threshold = 10
taste_description = "very poor life choices"
allowed_overdose_process = TRUE
goal_department = "Science"
goal_difficulty = REAGENT_GOAL_HARD
/datum/reagent/grokodil/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
M.AdjustJitter(-80 SECONDS)
if(prob(25))
update_flags |= M.adjustBrainLoss(1, FALSE)
if(prob(15))
M.emote(pick("smile", "grin", "chuckle", "laugh"))
if(prob(10))
to_chat(M, "<span class='notice'>You feel pretty chill.</span>")
M.bodytemperature--
M.emote("smile")
if(prob(5))
to_chat(M, "<span class='warning'>You feel too chill!</span>")
M.emote(pick("shiver", "cross"))
M.Stun(2 SECONDS, FALSE)
update_flags |= M.adjustFireLoss(1, FALSE)
update_flags |= M.adjustBrainLoss(1, FALSE)
M.bodytemperature -= 20
if(prob(2))
to_chat(M, "<span class='warning'>Patches of corrosion appear on your chassis!</span>")
update_flags |= M.adjustBruteLoss(2, FALSE)
return ..() | update_flags
/datum/reagent/grokodil/overdose_process(mob/living/M, severity)
var/list/overdose_info = ..()
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
if(severity == 1)
if(effect <= 2)
M.visible_message("<span class='warning'>[M] looks dazed!</span>")
M.Stun(6 SECONDS)
do_sparks(5, FALSE, M)
M.emote("stare")
else if(effect <= 4)
M.emote("shiver")
M.bodytemperature -= 40
else if(effect <= 7)
to_chat(M, "<span class='warning'>Your chassis and internals are corroding!</span>")
update_flags |= M.adjustBruteLoss(5, FALSE)
update_flags |= M.adjustFireLoss(2, FALSE)
update_flags |= M.adjustBrainLoss(1, FALSE)
M.emote("cry")
return list(effect, update_flags)
if(severity == 2)
if(effect <= 2)
M.visible_message(
"<span class='warning'>[M] sways and falls over!</span>",
"<span class='warning'>You sway and fall over!</span>"
)
update_flags |= M.adjustBruteLoss(3, FALSE)
update_flags |= M.adjustBrainLoss(3, FALSE)
M.Weaken(16 SECONDS)
M.emote("faint")
else if(effect <= 4)
M.visible_message(
"<span class='danger'>Large cracks appear on [M]'s casing and the surrounding area starts to melt!</span>",
"<span class='userdanger'>Large cracks appear on your casing and the surrounding area starts to melt!</span>"
)
update_flags |= M.adjustBruteLoss(25, FALSE)
update_flags |= M.adjustFireLoss(25, FALSE) // We can't husk a robot. So we substitute with some extra melt damage.
M.emote("scream")
M.emote("faint")
else if(effect <= 7)
M.emote("shiver")
M.bodytemperature -= 70
return list(effect, update_flags)
// Robot Meth.
/datum/reagent/lube/ultra
name = "Ultra-Lube"
id = "ultralube"
@@ -1209,7 +1336,7 @@
update_flags |= M.adjustBrainLoss(3, FALSE)
return list(effect, update_flags)
//Surge: crank
// Robot Crank.
/datum/reagent/surge
name = "Surge"
id = "surge"
@@ -1226,7 +1353,6 @@
goal_department = "Science"
goal_difficulty = REAGENT_GOAL_HARD
/datum/reagent/surge/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
var/recent_consumption = holder.addiction_threshold_accumulated[type]

View File

@@ -152,3 +152,21 @@
required_reagents = list("thermite" = 3, "uranium" = 1, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 6
mix_message = "The mixture congeals into a metallic green gel that crackles with electrical activity."
/datum/chemical_reaction/w33d
name = "W33D"
id = "w33d"
result = "w33d"
required_reagents = list("synthanol" = 1, "oil" = 1, "aluminum" = 1)
result_amount = 3
mix_message = "The mixture bubbles into a vibrant green oil with a musky smell."
/datum/chemical_reaction/grokodil
name = "Grokodil"
id = "grokodil"
result = "grokodil"
required_reagents = list("mutadone" = 1, "heparin" = 1, "cleaner" = 1, "phenol" = 1, "w33d" = 1)
result_amount = 5
mix_message = "A semi-solid black powder crashes out of the solution."
min_temp = T0C + 100
mix_sound = 'sound/goonstation/misc/fuse.ogg'