y'all n'wahs don't even smoke weed - adds skooma (and adds the ability for reagents to define custom addiction stages)

This commit is contained in:
deathride58
2018-11-19 06:48:11 -05:00
parent 7aa635e71a
commit 9f7098231b
6 changed files with 117 additions and 14 deletions
+12 -13
View File
@@ -292,19 +292,18 @@
var/datum/reagent/R = addiction
if(C && R)
R.addiction_stage++
switch(R.addiction_stage)
if(1 to 10)
need_mob_update += R.addiction_act_stage1(C)
if(10 to 20)
need_mob_update += R.addiction_act_stage2(C)
if(20 to 30)
need_mob_update += R.addiction_act_stage3(C)
if(30 to 40)
need_mob_update += R.addiction_act_stage4(C)
if(40 to INFINITY)
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction")
cached_addictions.Remove(R)
if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end)
need_mob_update += R.addiction_act_stage1(C)
else if(R.addiction_stage1_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end)
need_mob_update += R.addiction_act_stage2(C)
else if(R.addiction_stage2_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end)
need_mob_update += R.addiction_act_stage3(C)
else if(R.addiction_stage3_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end)
need_mob_update += R.addiction_act_stage4(C)
else if(R.addiction_stage4_end <= R.addiction_stage)
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction")
cached_addictions.Remove(R)
addiction_tick++
if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
C.updatehealth()
@@ -301,7 +301,7 @@
operate_for(50, juicing = TRUE)
addtimer(CALLBACK(src, /obj/machinery/reagentgrinder/proc/mix_complete), 50)
/obj/machinery/reagentgrinder/proc/mix_complete()
/obj/machinery/reagentgrinder/proc/mix_complete() //what the fuck. why the fuck are mixed recipes hardcoded. seriously what in the actual shit. i mean its out of scope for my pr but hot damn
if(beaker && beaker.reagents.total_volume)
//Recipe to make Butter
var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount("milk") / MILK_TO_BUTTER_COEFF, 1)
@@ -313,3 +313,9 @@
var/amount = beaker.reagents.get_reagent_amount("eggyolk")
beaker.reagents.remove_reagent("eggyolk", amount)
beaker.reagents.add_reagent("mayonnaise", amount)
//Moonsugar for skooma
if(beaker.reagents.has_reagent("sugar") && beaker.reagents.has_reagent("moonshine"))
var/amount = min(beaker.reagents.get_reagent_amount("sugar"), beaker.reagents.get_reagent_amount("moonshine"))
beaker.reagents.remove_reagent("sugar", amount)
beaker.reagents.remove_reagent("moonshine", amount)
beaker.reagents.add_reagent("moonsugar", amount*2)
@@ -27,6 +27,10 @@
var/overdose_threshold = 0
var/addiction_threshold = 0
var/addiction_stage = 0
var/addiction_stage1_end = 10
var/addiction_stage2_end = 20
var/addiction_stage3_end = 30
var/addiction_stage4_end = 40
var/overdosed = 0 // You fucked up and this is now triggering its overdose effects, purge that shit quick.
var/self_consuming = FALSE
@@ -355,3 +355,75 @@
M.adjustOxyLoss(1, 0)
..()
. = 1
/datum/reagent/drug/skooma
name = "Skooma"
id = "skooma"
description = "An ancient, highly-addictive drug of long-forgotten times. It greatly improves the user's speed and strength, but heavily impedes their intelligence and agility."
reagent_state = LIQUID
color = "#F3E0F9"
taste_description = "ancient, unfulfilled prophecies"
addiction_threshold = 1
addiction_stage3_end = 40
addiction_stage4_end = 240
/datum/reagent/drug/skooma/on_mob_add(mob/living/L)
. = ..()
L.add_trait(TRAIT_GOTTAGOFAST, id)
L.next_move_modifier *= 2
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.physiology)
H.physiology.stamina_mod *= 0.5
if(H.dna && H.dna.species)
H.dna.species.punchdamagehigh *= 5
/datum/reagent/drug/skooma/on_mob_delete(mob/living/L)
. = ..()
L.remove_trait(TRAIT_GOTTAGOFAST, id)
L.next_move_modifier *= 0.5
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.physiology)
H.physiology.stamina_mod *= 2
if(H.dna && H.dna.species)
H.dna.species.punchdamagehigh *= 0.2
/datum/reagent/drug/skooma/on_mob_life(mob/living/carbon/M)
M.adjustBrainLoss(1*REM)
M.adjustToxLoss(1*REM)
if(prob(10))
M.adjust_blurriness(2)
..()
. = 1
/datum/reagent/drug/skooma/addiction_act_stage1(mob/living/M)
M.Jitter(10)
if(prob(50))
M.adjust_blurriness(2)
..()
/datum/reagent/drug/skooma/addiction_act_stage2(mob/living/M)
M.Jitter(20)
M.Dizzy(10)
M.adjust_blurriness(2)
..()
/datum/reagent/drug/skooma/addiction_act_stage3(mob/living/M)
M.Jitter(50)
M.Dizzy(20)
M.adjust_blurriness(4)
if(prob(20))
M.emote(pick("twitch","drool","moan"))
..()
/datum/reagent/drug/skooma/addiction_act_stage4(mob/living/M)
M.Jitter(50)
M.Dizzy(50)
M.adjust_blurriness(10)
if(prob(50)) //This proc will be called about 200 times and the adjustbrainloss() below only has to be called 40 times to kill. This will make surviving skooma addiction pretty rare without mannitol usage.
M.adjustBrainLoss(5)
if(prob(40))
M.emote(pick("twitch","drool","moan"))
..()
@@ -1847,3 +1847,10 @@
/datum/reagent/tranquility/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
L.ForceContractDisease(new /datum/disease/transformation/gondola(), FALSE, TRUE)
/datum/reagent/moonsugar
name = "Moonsugar"
id = "moonsugar"
description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results."
color = "#FAEAFF"
taste_description = "synthetic catnip"
@@ -40,3 +40,18 @@
id = "aranesp"
results = list("aranesp" = 3)
required_reagents = list("epinephrine" = 1, "atropine" = 1, "morphine" = 1)
/datum/chemical_reaction/skooma
name = "skooma"
id = "skooma"
results = list("skooma" = 2, "moonshine" = 4, "sugar" = 4)
required_temp = 280
is_cold_recipe = TRUE
required_reagents = list("moonsugar" = 10, "morphine" = 5)
/datum/chemical_reaction/skoomarevert
name = "skoomarevert"
id = "skoomarevert"
results = list("moonsugar" = 1, "morphine" = 2.5)
required_temp = 315 //a little above normal body temperature
required_reagents = list("skooma" = 1)