mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync
This commit is contained in:
@@ -137,6 +137,7 @@
|
||||
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, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
|
||||
color = "#78C8FA" //best case scenario is the "default", gets muddled depending on purity
|
||||
taste_description = "harsh, burning chemicals"
|
||||
overdose_threshold = 20
|
||||
metabolization_rate = 0.75 * REAGENTS_METABOLISM
|
||||
ph = 5
|
||||
@@ -169,7 +170,7 @@
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
|
||||
. = ..()
|
||||
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.")
|
||||
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.", "You understand now.")
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_notice("[high_message]"))
|
||||
affected_mob.add_mood_event("tweaking", /datum/mood_event/stimulant_medium)
|
||||
|
||||
@@ -718,6 +718,7 @@
|
||||
name = "Morphine"
|
||||
description = "A painkiller that allows the patient to move at full speed even when injured. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal."
|
||||
color = "#A9FBFB"
|
||||
taste_description = "a perfumy, bitter vanilla"
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 30
|
||||
ph = 8.96
|
||||
|
||||
@@ -259,26 +259,39 @@
|
||||
ph = 13
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob)
|
||||
/datum/reagent/toxin/zombiepowder/expose_mob(mob/living/exposed_mob, methods, reac_volume, show_message, touch_protection)
|
||||
. = ..()
|
||||
if(!isliving(exposed_mob) || !(methods & (INGEST|INHALE)))
|
||||
return
|
||||
|
||||
LAZYINITLIST(data)
|
||||
data["method"] |= methods
|
||||
|
||||
//the stomach handles INGEST via on_mob_metabolize() we only deal with INHALE
|
||||
//also means vapour works much faster which is realistic
|
||||
if(methods & INHALE)
|
||||
zombify(exposed_mob)
|
||||
/**
|
||||
* Does the fake death & oxy loss on the mob
|
||||
*
|
||||
* Arguments
|
||||
* * mob/living/holder_mob - the mob we are zombifying
|
||||
*/
|
||||
/datum/reagent/toxin/zombiepowder/proc/zombify(mob/living/holder_mob)
|
||||
PRIVATE_PROC(TRUE)
|
||||
|
||||
holder_mob.adjustOxyLoss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD)
|
||||
holder_mob.fakedeath(type)
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob)
|
||||
. = ..()
|
||||
zombify(holder_mob)
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/affected_mob)
|
||||
. = ..()
|
||||
affected_mob.cure_fakedeath(type)
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/expose_mob(mob/living/exposed_mob, methods, reac_volume, show_message, touch_protection)
|
||||
. = ..()
|
||||
if(!(methods & (INGEST|INHALE)))
|
||||
return
|
||||
|
||||
var/datum/reagent/zombiepowder = exposed_mob.reagents.has_reagent(/datum/reagent/toxin/zombiepowder)
|
||||
if(zombiepowder)
|
||||
LAZYINITLIST(zombiepowder.data)
|
||||
zombiepowder.data["method"] |= (INGEST|INHALE)
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick, times_fired)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_FAKEDEATH) && HAS_TRAIT(affected_mob, TRAIT_DEATHCOMA))
|
||||
|
||||
@@ -77,6 +77,46 @@
|
||||
e.start(holder.my_atom)
|
||||
holder.clear_reagents()
|
||||
|
||||
/datum/chemical_reaction/meth_crystal //Since the meth is a cooled pharmaceutical solvent, this precipitates it into a solid.
|
||||
required_reagents = list(/datum/reagent/drug/methamphetamine = 10, /datum/reagent/toxin/acid = 2)
|
||||
mob_react = FALSE
|
||||
reaction_flags = REACTION_INSTANT
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING
|
||||
|
||||
/datum/chemical_reaction/meth_crystal/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
// Calculate purity ignoring sulfuric acid
|
||||
var/total_nonacid = 0
|
||||
var/meth_amt_in_mix = 0
|
||||
for(var/datum/reagent/R in holder.reagent_list)
|
||||
if(istype(R, /datum/reagent/toxin/acid))
|
||||
continue // acid doesn't count against purity
|
||||
total_nonacid += R.volume
|
||||
if(istype(R, /datum/reagent/drug/methamphetamine))
|
||||
meth_amt_in_mix += R.volume
|
||||
|
||||
var/purity = (total_nonacid > 0) ? (meth_amt_in_mix / total_nonacid) : 0.5 //All this tints the crystal above blue purity.
|
||||
|
||||
for(var/i in 1 to round(created_volume, CHEMICAL_VOLUME_ROUNDING))
|
||||
var/obj/item/food/drug/meth_crystal/new_crystal = new(location)
|
||||
new_crystal.pixel_x = rand(-6, 6)
|
||||
new_crystal.pixel_y = rand(-6, 6)
|
||||
|
||||
var/effective_purity = 0
|
||||
if(purity > 0.9)
|
||||
effective_purity = (purity - 0.9) / 0.1
|
||||
|
||||
new_crystal.color = BlendRGB("#FAFAFA", "#78C8FA", effective_purity)
|
||||
|
||||
if(new_crystal.reagents)
|
||||
new_crystal.reagents.clear_reagents()
|
||||
var/meth_amt = 10
|
||||
new_crystal.reagents.add_reagent(/datum/reagent/drug/methamphetamine, meth_amt)
|
||||
var/imp_amt = round(meth_amt * (1 - purity) * 0.25, 0.1)
|
||||
if(imp_amt > 0)
|
||||
new_crystal.reagents.add_reagent(/datum/reagent/consumable/failed_reaction, imp_amt)
|
||||
|
||||
/datum/chemical_reaction/bath_salts
|
||||
results = list(/datum/reagent/drug/bath_salts = 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)
|
||||
|
||||
@@ -186,6 +186,11 @@
|
||||
list_reagents = list(/datum/reagent/medicine/c2/aiuri = 2, /datum/reagent/medicine/granibitaluri = 8)
|
||||
icon_state = "bandaid_burn"
|
||||
|
||||
/obj/item/reagent_containers/applicator/patch/fent
|
||||
name = "unmarked patch"
|
||||
desc = "An unmarked, unlabeled transdermal patch for you to wear!"
|
||||
list_reagents = list(/datum/reagent/toxin/fentanyl = 2)
|
||||
|
||||
/obj/item/reagent_containers/applicator/patch/synthflesh
|
||||
name = "synthflesh patch"
|
||||
desc = "Helps with brute and burn injuries. Slightly toxic. Three patches applied can restore a corpse husked by burns."
|
||||
|
||||
Reference in New Issue
Block a user