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.