diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index 2a273eaab1..846291edc4 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -11,6 +11,8 @@ var/global/list/positive_traits = list() // Positive custom species traits, inde
var/global/list/traits_costs = list() // Just path = cost list, saves time in char setup
var/global/list/all_traits = list() // All of 'em at once (same instances)
+var/global/list/sensorpreflist = list("Off", "Binary", "Vitals", "Tracking", "No Preference") //TFF 5/8/19 - Suit Sensors global list
+
var/global/list/custom_species_bases = list() // Species that can be used for a Custom Species icon base
//stores numeric player size options indexed by name
diff --git a/code/modules/client/preference_setup/vore/09_misc.dm b/code/modules/client/preference_setup/vore/09_misc.dm
index 09369d4901..951e469d8d 100644
--- a/code/modules/client/preference_setup/vore/09_misc.dm
+++ b/code/modules/client/preference_setup/vore/09_misc.dm
@@ -1,5 +1,4 @@
-/datum/preferences
- var/show_in_directory = TRUE
+//TFF 5/8/19 - moved /datum/preferences to preferences_vr.dm
/datum/category_item/player_setup_item/vore/misc
name = "Misc Settings"
@@ -7,20 +6,35 @@
/datum/category_item/player_setup_item/vore/misc/load_character(var/savefile/S)
S["show_in_directory"] >> pref.show_in_directory
-
+ S["sensorpref"] >> pref.sensorpref //TFF 5/8/19 - add sensor pref setting to load after saved
/datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S)
S["show_in_directory"] << pref.show_in_directory
+ S["sensorpref"] << pref.sensorpref //TFF 5/8/19 - add sensor pref setting to be saveable
+
+//TFF 5/8/19 - add new datum category to allow for setting multiple settings when this is selected in the loadout.
+/datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character)
+ if(pref.sensorpref > 5 || pref.sensorpref < 1)
+ pref.sensorpref = 5
+ character.sensorpref = pref.sensorpref
/datum/category_item/player_setup_item/vore/misc/sanitize_character()
pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory))
+ pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) //TFF - 5/8/19 - add santisation for sensor prefs
/datum/category_item/player_setup_item/vore/misc/content(var/mob/user)
. += "
"
. += "Appear in Character Directory: [pref.show_in_directory ? "Yes" : "No"]
"
+ . += "Sensor Preferences: [sensorpreflist[pref.sensorpref]]
" //TFF 5/8/19 - Allow selection of sensor settings from off, binary, vitals, tracking, or random
/datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user)
if(href_list["toggle_show_in_directory"])
pref.show_in_directory = pref.show_in_directory ? 0 : 1;
return TOPIC_REFRESH
+ //TFF 5/8/19 - add new thing so you can choose the sensor setting your character can get.
+ else if(href_list["toggle_sensor_setting"])
+ var/new_sensorpref = input(user, "Choose your character's sensor preferences:", "Character Preferences", sensorpreflist[pref.sensorpref]) as null|anything in sensorpreflist
+ if (!isnull(new_sensorpref) && CanUseTopic(user))
+ pref.sensorpref = sensorpreflist.Find(new_sensorpref)
+ return TOPIC_REFRESH
return ..();
diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm
index 23105324a5..61c2d83025 100644
--- a/code/modules/client/preferences_vr.dm
+++ b/code/modules/client/preferences_vr.dm
@@ -1 +1,4 @@
-//File isn't currently being used.
+//TFF 5/8/19 - minor refactoring of this thing from 09_misc.dm to call this for preferences.
+datum/preferences
+ var/show_in_directory = 1 //TFF 5/8/19 - show in Character Directory
+ var/sensorpref = 5 //TFF 5/8/19 - set character's suit sensor level
diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index fc2d5c48c2..9c04fc9841 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -132,3 +132,22 @@
standing.pixel_x = -16
standing.layer = BODY_LAYER + 15 // 15 is above tail layer, so will not be covered by taurbody.
return standing
+
+//TFF 5/8/19 - sets Vorestation /obj/item/clothing/under sensor setting default?
+/obj/item/clothing/under
+ sensor_mode = 3
+ var/sensorpref = 5
+
+//TFF 5/8/19 - define numbers and specifics for suit sensor settings
+/obj/item/clothing/under/New(var/mob/living/carbon/human/H)
+ ..()
+ sensorpref = isnull(H) ? 1 : (ishuman(H) ? H.sensorpref : 1)
+ switch(sensorpref)
+ if(1) sensor_mode = 0 //Sensors off
+ if(2) sensor_mode = 1 //Sensors on binary
+ if(3) sensor_mode = 2 //Sensors display vitals
+ if(4) sensor_mode = 3 //Sensors display vitals and enables tracking
+ if(5) sensor_mode = pick(0,1,2,3) //Select a random setting
+ else
+ sensor_mode = pick(0,1,2,3)
+ log_debug("Invalid switch for suit sensors, defaulting to random. [sensorpref] chosen")
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm
index f856e4ab39..0af0b1f7d1 100644
--- a/code/modules/mob/living/carbon/human/human_defines_vr.dm
+++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm
@@ -7,3 +7,6 @@
var/flapping = 0
var/vantag_pref = VANTAG_NONE //What's my status?
var/impersonate_bodytype //For impersonating a bodytype
+
+ //TFF 5/8/19 - add and set suit sensor setting define to 5 for random setting
+ var/sensorpref = 5
\ No newline at end of file
diff --git a/code/modules/mob/new_player/preferences_setup_vr.dm b/code/modules/mob/new_player/preferences_setup_vr.dm
index a690c27170..8b1760c65c 100644
--- a/code/modules/mob/new_player/preferences_setup_vr.dm
+++ b/code/modules/mob/new_player/preferences_setup_vr.dm
@@ -22,4 +22,8 @@
stamp.Scale(stamp.Width()*size_multiplier,stamp.Height()*size_multiplier)
preview_icon.Blend(stamp, ICON_OVERLAY, 112-stamp.Width()/2, 5)
- preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2) // Scaling here to prevent blurring in the browser.
\ No newline at end of file
+ preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2) // Scaling here to prevent blurring in the browser.
+
+//TFF 5/8/19 - add randomised sensor setting for random button clicking
+/datum/preferences/randomize_appearance_and_body_for(var/mob/living/carbon/human/H)
+ sensorpref = rand(1,5)
\ No newline at end of file