mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 07:38:05 +01:00
Twinkaine: The Scarfacening (probably TM it for balance) (#3364)
## About The Pull Request Say hello to my little friend: cocaine rework; new recipes, no toxin damage, movement speed buff is back (but weaker). ## Why It's Good For The Game Cocaine as it stand is useless, except as a very potent poison - the nerf to it made it both poisonous and rather useless. - There's 0 reason to make it except to poison someone or immediately ship it off to cargo. This PR aims to bring cocaine back to its former glory (of actually being an usable drug) but now requiring a rather advanced chem (nitric acid) to make it, and making the whole production process more expensive and complex. ## Proof Of Testing I complied and tested it locally, i swear :3 ## Changelog 🆑 add: new reagents - coca powder add: new reagent - toxic coca paste intermediary add: recipes for cocaine and crack changed a lot, now a multi-step process add: cocaine is a painkiller now, as it is back on Earth balance: cocaine is worthwhile to make again and not laced, but much harder to make balance: you cant stack cocaine and crack in yourself balance: crack is stronger than cocaine but has lower OD (15) fix: cooling cocaine into powder no longer deletes half of it /🆑
This commit is contained in:
@@ -1,9 +1,24 @@
|
||||
/datum/chemical_reaction/coca_paste
|
||||
results = list(/datum/reagent/drug/coca_paste = 5)
|
||||
required_reagents = list(/datum/reagent/drug/coca_powder = 10, /datum/reagent/toxin/acid/nitracid = 1, /datum/reagent/water = 9)
|
||||
required_temp = 300
|
||||
purity_min = 0
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_DRUG
|
||||
|
||||
/datum/chemical_reaction/cocaine
|
||||
results = list(/datum/reagent/drug/cocaine = 10)
|
||||
required_reagents = list(/datum/reagent/drug/coca_paste = 8, /datum/reagent/acetone = 2, /datum/reagent/toxin/acid = 2,)
|
||||
required_temp = 480 // cook it
|
||||
purity_min = 0
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_DRUG
|
||||
mix_message = "The solution thickens into a paste!"
|
||||
|
||||
/datum/chemical_reaction/powder_cocaine
|
||||
is_cold_recipe = TRUE
|
||||
required_reagents = list(/datum/reagent/drug/cocaine = 10)
|
||||
required_reagents = list(/datum/reagent/drug/cocaine = 5)
|
||||
required_temp = 250 //freeze it
|
||||
reaction_flags = REACTION_INSTANT
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_DRUG
|
||||
mix_message = "The solution freezes into a powder!"
|
||||
|
||||
/datum/chemical_reaction/powder_cocaine/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
|
||||
@@ -11,38 +26,39 @@
|
||||
for(var/i in 1 to created_volume)
|
||||
new /obj/item/reagent_containers/cocaine(location)
|
||||
|
||||
/datum/chemical_reaction/freebase_cocaine
|
||||
required_reagents = list(/datum/reagent/drug/cocaine = 10, /datum/reagent/water = 5, /datum/reagent/ash = 10) //mix 20 cocaine, 10 water, 20 ash
|
||||
required_temp = 480 //heat it up
|
||||
/datum/chemical_reaction/crack_cooking
|
||||
required_reagents = list(/datum/reagent/drug/cocaine = 8, /datum/reagent/water = 12, /datum/reagent/ash = 4) // i wanted it to be ammonia but the space cleaner reaction...
|
||||
required_temp = 480 //cook it
|
||||
purity_min = 0
|
||||
reaction_flags = REACTION_INSTANT
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_DRUG
|
||||
mix_message = "The solution solidifies into chunks!"
|
||||
|
||||
/datum/chemical_reaction/freebase_cocaine/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
|
||||
/datum/chemical_reaction/crack_cooking/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i in 1 to created_volume)
|
||||
new /obj/item/reagent_containers/crack(location)
|
||||
|
||||
/datum/movespeed_modifier/reagent/cocaine
|
||||
multiplicative_slowdown = -0.30
|
||||
|
||||
/datum/reagent/drug/cocaine
|
||||
name = "cocaine"
|
||||
description = "A powerful stimulant extracted from coca leaves. Reduces stun times, but causes drowsiness and severe brain damage if overdosed."
|
||||
name = "Cocaine"
|
||||
description = "A powerful stimulant extracted from coca leaves. Causes drowsiness and severe brain damage if overdosed."
|
||||
color = "#ffffff"
|
||||
overdose_threshold = 20
|
||||
ph = 9
|
||||
taste_description = "bitterness" //supposedly does taste bitter in real life
|
||||
addiction_types = list(/datum/addiction/stimulants = 14) //5.6 per 2 seconds
|
||||
addiction_types = list(/datum/addiction/stimulants = 17)
|
||||
metabolized_traits = list(TRAIT_ANALGESIA, TRAIT_BATON_RESISTANCE)
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/drug/cocaine/on_mob_metabolize(mob/living/containing_mob)
|
||||
/datum/reagent/drug/cocaine/on_mob_metabolize(mob/living/metabolizer)
|
||||
..()
|
||||
ADD_TRAIT(containing_mob, TRAIT_BATON_RESISTANCE, type)
|
||||
metabolizer.add_movespeed_modifier(/datum/movespeed_modifier/reagent/cocaine)
|
||||
|
||||
/datum/reagent/drug/cocaine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
|
||||
. = ..()
|
||||
if(SPT_PROB(30, seconds_per_tick))
|
||||
if(affected_mob.adjustToxLoss(5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/cocaine/on_mob_end_metabolize(mob/living/containing_mob)
|
||||
REMOVE_TRAIT(containing_mob, TRAIT_BATON_RESISTANCE, type)
|
||||
/datum/reagent/drug/cocaine/on_mob_end_metabolize(mob/living/metabolizer)
|
||||
metabolizer.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/cocaine)
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/cocaine/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired)
|
||||
@@ -66,7 +82,7 @@
|
||||
|
||||
/datum/reagent/drug/cocaine/overdose_process(mob/living/M, seconds_per_tick, times_fired)
|
||||
M.adjustToxLoss(5 * REM * seconds_per_tick, 0)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_HEART, (rand(10, 20) / 10) * REM * seconds_per_tick)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_HEART, (rand(10, 20) / 10) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
M.set_jitter_if_lower(5 SECONDS)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
M.emote(pick("twitch","drool"))
|
||||
@@ -78,14 +94,149 @@
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
/datum/reagent/drug/cocaine/freebase_cocaine
|
||||
name = "freebase cocaine"
|
||||
description = "A smokable form of cocaine."
|
||||
color = "#f0e6bb"
|
||||
/datum/reagent/drug/coca_powder
|
||||
name = "Coca Powder"
|
||||
description = "Ground-up and filtered coca leaves, mildly stimulating."
|
||||
color = "#20862f"
|
||||
taste_description = "bitterness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/drug/cocaine/powder_cocaine
|
||||
name = "powder cocaine"
|
||||
description = "The powder form of cocaine."
|
||||
color = "#ffffff"
|
||||
/datum/reagent/drug/coca_powder/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired)
|
||||
M.AdjustStun(-2 * REM * seconds_per_tick)
|
||||
M.AdjustKnockdown(-2 * REM * seconds_per_tick)
|
||||
M.AdjustUnconscious(-2 * REM * seconds_per_tick)
|
||||
M.AdjustImmobilized(-2 * REM * seconds_per_tick)
|
||||
M.AdjustParalyzed(-2 * REM * seconds_per_tick)
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
/datum/reagent/drug/coca_paste
|
||||
name = "Coca Paste"
|
||||
description = "An acidc paste containing high amount of cocaine and toxic chemicals used to process it - consumption is ill-advised."
|
||||
color = "#4e6444"
|
||||
ph = 5
|
||||
taste_description = "acidic sludge"
|
||||
addiction_types = list(/datum/addiction/stimulants = 17)
|
||||
metabolized_traits = list(TRAIT_ANALGESIA, TRAIT_BATON_RESISTANCE)
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/drug/coca_paste/on_mob_metabolize(mob/living/metabolizer)
|
||||
..()
|
||||
metabolizer.add_movespeed_modifier(/datum/movespeed_modifier/reagent/cocaine)
|
||||
|
||||
/datum/reagent/drug/coca_paste/on_mob_end_metabolize(mob/living/metabolizer)
|
||||
metabolizer.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/cocaine)
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/coca_paste/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired)
|
||||
M.adjustFireLoss((volume/50) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
M.adjustToxLoss(3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.")
|
||||
to_chat(M, span_notice("[high_message]"))
|
||||
M.add_mood_event("zoinked", /datum/mood_event/stimulant_heavy, 1, name)
|
||||
M.AdjustStun(-12 * REM * seconds_per_tick)
|
||||
M.AdjustKnockdown(-12 * REM * seconds_per_tick)
|
||||
M.AdjustUnconscious(-12 * REM * seconds_per_tick)
|
||||
M.AdjustImmobilized(-12 * REM * seconds_per_tick)
|
||||
M.AdjustParalyzed(-12 * REM * seconds_per_tick)
|
||||
M.adjustStaminaLoss(-2 * REM * seconds_per_tick, 0)
|
||||
if(SPT_PROB(20, seconds_per_tick))
|
||||
M.emote(pick("scream","twitch","shiver"))
|
||||
..()
|
||||
. = TRUE
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/coca_paste/overdose_start(mob/living/M)
|
||||
to_chat(M, span_userdanger("Your heart beats is beating so fast, it hurts..."))
|
||||
|
||||
/datum/reagent/drug/coca_paste/overdose_process(mob/living/M, seconds_per_tick, times_fired)
|
||||
M.adjustToxLoss(5 * REM * seconds_per_tick, 0)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_HEART, (rand(10, 20) / 10) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
M.set_jitter_if_lower(5 SECONDS)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
M.emote(pick("twitch","drool"))
|
||||
if(!HAS_TRAIT(M, TRAIT_FLOORED))
|
||||
if(SPT_PROB(1.5, seconds_per_tick))
|
||||
M.visible_message(span_danger("[M] collapses onto the floor!"))
|
||||
M.Paralyze(135,TRUE)
|
||||
M.drop_all_held_items()
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
/datum/movespeed_modifier/reagent/crack
|
||||
multiplicative_slowdown = -0.40
|
||||
|
||||
/datum/reagent/drug/freebase_cocaine
|
||||
name = "Freebase Cocaine"
|
||||
description = "A smokable form of cocaine, Its higher bioavaliability results in a more intense high."
|
||||
color = "#f0e6bb"
|
||||
overdose_threshold = 15
|
||||
ph = 9 // it probably shouldnt be? but im too lazy to check it, and it was 9 because it was inhereiting
|
||||
taste_description = "crunchy bitterness"
|
||||
addiction_types = list(/datum/addiction/stimulants = 24) // even more addictive
|
||||
metabolized_traits = list(TRAIT_ANALGESIA, TRAIT_BATON_RESISTANCE)
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/drug/freebase_cocaine/on_mob_metabolize(mob/living/metabolizer)
|
||||
..()
|
||||
metabolizer.add_movespeed_modifier(/datum/movespeed_modifier/reagent/crack)
|
||||
|
||||
/datum/reagent/drug/freebase_cocaine/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.")
|
||||
to_chat(M, span_notice("[high_message]"))
|
||||
M.add_mood_event("zoinked", /datum/mood_event/stimulant_heavy, 1, name)
|
||||
M.AdjustStun(-18 * REM * seconds_per_tick)
|
||||
M.AdjustKnockdown(-18 * REM * seconds_per_tick)
|
||||
M.AdjustUnconscious(-18 * REM * seconds_per_tick)
|
||||
M.AdjustImmobilized(-18 * REM * seconds_per_tick)
|
||||
M.AdjustParalyzed(-18 * REM * seconds_per_tick)
|
||||
M.adjustStaminaLoss(-2.5 * REM * seconds_per_tick, 0)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
M.emote("shiver")
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
/datum/reagent/drug/freebase_cocaine/on_mob_end_metabolize(mob/living/metabolizer)
|
||||
metabolizer.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/crack)
|
||||
metabolizer.adjust_drowsiness(5 SECONDS)
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/freebase_cocaine/overdose_start(mob/living/M)
|
||||
to_chat(M, span_userdanger("Your heart beats is beating so fast, it hurts..."))
|
||||
|
||||
/datum/reagent/drug/freebase_cocaine/overdose_process(mob/living/M, seconds_per_tick, times_fired)
|
||||
M.adjustToxLoss(5 * REM * seconds_per_tick, 0)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_HEART, (rand(10, 20) / 10) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
M.set_jitter_if_lower(5 SECONDS)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
M.emote(pick("twitch","drool"))
|
||||
if(!HAS_TRAIT(M, TRAIT_FLOORED))
|
||||
if(SPT_PROB(1.5, seconds_per_tick))
|
||||
M.visible_message(span_danger("[M] collapses onto the floor!"))
|
||||
M.Paralyze(135,TRUE)
|
||||
M.drop_all_held_items()
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
// no you can't multi-coke
|
||||
/datum/chemical_reaction/cocaine_sanity // cracks your cocaine
|
||||
required_container = /mob/living
|
||||
required_container_accepts_subtypes = TRUE
|
||||
results = list(/datum/reagent/drug/freebase_cocaine = 2)
|
||||
required_reagents = list(/datum/reagent/drug/cocaine = 1, /datum/reagent/drug/freebase_cocaine = 1,)
|
||||
reaction_flags = REACTION_INSTANT
|
||||
|
||||
/datum/chemical_reaction/cocaine_sanity_paste // unpastes your paste
|
||||
required_container = /mob/living
|
||||
required_container_accepts_subtypes = TRUE
|
||||
results = list(/datum/reagent/drug/cocaine = 0.6, /datum/reagent/toxin/acid/nitracid = 0.2, /datum/reagent/toxin = 0.2,)
|
||||
required_reagents = list(/datum/reagent/drug/coca_paste = 1)
|
||||
required_catalysts = list(/datum/reagent/drug/cocaine = 1)
|
||||
reaction_flags = REACTION_INSTANT
|
||||
|
||||
/datum/chemical_reaction/cocaine_sanity_paste/crack
|
||||
required_catalysts = list(/datum/reagent/drug/freebase_cocaine = 1)
|
||||
|
||||
// not doing this for coca powder because honestly it doesn't matter
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "crack"
|
||||
volume = 10
|
||||
has_variable_transfer_amount = FALSE
|
||||
list_reagents = list(/datum/reagent/drug/cocaine/freebase_cocaine = 10)
|
||||
list_reagents = list(/datum/reagent/drug/freebase_cocaine = 10)
|
||||
|
||||
/obj/item/reagent_containers/crackbrick
|
||||
name = "crack brick"
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "crackbrick"
|
||||
volume = 40
|
||||
has_variable_transfer_amount = FALSE
|
||||
list_reagents = list(/datum/reagent/drug/cocaine/freebase_cocaine = 40)
|
||||
list_reagents = list(/datum/reagent/drug/freebase_cocaine = 40)
|
||||
|
||||
/obj/item/reagent_containers/crackbrick/attackby(obj/item/W, mob/user, params)
|
||||
if(W.get_sharpness())
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
growthstages = 1
|
||||
product = /obj/item/food/grown/cocaleaf
|
||||
mutatelist = list()
|
||||
reagents_add = list(/datum/reagent/drug/cocaine = 0.3, /datum/reagent/consumable/nutriment = 0.15)
|
||||
reagents_add = list(/datum/reagent/drug/coca_powder = 0.3, /datum/reagent/consumable/nutriment = 0.15)
|
||||
|
||||
/obj/item/food/grown/cocaleaf
|
||||
seed = /obj/item/seeds/cocaleaf
|
||||
|
||||
Reference in New Issue
Block a user