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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user