diff --git a/GainStation13/code/mechanics/fatness.dm b/GainStation13/code/mechanics/fatness.dm
index 29370458..5ad4c6ed 100644
--- a/GainStation13/code/mechanics/fatness.dm
+++ b/GainStation13/code/mechanics/fatness.dm
@@ -52,6 +52,9 @@
else //If it's not being hidden
fatness = fatness_real //Make their current fatness their real fatness
+ if(client?.prefs?.weight_gain_extreme)
+ xwg_resize()
+
return TRUE
@@ -102,11 +105,21 @@
fatness_hidden = TRUE
fatness_over = hide_amount
fatness = fatness_over //To update a mob's fatness with the new amount to be shown immediately
+ if(client?.prefs?.weight_gain_extreme)
+ xwg_resize()
return TRUE
/mob/living/carbon/proc/fat_show() //If something that hides fatness is removed or expires, it'll call this method
fatness_hidden = FALSE
fatness = fatness_real //To update a mob's fatness with their real one immediately
+ if(client?.prefs?.weight_gain_extreme)
+ xwg_resize()
return TRUE
+
+/mob/living/carbon/proc/xwg_resize()
+ var/xwg_size = sqrt(fatness/FATNESS_LEVEL_BLOB)
+ xwg_size = min(xwg_size, RESIZE_MACRO)
+ xwg_size = max(xwg_size, custom_body_size*0.01)
+ resize(xwg_size)
diff --git a/GainStation13/code/modules/client/preferences/preferences.dm b/GainStation13/code/modules/client/preferences/preferences.dm
index f7f591be..f8166f8f 100644
--- a/GainStation13/code/modules/client/preferences/preferences.dm
+++ b/GainStation13/code/modules/client/preferences/preferences.dm
@@ -13,6 +13,8 @@
var/weight_gain_magic = FALSE
///Weight gain from viruses
var/weight_gain_viruses = FALSE
+ ///Extreme weight gain
+ var/weight_gain_extreme = FALSE
///Does the person wish to be involved with non-con weight gain events?
var/noncon_weight_gain = FALSE
diff --git a/GainStation13/code/obj/items/minor_items.dm b/GainStation13/code/obj/items/minor_items.dm
index 32afc828..59b41b7f 100644
--- a/GainStation13/code/obj/items/minor_items.dm
+++ b/GainStation13/code/obj/items/minor_items.dm
@@ -143,3 +143,17 @@
icon_state = "ballgag"
item_state = "ballgag"
flags_inv = HIDEFACE
+
+/obj/item/service_sign
+ name = "service sign"
+ desc = "A sign that reads 'closed'"
+ icon = 'GainStation13/icons/obj/service_sign.dmi'
+ icon_state = "sign_closed"
+
+/obj/item/service_sign/attack_self()
+ if(icon_state == "sign_closed")
+ icon_state = "sign_open"
+ desc = "A sign that reads 'open'"
+ else
+ icon_state = "sign_closed"
+ desc = "A sign that reads 'closed'"
diff --git a/GainStation13/icons/obj/service_sign.dmi b/GainStation13/icons/obj/service_sign.dmi
new file mode 100644
index 00000000..76b89927
Binary files /dev/null and b/GainStation13/icons/obj/service_sign.dmi differ
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 737247ac..e83c3e9a 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -41,6 +41,9 @@
else if(isliving(mover))
if(istype(mover.pulledby, /mob/living/simple_animal/hostile/poison/giant_spider))
return TRUE
+ if(mover.pulledby)
+ if(HAS_TRAIT(mover.pulledby, TRAIT_WEB_WEAVER))
+ return TRUE
if(prob(50))
to_chat(mover, "You get stuck in \the [src] for a moment.")
return FALSE
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 53634aa6..cf9a916a 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -483,6 +483,8 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
new/datum/stack_recipe("colored yellow", /obj/item/storage/box/yellow), \
new/datum/stack_recipe("colored pink", /obj/item/storage/box/pink), \
new/datum/stack_recipe("colored purple", /obj/item/storage/box/purple), \
+ null, \
+ new/datum/stack_recipe("open/closed sign", /obj/item/service_sign), \
))
/obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 8702b594..0f509622 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1059,6 +1059,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Weight Gain - Weapons:[weight_gain_weapons == TRUE ? "Enabled" : "Disabled"]
"
dat += "Weight Gain - Magic:[weight_gain_magic == TRUE ? "Enabled" : "Disabled"]
"
dat += "Weight Gain - Viruses:[weight_gain_viruses == TRUE ? "Enabled" : "Disabled"]
"
+ dat += "Extreme Weight Gain:[weight_gain_extreme == TRUE ? "Enabled" : "Disabled"]
"
//Add the Hyper stuff below here
dat += "