diff --git a/ModularTegustation/Teguicons/tegu_effects10x10.dmi b/ModularTegustation/Teguicons/tegu_effects10x10.dmi
index c5892eb167bc..51903c0eaccb 100644
Binary files a/ModularTegustation/Teguicons/tegu_effects10x10.dmi and b/ModularTegustation/Teguicons/tegu_effects10x10.dmi differ
diff --git a/ModularTegustation/fishing/code/fish/LC13_fish/freshwater_fish.dm b/ModularTegustation/fishing/code/fish/LC13_fish/freshwater_fish.dm
index 3c6856566ccd..4be98379daf0 100644
--- a/ModularTegustation/fishing/code/fish/LC13_fish/freshwater_fish.dm
+++ b/ModularTegustation/fishing/code/fish/LC13_fish/freshwater_fish.dm
@@ -18,6 +18,11 @@
stable_population = 2
microwaved_type = null
fillet_type = /obj/item/food/canned
+ food_reagents = list(
+ /datum/reagent/consumable/nutriment/organ_tissue = 3,
+ /datum/reagent/consumable/nutriment/vile_fluid = 1,
+ /datum/reagent/abnormality/bittersyrup = 1,
+ )
/obj/item/food/fish/fresh_water/northernpike
name = "northern pike"
@@ -40,6 +45,12 @@
sprite_height = 8
average_size = 50
average_weight = 6803
+ food_reagents = list(
+ /datum/reagent/consumable/nutriment/protein = 2,
+ /datum/reagent/consumable/nutriment/organ_tissue = 1,
+ /datum/reagent/consumable/nutriment/vile_fluid = 2,
+ /datum/reagent/abnormality/bittersyrup = 4,
+ )
/obj/item/food/fish/fresh_water/yin
name = "yin carp"
@@ -50,6 +61,12 @@
sprite_height = 8
average_size = 50
average_weight = 6803
+ food_reagents = list(
+ /datum/reagent/consumable/nutriment/protein = 2,
+ /datum/reagent/consumable/nutriment/organ_tissue = 1,
+ /datum/reagent/consumable/nutriment/vile_fluid = 2,
+ /datum/reagent/abnormality/tastesyrup = 4,
+ )
/obj/item/food/fish/fresh_water/mosb
name = "mountain of smiling fish"
@@ -64,6 +81,7 @@
average_weight = 16000
food_reagents = list(
/datum/reagent/medicine/mental_stabilizator = 2,
+ /datum/reagent/abnormality/heartysyrup = 4,
/datum/reagent/consumable/nutriment/vile_fluid = 6,
)
fillet_type = /obj/item/food/meat/slab/human/mutant/zombie //zombi meat
diff --git a/ModularTegustation/fishing/code/fish/LC13_fish/saltwater_fish.dm b/ModularTegustation/fishing/code/fish/LC13_fish/saltwater_fish.dm
index 9bb1346f9d20..f9f9fce84779 100644
--- a/ModularTegustation/fishing/code/fish/LC13_fish/saltwater_fish.dm
+++ b/ModularTegustation/fishing/code/fish/LC13_fish/saltwater_fish.dm
@@ -58,5 +58,6 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 1,
/datum/reagent/consumable/nutriment/organ_tissue = 1,
- /datum/reagent/consumable/salt = 8,
+ /datum/reagent/abnormality/bittersyrup = 4,
+ /datum/reagent/consumable/salt = 4,
)
diff --git a/ModularTegustation/tegu_chemistry/recipes.dm b/ModularTegustation/tegu_chemistry/recipes.dm
index 60ea136aaf6b..56ca75a78b1a 100644
--- a/ModularTegustation/tegu_chemistry/recipes.dm
+++ b/ModularTegustation/tegu_chemistry/recipes.dm
@@ -5,3 +5,59 @@
mix_message = "The mixture laughs at you mockingly."
required_temp = 420
mix_sound = 'sound/items/SitcomLaugh1.ogg'
+
+//LC13 Mixtures
+/datum/chemical_reaction/odisone
+ results = list(/datum/reagent/abnormality/odisone = 1)
+ required_reagents = list(/datum/reagent/abnormality/focussyrup = 1, /datum/reagent/abnormality/violence = 1)
+ mix_message = "The mixture gives off a spicy odor."
+
+/datum/chemical_reaction/gaspilleur
+ results = list(/datum/reagent/abnormality/gaspilleur = 1)
+ required_reagents = list(/datum/reagent/abnormality/focussyrup = 1, /datum/reagent/abnormality/nutrition = 1)
+ mix_message = "The mixture produces a rancid smell."
+/*
+/datum/chemical_reaction/sange_rau
+ results = list(/datum/reagent/abnormality/sange_rau = 1)
+ required_reagents = list(/datum/reagent/abnormality/tastesyrup = 1, /datum/reagent/abnormality/amusement = 1)
+ mix_message = "The mixture produces fumes that smell like suffocating under a lovers kiss."
+*/
+
+/datum/chemical_reaction/culpusumidus
+ results = list(/datum/reagent/abnormality/culpusumidus = 1)
+ required_reagents = list(/datum/reagent/abnormality/tastesyrup = 1, /datum/reagent/abnormality/woe = 1)
+ required_catalysts = list(/datum/reagent/water = 1)
+ mix_message = "The mixture gives off a odor of soggy bread."
+
+/datum/chemical_reaction/serelam
+ results = list(/datum/reagent/abnormality/serelam = 1)
+ required_reagents = list(/datum/reagent/abnormality/bittersyrup = 1, /datum/reagent/abnormality/tastesyrup = 1)
+ mix_message = "The mixture starts to swirl around."
+
+/datum/chemical_reaction/nepenthe
+ results = list(/datum/reagent/abnormality/nepenthe = 1)
+ required_reagents = list(/datum/reagent/abnormality/bittersyrup = 1, /datum/reagent/abnormality/consensus = 1)
+ mix_message = "The mixture gives off a flowery odor."
+
+/datum/chemical_reaction/piedrabital
+ results = list(/datum/reagent/abnormality/piedrabital = 1)
+ required_reagents = list(/datum/reagent/abnormality/heartysyrup = 1, /datum/reagent/abnormality/cleanliness = 1)
+ mix_message = "The mixture becomes chunky."
+
+/datum/chemical_reaction/dyscrasone
+ results = list(/datum/reagent/abnormality/dyscrasone = 2)
+ required_reagents = list(/datum/reagent/abnormality/heartysyrup = 1, /datum/reagent/abnormality/odisone = 1)
+ mix_message = "The mixture starts sizzling."
+
+/*
+* Bad Reactions
+* These reactions are for when two chemicals are a little too overpowered when mixed together
+* and one of the ways to prevent people getting dosed up on 4 of the best chemicals is to make
+* those chemicals mix into something gross. Think of depressents with stimulants or those weird
+* internet challenges where they mix foods.
+*/
+
+/datum/chemical_reaction/serelam_bad_react1
+ results = list(/datum/reagent/yuck = 1)
+ required_reagents = list(/datum/reagent/abnormality/serelam = 5, /datum/reagent/abnormality/culpusumidus = 5)
+
diff --git a/ModularTegustation/tegufood.dm b/ModularTegustation/tegufood.dm
index 8dc947e3f5d1..74cd0a2aae90 100644
--- a/ModularTegustation/tegufood.dm
+++ b/ModularTegustation/tegufood.dm
@@ -38,12 +38,13 @@
/obj/item/food/cookie/sugar/pbird
desc = "A sweet cookie shaped like a cute little bird."
icon_state = "sugarcookie_pbird"
+ food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/abnormality/heartysyrup = 1)
/obj/item/food/cake/bbird
name = "Big Bird cake"
desc = "A cake that seems like it's watching you."
icon_state = "bbcake"
- food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
+ food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/abnormality/tastesyrup = 3)
tastes = list("cake" = 1, "vigilance" = 1)
foodtypes = GRAIN | DAIRY
@@ -60,7 +61,7 @@
name = "Judgement sundae"
desc = "A sweet, sweet serving of justice."
icon_state = "sundae" //PLACEHOLDER
- food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2)
+ food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/abnormality/focussyrup = 5)
tastes = list("judgement" = 1, "paranoia" = 1)
foodtypes = DAIRY | SUGAR
@@ -79,7 +80,7 @@
name = "Apocalypse trifle"
desc = "A huge serving of monstrously good cake, custard, and forest fruit."
icon_state = "apoctrifle"
- food_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/sugar = 5)
+ food_reagents = list(/datum/reagent/abnormality/tastesyrup = 9, /datum/reagent/abnormality/focussyrup = 9, /datum/reagent/abnormality/heartysyrup = 9, /datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/sugar = 5)
tastes = list("cake" = 3, "custard" = 3, "fresh fruit" = 3, "fear" = 1)
foodtypes = DAIRY | SUGAR | FRUIT
@@ -143,7 +144,7 @@
name = "sweeper soup"
desc = "Liquid sweeper in a bowl made of its own shell."
icon_state = "redbeetsoup" //PLACEHOLDER
- food_reagents = list(/datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/blood = 10)
+ food_reagents = list(/datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/blood = 10, /datum/reagent/abnormality/heartysyrup = 2)
tastes = list("something metallic" = 1)
foodtypes = MEAT
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 12ee35b3b380..5de116b073b9 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -1168,3 +1168,26 @@
src.apply_status_effect(/datum/status_effect/stacking/lc_burn, stacks)
else
B.add_stacks(stacks)
+
+/datum/status_effect/display/dyscrasone_withdrawl
+ id = "dyscrasone_withdrawl"
+ status_type = STATUS_EFFECT_UNIQUE
+ duration = 15 SECONDS
+ alert_type = null
+ display_name = "sadface_all_stats"
+
+/datum/status_effect/display/dyscrasone_withdrawl/on_apply()
+ . = ..()
+ var/mob/living/carbon/human/L = owner
+ L.adjust_attribute_buff(FORTITUDE_ATTRIBUTE, -25)
+ L.adjust_attribute_buff(PRUDENCE_ATTRIBUTE, -25)
+ L.adjust_attribute_buff(TEMPERANCE_ATTRIBUTE, -25)
+ L.adjust_attribute_buff(JUSTICE_ATTRIBUTE, -25)
+
+/datum/status_effect/display/dyscrasone_withdrawl/on_remove()
+ var/mob/living/carbon/human/L = owner
+ L.adjust_attribute_buff(FORTITUDE_ATTRIBUTE, 25)
+ L.adjust_attribute_buff(PRUDENCE_ATTRIBUTE, 25)
+ L.adjust_attribute_buff(TEMPERANCE_ATTRIBUTE, 25)
+ L.adjust_attribute_buff(JUSTICE_ATTRIBUTE, 25)
+ return ..()
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/MHz.dm b/code/modules/mob/living/simple_animal/abnormality/teth/MHz.dm
index 5de7e5004904..92549801c577 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/MHz.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/MHz.dm
@@ -21,6 +21,7 @@
)
work_damage_amount = 5
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/abno_oil
ego_list = list(
/datum/ego_datum/weapon/noise,
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/beauty_beast.dm b/code/modules/mob/living/simple_animal/abnormality/teth/beauty_beast.dm
index 9d173134fb03..14169a5384fb 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/beauty_beast.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/beauty_beast.dm
@@ -22,6 +22,7 @@
)
work_damage_amount = 5
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/violence
ego_list = list(
/datum/ego_datum/weapon/horn,
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/blood_bath.dm b/code/modules/mob/living/simple_animal/abnormality/teth/blood_bath.dm
index 6e4a2fb3289d..b4135e576be3 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/blood_bath.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/blood_bath.dm
@@ -15,6 +15,7 @@
)
work_damage_amount = 8
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/woe
max_boxes = 14
ego_list = list(
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/cleaner.dm b/code/modules/mob/living/simple_animal/abnormality/teth/cleaner.dm
index fab6a6cfe45e..58be32e5836b 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/cleaner.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/cleaner.dm
@@ -31,6 +31,7 @@
)
work_damage_amount = 7
work_damage_type = RED_DAMAGE
+ chem_type = /datum/reagent/abnormality/abno_oil
ego_list = list(
/datum/ego_datum/weapon/sanitizer,
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/crumbling_armor.dm b/code/modules/mob/living/simple_animal/abnormality/teth/crumbling_armor.dm
index 039a185402cb..4cb77dbd620e 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/crumbling_armor.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/crumbling_armor.dm
@@ -17,6 +17,7 @@
)
work_damage_amount = 5
work_damage_type = RED_DAMAGE
+ chem_type = /datum/reagent/abnormality/violence
ego_list = list(
/datum/ego_datum/weapon/daredevil,
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/drowned_sisters.dm b/code/modules/mob/living/simple_animal/abnormality/teth/drowned_sisters.dm
index 270447ae2070..3b176d17fab1 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/drowned_sisters.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/drowned_sisters.dm
@@ -17,6 +17,7 @@
start_qliphoth = 3
work_damage_amount = 5 //Calculated later
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/woe
pixel_x = -32
base_pixel_x = -32
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/forsaken_murderer.dm b/code/modules/mob/living/simple_animal/abnormality/teth/forsaken_murderer.dm
index 0789dd690aaf..b10aa11dde9b 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/forsaken_murderer.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/forsaken_murderer.dm
@@ -63,6 +63,14 @@
)
work_damage_amount = 6
work_damage_type = RED_DAMAGE
+
+ /*
+ * This is related to abnochem where a chemical can be harvested from abnormalities.
+ * This is more for general flavor and will be randomly filled if left empty.
+ * I placed this here because i felt like violence makes the most sense.
+ */
+ chem_type = /datum/reagent/abnormality/violence
+
//shows in chat when the creature is defeated. Default is "stops moving".
death_message = "falls over."
//Phrases that the creature will emote randomly based on speak chance.
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/lady_facing_the_wall.dm b/code/modules/mob/living/simple_animal/abnormality/teth/lady_facing_the_wall.dm
index 0cc672528c53..e0bef9d53fb4 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/lady_facing_the_wall.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/lady_facing_the_wall.dm
@@ -18,6 +18,7 @@
work_damage_amount = 7
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/woe
start_qliphoth = 2
var/scream_range = 10
var/scream_damage = 45
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/old_lady.dm b/code/modules/mob/living/simple_animal/abnormality/teth/old_lady.dm
index 16d30d460dcd..4e93fc78ff54 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/old_lady.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/old_lady.dm
@@ -17,6 +17,7 @@
start_qliphoth = 4
work_damage_amount = 6
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/woe
ego_list = list(
/datum/ego_datum/weapon/solitude,
/datum/ego_datum/armor/solitude,
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/penitent_girl.dm b/code/modules/mob/living/simple_animal/abnormality/teth/penitent_girl.dm
index a253ccddd7c2..2b812fdbd9de 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/penitent_girl.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/penitent_girl.dm
@@ -19,6 +19,7 @@
is_flying_animal = TRUE
work_damage_amount = 6
work_damage_type = WHITE_DAMAGE
+ chem_type = /datum/reagent/abnormality/woe
ego_list = list(
/datum/ego_datum/weapon/sorrow,
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/scorched_girl.dm b/code/modules/mob/living/simple_animal/abnormality/teth/scorched_girl.dm
index 0cb3cbc777fa..f12842704ecd 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/scorched_girl.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/scorched_girl.dm
@@ -21,6 +21,7 @@
)
work_damage_amount = 6
work_damage_type = RED_DAMAGE
+ chem_type = /datum/reagent/abnormality/woe
damage_coeff = list(RED_DAMAGE = 0.5, WHITE_DAMAGE = 2, BLACK_DAMAGE = 1, PALE_DAMAGE = 2)
faction = list("hostile")
can_breach = TRUE
diff --git a/code/modules/mob/living/simple_animal/abnormality/teth/training_rabbit.dm b/code/modules/mob/living/simple_animal/abnormality/teth/training_rabbit.dm
index 710f799c4d77..80248edf6442 100644
--- a/code/modules/mob/living/simple_animal/abnormality/teth/training_rabbit.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/teth/training_rabbit.dm
@@ -18,6 +18,7 @@
)
work_damage_amount = 2
work_damage_type = RED_DAMAGE
+ chem_type = /datum/reagent/blood
damage_coeff = list(RED_DAMAGE = 0.5, WHITE_DAMAGE = 1.5, BLACK_DAMAGE = 1, PALE_DAMAGE = 1)
can_breach = TRUE
start_qliphoth = 1
diff --git a/code/modules/reagents/chemistry/reagents/abnormality_reagents.dm b/code/modules/reagents/chemistry/reagents/abnormality_reagents.dm
index d01d2c64d800..139f608cac4b 100644
--- a/code/modules/reagents/chemistry/reagents/abnormality_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/abnormality_reagents.dm
@@ -85,7 +85,7 @@
/datum/reagent/abnormality/cleanliness/on_mob_metabolize(mob/living/L)
var/atom/cleaned = L
cleaned.wash(CLEAN_WASH)
- to_chat(cleaned, "You feel like new!")
+ to_chat(cleaned, span_nicegreen("You feel like new!"))
return ..()
/datum/reagent/abnormality/consensus // Restores some SP, but renders you weaker to white damage.
@@ -108,6 +108,151 @@
health_restore = -2
stat_changes = list(0, 0, 0, 10)
+/datum/reagent/abnormality/abno_oil // Generally found in mechanical abnormalities. Increases vulnerability to Black damage. Increases resistance to normal damage.
+ name = "Generic Enkephalin Derivate type RO"
+ description = "Barely stable, but it exists..."
+ color = COLOR_GRAY
+ special_properties = list("substance may make the subject gain the defenses of a machine.")
+ damage_mods = list(0.8, 0.9, 1.5, 1)
+
+/datum/reagent/abnormality/woe // Eats away at health to restore sanity.
+ name = "Generic Enkephalin Derivate type WP"
+ description = "Barely stable, but it exists..."
+ color = COLOR_GRAY
+ // Attempting to balance this by making the hp cost twice the sanity restored.
+ health_restore = -4
+ sanity_restore = 2
+ special_properties = list("substance transforms mental wounds into physical injuries.")
+
+///// Common Abnochems
+/datum/reagent/abnormality/odisone // Increases Fort and Justice by 10 while reducing all other stats by 20
+ name = "Odisone"
+ description = "Deriving from the latin odium, this substance \
+ highens the thrill of combat while greatly reducing the \
+ subjects ability to think."
+ metabolization_rate = 0.8 * REAGENTS_METABOLISM
+ color = COLOR_RED
+ stat_changes = list(10, -20, -20, 10)
+
+/datum/reagent/abnormality/dyscrasone // Addictive stat buffing. Debuff is in status_effects/debuff.dm
+ name = "Dyscrasone"
+ description = "This drug increases all of a subjects attributes \
+ but induces a heavy withdrawl penalty."
+ metabolization_rate = 0.8 * REAGENTS_METABOLISM
+ color = COLOR_BUBBLEGUM_RED
+ stat_changes = list(10, 10, 10, 10)
+
+/datum/reagent/abnormality/dyscrasone/on_mob_metabolize(mob/living/L)
+ . = ..()
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ H.remove_status_effect(/datum/status_effect/display/dyscrasone_withdrawl)
+
+/datum/reagent/abnormality/dyscrasone/on_mob_end_metabolize(mob/living/L)
+ . = ..()
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ H.apply_status_effect(/datum/status_effect/display/dyscrasone_withdrawl)
+
+/datum/reagent/abnormality/serelam // Increases Prudence and Temperance by 10 while reducing all other stats by 20
+ name = "Serelam"
+ description = "Formed from the mixture of mundance and \
+ supernatural fluids, this substance strengthens the \
+ users calm in intense situations but also weakens \
+ their muscles during combat."
+ metabolization_rate = 0.8 * REAGENTS_METABOLISM
+ stat_changes = list(-20, 10, 10, -20)
+
+/datum/reagent/abnormality/culpusumidus // Increases Prudence but inflicts sanity damage when exiting system.
+ name = "Culpus Umidus"
+ description = "This fluid increases prudence but induces \
+ a intense feeling of remorse when leaving the subjects system."
+ metabolization_rate = 0.8 * REAGENTS_METABOLISM
+ color = COLOR_BEIGE
+ stat_changes = list(0, 10, 0, 0)
+
+/datum/reagent/abnormality/culpusumidus/on_mob_end_metabolize(mob/living/L)
+ . = ..()
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ to_chat(H, span_warning("You need to suffer for what was done."))
+ H.adjustSanityLoss(H.maxSanity * 0.15, TRUE)
+
+/datum/reagent/abnormality/nepenthe // Rapidly restores sanity to those who are insane.
+ name = "Lesser Nepenthe"
+ description = "Rapidly restores sanity to those who have gone insane. \
+ For those who consume this drink, forgetfulness takes away their sorrow."
+ metabolization_rate = 1 * REAGENTS_METABOLISM
+ color = COLOR_BLUE
+
+/datum/reagent/abnormality/nepenthe/on_mob_life(mob/living/carbon/M)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.sanity_lost)
+ H.adjustSanityLoss((-H.maxSanity*0.05)*REM)
+ else
+ H.adjustSanityLoss(-1*REM)
+ return ..()
+
+/datum/reagent/abnormality/piedrabital // Heals but has a chance of immobalizing the subject
+ name = "Piedrabital"
+ description = "Closes wounds and heals bruises but sometimes causes \
+ muscles to seize up due to tissue build up."
+ metabolization_rate = 0.6 * REAGENTS_METABOLISM
+ color = COLOR_BUBBLEGUM_RED
+
+/datum/reagent/abnormality/piedrabital/on_mob_life(mob/living/carbon/M)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(prob(20 + (0.5 * current_cycle)))
+ //Chance of stun increases by 0.5 per cycle
+ if(!H.IsStun())
+ to_chat(H, "Your limbs suddenly spasms and tightens like you have something stuck inside them.")
+ H.Stun(10*REM)
+ else
+ H.adjustBruteLoss(rand(-8,-4)*REM)
+ return ..()
+
+/datum/reagent/abnormality/gaspilleur // Heals 2 sanity and health but reduces stats by -40
+ name = "Gaspilleur"
+ description = "A strange substance that restores the mind and body. \
+ Subjects under the effects of this substance report feeling numb \
+ physically and emotionally."
+ metabolization_rate = 0.8 * REAGENTS_METABOLISM
+ color = COLOR_RED
+ health_restore = 2
+ sanity_restore = 2
+ stat_changes = list(-40, -40, -40, -40)
+
+ //Subtypes
+/datum/reagent/abnormality/heartysyrup
+ name = "Hearty Syrup"
+ description = "A substance of certain vitamins that can be found in some foods. \
+ Increases fortitude by 6 while in system."
+ color = COLOR_VIVID_RED
+ stat_changes = list(6, 0, 0, 0)
+
+/datum/reagent/abnormality/bittersyrup
+ name = "Bitter Syrup"
+ description = "A substance that distrupts mental attacks. \
+ Increases prudence by 6 while in system."
+ color = COLOR_BEIGE
+ stat_changes = list(0, 6, 0, 0)
+
+/datum/reagent/abnormality/tastesyrup
+ name = "Tasteless Syrup"
+ description = "A substance that calms the body and mind. \
+ Increases temperance by 6 while in system."
+ color = COLOR_PURPLE
+ stat_changes = list(0, 0, 6, 0)
+
+/datum/reagent/abnormality/focussyrup
+ name = "Focused Syrup"
+ description = "A substance that increases reaction time and movement. \
+ Increases justice by 6 while in system."
+ color = COLOR_CYAN
+ stat_changes = list(0, 0, 0, 6)
+
///// Abnochem scanner!
/obj/item/enkephalin_scanner
@@ -129,13 +274,13 @@
for (var/datum/reagent/abnormality/abnoChem in A.reagents.reagent_list) // I need to do TWO for loops through the same list uuuuuugh
abno_count += 1
if(abno_count)
- to_chat(user, "[abno_count] enkephalin-derived substance[abno_count > 1 ? "s" : ""] found.")
+ to_chat(user, span_notice("[abno_count] enkephalin-derived substance[abno_count > 1 ? "s" : ""] found."))
for (var/datum/reagent/abnormality/abnoChem in A.reagents.reagent_list)
- to_chat(user, "\t [abnoChem]")
+ to_chat(user, span_notice("\t [abnoChem]"))
last_scan |= abnoChem
- to_chat(user,"Property analysis available.")
+ to_chat(user, span_notice("Property analysis available."))
return
- to_chat(user, "No enkephalin-derived substances found in [A].")
+ to_chat(user, span_notice("No enkephalin-derived substances found in [A]."))
/obj/item/enkephalin_scanner/Topic(href, href_list)
. = ..()
@@ -172,13 +317,13 @@
/obj/machinery/computer/abnormality/attackby(obj/O, mob/user, params)
if(istype(O, /obj/item/chemical_extraction_attachment))
if(datum_reference.understanding < datum_reference.max_understanding)
- to_chat(user, "Abnormality [datum_reference.current] is not yet fully understood.")
+ to_chat(user, span_notice("Abnormality [datum_reference.current] is not yet fully understood."))
return ..()
var/obj/item/chemical_extraction_attachment/attachment = locate() in contents
if(attachment)
- to_chat(user, "This cell already has a chemical extraction upgrade installed.")
+ to_chat(user, span_notice("This cell already has a chemical extraction upgrade installed."))
return ..()
- to_chat(user, "You start attaching \the [O] to \the [src]...")
+ to_chat(user, span_notice("You start attaching \the [O] to \the [src]..."))
if(do_after(user, 5 SECONDS, src))
user.transferItemToLoc(O, src)
src.desc += "\nIt seems to be equipped with a chemical extraction upgrade."