diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 573b6580253..b743b26fc8f 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -1,3 +1,5 @@ +#define ADDICTION_SPEEDUP_TIME 1500 // 2.5 minutes + ///////////////////////////////////////// // SLEEPER CONSOLE ///////////////////////////////////////// @@ -340,7 +342,19 @@ for(var/datum/reagent/x in src.occupant.reagents.reagent_list) src.occupant.reagents.trans_to(beaker, 3) src.occupant.vessel.trans_to(beaker, 1) - src.updateDialog() + + if(occupant) + for(var/A in occupant.reagents.addiction_list) + var/datum/reagent/R = A + + var/addiction_removal_chance = 5 + if(world.timeofday > (R.last_addiction_dose + ADDICTION_SPEEDUP_TIME)) // 2.5 minutes + addiction_removal_chance = 10 + if(prob(addiction_removal_chance)) + occupant << "You no longer feel reliant on [R.name]!" + occupant.reagents.addiction_list.Remove(R) + + updateDialog() return @@ -642,4 +656,6 @@ qdel(O) src.add_fingerprint(usr) return - return \ No newline at end of file + return + +#undef ADDICTION_SPEEDUP_TIME \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/_reagent_base.dm b/code/modules/reagents/oldchem/reagents/_reagent_base.dm index 93194a16f49..a4ce0bcb429 100644 --- a/code/modules/reagents/oldchem/reagents/_reagent_base.dm +++ b/code/modules/reagents/oldchem/reagents/_reagent_base.dm @@ -35,18 +35,21 @@ if(method == INGEST) //Yes, even Xenos can get addicted to drugs. - if(prob(self.addiction_chance) && !is_type_in_list(self, M.reagents.addiction_list)) - M << "You suddenly feel invigorated and guilty..." - var/datum/reagent/new_reagent = new self.type() - new_reagent.last_addiction_dose = world.timeofday - M.reagents.addiction_list.Add(new_reagent) - else if(is_type_in_list(self, M.reagents.addiction_list)) - M << "You feel slightly better, but for how long?" - for(var/A in M.reagents.addiction_list) - var/datum/reagent/AD = A - if(AD && istype(AD, self)) - AD.last_addiction_dose = world.timeofday - AD.addiction_stage = 1 + var/can_become_addicted = M.reagents.reaction_check(M, self) + + if(can_become_addicted) + if(prob(self.addiction_chance) && !is_type_in_list(self, M.reagents.addiction_list)) + M << "You suddenly feel invigorated and guilty..." + var/datum/reagent/new_reagent = new self.type() + new_reagent.last_addiction_dose = world.timeofday + M.reagents.addiction_list.Add(new_reagent) + else if(is_type_in_list(self, M.reagents.addiction_list)) + M << "You feel slightly better, but for how long?" + for(var/A in M.reagents.addiction_list) + var/datum/reagent/AD = A + if(AD && istype(AD, self)) + AD.last_addiction_dose = world.timeofday + AD.addiction_stage = 1 return 1 /datum/reagent/proc/reaction_obj(var/obj/O, var/volume) //By default we transfer a small part of the reagent to the object diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm index 1b970f3014a..d633bb020ad 100644 --- a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm @@ -17,7 +17,6 @@ var/vomit_start = 180 //amount absorbed after which mob starts vomitting var/blur_start = 260 //amount absorbed after which mob starts getting blurred vision var/pass_out = 325 //amount absorbed after which mob starts passing out - addiction_chance = 4 //chance to become alcoholic /datum/reagent/ethanol/on_mob_life(var/mob/living/M as mob, var/alien) // Sobering multiplier.