diff --git a/code/datums/elements/flavor_text.dm b/code/datums/elements/flavor_text.dm
index b218491195..2f905e965c 100644
--- a/code/datums/elements/flavor_text.dm
+++ b/code/datums/elements/flavor_text.dm
@@ -105,6 +105,8 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
else
content += "\n"
+ content += " | Stomping Interactions: [L.client.prefs.stomppref ? "Yes" : "No"]\n"
+
if(L.client.prefs.extremepref == "Yes")
content += "
Extreme content: [L.client.prefs.extremepref] | Extreme content harm: [L.client.prefs.extremeharm]\n"
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index dfa3309ffb..2e919d8d92 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1523,6 +1523,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Edging : [(cit_toggles & EDGING) ? "Allowed" : "Disallowed"]
"
dat += "? "
dat += "Unholy ERP verbs : [unholypref]
" //https://www.youtube.com/watch?v=OHKARc-GObU
+ dat += "? "
+ dat += "Stomping Interactions : [stomppref ? "Yes" : "No"]
"
//END OF SPLURT EDIT
//SKYRAT EDIT
dat += "? " //SPLURT Edit (wow! editception???)
@@ -3511,6 +3513,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
unholypref = "No"
if("No")
unholypref = "Yes"
+ if("stomppref") // What the fuck is this?
+ stomppref = !stomppref
//Skyrat edit - *someone* offered me actual money for this shit
if("extremepref") //i hate myself for doing this
switch(extremepref) //why the fuck did this need to use cycling instead of input from a list
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 77e63db5fc..521c5ef368 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
-#define SAVEFILE_VERSION_MAX 58
+#define SAVEFILE_VERSION_MAX 58.01
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
diff --git a/modular_splurt/code/modules/client/preferences.dm b/modular_splurt/code/modules/client/preferences.dm
index 8aea699f1b..a22d166233 100644
--- a/modular_splurt/code/modules/client/preferences.dm
+++ b/modular_splurt/code/modules/client/preferences.dm
@@ -6,6 +6,7 @@
/datum/preferences
max_save_slots = DEFAULT_SAVE_SLOTS
var/unholypref = "No" //Goin 2 hell fo dis one
+ var/stomppref = TRUE // Please step on me.
var/list/gfluid_blacklist = list() //Stuff you don't want people to cum into you
var/new_character_creator = TRUE // old/new character creator
var/show_in_directory = 1 //Show in Character Directory
@@ -1056,6 +1057,8 @@
//SPLURT EDIT
dat += "? "
dat += "Unholy ERP verbs : [unholypref]
" //https://www.youtube.com/watch?v=OHKARc-GObU
+ dat += "? "
+ dat += "Stomping Interactions : [stomppref ? "Yes" : "No"]
"
//END OF SPLURT EDIT
//SKYRAT EDIT
dat += "? "
diff --git a/modular_splurt/code/modules/client/preferences_savefile.dm b/modular_splurt/code/modules/client/preferences_savefile.dm
index deda14d0e1..1e555d2dff 100644
--- a/modular_splurt/code/modules/client/preferences_savefile.dm
+++ b/modular_splurt/code/modules/client/preferences_savefile.dm
@@ -10,6 +10,8 @@
directory_tag = sanitize_inlist(directory_tag, GLOB.char_directory_tags, initial(directory_tag))
directory_erptag = sanitize_inlist(directory_erptag, GLOB.char_directory_erptags, initial(directory_erptag))
directory_ad = strip_html_simple(directory_ad, MAX_FLAVOR_LEN)
+ // Get stomping preferences.
+ S["stomp_pref"] >> stomppref
/datum/preferences/proc/splurt_character_pref_save(savefile/S) //TODO: modularize our other savefile edits... maybe?
//Character directory
@@ -18,11 +20,17 @@
WRITE_FILE(S["directory_erptag"], directory_erptag)
WRITE_FILE(S["directory_ad"], directory_ad)
+ // Stomping preferences.
+ WRITE_FILE(S["stomp_pref"], stomppref)
+
/datum/preferences/update_preferences(current_version, savefile/S)
. = ..()
if(current_version < 57.01) //a
new_character_creator = TRUE
+ if(current_version < 58.01) // Stomp pref.
+ stomppref = TRUE
+
/datum/preferences/update_character(current_version, savefile/S)
. = ..()
if(current_version < 53.01)
diff --git a/modular_splurt/code/modules/resize/resizing.dm b/modular_splurt/code/modules/resize/resizing.dm
new file mode 100644
index 0000000000..9554d1db85
--- /dev/null
+++ b/modular_splurt/code/modules/resize/resizing.dm
@@ -0,0 +1,8 @@
+/mob/living/handle_micro_bump_other(mob/living/target)
+
+ // If the target is not in combat mode, if the target has the preference off, stop the interaction.
+ if(target.a_intent != INTENT_HARM && SEND_SIGNAL(target, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE) && target.client.prefs.stomppref == FALSE)
+ return FALSE
+
+ // Do the rest of the function normally.
+ . = ..()
diff --git a/tgstation.dme b/tgstation.dme
index 066aea41ac..4ce7afc531 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4925,6 +4925,7 @@
#include "modular_splurt\code\modules\research\techweb\nodes\medical_nodes.dm"
#include "modular_splurt\code\modules\research\techweb\nodes\nanites_nodes.dm"
#include "modular_splurt\code\modules\research\techweb\nodes\robotic_nodes.dm"
+#include "modular_splurt\code\modules\resize\resizing.dm"
#include "modular_splurt\code\modules\research\xenoarch\artifact.dm"
#include "modular_splurt\code\modules\research\xenoarch\artifact_list.dm"
#include "modular_splurt\code\modules\research\xenoarch\strange_rock.dm"