From 8e01ed24b08f3ec0c8dfea6952de442fab94ab76 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Wed, 27 Dec 2023 20:37:25 +0100
Subject: [PATCH 01/20] Undead tweak + quirk and sleepheal
---
code/__SPLURTCODE/DEFINES/traits.dm | 1 +
code/datums/status_effects/debuffs.dm | 33 +++++++++++++++----
code/datums/traits/good.dm | 8 ++---
.../human/innate_abilities/customization.dm | 3 +-
modular_splurt/code/datums/traits/good.dm | 28 ++++++++++++++++
modular_splurt/code/datums/traits/neutral.dm | 13 ++------
6 files changed, 64 insertions(+), 22 deletions(-)
diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm
index 2702790a4b76..5b76785b0087 100644
--- a/code/__SPLURTCODE/DEFINES/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/traits.dm
@@ -47,3 +47,4 @@
#define TRAIT_BODY_MORPHER "body_morpher"
#define TRAIT_HALLOWED "hallowed"
#define TRAIT_MESSY "messy"
+#define TRAIT_HEALING_FACTOR "healing_factor"
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 0d44c3b55448..94e8fe4105d4 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -1,3 +1,6 @@
+/// The damage healed per tick while sleeping without any modifiers
+#define HEALING_SLEEP_DEFAULT 0.005
+
//Largely negative status effects go here, even if they have small benificial effects
//STUN EFFECTS
/datum/status_effect/incapacitating
@@ -77,8 +80,22 @@
return ..()
/datum/status_effect/incapacitating/sleeping/tick()
- if(owner.getStaminaLoss())
- owner.adjustStaminaLoss(-0.5) //reduce stamina loss by 0.5 per tick, 10 per 2 seconds
+ if(owner.maxHealth)
+ var/health_ratio = owner.health / owner.maxHealth
+ var/healing = HEALING_SLEEP_DEFAULT
+ if((locate(/obj/structure/bed) in owner.loc))
+ healing -= 0.005
+ else if((locate(/obj/structure/table) in owner.loc))
+ healing -= 0.0025
+ else if((locate(/obj/structure/chair) in owner.loc))
+ healing -= 0.0025
+ if(locate(/obj/item/bedsheet) in owner.loc)
+ healing -= 0.005
+ if(health_ratio > 0.65) // Only heal when above 65% health
+ owner.adjustBruteLoss(healing, only_organic = FALSE) //only_organic = FALSE for robotic species/limbs
+ owner.adjustFireLoss(healing, only_organic = FALSE)
+ owner.adjustToxLoss(healing * 0.5, forced = TRUE)
+ owner.adjustStaminaLoss(healing)
if(human_owner && human_owner.drunkenness)
human_owner.drunkenness *= 0.997 //reduce drunkenness by 0.3% per tick, 6% per 2 seconds
if(carbon_owner && !carbon_owner.dreaming && prob(2))
@@ -87,6 +104,11 @@
if(prob((tick_interval+1) * 0.2) && owner.health > owner.crit_threshold)
owner.emote("snore")
+/atom/movable/screen/alert/status_effect/asleep
+ name = "Asleep"
+ desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
+ icon_state = "asleep"
+
/datum/status_effect/staggered
id = "staggered"
blocks_sprint = TRUE
@@ -122,11 +144,6 @@
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/off_balance)
return ..()
-/atom/movable/screen/alert/status_effect/asleep
- name = "Asleep"
- desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
- icon_state = "asleep"
-
/datum/status_effect/grouped/stasis
id = "stasis"
duration = -1
@@ -1212,3 +1229,5 @@
if(ishostile(owner))
var/mob/living/simple_animal/hostile/simple_owner = owner
simple_owner.ranged_cooldown_time /= 2.5
+
+#undef HEALING_SLEEP_DEFAULT
\ No newline at end of file
diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm
index ab849bafcefa..61233bb1dbe7 100644
--- a/code/datums/traits/good.dm
+++ b/code/datums/traits/good.dm
@@ -40,7 +40,7 @@
/datum/quirk/empath
name = "Empath"
desc = "Whether it's a sixth sense or careful study of body language, it only takes you a quick glance at someone to understand how they feel."
- value = 2
+ value = 1 // SPLURT EDIT
mob_trait = TRAIT_EMPATH
gain_text = "You feel in tune with those around you."
lose_text = "You feel isolated from others."
@@ -49,7 +49,7 @@
/datum/quirk/freerunning
name = "Freerunning"
desc = "You're great at quick moves! You can climb tables more quickly."
- value = 2
+ value = 1 // SPLURT EDIT
mob_trait = TRAIT_FREERUNNING
gain_text = "You feel lithe on your feet!"
lose_text = "You feel clumsy again."
@@ -90,7 +90,7 @@
/datum/quirk/quick_step
name = "Quick Step"
desc = "You walk with determined strides, and out-pace most people when walking."
- value = 2
+ value = 1 // SPLURT EDIT
mob_trait = TRAIT_SPEEDY_STEP
gain_text = "You feel determined. No time to lose."
lose_text = "You feel less determined. What's the rush, man?"
@@ -125,7 +125,7 @@
/datum/quirk/skittish
name = "Skittish"
desc = "You can conceal yourself in danger. Ctrl-shift-click a closed locker to jump into it, as long as you have access."
- value = 2
+ value = 1 // SPLURT EDIT
mob_trait = TRAIT_SKITTISH
medical_record_text = "Patient demonstrates a high aversion to danger and has described hiding in containers out of fear."
diff --git a/code/modules/mob/living/carbon/human/innate_abilities/customization.dm b/code/modules/mob/living/carbon/human/innate_abilities/customization.dm
index cd950d60b162..c33b633f82d8 100644
--- a/code/modules/mob/living/carbon/human/innate_abilities/customization.dm
+++ b/code/modules/mob/living/carbon/human/innate_abilities/customization.dm
@@ -333,7 +333,7 @@
else
H.dna.features["horns_color"] = sanitize_hexcolor(new_horn_color, 6)
- H.update_body()
+ H.update_body()
else if (select_alteration == "Hair Color")
var/new_hair_color = input(owner, "Choose your character's hair color:", "Character Preference", "#" + H.dna.features["hair_color"]) as color|null
@@ -358,6 +358,7 @@
H.skin_tone = custom_tone
else
H.skin_tone = new_s_tone
+ H.update_body()
else if (select_alteration == "Gender & Lewd")
var/lewd_selection = input(owner, "Select what aspect of gender and lewd preferences to alter", "Gender & Lewd", "cancel") in list("Gender", "Body Model", "Cancel")
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index 0e127ec9d523..aed447a7d951 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -260,3 +260,31 @@
var/mob/living/carbon/human/H = quirk_holder
for(var/perk in perks)
REMOVE_TRAIT(H, perk, ROUNDSTART_TRAIT)
+
+/datum/quirk/healing_factor
+ name = "Healing Factor"
+ desc = "Your body possesses a differentiated reconstutitive ability, allowing you to slowly heal from injuries. Note, however, that critical injuries and wounds or genetic damage will still require medical attention."
+ value = 2
+ mob_trait = TRAIT_HEALING_FACTOR
+ gain_text = span_notice("You feel a surge of reconstutitive vitality coursing through your body.")
+ lose_text = span_notice("You sense your enhanced reconstutitive ability fading away...")
+ processing_quirk = TRUE
+
+/datum/quirk/healing_factor/on_process()
+ . = ..()
+ var/mob/living/carbon/human/H = quirk_holder
+
+ // The only_organic flag allows robotic biotypes to not be excluded.
+ H.adjustBruteLoss(-0.35, only_organic = FALSE) //The healing factor will only regenerate fully if not burnt beyond a specific threshold.
+ H.adjustFireLoss(-0.25, only_organic = FALSE)
+ if(H.getBruteLoss() > 0 && H.getFireLoss() <= 50 || H.getFireLoss() > 0 && H.getFireLoss() <= 50)
+ H.adjustBruteLoss(-0.15, forced = TRUE, only_organic = FALSE)
+ H.adjustFireLoss(-0.10, forced = TRUE, only_organic = FALSE)
+ /* Doesn't heal robotic toxin damage (only_organic = FALSE not needed for tox),
+ another adjustToxLoss check with toxins_type = TOX_SYSCORRUPT,
+ (or just adding TOX_OMNI to the already existing one) could be added to heal robotic corruption,
+ but would make robotic species unbalanced.
+ */
+ else if (H.getToxLoss() <= 90)
+ H.adjustToxLoss(-0.3, forced = TRUE)
+
diff --git a/modular_splurt/code/datums/traits/neutral.dm b/modular_splurt/code/datums/traits/neutral.dm
index 40c1049cb4be..e7e5a5d8b097 100644
--- a/modular_splurt/code/datums/traits/neutral.dm
+++ b/modular_splurt/code/datums/traits/neutral.dm
@@ -149,14 +149,14 @@
//Zombies + Cumplus Fix\\
-/*
/datum/quirk/undead
name = "Undeath"
desc = "Your body, be it anomalous, or just outright refusing to die - has indeed become undead. Due to this you may be more susceptible to burn-based weaponry."
value = 0
mob_trait = TRAIT_UNDEAD
processing_quirk = TRUE
- var/list/zperks = list(TRAIT_RESISTCOLD,TRAIT_STABLEHEART,TRAIT_EASYDISMEMBER,TRAIT_NOBREATH,TRAIT_VIRUSIMMUNE,TRAIT_RADIMMUNE,TRAIT_FAKEDEATH,TRAIT_NOSOFTCRIT, TRAIT_NOPULSE)
+ // Note: The Undead cannot take advantage of healing viruses and genetic mutations, since they have no DNA.
+ var/list/zperks = list(TRAIT_STABLEHEART,TRAIT_EASYDISMEMBER,TRAIT_NOBREATH,TRAIT_VIRUSIMMUNE,TRAIT_RADIMMUNE,TRAIT_FAKEDEATH,TRAIT_NOSOFTCRIT, TRAIT_NOPULSE)
/datum/quirk/undead/add()
. = ..()
@@ -177,16 +177,9 @@
/datum/quirk/undead/on_process()
. = ..()
var/mob/living/carbon/human/H = quirk_holder
- H.adjust_nutrition(-0.05)//The Undead are Hungry.
+ H.adjust_nutrition(-0.025)//The Undead are Hungry.
H.set_screwyhud(SCREWYHUD_HEALTHY)
H.adjustOxyLoss(-3) //Stops a defibrilator bug. Note to future self: Fix defib bug.
- H.adjustBruteLoss(-0.5) //The undead will only regenerate if not burnt beyond a specific threshold. A good value is 50 as that will strain them if they decide to spacewalk near fusion.
- if(H.getBruteLoss() > 0 && H.getFireLoss() <= 50 || H.getFireLoss() > 0 && H.getFireLoss() <= 50)
- H.adjustBruteLoss(-0.5, forced = TRUE)
- H.adjustFireLoss(-0.15, forced = TRUE)
- else if (H.getToxLoss() <= 90)
- H.adjustToxLoss(-0.3, forced = TRUE)
-*/
/datum/quirk/cum_plus
name = "Extra-Productive Genitals"
From 270601f3dffb2c078dda2438873179e4b448019b Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Wed, 27 Dec 2023 20:48:23 +0100
Subject: [PATCH 02/20] New line!
---
code/datums/status_effects/debuffs.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 94e8fe4105d4..e1507f1ed4ae 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -1230,4 +1230,4 @@
var/mob/living/simple_animal/hostile/simple_owner = owner
simple_owner.ranged_cooldown_time /= 2.5
-#undef HEALING_SLEEP_DEFAULT
\ No newline at end of file
+#undef HEALING_SLEEP_DEFAULT
From bfbd3ef61d4f3364ea8a9f8f0e52958a6bada165 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Wed, 27 Dec 2023 20:55:50 +0100
Subject: [PATCH 03/20] Update description
---
modular_splurt/code/datums/traits/good.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index aed447a7d951..2bfb9580343d 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -263,7 +263,7 @@
/datum/quirk/healing_factor
name = "Healing Factor"
- desc = "Your body possesses a differentiated reconstutitive ability, allowing you to slowly heal from injuries. Note, however, that critical injuries and wounds or genetic damage will still require medical attention."
+ desc = "Your body possesses a differentiated reconstutitive ability, allowing you to slowly heal from injuries. Note, however, that critical injuries, wounds or genetic damage will still require medical attention."
value = 2
mob_trait = TRAIT_HEALING_FACTOR
gain_text = span_notice("You feel a surge of reconstutitive vitality coursing through your body.")
From 76ce2e7729c18c1930a5b0c29294f2f119e479e5 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Fri, 29 Dec 2023 04:09:18 +0100
Subject: [PATCH 04/20] Nerf: Sleep healing
---
code/datums/status_effects/debuffs.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index e1507f1ed4ae..af32731d93d9 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -91,9 +91,9 @@
healing -= 0.0025
if(locate(/obj/item/bedsheet) in owner.loc)
healing -= 0.005
- if(health_ratio > 0.65) // Only heal when above 65% health
- owner.adjustBruteLoss(healing, only_organic = FALSE) //only_organic = FALSE for robotic species/limbs
- owner.adjustFireLoss(healing, only_organic = FALSE)
+ if(health_ratio > 0.75) // Only heal when above 75% health
+ owner.adjustBruteLoss(healing)
+ owner.adjustFireLoss(healing)
owner.adjustToxLoss(healing * 0.5, forced = TRUE)
owner.adjustStaminaLoss(healing)
if(human_owner && human_owner.drunkenness)
From 7f940eba77b02f17f423d50f72285de048995251 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sun, 31 Dec 2023 15:05:38 +0100
Subject: [PATCH 05/20] Quirk rebalance
---
.../mood_events/generic_negative_events.dm | 14 +-
code/modules/client/preferences.dm | 5 +-
.../modules/mob/living/living_movement.dm | 19 +-
modular_splurt/code/datums/traits/good.dm | 252 +++++++++++++++++-
modular_splurt/code/datums/traits/negative.dm | 8 +-
modular_splurt/code/datums/traits/neutral.dm | 228 +---------------
.../code/datums/traits/trait_actions.dm | 4 +-
.../chastity_hypno/chastity_hypnosis.dm | 2 +-
8 files changed, 286 insertions(+), 246 deletions(-)
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index 3521fe756c8f..63412615cc8b 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -47,7 +47,7 @@
/datum/mood_event/delam //SM delamination
description = "Those God damn engineers can't do anything right...\n"
mood_change = -2
- timeout = 2400
+ timeout = 4 MINUTES
/datum/mood_event/depression
description = "I feel sad for no particular reason.\n"
@@ -62,7 +62,7 @@
/datum/mood_event/dismembered
description = "AHH! I WAS USING THAT LIMB!\n"
mood_change = -8
- timeout = 2400
+ timeout = 4 MINUTES
/datum/mood_event/noshoes
description = "I am a disgrace to comedy everywhere!\n"
@@ -109,7 +109,7 @@
/datum/mood_event/epilepsy //Only when the mutation causes a seizure
description = "I should have paid attention to the epilepsy warning.\n"
mood_change = -3
- timeout = 3000
+ timeout = 5 MINUTES
/datum/mood_event/nyctophobia
description = "It sure is dark around here...\n"
@@ -155,12 +155,12 @@
/datum/mood_event/loud_gong
description = "That loud gong noise really hurt my ears!\n"
mood_change = -3
- timeout = 1200
+ timeout = 2 MINUTES
/datum/mood_event/spooked
description = "The rattling of those bones...It still haunts me.\n"
mood_change = -4
- timeout = 2400
+ timeout = 4 MINUTES
/datum/mood_event/graverobbing
description ="I just desecrated someone's grave... I can't believe I did that...\n"
@@ -187,7 +187,7 @@
/datum/mood_event/sad_empath
description = "Someone seems upset...\n"
mood_change = -2
- timeout = 600
+ timeout = 1 MINUTES
/datum/mood_event/sad_empath/add_effects(mob/sadtarget)
description = "[sadtarget.name] seems upset...\n"
@@ -288,7 +288,7 @@
/datum/mood_event/artbad
description = "I've produced better art than that from my ass.\n"
mood_change = -2
- timeout = 1200
+ timeout = 2 MINUTES
/datum/mood_event/tripped
description = "I can't believe I fell for the oldest trick in the book!\n"
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index fa78742c81e4..7508027bb784 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1,6 +1,7 @@
#define DEFAULT_SLOT_AMT 2
#define HANDS_SLOT_AMT 2
#define BACKPACK_SLOT_AMT 4
+#define DEFAULT_QUIRK_BALANCE 2 // SPLURT EDIT: Starting quirk points balance.
GLOBAL_LIST_EMPTY(preferences_datums)
@@ -2007,7 +2008,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
popup.open(FALSE)
/datum/preferences/proc/GetQuirkBalance()
- var/bal = 0
+ var/bal = DEFAULT_QUIRK_BALANCE
for(var/V in all_quirks)
var/datum/quirk/T = SSquirks.quirks[V]
bal -= initial(T.value)
@@ -4426,4 +4427,4 @@ GLOBAL_LIST_EMPTY(preferences_datums)
#undef DEFAULT_SLOT_AMT
#undef HANDS_SLOT_AMT
#undef BACKPACK_SLOT_AMT
-
+#undef DEFAULT_QUIRK_BALANCE
diff --git a/modular_sand/code/modules/mob/living/living_movement.dm b/modular_sand/code/modules/mob/living/living_movement.dm
index 4a0464ef6ba2..0f290dbe04b1 100644
--- a/modular_sand/code/modules/mob/living/living_movement.dm
+++ b/modular_sand/code/modules/mob/living/living_movement.dm
@@ -17,7 +17,7 @@
layer = clamp(layer, MOB_LAYER_SHIFT_MIN, MOB_LAYER_SHIFT_MAX)
layer += MOB_LAYER_SHIFT_INCREMENT
- var/layer_priority = FLOOR((layer - MOB_LAYER) * 100, 1) // Just for text feedback
+ var/layer_priority = (layer - MOB_LAYER) * 100 // Just for text feedback | SPLURT EDIT: Removed FLOOR calculation
to_chat(src, span_notice("Your layer priority is now [layer_priority]."))
/mob/living/verb/layershift_down()
@@ -34,5 +34,20 @@
layer = clamp(layer, MOB_LAYER_SHIFT_MIN, MOB_LAYER_SHIFT_MAX)
layer -= MOB_LAYER_SHIFT_INCREMENT
- var/layer_priority = FLOOR((layer - MOB_LAYER) * 100, 1) // Just for text feedback
+ var/layer_priority = (layer - MOB_LAYER) * 100 // Just for text feedback | SPLURT EDIT: Removed FLOOR calculation
+ to_chat(src, span_notice("Your layer priority is now [layer_priority]."))
+
+/mob/living/verb/layershift_reset() //SPLURT ADDITION
+ set name = "Reset Layer"
+ set category = "IC"
+
+ if(incapacitated())
+ to_chat(src, span_warning("You can't do that right now!"))
+ return
+
+ if(lying)
+ layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs
+ else
+ layer = initial(layer)
+ var/layer_priority = (layer - MOB_LAYER) * 100 // Just for text feedback
to_chat(src, span_notice("Your layer priority is now [layer_priority]."))
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index 2bfb9580343d..1a1901ff2d81 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -201,9 +201,9 @@
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
+ medical_record_text = "Patient contains an unidentified hallowed material concentrated in their blood. Please consult a chaplain."
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.
@@ -286,5 +286,253 @@
but would make robotic species unbalanced.
*/
else if (H.getToxLoss() <= 90)
- H.adjustToxLoss(-0.3, forced = TRUE)
+ H.adjustToxLoss(-0.3, forced = TRUE)
+/datum/quirk/bloodfledge
+ name = "Bloodsucker Fledgling"
+ desc = "You are a fledgling belonging to ancient Bloodsucker bloodline. While the blessing has yet to fully convert you, some things have changed. Only blood will sate your hungers, and holy energies will cause your flesh to char. This is NOT an antagonist role!"
+ value = 2
+ medical_record_text = "Patient exhibits onset symptoms of a sanguine curse."
+ mob_trait = TRAIT_BLOODFLEDGE
+ gain_text = span_notice("You feel a sanguine thirst.")
+ lose_text = span_notice("You feel the sanguine thirst fade away.")
+ processing_quirk = FALSE // Handled by crates.dm
+
+/datum/quirk/bloodfledge/add()
+ // Define quirk mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Add quirk traits
+ ADD_TRAIT(quirk_mob,TRAIT_NO_PROCESS_FOOD,ROUNDSTART_TRAIT)
+ ADD_TRAIT(quirk_mob,TRAIT_NOTHIRST,ROUNDSTART_TRAIT)
+
+ // Set skin tone, if possible
+ if(!quirk_mob.dna.skin_tone_override)
+ quirk_mob.skin_tone = "albino"
+
+ // Add quirk language
+ quirk_mob.grant_language(/datum/language/vampiric, TRUE, TRUE, LANGUAGE_BLOODSUCKER)
+
+ // Register examine text
+ RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_bloodfledge)
+
+/datum/quirk/bloodfledge/post_add()
+ // Define quirk mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Define and grant ability Bite
+ var/datum/action/cooldown/bloodfledge/bite/act_bite = new
+ act_bite.Grant(quirk_mob)
+
+ // Check for synthetic
+ // Robotic mobs have technical issues with adjusting damage
+ if(quirk_mob.mob_biotypes & MOB_ROBOTIC)
+ // Warn user
+ to_chat(quirk_mob, span_warning("As a synthetic lifeform, your components are only able to grant limited sanguine abilities! Regeneration and revival are not possible."))
+
+ // User is not synthetic
+ else
+ // Define and grant ability Revive
+ var/datum/action/cooldown/bloodfledge/revive/act_revive = new
+ act_revive.Grant(quirk_mob)
+
+/datum/quirk/bloodfledge/on_process()
+ // Processing is currently only used for coffin healing
+ // This is started and stopped by a proc in crates.dm
+
+ // Define potential coffin
+ var/quirk_coffin = quirk_holder.loc
+
+ // Check if the current area is a coffin
+ if(istype(quirk_coffin, /obj/structure/closet/crate/coffin))
+ // Define quirk mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Quirk mob must be injured
+ if(quirk_mob.health >= quirk_mob.maxHealth)
+ // Warn user
+ to_chat(quirk_mob, span_notice("[quirk_coffin] does nothing more to help you, as your body is fully mended."))
+
+ // Stop processing and return
+ STOP_PROCESSING(SSquirks, src)
+ return
+
+ // Nutrition (blood) level must be above STARVING
+ if(quirk_mob.nutrition <= NUTRITION_LEVEL_STARVING)
+ // Warn user
+ to_chat(quirk_mob, span_warning("[quirk_coffin] requires blood to operate, which you are currently lacking. Your connection to the other-world fades once again."))
+
+ // Stop processing and return
+ STOP_PROCESSING(SSquirks, src)
+ return
+
+ // Define initial health
+ var/health_start = quirk_mob.health
+
+ // Heal brute and burn
+ // Accounts for robotic limbs
+ quirk_mob.heal_overall_damage(2,2)
+ // Heal oxygen
+ quirk_mob.adjustOxyLoss(-2)
+ // Heal clone
+ quirk_mob.adjustCloneLoss(-2)
+
+ // Check for slime race
+ // NOT a slime
+ if(!isslimeperson(quirk_mob))
+ // Heal toxin
+ quirk_mob.adjustToxLoss(-2)
+ // IS a slime
+ else
+ // Grant toxin (heals slimes)
+ quirk_mob.adjustToxLoss(2)
+
+ // Update health
+ quirk_mob.updatehealth()
+
+ // Determine healed amount
+ var/health_restored = quirk_mob.health - health_start
+
+ // Remove nutrition (blood) as compensation for healing
+ // Amount is equal to 50% of healing done
+ quirk_mob.adjust_nutrition(health_restored*-1)
+
+ // User is not in a coffin
+ // This should not occur without teleportation
+ else
+ // Warn user
+ to_chat(quirk_holder, span_warning("Your connection to the other-world is broken upon leaving the [quirk_coffin]!"))
+
+ // Stop processing
+ STOP_PROCESSING(SSquirks, src)
+
+/datum/quirk/bloodfledge/remove()
+ // Define quirk mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Remove quirk traits
+ REMOVE_TRAIT(quirk_mob, TRAIT_NO_PROCESS_FOOD, ROUNDSTART_TRAIT)
+ REMOVE_TRAIT(quirk_mob, TRAIT_NOTHIRST, ROUNDSTART_TRAIT)
+
+ // Remove quirk ability action datums
+ var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions
+ var/datum/action/cooldown/bloodfledge/revive/act_revive = locate() in quirk_mob.actions
+ act_bite.Remove(quirk_mob)
+ act_revive.Remove(quirk_mob)
+
+ // Remove quirk language
+ quirk_mob.remove_language(/datum/language/vampiric, TRUE, TRUE, LANGUAGE_BLOODSUCKER)
+
+ // Unregister examine text
+ UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
+
+/datum/quirk/bloodfledge/on_spawn()
+ // Define quirk mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Create vampire ID card
+ var/obj/item/card/id/vampire/id_vampire = new /obj/item/card/id/vampire(get_turf(quirk_holder))
+
+ // Update card information
+ id_vampire.registered_name = quirk_mob.real_name
+ id_vampire.update_label(addtext(id_vampire.registered_name, "'s Bloodfledge"))
+
+ // Determine banking ID information
+ for(var/bank_account in SSeconomy.bank_accounts)
+ // Define current iteration's account
+ var/datum/bank_account/account = bank_account
+
+ // Check for match
+ if(account.account_id == quirk_mob.account_id)
+ // Add to cards list
+ account.bank_cards += src
+
+ // Assign account
+ id_vampire.registered_account = account
+
+ // Stop searching
+ break
+
+ // Try to add ID to backpack
+ var/id_in_bag = quirk_mob.equip_to_slot_if_possible(id_vampire, ITEM_SLOT_BACKPACK) || FALSE
+
+ // Text for where the item was sent
+ var/id_location = (id_in_bag ? "in your backpack" : "at your feet" )
+
+ // Alert user in chat
+ // This should not post_add, because the ID is added by on_spawn
+ to_chat(quirk_holder, span_boldnotice("There is a bloodfledge's ID card [id_location], linked to your station account. It functions as a spare ID, but lacks job access."))
+
+/datum/quirk/bloodfledge/proc/quirk_examine_bloodfledge(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list)
+ SIGNAL_HANDLER
+
+ // Check if human examiner exists
+ if(!istype(examiner))
+ return
+
+ // Check if examiner is dumb
+ if(HAS_TRAIT(examiner, TRAIT_DUMB))
+ // Return with no effects
+ return
+
+ // Define quirk mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Define hunger texts
+ var/examine_hunger_public
+ var/examine_hunger_secret
+
+ // Check hunger levels
+ switch(quirk_mob.nutrition)
+ // Hungry
+ if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
+ examine_hunger_secret = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] blood starved!"
+ examine_hunger_public = "[quirk_holder.p_they(TRUE)] seem[quirk_holder.p_s()] on edge from something."
+
+ // Starving
+ if(0 to NUTRITION_LEVEL_STARVING)
+ examine_hunger_secret = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] in dire need of blood!"
+ examine_hunger_public = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] radiating an aura of frenzied hunger!"
+
+ // Invalid hunger
+ else
+ // Return with no message
+ return
+
+ // Check if examiner shares the quirk
+ if(isbloodfledge(examiner))
+ // Add detection text
+ examine_list += span_info("[quirk_holder.p_their(TRUE)] hunger makes it easy to identify [quirk_holder.p_them()] as a fellow Bloodsucker Fledgling!")
+
+ // Add hunger text
+ examine_list += span_warning(examine_hunger_secret)
+
+ // Check if public hunger text exists
+ else
+ // Add hunger text
+ examine_list += span_warning(examine_hunger_public)
+
+/datum/quirk/breathless
+ name = "Breathless"
+ desc = "Whether due to genetic engineering, technology, or bluespace magic, you no longer require air to function. This also means that administering life-saving manuevers such as CPR is now impossible."
+ value = 3
+ medical_record_text = "Patient's biology demonstrates no need for breathing."
+ gain_text = span_notice("You no longer need to breathe.")
+ lose_text = span_notice("You need to breathe again...")
+ processing_quirk = TRUE
+
+/datum/quirk/breathless/add()
+ . = ..()
+ var/mob/living/carbon/human/H = quirk_holder
+ ADD_TRAIT(H,TRAIT_NOBREATH,ROUNDSTART_TRAIT)
+
+/datum/quirk/breathless/remove()
+ . = ..()
+ var/mob/living/carbon/human/H = quirk_holder
+ REMOVE_TRAIT(H,TRAIT_NOBREATH, ROUNDSTART_TRAIT)
+
+/datum/quirk/breathless/on_process()
+ . = ..()
+ var/mob/living/carbon/human/H = quirk_holder
+ H.adjustOxyLoss(-3) /* Bandaid-fix for a defibrillator "bug",
+ Which causes oxy damage to stack for mobs that don't breathe */
diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm
index fa17eafa1ad1..08dfc26a87ff 100644
--- a/modular_splurt/code/datums/traits/negative.dm
+++ b/modular_splurt/code/datums/traits/negative.dm
@@ -80,15 +80,15 @@
value = -1
mob_trait = TRAIT_ILLITERATE
gain_text = span_notice("The knowledge of how to read seems to escape from you.")
- lose_text = "Written words suddenly make sense again."
+ lose_text = span_notice("Written words suddenly make sense again.")
/datum/quirk/flimsy
name = "Flimsy"
desc = "Your body is a little more fragile then most, decreasing total health by 20%."
value = -2
medical_record_text = "Patient has abnormally low capacity for injury."
- gain_text = "You feel like you could break with a single hit."
- lose_text = "You feel more durable."
+ gain_text = span_notice("You feel like you could break with a single hit.")
+ lose_text = span_notice("You feel more durable.")
/datum/quirk/flimsy/add()
quirk_holder.maxHealth *= 0.8
@@ -166,7 +166,7 @@
"Urgh, you should really get some cum...",\
"Some jizz wouldn't be so bad right now!",\
"You're starting to long for some more cum..."
- )
+ )
// Alert user in chat
to_chat(quirk_holder, span_love("[pick(trigger_phrases)]"))
diff --git a/modular_splurt/code/datums/traits/neutral.dm b/modular_splurt/code/datums/traits/neutral.dm
index e7e5a5d8b097..b63ddf51e712 100644
--- a/modular_splurt/code/datums/traits/neutral.dm
+++ b/modular_splurt/code/datums/traits/neutral.dm
@@ -151,12 +151,12 @@
/datum/quirk/undead
name = "Undeath"
- desc = "Your body, be it anomalous, or just outright refusing to die - has indeed become undead. Due to this you may be more susceptible to burn-based weaponry."
+ desc = "Your body, be it anomalous, or just outright refusing to die - has indeed become undead. Due to this you may be hungrier."
value = 0
mob_trait = TRAIT_UNDEAD
processing_quirk = TRUE
// Note: The Undead cannot take advantage of healing viruses and genetic mutations, since they have no DNA.
- var/list/zperks = list(TRAIT_STABLEHEART,TRAIT_EASYDISMEMBER,TRAIT_NOBREATH,TRAIT_VIRUSIMMUNE,TRAIT_RADIMMUNE,TRAIT_FAKEDEATH,TRAIT_NOSOFTCRIT, TRAIT_NOPULSE)
+ var/list/zperks = list(TRAIT_STABLEHEART,TRAIT_EASYDISMEMBER,TRAIT_VIRUSIMMUNE,TRAIT_RADIMMUNE,TRAIT_FAKEDEATH,TRAIT_NOSOFTCRIT, TRAIT_NOPULSE)
/datum/quirk/undead/add()
. = ..()
@@ -445,230 +445,6 @@
var/mob/living/carbon/human/H = quirk_holder
H.adjust_nutrition(-0.09)//increases their nutrition loss rate to encourage them to gain a partner they can essentially leech off of
-/datum/quirk/bloodfledge
- name = "Bloodsucker Fledgling"
- desc = "You are a fledgling belonging to ancient Bloodsucker bloodline. While the blessing has yet to fully convert you, some things have changed. Only blood will sate your hungers, and holy energies will cause your flesh to char. This is NOT an antagonist role!"
- value = 2
- medical_record_text = "Patient exhibits onset symptoms of a sanguine curse."
- mob_trait = TRAIT_BLOODFLEDGE
- gain_text = span_notice("You feel a sanguine thirst.")
- lose_text = span_notice("You feel the sanguine thirst fade away.")
- processing_quirk = FALSE // Handled by crates.dm
-
-/datum/quirk/bloodfledge/add()
- // Define quirk mob
- var/mob/living/carbon/human/quirk_mob = quirk_holder
-
- // Add quirk traits
- ADD_TRAIT(quirk_mob,TRAIT_NO_PROCESS_FOOD,ROUNDSTART_TRAIT)
- ADD_TRAIT(quirk_mob,TRAIT_NOTHIRST,ROUNDSTART_TRAIT)
-
- // Set skin tone, if possible
- if(!quirk_mob.dna.skin_tone_override)
- quirk_mob.skin_tone = "albino"
-
- // Add quirk language
- quirk_mob.grant_language(/datum/language/vampiric, TRUE, TRUE, LANGUAGE_BLOODSUCKER)
-
- // Register examine text
- RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_bloodfledge)
-
-/datum/quirk/bloodfledge/post_add()
- // Define quirk mob
- var/mob/living/carbon/human/quirk_mob = quirk_holder
-
- // Define and grant ability Bite
- var/datum/action/cooldown/bloodfledge/bite/act_bite = new
- act_bite.Grant(quirk_mob)
-
- // Check for synthetic
- // Robotic mobs have technical issues with adjusting damage
- if(quirk_mob.mob_biotypes & MOB_ROBOTIC)
- // Warn user
- to_chat(quirk_mob, span_warning("As a synthetic lifeform, your components are only able to grant limited sanguine abilities! Regeneration and revival are not possible."))
-
- // User is not synthetic
- else
- // Define and grant ability Revive
- var/datum/action/cooldown/bloodfledge/revive/act_revive = new
- act_revive.Grant(quirk_mob)
-
-/datum/quirk/bloodfledge/on_process()
- // Processing is currently only used for coffin healing
- // This is started and stopped by a proc in crates.dm
-
- // Define potential coffin
- var/quirk_coffin = quirk_holder.loc
-
- // Check if the current area is a coffin
- if(istype(quirk_coffin, /obj/structure/closet/crate/coffin))
- // Define quirk mob
- var/mob/living/carbon/human/quirk_mob = quirk_holder
-
- // Quirk mob must be injured
- if(quirk_mob.health >= quirk_mob.maxHealth)
- // Warn user
- to_chat(quirk_mob, span_notice("[quirk_coffin] does nothing more to help you, as your body is fully mended."))
-
- // Stop processing and return
- STOP_PROCESSING(SSquirks, src)
- return
-
- // Nutrition (blood) level must be above STARVING
- if(quirk_mob.nutrition <= NUTRITION_LEVEL_STARVING)
- // Warn user
- to_chat(quirk_mob, span_warning("[quirk_coffin] requires blood to operate, which you are currently lacking. Your connection to the other-world fades once again."))
-
- // Stop processing and return
- STOP_PROCESSING(SSquirks, src)
- return
-
- // Define initial health
- var/health_start = quirk_mob.health
-
- // Heal brute and burn
- // Accounts for robotic limbs
- quirk_mob.heal_overall_damage(2,2)
- // Heal oxygen
- quirk_mob.adjustOxyLoss(-2)
- // Heal clone
- quirk_mob.adjustCloneLoss(-2)
-
- // Check for slime race
- // NOT a slime
- if(!isslimeperson(quirk_mob))
- // Heal toxin
- quirk_mob.adjustToxLoss(-2)
- // IS a slime
- else
- // Grant toxin (heals slimes)
- quirk_mob.adjustToxLoss(2)
-
- // Update health
- quirk_mob.updatehealth()
-
- // Determine healed amount
- var/health_restored = quirk_mob.health - health_start
-
- // Remove nutrition (blood) as compensation for healing
- // Amount is equal to 50% of healing done
- quirk_mob.adjust_nutrition(health_restored*-1)
-
- // User is not in a coffin
- // This should not occur without teleportation
- else
- // Warn user
- to_chat(quirk_holder, span_warning("Your connection to the other-world is broken upon leaving the [quirk_coffin]!"))
-
- // Stop processing
- STOP_PROCESSING(SSquirks, src)
-
-/datum/quirk/bloodfledge/remove()
- // Define quirk mob
- var/mob/living/carbon/human/quirk_mob = quirk_holder
-
- // Remove quirk traits
- REMOVE_TRAIT(quirk_mob, TRAIT_NO_PROCESS_FOOD, ROUNDSTART_TRAIT)
- REMOVE_TRAIT(quirk_mob, TRAIT_NOTHIRST, ROUNDSTART_TRAIT)
-
- // Remove quirk ability action datums
- var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions
- var/datum/action/cooldown/bloodfledge/revive/act_revive = locate() in quirk_mob.actions
- act_bite.Remove(quirk_mob)
- act_revive.Remove(quirk_mob)
-
- // Remove quirk language
- quirk_mob.remove_language(/datum/language/vampiric, TRUE, TRUE, LANGUAGE_BLOODSUCKER)
-
- // Unregister examine text
- UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
-
-/datum/quirk/bloodfledge/on_spawn()
- // Define quirk mob
- var/mob/living/carbon/human/quirk_mob = quirk_holder
-
- // Create vampire ID card
- var/obj/item/card/id/vampire/id_vampire = new /obj/item/card/id/vampire(get_turf(quirk_holder))
-
- // Update card information
- id_vampire.registered_name = quirk_mob.real_name
- id_vampire.update_label(addtext(id_vampire.registered_name, "'s Bloodfledge"))
-
- // Determine banking ID information
- for(var/bank_account in SSeconomy.bank_accounts)
- // Define current iteration's account
- var/datum/bank_account/account = bank_account
-
- // Check for match
- if(account.account_id == quirk_mob.account_id)
- // Add to cards list
- account.bank_cards += src
-
- // Assign account
- id_vampire.registered_account = account
-
- // Stop searching
- break
-
- // Try to add ID to backpack
- var/id_in_bag = quirk_mob.equip_to_slot_if_possible(id_vampire, ITEM_SLOT_BACKPACK) || FALSE
-
- // Text for where the item was sent
- var/id_location = (id_in_bag ? "in your backpack" : "at your feet" )
-
- // Alert user in chat
- // This should not post_add, because the ID is added by on_spawn
- to_chat(quirk_holder, span_boldnotice("There is a bloodfledge's ID card [id_location], linked to your station account. It functions as a spare ID, but lacks job access."))
-
-/datum/quirk/bloodfledge/proc/quirk_examine_bloodfledge(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list)
- SIGNAL_HANDLER
-
- // Check if human examiner exists
- if(!istype(examiner))
- return
-
- // Check if examiner is dumb
- if(HAS_TRAIT(examiner, TRAIT_DUMB))
- // Return with no effects
- return
-
- // Define quirk mob
- var/mob/living/carbon/human/quirk_mob = quirk_holder
-
- // Define hunger texts
- var/examine_hunger_public
- var/examine_hunger_secret
-
- // Check hunger levels
- switch(quirk_mob.nutrition)
- // Hungry
- if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
- examine_hunger_secret = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] blood starved!"
- examine_hunger_public = "[quirk_holder.p_they(TRUE)] seem[quirk_holder.p_s()] on edge from something."
-
- // Starving
- if(0 to NUTRITION_LEVEL_STARVING)
- examine_hunger_secret = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] in dire need of blood!"
- examine_hunger_public = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] radiating an aura of frenzied hunger!"
-
- // Invalid hunger
- else
- // Return with no message
- return
-
- // Check if examiner shares the quirk
- if(isbloodfledge(examiner))
- // Add detection text
- examine_list += span_info("[quirk_holder.p_their(TRUE)] hunger makes it easy to identify [quirk_holder.p_them()] as a fellow Bloodsucker Fledgling!")
-
- // Add hunger text
- examine_list += span_warning(examine_hunger_secret)
-
- // Check if public hunger text exists
- else
- // Add hunger text
- examine_list += span_warning(examine_hunger_public)
-
/datum/quirk/werewolf //adds the werewolf quirk
name = "Werewolf"
desc = "A beastly affliction allows you to shape-shift into a large anthropomorphic canine at will."
diff --git a/modular_splurt/code/datums/traits/trait_actions.dm b/modular_splurt/code/datums/traits/trait_actions.dm
index 173e061655c1..3482711f1f12 100644
--- a/modular_splurt/code/datums/traits/trait_actions.dm
+++ b/modular_splurt/code/datums/traits/trait_actions.dm
@@ -1060,8 +1060,8 @@
var/revive_failed
// Condition: Mob isn't in a closed coffin
- if(!istype(action_owner.loc, /obj/structure/closet/crate/coffin))
- revive_failed += "\n- You need to be in a closed coffin!"
+ // if(!istype(action_owner.loc, /obj/structure/closet/crate/coffin))
+ // revive_failed += "\n- You need to be in a closed coffin!"
// Condition: Insufficient nutrition (blood)
if(action_owner.nutrition <= NUTRITION_LEVEL_STARVING)
diff --git a/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm b/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm
index 033eaf166ae1..4d6fbb8a4cb7 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm
@@ -192,7 +192,7 @@
. = ..()
/datum/mood_event/hypnosis
- description = "You don't feel like you're really in control of your body."
+ description = span_hypnophrase("You don't feel like you're really in control of your body.\n")
/mob/living/carbon/verb/remove_chastity_hypnosis()
set name = "Escape Chastity Hypnosis"
From 04f5c33c9af3b41a6609b899379f1d3bf0a85dd0 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sun, 31 Dec 2023 15:09:28 +0100
Subject: [PATCH 06/20] No fat drawbacks for Incubi/Succubi
---
code/modules/mob/living/carbon/human/species.dm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 0c30c42a6552..6dda2f100779 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1602,6 +1602,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
//
H.update_inv_wear_suit()
else
+ if(HAS_TRAIT(H, TRAIT_INCUBUS || TRAIT_SUCCUBUS))
+ return //SPLURT EDIT: Avoid incubi and succubi don't get fat drawbacks (but can still be seen on examine)
if(H.overeatduration >= 100)
to_chat(H, "You suddenly feel blubbery!")
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
From 236901ca0a37466a9f07dc2653716c5f5bfe84d2 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sun, 31 Dec 2023 15:42:27 +0100
Subject: [PATCH 07/20] Text refactor + more layer shifting
---
.../mood_events/generic_negative_events.dm | 146 +++++++++---------
.../modules/mob/living/living_movement.dm | 14 +-
.../chastity_hypno/chastity_hypnosis.dm | 6 +-
3 files changed, 82 insertions(+), 84 deletions(-)
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index 63412615cc8b..dd6556935248 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -1,90 +1,88 @@
-
-
/datum/mood_event/handcuffed
- description = "I guess my antics have finally caught up with me.\n"
+ description = span_warning("I guess my antics have finally caught up with me.\n")
mood_change = -1
/datum/mood_event/broken_vow //Used for when mimes break their vow of silence
- description = "I have brought shame upon my name, and betrayed my fellow mimes by breaking our sacred vow...\n"
+ description = span_boldwarning("I have brought shame upon my name, and betrayed my fellow mimes by breaking our sacred vow...\n")
mood_change = -8
/datum/mood_event/on_fire
- description = "I'M ON FIRE!!!\n"
+ description = span_boldwarning("I'M ON FIRE!!!\n")
mood_change = -8
/datum/mood_event/suffocation
- description = "CAN'T... BREATHE...\n"
+ description = span_boldwarning("CAN'T... BREATHE...\n")
mood_change = -6
/datum/mood_event/burnt_thumb
- description = "I shouldn't play with lighters...\n"
+ description = span_warning("I shouldn't play with lighters...\n")
mood_change = -1
timeout = 2 MINUTES
/datum/mood_event/cold
- description = "It's way too cold in here.\n"
+ description = span_warning("It's way too cold in here.\n")
mood_change = -2
/datum/mood_event/hot
- description = "It's getting hot in here.\n"
+ description = span_warning("It's getting hot in here.\n")
mood_change = -2
/datum/mood_event/creampie
- description = "I've been creamed. Tastes like pie flavor.\n"
+ description = span_warning("I've been creamed. Tastes like pie flavor.\n")
mood_change = -2
timeout = 3 MINUTES
/datum/mood_event/slipped
- description = "I slipped. I should be more careful next time...\n"
+ description = span_warning("I slipped. I should be more careful next time...\n")
mood_change = -2
timeout = 3 MINUTES
/datum/mood_event/eye_stab
- description = "I used to be an adventurer like you, until I took a screwdriver to the eye.\n"
+ description = span_boldwarning("I used to be an adventurer like you, until I took a screwdriver to the eye.\n")
mood_change = -4
timeout = 3 MINUTES
/datum/mood_event/delam //SM delamination
- description = "Those God damn engineers can't do anything right...\n"
+ description = span_boldwarning("Those God damn engineers can't do anything right...\n")
mood_change = -2
timeout = 4 MINUTES
/datum/mood_event/depression
- description = "I feel sad for no particular reason.\n"
+ description = span_warning("I feel sad for no particular reason.\n")
mood_change = -9
timeout = 2 MINUTES
/datum/mood_event/shameful_suicide //suicide_acts that return SHAME, like sord
- description = "I can't even end it all!\n"
+ description = span_boldwarning("I can't even end it all!\n")
mood_change = -10
timeout = 1 MINUTES
/datum/mood_event/dismembered
- description = "AHH! I WAS USING THAT LIMB!\n"
+ description = span_boldwarning("AHH! I WAS USING THAT LIMB!\n")
mood_change = -8
timeout = 4 MINUTES
/datum/mood_event/noshoes
- description = "I am a disgrace to comedy everywhere!\n"
+ description = span_warning("I am a disgrace to comedy everywhere!\n")
mood_change = -5
/datum/mood_event/tased
- description = "There's no \"z\" in \"taser\". It's in the zap.\n"
+ description = span_warning("There's no \"z\" in \"taser\". It's in the zap.\n")
mood_change = -3
timeout = 2 MINUTES
/datum/mood_event/embedded
- description = "Pull it out!\n"
+ description = span_boldwarning("Pull it out!\n")
mood_change = -7
/datum/mood_event/table_limbsmash
- description = "That fucking table, man that hurts...\n"
+ description = span_warning("That fucking table, man that hurts...\n")
mood_change = -3
timeout = 3 MINUTES
/datum/mood_event/table_limbsmash/add_effects(obj/item/bodypart/banged_limb)
if(banged_limb)
- description = "My fucking [banged_limb.name], man that hurts...\n"
+ description = span_warning("My fucking [banged_limb.name], man that hurts...\n")
/datum/mood_event/table/add_effects()
if(ishuman(owner))
@@ -92,7 +90,7 @@
if(iscatperson(H))
H.dna.species.start_wagging_tail(H)
addtimer(CALLBACK(H.dna.species, /datum/species.proc/stop_wagging_tail, H), 30)
- description = "They want to play on the table!\n"
+ description = span_nicegreen("They want to play on the table!\n")
mood_change = 2
/datum/mood_event/brain_damage
@@ -100,223 +98,223 @@
/datum/mood_event/brain_damage/add_effects()
var/damage_message = pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")
- description = "Hurr durr... [damage_message]\n"
+ description = span_warning("Hurr durr... [damage_message]\n")
/datum/mood_event/hulk //Entire duration of having the hulk mutation
- description = "HULK SMASH!\n"
+ description = span_warning("HULK SMASH!\n")
mood_change = -4
/datum/mood_event/epilepsy //Only when the mutation causes a seizure
- description = "I should have paid attention to the epilepsy warning.\n"
+ description = span_warning("I should have paid attention to the epilepsy warning.\n")
mood_change = -3
timeout = 5 MINUTES
/datum/mood_event/nyctophobia
- description = "It sure is dark around here...\n"
+ description = span_warning("It sure is dark around here...\n")
mood_change = -3
/datum/mood_event/brightlight
- description = "The light feels unbearable...\n"
+ description = span_warning("The light feels unbearable...\n")
mood_change = -3
/datum/mood_event/family_heirloom_missing
- description = "I'm missing my family heirloom...\n"
+ description = span_warning("I'm missing my family heirloom...\n")
mood_change = -4
/datum/mood_event/healsbadman
- description = "I feel a lot better, but wow that was disgusting.\n"
+ description = span_warning("I feel a lot better, but wow that was disgusting.\n")
mood_change = -4
timeout = 2 MINUTES
/datum/mood_event/jittery
- description = "I'm nervous and on edge and I can't stand still!!\n"
+ description = span_warning("I'm nervous and on edge and I can't stand still!!\n")
mood_change = -2
/datum/mood_event/vomit
- description = "I just threw up. Gross.\n"
+ description = span_warning("I just threw up. Gross.\n")
mood_change = -2
timeout = 2 MINUTES
/datum/mood_event/vomitself
- description = "I just threw up all over myself. This is disgusting.\n"
+ description = span_warning("I just threw up all over myself. This is disgusting.\n")
mood_change = -4
timeout = 3 MINUTES
/datum/mood_event/painful_medicine
- description = "Medicine may be good for me but right now it stings like hell.\n"
+ description = span_warning("Medicine may be good for me but right now it stings like hell.\n")
mood_change = -5
timeout = 1 MINUTES
/datum/mood_event/painful_limb_regrowth
- description = "It's great to have all my limbs back but that was absolutely painful.\n"
+ description = span_warning("It's great to have all my limbs back but that was absolutely painful.\n")
mood_change = -5
timeout = 1 MINUTES
/datum/mood_event/loud_gong
- description = "That loud gong noise really hurt my ears!\n"
+ description = span_warning("That loud gong noise really hurt my ears!\n")
mood_change = -3
timeout = 2 MINUTES
/datum/mood_event/spooked
- description = "The rattling of those bones...It still haunts me.\n"
+ description = span_warning("The rattling of those bones...It still haunts me.\n")
mood_change = -4
timeout = 4 MINUTES
/datum/mood_event/graverobbing
- description ="I just desecrated someone's grave... I can't believe I did that...\n"
+ description = span_boldwarning("I just desecrated someone's grave... I can't believe I did that...\n")
mood_change = -8
timeout = 3 MINUTES
/datum/mood_event/gates_of_mansus
- description = "I HAD A GLIMPSE OF THE HORROR BEYOND THIS WORLD. REALITY UNCOILED BEFORE MY EYES!\n"
+ description = span_boldwarning("I HAD A GLIMPSE OF THE HORROR BEYOND THIS WORLD. REALITY UNCOILED BEFORE MY EYES!\n")
mood_change = -25
timeout = 4 MINUTES
-//These are unused so far but I want to remember them to use them later
+// These are unused so far but I want to remember them to use them later
/datum/mood_event/cloned_corpse
- description = "I recently saw my own corpse...\n"
+ description = span_boldwarning("I recently saw my own corpse...\n")
mood_change = -6
/datum/mood_event/surgery
- description = "HE'S CUTTING ME OPEN!!\n"
+ description = span_boldwarning("HE'S CUTTING ME OPEN!!\n")
mood_change = -8
-//End unused
+// End unused
/datum/mood_event/sad_empath
- description = "Someone seems upset...\n"
+ description = span_warning("Someone seems upset...\n")
mood_change = -2
timeout = 1 MINUTES
/datum/mood_event/sad_empath/add_effects(mob/sadtarget)
- description = "[sadtarget.name] seems upset...\n"
+ description = span_warning("[sadtarget.name] seems upset...\n")
/datum/mood_event/revenant_blight
- description = "Just give up, honk...\n"
+ description = span_umbra("Just give up, honk...\n")
mood_change = -5
/datum/mood_event/revenant_blight/add_effects()
- description = "Just give up, [pick("no one will miss you", "there is nothing you can do to help", "even a clown would be more useful than you", "does it even matter in the end?")]...\n"
+ description = span_umbra("Just give up, [pick("no one will miss you", "there is nothing you can do to help", "even a clown would be more useful than you", "does it even matter in the end?")]...\n")
/datum/mood_event/plushjack
- description = "I have butchered a plush recently.\n"
+ description = span_warning("I have butchered a plush recently.\n")
mood_change = -1
timeout = 2 MINUTES
/datum/mood_event/plush_nostuffing
- description = "A plush I tried to pet had no stuffing...\n"
+ description = span_warning("A plush I tried to pet had no stuffing...\n")
mood_change = -1
timeout = 2 MINUTES
/datum/mood_event/plush_bite
- description = "IT BIT ME!! OW!\n"
+ description = span_warning("IT BIT ME!! OW!\n")
mood_change = -3
timeout = 2 MINUTES
-//Cursed stuff below
+// Cursed stuff below
/datum/mood_event/emptypred
- description = "I had to let someone out.\n"
+ description = span_nicegreen("I had to let someone out.\n")
mood_change = -2
timeout = 1 MINUTES
/datum/mood_event/emptyprey
- description = "It feels quite cold out here.\n"
+ description = span_nicegreen("It feels quite cold out here.\n")
mood_change = -2
timeout = 1 MINUTES
-//Cursed stuff end.
+// Cursed stuff end.
/datum/mood_event/vampcandle
- description = "Something is making your mind feel... loose...\n"
+ description = span_umbra("Something is making your mind feel... loose...\n")
mood_change = -15
timeout = 1 MINUTES
/datum/mood_event/drankblood_bad
- description = "I drank the blood of a lesser creature. Disgusting.\n"
+ description = span_boldwarning("I drank the blood of a lesser creature. Disgusting.\n")
mood_change = -4
timeout = 8 MINUTES
/datum/mood_event/drankblood_dead
- description = "I drank dead blood. I am better than this.\n"
+ description = span_boldwarning("I drank dead blood. I am better than this.\n")
mood_change = -7
timeout = 10 MINUTES
/datum/mood_event/drankblood_synth
- description = "I drank synthetic blood. What is wrong with me?\n"
+ description = span_boldwarning("I drank synthetic blood. What is wrong with me?\n")
mood_change = -7
timeout = 15 MINUTES
/datum/mood_event/drankkilled
- description = "I drank from my victim until they died. I feel...less human.\n"
+ description = span_boldwarning("I drank from my victim until they died. I feel...less human.\n")
mood_change = -12
timeout = 25 MINUTES
/datum/mood_event/madevamp
- description = "A soul has been cursed to undeath by my own hand.\n"
+ description = span_boldwarning("A soul has been cursed to undeath by my own hand.\n")
mood_change = -10
timeout = 30 MINUTES
/datum/mood_event/vampatefood
- description = "Mortal nourishment no longer sustains me. I feel unwell.\n"
+ description = span_boldwarning("Mortal nourishment no longer sustains me. I feel unwell.\n")
mood_change = -6
timeout = 10 MINUTES
/datum/mood_event/daylight_1
- description = "I slept poorly in a makeshift coffin during the day.\n"
+ description = span_boldwarning("I slept poorly in a makeshift coffin during the day.\n")
mood_change = -3
timeout = 10 MINUTES
/datum/mood_event/daylight_2
- description = "I have been scorched by the unforgiving rays of the sun.\n"
+ description = span_boldwarning("I have been scorched by the unforgiving rays of the sun.\n")
mood_change = -6
timeout = 15 MINUTES
/datum/mood_event/bloodsucker_disgust
- description = "Something I recently ate was horrifyingly disgusting.\n"
+ description = span_boldwarning("Something I recently ate was horrifyingly disgusting.\n")
mood_change = -5
timeout = 5 MINUTES
/datum/mood_event/nanite_sadness
- description = "+++++++HAPPINESS SUPPRESSION+++++++\n"
+ description = span_warning("+++++++HAPPINESS SUPPRESSION+++++++\n")
mood_change = -7
/datum/mood_event/nanite_sadness/add_effects(message)
- description = "+++++++[message]+++++++\n"
+ description = span_warning("+++++++[message]+++++++\n")
/datum/mood_event/artbad
- description = "I've produced better art than that from my ass.\n"
+ description = span_warning("I've produced better art than that from my ass.\n")
mood_change = -2
timeout = 2 MINUTES
/datum/mood_event/tripped
- description = "I can't believe I fell for the oldest trick in the book!\n"
+ description = span_boldwarning("I can't believe I fell for the oldest trick in the book!\n")
mood_change = -6
timeout = 2 MINUTES
/datum/mood_event/untied
- description = "I hate when my shoes come untied!\n"
+ description = span_boldwarning("I hate when my shoes come untied!\n")
mood_change = -3
timeout = 1 MINUTES
/datum/mood_event/high_five_alone
- description = "I tried getting a high-five with no one around, how embarassing!\n"
+ description = span_boldwarning("I tried getting a high-five with no one around, how embarrassing!\n")
mood_change = -2
timeout = 1 MINUTES
/datum/mood_event/high_five_full_hand
- description = "Oh God, I don't even know how to high-five correctly...\n"
+ description = span_boldwarning("Oh God, I don't even know how to high-five correctly...\n")
mood_change = -1
timeout = 45 SECONDS
/datum/mood_event/left_hanging
- description = "But everyone loves high fives! Maybe people just... hate me?\n"
+ description = span_boldwarning("But everyone loves high fives! Maybe people just... hate me?\n")
mood_change = -2
timeout = 1.5 MINUTES
/datum/mood_event/too_slow
- description = "NO! HOW COULD I BE.... TOO SLOW???\n"
+ description = span_boldwarning("NO! HOW COULD I BE.... TOO SLOW???\n")
mood_change = -2 // multiplied by how many people saw it happen, up to 8, so potentially massive. the ULTIMATE prank carries a lot of weight
timeout = 2 MINUTES
@@ -332,6 +330,6 @@
return ..()
/datum/mood_event/sacrifice_bad
- description = "Those darn savages!\n"
+ description = span_warning("Those darn savages!\n")
mood_change = -5
- timeout = 2 MINUTES
+ timeout = 2 MINUTES
\ No newline at end of file
diff --git a/modular_sand/code/modules/mob/living/living_movement.dm b/modular_sand/code/modules/mob/living/living_movement.dm
index 0f290dbe04b1..cbafddb47eda 100644
--- a/modular_sand/code/modules/mob/living/living_movement.dm
+++ b/modular_sand/code/modules/mob/living/living_movement.dm
@@ -1,7 +1,7 @@
#define MOB_LAYER_SHIFT_INCREMENT 0.01
-#define MOB_LAYER_SHIFT_MIN 3.95
+#define MOB_LAYER_SHIFT_MIN 3.84 // Adjusted for -16
//#define MOB_LAYER 4 // This is a byond standard define
-#define MOB_LAYER_SHIFT_MAX 4.05
+#define MOB_LAYER_SHIFT_MAX 4.16 // Adjusted for +16
/mob/living/verb/layershift_up()
set name = "Shift Layer Upwards"
@@ -17,7 +17,7 @@
layer = clamp(layer, MOB_LAYER_SHIFT_MIN, MOB_LAYER_SHIFT_MAX)
layer += MOB_LAYER_SHIFT_INCREMENT
- var/layer_priority = (layer - MOB_LAYER) * 100 // Just for text feedback | SPLURT EDIT: Removed FLOOR calculation
+ var/layer_priority = FLOOR((layer - MOB_LAYER) * 100, 1) // Just for text feedback
to_chat(src, span_notice("Your layer priority is now [layer_priority]."))
/mob/living/verb/layershift_down()
@@ -34,11 +34,11 @@
layer = clamp(layer, MOB_LAYER_SHIFT_MIN, MOB_LAYER_SHIFT_MAX)
layer -= MOB_LAYER_SHIFT_INCREMENT
- var/layer_priority = (layer - MOB_LAYER) * 100 // Just for text feedback | SPLURT EDIT: Removed FLOOR calculation
+ var/layer_priority = FLOOR((layer - MOB_LAYER) * 100, 1)// Just for text feedback
to_chat(src, span_notice("Your layer priority is now [layer_priority]."))
/mob/living/verb/layershift_reset() //SPLURT ADDITION
- set name = "Reset Layer"
+ set name = "Reset Layer Priority"
set category = "IC"
if(incapacitated())
@@ -46,8 +46,8 @@
return
if(lying)
- layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs
+ layer = LYING_MOB_LAYER //so mob lying always appears behind standing mobs
else
layer = initial(layer)
- var/layer_priority = (layer - MOB_LAYER) * 100 // Just for text feedback
+ var/layer_priority = FLOOR((layer - MOB_LAYER) * 100, 1) // Just for text feedback
to_chat(src, span_notice("Your layer priority is now [layer_priority]."))
diff --git a/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm b/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm
index 4d6fbb8a4cb7..882838951a67 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/chastity_hypno/chastity_hypnosis.dm
@@ -46,7 +46,7 @@
trait_flag = TRAIT_HYPERSENS_ANUS
ADD_TRAIT(C, trait_flag, ORGAN_TRAIT)
- to_chat(C, "Your anus is now [lowertext(choices[G])]")
+ to_chat(C, span_hypnophrase("Your anus is now [lowertext(choices[G])]."))
continue
var/obj/item/organ/genital/genital = C.getorganslot(lowertext(G))
@@ -88,7 +88,7 @@
if(!hypno_flag)
continue
- to_chat(C, "Your [lowertext(G)] is now [lowertext(choices[G])]")
+ to_chat(C, span_hypnophrase("Your [lowertext(G)] is now [lowertext(choices[G])]."))
var/obj/item/organ/genital/genital_organ = genital
ENABLE_BITFIELD(genital_organ.genital_flags, hypno_flag)
@@ -188,7 +188,7 @@
if(!("hypno" in mood_comp.mood_events))
return ..()
C.remove_chastity_hypno_effects()
- to_chat(C, "You manage to gain control over your genitals again.")
+ to_chat(C, span_warning("You manage to gain control over your genitals again."))
. = ..()
/datum/mood_event/hypnosis
From 7d8180e48b290ba1530ca9879a66e37180de81bc Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sun, 31 Dec 2023 16:10:23 +0100
Subject: [PATCH 08/20] Rebalance + texts
---
code/datums/components/mood.dm | 4 +++-
code/datums/traits/good.dm | 2 +-
code/modules/mob/living/carbon/human/species.dm | 6 +++---
modular_sand/code/modules/mob/living/living_movement.dm | 4 ++--
4 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index c563a7e32b10..dcb6837c3dd4 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -329,7 +329,9 @@
return FALSE //no mood events for nutrition
switch(L.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
- add_event(null, "nutrition", /datum/mood_event/fat)
+ if(!(HAS_TRAIT(L, TRAIT_INCUBUS) || HAS_TRAIT(L, TRAIT_SUCCUBUS)))
+ //No bad fat mood for incubi/succubi, voracious gets a positive mood in needs_events.dm
+ add_event(null, "nutrition", /datum/mood_event/fat)
if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
add_event(null, "nutrition", /datum/mood_event/wellfed)
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm
index 61233bb1dbe7..404bfd95a101 100644
--- a/code/datums/traits/good.dm
+++ b/code/datums/traits/good.dm
@@ -156,7 +156,7 @@
/datum/quirk/voracious
name = "Voracious"
- desc = "Nothing gets between you and your food. You eat twice as fast as everyone else!"
+ desc = "Nothing gets between you and your food. You eat twice as fast as everyone else, and won't get sad by being fat!"
value = 1
mob_trait = TRAIT_VORACIOUS
gain_text = "You feel HONGRY."
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 6dda2f100779..bf646ae404ba 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1591,7 +1591,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
//The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
if(HAS_TRAIT(H, TRAIT_FAT))//I share your pain, past coder.
if(H.overeatduration < 100)
- to_chat(H, "You feel fit again!")
+ to_chat(H, span_notice("You feel fit again!"))
REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
H.remove_movespeed_modifier(/datum/movespeed_modifier/obesity)
H.update_inv_w_uniform()
@@ -1603,9 +1603,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
H.update_inv_wear_suit()
else
if(HAS_TRAIT(H, TRAIT_INCUBUS || TRAIT_SUCCUBUS))
- return //SPLURT EDIT: Avoid incubi and succubi don't get fat drawbacks (but can still be seen on examine)
+ return //SPLURT EDIT: Incubi and succubi don't get fat drawbacks (but can still be seen on examine)
if(H.overeatduration >= 100)
- to_chat(H, "You suddenly feel blubbery!")
+ to_chat(H, span_danger("You suddenly feel blubbery!"))
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
H.add_movespeed_modifier(/datum/movespeed_modifier/obesity)
H.update_inv_w_uniform()
diff --git a/modular_sand/code/modules/mob/living/living_movement.dm b/modular_sand/code/modules/mob/living/living_movement.dm
index cbafddb47eda..2879a68be175 100644
--- a/modular_sand/code/modules/mob/living/living_movement.dm
+++ b/modular_sand/code/modules/mob/living/living_movement.dm
@@ -1,7 +1,7 @@
#define MOB_LAYER_SHIFT_INCREMENT 0.01
-#define MOB_LAYER_SHIFT_MIN 3.84 // Adjusted for -16
+#define MOB_LAYER_SHIFT_MIN 3.74 // SPLURT Adjusted for -26 (from 3.95)
//#define MOB_LAYER 4 // This is a byond standard define
-#define MOB_LAYER_SHIFT_MAX 4.16 // Adjusted for +16
+#define MOB_LAYER_SHIFT_MAX 4.26 // SPLURT Adjusted for +26 (from 4.05)
/mob/living/verb/layershift_up()
set name = "Shift Layer Upwards"
From 9800cf26404fa86c48c6997fd35fff04fa40e592 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sun, 31 Dec 2023 16:20:00 +0100
Subject: [PATCH 09/20] New line RAHH!
---
code/datums/mood_events/generic_negative_events.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index dd6556935248..d22bae92215d 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -332,4 +332,4 @@
/datum/mood_event/sacrifice_bad
description = span_warning("Those darn savages!\n")
mood_change = -5
- timeout = 2 MINUTES
\ No newline at end of file
+ timeout = 2 MINUTES
From a5354235fa0e574d603099c631df4002b571a6c6 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Mon, 1 Jan 2024 18:06:37 +0100
Subject: [PATCH 10/20] Jiggly butt quirk + refactor of some quirks
---
code/__SPLURTCODE/DEFINES/traits.dm | 1 +
code/datums/traits/neutral.dm | 20 ++++++++++++
.../mob/living/carbon/human/species.dm | 31 ++++++++++++++++++-
.../mood_events/generic_positive_events.dm | 25 +++++++++++----
modular_splurt/code/datums/traits/good.dm | 4 +--
modular_splurt/code/datums/traits/neutral.dm | 4 +--
6 files changed, 74 insertions(+), 11 deletions(-)
diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm
index 5b76785b0087..de94a82eaec0 100644
--- a/code/__SPLURTCODE/DEFINES/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/traits.dm
@@ -34,6 +34,7 @@
#define TRAIT_WEREWOLF "werewolf"
#define TRAIT_PRIMITIVE "primitive"
#define TRAIT_STEEL_ASS "steel_ass"
+#define TRAIT_JIGGLY_ASS "jiggly_ass"
#define TRAIT_CURSED_BLOOD "cursed_blood"
#define TRAIT_HEADPAT_SLUT "headpat_slut"
#define TRAIT_DISTANT "headpat_hater"
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index b62e55778afa..bdd15b863f23 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -204,3 +204,23 @@
H.put_in_hands(camera)
H.equip_to_slot(camera, ITEM_SLOT_BACKPACK) //SPLURT Edit
H.regenerate_icons()
+
+/datum/quirk/jiggly_ass
+ name = "Buns of Thunder"
+ desc = "That pants-stretching, seat-creaking, undie-devouring butt of yours is as satisfying as it is difficult to keep balanced when smacked!"
+ value = 0
+ mob_trait = TRAIT_JIGGLY_ASS
+ gain_text = span_notice("Your butt feels extremely smackable.")
+ lose_text = span_notice("Your butt feels normally smackable again.")
+
+/datum/quirk/jiggly_ass/add()
+ // Add examine text
+ RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
+
+/datum/quirk/jiggly_ass/remove()
+ // Remove examine text
+ UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
+
+// Quirk examine text
+/datum/quirk/jiggly_ass/proc/on_examine_holder(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list)
+ examine_list += span_lewd("[quirk_holder.p_their(TRUE)] butt could use a firm smack.")
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index bf646ae404ba..c9996d96d35c 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -240,6 +240,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
/// List of family heirlooms this species can get with the family heirloom quirk. List of types.
var/list/family_heirlooms
+ COOLDOWN_DECLARE(ass) // SPLURT ADDITION: ASS-SMACK COOLDOWN
+
///////////
// PROCS //
///////////
@@ -1935,7 +1937,34 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
playsound(target.loc, pick(ouchies), 50, 1, -1)
user.emote("scream")
return FALSE
-
+ //SPLURT ADDITION START
+ if(HAS_TRAIT(target, TRAIT_JIGGLY_ASS))
+ if(!COOLDOWN_FINISHED(src, ass))
+ if(user == target)
+ to_chat(user, span_alert("Your butt is still [pick("rippling","jiggling","sloshing","clapping","wobbling")] about way too much to get a good smack!"))
+ else
+ to_chat(user, span_alert("[target]'s big [pick("rippling","jiggling","sloshing","clapping","wobbling")] butt is still [pick("rippling","jiggling","sloshing","clapping","wobbling")] about way too much to get a good smack!"))
+ else
+ COOLDOWN_START(src, ass, 5 SECONDS)
+ if(user == target)
+ playsound(target.loc, 'sound/weapons/slap.ogg', 50, FALSE, -1) // deep bassy butt
+ user.adjustStaminaLoss(25)
+ user.visible_message(
+ span_notice("[user] gives [user.p_their()] butt a smack!"),
+ span_lewd("You give your big fat butt a smack! It [pick("ripples","jiggles","sloshes","claps","wobbles")] about and throws you off balance!"),
+ )
+ return
+ else
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "ass", /datum/mood_event/butt_slap)
+ SEND_SIGNAL(target, COMSIG_ADD_MOOD_EVENT, "ass", /datum/mood_event/butt_slapped)
+ playsound(target.loc, 'sound/weapons/slap.ogg', 50, FALSE, -1) // deep bassy butt
+ target.adjustStaminaLoss(25)
+ user.visible_message(
+ span_notice("\The [user] slaps [target]'s butt!"),
+ target = target,
+ target_message = span_lewd("[user] smacks your big fat butt and sends it [pick("rippling","jiggling","sloshing","clapping","wobbling")]! It [pick("ripples","jiggles","sloshes","claps","wobbles")] about and throws you off balance!"))
+ return FALSE
+ //SPLURT ADDITION END
target.adjust_arousal(20,"masochism", maso = TRUE)
if (ishuman(target) && HAS_TRAIT(target, TRAIT_MASO) && target.has_dna() && prob(10))
target.mob_climax(forced_climax=TRUE, cause = "masochism")
diff --git a/modular_splurt/code/datums/mood_events/generic_positive_events.dm b/modular_splurt/code/datums/mood_events/generic_positive_events.dm
index ecab088eac05..7dd3146c510f 100644
--- a/modular_splurt/code/datums/mood_events/generic_positive_events.dm
+++ b/modular_splurt/code/datums/mood_events/generic_positive_events.dm
@@ -2,6 +2,7 @@
description = span_nicegreen("I love headpats so much!\n")
mood_change = 3
timeout = 2 MINUTES
+
/datum/mood_event/qareen_bliss
description = span_umbra("So.. horny...\n")
mood_change = 5
@@ -10,16 +11,16 @@
description = span_umbra("Must.. breed. , [pick("Nngggghh", "Can't.. think.", "It feels so good.", "Need.. fuck.")]...\n")
/datum/mood_event/masked_mook
- description = span_nicegreen("I feel more complete with gas mask on.\n")
+ description = span_nicegreen("I feel more complete with a gas mask on.\n")
mood_change = 1
/datum/mood_event/cloth_eaten
- description = " That sure was a tasty outfit!\n"
+ description = span_nicegreen("That sure was a tasty outfit!\n")
mood_change = 3
- timeout = 2400
+ timeout = 4 MINUTES
/datum/mood_event/cloth_eaten/add_effects(obj/item/clothing/eaten)
- description = "That sure was a [pick("tasty","good","linty","amazing")] [eaten.name]!\n"
+ description = span_nicegreen("That sure was a [pick("tasty","good","linty","amazing")] [eaten.name]!\n")
/datum/mood_event/nudist_positive
description = span_nicegreen("I'm delighted to not be constricted by clothing.\n")
@@ -30,7 +31,7 @@
mood_change = 1
/datum/mood_event/drank_cursed_good
- description = span_nicegreen("I\'ve tasted sympathy from a fellow curse bearer.\n")
+ description = span_nicegreen("I've tasted sympathy from a fellow curse bearer.\n")
mood_change = 1
timeout = 2 MINUTES
@@ -40,6 +41,18 @@
timeout = 2 MINUTES
/datum/mood_event/brainwashed
- description = span_mind_control("I\'ve been shown the path, and I must follow it!\n")
+ description = span_mind_control("I've been shown the path, and I must follow it!\n")
mood_change = 1
hidden = TRUE
+
+//BUTT SLAP - TRAIT_JIGGLY_ASS
+
+/datum/mood_event/butt_slap
+ description = span_love("Smacking that butt felt extremely satisfying!\n")
+ mood_change = 3
+ timeout = 2 MINUTES
+
+/datum/mood_event/butt_slapped
+ description = span_love("My jiggly butt was finally smacked, so satisfying!\n")
+ mood_change = 3
+ timeout = 2 MINUTES
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index 1a1901ff2d81..82b83e484cb9 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -219,7 +219,7 @@
quirk_mob.mind.isholy = TRUE
// Add examine text.
- RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_Hallowed)
+ RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
/datum/quirk/hallowed/remove()
// Define quirk mob.
@@ -238,7 +238,7 @@
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)
+/datum/quirk/hallowed/proc/on_examine_holder(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
diff --git a/modular_splurt/code/datums/traits/neutral.dm b/modular_splurt/code/datums/traits/neutral.dm
index b63ddf51e712..71ce89550f01 100644
--- a/modular_splurt/code/datums/traits/neutral.dm
+++ b/modular_splurt/code/datums/traits/neutral.dm
@@ -94,7 +94,7 @@
act_hypno.Grant(quirk_mob)
// Add examine text
- RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_Hypnotic_gaze)
+ RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
/datum/quirk/Hypnotic_gaze/remove()
// Define quirk mob
@@ -108,7 +108,7 @@
UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
// Quirk examine text
-/datum/quirk/Hypnotic_gaze/proc/quirk_examine_Hypnotic_gaze(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list)
+/datum/quirk/Hypnotic_gaze/proc/on_examine_holder(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list)
examine_list += "[quirk_holder.p_their(TRUE)] eyes glimmer with an entrancing power..."
/datum/quirk/overweight
From 3036003e63f72205cad4cac08abbd99e470b396e Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Mon, 1 Jan 2024 18:23:11 +0100
Subject: [PATCH 11/20] Blacklist buns of steel + thunder
---
.../code/controllers/subsystem/processing/quirks.dm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/modular_splurt/code/controllers/subsystem/processing/quirks.dm b/modular_splurt/code/controllers/subsystem/processing/quirks.dm
index 2de7d7ff756b..ffa0cd4df4fc 100644
--- a/modular_splurt/code/controllers/subsystem/processing/quirks.dm
+++ b/modular_splurt/code/controllers/subsystem/processing/quirks.dm
@@ -13,4 +13,8 @@
// BLOCKED: Thematic, mechanic, game lore.
// Bloodsuckers cannot interact with Hallowed users.
list("Hallowed","Bloodsucker Fledgling"),
+
+ // BLOCKED: Thematic, mechanic.
+ // Explains itself∼!
+ list("Buns of Steel","Buns of Thunder"),
))
From 50efed9f71385d3c710206efeadd7da4bddbc137 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Wed, 24 Jan 2024 11:01:11 +0100
Subject: [PATCH 12/20] Increase healing factor cost!
---
modular_splurt/code/datums/traits/good.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index 82b83e484cb9..cfb224729cc1 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -264,7 +264,7 @@
/datum/quirk/healing_factor
name = "Healing Factor"
desc = "Your body possesses a differentiated reconstutitive ability, allowing you to slowly heal from injuries. Note, however, that critical injuries, wounds or genetic damage will still require medical attention."
- value = 2
+ value = 3
mob_trait = TRAIT_HEALING_FACTOR
gain_text = span_notice("You feel a surge of reconstutitive vitality coursing through your body.")
lose_text = span_notice("You sense your enhanced reconstutitive ability fading away...")
From 85ebb8cfdd9f3d33392f016de3828aad0ad605d8 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Wed, 24 Jan 2024 23:33:53 +0100
Subject: [PATCH 13/20] Tweak healing factor
---
modular_splurt/code/datums/traits/good.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index cfb224729cc1..3d9472f53773 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -275,11 +275,11 @@
var/mob/living/carbon/human/H = quirk_holder
// The only_organic flag allows robotic biotypes to not be excluded.
- H.adjustBruteLoss(-0.35, only_organic = FALSE) //The healing factor will only regenerate fully if not burnt beyond a specific threshold.
+ H.adjustBruteLoss(-0.5, only_organic = FALSE) //The healing factor will only regenerate fully if not burnt beyond a specific threshold.
H.adjustFireLoss(-0.25, only_organic = FALSE)
if(H.getBruteLoss() > 0 && H.getFireLoss() <= 50 || H.getFireLoss() > 0 && H.getFireLoss() <= 50)
- H.adjustBruteLoss(-0.15, forced = TRUE, only_organic = FALSE)
- H.adjustFireLoss(-0.10, forced = TRUE, only_organic = FALSE)
+ H.adjustBruteLoss(-0.5, forced = TRUE, only_organic = FALSE)
+ H.adjustFireLoss(-0.25, forced = TRUE, only_organic = FALSE)
/* Doesn't heal robotic toxin damage (only_organic = FALSE not needed for tox),
another adjustToxLoss check with toxins_type = TOX_SYSCORRUPT,
(or just adding TOX_OMNI to the already existing one) could be added to heal robotic corruption,
From 000be77388dcd894c2e6154265fa298f2424c3c0 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Thu, 25 Jan 2024 00:59:39 +0100
Subject: [PATCH 14/20] Fix: Name of Material Floor Tile
---
code/controllers/subsystem/materials.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm
index d8362ea0d15c..f396f187c6b6 100644
--- a/code/controllers/subsystem/materials.dm
+++ b/code/controllers/subsystem/materials.dm
@@ -21,7 +21,7 @@ SUBSYSTEM_DEF(materials)
new /datum/stack_recipe("Chair", /obj/structure/chair/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE),
new /datum/stack_recipe("Toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE),
new /datum/stack_recipe("Sink Frame", /obj/structure/sink/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE),
- new /datum/stack_recipe("Floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE),
+ new /datum/stack_recipe("Material Floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE),
)
///List of stackcrafting recipes for materials using rigid recipes
var/list/rigid_stack_recipes = list(
From 88328acd56fa7131c1d8d244c14eaf27d891fc51 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Fri, 26 Jan 2024 22:16:57 +0100
Subject: [PATCH 15/20] Balance time!
---
code/__SPLURTCODE/DEFINES/traits.dm | 2 +-
code/modules/client/preferences.dm | 4 +---
modular_splurt/code/datums/traits/good.dm | 12 ++++++------
3 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm
index de94a82eaec0..24d4aa2bc2eb 100644
--- a/code/__SPLURTCODE/DEFINES/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/traits.dm
@@ -48,4 +48,4 @@
#define TRAIT_BODY_MORPHER "body_morpher"
#define TRAIT_HALLOWED "hallowed"
#define TRAIT_MESSY "messy"
-#define TRAIT_HEALING_FACTOR "healing_factor"
+#define TRAIT_RESTORATIVE_METABOLISM "restorative_metabolism"
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index e93e8bbbc194..cdb9bf411ea4 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1,7 +1,6 @@
#define DEFAULT_SLOT_AMT 2
#define HANDS_SLOT_AMT 2
#define BACKPACK_SLOT_AMT 4
-#define DEFAULT_QUIRK_BALANCE 2 // SPLURT EDIT: Starting quirk points balance.
GLOBAL_LIST_EMPTY(preferences_datums)
@@ -2008,7 +2007,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
popup.open(FALSE)
/datum/preferences/proc/GetQuirkBalance()
- var/bal = DEFAULT_QUIRK_BALANCE
+ var/bal = 0
for(var/V in all_quirks)
var/datum/quirk/T = SSquirks.quirks[V]
bal -= initial(T.value)
@@ -4429,4 +4428,3 @@ GLOBAL_LIST_EMPTY(preferences_datums)
#undef DEFAULT_SLOT_AMT
#undef HANDS_SLOT_AMT
#undef BACKPACK_SLOT_AMT
-#undef DEFAULT_QUIRK_BALANCE
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index 3d9472f53773..fdc48649a664 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -261,16 +261,16 @@
for(var/perk in perks)
REMOVE_TRAIT(H, perk, ROUNDSTART_TRAIT)
-/datum/quirk/healing_factor
- name = "Healing Factor"
- desc = "Your body possesses a differentiated reconstutitive ability, allowing you to slowly heal from injuries. Note, however, that critical injuries, wounds or genetic damage will still require medical attention."
+/datum/quirk/restorative_metabolism
+ name = "Restorative Metabolism"
+ desc = "Your body possesses a differentiated reconstutitive ability, allowing you to slowly recover from injuries. Note, however, that critical injuries, wounds or genetic damage will still require medical attention."
value = 3
- mob_trait = TRAIT_HEALING_FACTOR
- gain_text = span_notice("You feel a surge of reconstutitive vitality coursing through your body.")
+ mob_trait = TRAIT_RESTORATIVE_METABOLISM
+ gain_text = span_notice("You feel a surge of reconstutitive vitality coursing through your body...")
lose_text = span_notice("You sense your enhanced reconstutitive ability fading away...")
processing_quirk = TRUE
-/datum/quirk/healing_factor/on_process()
+/datum/quirk/restorative_metabolism/on_process()
. = ..()
var/mob/living/carbon/human/H = quirk_holder
From a438779e6600295d5e9bdb393d37b96752fb61c7 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sat, 27 Jan 2024 14:56:36 +0100
Subject: [PATCH 16/20] Better spans
---
code/modules/mob/living/carbon/human/species.dm | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index c9996d96d35c..10c8944869b6 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1894,11 +1894,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/target_aiming_for_groin = target.zone_selected == "groin"
if(target.check_martial_melee_block()) //END EDIT
- target.visible_message("[target] blocks [user]'s disarm attempt!", target = user, \
- target_message = "[target] blocks your disarm attempt!")
+ target.visible_message(span_warning("[target] blocks [user]'s disarm attempt!"), target = user, \
+ target_message = span_warning("[target] blocks your disarm attempt!"))
return FALSE
if(IS_STAMCRIT(user))
- to_chat(user, "You're too exhausted!")
+ to_chat(user, span_warning("You're too exhausted!"))
return FALSE
else if(aim_for_mouth && ( target_on_help || target_restrained || target_aiming_for_mouth))
@@ -1907,9 +1907,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
target.visible_message(\
- "\The [user] slaps [user == target ? "[user.p_them()]self" : "\the [target]"] in the face!",\
- "[user] slaps you in the face! ",\
- "You hear a slap.", target = user, target_message = "You slap [user == target ? "yourself" : "\the [target]"] in the face! ")
+ span_danger("\The [user] slaps [user == target ? "[user.p_them()]self" : "\the [target]"] in the face!"),\
+ span_notice("[user] slaps you in the face!"),\
+ "You hear a slap.", target = user, target_message = span_notice("You slap [user == target ? "yourself" : "\the [target]"] in the face!"))
user.do_attack_animation(target, ATTACK_EFFECT_FACE_SLAP)
if (!HAS_TRAIT(target, TRAIT_PERMABONER))
stop_wagging_tail(target)
@@ -1926,8 +1926,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(HAS_TRAIT(target, TRAIT_STEEL_ASS))
user.adjustStaminaLoss(50)
user.visible_message(\
- "\The [user] slaps \the [target]'s ass, but their hand bounces off like they hit metal!",\
- "You slap [user == target ? "your" : "\the [target]'s"] ass, but feel an intense amount of pain as you realise their buns are harder than steel!",\
+ span_danger("\The [user] slaps \the [target]'s ass, but their hand bounces off like they hit metal!"),\
+ span_danger("You slap [user == target ? "your" : "\the [target]'s"] ass, but feel an intense amount of pain as you realise their buns are harder than steel!"),\
"You hear a slap."
)
var/list/ouchies = list(
From 2a31983644a44e6c119eb79217602ca2db0c865d Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sat, 27 Jan 2024 15:05:04 +0100
Subject: [PATCH 17/20] Better spans, part 2
---
code/modules/mob/living/carbon/human/species.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 10c8944869b6..a443c10d3513 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1972,9 +1972,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
stop_wagging_tail(target)
playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
target.visible_message(\
- "\The [user] slaps [user == target ? "[user.p_their()] own" : "\the [target]'s"] ass!",\
- "[user] slaps your ass! ",\
- "You hear a slap.", target = user, target_message = "You slap [user == target ? "your own" : "\the [target]'s"] ass! ")
+ span_danger("\The [user] slaps [user == target ? "[user.p_their()] own" : "\the [target]'s"] ass!"),\
+ span_notice("[user] slaps your ass!"),\
+ "You hear a slap.", target = user, target_message = span_notice("You slap [user == target ? "your own" : "\the [target]'s"] ass!"))
return FALSE
From 80711d8bd96297966054a05560d6cbea099c4fba Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sat, 27 Jan 2024 17:37:36 +0100
Subject: [PATCH 18/20] Better wording
---
modular_splurt/code/datums/traits/good.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index fdc48649a664..bda66bb62fc6 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -514,7 +514,7 @@
/datum/quirk/breathless
name = "Breathless"
- desc = "Whether due to genetic engineering, technology, or bluespace magic, you no longer require air to function. This also means that administering life-saving manuevers such as CPR is now impossible."
+ desc = "Whether due to genetic engineering, technology, or bluespace magic, you no longer require air to function. This also means that administering life-saving manuevers such as CPR would be impossible."
value = 3
medical_record_text = "Patient's biology demonstrates no need for breathing."
gain_text = span_notice("You no longer need to breathe.")
From 25ebfd3ff3241a1c8d5d1a0b53b733295e9896b3 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sat, 27 Jan 2024 23:18:13 +0100
Subject: [PATCH 19/20] Add: tip for sleep-healing.
---
strings/tips.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/strings/tips.txt b/strings/tips.txt
index 46dfe1d7961c..ab1f7be5a333 100644
--- a/strings/tips.txt
+++ b/strings/tips.txt
@@ -320,3 +320,4 @@ EMPs can be created by mixing uranium and iron. The power of the pulse is determ
Some lizardpeople start with an unactivated mutation that allows them to breath fire. This can be unlocked through the usage of genetics!
Some loadout items can be unlocked through progress in parts of the game. The progress for these can be tracked in the loadout menu.
It's easy to forget that everyone else you're playing with is a real person trying to have as much fun as you are. Be nice to your fellow spacemen.
+Sleeping can be used to recover from minor injuries. Tables, beds, and bedsheets affect the healing rate.
From d0870b5f14f1b38395cec1fb8968faa90162c2c3 Mon Sep 17 00:00:00 2001
From: ariaworld <143797359+ariaworld@users.noreply.github.com>
Date: Sun, 28 Jan 2024 02:51:45 +0100
Subject: [PATCH 20/20] Tweak text for butt smack
---
code/modules/mob/living/carbon/human/species.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index a443c10d3513..3677efb2cf55 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1943,7 +1943,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(user == target)
to_chat(user, span_alert("Your butt is still [pick("rippling","jiggling","sloshing","clapping","wobbling")] about way too much to get a good smack!"))
else
- to_chat(user, span_alert("[target]'s big [pick("rippling","jiggling","sloshing","clapping","wobbling")] butt is still [pick("rippling","jiggling","sloshing","clapping","wobbling")] about way too much to get a good smack!"))
+ to_chat(user, span_alert("[target]'s big butt is still [pick("rippling","jiggling","sloshing","clapping","wobbling")] about way too much to get a good smack!"))
else
COOLDOWN_START(src, ass, 5 SECONDS)
if(user == target)