Added missing traits

in heat
extra productive genitals
headpat slut
Do Not Clone
Strong Legs
universal diet
This commit is contained in:
AlManiak
2024-10-24 18:02:10 +02:00
parent 19f4c34381
commit bba2ef4de6
10 changed files with 121 additions and 12 deletions

View File

@@ -289,6 +289,13 @@
#define TRAIT_WATER_SPONGE "water_sponge"
#define TRAIT_FATROUSAL "fatrousal"
//GS13 Port
#define TRAIT_HEADPAT_SLUT "headpat_slut"
#define TRAIT_NEVER_CLONE "donotclone"
#define TRAIT_HEAT "heat"
#define TRAIT_DISTANT "headpat_hater"
#define TRAIT_CUM_PLUS "cum_plus"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
// BUT FOR NOW, THESE ARE HOOKED TO DO update_mobility() VIA COMSIG IN living_mobility.dm

View File

@@ -335,3 +335,9 @@
description = "<span class='warning'>Those darn savages!</span>\n"
mood_change = -5
timeout = 2 MINUTES
//GS13 Port
/datum/mood_event/lewd_headpat
description = "<span class='nicegreen'>I love headpats so much!</span>\n"
mood_change = 3
timeout = 2 MINUTES

View File

@@ -190,7 +190,7 @@
// Get targets
var/obj/item/organ/eyes/old_eyes = quirk_holder.getorganslot(ORGAN_SLOT_EYES)
var/obj/item/organ/eyes/robotic/glow/new_eyes = new
// Replace eyes
qdel(old_eyes)
new_eyes.Insert(quirk_holder)

View File

@@ -464,6 +464,15 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
lose_text = "<span class='notice'>Your mind finally feels calm.</span>"
medical_record_text = "Patient's mind is in a vulnerable state, and cannot recover from traumatic events."
//GS13 Port
//Port from Shadow
/datum/quirk/donotclone
name = "DNC"
desc = "You have filed a Do Not Clone order, stating that you do not wish to be cloned. You can still be revived by other means."
value = -2
mob_trait = TRAIT_NEVER_CLONE
medical_record_text = "Patient has a DNC (Do not clone) order on file, and cannot be cloned as a result."
/datum/quirk/blindness
name = "Blind"
desc = "You are completely blind, nothing can counteract this."

View File

@@ -162,6 +162,7 @@
gain_text = "<span class='notice'>You feel like munching on a can of soda.</span>"
lose_text = "<span class='notice'>You no longer feel like you should be eating trash.</span>"
mob_trait = TRAIT_TRASHCAN
medical_record_text = "Patient has been observed eating inedible garbage."
// GS13 EDIT START
/datum/quirk/trashcan/add()
@@ -188,3 +189,59 @@
/datum/quirk/dullahan/post_add()
quirk_holder.AddComponent(/datum/component/dullahan)
//GS13 Port
/datum/quirk/inheat
name = "In Heat"
desc = "Your system burns with the desire to be bred, your body will betray you and alert others' to your desire when examining you. Satisfying your lust will make you happy, but ignoring it may cause you to become sad and needy."
value = 0
mob_trait = TRAIT_HEAT
gain_text = "<span class='notice'>You body burns with the desire to be bred.</span>"
lose_text = "<span class='notice'>You feel more in control of your body and thoughts.</span>"
/datum/quirk/headpat_slut
name = "Headpat Slut"
desc = "You like headpats, alot, maybe even a little bit too much. Headpats give you a bigger mood boost and cause arousal"
mob_trait = TRAIT_HEADPAT_SLUT
value = 0
medical_record_text = "Patient seems overly affectionate."
/datum/quirk/headpat_hater
name = "Distant"
desc = "You don't seem to show much care for being touched. Whether it's because you're reserved or due to self control, you won't wag your tail outside of your own control should you possess one."
mob_trait = TRAIT_DISTANT
value = 0
medical_record_text = "Patient cares little with or dislikes being touched."
/datum/quirk/universal_diet
name = "Universal diet"
desc = "You are fine with eating just about anything normally edible, you have no strong dislikes in food. Toxic food will still hurt you, though."
value = 0
gain_text = "<span class='notice'>You feel like you can eat any food type.</span>"
lose_text = "<span class='notice'>You start to dislike certain food types again.</span>"
medical_record_text = "Patient reports no strong dietary dislikes."
/datum/quirk/universal_diet/add()
var/mob/living/carbon/human/H = quirk_holder
var/datum/species/species = H.dna.species
species.disliked_food = null
/datum/quirk/universal_diet/remove()
var/mob/living/carbon/human/H = quirk_holder
if(H)
var/datum/species/species = H.dna.species
species.disliked_food = initial(species.disliked_food)
/datum/quirk/fatness_liker //GS13
name = "Fat Affinity"
desc = "You like being fat, alot, maybe even a little bit too much. Being fat gives you a bigger mood boost."
mob_trait = TRAIT_FAT_GOOD
value = 0
medical_record_text = "Patient seems overly content with gaining weight."
/datum/quirk/fatness_hater //GS13
name = "Fat Aversion"
desc = "You dislike being fat. Being fat brings your mood down, alot."
mob_trait = TRAIT_FAT_BAD
value = 0
medical_record_text = "Patient seems distressed by gaining weight."

View File

@@ -413,6 +413,11 @@
if(!can_scan(dna, mob_occupant, FALSE, has_bank_account))
return
if(HAS_TRAIT(mob_occupant, TRAIT_NEVER_CLONE))
scantemp = "<font class='bad'>Subject has an active DNC record on file. Unable to clone.</font>"
playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
return
var/datum/data/record/R = new()
if(dna.species)
// We store the instance rather than the path, because some

View File

@@ -297,19 +297,39 @@
else if(check_zone(M.zone_selected) == BODY_ZONE_HEAD)
var/datum/species/S
if(ishuman(src))
var/mob/living/carbon/human/H = src
S = dna.species
M.visible_message("<span class='notice'>[M] gives [src] a pat on the head to make [p_them()] feel better!</span>", \
"<span class='notice'>You give [src] a pat on the head to make [p_them()] feel better!</span>", target = src,
target_message = "<span class='notice'>[M] gives you a pat on the head to make you feel better!</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat)
if(HAS_TRAIT(src, TRAIT_DISTANT)) //No mood buff since you're not really liking it.
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem annoyed...</span>", \
"<span class='warning'>You give [H] a pat on the head to make [p_them()] feel better! They seem annoyed as they're now glaring towards you...</span>")
H.adjustArousal(-5) //Why are you touching me?
if(prob(5))
M.visible_message("<span class='warning'>[H] quickly twists [M]\'s arm!</span>", \
"<span class='boldwarning'>Your arm gets twisted in [H]\'s grasp. Maybe you should have taken the hint...</span>")
playsound(get_turf(H), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
M.emote("scream")
M.dropItemToGround(M.get_active_held_item())
M.apply_damage(50, STAMINA, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
M.Knockdown(60)//STOP TOUCHING ME! For those spam head pat individuals
else if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem incredibly pleased!</span>", \
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better! They seem to like it way too much</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "lewd_headpat", /datum/mood_event/lewd_headpat)
H.adjustArousal(5) //Headpats are hot af
else
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better!</span>", \
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better!</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat)
friendly_check = TRUE
if(!(client?.prefs.cit_toggles & NO_AUTO_WAG))
if(S?.can_wag_tail(src) && !dna.species.is_wagging_tail())
var/static/list/many_tails = list("tail_human", "tail_lizard", "mam_tail")
for(var/T in many_tails)
if(S.mutant_bodyparts[T] && dna.features[T] != "None")
emote("wag")
if(!(HAS_TRAIT(src, TRAIT_DISTANT)))
if(!(client?.prefs.cit_toggles & NO_AUTO_WAG))
if(S?.can_wag_tail(src) && !dna.species.is_wagging_tail())
var/static/list/many_tails = list("tail_human", "tail_lizard", "mam_tail")
for(var/T in many_tails)
if(S.mutant_bodyparts[T] && dna.features[T] != "None")
emote("wag")
else if(check_zone(M.zone_selected) == BODY_ZONE_R_ARM || check_zone(M.zone_selected) == BODY_ZONE_L_ARM)
if((pulling == M) && (grab_state == GRAB_PASSIVE))

View File

@@ -107,6 +107,11 @@
if(wear_id)
. += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)]."
//GS13 Port
//Heat Detection
//if(breedable)
if(HAS_TRAIT(src, TRAIT_HEAT))
. += "<span class='love'>[t_He] [t_is] currently in heat.</span>"
//Status effects
var/effects_exam = status_effect_examines()
if(!isnull(effects_exam))

View File

@@ -5,7 +5,6 @@
name = "Extra productive genitals"
desc = "Your lower bits produce more and hold more than normal."
value = 0
category = CATEGORY_SEXUAL
mob_trait = TRAIT_CUM_PLUS
gain_text = "<span class='notice'>You feel pressure in your groin.</span>"
lose_text = "<span class='notice'>You feel a weight lifted from your groin.</span>"

View File

@@ -4075,6 +4075,7 @@
#include "hyperstation\code\modules\resize\sizechems.dm"
#include "hyperstation\code\modules\resize\sizegun.dm"
#include "hyperstation\code\modules\surgery\organs\augments_arms.dm"
#include "hyperstation\code\modules\traits.dm"
#include "hyperstation\code\obj\ashtray.dm"
#include "hyperstation\code\obj\decal.dm"
#include "hyperstation\code\obj\fleshlight.dm"