From 76924ab5977e81d5bf4c4fdc77c3b030dbcf1f3e Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Sun, 8 Feb 2026 16:35:49 -0700 Subject: [PATCH] [MIRROR] Reduce Clumsy Gene's Obnoxious RNG (#12397) Co-authored-by: Will <7099514+Willburd@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- code/__defines/dna.dm | 2 ++ code/game/objects/items.dm | 2 +- code/game/objects/items/devices/flash.dm | 2 +- code/game/objects/items/devices/flashlight.dm | 2 +- code/game/objects/items/devices/scanners/health.dm | 2 +- code/game/objects/items/weapons/grenades/grenade.dm | 2 +- code/game/objects/items/weapons/handcuffs.dm | 4 ++-- code/game/objects/items/weapons/material/kitchen.dm | 6 +++--- code/game/objects/items/weapons/melee/energy.dm | 2 +- code/game/objects/items/weapons/shields.dm | 2 +- code/game/objects/items/weapons/stunbaton.dm | 2 +- code/game/objects/items/weapons/swords_axes_etc.dm | 4 ++-- code/game/objects/items/weapons/tools/screwdriver.dm | 2 +- code/game/objects/items/weapons/trays.dm | 2 +- code/game/objects/items/weapons/weaponry.dm | 2 +- code/modules/assembly/mousetrap.dm | 4 ++-- .../carbon/human/species/station/traits/negative_genes.dm | 1 + code/modules/mob/living/silicon/robot/analyzer.dm | 2 +- code/modules/paperwork/paper.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/guns/energy/gunsword_vr.dm | 2 +- code/modules/reagents/reagent_containers/syringes.dm | 2 +- code/modules/vore/fluffstuff/custom_items_vr.dm | 2 +- 23 files changed, 29 insertions(+), 26 deletions(-) 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)