diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 384e65bdcb..8014e04ad0 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -59,6 +59,7 @@
#define TRAIT_SKITTISH "skittish"
#define TRAIT_POOR_AIM "poor_aim"
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
+#define TRAIT_DRUNK_HEALING "drunk_healing"
// common trait sources
#define TRAIT_GENERIC "generic"
diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm
index d48c70f31b..ff3cb85b27 100644
--- a/code/datums/traits/good.dm
+++ b/code/datums/traits/good.dm
@@ -29,6 +29,16 @@
+/datum/quirk/drunkhealing
+ name = "Drunken Resilience"
+ desc = "Nothing like a good drink to make you feel on top of the world. Whenever you're drunk, you slowly recover from injuries."
+ value = 2
+ mob_trait = TRAIT_DRUNK_HEALING
+ gain_text = "You feel like a drink would do you good."
+ lose_text = "You no longer feel like drinking would ease your pain."
+ medical_record_text = "Patient has unusually efficient liver metabolism and can slowly regenerate wounds by drinking alcoholic beverages."
+
+
/datum/quirk/freerunning
name = "Freerunning"
desc = "You're great at quick moves! You can climb tables more quickly."
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 376f3f857b..cf8839d086 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -379,9 +379,13 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
if(prob(25))
slurring += 2
jitteriness = max(jitteriness - 3, 0)
+ if(has_trait(TRAIT_DRUNK_HEALING))
+ adjustBruteLoss(-0.12, FALSE)
+ adjustFireLoss(-0.06, FALSE)
if(drunkenness >= 11 && slurring < 5)
slurring += 1.2
+
if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director"))
if(SSresearch.science_tech)
if(drunkenness >= 12.9 && drunkenness <= 13.8)
@@ -398,10 +402,14 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
if(prob(5))
SSresearch.science_tech.remove_points_all(TECHWEB_POINT_TYPE_DEFAULT, BALLMER_POINTS)
say(pick(GLOB.ballmer_windows_me_msg))
+
if(drunkenness >= 41)
if(prob(25))
confused += 2
Dizzy(10)
+ if(has_trait(TRAIT_DRUNK_HEALING)) // effects stack with lower tiers
+ adjustBruteLoss(-0.3, FALSE)
+ adjustFireLoss(-0.15, FALSE)
if(drunkenness >= 51)
if(prob(5))
@@ -412,6 +420,9 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
if(drunkenness >= 61)
if(prob(50))
blur_eyes(5)
+ if(has_trait(TRAIT_DRUNK_HEALING))
+ adjustBruteLoss(-0.4, FALSE)
+ adjustFireLoss(-0.2, FALSE)
if(drunkenness >= 71)
blur_eyes(5)