diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm
index 64079f0fddc..8ba67750c06 100644
--- a/code/datums/diseases/gbs.dm
+++ b/code/datums/diseases/gbs.dm
@@ -38,4 +38,16 @@
if(prob(50))
affected_mob.gib()
else
- return
\ No newline at end of file
+ return
+
+/datum/disease/gbs/curable
+ name = "Non-Contagious GBS"
+ stage_prob = 5
+ spread_text = "Non-Contagious"
+ spread_flags = SPECIAL
+ cure_text = "Cryoxadone"
+ cures = list("cryoxadone")
+ cure_chance = 10
+ agent = "gibbis"
+ spread_flags = NON_CONTAGIOUS
+ disease_flags = CURABLE
\ No newline at end of file
diff --git a/code/datums/diseases/kuru.dm b/code/datums/diseases/kuru.dm
new file mode 100644
index 00000000000..67cfd3e8693
--- /dev/null
+++ b/code/datums/diseases/kuru.dm
@@ -0,0 +1,51 @@
+/datum/disease/kuru
+ name = "Space Kuru"
+ max_stages = 4
+ stage_prob = 5
+ spread_text = "Non-Contagious"
+ spread_flags = SPECIAL
+ cure_text = "Incurable"
+ agent = "Prions"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ desc = "Uncontrollable laughing."
+ severity = BIOHAZARD
+ spread_flags = NON_CONTAGIOUS
+
+/datum/disease/kuru/stage_act()
+ ..()
+ switch(stage)
+ if(1)
+ if(prob(50))
+ affected_mob.emote("laugh")
+ if(prob(50))
+ affected_mob.Jitter(25)
+ if(2)
+ if (prob(50))
+ affected_mob.visible_message("[affected_mob] laughs uncontrollably!")
+ affected_mob.Stun(10)
+ affected_mob.Weaken(10)
+ affected_mob.Jitter(250)
+ affected_mob.drop_l_hand()
+ affected_mob.drop_r_hand()
+ if(3)
+ if(prob(25))
+ to_chat(affected_mob, "You feel like you are about to drop dead!")
+ to_chat(affected_mob, "Your body convulses painfully!")
+ affected_mob.drop_l_hand()
+ affected_mob.drop_r_hand()
+ affected_mob.adjustBruteLoss(5)
+ affected_mob.adjustOxyLoss(5)
+ affected_mob.Stun(10)
+ affected_mob.Weaken(10)
+ affected_mob.Jitter(250)
+ affected_mob.visible_message("[affected_mob] laughs uncontrollably!")
+ if(4)
+ if(prob(25))
+ to_chat(affected_mob, "You feel like you are going to die!")
+ affected_mob.adjustOxyLoss(75)
+ affected_mob.adjustBruteLoss(75)
+ affected_mob.drop_l_hand()
+ affected_mob.drop_r_hand()
+ affected_mob.Stun(10)
+ affected_mob.Weaken(10)
+ affected_mob.visible_message("[affected_mob] laughs uncontrollably!")
\ No newline at end of file
diff --git a/code/datums/diseases/vampire.dm b/code/datums/diseases/vampire.dm
new file mode 100644
index 00000000000..dbcc9bbb3c0
--- /dev/null
+++ b/code/datums/diseases/vampire.dm
@@ -0,0 +1,34 @@
+/datum/disease/vampire
+ name = "Grave Fever"
+ max_stages = 3
+ stage_prob = 5
+ spread_text = "Non-Contagious"
+ spread_flags = SPECIAL
+ cure_text = "Antibiotics"
+ cures = list("spaceacillin")
+ agent = "Grave Dust"
+ cure_chance = 20
+ viable_mobtypes = list(/mob/living/carbon/human)
+ severity = DANGEROUS
+ disease_flags = CURABLE
+ spread_flags = NON_CONTAGIOUS
+
+/datum/disease/vampire/stage_act()
+ ..()
+ var/toxdamage = stage * 2
+ var/stuntime = stage * 2
+
+ if(prob(10))
+ affected_mob.emote(pick("cough","groan", "gasp"))
+ affected_mob.losebreath++
+
+ if(prob(15))
+ if(prob(33))
+ to_chat(affected_mob, "You feel sickly and weak.")
+ affected_mob.slowed += 3
+ affected_mob.adjustToxLoss(toxdamage)
+
+ if(prob(5))
+ to_chat(affected_mob, "Your joints ache horribly!")
+ affected_mob.Weaken(stuntime)
+ affected_mob.Stun(stuntime)
\ No newline at end of file
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index f6295599199..cc3c176ec17 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -302,7 +302,7 @@ var/list/uplink_items = list()
reference = "TPB"
item = /obj/item/weapon/reagent_containers/glass/bottle/traitor
cost = 2
- job = list("Scientist","Research Director","Chief Medical Officer","Medical Doctor","Psychiatrist","Chemist","Paramedic","Virologist","Bartender")
+ job = list("Research Director","Chief Medical Officer","Medical Doctor","Psychiatrist","Paramedic","Virologist","Bartender")
// DANGEROUS WEAPONS
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index a7e470ef056..bc7ba9276f5 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -192,8 +192,8 @@
/obj/effect/proc_holder/spell/vampire/targetted/disease
name = "Diseased Touch (100)"
- desc = "Touches your victim with infected blood giving them appendicitis, which will, left untreated, cause a slow death by poison."
- gain_desc = "You have gained the Diseased Touch ability which causes those you touch to die unless treated medically."
+ desc = "Touches your victim with infected blood giving them Grave Fever, which will, left untreated, causes toxic building and frequent collapsing."
+ gain_desc = "You have gained the Diseased Touch ability which causes those you touch to become weak unless treated medically."
action_icon_state = "vampire_disease"
required_blood = 100
@@ -204,7 +204,7 @@
if(!affects(target))
to_chat(usr, "They seem to be unaffected.")
continue
- var/datum/disease/D = new /datum/disease/appendicitis //someone should probably make a better virus for this
+ var/datum/disease/D = new /datum/disease/vampire
target.ForceContractDisease(D)
/obj/effect/proc_holder/spell/vampire/mob_aoe/glare
diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm
index 22eb55e150e..8bc5b265466 100644
--- a/code/game/objects/items/contraband.dm
+++ b/code/game/objects/items/contraband.dm
@@ -29,35 +29,35 @@
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
-
/obj/item/weapon/reagent_containers/food/pill/random_drugs
name = "pill"
- desc = ""
+ desc = "A cocktail of illicit designer drugs, who knows what might be in here."
/obj/item/weapon/reagent_containers/food/pill/random_drugs/New()
..()
icon_state = "pill" + pick("2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20")
- name = pick("lunar","vorpal","hardcore","willow", "void","loopy","electro", "cyber","heavy", "ninja", "hydro", "blue", "red", "green", "purple", "strong", "divine","carp" ,"deadly","dead","vicious" ,"wild" ,"demon", "chill", "solid", "liquid", "crazy", "super", "hyper", "space", "wizard", "rainbow", "star", "turbo", "prism", "sticky") + " " + pick("jack","zero","null","beat","nip","bubbles" ,"ice","medicine","venom","shock","solar" ,"spice" ,"shredder", "heart" , "heat", "pill","hopper","scum","fruit", "bolt", "deck", "butter", "runoff", "grease", "flair", "sweat", "zone", "blast")
+ name = "[pick_list("chemistry_tools.json", "CYBERPUNK_drug_prefixes")] [pick_list("chemistry_tools.json", "CYBERPUNK_drug_suffixes")]"
- reagents.add_reagent(pick("pancuronium","neurotoxin","frostoil", "toxin","morphine", "carpotoxin", "hippiesdelight","methamphetamine","haloperidol" , "hydrocodone", "psilocybin", "lsd", "capsaicin", "space_drugs" , "epinephrine", "serotrotium"), pick(5,7,10,13,15))
- reagents.add_reagent(pick("pancuronium","neurotoxin","frostoil", "toxin","morphine", "carpotoxin", "hippiesdelight","methamphetamine","haloperidol" ,"hydrocodone", "psilocybin", "lsd", "capsaicin", "space_drugs" , "epinephrine", "serotrotium"), pick(5,7,10,13,15))
- reagents.add_reagent(pick("pancuronium","neurotoxin","frostoil", "toxin","morphine", "carpotoxin", "hippiesdelight","methamphetamine","haloperidol" , "hydrocodone", "psilocybin", "lsd", "capsaicin", "space_drugs" , "epinephrine", "serotrotium"), pick(5,7,10,13,15))
+ var/primaries = rand(1,3)
+ var/adulterants = rand(2,4)
+
+ while(primaries > 0)
+ primaries--
+ reagents.add_reagent(pick_list("chemistry_tools.json", "CYBERPUNK_drug_primaries"), 6)
+ while(adulterants > 0)
+ adulterants--
+ reagents.add_reagent(pick_list("chemistry_tools.json", "CYBERPUNK_drug_adulterants"), 3)
/obj/item/weapon/storage/pill_bottle/random_drug_bottle
- name = "odd pill bottle"
- desc = "You're not sure if you trust the contents of this bottle..."
+ name = "pill bottle (???)"
+ desc = "Huh."
/obj/item/weapon/storage/pill_bottle/random_drug_bottle/New()
..()
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
- new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src )
+ for(var/i in 1 to 5)
+ new /obj/item/weapon/reagent_containers/food/pill/random_drugs(src)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 6a863bcc60f..25ade73eb38 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -949,6 +949,9 @@ obj/item/toy/cards/deck/syndicate/black
/obj/item/toy/plushie/attack(mob/M as mob, mob/user as mob)
playsound(loc, poof_sound, 20, 1) // Play the whoosh sound in local area
+ if(iscarbon(M))
+ if(prob(10))
+ M.reagents.add_reagent("hugs", 10)
return ..()
/obj/item/toy/plushie/attack_self(mob/user as mob)
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index f40887f845a..d7ce6d9f49a 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -40,7 +40,7 @@
seed_name = "ghost pepper"
display_name = "ghost pepper plants"
mutants = null
- chems = list("capsaicin" = list(8,2), "condensedcapsaicin" = list(4,4), "plantmatter" = list(1,50))
+ chems = list("capsaicin" = list(8,2), "condensedcapsaicin" = list(4,4), "ghostchilijuice" = list(4,4), "plantmatter" = list(1,50))
kitchen_tag = "ghostchili"
preset_icon = "ghostchilipepper"
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 5278f0cc723..d44bfbbb27f 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -12,6 +12,8 @@
if(embedded_flag)
handle_embedded_objects() //Moving with objects stuck in you can cause bad times.
+ if(slowed)
+ tally += 10
var/health_deficiency = (maxHealth - health + staminaloss)
if(reagents)
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 7e70e3a613f..c3c64c1c696 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -111,6 +111,7 @@
handle_slurring()
handle_paralysed()
handle_sleeping()
+ handle_slowed()
/mob/living/proc/handle_stunned()
@@ -160,7 +161,10 @@
clear_alert("asleep")
return sleeping
-
+/mob/living/proc/handle_slowed()
+ if(slowed)
+ slowed = max(slowed-1, 0)
+ return slowed
/mob/living/proc/handle_disabilities()
//Eyes
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index dd47a9cbcb6..175f3d186c4 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -333,7 +333,7 @@
C.unEquip(C.legcuffed)
C.legcuffed = initial(C.legcuffed)
C.update_inv_legcuffed()
-
+
if(C.reagents)
for(var/datum/reagent/R in C.reagents.reagent_list)
C.reagents.clear_reagents()
@@ -358,12 +358,14 @@
SetParalysis(0)
SetStunned(0)
SetWeakened(0)
+ slowed = 0
losebreath = 0
dizziness = 0
jitteriness = 0
confused = 0
drowsyness = 0
radiation = 0
+ druggy = 0
nutrition = 400
bodytemperature = 310
sdisabilities = 0
@@ -826,3 +828,11 @@
butcher_results.Remove(path) //In case you want to have things like simple_animals drop their butcher results on gib, so it won't double up below.
visible_message("[user] butchers [src].")
gib()
+
+/mob/living/movement_delay()
+ var/tally = 0
+
+ if(slowed)
+ tally += 10
+
+ return tally
\ No newline at end of file
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 8b4b39e006a..bc09aa11a1b 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -98,6 +98,7 @@
var/paralysis = 0.0
var/stunned = 0.0
var/weakened = 0.0
+ var/slowed = 0
var/losebreath = 0.0//Carbon
var/intent = null//Living
var/shakecamera = 0
diff --git a/code/modules/reagents/newchem/disease.dm b/code/modules/reagents/newchem/disease.dm
index be1672434e4..aa0a2db6ae0 100644
--- a/code/modules/reagents/newchem/disease.dm
+++ b/code/modules/reagents/newchem/disease.dm
@@ -63,8 +63,8 @@
..()
/datum/reagent/salmonella
- name = "Salmonella "
- id = "salmonella "
+ name = "Salmonella"
+ id = "salmonella"
description = "A nasty bacteria found in spoiled food."
reagent_state = LIQUID
color = "#1E4600"
@@ -74,6 +74,63 @@
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
..()
+/datum/reagent/gibbis
+ name = "Gibbis"
+ id = "gibbis"
+ description = "Liquid gibbis."
+ reagent_state = LIQUID
+ color = "#FF0000"
+
+/datum/reagent/gibbis/on_mob_life(var/mob/living/carbon/M as mob)
+ if(!M) M = holder.my_atom
+ if(volume > 2.5)
+ M.ForceContractDisease(new /datum/disease/gbs/curable(0))
+ ..()
+
+/datum/reagent/prions
+ name = "Prions"
+ id = "prions"
+ description = "A disease-causing agent that is neither bacterial nor fungal nor viral and contains no genetic material."
+ reagent_state = LIQUID
+ color = "#FFFFFF"
+
+/datum/reagent/prions/on_mob_life(var/mob/living/carbon/M as mob)
+ if(!M) M = holder.my_atom
+ if(volume > 4.5)
+ M.ForceContractDisease(new /datum/disease/kuru(0))
+ ..()
+
+/datum/reagent/grave_dust
+ name = "Grave Dust"
+ id = "grave_dust"
+ description = "Moldy old dust taken from a grave site."
+ reagent_state = LIQUID
+ color = "#465046"
+
+/datum/reagent/grave_dust/on_mob_life(var/mob/living/carbon/M as mob)
+ if(!M) M = holder.my_atom
+ if(volume > 4.5)
+ M.ForceContractDisease(new /datum/disease/vampire(0))
+ ..()
+
+/datum/reagent/heartworms
+ name = "Space heartworms"
+ id = "heartworms"
+ description = "Aww, gross! These things can't be good for your heart. They're gunna eat it!"
+ reagent_state = SOLID
+ color = "#925D6C"
+
+/datum/reagent/heartworms/on_mob_life(var/mob/living/carbon/M as mob)
+ if(!M) M = holder.my_atom
+ if(volume > 4.5)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ var/obj/item/organ/internal/heart/ate_heart = H.get_int_organ(/obj/item/organ/internal/heart)
+ if(ate_heart)
+ ate_heart.remove(H)
+ qdel(ate_heart)
+ ..()
+
/datum/reagent/spore
name = "Blob Spores"
id = "spore"
diff --git a/code/modules/reagents/newchem/drinks.dm b/code/modules/reagents/newchem/drinks.dm
index 323bb24e832..01920c617c3 100644
--- a/code/modules/reagents/newchem/drinks.dm
+++ b/code/modules/reagents/newchem/drinks.dm
@@ -67,6 +67,56 @@
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
+/datum/reagent/ethanol/dragons_breath
+ name = "Dragon's Breath"
+ id = "dragonsbreath"
+ description = "Possessing this stuff probably breaks the Geneva convention."
+ reagent_state = LIQUID
+ color = "#DC0000"
+ alcohol_perc = 1
+
+/datum/reagent/ethanol/dragons_breath/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+ if(method == INGEST && prob(20))
+ if(M.on_fire)
+ M.adjust_fire_stacks(3)
+
+/datum/reagent/ethanol/dragons_breath/on_mob_life(var/mob/living/M as mob)
+ if(!M) M = holder.my_atom
+ if(M.reagents.has_reagent("milk"))
+ to_chat(M, "The milk stops the burning. Ahhh.")
+ M.reagents.del_reagent("milk")
+ M.reagents.del_reagent("dragonsbreath")
+ return
+ if(prob(8))
+ to_chat(M, "Oh god! Oh GODD!!")
+ if(prob(50))
+ to_chat(M, "Your throat burns terribly!")
+ M.emote(pick("scream","cry","choke","gasp"))
+ M.Stun(1)
+ if(prob(8))
+ to_chat(M, "Why!? WHY!?")
+ if(prob(8))
+ to_chat(M, "ARGHHHH!")
+ if(prob(2 * volume))
+ to_chat(M, "OH GOD OH GOD PLEASE NO!!")
+ if(M.on_fire)
+ M.adjust_fire_stacks(5)
+ if(prob(50))
+ to_chat(M, "IT BURNS!!!!")
+ M.visible_message("[M] is consumed in flames!")
+ M.dust()
+ return
+ ..()
+
+/datum/chemical_reaction/dragons_breath
+ name = "Dragon's Breath"
+ id = "dragonsbreath"
+ result = "dragonsbreath"
+ required_reagents = list("whiskey" = 1, "phlogiston" = 1, "pyrosium" = 1, "fuel" = 1, "ghostchilijuice"= 1)
+ result_amount = 1
+ mix_message = "A tiny mushroom cloud erupts from the container. That's not worrying at all!"
+ mix_sound = 'sound/effects/meteorimpact.ogg'
+
// ROBOT ALCOHOL PAST THIS POINT
// WOOO!
diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm
index e86ed8a2b11..e8b5ed3f681 100644
--- a/code/modules/reagents/newchem/food.dm
+++ b/code/modules/reagents/newchem/food.dm
@@ -601,3 +601,44 @@ datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vol
if(!H.heart_attack)
H.heart_attack = 1
..()
+
+/datum/reagent/ghost_chili_juice
+ name = "Ghost chili juice"
+ id = "ghostchilijuice"
+ description = "Juice from the universe's hottest chilli. Do not consume."
+ reagent_state = LIQUID
+ color = "#FF7F32"
+
+/datum/reagent/ghost_chili_juice/on_mob_life(var/mob/living/M as mob)
+ if(!M) M = holder.my_atom
+ if(M.reagents.has_reagent("milk"))
+ to_chat(M, "The milk stops the burning. Ahhh.")
+ M.reagents.del_reagent("milk")
+ M.reagents.del_reagent("ghostchilijuice")
+ return
+ if(prob(8))
+ to_chat(M, "Oh god! Oh GODD!!")
+ if(prob(50))
+ to_chat(M, "Your throat burns furiously!")
+ M.emote(pick("scream","cry","choke","gasp"))
+ M.Stun(1)
+ if(prob(8))
+ to_chat(M, "Why!? WHY!?")
+ if(prob(8))
+ to_chat(M, "ARGHHHH!")
+ if(prob(33))
+ M.visible_message("[M] suddenly and violently vomits!")
+ M.fakevomit(no_text = 1)
+ to_chat(M, "Thank goodness. You're not sure how long you could have held out with heat that intense!")
+ M.reagents.del_reagent("ghostchilijuice")
+ return
+ if(prob(10))
+ to_chat(M, "OH GOD OH GOD PLEASE NO!!")
+ if(M.on_fire)
+ M.adjust_fire_stacks(5)
+ if(prob(50))
+ to_chat(M, "IT BURNS!!!!")
+ M.visible_message("[M] is consumed in flames!")
+ M.dust()
+ return
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm
index bc319a9b6bd..aca5897735c 100644
--- a/code/modules/reagents/newchem/medicine.dm
+++ b/code/modules/reagents/newchem/medicine.dm
@@ -800,6 +800,7 @@ datum/reagent/stimulants/on_mob_life(var/mob/living/M as mob)
M.adjustBruteLoss(-10*REM)
M.adjustFireLoss(-10*REM)
M.setStaminaLoss(0)
+ M.slowed = 0
M.dizziness = max(0,M.dizziness-10)
M.drowsyness = max(0,M.drowsyness-10)
M.confused = 0
diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm
index c26d8bbe983..7ef7dff6ff5 100644
--- a/code/modules/reagents/newchem/other.dm
+++ b/code/modules/reagents/newchem/other.dm
@@ -351,6 +351,52 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
required_reagents = list("sodium" = 1, "hydrogen" = 1, "oxygen" = 1)
result_amount = 3
+/datum/reagent/hugs
+ name = "Pure hugs"
+ id = "hugs"
+ description = "Hugs, in liquid form. Yes, the concept of a hug. As a liquid. This makes sense in the future."
+ reagent_state = LIQUID
+ color = "#FF97B9"
+
+/datum/reagent/love
+ name = "Pure love"
+ id = "love"
+ description = "What is this emotion you humans call \"love?\" Oh, it's this? This is it? Huh, well okay then, thanks."
+ reagent_state = LIQUID
+ color = "#FF83A5"
+
+/datum/reagent/love/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+ to_chat(M, "You feel loved!")
+
+/datum/reagent/love/on_mob_life(var/mob/living/M as mob)
+ if(!M) M = holder.my_atom
+
+ if(M.a_intent == I_HARM)
+ M.a_intent = I_HELP
+
+ if(prob(8))
+ var/lovely_phrase = pick("appreciated", "loved", "pretty good", "really nice", "pretty happy with yourself, even though things haven't always gone as well as they could")
+ to_chat(M, "You feel [lovely_phrase].")
+
+ else if(!M.restrained())
+ for(var/mob/living/carbon/C in orange(1, M))
+ if(C)
+ if(C == M)
+ continue
+ if(!C.stat)
+ M.visible_message("[M] gives [C] a [pick("hug","warm embrace")].")
+ playsound(get_turf(M), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ break
+ ..()
+
+/datum/chemical_reaction/love
+ name = "pure love"
+ id = "love"
+ result = "love"
+ required_reagents = list("hugs" = 1, "chocolate" = 1)
+ result_amount = 2
+ mix_message = "The substance gives off a lovely scent!"
+
///Alchemical Reagents
datum/reagent/eyenewt
diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm
index 4c7f75829e0..ae8b80ac1cd 100644
--- a/code/modules/reagents/newchem/toxins.dm
+++ b/code/modules/reagents/newchem/toxins.dm
@@ -397,6 +397,15 @@
..()
return
+/datum/chemical_reaction/initropidril
+ name = "Initropidril"
+ id = "initropidril"
+ result = "initropidril"
+ required_reagents = list("crank" = 1, "histamine" = 1, "krokodil" = 1, "bath_salts" = 1, "atropine" = 1, "nicotine" = 1, "morphine" = 1)
+ result_amount = 4
+ mix_message = "A sweet and sugary scent drifts from the unpleasant milky substance."
+
+
/datum/reagent/concentrated_initro
name = "Concentrated Initropidril"
id = "concentrated_initro"
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 31b6ca73fd0..902892d3f7e 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -787,7 +787,7 @@
New()
..()
reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("mannitol", 6)
+ reagents.add_reagent("prions", 10)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/ghostburger
diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm
index 3079a5286ec..ca4b15fc211 100644
--- a/code/modules/reagents/reagent_containers/glass/bottle.dm
+++ b/code/modules/reagents/reagent_containers/glass/bottle.dm
@@ -299,7 +299,7 @@
New()
..()
- reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide","spidereggs","nanomachines"), 40)
+ reagents.add_reagent(pick_list("chemistry_tools.json", "traitor_poison_bottle"), 40)
/obj/item/weapon/reagent_containers/glass/bottle/plasma
name = "plasma dust bottle"
diff --git a/paradise.dme b/paradise.dme
index 11e0b205f71..ea5ff12f619 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -223,12 +223,14 @@
#include "code\datums\diseases\fluspanish.dm"
#include "code\datums\diseases\food_poisoning.dm"
#include "code\datums\diseases\gbs.dm"
+#include "code\datums\diseases\kuru.dm"
#include "code\datums\diseases\magnitis.dm"
#include "code\datums\diseases\pierrot_throat.dm"
#include "code\datums\diseases\retrovirus.dm"
#include "code\datums\diseases\rhumba_beat.dm"
#include "code\datums\diseases\transformation.dm"
#include "code\datums\diseases\tuberculosis.dm"
+#include "code\datums\diseases\vampire.dm"
#include "code\datums\diseases\wizarditis.dm"
#include "code\datums\diseases\advance\advance.dm"
#include "code\datums\diseases\advance\presets.dm"
diff --git a/strings/chemistry_tools.json b/strings/chemistry_tools.json
new file mode 100644
index 00000000000..28bfe60010b
--- /dev/null
+++ b/strings/chemistry_tools.json
@@ -0,0 +1,474 @@
+{
+ "CYBERPUNK_drug_prefixes": [
+ "ace",
+ "acid",
+ "android",
+ "angel",
+ "arse",
+ "astro",
+ "atomic",
+ "azimuth",
+ "bandit",
+ "base",
+ "bear",
+ "big",
+ "bit",
+ "blood",
+ "blue",
+ "bog",
+ "borg",
+ "bronx",
+ "buffalo",
+ "butterfly",
+ "cactus",
+ "cancer",
+ "cat",
+ "chaos",
+ "cherub",
+ "cloud",
+ "crazy",
+ "creamy",
+ "crispy",
+ "cryo",
+ "crypto",
+ "crystal",
+ "cyber",
+ "dad's",
+ "dank",
+ "dapper",
+ "dead",
+ "death",
+ "deep",
+ "demon",
+ "desert",
+ "devil",
+ "discharge",
+ "disco",
+ "dog",
+ "dragon",
+ "duck",
+ "electro",
+ "evil",
+ "exo",
+ "exotic",
+ "farty",
+ "flux",
+ "flying",
+ "freak",
+ "freckle",
+ "fusion",
+ "gentlemen's",
+ "george",
+ "ghost",
+ "giga",
+ "glow",
+ "goon",
+ "grandma's",
+ "hardcore",
+ "harlem",
+ "heather",
+ "heavenly",
+ "hell",
+ "hungry",
+ "hydro",
+ "ice",
+ "india",
+ "iron",
+ "jazz",
+ "jelly",
+ "jersey",
+ "jungle",
+ "knockout",
+ "liquid",
+ "loony",
+ "loopy",
+ "lucky",
+ "lunar",
+ "macro",
+ "mad",
+ "magic",
+ "mama's",
+ "mars",
+ "marsh",
+ "mega",
+ "meteor",
+ "micro",
+ "monday",
+ "monkey",
+ "moon",
+ "motor",
+ "mountain",
+ "murder",
+ "naughty",
+ "necro",
+ "neon",
+ "nice",
+ "night",
+ "ninja",
+ "nuke",
+ "omega",
+ "omni",
+ "pain",
+ "paranoid",
+ "plasma",
+ "prism",
+ "puffer",
+ "puffy",
+ "quirky",
+ "racist",
+ "rainbow",
+ "red",
+ "rift",
+ "rock",
+ "rough",
+ "samurai",
+ "scan",
+ "secret",
+ "shitty",
+ "sick",
+ "sicknasty",
+ "silver",
+ "sine",
+ "skull",
+ "sky",
+ "slime",
+ "slimy",
+ "smooth",
+ "solar",
+ "solid",
+ "space",
+ "special",
+ "spotty",
+ "star",
+ "sticky",
+ "stray",
+ "swamp",
+ "tachyon",
+ "tech",
+ "techno",
+ "troll",
+ "turbo",
+ "turkey",
+ "uber",
+ "ultra",
+ "uncle's",
+ "uncle",
+ "unicorn",
+ "vacuum",
+ "vampire",
+ "vile",
+ "viral",
+ "void",
+ "volcano",
+ "vorpal",
+ "watt",
+ "wicked",
+ "willow",
+ "wizard",
+ "wobbly",
+ "yellow",
+ "zesty",
+ "zeta",
+ "zip",
+ "zone",
+ "parrot"
+ ],
+ "CYBERPUNK_drug_suffixes": [
+ "2000",
+ "420",
+ "9",
+ "99",
+ "aftershave",
+ "balls",
+ "bang",
+ "bass",
+ "beans",
+ "beat",
+ "beep",
+ "bees",
+ "biscuits",
+ "bit",
+ "blit",
+ "blot",
+ "blue",
+ "bones",
+ "boop",
+ "booster",
+ "brawn",
+ "bread",
+ "bright",
+ "bubbles",
+ "bullet",
+ "burgers",
+ "butter",
+ "buttons",
+ "buzz",
+ "byte",
+ "ceramique",
+ "chasers",
+ "cheese",
+ "chill",
+ "chizz",
+ "clap",
+ "coins",
+ "cooking",
+ "crack",
+ "crush",
+ "dark",
+ "data",
+ "diablo",
+ "dreck",
+ "drool",
+ "drugs",
+ "dust",
+ "eels",
+ "eggs",
+ "fire",
+ "flash",
+ "flux",
+ "giblets",
+ "goblins",
+ "gold",
+ "goop",
+ "grease",
+ "green",
+ "grinder",
+ "gunge",
+ "hammer",
+ "hash",
+ "hog",
+ "hook",
+ "hounds",
+ "ice",
+ "ink",
+ "itch",
+ "jack",
+ "jane",
+ "jerks",
+ "jones",
+ "junk",
+ "kick",
+ "lasagne",
+ "lightning",
+ "lock",
+ "max",
+ "meat",
+ "medicine",
+ "melons",
+ "milk",
+ "mollies",
+ "mondays",
+ "music",
+ "nine",
+ "nip",
+ "nuggets",
+ "nugs",
+ "null",
+ "particulars",
+ "pepper",
+ "pies",
+ "ping",
+ "poofs",
+ "pot",
+ "powder",
+ "puffs",
+ "punch",
+ "quake",
+ "quarks",
+ "red",
+ "reef",
+ "riot",
+ "ripper",
+ "runoff",
+ "saliva",
+ "sass",
+ "saturdays",
+ "sauce",
+ "scum",
+ "shaker",
+ "shank",
+ "shit",
+ "shock",
+ "shredder",
+ "slurm",
+ "smash",
+ "smoke",
+ "smokes",
+ "smuds",
+ "snap",
+ "snow",
+ "spank",
+ "spice",
+ "spit",
+ "stank",
+ "stealth",
+ "sticks",
+ "sting",
+ "stink",
+ "sundays",
+ "sushi",
+ "tango",
+ "tears",
+ "theta",
+ "torpedo",
+ "tuber",
+ "turbo",
+ "volts",
+ "wafers",
+ "wave",
+ "weed",
+ "white",
+ "wiggle",
+ "wisps",
+ "zap",
+ "zero",
+ "zeta",
+ "zip"
+ ],
+ "CYBERPUNK_drug_primaries": [
+ "bath_salts",
+ "crank",
+ "krokodil",
+ "methamphetamine",
+ "lsd",
+ "psilocybin",
+ "space_drugs",
+ "thc",
+ "jenkem",
+ "nicotine",
+ "haloperidol",
+ "ephedrine",
+ "epinephrine",
+ "omnizine",
+ "morphine",
+ "ketamine",
+ "diphenhydramine"
+ ],
+ "CYBERPUNK_drug_adulterants": [
+ "mercury",
+ "lithium",
+ "plasma",
+ "fuel",
+ "itching_powder",
+ "capsaicin",
+ "histamine",
+ "ethanol",
+ "diethylamine",
+ "atrazine",
+ "clf3",
+ "aluminum",
+ "sugar",
+ "soybeanoil",
+ "hydrogenated_soybeanoil",
+ "phlogiston",
+ "cryostylane",
+ "toxin",
+ "neurotoxin2",
+ "sulfur",
+ "saltpetre",
+ "cyanide",
+ "formaldehyde",
+ "sacid",
+ "facid",
+ "lipolicide",
+ "mutagen",
+ "pancuronium",
+ "radium",
+ "uranium",
+ "polonium",
+ "sodium_thiopental",
+ "triplepiss",
+ "hairgrownium",
+ "iron",
+ "sulfonal",
+ "glowing_slurry",
+ "toxic_slurry",
+ "carpet",
+ "oil",
+ "ammonia",
+ "acetone",
+ "ectoplasm",
+ "fungus",
+ "cleaner",
+ "blood",
+ "ash",
+ "synthflesh",
+ "toiletwater",
+ "porktonium",
+ "corn_starch",
+ "corn_syrup",
+ "vhfcs",
+ "gravy",
+ "msg",
+ "egg",
+ "????",
+ "suicider",
+ "moonshine",
+ "prions",
+ "grave_dust",
+ "nanomachines",
+ "chlorine",
+ "fluorine"
+ ],
+ "CYBERPUNK_drug_adulterants_safe": [
+ "mercury",
+ "lithium",
+ "plasma",
+ "fuel",
+ "capsaicin",
+ "ethanol",
+ "diethylamine",
+ "atrazine",
+ "aluminum",
+ "sugar",
+ "soybeanoil",
+ "phlogiston",
+ "cryostylane",
+ "sulfur",
+ "saltpetre",
+ "lipolicide",
+ "triplepiss",
+ "hairgrownium",
+ "iron",
+ "sulfonal",
+ "carpet",
+ "oil",
+ "ammonia",
+ "acetone",
+ "ectoplasm",
+ "fungus",
+ "cleaner",
+ "blood",
+ "ash",
+ "synthflesh",
+ "toiletwater",
+ "corn_starch",
+ "corn_syrup",
+ "gravy",
+ "msg",
+ "egg",
+ "????",
+ "chlorine",
+ "fluorine"
+ ],
+ "traitor_poison_bottle": [
+ "sarin",
+ "cyanide",
+ "sulfonal",
+ "initropidril",
+ "coniine",
+ "venom",
+ "ketamine",
+ "amanitin",
+ "polonium",
+ "curare",
+ "pancuronium",
+ "sodium_thiopental",
+ "gibbis",
+ "nanomachines",
+ "prions",
+ "spidereggs",
+ "concentrated_initro",
+ "heartworms"
+ ]
+}
\ No newline at end of file