diff --git a/_maps/RandomRuins/IceRuins/icemoon_tesla_lab.dmm b/_maps/RandomRuins/IceRuins/icemoon_tesla_lab.dmm
index a6e3ef297eb9..03df02705d36 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_tesla_lab.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_tesla_lab.dmm
@@ -5252,10 +5252,6 @@
pixel_x = 11;
pixel_y = -10
},
-/obj/item/reagent_containers/syringe/contraband/bath_salts{
- pixel_y = 13;
- pixel_x = 6
- },
/obj/item/reagent_containers/hypospray/medipen/survival{
pixel_y = -12;
pixel_x = -4
@@ -5264,6 +5260,10 @@
pixel_x = -7;
pixel_y = 9
},
+/obj/item/reagent_containers/syringe/contraband/mammoth{
+ pixel_y = 11;
+ pixel_x = 5
+ },
/turf/open/floor/plasteel/white,
/area/ruin/icemoon/tesla_lab/medbay)
"vj" = (
diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm
index e4199f6282b6..013acaafde4c 100644
--- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm
+++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm
@@ -2844,16 +2844,16 @@
dir = 8
},
/obj/structure/closet/wall/directional/west,
-/obj/item/reagent_containers/syringe/contraband/bath_salts{
- pixel_y = 6;
- pixel_x = -4
- },
/obj/item/restraints/handcuffs/cable/white,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/chem_pile,
/obj/effect/decal/cleanable/blood/drip,
/obj/effect/decal/cleanable/plastic,
/obj/effect/decal/cleanable/glass,
+/obj/item/reagent_containers/syringe/contraband/mammoth{
+ pixel_y = 11;
+ pixel_x = 5
+ },
/turf/open/floor/wood{
icon_state = "wood-broken2"
},
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index c5e0505487d2..d68f37c36252 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define iszombie(A) (is_species(A, /datum/species/zombie))
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
#define ismoth(A) (is_species(A, /datum/species/moth))
-#define ishumanbasic(A) (is_species(A, /datum/species/human) && !is_species(A, /datum/species/human/krokodil_addict))
+#define ishumanbasic(A) (is_species(A, /datum/species/human))
#define iselzuose(A) (is_species(A, /datum/species/elzuose))
#define isvampire(A) (is_species(A,/datum/species/vampire))
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm
index 019ba0beaa1c..a9078e83d777 100644
--- a/code/__DEFINES/lighting.dm
+++ b/code/__DEFINES/lighting.dm
@@ -48,6 +48,7 @@
#define LIGHTING_PLANE_ALPHA_VISIBLE 255
#define LIGHTING_PLANE_ALPHA_NV_TRAIT 245
+#define LIGHTING_PLANE_ALPHA_NV_DRUG 225
#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192
/// For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell.
#define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 9b8514d8bea8..a1d8874fedc2 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -105,7 +105,6 @@
#define SPECIES_VAMPIRE "vampire"
#define SPECIES_VOX "vox"
#define SPECIES_ZOMBIE "zombie"
-#define SPECIES_GOOFZOMBIE "krokodil_zombie"
#define SPECIES_XENOMORPH "xenomorph"
#define DIGITIGRADE_NEVER 0
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 9a7c477b8b14..e0b4e2aed38e 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -138,6 +138,7 @@
// Grouped effect sources, see also code/__DEFINES/traits.dm
#define STASIS_MACHINE_EFFECT "stasis_machine"
+#define STASIS_DRUG_EFFECT "stasis_drug"
// Stasis helpers
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index cfae692cc1d5..9ee804b531c3 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -341,6 +341,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_BADTOUCH "bad_touch"
#define TRAIT_ANXIOUS "anxious"
#define TRAIT_ANALGESIA "congenital_analgesia"
+#define TRAIT_CLOUDED "clouded_eyes"
+#define TRAIT_PINPOINT_EYES "pinpoint_eyes"
+#define TRAIT_CHEMICAL_NIGHTVISION "chemical_nightvision"
+#define TRAIT_GOOD_CHEMICAL_NIGHTVISION "good_chemical_nightvision"
/// Trait granted by lipstick
#define LIPSTICK_TRAIT "lipstick_trait"
diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm
index c953ef3c8418..7ac1884c5207 100644
--- a/code/_globalvars/traits.dm
+++ b/code/_globalvars/traits.dm
@@ -149,7 +149,11 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_ANXIOUS" = TRAIT_ANXIOUS,
"TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH,
"TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE,
- "TRAIT_AIMING" = TRAIT_AIMING
+ "TRAIT_AIMING" = TRAIT_AIMING,
+ "TRAIT_CLOUDED" = TRAIT_CLOUDED,
+ "TRAIT_PINPOINT_EYES" = TRAIT_PINPOINT_EYES,
+ "TRAIT_CHEMICAL_NIGHT_VISION" = TRAIT_CHEMICAL_NIGHTVISION,
+ "TRAIT_GOOD_CHEMICAL_NIGHT_VISION" = TRAIT_GOOD_CHEMICAL_NIGHTVISION,
),
/obj/item/bodypart = list(
"TRAIT_PARALYSIS" = TRAIT_PARALYSIS
diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm
index 9c447f4ab10a..d60d38653204 100644
--- a/code/datums/brain_damage/special.dm
+++ b/code/datums/brain_damage/special.dm
@@ -203,7 +203,7 @@
/datum/brain_trauma/special/psychotic_brawling
name = "Violent Psychosis"
- desc = "Patient fights in unpredictable ways, ranging from helping his target to hitting them with brutal strength."
+ desc = "Patient fights in unpredictable ways due to re-arranged neural pathways."
scan_desc = "violent psychosis"
gain_text = "You feel unhinged..."
lose_text = "You feel more balanced."
@@ -221,7 +221,7 @@
psychotic_brawling.remove(owner)
QDEL_NULL(psychotic_brawling)
-/datum/brain_trauma/special/psychotic_brawling/bath_salts
+/datum/brain_trauma/special/psychotic_brawling/mammoth
name = "Chemical Violent Psychosis"
/datum/brain_trauma/special/tenacity
diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm
index d6cedfee04f3..b6b59bb2f8a4 100644
--- a/code/datums/martial/psychotic_brawl.dm
+++ b/code/datums/martial/psychotic_brawl.dm
@@ -15,13 +15,6 @@
var/atk_verb
switch(rand(1,8))
if(1)
- D.help_shake_act(A)
- atk_verb = "helped"
- if(2)
- A.emote("cry")
- A.Stun(20)
- atk_verb = "cried looking at"
- if(3)
if(A.grab_state >= GRAB_AGGRESSIVE)
D.grabbedby(A, 1)
else
@@ -38,7 +31,7 @@
else
log_combat(A, D, "grabbed", addition="passively")
A.setGrabState(GRAB_PASSIVE)
- if(4)
+ if(2)
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
atk_verb = "headbutt"
D.visible_message("[A] [atk_verb]s [D]!", \
@@ -51,7 +44,7 @@
D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
A.Stun(rand(10,45))
D.Stun(rand(5,30))
- if(5,6)
+ if(3,4)
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
atk_verb = pick("kick", "hit", "slam")
D.visible_message("[A] [atk_verb]s [D] with such inhuman strength that it sends [D.p_them()] flying backwards!", \
@@ -62,7 +55,7 @@
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
D.Paralyze(60)
- if(7,8)
+ else
return FALSE //Resume default behaviour
if(atk_verb)
diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm
index 8673e7aa135f..90ff2592b65f 100644
--- a/code/datums/traits/negative.dm
+++ b/code/datums/traits/negative.dm
@@ -515,7 +515,7 @@
gain_text = "You suddenly feel the craving for drugs."
lose_text = "You feel like you should kick your drug habit."
medical_record_text = "Patient has a history of hard drugs."
- var/drug_list = list(/datum/reagent/drug/crank, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs
+ var/drug_list = list(/datum/reagent/drug/crank, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs
var/datum/reagent/reagent_type //!If this is defined, reagent_id will be unused and the defined reagent type will be instead.
var/datum/reagent/reagent_instance //! actual instanced version of the reagent
var/where_drug //! Where the drug spawned
diff --git a/code/game/objects/effects/spawners/random/exotic.dm b/code/game/objects/effects/spawners/random/exotic.dm
index 4e5e5ebfb021..4cc66f19e235 100644
--- a/code/game/objects/effects/spawners/random/exotic.dm
+++ b/code/game/objects/effects/spawners/random/exotic.dm
@@ -33,10 +33,9 @@
/obj/item/lighter = 3,
/obj/item/storage/box/matches = 3,
/obj/item/reagent_containers/syringe/contraband/space_drugs = 1,
- /obj/item/reagent_containers/syringe/contraband/krokodil = 1,
/obj/item/reagent_containers/syringe/contraband/crank = 1,
/obj/item/reagent_containers/syringe/contraband/methamphetamine = 1,
- /obj/item/reagent_containers/syringe/contraband/bath_salts = 1,
+ /obj/item/reagent_containers/syringe/contraband/mammoth = 1,
/obj/item/reagent_containers/syringe/contraband/fentanyl = 1,
/obj/item/reagent_containers/syringe/contraband/morphine = 1,
/obj/item/storage/pill_bottle/happy = 1,
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index a483cd46f166..35173d24899c 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -341,7 +341,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/xeno
desc = "A Xeno Filtered brand cigarette."
- list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4)
+ list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15)
// Rollies.
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 62c33aa9665a..0fac9962f803 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -84,7 +84,7 @@
/obj/item/paper/fluff/stations/soap
name = "ancient janitorial poem"
desc = "An old paper that has passed many hands."
- default_raw_text = "The legend of the omega soap
Essence of potato. Juice, not grind.
A cactus brew, fermented into wine.
powder of monkey, to help the workload.
Some Krokodil, because meth would explode.
Nitric acid and Baldium, for organic dissolving.
A cup filled with Hooch, for sinful absolving
Some Bluespace Dust, for removal of stains.
A syringe full of Pump-up, it's security's bane.
Add a can of Space Cola, because we've been paid.
Heat as hot as you can, let the soap be your blade.
Ten units of each regent create a soap that could topple all others."
+ default_raw_text = "The legend of the omega soap
Essence of potato. Juice, not grind.
A cactus brew, fermented into wine.
powder of monkey, to help the workload.
Nitric acid and Baldium, for organic dissolving.
A cup filled with Hooch, for sinful absolving
Some Bluespace Dust, for removal of stains.
A syringe full of Pump-up, it's security's bane.
Add a can of Space Cola, because we've been paid.
Heat as hot as you can, let the soap be your blade.
Ten units of each regent create a soap that could topple all others."
/obj/item/soap/proc/decreaseUses(mob/user)
var/skillcheck = user.mind.get_skill_modifier(/datum/skill/cleaning, SKILL_SPEED_MODIFIER)
diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm
index 223a6c17f328..a3576bd63120 100644
--- a/code/game/objects/items/melee/sword.dm
+++ b/code/game/objects/items/melee/sword.dm
@@ -289,7 +289,7 @@
/datum/reagent/drug/space_drugs = 10,
/datum/reagent/drug/crank = 5,
/datum/reagent/drug/methamphetamine = 5,
- /datum/reagent/drug/bath_salts = 5,
+ /datum/reagent/drug/mammoth = 5,
/datum/reagent/drug/aranesp = 5,
/datum/reagent/drug/pumpup = 10,
/datum/reagent/medicine/omnizine = 10,
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index f0bdcff21ec3..63a836e368e3 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -485,8 +485,16 @@
/obj/item/storage/pill_bottle/finobranc
name = "bottle of finobranc tablets"
desc = "Party in the Solar Cantons, tonight."
- custom_price = 50
/obj/item/storage/pill_bottle/finobranc/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/reagent_containers/pill/finobranc(src)
+
+/obj/item/storage/pill_bottle/stardrop
+ name = "bottle of stardrop capsules"
+ desc = "Contains vision-enhancing pills."
+ custom_price = 300
+
+/obj/item/storage/pill_bottle/stardrop/PopulateContents()
+ for(var/i in 1 to 7)
+ new /obj/item/reagent_containers/pill/stardrop(src)
diff --git a/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm b/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm
index 33b6a411ac78..876424939458 100644
--- a/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm
+++ b/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm
@@ -293,6 +293,26 @@
availability_prob = 25
spawn_weighting = FALSE
+/datum/blackmarket_item/consumable/mammoth
+ name = "Mammoth Injector"
+ desc = "Found a bunch of kickass injectors hiding under the corpse of a Cliquer. Don't ask bout how they became a corpse Iunno. Doesn't matter. These things boost your strength and keep you going way too damn long..."
+ item = /obj/item/reagent_containers/hypospray/medipen/mammoth
+ price_min = 500
+ price_max = 1000
+ stock_max = 6
+ availability_prob = 40
+ spawn_weighting = FALSE
+
+/datum/blackmarket_item/consumable/rabbit
+ name = "Rabbit Injector"
+ desc = "We were bummin around towards CLIP space the other day, and saw this. Ahem. Business opportunity with a bun. Words came to words and after some serious business planning, I'm the distributer for this line for this line of designer injectors. Supposed to make you like a rabbit or somethin."
+ item = /obj/item/reagent_containers/hypospray/medipen/rabbit
+ price_min = 600
+ price_max = 800
+ stock_max = 6
+ availability_prob = 30
+ spawn_weighting = FALSE
+
/datum/blackmarket_item/consumable/finobranc
name = "Finobranc Tablets"
desc = "So get this, I know a Solarian Tgirl over the intranet, and we're chatting, and she sends me these things to try. I figure, hell yeah, try them, and got 5 days work done in one day. Now I'm sellin them. Miracle product I tell ya"
diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm
index 0fcbbf4f1794..814b7dac938d 100644
--- a/code/modules/cargo/bounties/reagent.dm
+++ b/code/modules/cargo/bounties/reagent.dm
@@ -143,7 +143,6 @@
/datum/reagent/medicine/pen_acid,\
/datum/reagent/medicine/atropine,\
/datum/reagent/drug/aranesp,\
- /datum/reagent/drug/krokodil,\
/datum/reagent/drug/methamphetamine,\
/datum/reagent/teslium,\
/datum/reagent/toxin/anacea,\
@@ -166,7 +165,7 @@
/datum/reagent/medicine/pyroxadone,\
/datum/reagent/medicine/rezadone,\
/datum/reagent/medicine/regen_jelly,\
- /datum/reagent/drug/bath_salts,\
+ /datum/reagent/drug/mammoth,\
/datum/reagent/hair_dye,\
/datum/reagent/consumable/honey,\
/datum/reagent/consumable/frostoil,\
diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm
index c8b9919746e1..9c048c87dc4b 100644
--- a/code/modules/cargo/packs/medical.dm
+++ b/code/modules/cargo/packs/medical.dm
@@ -277,6 +277,15 @@
)
crate_name = "atropine vial crate"
+/datum/supply_pack/medical/vials/stas_vial
+ name = "Stasis Vial Crate"
+ desc = "Contains a spare stasis vial, for usage in a Hypospray."
+ cost = 800
+ contains = list(
+ /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/stasis,
+ )
+ crate_name = "stasis vial crate"
+
/datum/supply_pack/medical/vials/erp_vial
name = "Radiation Purgant Vial Crate"
desc = "Contains 2 spare radiation purgant vials, for usage in a Hypospray."
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm
index cd07ce9eb45d..1d85afb62c65 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -68,7 +68,7 @@
/obj/item/reagent_containers/food/snacks/donut/chaos/Initialize()
. = ..()
- extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, /datum/reagent/drug/krokodil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco, /datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice, /datum/reagent/medicine/omnizine)
+ extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco, /datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice, /datum/reagent/medicine/omnizine)
reagents.add_reagent(extra_reagent, 3)
/obj/item/reagent_containers/food/snacks/donut/meat
diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm
index a2ea84f03777..0acd048a983a 100644
--- a/code/modules/hydroponics/grown/cannabis.dm
+++ b/code/modules/hydroponics/grown/cannabis.dm
@@ -70,9 +70,8 @@
/datum/reagent/lithium = 0.15,
/datum/reagent/medicine/atropine = 0.15,
/datum/reagent/drug/methamphetamine = 0.15,
- /datum/reagent/drug/bath_salts = 0.15,
+ /datum/reagent/drug/mammoth = 0.15,
/datum/reagent/drug/crank = 0.15,
- /datum/reagent/drug/krokodil = 0.15,
/datum/reagent/toxin/lipolicide = 0.15,
/datum/reagent/drug/nicotine = 0.1)
rarity = 69
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index bcf78e60c8d1..3058a77ad1ba 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -582,10 +582,21 @@
if(!isnull(G.lighting_alpha))
lighting_alpha = min(lighting_alpha, G.lighting_alpha)
+ if(HAS_TRAIT(src, TRAIT_NIGHT_VISION))
+ lighting_alpha = min(lighting_alpha, LIGHTING_PLANE_ALPHA_NV_TRAIT)
+
+ if(HAS_TRAIT(src, TRAIT_CHEMICAL_NIGHTVISION))
+ lighting_alpha = min(lighting_alpha, LIGHTING_PLANE_ALPHA_NV_DRUG)
+ see_in_dark = max(see_in_dark, 4)
+
if(HAS_TRAIT(src, TRAIT_THERMAL_VISION))
sight |= (SEE_MOBS)
lighting_alpha = min(lighting_alpha, LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE)
+ if(HAS_TRAIT(src, TRAIT_GOOD_CHEMICAL_NIGHTVISION))
+ lighting_alpha = min(lighting_alpha, LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE)
+ see_in_dark = max(see_in_dark, 6)
+
if(HAS_TRAIT(src, TRAIT_XRAY_VISION))
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
see_in_dark = max(see_in_dark, 8)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index c4a447b59d5b..28e3a52f656e 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -100,6 +100,10 @@
if(!(ITEM_SLOT_EYES in obscured))
if(glasses)
. += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes."
+ else if(HAS_TRAIT(src, TRAIT_CLOUDED))
+ . += span_notice("[t_His] eyes are clouded in silver.")
+ else if(HAS_TRAIT(src, TRAIT_PINPOINT_EYES))
+ . += span_warning("[t_His] pupils have diliated to pinpricks.")
//ears
if(ears && !(ITEM_SLOT_EARS in obscured))
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index d01318be0bd2..d61ea6653119 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1368,9 +1368,6 @@
/mob/living/carbon/human/species/zombie/infectious
race = /datum/species/zombie/infectious
-/mob/living/carbon/human/species/zombie/krokodil_addict
- race = /datum/species/human/krokodil_addict
-
/mob/living/carbon/human/species/ipc
race = /datum/species/ipc
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index c90cbd0dbc8f..58f735e6fa43 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -86,21 +86,4 @@
infection = new()
infection.Insert(C)
-// Your skin falls off
-/datum/species/human/krokodil_addict
- name = "\improper Human"
- id = SPECIES_GOOFZOMBIE
- examine_limb_id = SPECIES_HUMAN
- sexes = 0
- meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
- mutanttongue = /obj/item/organ/tongue/zombie
- changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
-
- species_chest = /obj/item/bodypart/chest/zombie
- species_head = /obj/item/bodypart/head/zombie
- species_l_arm = /obj/item/bodypart/l_arm/zombie
- species_r_arm = /obj/item/bodypart/r_arm/zombie
- species_l_leg = /obj/item/bodypart/leg/left/zombie
- species_r_leg = /obj/item/bodypart/leg/right/zombie
-
#undef REGENERATION_DELAY
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index 800228dabd73..46112852407b 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -10,7 +10,7 @@
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_high")
/datum/reagent/drug/space_drugs
- name = "Space drugs"
+ name = "Dropsight"
description = "An illegal chemical compound used as drug."
color = "#60A584" // rgb: 96, 165, 132
overdose_threshold = 30
@@ -111,57 +111,6 @@
..()
. = 1
-/datum/reagent/drug/krokodil
- name = "Krokodil"
- description = "Cools and calms you down. If overdosed it will deal significant Brain and Toxin damage. If addicted it will begin to deal fatal amounts of Brute damage as the subject's skin falls off."
- reagent_state = LIQUID
- color = "#0064B4"
- overdose_threshold = 20
- addiction_threshold = 15
-
-
-/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/M)
- var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
- if(prob(5))
- to_chat(M, "[high_message]")
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smacked out", /datum/mood_event/narcotic_heavy, name)
- ..()
-
-/datum/reagent/drug/krokodil/overdose_process(mob/living/M)
- M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25*REM)
- M.adjustToxLoss(0.25*REM, 0)
- ..()
- . = 1
-
-/datum/reagent/drug/krokodil/addiction_act_stage1(mob/living/M)
- M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM)
- M.adjustToxLoss(2*REM, 0)
- ..()
- . = 1
-
-/datum/reagent/drug/krokodil/addiction_act_stage2(mob/living/M)
- if(prob(25))
- to_chat(M, "Your skin feels loose...")
- ..()
-
-/datum/reagent/drug/krokodil/addiction_act_stage3(mob/living/M)
- if(prob(25))
- to_chat(M, "Your skin starts to peel away...")
- M.adjustBruteLoss(3*REM, 0)
- ..()
- . = 1
-
-/datum/reagent/drug/krokodil/addiction_act_stage4(mob/living/carbon/human/M)
- CHECK_DNA_AND_SPECIES(M)
- if(!istype(M.dna.species, /datum/species/human/krokodil_addict))
- to_chat(M, "Your skin falls off easily!")
- M.adjustBruteLoss(50*REM, 0) // holy shit your skin just FELL THE FUCK OFF
- M.set_species(/datum/species/human/krokodil_addict)
- else
- M.adjustBruteLoss(5*REM, 0)
- ..()
- . = 1
-
/datum/reagent/drug/methamphetamine
name = "Methamphetamine"
description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will become dizzy, lose motor control and eventually suffer heavy toxin damage."
@@ -234,47 +183,47 @@
..()
. = 1
-/datum/reagent/drug/bath_salts
- name = "Bath Salts"
- description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic."
+/datum/reagent/drug/mammoth
+ name = "Mammoth"
+ description = "A muscle stimulant said to turn the user into an unarmed fighting machine. Greatly increases stamina regeneration and allows the user to tackle."
reagent_state = LIQUID
color = "#FAFAFA"
overdose_threshold = 20
addiction_threshold = 10
- taste_description = "salt" // because they're bathsalts?
- var/datum/brain_trauma/special/psychotic_brawling/bath_salts/rage
+ taste_description = "chemical salts"
+ var/datum/brain_trauma/special/psychotic_brawling/mammoth/rage
-/datum/reagent/drug/bath_salts/on_mob_metabolize(mob/living/L)
+/datum/reagent/drug/mammoth/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_STUNIMMUNE, type)
ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
+ L.AddComponent(/datum/component/tackler, stamina_cost= 25, base_knockdown= 2 SECONDS, range=6, speed=1, skill_mod=2)
if(iscarbon(L))
var/mob/living/carbon/C = L
rage = new()
C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE)
-/datum/reagent/drug/bath_salts/on_mob_end_metabolize(mob/living/L)
+/datum/reagent/drug/mammoth/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type)
REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
+ if(L.GetComponent(/datum/component/tackler))
+ qdel(L.GetComponent(/datum/component/tackler))
if(rage)
QDEL_NULL(rage)
..()
-/datum/reagent/drug/bath_salts/on_mob_life(mob/living/carbon/M)
- var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
+/datum/reagent/drug/mammoth/on_mob_life(mob/living/carbon/M)
if(prob(5))
- to_chat(M, "[high_message]")
+ var/high_message = pick("Flatten them", "Crush them", "Smash them", "Kill them") //flat it. crush it. smash it. bop it.
+ to_chat(M, span_boldwarning("[high_message]"))
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "salted", /datum/mood_event/stimulant_heavy, name)
- M.adjustStaminaLoss(-5, 0)
- M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4)
+ M.adjustStaminaLoss(-10, 0)
+ if(prob(40))
+ M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2)
M.hallucination += 5
- if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
- step(M, pick(GLOB.cardinals))
- step(M, pick(GLOB.cardinals))
- ..()
. = 1
-/datum/reagent/drug/bath_salts/overdose_process(mob/living/M)
+/datum/reagent/drug/mammoth/overdose_process(mob/living/M)
M.hallucination += 5
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i in 1 to 8)
@@ -283,7 +232,7 @@
M.drop_all_held_items()
..()
-/datum/reagent/drug/bath_salts/addiction_act_stage1(mob/living/M)
+/datum/reagent/drug/mammoth/addiction_act_stage1(mob/living/M)
M.hallucination += 10
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i = 0, i < 8, i++)
@@ -292,7 +241,7 @@
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10)
..()
-/datum/reagent/drug/bath_salts/addiction_act_stage2(mob/living/M)
+/datum/reagent/drug/mammoth/addiction_act_stage2(mob/living/M)
M.hallucination += 20
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i = 0, i < 8, i++)
@@ -302,7 +251,7 @@
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10)
..()
-/datum/reagent/drug/bath_salts/addiction_act_stage3(mob/living/M)
+/datum/reagent/drug/mammoth/addiction_act_stage3(mob/living/M)
M.hallucination += 30
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i = 0, i < 12, i++)
@@ -312,7 +261,7 @@
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10)
..()
-/datum/reagent/drug/bath_salts/addiction_act_stage4(mob/living/carbon/human/M)
+/datum/reagent/drug/mammoth/addiction_act_stage4(mob/living/carbon/human/M)
M.hallucination += 30
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i = 0, i < 16, i++)
@@ -465,7 +414,7 @@
mood.mood_modifier += 1
if(ishuman(L))
var/mob/living/carbon/human/drugged = L
- drugged.physiology.do_after_speed -= 0.5
+ drugged.physiology.do_after_speed -= 0.4
/datum/reagent/drug/finobranc/on_mob_end_metabolize(mob/living/L)
..()
@@ -474,7 +423,7 @@
mood.mood_modifier -= 1
if(ishuman(L))
var/mob/living/carbon/human/drugged = L
- drugged.physiology.do_after_speed += 0.5
+ drugged.physiology.do_after_speed += 0.4
/datum/reagent/drug/finobranc/overdose_process(mob/living/M)
M.adjustOrganLoss(ORGAN_SLOT_HEART, 2)
@@ -527,7 +476,7 @@
L.adjustOrganLoss(ORGAN_SLOT_HEART, 6)
if(ishuman(L))
var/mob/living/carbon/human/drugged = L
- drugged.physiology.do_after_speed -= 0.5
+ drugged.physiology.do_after_speed -= 0.4
drugged.physiology.damage_resistance += 10
drugged.physiology.hunger_mod += 1
@@ -536,7 +485,7 @@
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/shoalmix)
if(ishuman(L))
var/mob/living/carbon/human/drugged = L
- drugged.physiology.do_after_speed += 0.5
+ drugged.physiology.do_after_speed += 0.4
drugged.physiology.damage_resistance -= 10
drugged.physiology.hunger_mod -= 1
@@ -621,3 +570,81 @@
if(prob(2))
var/eepy_message = pick("You feel so, so tired.", "You stifle a yawn.", "You really ought to rest for a bit...", "It'd be nice to lay down a bit...","Being in a bed sounds wonderful, right now...","You shake your head to stay awake, but the feeling doesn't let up.","You really want to sleep next to someone...","You keep thinking about how nice a pillow would be, right now.")
to_chat(M, span_notice("[eepy_message]"))
+
+/datum/reagent/drug/stardrop
+ name = "Stardrop"
+ description = "A vision-enhancing chemical that originated as a performance aid for industrial miners."
+ reagent_state = LIQUID
+ color = "#df71c7" //yeah its kinda pinkruple
+ overdose_threshold = 30
+ addiction_threshold = 20
+ metabolization_rate = 0.1
+ taste_description = "a distant earthiness"
+ var/vision_trait = TRAIT_CHEMICAL_NIGHTVISION
+
+/datum/reagent/drug/stardrop/on_mob_metabolize(mob/living/L)
+ ..()
+ if(iscarbon(L))
+ var/mob/living/carbon/drugged = L
+ ADD_TRAIT(drugged, TRAIT_CLOUDED, type)
+ ADD_TRAIT(drugged, TRAIT_CHEMICAL_NIGHTVISION, type)
+ drugged.update_sight()
+
+
+/datum/reagent/drug/stardrop/on_mob_end_metabolize(mob/living/L)
+ if(iscarbon(L))
+ var/mob/living/carbon/drugged = L
+ REMOVE_TRAIT(drugged, TRAIT_CHEMICAL_NIGHTVISION, type)
+ REMOVE_TRAIT(drugged, TRAIT_CLOUDED, type)
+ drugged.update_sight()
+
+/datum/reagent/drug/stardrop/on_mob_life(mob/living/carbon/M)
+ ..()
+ if(prob(5))
+ M.blur_eyes(rand(5,12))
+
+/datum/reagent/drug/stardrop/overdose_process(mob/living/M)
+ M.adjustOrganLoss(ORGAN_SLOT_EYES, 1)
+ if(prob(40))
+ M.blur_eyes(rand(3,12))
+
+/datum/reagent/drug/stardrop/addiction_act_stage1(mob/living/M)
+ if(prob(10))
+ M.blur_eyes(rand(5,12))
+ ..()
+
+/datum/reagent/drug/stardrop/addiction_act_stage2(mob/living/M)
+ if(prob(10))
+ M.blur_eyes(rand(5,12))
+ if(prob(4))
+ M.confused += 10
+ ..()
+
+/datum/reagent/drug/stardrop/addiction_act_stage3(mob/living/M)
+ if(prob(20))
+ M.blur_eyes(rand(5,12))
+ if(prob(4))
+ M.confused += 10
+ if(prob(1))
+ M.adjustOrganLoss(ORGAN_SLOT_EYES, 5)
+ ..()
+
+/datum/reagent/drug/stardrop/addiction_act_stage4(mob/living/carbon/human/M)
+ if(prob(40))
+ M.blur_eyes(rand(5,12))
+ if(prob(8))
+ M.confused += 10
+ if(prob(5))
+ M.adjustOrganLoss(ORGAN_SLOT_EYES, 3)
+ ..()
+
+/datum/reagent/drug/stardrop/starlight
+ name = "Starlight"
+ description = "A vision-enhancing chemical derived from stardrop. The original formula was a N+S recipe leaked by a GEC worker."
+ reagent_state = LIQUID
+ color = "#bc329e"
+ overdose_threshold = 17
+ addiction_threshold = 11
+ metabolization_rate = 0.2
+ vision_trait = TRAIT_GOOD_CHEMICAL_NIGHTVISION
+ taste_description = "sulpheric sweetness"
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index c614e9d65569..ef53e315b36c 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -791,6 +791,10 @@
. = 1
..()
+/datum/reagent/medicine/morphine/overdose_start(mob/living/M)
+ . = ..()
+ ADD_TRAIT(M, TRAIT_PINPOINT_EYES, type)
+
/datum/reagent/medicine/morphine/overdose_process(mob/living/M)
if(prob(33))
M.drop_all_held_items()
@@ -858,6 +862,10 @@
M.drowsyness += 1
..()
+/datum/reagent/medicine/tramal/overdose_start(mob/living/M)
+ . = ..()
+ ADD_TRAIT(M, TRAIT_PINPOINT_EYES, type)
+
/datum/reagent/medicine/tramal/overdose_process(mob/living/M)
if(prob(33))
M.Dizzy(2)
@@ -921,6 +929,10 @@
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "numb", /datum/mood_event/narcotic_heavy, name)
..()
+/datum/reagent/medicine/dimorlin/overdose_start(mob/living/M)
+ . = ..()
+ ADD_TRAIT(M, TRAIT_PINPOINT_EYES, type)
+
/datum/reagent/medicine/dimorlin/overdose_process(mob/living/M)
if(prob(33))
M.losebreath++
@@ -1167,7 +1179,7 @@
. = 1
/datum/reagent/medicine/stimulants
- name = "Stimulants"
+ name = "Indoril"
description = "Increases stun resistance and movement speed in addition to restoring minor damage and weakness. Overdose causes weakness and toxin damage."
color = "#78008C"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
@@ -2334,3 +2346,109 @@
if(prob(5))
M.adjustToxLoss(1)
..()
+
+/datum/reagent/medicine/stasis
+ name = "Stasis"
+ description = "A liquid blue chemical that causes the body to enter a chemically induced stasis, irregardless of current state."
+ reagent_state = LIQUID
+ color = "#51b5cb" //a nice blue
+ overdose_threshold = 0
+
+/datum/reagent/medicine/stasis/expose_mob(mob/living/M, method=INJECT, reac_volume, show_message = 1)
+ if(method != INJECT)
+ return
+ if(iscarbon(M))
+ var/stasis_duration = min(20 SECONDS * reac_volume, 300 SECONDS)
+ to_chat(M, span_warning("Your body starts to slow down, sensation retreating from your limbs!"))
+ M.apply_status_effect(STATUS_EFFECT_STASIS, STASIS_DRUG_EFFECT)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, remove_status_effect), STATUS_EFFECT_STASIS, STASIS_DRUG_EFFECT), stasis_duration, TIMER_UNIQUE)
+
+/datum/reagent/medicine/stasis/on_mob_life(mob/living/carbon/M)
+ M.adjustToxLoss(1)
+ ..()
+ . = 1
+
+/datum/reagent/medicine/carfencadrizine
+ name = "Carfencadrizine"
+ description = "A highly potent synthetic painkiller held in a suspension of stimulating agents. Allows people to keep moving long beyond when they should."
+ color = "#859480"
+ overdose_threshold = 8
+ addiction_threshold = 7
+ metabolization_rate = 0.1
+
+/datum/reagent/medicine/carfencadrizine/on_mob_metabolize(mob/living/L)
+ . = ..()
+ ADD_TRAIT(L, TRAIT_PINPOINT_EYES, type)
+ ADD_TRAIT(L, TRAIT_NOSOFTCRIT, type)
+ ADD_TRAIT(L, TRAIT_NOHARDCRIT, type)
+
+/datum/reagent/medicine/carfencadrizine/on_mob_end_metabolize(mob/living/L)
+ . = ..()
+ REMOVE_TRAIT(L, TRAIT_PINPOINT_EYES, type)
+ REMOVE_TRAIT(L, TRAIT_NOSOFTCRIT, type)
+ REMOVE_TRAIT(L, TRAIT_NOHARDCRIT, type)
+
+/datum/reagent/medicine/carfencadrizine/on_mob_life(mob/living/carbon/M)
+ if(current_cycle >= 3)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "numb", /datum/mood_event/narcotic_heavy, name)
+
+ if(M.health <= M.crit_threshold)
+ if(prob(20))
+ M.adjustOrganLoss(ORGAN_SLOT_HEART, 4)
+ if(prob(40))
+ M.playsound_local(get_turf(M), 'sound/health/slowbeat2.ogg', 40,0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
+ ..()
+
+/datum/reagent/medicine/carfencadrizine/overdose_process(mob/living/M)
+ if(prob(66))
+ M.losebreath++
+ M.adjustOxyLoss(4, 0)
+ if(prob(40))
+ M.AdjustUnconscious(20)
+ if(prob(10))
+ M.adjustOrganLoss(ORGAN_SLOT_EYES, 3)
+ M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 7)
+ ..()
+
+/datum/reagent/medicine/carfencadrizine/addiction_act_stage1(mob/living/M)
+ if(prob(33))
+ M.drop_all_held_items()
+ M.adjust_jitter(4)
+ M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 1)
+ ..()
+
+/datum/reagent/medicine/carfencadrizine/addiction_act_stage2(mob/living/M)
+ if(prob(33))
+ M.drop_all_held_items()
+ M.adjustToxLoss(1*REM, 0)
+ . = 1
+ M.Dizzy(3)
+ M.adjust_jitter(3)
+ if(prob(15))
+ M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 1)
+ M.adjustOrganLoss(ORGAN_SLOT_HEART, 1)
+ ..()
+
+/datum/reagent/medicine/carfencadrizine/addiction_act_stage3(mob/living/M)
+ if(prob(50))
+ M.drop_all_held_items()
+ M.adjustToxLoss(1*REM, 0)
+ . = 1
+ M.Dizzy(4)
+ M.adjust_jitter(4)
+ if(prob(30))
+ M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 1)
+ M.adjustOrganLoss(ORGAN_SLOT_HEART, 2)
+ ..()
+
+/datum/reagent/medicine/carfencadrizine/addiction_act_stage4(mob/living/M)
+ if(prob(60))
+ M.drop_all_held_items()
+ M.adjustToxLoss(1*REM, 0)
+ . = 1
+ M.Dizzy(4)
+ M.adjust_jitter(4)
+ if(prob(40))
+ M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 2)
+ M.adjustOrganLoss(ORGAN_SLOT_HEART, 2)
+ ..()
diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm
index 104d099905b7..ecfc31e5e762 100644
--- a/code/modules/reagents/chemistry/recipes/drugs.dm
+++ b/code/modules/reagents/chemistry/recipes/drugs.dm
@@ -8,20 +8,13 @@
mix_message = "The mixture violently reacts, leaving behind a few crystalline shards."
required_temp = 390
-
-/datum/chemical_reaction/krokodil
- results = list(/datum/reagent/drug/krokodil = 6)
- required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1)
- mix_message = "The mixture dries into a pale blue powder."
- required_temp = 380
-
/datum/chemical_reaction/methamphetamine
results = list(/datum/reagent/drug/methamphetamine = 4)
required_reagents = list(/datum/reagent/medicine/ephedrine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1)
required_temp = 374
-/datum/chemical_reaction/bath_salts
- results = list(/datum/reagent/drug/bath_salts = 7)
+/datum/chemical_reaction/mammoth
+ results = list(/datum/reagent/drug/mammoth = 7)
required_reagents = list(/datum/reagent/toxin/bad_food = 1, /datum/reagent/saltpetre = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/consumable/enzyme = 1, /datum/reagent/consumable/tea = 1, /datum/reagent/mercury = 1)
required_temp = 374
@@ -54,3 +47,15 @@
required_reagents = list(/datum/reagent/consumable/vitfro = 4, /datum/reagent/medicine/dimorlin = 1, /datum/reagent/medicine/atropine = 1)
required_catalysts = list(/datum/reagent/toxin/plasma = 5)
required_temp = 400
+
+/datum/chemical_reaction/stardrop
+ results = list(/datum/reagent/drug/stardrop = 5)
+ required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/acetone = 1, /datum/reagent/consumable/carrotjuice = 2)
+ required_catalysts = list(/datum/reagent/stable_plasma = 5)
+
+/datum/chemical_reaction/starlight
+ results = list(/datum/reagent/drug/stardrop/starlight = 1)
+ required_reagents = list(/datum/reagent/drug/stardrop = 1, /datum/reagent/phenol = 1, /datum/reagent/sulfur = 1)
+ required_catalysts = list(/datum/reagent/toxin/plasma = 5)
+ mix_message = "The mixture concentrates into itself, taking on a deep coloration!"
+ required_temp = 150
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 78f6a711a90c..0c73bad9893b 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -338,3 +338,15 @@ WS End */
results = list(/datum/reagent/carbon = 1)
required_reagents = list(/datum/reagent/medicine/chitosan = 1)
required_temp = 405
+
+/datum/chemical_reaction/stasis
+ results = list(/datum/reagent/medicine/stasis = 5)
+ required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/copper = 1, /datum/reagent/medicine/salglu_solution = 3)
+ required_catalysts = list(/datum/reagent/toxin/plasma = 5)
+ required_temp = 207
+
+/datum/chemical_reaction/carfen
+ results = list(/datum/reagent/medicine/carfencadrizine = 4)
+ required_reagents = list(/datum/reagent/medicine/dimorlin = 1, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/consumable/sugar = 2)
+ required_catalysts = list(/datum/reagent/toxin/plasma = 2)
+ required_temp = 127
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index f996f8ddb539..10db6b100eb5 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -110,7 +110,7 @@
new /obj/item/soap(location)
/datum/chemical_reaction/omegasoapification
- required_reagents = list(/datum/reagent/consumable/potato_juice = 10, /datum/reagent/consumable/ethanol/lizardwine = 10, /datum/reagent/monkey_powder = 10, /datum/reagent/drug/krokodil = 10, /datum/reagent/toxin/acid/nitracid = 10, /datum/reagent/baldium = 10, /datum/reagent/consumable/ethanol/hooch = 10, /datum/reagent/bluespace = 10, /datum/reagent/drug/pumpup = 10, /datum/reagent/consumable/space_cola = 10)
+ required_reagents = list(/datum/reagent/consumable/potato_juice = 10, /datum/reagent/consumable/ethanol/lizardwine = 10, /datum/reagent/monkey_powder = 10, /datum/reagent/toxin/acid/nitracid = 10, /datum/reagent/baldium = 10, /datum/reagent/consumable/ethanol/hooch = 10, /datum/reagent/bluespace = 10, /datum/reagent/drug/pumpup = 10, /datum/reagent/consumable/space_cola = 10)
required_temp = 999
mob_react = FALSE
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 57c7b9563b32..417cdf2be844 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -352,6 +352,25 @@
base_icon_state = "syndipen"
item_state = "syndipen"
+/obj/item/reagent_containers/hypospray/medipen/rabbit
+ name = "rabbit injector"
+ desc = "An injector decorated with a chibi-stylized armored rabbitgirl, wielding what appears to be a Hydra DMR."
+ list_reagents = list(/datum/reagent/drug/stardrop/starlight = 10, /datum/reagent/medicine/carfencadrizine = 6, /datum/reagent/medicine/stimulants = 8)
+ volume = 24
+ amount_per_transfer_from_this = 24
+ icon_state = "stimpen"
+ base_icon_state = "stimpen"
+
+/obj/item/reagent_containers/hypospray/medipen/mammoth
+ name = "mammoth injector"
+ desc = "An injector filled with an ICW-era mixture of aggression-enhancing stimulants."
+ list_reagents = list(/datum/reagent/drug/mammoth = 7, /datum/reagent/medicine/dimorlin = 6, /datum/reagent/medicine/carfencadrizine = 6)
+ volume = 19
+ amount_per_transfer_from_this = 19
+ icon_state = "syndipen"
+ base_icon_state = "syndipen"
+ item_state = "syndipen"
+
//A vial-loaded hypospray. Cartridge-based!
/obj/item/hypospray/mkii
name = "hypospray mk.II"
diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm
index 3f4182ae9e89..483fdd72a85e 100644
--- a/code/modules/reagents/reagent_containers/hypovial.dm
+++ b/code/modules/reagents/reagent_containers/hypovial.dm
@@ -174,6 +174,12 @@
amount_per_transfer_from_this = 10
comes_with = list(/datum/reagent/drug/combat_drug = 20, /datum/reagent/medicine/bicaridinep = 10, /datum/reagent/medicine/dermaline = 10, /datum/reagent/medicine/synaptizine = 20)
+/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/stasis
+ name = "hypovial (stasis)"
+ icon_state = "hypovial-b"
+ amount_per_transfer_from_this = 5
+ comes_with = list(/datum/reagent/medicine/stasis = 60)
+
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
name = "deluxe hypovial"
icon_state = "hypoviallarge-cmos"
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 1a4822c254b5..190be7d7a15b 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -311,6 +311,12 @@ WS End */
list_reagents = list(/datum/reagent/medicine/trophazole = 15)
rename_with_volume = TRUE
+/obj/item/reagent_containers/pill/stardrop
+ name = "stardrop capsule"
+ desc = "A capsule of a vision enhancing compound known as Stardrop."
+ icon_state = "pill11"
+ list_reagents = list(/datum/reagent/drug/stardrop = 15)
+
/obj/item/reagent_containers/spray/rhigoxane
name = "medical spray (rhigoxane)"
desc = "A medical spray bottle.This one contains rhigoxane, it is used to treat burns and cool down temperature if applied with spray."
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 3241695c7e78..8d193cbe0c4f 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -282,17 +282,14 @@
/obj/item/reagent_containers/syringe/contraband/space_drugs
list_reagents = list(/datum/reagent/drug/space_drugs = 15)
-/obj/item/reagent_containers/syringe/contraband/krokodil
- list_reagents = list(/datum/reagent/drug/krokodil = 15)
-
/obj/item/reagent_containers/syringe/contraband/crank
list_reagents = list(/datum/reagent/drug/crank = 15)
/obj/item/reagent_containers/syringe/contraband/methamphetamine
list_reagents = list(/datum/reagent/drug/methamphetamine = 15)
-/obj/item/reagent_containers/syringe/contraband/bath_salts
- list_reagents = list(/datum/reagent/drug/bath_salts = 15)
+/obj/item/reagent_containers/syringe/contraband/mammoth
+ list_reagents = list(/datum/reagent/drug/mammoth = 15)
/obj/item/reagent_containers/syringe/contraband/fentanyl
list_reagents = list(/datum/reagent/toxin/fentanyl = 15)
@@ -309,3 +306,9 @@
name = "syringe (charcoal)"
desc = "Contains charcoal."
list_reagents = list(/datum/reagent/medicine/charcoal = 15)
+
+/obj/item/reagent_containers/syringe/stasis
+ name = "syringe (stasis)"
+ desc = "Contains 3 shots of Stasis, for usage in medical emergencies."
+ list_reagents = list(/datum/reagent/medicine/stasis = 15)
+ custom_price = 100
diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm
index 67801ddfbe1e..7ef7cac715b5 100644
--- a/code/modules/vending/medical_wall.dm
+++ b/code/modules/vending/medical_wall.dm
@@ -18,10 +18,12 @@
/obj/item/reagent_containers/hypospray/medipen/antihol = 10,
/obj/item/reagent_containers/hypospray/medipen/anti_rad = 10,
/obj/item/storage/pill_bottle/licarb = 4,
+ /obj/item/reagent_containers/syringe/stasis = 4
)
premium = list(
/obj/item/reagent_containers/medigel/styptic = 3,
/obj/item/reagent_containers/medigel/silver_sulf = 3,
+ /obj/item/storage/pill_bottle/stardrop = 5
)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF