This commit is contained in:
SandPoot
2025-04-18 15:43:30 -03:00
parent c80db513b6
commit e17d8fd74c
14 changed files with 73 additions and 8 deletions

View File

@@ -28,8 +28,9 @@
#define TGUI_WINDOW_INDEX(window_id) text2num(copytext(window_id, 13)) #define TGUI_WINDOW_INDEX(window_id) text2num(copytext(window_id, 13))
/// Creates a message packet for sending via output() /// Creates a message packet for sending via output()
// This is {"type":type,"payload":payload}, but pre-encoded. This is much faster
// than doing it the normal way.
// To ensure this is correct, this is unit tested in tgui_create_message.
#define TGUI_CREATE_MESSAGE(type, payload) ( \ #define TGUI_CREATE_MESSAGE(type, payload) ( \
url_encode(json_encode(list( \ "%7b%22type%22%3a%22[type]%22%2c%22payload%22%3a[url_encode(json_encode(payload))]%7d" \
"type" = type, \ )
"payload" = payload, \
))))

View File

@@ -90,8 +90,21 @@ GLOBAL_LIST_INIT(lewd_kiss_sounds, list(
#define INTERACTION_FLAG_USER_NOT_TIRED (1<<5) #define INTERACTION_FLAG_USER_NOT_TIRED (1<<5)
/// Copy-paste prevention for additional details /// Copy-paste prevention for additional details
/// Fills containers
#define INTERACTION_FILLS_CONTAINERS list( \ #define INTERACTION_FILLS_CONTAINERS list( \
"info" = "You can fill a container if you have it in your active hand or are pulling it", \ "info" = "You can fill a container if you have it in your active hand or are pulling it", \
"icon" = "flask", \ "icon" = "flask", \
"color" = "transparent" \ "color" = "white" \
) )
/// Can drink from
#define INTERACTION_MAY_CONTAIN_DRINK list( \
"info" = "May contain reagents", \
"icon" = "cow", \
"color" = "white" \
)
/// Causes pregnancies
#define INTERACTION_MAY_CAUSE_PREGNANCY list( \
"info" = "May cause pregnancies", \
"icon" = "person-pregnant", \
"color" = "white" \
)

View File

@@ -42,7 +42,7 @@
var/required_from_target_exposed = NONE var/required_from_target_exposed = NONE
var/required_from_target_unexposed = NONE var/required_from_target_unexposed = NONE
/// Refuses to accept more than one entry for some reason, fix sometime /// Additional details to be shown in the interaction menu, accepts more than one entry
var/list/additional_details var/list/additional_details
/// Checks if user can do an interaction, action_check is for whether you're actually doing it or not (useful for the menu and not removing the buttons) /// Checks if user can do an interaction, action_check is for whether you're actually doing it or not (useful for the menu and not removing the buttons)

View File

@@ -5,6 +5,13 @@
write_log_user = "breastfed" write_log_user = "breastfed"
write_log_target = "was breastfed by" write_log_target = "was breastfed by"
interaction_sound = null interaction_sound = null
additional_details = list(
list(
"info" = "Will feed the target with your breasts' reagents if any",
"icon" = "cow",
"color" = "white"
)
)
/datum/interaction/lewd/do_breastfeed/display_interaction(mob/living/user, mob/living/target) /datum/interaction/lewd/do_breastfeed/display_interaction(mob/living/user, mob/living/target)
var/message var/message

View File

@@ -6,6 +6,13 @@
interaction_flags = INTERACTION_FLAG_ADJACENT | INTERACTION_FLAG_OOC_CONSENT | INTERACTION_FLAG_EXTREME_CONTENT interaction_flags = INTERACTION_FLAG_ADJACENT | INTERACTION_FLAG_OOC_CONSENT | INTERACTION_FLAG_EXTREME_CONTENT
write_log_user = "earfucked" write_log_user = "earfucked"
write_log_target = "had their ear fucked by" write_log_target = "had their ear fucked by"
additional_details = list(
list(
"info" = "With the preference enabled causes slight bleeding, ear and brain damage",
"icon" = "ear-deaf",
"color" = "white"
)
)
/datum/interaction/lewd/earfuck/earsocketfuck /datum/interaction/lewd/earfuck/earsocketfuck
description = "Fuck their earsocket." description = "Fuck their earsocket."

View File

@@ -6,6 +6,13 @@
interaction_flags = INTERACTION_FLAG_ADJACENT | INTERACTION_FLAG_OOC_CONSENT | INTERACTION_FLAG_EXTREME_CONTENT interaction_flags = INTERACTION_FLAG_ADJACENT | INTERACTION_FLAG_OOC_CONSENT | INTERACTION_FLAG_EXTREME_CONTENT
write_log_user = "eyefucked" write_log_user = "eyefucked"
write_log_target = "had their eye fucked by" write_log_target = "had their eye fucked by"
additional_details = list(
list(
"info" = "With the preference enabled causes slight bleeding, eye and brain damage",
"icon" = "eye",
"color" = "white"
)
)
/datum/interaction/lewd/eyefuck/eyesocketfuck /datum/interaction/lewd/eyefuck/eyesocketfuck
description = "Fuck their eyesocket." description = "Fuck their eyesocket."

View File

@@ -107,10 +107,17 @@
user.handle_post_sex(NORMAL_LUST, CUM_TARGET_MOUTH, partner) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_MOUTH, partner)
/datum/interaction/lewd/throatfuck /datum/interaction/lewd/throatfuck
description = "Fuck their throat. | Does oxy damage." description = "Fuck their throat"
interaction_sound = null interaction_sound = null
required_from_user_exposed = INTERACTION_REQUIRE_PENIS required_from_user_exposed = INTERACTION_REQUIRE_PENIS
required_from_target = INTERACTION_REQUIRE_MOUTH required_from_target = INTERACTION_REQUIRE_MOUTH
additional_details = list(
list(
"info" = "Causes oxygen damage",
"icon" = "lungs",
"color" = "blue"
)
)
/datum/interaction/lewd/throatfuck/display_interaction(mob/living/user, mob/living/partner) /datum/interaction/lewd/throatfuck/display_interaction(mob/living/user, mob/living/partner)
var/message var/message

View File

@@ -5,6 +5,9 @@
write_log_user = "fucked" write_log_user = "fucked"
write_log_target = "was fucked by" write_log_target = "was fucked by"
interaction_sound = null interaction_sound = null
additional_details = list(
INTERACTION_MAY_CAUSE_PREGNANCY
)
/datum/interaction/lewd/fuck/display_interaction(mob/living/user, mob/living/partner) /datum/interaction/lewd/fuck/display_interaction(mob/living/user, mob/living/partner)
var/message var/message
@@ -30,6 +33,7 @@
/datum/interaction/lewd/fuck/anal /datum/interaction/lewd/fuck/anal
description = "Fuck their ass." description = "Fuck their ass."
required_from_target_exposed = INTERACTION_REQUIRE_ANUS required_from_target_exposed = INTERACTION_REQUIRE_ANUS
additional_details = null // no pregnancy
/datum/interaction/lewd/fuck/anal/display_interaction(mob/living/user, mob/living/partner) /datum/interaction/lewd/fuck/anal/display_interaction(mob/living/user, mob/living/partner)
var/message var/message

View File

@@ -5,6 +5,13 @@
write_log_user = "kissed" write_log_user = "kissed"
write_log_target = "was kissed by" write_log_target = "was kissed by"
interaction_sound = null interaction_sound = null
additional_details = list(
list(
"info" = "Sets lust of both to 5 if less than 5",
"icon" = "heart",
"color" = "red"
)
)
/datum/interaction/lewd/kiss/post_interaction(mob/living/user, mob/living/partner) /datum/interaction/lewd/kiss/post_interaction(mob/living/user, mob/living/partner)
. = ..() . = ..()

View File

@@ -3,6 +3,9 @@
interaction_sound = null interaction_sound = null
required_from_user_exposed = INTERACTION_REQUIRE_VAGINA required_from_user_exposed = INTERACTION_REQUIRE_VAGINA
required_from_target_exposed = INTERACTION_REQUIRE_PENIS required_from_target_exposed = INTERACTION_REQUIRE_PENIS
additional_details = list(
INTERACTION_MAY_CAUSE_PREGNANCY
)
/datum/interaction/lewd/mount/display_interaction(mob/living/user, mob/living/partner) /datum/interaction/lewd/mount/display_interaction(mob/living/user, mob/living/partner)
var/message var/message

View File

@@ -5,6 +5,9 @@
write_log_user = "sucked nipples" write_log_user = "sucked nipples"
write_log_target = "had their nipples sucked by" write_log_target = "had their nipples sucked by"
interaction_sound = null interaction_sound = null
additional_details = list(
INTERACTION_MAY_CONTAIN_DRINK
)
/datum/interaction/lewd/nipsuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target) /datum/interaction/lewd/nipsuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target)
if((user.a_intent == INTENT_HELP) || (user.a_intent == INTENT_DISARM)) if((user.a_intent == INTENT_HELP) || (user.a_intent == INTENT_DISARM))

View File

@@ -5,6 +5,9 @@
write_log_user = "gave head to" write_log_user = "gave head to"
write_log_target = "was given head by" write_log_target = "was given head by"
interaction_sound = null interaction_sound = null
additional_details = list(
INTERACTION_MAY_CONTAIN_DRINK
)
var/fucktarget = "vagina" var/fucktarget = "vagina"
/datum/interaction/lewd/oral/blowjob /datum/interaction/lewd/oral/blowjob

View File

@@ -82,6 +82,9 @@
max_distance = 0 max_distance = 0
write_log_user = "sucked their own nips" write_log_user = "sucked their own nips"
write_log_target = null write_log_target = null
additional_details = list(
INTERACTION_MAY_CONTAIN_DRINK
)
/datum/interaction/lewd/self_nipsuck/display_interaction(mob/living/user, mob/living/target) /datum/interaction/lewd/self_nipsuck/display_interaction(mob/living/user, mob/living/target)
var/message var/message

View File

@@ -74,7 +74,7 @@ export const InteractionsTab = (props, context) => {
{interaction.additionalDetails && ( {interaction.additionalDetails && (
interaction.additionalDetails.map(detail => ( interaction.additionalDetails.map(detail => (
<Tooltip content={detail.info} key={detail}> <Tooltip content={detail.info} key={detail}>
<Icon name={detail.icon} key={detail} /> <Icon name={detail.icon} color={detail.color} key={detail} />
</Tooltip> </Tooltip>
)))} )))}
</Box> </Box>