diff --git a/code/modules/client/preference_setup/vore/01_ears.dm b/code/modules/client/preference_setup/vore/01_ears.dm
index 17d03232ff..22b8699730 100644
--- a/code/modules/client/preference_setup/vore/01_ears.dm
+++ b/code/modules/client/preference_setup/vore/01_ears.dm
@@ -69,7 +69,7 @@
if(tail_styles_list[pref.tail_style])
var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style]
if (T.do_colouration)
- . += "Change Color \
+ . += "
Change Color \
\
> pref.size_multiplier
+ S["weight_vr"] >> pref.weight_vr
+ S["weight_gain"] >> pref.weight_gain
+ S["weight_loss"] >> pref.weight_loss
+
+/datum/category_item/player_setup_item/vore/size/save_character(var/savefile/S)
+ S["size_multiplier"] << pref.size_multiplier
+ S["weight_vr"] << pref.weight_vr
+ S["weight_gain"] << pref.weight_gain
+ S["weight_loss"] << pref.weight_loss
+
+/datum/category_item/player_setup_item/vore/size/sanitize_character()
+ var/valid_scales = list(RESIZE_HUGE, RESIZE_BIG, RESIZE_NORMAL, RESIZE_SMALL, RESIZE_TINY);
+ pref.size_multiplier = sanitize_inlist(pref.size_multiplier, valid_scales, initial(pref.size_multiplier))
+
+ pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr))
+ pref.weight_gain = sanitize_integer(pref.weight_gain, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_gain))
+ pref.weight_loss = sanitize_integer(pref.weight_loss, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_loss))
+
+/datum/category_item/player_setup_item/vore/size/copy_to_mob(var/mob/living/carbon/human/character)
+ character.size_multiplier = pref.size_multiplier
+ character.weight = pref.weight_vr
+ character.weight_gain = pref.weight_gain
+ character.weight_loss = pref.weight_loss
+
+/datum/category_item/player_setup_item/vore/size/content(var/mob/user)
+ . += "
"
+ . += "Scale: [round(pref.size_multiplier*100)]%
"
+ . += "
"
+ . += "Relative Weight: [pref.weight_vr]
"
+ . += "Weight Gain Rate: [pref.weight_gain]
"
+ . += "Weight Loss Rate: [pref.weight_loss]
"
+
+/datum/category_item/player_setup_item/vore/size/OnTopic(var/href, var/list/href_list, var/mob/user)
+ if(href_list["size_multiplier"])
+ var/list/size_types = player_sizes_list
+ var/new_size = input(user, "Choose your character's size:", "Character Preference", pref.size_multiplier) as null|anything in size_types
+ if(new_size)
+ pref.size_multiplier = size_types[new_size]
+ return TOPIC_REFRESH
+
+ else if(href_list["weight"])
+ var/new_weight = input(user, "Choose your character's relative body weight.\n\
+ This measurement should be set relative to a normal 5'10'' person's body and not the actual size of your character.\n\
+ If you set your weight to 500 because you're a naga or have metal implants then complain that you're a blob I\n\
+ swear to god I will find you and I will punch you for not reading these directions!\n\
+ ([WEIGHT_MIN]-[WEIGHT_MAX])", "Character Preference") as num|null
+ if(new_weight)
+ var/unit_of_measurement = alert(user, "Is that number in pounds (lb) or kilograms (kg)?", "Confirmation", "Pounds", "Kilograms")
+ if(unit_of_measurement == "Pounds")
+ new_weight = round(text2num(new_weight),4)
+ if(unit_of_measurement == "Kilograms")
+ new_weight = round(2.20462*text2num(new_weight),4)
+ pref.weight_vr = sanitize_integer(new_weight, WEIGHT_MIN, WEIGHT_MAX, pref.weight_vr)
+ return TOPIC_REFRESH
+
+ else if(href_list["weight_gain"])
+ var/weight_gain_rate = input(user, "Choose your character's rate of weight gain between 100% \
+ (full realism body fat gain) and 0% (no body fat gain).\n\
+ (Due to a small bug, if you want to disable weight gain, set this to 0.01 for now.)\
+ ([WEIGHT_CHANGE_MIN]-[WEIGHT_CHANGE_MAX])", "Character Preference") as num|null
+ if(weight_gain_rate)
+ pref.weight_gain = round(text2num(weight_gain_rate),1)
+ return TOPIC_REFRESH
+
+ else if(href_list["weight_loss"])
+ var/weight_loss_rate = input(user, "Choose your character's rate of weight loss between 100% \
+ (full realism body fat loss) and 0% (no body fat loss).\n\
+ (Due to a small bug, if you want to disable weight loss, set this to 0.01 for now.)\
+ ([WEIGHT_CHANGE_MIN]-[WEIGHT_CHANGE_MAX])", "Character Preference") as num|null
+ if(weight_loss_rate)
+ pref.weight_loss = round(text2num(weight_loss_rate),1)
+ return TOPIC_REFRESH
+
+ return ..();
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 36b1933352..051c30fbe1 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -210,8 +210,6 @@
P.digestable = src.digestable
P.belly_prefs = src.vore_organs
- P.weight_gain = src.weight_gain
- P.weight_loss = src.weight_loss
return 1
@@ -227,8 +225,6 @@
src.digestable = P.digestable
src.vore_organs = P.belly_prefs
- src.weight_gain = P.weight_gain
- src.weight_loss = P.weight_loss
if(!src.vore_organs) //Emergency double-backup to stop runtimes from doing .len on this.
vore_organs = list()
diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm
index 9655113b5e..c4157d2cb2 100644
--- a/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore_vr.dm
@@ -43,8 +43,6 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
//Actual preferences
var/digestable = 1
var/list/belly_prefs = list()
- var/weight_gain = 1
- var/weight_loss = 0.5
//Mechanically required
var/path
@@ -103,8 +101,6 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
S["digestable"] >> digestable
S["belly_prefs"] >> belly_prefs
- S["weight_gain"] >> weight_gain
- S["weight_loss"] >> weight_loss
return 1
@@ -117,7 +113,5 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
S["digestable"] << digestable
S["belly_prefs"] << belly_prefs
- S["weight_gain"] << weight_gain
- S["weight_loss"] << weight_loss
return 1
diff --git a/vorestation.dme b/vorestation.dme
index 031ee233b2..b5b11149ce 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1031,6 +1031,7 @@
#include "code\modules\client\preference_setup\occupation\occupation.dm"
#include "code\modules\client\preference_setup\skills\skills.dm"
#include "code\modules\client\preference_setup\vore\01_ears.dm"
+#include "code\modules\client\preference_setup\vore\02_size.dm"
#include "code\modules\clothing\chameleon.dm"
#include "code\modules\clothing\clothing.dm"
#include "code\modules\clothing\ears\skrell.dm"