diff --git a/GainStation13/code/mechanics/fatness.dm b/GainStation13/code/mechanics/fatness.dm
index d888dfd936..02a0190c15 100644
--- a/GainStation13/code/mechanics/fatness.dm
+++ b/GainStation13/code/mechanics/fatness.dm
@@ -135,6 +135,10 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/command/bridge, /area/mainten
if(!client?.prefs?.weight_gain_atmos)
return FALSE
+ if(TRANSFORMATION)
+ if(!client?.prefs?.transformation)
+ return FALSE
+
if(FATTENING_TYPE_WEIGHT_LOSS)
if(HAS_TRAIT(src, TRAIT_WEIGHT_LOSS_IMMUNE))
return FALSE
diff --git a/GainStation13/code/modules/client/preferences/preferences.dm b/GainStation13/code/modules/client/preferences/preferences.dm
index d8ce7cf670..bb76c9cc42 100644
--- a/GainStation13/code/modules/client/preferences/preferences.dm
+++ b/GainStation13/code/modules/client/preferences/preferences.dm
@@ -17,6 +17,8 @@
var/weight_gain_nanites = FALSE
//Weight gain from atmos gasses
var/weight_gain_atmos = FALSE
+ ///content related to transformation
+ var/transformation = FALSE
///Blueberry Inflation
var/blueberry_inflation = FALSE
///Extreme weight gain
diff --git a/GainStation13/code/modules/mob/living/carbon/human/species_types/mootant.dm b/GainStation13/code/modules/mob/living/carbon/human/species_types/mootant.dm
index 08d9241d20..47d90d81ec 100644
--- a/GainStation13/code/modules/mob/living/carbon/human/species_types/mootant.dm
+++ b/GainStation13/code/modules/mob/living/carbon/human/species_types/mootant.dm
@@ -115,17 +115,21 @@
/datum/reagent/mutationtoxin/mootant/on_mob_life(mob/living/carbon/human/H)
..()
- if(!istype(H))
+ if(H?.client?.prefs?.transformation)
+ to_chat(H, "You crumple in agony as your flesh wildly morphs into a new bovine form!")
+ H.visible_message("[H] falls to the ground and screams as [H.p_their()] their body turns more bovine!")
+ H.DefaultCombatKnockdown(60)
+ H.adjust_fatness(400, FATTENING_TYPE_CHEM)
+ H.dna.features["breasts_producing"] = TRUE
+ H.dna.features["mam_ears"] = "Mootant ALT (Tertiary)"
+ H.dna.features["mam_snouts"] = "Mootant ALT (Tertiary)"
+ H.dna.features["mam_tail"] = "Mootant"
+ H.reagents.add_reagent(/datum/reagent/fermi/breast_enlarger, 40) //instead of adding breasts as a mutant organ, let's just make them grow some
+ H.update_body()
+ addtimer(CALLBACK(src, PROC_REF(mutate), H), 30)
return
- to_chat(H, "You crumple in agony as your flesh wildly morphs into a new bovine form!")
- H.visible_message("[H] falls to the ground and screams as [H.p_their()] their body turns more bovine!")
- H.DefaultCombatKnockdown(60)
- H.adjust_fatness(400, FATTENING_TYPE_CHEM)
- H.dna.features["breasts_producing"] = TRUE
- H.dna.features["mam_ears"] = "Mootant ALT (Tertiary)"
- H.dna.features["mam_snouts"] = "Mootant ALT (Tertiary)"
- H.dna.features["mam_tail"] = "Mootant"
- H.reagents.add_reagent(/datum/reagent/fermi/breast_enlarger, 40) //instead of adding breasts as a mutant organ, let's just make them grow some
- H.update_body()
- addtimer(CALLBACK(src, PROC_REF(mutate), H), 30)
- return
+
+ if(!H?.client?.prefs?.transformation)
+ to_chat(H, span_warning("It seems like [H] resisted the effects of the mutation toxin."))
+ return FALSE
+
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index d914f07c15..4522b6cdea 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -597,5 +597,6 @@ GLOBAL_LIST_INIT(pda_reskins, list(
#define FATTENING_TYPE_RADIATIONS "radiations"
#define FATTENING_TYPE_WEIGHT_LOSS "weight_loss"
#define FATTENING_TYPE_ALMIGHTY "almighty" //This ignores prefs, please only use this for smites and other admin controlled instances.
+#define TRANSFORMATION "transformation"
#define FATNESS_TO_WEIGHT_RATIO 0.25
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 9308e8ab23..46b0f9e257 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1426,6 +1426,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Show that you want to be confronted:[trouble_seeker == TRUE ? "Enabled" : "Disabled"]
"
dat += "Bot Feeding:[bot_feeding == TRUE ? "Enabled" : "Disabled"]
"
dat += "Blueberry Inflation:[blueberry_inflation == TRUE ? "Enabled" : "Disabled"]
"
+
dat += "Hear Burping Noises: [(cit_toggles & BURPING_NOISES) ? "Allowed" : "Disallowed"]
"
dat += "Hear Farting Noises: [(cit_toggles & FARTING_NOISES) ? "Allowed" : "Disallowed"]
"
@@ -1455,6 +1456,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "
"
dat += "Object TF:[object_tf == TRUE ? "Enabled" : "Disabled"]
"
dat += "
"
+ dat += "Transformation:[transformation == TRUE ? "Enabled" : "Disabled"]
"
+ dat += "
"
dat += "Extreme Weight Gain (Sprite Size scales with weight):[weight_gain_extreme == TRUE ? "Enabled" : "Disabled"]
"
dat += "Persistent Fat (endround/cryo weight becomes your new start weight):[weight_gain_persistent == TRUE ? "Enabled" : "Disabled"]
"
dat += "Permanent Weight (hard to remove and persistent weight):[weight_gain_permanent == TRUE ? "Enabled" : "Disabled"]
"
@@ -3575,6 +3578,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("object_tf")
object_tf = !object_tf
+ if("transformation")
+ transformation = !transformation
if("blueberry_inflation")
blueberry_inflation = !blueberry_inflation
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 400638ebef..1b40980735 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -969,6 +969,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["extreme_fatness_vulnerable"] >> extreme_fatness_vulnerable
S["object_tf"] >> object_tf
S["blueberry_inflation"] >> blueberry_inflation
+ S["transformation"] >> transformation
S["feature_breasts_fluid"] >> features["breasts_fluid"]
S["feature_balls_fluid"] >> features["balls_fluid"]
S["alt_titles_preferences"] >> alt_titles_preferences
@@ -1271,6 +1272,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["extreme_fatness_vulnerable"], extreme_fatness_vulnerable)
WRITE_FILE(S["object_tf"], object_tf)
WRITE_FILE(S["blueberry_inflation"], blueberry_inflation)
+ WRITE_FILE(S["transformation"], transformation)
WRITE_FILE(S["feature_breasts_fluid"], features["breasts_fluid"])
// records