Merge branch 'master' into pr/784

This commit is contained in:
BongaTheProto
2024-05-14 19:23:36 -05:00
1986 changed files with 300592 additions and 259562 deletions
@@ -1,14 +1,14 @@
/datum/crafting_recipe/tailbag
name = "Tailbag"
result = /obj/item/storage/tailbag
result = /obj/item/storage/wallet/tailbag
reqs = list(/obj/item/stack/sheet/leather = 2)
time = 30
category = CAT_CLOTHING
/datum/crafting_recipe/tailbag_xl
name = "XL Tailbag"
result = /obj/item/storage/tailbag/xtralg
reqs = list(/obj/item/storage/tailbag = 1,
result = /obj/item/storage/wallet/tailbag/xtralg
reqs = list(/obj/item/storage/wallet/tailbag = 1,
/obj/item/stack/sheet/leather = 2)
time = 30
category = CAT_CLOTHING
@@ -29,7 +29,7 @@
src.color = "#[fire_color]"
lit(color)
RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/unlit)
RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(unlit))
// RegisterSignal(parent, COMSIG_MOB_LIFE)
/datum/component/neckfire/proc/lit(fire_color)
@@ -91,8 +91,8 @@
/datum/component/dullahan/Initialize()
. = ..()
RegisterSignal(dullahan_head, COMSIG_MOUSEDROPPED_ONTO, .proc/on_mouse_dropped)
RegisterSignal(dullahan_head, COMSIG_MOUSEDROP_ONTO, .proc/on_mouse_drop)
RegisterSignal(dullahan_head, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(on_mouse_dropped))
RegisterSignal(dullahan_head, COMSIG_MOUSEDROP_ONTO, PROC_REF(on_mouse_drop))
/datum/component/dullahan/proc/add_head_accessory(obj/item/clothing/I, item_path)
head_accessory_MA = mutable_appearance(I.mob_overlay_icon || HEAD_ACCESSORIES_PATHS[item_path])
@@ -32,7 +32,7 @@
inflate_organ(size - old_size)
/datum/component/organ_inflation/RegisterWithParent()
RegisterSignal(parent, COMSIG_ATOM_ENTERING, .proc/on_entering)
RegisterSignal(parent, COMSIG_ATOM_ENTERING, PROC_REF(on_entering))
if(container)
register_container()
@@ -42,8 +42,8 @@
unregister_container()
/datum/component/organ_inflation/proc/register_container()
RegisterSignal(container, COMSIG_ORGAN_INSERTED, .proc/on_inserted)
RegisterSignal(container, COMSIG_ORGAN_REMOVED, .proc/on_removed)
RegisterSignal(container, COMSIG_ORGAN_INSERTED, PROC_REF(on_inserted))
RegisterSignal(container, COMSIG_ORGAN_REMOVED, PROC_REF(on_removed))
/datum/component/organ_inflation/proc/unregister_container()
UnregisterSignal(container, COMSIG_ORGAN_REMOVED)
@@ -97,11 +97,11 @@
/datum/component/pregnancy/RegisterWithParent()
if(carrier)
register_carrier()
RegisterSignal(parent, COMSIG_ATOM_ENTERING, .proc/on_entering)
RegisterSignal(parent, COMSIG_OBJ_BREAK, .proc/on_obj_break)
RegisterSignal(parent, COMSIG_OBJ_WRITTEN_ON, .proc/name_egg)
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/handle_hatch)
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/eg_status)
RegisterSignal(parent, COMSIG_ATOM_ENTERING, PROC_REF(on_entering))
RegisterSignal(parent, COMSIG_OBJ_BREAK, PROC_REF(on_obj_break))
RegisterSignal(parent, COMSIG_OBJ_WRITTEN_ON, PROC_REF(name_egg))
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(handle_hatch))
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(eg_status))
/datum/component/pregnancy/UnregisterFromParent()
if(carrier)
@@ -113,18 +113,16 @@
UnregisterSignal(parent, COMSIG_PARENT_EXAMINE)
/datum/component/pregnancy/proc/register_carrier()
RegisterSignal(carrier, COMSIG_MOB_DEATH, .proc/fetus_mortus)
RegisterSignal(carrier, COMSIG_LIVING_BIOLOGICAL_LIFE, .proc/handle_life)
RegisterSignal(carrier, COMSIG_HEALTH_SCAN, .proc/on_scan)
RegisterSignal(carrier, COMSIG_MOB_APPLY_DAMAGE, .proc/handle_damage)
RegisterSignal(carrier, COMSIG_MOB_DEATH, PROC_REF(clear_eggs))
RegisterSignal(carrier, COMSIG_LIVING_BIOLOGICAL_LIFE, PROC_REF(handle_life))
RegisterSignal(carrier, COMSIG_HEALTH_SCAN, PROC_REF(on_scan))
if(oviposition)
RegisterSignal(carrier, COMSIG_MOB_CLIMAX, .proc/on_climax)
RegisterSignal(carrier, COMSIG_MOB_CLIMAX, PROC_REF(on_climax))
/datum/component/pregnancy/proc/unregister_carrier()
UnregisterSignal(carrier, COMSIG_MOB_DEATH)
UnregisterSignal(carrier, COMSIG_LIVING_BIOLOGICAL_LIFE)
UnregisterSignal(carrier, COMSIG_HEALTH_SCAN)
UnregisterSignal(carrier, COMSIG_MOB_APPLY_DAMAGE)
UnregisterSignal(carrier, COMSIG_MOB_CLIMAX)
/datum/component/pregnancy/Destroy()
@@ -227,7 +225,7 @@
if(stage < max_stage)
return
INVOKE_ASYNC(src, .proc/hatch, source, I, user, params)
INVOKE_ASYNC(src, PROC_REF(hatch), source, I, user, params)
/datum/component/pregnancy/proc/hatch(datum/source, obj/item/I, mob/user, params)
if(!COOLDOWN_FINISHED(src, hatch_request_cooldown))
@@ -403,26 +401,11 @@
/datum/component/pregnancy/proc/human_pragency_end(mob/living/carbon/human/gregnant)
SEND_SIGNAL(gregnant, COMSIG_CLEAR_MOOD_EVENT, "pregnancy")
/datum/component/pregnancy/proc/fetus_mortus()
/datum/component/pregnancy/proc/clear_eggs()
SIGNAL_HANDLER
if(!QDELETED(carrier) && get_turf(carrier) && (stage >= 2))
if(!oviposition)
new /obj/effect/gibspawner/generic(get_turf(carrier))
else
new /obj/effect/decal/cleanable/egg_smudge(get_turf(carrier))
carrier.Knockdown(200, TRUE, TRUE)
carrier.Stun(200, TRUE, TRUE)
carrier.adjustStaminaLoss(200)
qdel(src)
/datum/component/pregnancy/proc/on_scan(datum/source, mob/user)
SIGNAL_HANDLER
to_chat(user, span_notice("<b>Pregnancy detected!</b>"))
//drop kicked
/datum/component/pregnancy/proc/handle_damage(datum/source, damage, damagetype, def_zone)
SIGNAL_HANDLER
if(def_zone == BODY_ZONE_CHEST && damage > 20 && prob(40))
fetus_mortus()
@@ -18,14 +18,14 @@
carrier = genital.owner
/datum/component/ovipositor/RegisterWithParent()
RegisterSignal(parent, COMSIG_ORGAN_INSERTED, .proc/on_inserted)
RegisterSignal(parent, COMSIG_ORGAN_REMOVED, .proc/on_removed)
RegisterSignal(parent, COMSIG_ORGAN_INSERTED, PROC_REF(on_inserted))
RegisterSignal(parent, COMSIG_ORGAN_REMOVED, PROC_REF(on_removed))
if(carrier)
register_carrier()
/datum/component/ovipositor/proc/register_carrier()
RegisterSignal(carrier, COMSIG_LIVING_BIOLOGICAL_LIFE, .proc/handle_life)
RegisterSignal(carrier, COMSIG_MOB_CLIMAX, .proc/on_climax)
RegisterSignal(carrier, COMSIG_LIVING_BIOLOGICAL_LIFE, PROC_REF(handle_life))
RegisterSignal(carrier, COMSIG_MOB_CLIMAX, PROC_REF(on_climax))
/datum/component/ovipositor/proc/unregister_carrier()
UnregisterSignal(carrier, COMSIG_LIVING_BIOLOGICAL_LIFE)
@@ -22,7 +22,7 @@
wearer.flash_lighting_fx(3, 3, LIGHT_COLOR_PURPLE)
wearer.visible_message(span_warning("A flash of purple light engulfs \the [wearer], before [wearer.p_they()] jump[wearer.p_s()] to a more average size!"),span_notice("You feel warm for a moment, before everything scales to your size..."))
wearer.update_size(normal_resize)
RegisterSignal(wearer, COMSIG_MOB_RESIZED, .proc/normalize_size)
RegisterSignal(wearer, COMSIG_MOB_RESIZED, PROC_REF(normalize_size))
//Denormalize the mob when the component is destroyed (if needed)
/datum/component/size_normalized/UnregisterFromParent()
@@ -11,9 +11,9 @@
if(!isstructure(target)) //it would work up to movable but no.
return ELEMENT_INCOMPATIBLE //if any machinery comes up feel free to move up to /obj
RegisterSignal(target, COMSIG_MOUSEDROPPED_ONTO, .proc/check_crawl)
RegisterSignal(target, COMVER_CRAWL_UNDER, .proc/Affirm)
RegisterSignal(target, COMSIG_MOVABLE_UNCROSSED, .proc/uncrawl_from)
RegisterSignal(target, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(check_crawl))
RegisterSignal(target, COMVER_CRAWL_UNDER, PROC_REF(Affirm))
RegisterSignal(target, COMSIG_MOVABLE_UNCROSSED, PROC_REF(uncrawl_from))
/datum/element/crawl_under/Detach(datum/source, force)
var/obj/object = source //if src somehow changes type fuck you
@@ -42,7 +42,7 @@
if((user.pass_flags & PASSCRAWL) || HAS_TRAIT_FROM(user, TRAIT_FLOORED, ELEMENT_CRAWL_UNDER)) //already under
return
INVOKE_ASYNC(src, .proc/do_crawl, source, user)
INVOKE_ASYNC(src, PROC_REF(do_crawl), source, user)
return COMSIG_MOB_CANCEL_CLICKON
/datum/element/crawl_under/proc/do_crawl(obj/structure/source, mob/living/user)
@@ -7,7 +7,7 @@
if(!(isliving(target) || (force && istype(target, /atom/movable))))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_MOB_SAY, .proc/handle_speech)
RegisterSignal(target, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/element/smalltalk/Detach(datum/source, force)
. = ..()
@@ -27,7 +27,7 @@
if(L.client && !L.client.played)
SEND_SOUND(L, sound(sound, repeat = 0, wait = 0, volume = 35, channel = CHANNEL_AMBIENCE))
L.client.played = TRUE
addtimer(CALLBACK(L.client, /client/proc/ResetAmbiencePlayed), 600)
addtimer(CALLBACK(L.client, TYPE_PROC_REF(/client, ResetAmbiencePlayed)), 600)
if(65 to 70) //Lights flicker.
var/obj/machinery/light/L = locate(/obj/machinery/light) in view(4, C)
if(L)
@@ -1,5 +1,5 @@
/// Attempts to open the tgui menu
/mob/living/verb/genital_menu()
/mob/living/carbon/verb/genital_menu()
set name = "Genitals Menu"
set desc = "Manage your genital, or someone else's."
set category = "IC"
@@ -374,6 +374,19 @@
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
/datum/interaction/lewd/kiss/post_interaction(mob/living/user, mob/living/partner)
. = ..()
//SPLURT EDIT START:
// Check if user has TRAIT_KISS_SLUT and increase their lust
if(HAS_TRAIT(user, TRAIT_KISS_SLUT))
user.handle_post_sex(NORMAL_LUST, null, partner)
// Check if partner has TRAIT_KISS_SLUT and increase their lust
if(HAS_TRAIT(partner, TRAIT_KISS_SLUT))
partner.handle_post_sex(NORMAL_LUST, null, user)
//SPLURT EDIT END
/datum/interaction/lewd/kiss/display_interaction(mob/living/user, mob/living/partner)
. = ..()
playlewdinteractionsound(partner, pick(
+4 -4
View File
@@ -68,8 +68,8 @@
/datum/quirk/dominant_aura/add()
. = ..()
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
RegisterSignal(quirk_holder, COMSIG_MOB_EMOTE, .proc/handle_snap)
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine_holder))
RegisterSignal(quirk_holder, COMSIG_MOB_EMOTE, PROC_REF(handle_snap))
/datum/quirk/dominant_aura/remove()
. = ..()
@@ -219,7 +219,7 @@
quirk_mob.mind.isholy = TRUE
// Add examine text.
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine_holder))
/datum/quirk/hallowed/remove()
// Define quirk mob.
@@ -314,7 +314,7 @@
quirk_mob.grant_language(/datum/language/vampiric, TRUE, TRUE, LANGUAGE_BLOODSUCKER)
// Register examine text
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_bloodfledge)
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(quirk_examine_bloodfledge))
/datum/quirk/bloodfledge/post_add()
// Define quirk mob
@@ -6,7 +6,7 @@
/datum/quirk/social_anxiety/add()
. = ..()
RegisterSignal(quirk_holder, COMSIG_MOB_SAY, .proc/handle_speech)
RegisterSignal(quirk_holder, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/quirk/social_anxiety/remove()
. = ..()
@@ -137,7 +137,7 @@
/datum/quirk/dumb4cum/add()
// Set timer
timer = addtimer(CALLBACK(src, .proc/crave), timer_trigger, TIMER_STOPPABLE)
timer = addtimer(CALLBACK(src, PROC_REF(crave)), timer_trigger, TIMER_STOPPABLE)
/datum/quirk/dumb4cum/remove()
// Remove status trait
@@ -198,7 +198,7 @@
timer = null
// Add new timer
timer = addtimer(CALLBACK(src, .proc/crave), timer_trigger, TIMER_STOPPABLE)
timer = addtimer(CALLBACK(src, PROC_REF(crave)), timer_trigger, TIMER_STOPPABLE)
// Small issue with this. If the quirk holder has NO_HUNGER or NO_THIRST, this trait can still be taken and they will still get the benefits of it.
// It's unlikely that someone will be both, especially at round start, but vampirism makes me wary of having these separate.
+13 -4
View File
@@ -94,7 +94,7 @@
act_hypno.Grant(quirk_mob)
// Add examine text
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine_holder))
/datum/quirk/Hypnotic_gaze/remove()
// Define quirk mob
@@ -255,7 +255,7 @@
/datum/quirk/well_trained/add()
. = ..()
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine_holder))
/datum/quirk/well_trained/remove()
. = ..()
@@ -573,8 +573,8 @@
/datum/quirk/nudist/add()
// Register signal handlers
RegisterSignal(quirk_holder, COMSIG_MOB_UPDATE_GENITALS, .proc/check_outfit)
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_nudist)
RegisterSignal(quirk_holder, COMSIG_MOB_UPDATE_GENITALS, PROC_REF(check_outfit))
RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(quirk_examine_nudist))
/datum/quirk/nudist/remove()
// Remove mood event
@@ -722,3 +722,12 @@
gain_text = span_lewd("You feel like covering something in layer of your fluids.")
lose_text = span_notice("You don't feel 'messy' anymore.")
medical_record_text = "Had to be sedated after covering entire hospital wing with cum."
/datum/quirk/kiss_slut
name = "Kiss Slut"
desc = "The sheer thought of kissing someone makes you blush and overheat, effectively increasing your arousal with each smooch."
value = 0
mob_trait = TRAIT_KISS_SLUT
gain_text = span_lewd("You feel like kissing someone...")
lose_text = span_notice("You don't feel like kissing someone anymore...")
medical_record_text = "Patient seems to demonstrate an extraordinary liking in kissing."
@@ -131,13 +131,7 @@
// Log interaction
log_admin("[key_name(owner)] [log_message_type] hypnotic brainwashing powers.")
/datum/action/cooldown/hypnotize/Trigger()
. = ..()
// Check parent return
if(!.)
return
/datum/action/cooldown/hypnotize/Activate()
// Define action owner
var/mob/living/carbon/human/action_owner = owner
@@ -147,7 +141,7 @@
// Check for target
if(!grab_target)
// Warn the user, then return
to_chat(action_owner, span_warning("You you need to grab someone first!"))
to_chat(action_owner, span_warning("You need to grab someone first!"))
return
// Check for cyborg
@@ -189,7 +183,7 @@
// Check if target has a mind
if(!action_target.mind)
// Warn the user, then return
to_chat(action_owner, span_warning("[grab_target] doesn\'t have a compatible mind!"))
to_chat(action_owner, span_warning("[grab_target] doesn't have a compatible mind!"))
return
/* Unused: Replaced by get_eye_protection
@@ -442,13 +436,7 @@
// Create reagent holder
blood_bank = new(BLOODFLEDGE_BANK_CAPACITY)
/datum/action/cooldown/bloodfledge/bite/Trigger()
. = ..()
// Check parent return
if(!.)
return
/datum/action/cooldown/bloodfledge/bite/Activate()
// Define action owner
var/mob/living/carbon/action_owner = owner
@@ -1037,13 +1025,7 @@
button_icon_state = "power_strength"
cooldown_time = BLOODFLEDGE_COOLDOWN_REVIVE
/datum/action/cooldown/bloodfledge/revive/Trigger()
. = ..()
// Check parent return
if(!.)
return
/datum/action/cooldown/bloodfledge/revive/Activate()
// Define mob
var/mob/living/carbon/human/action_owner = owner
@@ -1244,15 +1226,7 @@
if(NEUTER)
werewolf_gender = "Þing"
/datum/action/cooldown/werewolf/transform/Trigger()
. = ..()
// Check if unavailable
// Checks the parent function's return value
if(!.)
// Messages will not display here
return FALSE
/datum/action/cooldown/werewolf/transform/Activate()
// Define action owner
var/mob/living/carbon/human/action_owner = owner
@@ -1507,7 +1481,8 @@
var/mob/living/carbon/human/action_mob = owner
// Add outline effect
action_mob.add_filter("rad_fiend_glow", 1, list("type" = "outline", "color" = glow_color+"30", "size" = glow_range))
if(glow_color && glow_range)
action_mob.add_filter("rad_fiend_glow", 1, list("type" = "outline", "color" = glow_color+"30", "size" = glow_range))
/datum/action/cosglow/update_glow/Remove()
. = ..()
@@ -1532,16 +1507,19 @@
glow_color = (input_color ? input_color : glow_color)
// Ask user for range input
var/input_range = input(action_mob, "How much do you glow? Value may range between 1 to 2.", "Select Glow Range", glow_range) as num|null
var/input_range = input(action_mob, "How much do you glow? Value may range between 0 to 4. 0 disables glow.", "Select Glow Range", glow_range) as num|null
// Check if range input was given
// Reset to stored color when not given input
// Input is clamped in the 1-4 range
glow_range = (input_range ? clamp(input_range, 0, 4) : glow_range) //More customisable, so you know when you're looking at someone with Radfiend (doom) or a normal player.
// Disable glow if input is 0.
// Reset to stored range when input is null.
// Input is clamped in the 0-4 range
glow_range = isnull(input_range) ? glow_range : clamp(input_range, 0, 4) //More customisable, so you know when you're looking at someone with Radfiend (doom) or a normal player.
// Update outline effect
action_mob.remove_filter("rad_fiend_glow")
action_mob.add_filter("rad_fiend_glow", 1, list("type" = "outline", "color" = glow_color+"30", "size" = glow_range))
if(glow_range && glow_color)
action_mob.add_filter("rad_fiend_glow", 1, list("type" = "outline", "color" = glow_color+"30", "size" = glow_range))
else
action_mob.remove_filter("rad_fiend_glow")
//
// Quirk: Rad Fiend
@@ -1697,11 +1675,7 @@
icon_icon = 'modular_splurt/icons/mob/actions/lewd_actions/lewd_icons.dmi'
button_icon_state = "pain_max"
/datum/action/cooldown/toggle_distant/Trigger()
. = ..()
if(!.)
return
/datum/action/cooldown/toggle_distant/Activate()
var/mob/living/carbon/human/action_owner = owner
if(HAS_TRAIT(action_owner, TRAIT_DISTANT))