mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 14:08:31 +01:00
@@ -196,3 +196,33 @@
|
||||
|
||||
/datum/preference/choiced/erp_status_mechanics/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
|
||||
return FALSE
|
||||
|
||||
/datum/preference/choiced/erp_sexuality
|
||||
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
|
||||
savefile_identifier = PREFERENCE_PLAYER
|
||||
savefile_key = "erp_sexuality_pref"
|
||||
|
||||
/datum/preference/choiced/erp_sexuality/init_possible_values()
|
||||
return list("Gay", "Straight", "None") // For simplicity's sake we only have 3 options.
|
||||
|
||||
/datum/preference/choiced/erp_sexuality/create_default_value()
|
||||
return "None"
|
||||
|
||||
/datum/preference/choiced/erp_sexuality/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/choiced/erp_sexuality/deserialize(input, datum/preferences/preferences)
|
||||
if(CONFIG_GET(flag/disable_erp_preferences))
|
||||
return "None"
|
||||
if(!preferences.read_preference(/datum/preference/toggle/master_erp_preferences))
|
||||
return "None"
|
||||
. = ..()
|
||||
|
||||
/datum/preference/choiced/erp_sexuality/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
|
||||
return FALSE
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
var/datum/interaction/interaction = GLOB.interaction_instances[iterating_interaction_id]
|
||||
if(interaction.lewd && !self.client?.prefs?.read_preference(/datum/preference/toggle/erp))
|
||||
continue
|
||||
if(interaction.sexuality != "None" && interaction.sexuality != self.client?.prefs?.read_preference(/datum/preference/choiced/erp_sexuality))
|
||||
continue
|
||||
interactions.Add(interaction)
|
||||
|
||||
/datum/component/interactable/RegisterWithParent()
|
||||
|
||||
@@ -48,6 +48,8 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
|
||||
var/list/interaction_requires = list()
|
||||
/// What color should the interaction button be?
|
||||
var/color = "blue"
|
||||
/// What sexuality preference do we display for.
|
||||
var/sexuality = "None"
|
||||
|
||||
/datum/interaction/proc/allow_act(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
||||
if(target == user && usage == INTERACTION_OTHER)
|
||||
@@ -155,6 +157,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
|
||||
target_pleasure = sanitize_integer(json["target_pleasure"], 0, 100, 0)
|
||||
target_pain = sanitize_integer(json["target_pain"], 0, 100, 0)
|
||||
lewd = sanitize_integer(json["lewd"], 0, 1, 0)
|
||||
sexuality = sanitize_text(json["sexuality"])
|
||||
return TRUE
|
||||
|
||||
/datum/interaction/proc/json_save(path)
|
||||
@@ -184,6 +187,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
|
||||
"target_pleasure" = target_pleasure,
|
||||
"target_pain" = target_pain,
|
||||
"lewd" = lewd,
|
||||
"sexuality" = sexuality,
|
||||
)
|
||||
var/file = file(fpath)
|
||||
WRITE_FILE(file, json_encode(json))
|
||||
@@ -253,6 +257,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
|
||||
interaction.target_pleasure = sanitize_integer(ijson["target_pleasure"], 0, 100, 0)
|
||||
interaction.target_pain = sanitize_integer(ijson["target_pain"], 0, 100, 0)
|
||||
interaction.lewd = sanitize_integer(ijson["lewd"], 0, 1, 0)
|
||||
interaction.sexuality = sanitize_text(ijson["sexuality"])
|
||||
|
||||
GLOB.interaction_instances[iname] = interaction
|
||||
|
||||
|
||||
+8
-1
@@ -1,4 +1,4 @@
|
||||
import { CheckboxInput, FeatureToggle } from "../../base";
|
||||
import { CheckboxInput, FeatureDropdownInput, FeatureChoiced, FeatureToggle } from "../../base";
|
||||
|
||||
export const master_erp_pref: FeatureToggle = {
|
||||
name: "Show/Hide Erotic Roleplay Preferences",
|
||||
@@ -76,3 +76,10 @@ export const autocum_pref: FeatureToggle = {
|
||||
description: "Toggles whether you automatically cum using the arousal system, or if you need to do it manually.",
|
||||
component: CheckboxInput,
|
||||
};
|
||||
|
||||
export const erp_sexuality_pref: FeatureChoiced = {
|
||||
name: "Sexuality Preference",
|
||||
category: "ERP",
|
||||
description: "Determines what sexual content you see, limited use. None will show all content.",
|
||||
component: FeatureDropdownInput,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user