Skip to content

Commit

Permalink
Merge pull request #5546 from ARF-SS13/feralboykissingvorebots
Browse files Browse the repository at this point in the history
Examine Overhaul
  • Loading branch information
Tk420634 authored Nov 2, 2024
2 parents f3b4b32 + cc03cef commit e31096d
Show file tree
Hide file tree
Showing 7 changed files with 387 additions and 101 deletions.
13 changes: 13 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,19 @@
#define TRAIT_DISTANT "distant"
#define TRAIT_HEADPAT_SLUT "headpat_sluuuuut"
#define TRAIT_ORAL_FIXATION "oral fixation"
#define TRAIT_NOERP "no erp"
#define TRAIT_VANILLAERP "vanilla erp"
#define TRAIT_ROUGHERP "rough erp"
#define TRAIT_EXTREMEERP "extreme erp"
#define TRAIT_FERALERP "feral erp"
#define TRAIT_ROBOTERP "robot erp"
#define TRAIT_VOREERP "vore erp"
#define TRAIT_DANIMAL "feeder quirk"
#define TRAIT_FATERP "far erp"
#define TRAIT_BIGBUTT "big butt"
#define TRAIT_BIGBOOBS "big boobs"
#define TRAIT_BIGBALLS "big balls"
#define TRAIT_BIGWEENIE "big dick"
//#define TRAIT_PACKRAT "packrat"
#define TRAIT_HYDRA_HEADS "hydra_heads"
#define TRAIT_SHELTERED "sheltered"
Expand Down
8 changes: 8 additions & 0 deletions code/_globalvars/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_ERPFLIRTY" = TRAIT_ERPFLIRTY,
"TRAIT_JOLLY" = TRAIT_JOLLY,
"TRAIT_JIGGLY_ASS" = TRAIT_JIGGLY_ASS,
"TRAIT_NOERP" = TRAIT_NOERP,
"TRAIT_VANILLAERP" = TRAIT_VANILLAERP,
"TRAIT_ROUGHERP" = TRAIT_ROUGHERP,
"TRAIT_EXTREMEERP" = TRAIT_EXTREMEERP,
"TRAIT_FERALERP" = TRAIT_FERALERP,
"TRAIT_ROBOTERP" = TRAIT_ROBOTERP,
"TRAIT_VOREERP" = TRAIT_VOREERP,
"TRAIT_FATERP" = TRAIT_FATERP,
"TRAIT_KI_VAMPIRE" = TRAIT_KI_VAMPIRE,
"TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT,
"TRAIT_LAW_ENFORCEMENT_METABOLISM" = TRAIT_LAW_ENFORCEMENT_METABOLISM,
Expand Down
146 changes: 142 additions & 4 deletions code/datums/traits/neutral.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1045,6 +1045,7 @@
desc = "If the internet was a thing, people would be looking you up on google."
value = 0
category = "Bawdy Quirks"
mob_trait = TRAIT_BIGBOOBS
mechanics = "You need to fix the fit of your clothes every once in a while, or your breathing will be restricted and you'll take a tiny bit of suffocation damage."
conflicts = list()
gain_text = span_notice("It's hard to find clothes that fit around your chest.")
Expand Down Expand Up @@ -1109,10 +1110,11 @@
if(!active || H.get_item_by_slot(SLOT_W_UNIFORM) != source)
return
H.remove_status_effect(debuff)
to_chat(H, span_warning(fix_text))
user.visible_message(span_info("[user] adjusts their fit to find some relief."), null, null, 3)
to_chat(H, span_green(fix_text))
display_fix_text(user, source)
active = FALSE
make_timers()
playsound(H, "rustle", 50, TRUE)

/datum/quirk/dan_nicki/proc/on_drop(obj/item/source, mob/user)
var/mob/living/H = user
Expand All @@ -1121,13 +1123,19 @@
if(!active || H.get_item_by_slot(SLOT_W_UNIFORM))
return
H.remove_status_effect(debuff)
to_chat(H, span_warning(drop_text))
user.visible_message(span_info("[user] undoes their clothing to find some relief."), null, null, 3)
to_chat(H, span_green(drop_text))
display_drop_text(user, source)
var/obj/item/clothing/S = source
S.verbs -= /obj/item/clothing/proc/FixClothesFit
active = FALSE
make_timers()
playsound(H, "rustle", 50, TRUE)

/datum/quirk/dan_nicki/proc/display_fix_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] tugs at [user.p_their()] top, rearranging [user.p_their()] breasts trapped in the [source.name]!"))

/datum/quirk/dan_nicki/proc/display_drop_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] undoes [user.p_their()] [source], giving [user.p_their()] assets some relief as they spill out!"))

#undef CLOTHING_FIX_TIME_MIN
#undef CLOTHING_FIX_TIME_MAX
Expand All @@ -1136,6 +1144,7 @@
name = "Big Balls"
desc = "You have a hard time finding clothes that fit."
value = 0
mob_trait = TRAIT_BIGBALLS
category = "Bawdy Quirks"
mechanics = "You need to fix the fit of your clothes every once in a while, or you'll suffer a speed penalty."
conflicts = list()
Expand All @@ -1147,6 +1156,12 @@
fix_text = "You feel like you can move your legs again. That's much better."
drop_text = "Whew... free at last!"

/datum/quirk/dan_nicki/wreckingballs/display_fix_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] adjusts [user.p_their()] [source.name] a bit to give some room down south!"))

/datum/quirk/dan_nicki/wreckingballs/display_drop_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] undoes [user.p_their()] [source], giving [user.p_their()] groin some relief!"))

/datum/status_effect/wreckingballs
id = "Constriction"
duration = -1
Expand All @@ -1170,6 +1185,7 @@
name = "Big Dick"
desc = "You have a HARD time finding clothes that fit."
value = 0
mob_trait = TRAIT_BIGWEENIE
category = "Bawdy Quirks"
mechanics = "You need to fix the fit of your clothes every once in a while, or your clothes will be too tight to reach into your pockets."
conflicts = list()
Expand Down Expand Up @@ -1202,10 +1218,17 @@
if(params == left || params == right)
return COMSIG_MOB_CANCEL_CLICKON

/datum/quirk/dan_nicki/hugecock/display_fix_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] adjusts [user.p_their()] [source.name] a bit to give some room down south!"))

/datum/quirk/dan_nicki/hugecock/display_drop_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] undoes [user.p_their()] [source], giving [user.p_their()] shaft some relief!"))

/datum/quirk/dan_nicki/cake
name = "Big Ass"
desc = "You have a hard time getting your clothes on."
value = 0
mob_trait = TRAIT_BIGBUTT
category = "Bawdy Quirks"
mechanics = "You need to fix the fit of your clothes every once in a while, or they'll become uncomfortable."
conflicts = list()
Expand Down Expand Up @@ -1234,3 +1257,118 @@
/datum/mood_event/toomuchcake
mood_change = -4
description = span_warning("These clothes are way too tight!")

/datum/quirk/dan_nicki/cake/display_fix_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] adjusts the back of [user.p_their()] [source.name], squirming a bit to get comfort!"))

/datum/quirk/dan_nicki/cake/display_drop_text(obj/item/source, mob/user)
user.visible_message(span_info("[user] undoes [user.p_their()] [source], giving [user.p_their()] backside all the space it needs!"))


/datum/quirk/no_erp
name = "No ERP"
desc = "You do not want to be a part of erotic roleplay, and that's fine!"
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_NOERP
gain_text = span_notice("You're just not horny, you have found peace.")
lose_text = span_notice("You can't remember the last time you touched grass.")

/datum/quirk/vanilla_erp
name = "Vanilla ERP"
desc = "Your ERP preferences are pretty vanilla. Nothing too crazy most of the time."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_VANILLAERP
gain_text = span_notice("You remember that sex makes babies.")
lose_text = span_notice("The american anti-pregnancy scheme worked on you after all.")

/datum/quirk/rough_erp
name = "Rough ERP"
desc = "Your ERP preferences lean towards a bit of roughness, be that choking or something else."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_ROUGHERP
gain_text = span_notice("HARDER. BETTER. FASTER. STRONGER.")
lose_text = span_notice("You just really want to hold someones hand.")

/datum/quirk/extreme_erp
name = "Extreme ERP"
desc = "Your ERP preferences lean a bit past the rough, yo' ass straight up kinky."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_EXTREMEERP
gain_text = span_notice("Why yes, I have spent too much time online. How did you know?")
lose_text = span_notice("Should have paid your internet bill.")

/datum/quirk/feral_erp
name = "Feral ERP"
desc = "Your ERP partner preferences include things that need to pass a harkness test."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_FERALERP
gain_text = span_notice("There's a little white woman inside you.")
lose_text = span_notice("We ran out of dog treats yesterday.")

/datum/quirk/robot_erp
name = "Robot ERP"
desc = "Your ERP partner preferences include your own personal computer and other varied electronic things."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_ROBOTERP
gain_text = span_notice("Give me your USB-C, baby.")
lose_text = span_notice("You feel amish.")

/datum/quirk/vore_erp
name = "Vore ERP"
desc = "Your ERP partner preferences include pals that eat entire people, or those that want to be eaten."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_VOREERP
gain_text = span_notice("Boy, I could eat a whole ass horse.")
lose_text = span_notice("I finally feel full again.")

/datum/quirk/fat_erp
name = "Fat ERP"
desc = "Your ERP partner preferences include the thick and the jiggly, be you one of them or hoping to find one."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_VOREERP
gain_text = span_notice("DAMN BOY WE THICK.")
lose_text = span_notice("Weightloss time.")

/datum/quirk/literally_just_dan
name = "Feeder ERP"
desc = "Your ERP partner preferences include being stuffed full of food, or doing the stuffing."
value = 0
category = "Bawdy Quirks"
mechanics = "Shows your prefs in examine."
conflicts = list(
)
mob_trait = TRAIT_DANIMAL
gain_text = span_notice("You could use a little butter.")
lose_text = span_notice("Dinners over.")
35 changes: 27 additions & 8 deletions code/modules/client/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/creature_body_size = 1
var/creature_fuzzy = FALSE

var/see_pfp_max_hight = 300
var/see_pfp_max_widht = 300

var/list/ProfilePics = list(
list(
"Mode" = MODE_PROFILE_PIC,
Expand Down Expand Up @@ -581,7 +584,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<center><h2>Character Atributes</h2>"
dat += "<a href='?_src_=prefs;preference=special;task=menu'>Allocate Points</a><br></center>"
//Left Column
dat += "<table><tr><td width='30%'valign='top'>"
dat += "<table><tr><td width='70%'valign='top'>"
dat += "<h2>Identity</h2>"
if(jobban_isbanned(user, "appearance"))
dat += "<b>You are banned from using custom names and appearances. You can continue to adjust your characters, but you will be randomised once you join the game.</b><br>"
Expand All @@ -596,7 +599,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Orientation:</b> <a href='?_src_=prefs;preference=kisser;task=input'>[kisser]</a><BR>"
dat += "</td>"
//Middle Column
dat +="<td width='30%' valign='top'>"
dat +="<td width='25%' valign='top'>"
dat += "<h2>Matchmaking preferences:</h2>"
if(SSmatchmaking.initialized)
for(var/datum/matchmaking_pref/match_pref as anything in SSmatchmaking.all_match_types)
Expand All @@ -611,12 +614,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Refresh once the game has finished setting up...</b><br>"
dat += "</td>"
//Right column
dat +="<td width='30%' valign='top'>"
dat += "<h2>Profile Picture ([pfphost]):</h2><BR>"
dat += "<b>Picture:</b> <a href='?_src_=prefs;preference=ProfilePicture;task=input'>[profilePicture ? "<img src=[PfpHostLink(profilePicture, pfphost)] width='125' height='auto' max-height='300'>" : "Upload a picture!"]</a><BR>"
dat += "<h2>Simple Creature Profile Picture ([creature_pfphost]):</h2><BR>"
dat += "<b>Picture:</b> <a href='?_src_=prefs;preference=CreatureProfilePicture;task=input'>[creature_profilepic ? "<img src=[PfpHostLink(creature_profilepic, creature_pfphost)] width='125' height='auto' max-height='300'>" : "Upload a picture!"]</a><BR>"
dat += "</td>"
// dat +="<td width='30%' valign='top'>"
// // dat += "<h2>Profile Picture ([pfphost]):</h2><BR>"
// // dat += "<b>Picture:</b> <a href='?_src_=prefs;preference=ProfilePicture;task=input'>[profilePicture ? "<img src=[PfpHostLink(profilePicture, pfphost)] width='125' height='auto' max-height='300'>" : "Upload a picture!"]</a><BR>"
// dat += "<h2>Simple Creature Profile Picture ([creature_pfphost]):</h2><BR>"
// dat += "<b>Picture:</b> <a href='?_src_=prefs;preference=CreatureProfilePicture;task=input'>[creature_profilepic ? "<img src=[PfpHostLink(creature_profilepic, creature_pfphost)] width='125' height='auto' max-height='300'>" : "Upload a picture!"]</a><BR>"
// dat += "</td>"
/*
dat += "<b>Special Names:</b><BR>"
var/old_group
Expand Down Expand Up @@ -1527,6 +1530,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)

dat += "<b>Show Health Smileys:</b> <a href='?_src_=prefs;preference=show_health_smilies;task=input'>[show_health_smilies ? "Enabled" : "Disabled"]</a><br>"
dat += "<br>"
dat += "<b>Max PFP Examine Image Height:</b> <a href='?_src_=prefs;preference=max_pfp_hight;task=input'>[see_pfp_max_hight]</a><br>"
dat += "<b>Max PFP Examine Image Width:</b> <a href='?_src_=prefs;preference=max_pfp_with;task=input'>[see_pfp_max_widht]</a><br>"
dat += "</td>"
dat += "</tr></table>"
if(unlock_content)
Expand Down Expand Up @@ -2721,6 +2726,20 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(href_list["preference"] in GLOB.preferences_custom_names)
ask_for_custom_name(user,href_list["preference"])
switch(href_list["preference"])
if("max_pfp_hight")
var/newhight = input(user, "How many pixels tall should profile examine images be when you see em?", "tall") as num|null
if(newhight)
see_pfp_max_hight = newhight
else
to_chat("Okay!")
return 1
if("max_pfp_with")
var/newhight = input(user, "How many pixels wide should profile examine images be when you see em?", "wide") as num|null
if(newhight)
see_pfp_max_widht = newhight
else
to_chat("Okay!")
return 1
if("show_health_smilies")
TOGGLE_VAR(show_health_smilies)
return 1
Expand Down
6 changes: 6 additions & 0 deletions code/modules/client/preferences_savefile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["aghost_squelches"] >> aghost_squelches
S["genital_whitelist"] >> genital_whitelist
S["see_furry_dating_sim"] >> see_furry_dating_sim
S["see_pfp_max_hight"] >> see_pfp_max_hight
S["see_pfp_max_widht"] >> see_pfp_max_widht

S["lockouts"] >> lockouts // my bans!
S["admin_wire_tap"] >> admin_wire_tap // my bans!
Expand Down Expand Up @@ -361,6 +363,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
aghost_squelches = sanitize_islist(aghost_squelches, list())
admin_wire_tap = sanitize_integer(admin_wire_tap, TRUE)
see_furry_dating_sim = sanitize_integer(see_furry_dating_sim, TRUE)
see_pfp_max_hight = sanitize_integer(see_pfp_max_hight, 0, 5000, 300)
see_pfp_max_widht = sanitize_integer(see_pfp_max_widht, 0, 5000, 300)

verify_keybindings_valid() // one of these days this will runtime and you'll be glad that i put it in a different proc so no one gets their saves wiped

Expand Down Expand Up @@ -466,6 +470,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["key_bindings"], key_bindings)
WRITE_FILE(S["modless_key_bindings"], modless_key_bindings)
WRITE_FILE(S["see_furry_dating_sim"], see_furry_dating_sim)
WRITE_FILE(S["see_pfp_max_hight"], see_pfp_max_hight)
WRITE_FILE(S["see_pfp_max_widht"], see_pfp_max_widht)

//citadel code
WRITE_FILE(S["screenshake"], screenshake)
Expand Down
Loading

0 comments on commit e31096d

Please sign in to comment.