diff --git a/code/__defines/dna.dm b/code/__defines/dna.dm
index 6f8ee40e60..de06d1dce9 100644
--- a/code/__defines/dna.dm
+++ b/code/__defines/dna.dm
@@ -145,3 +145,5 @@
// Misc
#define TK_DENIED_MESSAGE span_warning("You are too distracted to focus your telekinesis.")
#define TK_OUTRANGED_MESSAGE span_notice("Your telekinesis won't reach that far.")
+#define CLUMSY_FAIL_CHANCE(U) ((CLUMSY in U.mutations) && prob(15))
+#define CLUMSY_HARM_CHANCE(U) ((CLUMSY in U.mutations) && prob(10))
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index dd250597a9..a22d4240e8 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -725,7 +725,7 @@ GLOBAL_LIST_INIT(slot_flags_enumeration, list(
user.do_attack_animation(M)
src.add_fingerprint(user)
- //if((CLUMSY in user.mutations) && prob(50))
+ //if(CLUMSY_HARM_CHANCE(user))
// M = user
/*
to_chat(M, span_warning("You stab yourself in the eye."))
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 231c33d483..e8742c2c56 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -94,7 +94,7 @@
return null
/obj/item/flash/proc/clown_check(var/mob/user)
- if(user && (CLUMSY in user.mutations) && prob(50))
+ if(user && CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_warning("\The [src] slips out of your hand."))
user.drop_item()
return 0
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 5f292af016..7257cbe5eb 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -122,7 +122,7 @@
add_fingerprint(user)
if(on && user.zone_sel.selecting == O_EYES)
- if((CLUMSY in user.mutations) && prob(50)) //too dumb to use flashlight properly
+ if(CLUMSY_FAIL_CHANCE(user)) //too dumb to use flashlight properly
return ..() //just hit them in the head
var/mob/living/carbon/human/H = M //mob has protective eyewear
diff --git a/code/game/objects/items/devices/scanners/health.dm b/code/game/objects/items/devices/scanners/health.dm
index d1fa012688..fea08b483e 100644
--- a/code/game/objects/items/devices/scanners/health.dm
+++ b/code/game/objects/items/devices/scanners/health.dm
@@ -44,7 +44,7 @@
/obj/item/healthanalyzer/proc/scan_mob(mob/living/M, mob/living/user)
var/dat = ""
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_FAIL_CHANCE(user))
user.visible_message(span_warning("\The [user] has analyzed the floor's vitals!"), span_warning("You try to analyze the floor's vitals!"))
dat += "Analyzing Results for the floor:
"
dat += "Overall Status: Healthy
"
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 439df2fdd9..62939b8982 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -23,7 +23,7 @@
drop_sound = 'sound/items/drop/device.ogg'
/obj/item/grenade/proc/clown_check(var/mob/living/user)
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_HARM_CHANCE(user))
to_chat(user, span_warning("Huh? How does this thing work?"))
activate(user)
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index ae3a0fbae6..7aa797dcda 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -34,7 +34,7 @@
if(!user.IsAdvancedToolUser())
return
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_warning("Uh ... how do those things work?!"))
attempt_to_cuff(user, user)
return
@@ -227,7 +227,7 @@
if(!user.IsAdvancedToolUser())
return
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_warning("Uh ... how do those things work?!"))
place_legcuffs(user, user)
return
diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm
index 39f39ddce3..42420481c4 100644
--- a/code/game/objects/items/weapons/material/kitchen.dm
+++ b/code/game/objects/items/weapons/material/kitchen.dm
@@ -90,7 +90,7 @@
if(user.a_intent != I_HELP)
if(user.zone_sel.selecting == BP_HEAD || user.zone_sel.selecting == O_EYES)
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_HARM_CHANCE(user))
M = user
return eyestab(M,user)
else
@@ -186,7 +186,7 @@
/* From the time of Clowns. Commented out for posterity, and sanity.
/obj/item/material/knife/attack(target as mob, mob/living/user as mob)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_HARM_CHANCE(user))
to_chat(user, span_warning("You accidentally cut yourself with \the [src]."))
user.take_organ_damage(20)
return
@@ -212,7 +212,7 @@
pickup_sound = 'sound/items/pickup/wooden.ogg'
/obj/item/material/kitchen/rollingpin/attack(mob/living/M as mob, mob/living/user as mob)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_HARM_CHANCE(user))
to_chat(user, span_warning("\The [src] slips out of your hand and hits your head."))
user.take_organ_damage(10)
user.Paralyse(2)
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 7996b709ae..6b539b14ea 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -110,7 +110,7 @@
return
if (active)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_HARM_CHANCE(user))
user.visible_message(span_danger("\The [user] accidentally cuts [user.p_their()] with \the [src]."),\
span_danger("You accidentally cut yourself with \the [src]."))
user.take_organ_damage(5,5)
diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm
index 9d98bd8560..83fb46db43 100644
--- a/code/game/objects/items/weapons/shields.dm
+++ b/code/game/objects/items/weapons/shields.dm
@@ -157,7 +157,7 @@
. = ..(user)
if(.)
return TRUE
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_warning("You beat yourself in the head with [src]."))
user.take_organ_damage(5)
active = !active
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index e292cd6b29..58789c0c2b 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -175,7 +175,7 @@
add_fingerprint(user)
/obj/item/melee/baton/attack(mob/M, mob/user)
- if(status && (CLUMSY in user.mutations) && prob(50))
+ if(status && CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_danger("You accidentally hit yourself with the [src]!"))
user.Weaken(30)
deductcharge(hitcost)
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index 78324b394c..a3759f5911 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -30,7 +30,7 @@
pickup_sound = 'sound/items/pickup/crowbar.ogg'
/obj/item/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_warning("You club yourself over the head."))
user.Weaken(3 * force)
if(ishuman(user))
@@ -101,7 +101,7 @@
/obj/item/melee/telebaton/attack(mob/target as mob, mob/living/user as mob)
if(on)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_warning("You club yourself over the head."))
user.Weaken(3 * force)
if(ishuman(user))
diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm
index 256be0a59e..863358e79e 100644
--- a/code/game/objects/items/weapons/tools/screwdriver.dm
+++ b/code/game/objects/items/weapons/tools/screwdriver.dm
@@ -60,7 +60,7 @@
return ..()
if(user.zone_sel.selecting != O_EYES && user.zone_sel.selecting != BP_HEAD)
return ..()
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_HARM_CHANCE(user))
M = user
return eyestab(M,user)
diff --git a/code/game/objects/items/weapons/trays.dm b/code/game/objects/items/weapons/trays.dm
index fdf512b299..467635e01a 100644
--- a/code/game/objects/items/weapons/trays.dm
+++ b/code/game/objects/items/weapons/trays.dm
@@ -31,7 +31,7 @@
sleep(rand(2,4))
- if((CLUMSY in user.mutations) && prob(50)) //What if he's a clown?
+ if(CLUMSY_FAIL_CHANCE(user)) //What if he's a clown?
to_chat(M, span_warning("You accidentally slam yourself with the [src]!"))
M.Weaken(1)
user.take_organ_damage(2)
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 1b5bc080fe..00c13243e0 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -23,7 +23,7 @@
to_chat(user, span_danger("You don't have the dexterity to do this!"))
return
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_HARM_CHANCE(user))
to_chat(user, span_danger("The rod slips out of your hand and hits your head."))
user.take_organ_damage(10)
user.Paralyse(20)
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index aa3b2483a9..a08a68ee95 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -57,7 +57,7 @@
if(!armed)
to_chat(user, span_notice("You arm [src]."))
else
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_FAIL_CHANCE(user))
var/which_hand = BP_L_HAND
if(!user.hand)
which_hand = BP_R_HAND
@@ -73,7 +73,7 @@
/obj/item/assembly/mousetrap/attack_hand(var/mob/living/user)
if(armed)
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_FAIL_CHANCE(user))
var/which_hand = BP_L_HAND
if(!user.hand)
which_hand = BP_R_HAND
diff --git a/code/modules/mob/living/carbon/human/species/station/traits/negative_genes.dm b/code/modules/mob/living/carbon/human/species/station/traits/negative_genes.dm
index 5ec068c59f..f6f87ce651 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits/negative_genes.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits/negative_genes.dm
@@ -52,6 +52,7 @@
activation_message="You feel lightheaded."
primitive_expression_messages=list("trips.")
+ mutation = CLUMSY
/datum/trait/negative/disability_coprolalia
name = "Coprolalia"
diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm
index c5450d020e..8ba23ab83d 100644
--- a/code/modules/mob/living/silicon/robot/analyzer.dm
+++ b/code/modules/mob/living/silicon/robot/analyzer.dm
@@ -27,7 +27,7 @@
user.show_message(span_blue("[mode ? "Toggled to cyborg analyzing mode." : "Toggled to cyborg upgrade scan mode."]"), 1)
/obj/item/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob)
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_FAIL_CHANCE(user))
to_chat(user, span_red("You try to analyze the floor's vitals!"))
for(var/mob/O in viewers(M, null))
O.show_message(span_red(text("[user] has analyzed the floor's vitals!")), 1)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index c9b916401f..7b0bce1af8 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -163,7 +163,7 @@
set category = "Object"
set src in usr
- if((CLUMSY in usr.mutations) && prob(50))
+ if(CLUMSY_FAIL_CHANCE(usr))
to_chat(usr, span_warning("You cut yourself on the paper."))
return
var/n_name = sanitizeSafe(tgui_input_text(usr, "What would you like to label the paper?", "Paper Labelling", null, MAX_NAME_LEN, encode = FALSE), MAX_NAME_LEN)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 399c9b8b20..f06868895f 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -216,7 +216,7 @@
if(HULK in M.mutations)
to_chat(M, span_danger("Your fingers are much too large for the trigger guard!"))
return FALSE
- if((CLUMSY in M.mutations) && prob(40)) //Clumsy handling
+ if(CLUMSY_HARM_CHANCE(M)) //Clumsy handling
var/obj/P = consume_next_projectile()
if(P)
if(process_projectile(P, user, user, pick(BP_L_FOOT, BP_R_FOOT)))
diff --git a/code/modules/projectiles/guns/energy/gunsword_vr.dm b/code/modules/projectiles/guns/energy/gunsword_vr.dm
index 371c46fd5a..38769ac6d3 100644
--- a/code/modules/projectiles/guns/energy/gunsword_vr.dm
+++ b/code/modules/projectiles/guns/energy/gunsword_vr.dm
@@ -100,7 +100,7 @@
if(.)
return TRUE
if (active)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_HARM_CHANCE(user))
user.visible_message(span_danger("\The [user] accidentally cuts [user.p_themselves()] with \the [src]."),\
span_danger("You accidentally cut yourself with \the [src]."))
user.take_organ_damage(5,5)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 4a86e87d7e..2d6a407aca 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -100,7 +100,7 @@
return
if(user.a_intent == I_HURT && ismob(target))
- if((CLUMSY in user.mutations) && prob(50))
+ if(CLUMSY_HARM_CHANCE(user))
target = user
syringestab(target, user)
return
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 18bf1cdad7..6f598fe1f5 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -1087,7 +1087,7 @@
if(.)
return TRUE
if (active)
- if ((CLUMSY in user.mutations) && prob(50))
+ if (CLUMSY_HARM_CHANCE(user))
user.visible_message(span_danger("\The [user] accidentally cuts \himself with \the [src]."),\
span_danger("You accidentally cut yourself with \the [src]."))
user.take_organ_damage(5,5)