mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2026-08-23 20:56:47 +01:00
[Lewd] [Semi-Modular] - Human Erect Penis and Balls Sprites-Fix & More!
263 lines
10 KiB
Plaintext
263 lines
10 KiB
Plaintext
/datum/quirk/tough
|
|
name = "Tough"
|
|
desc = "Your body is abnormally enduring and can take 10% more damage."
|
|
value = 2
|
|
medical_record_text = "Patient has an abnormally high capacity for injury."
|
|
gain_text = span_notice("You feel very sturdy.")
|
|
lose_text = span_notice("You feel less sturdy.")
|
|
|
|
/datum/quirk/tough/add()
|
|
quirk_holder.maxHealth *= 1.1
|
|
|
|
/datum/quirk/tough/remove()
|
|
if(!quirk_holder)
|
|
return
|
|
quirk_holder.maxHealth *= 0.909 //close enough
|
|
|
|
/datum/quirk/ashresistance
|
|
name = "Ashen Resistance"
|
|
desc = "Your body is adapted to the burning sheets of ash that coat volcanic worlds, though the heavy downpours of silt will still tire you."
|
|
value = 2 //Is not actually THAT good. Does not grant breathing and does stamina damage to the point you are unable to attack. Crippling on lavaland, but you'll survive. Is not a replacement for SEVA suits for this reason. Can be adjusted.
|
|
mob_trait = TRAIT_ASHRESISTANCE
|
|
medical_record_text = "Patient has an abnormally thick epidermis."
|
|
gain_text = span_notice("You feel resistant to burning brimstone.")
|
|
lose_text = span_notice("You feel less as if your flesh is more flamamble.")
|
|
|
|
/* --FALLBACK SYSTEM INCASE THE TRAIT FAILS TO WORK. Do NOT enable this without editing ash_storm.dm to deal stamina damage with ash immunity.
|
|
/datum/quirk/ashresistance/add()
|
|
quirk_holder.weather_immunities |= "ash"
|
|
|
|
/datum/quirk/ashresistance/remove()
|
|
if(!quirk_holder)
|
|
return
|
|
quirk_holder.weather_immunities -= "ash"
|
|
*/
|
|
|
|
/datum/quirk/rad_fiend
|
|
name = "Rad Fiend"
|
|
desc = "You've been blessed by Cherenkov's warming light, causing you to emit a subtle glow at all times. Only -very- intense radiation is capable of penetrating your protective barrier."
|
|
value = 2
|
|
mob_trait = TRAIT_RAD_FIEND
|
|
gain_text = span_notice("You feel empowered by Cherenkov's glow.")
|
|
lose_text = span_notice("You realize that rads aren't so rad.")
|
|
|
|
/datum/quirk/rad_fiend/add()
|
|
// Define quirk holder mob
|
|
var/mob/living/carbon/human/quirk_mob = quirk_holder
|
|
// Add glow control action
|
|
var/datum/action/rad_fiend/update_glow/quirk_action = new
|
|
quirk_action.Grant(quirk_mob)
|
|
|
|
/datum/quirk/rad_fiend/remove()
|
|
// Define quirk holder mob
|
|
var/mob/living/carbon/human/quirk_mob = quirk_holder
|
|
|
|
// Remove glow control action
|
|
var/datum/action/rad_fiend/update_glow/quirk_action = locate() in quirk_mob.actions
|
|
quirk_action.Remove(quirk_mob)
|
|
|
|
// Remove glow effect
|
|
quirk_mob.remove_filter("rad_fiend_glow")
|
|
|
|
/datum/quirk/dominant_aura
|
|
name = "Dominant Aura"
|
|
desc = "Your mere presence is assertive enough to appear as powerful to other people, so much in fact that the weaker kind can't help but throw themselves at your feet at the snap of a finger."
|
|
value = 1
|
|
gain_text = span_notice("You feel like making someone your pet.")
|
|
lose_text = span_notice("You feel less assertive.")
|
|
|
|
/datum/quirk/dominant_aura/add()
|
|
. = ..()
|
|
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
|
|
RegisterSignal(quirk_holder, COMSIG_MOB_EMOTE, .proc/handle_snap)
|
|
|
|
/datum/quirk/dominant_aura/remove()
|
|
. = ..()
|
|
UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
|
|
UnregisterSignal(quirk_holder, COMSIG_MOB_EMOTE)
|
|
|
|
/datum/quirk/dominant_aura/proc/on_examine_holder(atom/source, mob/user, list/examine_list)
|
|
SIGNAL_HANDLER
|
|
|
|
if(!ishuman(user))
|
|
return
|
|
var/mob/living/carbon/human/sub = user
|
|
if(!sub.has_quirk(/datum/quirk/well_trained) || (sub == quirk_holder))
|
|
return
|
|
|
|
examine_list += span_lewd("\nYou can't make eye contact with [quirk_holder.p_them()] before flustering away!")
|
|
if(!TIMER_COOLDOWN_CHECK(user, COOLDOWN_DOMINANT_EXAMINE))
|
|
to_chat(quirk_holder, span_notice("\The [user] tries to look at you but immediately turns away with a red face..."))
|
|
TIMER_COOLDOWN_START(user, COOLDOWN_DOMINANT_EXAMINE, 10 SECONDS)
|
|
sub.dir = turn(get_dir(sub, quirk_holder), pick(-90, 90))
|
|
sub.emote("blush")
|
|
|
|
/datum/quirk/dominant_aura/proc/handle_snap(datum/source, list/emote_args)
|
|
SIGNAL_HANDLER
|
|
|
|
. = FALSE
|
|
var/datum/emote/E
|
|
E = E.emote_list[lowertext(emote_args[EMOTE_ACT])]
|
|
if(TIMER_COOLDOWN_CHECK(quirk_holder, COOLDOWN_DOMINANT_SNAP) || !findtext(E?.key, "snap"))
|
|
return
|
|
for(var/mob/living/carbon/human/sub in hearers(DOMINANT_DETECT_RANGE, quirk_holder))
|
|
if(!sub.has_quirk(/datum/quirk/well_trained) || (sub == quirk_holder))
|
|
continue
|
|
var/good_x = "pet"
|
|
switch(sub.gender)
|
|
if(MALE)
|
|
good_x = "boy"
|
|
if(FEMALE)
|
|
good_x = "girl"
|
|
switch(E?.key)
|
|
if("snap")
|
|
sub.dir = get_dir(sub, quirk_holder)
|
|
sub.emote(pick("blush", "pant"))
|
|
sub.visible_message(span_notice("\The <b>[sub]</b> turns shyly towards \the <b>[quirk_holder]</b>."),
|
|
span_lewd("You stare into \the [quirk_holder] submissively."))
|
|
if("snap2")
|
|
sub.dir = get_dir(sub, quirk_holder)
|
|
sub.KnockToFloor()
|
|
sub.emote(pick("blush", "pant"))
|
|
sub.visible_message(span_lewd("\The <b>[sub]</b> submissively throws [sub.p_them()]self on the floor."),
|
|
span_lewd("You throw yourself on the floor like a pathetic beast on <b>[quirk_holder]</b>'s command."))
|
|
if("snap3")
|
|
sub.KnockToFloor()
|
|
step(sub, get_dir(sub, quirk_holder))
|
|
sub.emote(pick("blush", "pant"))
|
|
sub.do_jitter_animation(30) //You're being moved anyways
|
|
sub.visible_message(span_lewd("\The <b>[sub]</b> crawls closer to \the <b>[quirk_holder]</b> on all fours, following [quirk_holder.p_their()] command."),
|
|
span_lewd("You get on your hands and knees and crawl towards \the <b>[quirk_holder]</b> like a good [good_x] would."))
|
|
. = TRUE
|
|
|
|
if(.)
|
|
TIMER_COOLDOWN_START(quirk_holder, COOLDOWN_DOMINANT_SNAP, DOMINANT_SNAP_COOLDOWN)
|
|
|
|
/datum/quirk/arachnid
|
|
name = "Arachnid"
|
|
desc = "Your bodily anatomy allows you to spin webs and cocoons, even if you aren't an arachnid! (Note that this quirk does nothing for members of the arachnid species)"
|
|
value = 1
|
|
medical_record_text = "Patient has attempted to cover the room in webs, claiming to be \"making a nest\"."
|
|
mob_trait = TRAIT_ARACHNID
|
|
gain_text = span_notice("You feel a strange sensation near your anus...")
|
|
lose_text = span_notice("You feel like you can't spin webs anymore...")
|
|
processing_quirk = TRUE
|
|
|
|
/datum/quirk/arachnid/add()
|
|
. = ..()
|
|
var/mob/living/carbon/human/H = quirk_holder
|
|
if(is_species(H,/datum/species/arachnid))
|
|
to_chat(H, span_warning("As an arachnid, this quirk does nothing for you, as these abilities are innate to your species."))
|
|
return
|
|
var/datum/action/innate/spin_web/SW = new
|
|
var/datum/action/innate/spin_cocoon/SC = new
|
|
SC.Grant(H)
|
|
SW.Grant(H)
|
|
|
|
/datum/quirk/arachnid/remove()
|
|
. = ..()
|
|
var/mob/living/carbon/human/H = quirk_holder
|
|
if(is_species(H,/datum/species/arachnid))
|
|
return
|
|
var/datum/action/innate/spin_web/SW = locate(/datum/action/innate/spin_web) in H.actions
|
|
var/datum/action/innate/spin_cocoon/SC = locate(/datum/action/innate/spin_cocoon) in H.actions
|
|
SC?.Remove(H)
|
|
SW?.Remove(H)
|
|
|
|
/datum/quirk/flutter
|
|
name = "Flutter"
|
|
desc = "You are able to move about freely in pressurized low-gravity environments be it through the use of wings, magic, or some other physiological nonsense."
|
|
value = 1
|
|
mob_trait = TRAIT_FLUTTER
|
|
|
|
/datum/quirk/cloth_eater
|
|
name = "Clothes Eater"
|
|
desc = "You can eat most apparel to gain a boost in mood, and to gain some nutrients. (Insects already have this.)"
|
|
value = 1
|
|
var/mood_category ="cloth_eaten"
|
|
mob_trait = TRAIT_CLOTH_EATER
|
|
|
|
/datum/quirk/ropebunny
|
|
name = "Rope Bunny"
|
|
desc = "You have mastered all forms of bondage! You can create bondage rope out of cloth, and bondage bolas out of bondage rope!"
|
|
value = 2
|
|
|
|
/datum/quirk/ropebunny/add()
|
|
.=..()
|
|
var/mob/living/carbon/human/H = quirk_holder
|
|
if (!H)
|
|
return
|
|
var/datum/action/ropebunny/conversion/C = new
|
|
C.Grant(H)
|
|
|
|
/datum/quirk/ropebunny/remove()
|
|
var/mob/living/carbon/human/H = quirk_holder
|
|
var/datum/action/ropebunny/conversion/C = locate() in H.actions
|
|
C.Remove(H)
|
|
. = ..()
|
|
|
|
/datum/quirk/hallowed
|
|
name = "Hallowed"
|
|
desc = "You have been blessed by a higher power or are otherwise imbued with holy energy in some way. Your divine presence drives away magic and the unholy! Holy water will restore your health."
|
|
value = 1 // Maybe up the cost if more is added later.
|
|
mob_trait = TRAIT_HALLOWED
|
|
gain_text = span_notice("You feel holy energy starting to flow through your body.")
|
|
lose_text = span_notice("You feel your holy energy fading away...")
|
|
medical_record_text = "Patient has unidentified hallowed material concentrated in their blood. Please consult a chaplain."
|
|
|
|
/datum/quirk/hallowed/add()
|
|
// Define quirk mob.
|
|
var/mob/living/carbon/human/quirk_mob = quirk_holder
|
|
|
|
// Give the holy trait.
|
|
ADD_TRAIT(quirk_mob, TRAIT_HOLY, "quirk_hallowed")
|
|
|
|
// Give the antimagic trait.
|
|
ADD_TRAIT(quirk_mob, TRAIT_ANTIMAGIC, "quirk_hallowed")
|
|
|
|
// Makes the user holy.
|
|
quirk_mob.mind.isholy = TRUE
|
|
|
|
// Add examine text.
|
|
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_Hallowed)
|
|
|
|
/datum/quirk/hallowed/remove()
|
|
// Define quirk mob.
|
|
var/mob/living/carbon/human/quirk_mob = quirk_holder
|
|
|
|
// Remove the holy trait.
|
|
REMOVE_TRAIT(quirk_mob, TRAIT_HOLY, "quirk_hallowed")
|
|
|
|
// Remove the antimagic trait.
|
|
REMOVE_TRAIT(quirk_mob, TRAIT_ANTIMAGIC, "quirk_hallowed")
|
|
|
|
// Makes the user not holy.
|
|
quirk_mob.mind.isholy = FALSE
|
|
|
|
// Remove examine text
|
|
UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
|
|
|
|
// Quirk examine text.
|
|
/datum/quirk/hallowed/proc/quirk_examine_Hallowed(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list)
|
|
examine_list += "[quirk_holder.p_they(TRUE)] radiates divine power..."
|
|
|
|
/datum/quirk/vacuum_resistance
|
|
name = "Vacuum Resistance"
|
|
desc = "Your body, whether due to technology, magic, or genetic engineering - is specially adapted to withstand and operate in the vacuum of space. You may still need a source of breathable air, however."
|
|
value = 3
|
|
gain_text = span_notice("Your physique attunes to the silence of space, now able to operate in zero pressure.")
|
|
lose_text = span_notice("Your physiology reverts as your spacefaring gifts lay dormant once more.")
|
|
var/list/perks = list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE, TRAIT_LOWPRESSURECOOLING)
|
|
|
|
/datum/quirk/vacuum_resistance/add()
|
|
. = ..()
|
|
var/mob/living/carbon/human/H = quirk_holder
|
|
for(var/perk in perks)
|
|
ADD_TRAIT(H, perk, ROUNDSTART_TRAIT)
|
|
|
|
/datum/quirk/vacuum_resistance/remove()
|
|
. = ..()
|
|
var/mob/living/carbon/human/H = quirk_holder
|
|
for(var/perk in perks)
|
|
REMOVE_TRAIT(H, perk, ROUNDSTART_TRAIT)
|