diff --git a/code/__HELPERS/~bubber_helpers/text.dm b/code/__HELPERS/~bubber_helpers/text.dm new file mode 100644 index 00000000000..af6e13cb6f5 --- /dev/null +++ b/code/__HELPERS/~bubber_helpers/text.dm @@ -0,0 +1,17 @@ +/// Takes gender and attraction strings and returns a string with the format Gender/Sexuality: arg1, arg2 +/// if either value is Unset, remove that part of the string, if both are Unset, return an empty string +/proc/get_gender_attraction_string(gender, attraction) + var/gender_set = gender != "Unset" + var/attraction_set = attraction != "Unset" + if(!gender_set && !attraction_set) + return "" + + var/list/label = list() + var/list/values = list() + if(gender_set) + label += "Gender" + values += gender + if(attraction_set) + label += "Sexuality" + values += attraction + return "[english_list(label, and_text = "/")]: [span_revenboldnotice(english_list(values, and_text = ", "))]" diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 6799413a338..ab6e72af4bb 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -327,9 +327,13 @@ if(client) var/erp_status_pref = client.prefs.read_preference(/datum/preference/choiced/erp_status) + var/free_use_pref = client.prefs.read_preference(/datum/preference/toggle/erp_free_use) if(erp_status_pref && !CONFIG_GET(flag/disable_erp_preferences)) . += EXAMINE_SECTION_BREAK - . += span_info("ERP Status: [span_revenboldnotice(erp_status_pref)]") + . += span_info("ERP Status: [span_revenboldnotice(erp_status_pref)][free_use_pref ? "[span_revenboldnotice(" - Free Use")]" : ""]") + var/line = get_gender_attraction_string(client.prefs.read_preference(/datum/preference/choiced/display_gender), client.prefs.read_preference(/datum/preference/choiced/attraction)) + if(line) + . += span_info(line) // SKYRAT EDIT END SEND_SIGNAL(src, COMSIG_ATOM_EXAMINE, user, .) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm index 5a47ae3c3f7..04fa03e2032 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm @@ -155,7 +155,6 @@ "Ask (L)OOC", "No", "Yes", - "Free Use", ) /datum/preference/choiced/erp_status/create_default_value() @@ -180,6 +179,33 @@ /datum/preference/choiced/erp_status/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) return FALSE +/datum/preference/toggle/erp_free_use + category = PREFERENCE_CATEGORY_OOC_PREFS + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "erp_free_use" + +/datum/preference/toggle/erp_free_use/is_accessible(datum/preferences/preferences) + if (!..(preferences)) + return FALSE + + if(CONFIG_GET(flag/disable_erp_preferences)) + return FALSE + + return preferences.read_preference(/datum/preference/toggle/master_erp_preferences) + +/datum/preference/toggle/erp_free_use/deserialize(input, datum/preferences/preferences) + if(CONFIG_GET(flag/disable_erp_preferences)) + return FALSE + if(!preferences.read_preference(/datum/preference/toggle/master_erp_preferences)) + return FALSE + return ..() + +/datum/preference/toggle/erp_free_use/create_default_value() + return FALSE + +/datum/preference/toggle/erp_free_use/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE + /datum/preference/choiced/erp_status_nc category = PREFERENCE_CATEGORY_OOC_PREFS savefile_identifier = PREFERENCE_CHARACTER @@ -193,6 +219,7 @@ "Yes", "Yes - Dom", "Yes - Switch", + "Yes - Sub", ) /datum/preference/choiced/erp_status_nc/create_default_value() diff --git a/modular_skyrat/modules/customization/modules/mob/living/silicon/examine.dm b/modular_skyrat/modules/customization/modules/mob/living/silicon/examine.dm index bfc77e49756..16d7d0ee735 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/silicon/examine.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/silicon/examine.dm @@ -15,8 +15,12 @@ if(client) var/erp_status_pref = client.prefs.read_preference(/datum/preference/choiced/erp_status) + var/free_use_pref = client.prefs.read_preference(/datum/preference/toggle/erp_free_use) if(erp_status_pref && !CONFIG_GET(flag/disable_erp_preferences)) - . += span_notice("ERP STATUS: [erp_status_pref]") + . += span_info("ERP Status: [span_revenboldnotice(erp_status_pref)][free_use_pref ? "[span_revenboldnotice(" - Free Use")]" : ""]") + var/line = get_gender_attraction_string(client.prefs.read_preference(/datum/preference/choiced/display_gender), client.prefs.read_preference(/datum/preference/choiced/attraction)) + if(line) + . += span_info(line) if(temporary_flavor_text) if(length_char(temporary_flavor_text) <= 40) . += span_notice("They look different than usual: [temporary_flavor_text]") diff --git a/modular_zubbers/code/modules/examine_tgui/examine_tgui.dm b/modular_zubbers/code/modules/examine_tgui/examine_tgui.dm index 4d50696ec97..ab23fc0834a 100644 --- a/modular_zubbers/code/modules/examine_tgui/examine_tgui.dm +++ b/modular_zubbers/code/modules/examine_tgui/examine_tgui.dm @@ -72,6 +72,8 @@ var/art_ref_nsfw = preferences?.read_preference(/datum/preference/toggle/art_ref_nsfw) var/character_ad = "" + var/attraction = preferences?.read_preference(/datum/preference/choiced/attraction) + var/display_gender = preferences?.read_preference(/datum/preference/choiced/display_gender) var/emote_length = preferences?.read_preference(/datum/preference/choiced/emote_length) var/approach = preferences?.read_preference(/datum/preference/choiced/approach_pref) var/furries = preferences?.read_preference(/datum/preference/choiced/directory_character_prefs/furry_pref) @@ -85,17 +87,22 @@ if(preferences) if(preferences.read_preference(/datum/preference/toggle/master_erp_preferences)) var/e_prefs = preferences.read_preference(/datum/preference/choiced/erp_status) + var/e_prefs_free_use = preferences.read_preference(/datum/preference/toggle/erp_free_use) var/e_prefs_hypno = preferences.read_preference(/datum/preference/choiced/erp_status_hypno) var/e_prefs_v = preferences.read_preference(/datum/preference/choiced/erp_status_v) var/e_prefs_nc = preferences.read_preference(/datum/preference/choiced/erp_status_nc) var/e_prefs_mechanical = preferences.read_preference(/datum/preference/choiced/erp_status_mechanics) - ooc_notes += "ERP: [e_prefs]\n" + ooc_notes += "ERP: [e_prefs][e_prefs_free_use ? " - Free Use" : ""]\n" ooc_notes += "Hypnosis: [e_prefs_hypno]\n" ooc_notes += "Vore: [e_prefs_v]\n" ooc_notes += "Non-Con: [e_prefs_nc]\n" ooc_notes += "ERP Mechanics: [e_prefs_mechanical]\n" ooc_notes += "\n" + if(display_gender != "Unset") + character_ad += "Gender: [display_gender]\n" + if(attraction != "Unset") + character_ad += "Sexuality: [attraction]\n" character_ad += "Preferred Emote Length: [emote_length]\n" character_ad += "How to Approach: [approach]\n" character_ad += "Furries: [furries] | Scalies: [scalies] | Other: [others]\n" diff --git a/tgstation.dme b/tgstation.dme index c4475b6921e..f9912fa9574 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -697,6 +697,7 @@ #include "code\__HELPERS\~bubber_helpers\areas.dm" #include "code\__HELPERS\~bubber_helpers\lists.dm" #include "code\__HELPERS\~bubber_helpers\mobs.dm" +#include "code\__HELPERS\~bubber_helpers\text.dm" #include "code\__HELPERS\~bubber_helpers\virus.dm" #include "code\__HELPERS\~skyrat_helpers\is_helpers.dm" #include "code\__HELPERS\~skyrat_helpers\level_traits.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/genitals.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/genitals.tsx index ea24962fe23..326d95faf84 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/genitals.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/genitals.tsx @@ -327,3 +327,8 @@ export const erp_status_pref_mechanics: FeatureChoiced = { name: 'ERP Mechanical Status', component: FeatureDropdownInput, }; + +export const erp_free_use: FeatureToggle = { + name: 'ERP Free Use Status', + component: CheckboxInput, +};