From dc88d0d01551dc6170bbbcced17f3e2989c83c44 Mon Sep 17 00:00:00 2001
From: Darius <5933805+LeDrascol@users.noreply.github.com>
Date: Sat, 21 Jan 2023 12:21:25 -0500
Subject: [PATCH 01/68] Adds a radiation immunity quirk
Adds the Lead Blooded quirk, which renders a user immune to radiation.
---
modular_splurt/code/datums/traits/good.dm | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index b305c79997..dbcf9efbc1 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -33,6 +33,14 @@
quirk_holder.weather_immunities -= "ash"
*/
+/datum/quirk/immunity_rads
+ name = "Lead Blooded"
+ desc = "Your body been rendered completely immune to the effects of radiation. Bask in the supermatter\'s warming glow without worry! Contains less than 1% actual lead."
+ value = 3
+ mob_trait = TRAIT_RADIMMUNE
+ gain_text = span_notice("You feel drawn to Cherenkov's glow.")
+ lose_text = span_notice("You realize that rads aren't so rad.")
+
/datum/quirk/dominant_aura
name = "Dominant Aura"
desc = "Your mere presence is assertive enough to appear as powerful to other people, so much in fact that the weaker kind can't help but throw themselves at your feet at the snap of a finger."
From f591ccdc3012fff0574a4ef3879b3d3b477bb273 Mon Sep 17 00:00:00 2001
From: Darius <5933805+LeDrascol@users.noreply.github.com>
Date: Mon, 23 Jan 2023 15:20:57 -0500
Subject: [PATCH 02/68] Convert quirk Lead Blooded to Rad Fiend
Instead of granting immunity, this new revision of the quirk grants a high level of radiation resistance. In addition, the player gains a customizable glow effect.
---
code/__SPLURTCODE/DEFINES/traits.dm | 2 +
modular_splurt/code/datums/traits/good.dm | 50 +++++++++++++--
.../code/datums/traits/trait_actions.dm | 64 +++++++++++++++++++
.../mob/living/carbon/human/species.dm | 9 +++
4 files changed, 119 insertions(+), 6 deletions(-)
diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm
index 9f0c41e694..f4d988258a 100644
--- a/code/__SPLURTCODE/DEFINES/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/traits.dm
@@ -27,3 +27,5 @@
#define TRAIT_NUDIST "Nudist"
+#define TRAIT_RAD_FIEND "RadFiend"
+
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index dbcf9efbc1..9bca9d5017 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -33,14 +33,52 @@
quirk_holder.weather_immunities -= "ash"
*/
-/datum/quirk/immunity_rads
- name = "Lead Blooded"
- desc = "Your body been rendered completely immune to the effects of radiation. Bask in the supermatter\'s warming glow without worry! Contains less than 1% actual lead."
- value = 3
- mob_trait = TRAIT_RADIMMUNE
- gain_text = span_notice("You feel drawn to Cherenkov's glow.")
+/datum/quirk/rad_fiend
+ name = "Rad Fiend"
+ desc = "You've been blessed by Cherenkov's warming light, causing you to emit a subtle glow at all times. Only intense radiation is capable of penetrating your protective barrier."
+ value = 2
+ mob_trait = TRAIT_RAD_FIEND
+ gain_text = span_notice("You feel empowered by Cherenkov's glow.")
lose_text = span_notice("You realize that rads aren't so rad.")
+ // Variable for the radiation immunity check
+ var/can_gain = TRUE
+
+/datum/quirk/rad_fiend/add()
+ // Define quirk holder mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Check for any radiation immunity
+ if(HAS_TRAIT(quirk_mob, TRAIT_RADIMMUNE))
+ // Set gain status
+ can_gain = FALSE
+
+ // Return without doing anything
+ return
+
+ // Add glow control action
+ var/datum/action/rad_fiend/update_glow/quirk_action = new
+ quirk_action.Grant(quirk_mob)
+
+/datum/quirk/rad_fiend/post_add()
+ // Check if quirk effect was gained
+ if(can_gain)
+ return
+
+ // Alert quirk holder of gain status
+ to_chat(quirk_holder, span_warning("As you are immune to radiation, you were unable to gain Cherenkov's blessing. Please discuss alternatives with a medical professional."))
+
+/datum/quirk/rad_fiend/remove()
+ // Define quirk holder mob
+ var/mob/living/carbon/human/quirk_mob = quirk_holder
+
+ // Remove glow control action
+ var/datum/action/rad_fiend/update_glow/quirk_action = locate() in quirk_mob.actions
+ quirk_action.Remove(quirk_mob)
+
+ // Remove glow effect
+ quirk_mob.remove_filter("rad_fiend_glow")
+
/datum/quirk/dominant_aura
name = "Dominant Aura"
desc = "Your mere presence is assertive enough to appear as powerful to other people, so much in fact that the weaker kind can't help but throw themselves at your feet at the snap of a finger."
diff --git a/modular_splurt/code/datums/traits/trait_actions.dm b/modular_splurt/code/datums/traits/trait_actions.dm
index 792f7b8e8f..ed9c4faf14 100644
--- a/modular_splurt/code/datums/traits/trait_actions.dm
+++ b/modular_splurt/code/datums/traits/trait_actions.dm
@@ -341,3 +341,67 @@
return
else
to_chat(H, span_warning("You are already conserving your energy!"))
+
+//
+// Quirk: Rad Fiend
+//
+
+/datum/action/rad_fiend
+ name = "Broken Rad Action"
+ desc = "Report this to a coder."
+ icon_icon = 'icons/effects/effects.dmi'
+ button_icon_state = "static"
+
+/datum/action/rad_fiend/update_glow
+ name = "Modify Glow"
+ desc = "Change your radioactive glow color."
+ button_icon_state = "blank"
+
+ // Glow color to use
+ var/glow_color = "#39ff14" // Neon green
+
+ // Thickness of glow outline
+ var/glow_range = 2
+
+/datum/action/rad_fiend/update_glow/Grant()
+ . = ..()
+
+ // Define user mob
+ 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))
+
+/datum/action/rad_fiend/update_glow/Remove()
+ . = ..()
+
+ // Define user mob
+ var/mob/living/carbon/human/action_mob = owner
+
+ // Remove glow
+ action_mob.remove_filter("rad_fiend_glow")
+
+/datum/action/rad_fiend/update_glow/Trigger()
+ . = ..()
+
+ // Define user mob
+ var/mob/living/carbon/human/action_mob = owner
+
+ // Ask user for color input
+ var/input_color = input(action_mob, "Select a color to use for your glow outline.", "Select Glow Color", glow_color) as color|null
+
+ // Check if color input was given
+ // Reset to stored color when not given input
+ 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
+
+ // Check if range input was given
+ // Reset to stored color when not given input
+ // Input is clamped in the 1-2 range
+ glow_range = (input_range ? clamp(input_range, 1, 2) : glow_range)
+
+ // 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))
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species.dm b/modular_splurt/code/modules/mob/living/carbon/human/species.dm
index 5fec507149..bf8ee799cd 100644
--- a/modular_splurt/code/modules/mob/living/carbon/human/species.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/human/species.dm
@@ -33,3 +33,12 @@
*/
thirst_rate *= H.physiology.thirst_mod
H.adjust_thirst(-thirst_rate)
+
+/datum/species/handle_mutations_and_radiation(mob/living/carbon/human/H)
+ // Check for rad fiend quirk
+ // Check for radiation resist threshold
+ if(HAS_TRAIT(H, TRAIT_RAD_FIEND) && (H.radiation < RAD_BURN_THRESHOLD))
+ // Return without effects
+ return TRUE
+
+ . = ..()
From 02047df9d4bd6c4b2c4f0cf02660f259911250ca Mon Sep 17 00:00:00 2001
From: Comicao1 <33708588+Comicao1@users.noreply.github.com>
Date: Wed, 8 Feb 2023 22:13:41 -0300
Subject: [PATCH 03/68] Wendigo Fix
---
.../datums/interactions/lewd_definitions.dm | 8 +++
.../antagonists/wendigo/mob/defines_init.dm | 14 ++++-
.../wendigo/mob/organs_bodyparts.dm | 2 +-
.../wendigo/mob/wendigo_defense.dm | 63 +++++++++++++++++++
.../mob/living/carbon/carbon_defense.dm | 13 ++++
.../mob/living/carbon/human/human_defense.dm | 52 +++++++++++++++
.../code/modules/mob/living/living.dm | 9 +++
tgstation.dme | 4 ++
8 files changed, 163 insertions(+), 2 deletions(-)
create mode 100644 modular_splurt/code/datums/interactions/lewd_definitions.dm
create mode 100644 modular_splurt/code/modules/antagonists/wendigo/mob/wendigo_defense.dm
create mode 100644 modular_splurt/code/modules/mob/living/carbon/carbon_defense.dm
create mode 100644 modular_splurt/code/modules/mob/living/carbon/human/human_defense.dm
diff --git a/modular_splurt/code/datums/interactions/lewd_definitions.dm b/modular_splurt/code/datums/interactions/lewd_definitions.dm
new file mode 100644
index 0000000000..7e5f7c044d
--- /dev/null
+++ b/modular_splurt/code/datums/interactions/lewd_definitions.dm
@@ -0,0 +1,8 @@
+
+/mob/living/cum(mob/living/partner, target_orifice)
+ . = ..()
+ if(src != partner)
+ if(iswendigo(partner) && partner.pulling == src)
+ var/mob/living/carbon/wendigo/W = partner
+ W.slaves |= src
+ to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
\ No newline at end of file
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm
index 3b2fb09aa3..09886b7daa 100644
--- a/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm
@@ -37,6 +37,8 @@
var/obj/item/ears_extra = null
var/obj/item/wrists = null
+ var/list/slaves = list() //people enslaved
+
/mob/living/carbon/wendigo/Initialize()
. = ..()
/* //TODO: Uncomment when objectives + forest get finished
@@ -79,6 +81,7 @@
/mob/living/carbon/wendigo/Destroy()
QDEL_NULL(physiology)
+ slaves.Cut()
return ..()
/mob/living/carbon/wendigo/update_body_parts()
@@ -122,7 +125,7 @@
//ORGANS
//
/mob/living/carbon/wendigo/create_internal_organs()
- internal_organs += new /obj/item/organ/eyes/wendigo
+ internal_organs += new /obj/item/organ/eyes/night_vision/wendigo
internal_organs += new /obj/item/organ/liver/wendigo
internal_organs += new /obj/item/organ/tongue
@@ -131,3 +134,12 @@
internal_organs += new /obj/item/organ/stomach
internal_organs += new /obj/item/organ/ears
..()
+
+/mob/living/carbon/wendigo/movement_delay()
+ . = ..()
+ var/adding = 0
+ var/turf/T = get_turf(src)
+ if(T.get_lumcount() < 0.2)
+ adding += 1
+ . += adding
+
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/organs_bodyparts.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/organs_bodyparts.dm
index 11c74a7573..5fba7e8215 100644
--- a/modular_splurt/code/modules/antagonists/wendigo/mob/organs_bodyparts.dm
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/organs_bodyparts.dm
@@ -20,7 +20,7 @@
var/mob/living/carbon/wendigo/A = C
A.metabolize_hunger()
-/obj/item/organ/eyes/wendigo
+/obj/item/organ/eyes/night_vision/wendigo
sight_flags = SEE_MOBS
/obj/item/bodypart/head/wendigo
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/wendigo_defense.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/wendigo_defense.dm
new file mode 100644
index 0000000000..d6a9a2314e
--- /dev/null
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/wendigo_defense.dm
@@ -0,0 +1,63 @@
+/mob/living/carbon/wendigo/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
+ if(user.a_intent == INTENT_HARM)
+ . = ..(user, TRUE)
+ if(.)
+ return
+ adjustBruteLoss(15)
+ var/hitverb = "punched"
+ if(mob_size < MOB_SIZE_LARGE)
+ step_away(src,user,15)
+ sleep(1)
+ step_away(src,user,15)
+ hitverb = "slammed"
+ playsound(loc, "punch", 25, 1, -1)
+ visible_message("[user] has [hitverb] [src]!", \
+ "[user] has [hitverb] [src]!", null, COMBAT_MESSAGE_RANGE)
+ return 1
+
+/mob/living/carbon/wendigo/on_attack_hand(mob/living/carbon/human/M)
+ . = ..()
+ if(.) //To allow surgery to return properly.
+ return
+ switch(M.a_intent)
+ if (INTENT_HARM)
+ if(M != pulling && !src.slaves.Find(M))
+ var/damage = rand(1, 9)
+ if (prob(90))
+ playsound(loc, "punch", 25, 1, -1)
+ visible_message("[M] has punched [src]!", \
+ "[M] has punched [src]!", null, COMBAT_MESSAGE_RANGE)
+ var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected))
+ apply_damage(damage, BRUTE, affecting)
+ log_combat(M, src, "attacked")
+ M.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
+ else
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message("[M] has attempted to punch [src]!", \
+ "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE)
+
+ if (INTENT_DISARM)
+ if (!lying && M != pulling && !src.slaves.Find(M))
+ M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
+ if (prob(5))
+ Unconscious(40)
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ log_combat(M, src, "pushed")
+ visible_message("[M] has pushed down [src]!", \
+ "[M] has pushed down [src]!")
+ else
+ if (prob(50))
+ dropItemToGround(get_active_held_item())
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ visible_message("[M] has disarmed [src]!", \
+ "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE)
+ else
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message("[M] has attempted to disarm [src]!",\
+ "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE)
+
+/mob/living/carbon/wendigo/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
+ if(!no_effect && !visual_effect_icon)
+ visual_effect_icon = ATTACK_EFFECT_CLAW
+ ..()
+
diff --git a/modular_splurt/code/modules/mob/living/carbon/carbon_defense.dm b/modular_splurt/code/modules/mob/living/carbon/carbon_defense.dm
new file mode 100644
index 0000000000..2939e1f545
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/carbon/carbon_defense.dm
@@ -0,0 +1,13 @@
+
+/mob/living/carbon/attacked_by(obj/item/I, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
+ . = ..()
+ if(iswendigo(src) && user == pulling)
+ to_chat(src, "I can't hit them, their grip is too strong!")
+ return FALSE
+ if(iswendigo(src))
+ var/mob/living/carbon/wendigo/W = src
+ if(W.slaves.Find(user))
+ to_chat(src, "I can't hit them, they're my master!")
+ return FALSE
+
+
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/human_defense.dm b/modular_splurt/code/modules/mob/living/carbon/human/human_defense.dm
new file mode 100644
index 0000000000..fb1ddf88b3
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/carbon/human/human_defense.dm
@@ -0,0 +1,52 @@
+
+/mob/living/carbon/human/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
+ . = ..()
+ if(.) //To allow surgery to return properly.
+ return
+ if(iswendigo(user))
+ var/mob/living/carbon/wendigo/M = user
+ switch(M.a_intent)
+ if (INTENT_HARM)
+ var/damage = rand(1, 9)
+ var/turf/T = get_turf(user)
+ if(T.get_lumcount() < 0.2)
+ damage += rand(4,10)
+ if (prob(90))
+ playsound(loc, "punch", 25, 1, -1)
+ visible_message("[M] has punched [src]!", \
+ "[M] has punched [src]!", null, COMBAT_MESSAGE_RANGE)
+ var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected))
+ apply_damage(damage, BRUTE, affecting)
+ log_combat(M, src, "attacked")
+ M.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
+ else
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message("[M] has attempted to punch [src]!", \
+ "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE)
+ if(INTENT_GRAB)
+ grabbedby(M)
+ if(INTENT_HELP)
+ if(M == src && check_self_for_injuries())
+ return
+ help_shake_act(M)
+ if (INTENT_DISARM)
+ if (!lying)
+ M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
+ if (prob(5))
+ Unconscious(40)
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ log_combat(M, src, "pushed")
+ visible_message("[M] has pushed down [src]!", \
+ "[M] has pushed down [src]!")
+ else
+ if (prob(50))
+ dropItemToGround(get_active_held_item())
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ visible_message("[M] has disarmed [src]!", \
+ "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE)
+ else
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message("[M] has attempted to disarm [src]!",\
+ "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE)
+
+
diff --git a/modular_splurt/code/modules/mob/living/living.dm b/modular_splurt/code/modules/mob/living/living.dm
index c2b04a0d84..6d36fd208a 100644
--- a/modular_splurt/code/modules/mob/living/living.dm
+++ b/modular_splurt/code/modules/mob/living/living.dm
@@ -64,3 +64,12 @@
AddElement(/datum/element/smalltalk)
else
RemoveElement(/datum/element/smalltalk)
+
+/mob/living/do_resist_grab(moving_resist, forced, silent = FALSE)
+ . = ..()
+ if(iswendigo(pulledby)) //Grip is too strong, nonetheless.
+ to_chat(src, "The grip is too strong! I need some time...")
+ if(do_after(src, 200, target=pulledby))
+ to_chat(src, "I break free off [pulledby]'s grip!")
+ return TRUE
+
diff --git a/tgstation.dme b/tgstation.dme
index 3e90f99ab4..1e2527a8ab 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4321,6 +4321,7 @@
#include "modular_splurt\code\datums\elements\spooky.dm"
#include "modular_splurt\code\datums\elements\wuv.dm"
#include "modular_splurt\code\datums\interactions\cuddling.dm"
+#include "modular_splurt\code\datums\interactions\lewd_definitions.dm"
#include "modular_splurt\code\datums\interactions\rope.dm"
#include "modular_splurt\code\datums\interactions\lewd\_lewd.dm"
#include "modular_splurt\code\datums\interactions\lewd\lewd_datums.dm"
@@ -4492,6 +4493,7 @@
#include "modular_splurt\code\modules\antagonists\wendigo\mob\mob_equip.dm"
#include "modular_splurt\code\modules\antagonists\wendigo\mob\organs_bodyparts.dm"
#include "modular_splurt\code\modules\antagonists\wendigo\mob\update_icons.dm"
+#include "modular_splurt\code\modules\antagonists\wendigo\mob\wendigo_defense.dm"
#include "modular_splurt\code\modules\arousal\arousal.dm"
#include "modular_splurt\code\modules\arousal\genitals.dm"
#include "modular_splurt\code\modules\arousal\genitals_sprite_accessories.dm"
@@ -4682,7 +4684,9 @@
#include "modular_splurt\code\modules\mob\living\say.dm"
#include "modular_splurt\code\modules\mob\living\brain\brain_item.dm"
#include "modular_splurt\code\modules\mob\living\carbon\carbon.dm"
+#include "modular_splurt\code\modules\mob\living\carbon\carbon_defense.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\human.dm"
+#include "modular_splurt\code\modules\mob\living\carbon\human\human_defense.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\human_defines.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\inventory.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\physiology.dm"
From e588d52fb598059adce8103d69cedb0097ae3679 Mon Sep 17 00:00:00 2001
From: Comicao1 <33708588+Comicao1@users.noreply.github.com>
Date: Wed, 8 Feb 2023 22:25:56 -0300
Subject: [PATCH 04/68] Update lewd_definitions.dm
---
modular_splurt/code/datums/interactions/lewd_definitions.dm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modular_splurt/code/datums/interactions/lewd_definitions.dm b/modular_splurt/code/datums/interactions/lewd_definitions.dm
index 7e5f7c044d..4af638e579 100644
--- a/modular_splurt/code/datums/interactions/lewd_definitions.dm
+++ b/modular_splurt/code/datums/interactions/lewd_definitions.dm
@@ -5,4 +5,5 @@
if(iswendigo(partner) && partner.pulling == src)
var/mob/living/carbon/wendigo/W = partner
W.slaves |= src
- to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
\ No newline at end of file
+ to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
+
From eb051adc4503b0be605ae6525b98cc4c0f4e86aa Mon Sep 17 00:00:00 2001
From: Comicao1 <33708588+Comicao1@users.noreply.github.com>
Date: Wed, 8 Feb 2023 23:26:45 -0300
Subject: [PATCH 05/68] More
---
code/modules/arousal/arousal.dm | 6 ++++++
modular_splurt/code/datums/interactions/lewd/_lewd.dm | 5 +++++
.../code/datums/interactions/lewd_definitions.dm | 9 ---------
.../code/modules/antagonists/wendigo/mob/defines_init.dm | 2 ++
tgstation.dme | 1 -
5 files changed, 13 insertions(+), 10 deletions(-)
delete mode 100644 modular_splurt/code/datums/interactions/lewd_definitions.dm
diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm
index b1d8815696..86b6a38faa 100644
--- a/code/modules/arousal/arousal.dm
+++ b/code/modules/arousal/arousal.dm
@@ -84,6 +84,12 @@
R.reaction(turfing ? target : target.loc, TOUCH, 1, 0)
if(!turfing)
R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1), log = TRUE)
+ if(iswendigo(target))
+ var/mob/living/carbon/wendigo/W = target
+ if(W.pulling == src)
+ W.slaves |= src
+ to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
+
G.last_orgasmed = world.time
R.clear_reagents()
//skyrat edit - chock i am going to beat you to death
diff --git a/modular_splurt/code/datums/interactions/lewd/_lewd.dm b/modular_splurt/code/datums/interactions/lewd/_lewd.dm
index a5579511b5..2cd1a55817 100644
--- a/modular_splurt/code/datums/interactions/lewd/_lewd.dm
+++ b/modular_splurt/code/datums/interactions/lewd/_lewd.dm
@@ -127,6 +127,7 @@
ass = new
ass.Insert(partner)
ass.climax_modify_size(src, getorganslot(ORGAN_SLOT_PENIS))
+
else
switch(last_genital.type)
if(/obj/item/organ/genital/penis)
@@ -193,6 +194,10 @@
ass = new
ass.Insert(partner)
ass.climax_modify_size(src, last_genital)
+ if(iswendigo(partner) && partner.pulling == src)
+ var/mob/living/carbon/wendigo/W = partner
+ W.slaves |= src
+ to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
if(!message)
return ..()
if(gender == MALE)
diff --git a/modular_splurt/code/datums/interactions/lewd_definitions.dm b/modular_splurt/code/datums/interactions/lewd_definitions.dm
deleted file mode 100644
index 4af638e579..0000000000
--- a/modular_splurt/code/datums/interactions/lewd_definitions.dm
+++ /dev/null
@@ -1,9 +0,0 @@
-
-/mob/living/cum(mob/living/partner, target_orifice)
- . = ..()
- if(src != partner)
- if(iswendigo(partner) && partner.pulling == src)
- var/mob/living/carbon/wendigo/W = partner
- W.slaves |= src
- to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
-
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm
index 09886b7daa..9cc5b9de67 100644
--- a/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/defines_init.dm
@@ -110,8 +110,10 @@
return TRUE
/mob/living/carbon/wendigo/IsAdvancedToolUser()
return TRUE
+/* So they can be pulled.
/mob/living/carbon/wendigo/can_be_pulled()
return FALSE
+*/
/mob/living/carbon/wendigo/is_literate()
return TRUE
/mob/living/carbon/wendigo/canBeHandcuffed()
diff --git a/tgstation.dme b/tgstation.dme
index 1e2527a8ab..dbd4068123 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4321,7 +4321,6 @@
#include "modular_splurt\code\datums\elements\spooky.dm"
#include "modular_splurt\code\datums\elements\wuv.dm"
#include "modular_splurt\code\datums\interactions\cuddling.dm"
-#include "modular_splurt\code\datums\interactions\lewd_definitions.dm"
#include "modular_splurt\code\datums\interactions\rope.dm"
#include "modular_splurt\code\datums\interactions\lewd\_lewd.dm"
#include "modular_splurt\code\datums\interactions\lewd\lewd_datums.dm"
From e63b40b7cb15710b6b5870bf564d465b1342e185 Mon Sep 17 00:00:00 2001
From: Comicao1 <33708588+Comicao1@users.noreply.github.com>
Date: Thu, 9 Feb 2023 00:18:49 -0300
Subject: [PATCH 06/68] Update arousal.dm
---
code/modules/arousal/arousal.dm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm
index 86b6a38faa..43c816a7ba 100644
--- a/code/modules/arousal/arousal.dm
+++ b/code/modules/arousal/arousal.dm
@@ -84,11 +84,6 @@
R.reaction(turfing ? target : target.loc, TOUCH, 1, 0)
if(!turfing)
R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1), log = TRUE)
- if(iswendigo(target))
- var/mob/living/carbon/wendigo/W = target
- if(W.pulling == src)
- W.slaves |= src
- to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
G.last_orgasmed = world.time
R.clear_reagents()
@@ -127,6 +122,11 @@
to_chat(src, span_userlove("You climax [(Lgen) ? "in [L]'s [Lgen.name]" : "with [L]"], your [G.name] spilling nothing."))
to_chat(L, span_userlove("[src] climaxes [(Lgen) ? "in your [Lgen.name]" : "with you"], [p_their()] [G.name] spilling nothing!"))
//SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) //Sandstorm edit
+ if(iswendigo(L))
+ var/mob/living/carbon/wendigo/W = L
+ if(L.pulling == src)
+ L.slaves |= src
+ to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
do_climax(fluid_source, spillage ? loc : L, G, spillage,, Lgen)
//L.receive_climax(src, Lgen, G, spillage)
From ca5b8fd5269b6010de062592fe4694bdacb352c3 Mon Sep 17 00:00:00 2001
From: Comicao1 <33708588+Comicao1@users.noreply.github.com>
Date: Thu, 9 Feb 2023 00:23:23 -0300
Subject: [PATCH 07/68] D'oh
---
code/modules/arousal/arousal.dm | 5 -----
modular_splurt/code/modules/arousal/arousal.dm | 5 +++++
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm
index 43c816a7ba..f78f64fdb0 100644
--- a/code/modules/arousal/arousal.dm
+++ b/code/modules/arousal/arousal.dm
@@ -122,11 +122,6 @@
to_chat(src, span_userlove("You climax [(Lgen) ? "in [L]'s [Lgen.name]" : "with [L]"], your [G.name] spilling nothing."))
to_chat(L, span_userlove("[src] climaxes [(Lgen) ? "in your [Lgen.name]" : "with you"], [p_their()] [G.name] spilling nothing!"))
//SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) //Sandstorm edit
- if(iswendigo(L))
- var/mob/living/carbon/wendigo/W = L
- if(L.pulling == src)
- L.slaves |= src
- to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
do_climax(fluid_source, spillage ? loc : L, G, spillage,, Lgen)
//L.receive_climax(src, Lgen, G, spillage)
diff --git a/modular_splurt/code/modules/arousal/arousal.dm b/modular_splurt/code/modules/arousal/arousal.dm
index b60b8e95e1..2fb47ccef0 100644
--- a/modular_splurt/code/modules/arousal/arousal.dm
+++ b/modular_splurt/code/modules/arousal/arousal.dm
@@ -1,6 +1,11 @@
/mob/living/carbon/human/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage, mb_time, obj/item/organ/genital/Lgen, forced = FALSE)
. = ..()
L.receive_climax(src, Lgen, G, spillage, forced = forced)
+ if(iswendigo(L))
+ var/mob/living/carbon/wendigo/W = L
+ if(W.pulling == src)
+ W.slaves |= src
+ to_chat(src, " You are now [W]'s slave! Serve your master properly! ")
/mob/living/proc/receive_climax(mob/living/partner, obj/item/organ/genital/receiver, obj/item/organ/genital/source, spill, forced)
//gregnancy...
From 5971ee7884357e0c7299a6902b003a273840d580 Mon Sep 17 00:00:00 2001
From: Comicao1 <33708588+Comicao1@users.noreply.github.com>
Date: Thu, 9 Feb 2023 01:01:07 -0300
Subject: [PATCH 08/68] Update arousal.dm
---
code/modules/arousal/arousal.dm | 1 -
1 file changed, 1 deletion(-)
diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm
index f78f64fdb0..b1d8815696 100644
--- a/code/modules/arousal/arousal.dm
+++ b/code/modules/arousal/arousal.dm
@@ -84,7 +84,6 @@
R.reaction(turfing ? target : target.loc, TOUCH, 1, 0)
if(!turfing)
R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1), log = TRUE)
-
G.last_orgasmed = world.time
R.clear_reagents()
//skyrat edit - chock i am going to beat you to death
From e7bb7b85cd56811ab73205c4757912dccc11285e Mon Sep 17 00:00:00 2001
From: Darius <5933805+LeDrascol@users.noreply.github.com>
Date: Sun, 12 Feb 2023 13:25:09 -0500
Subject: [PATCH 09/68] Remove duplicate TRAIT_CLOTH_EATER
Removes a duplicate define for TRAIT_CLOTH_EATER caused during a merge.
---
code/__SPLURTCODE/DEFINES/traits.dm | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm
index 97e8f534bb..bd9157a9bb 100644
--- a/code/__SPLURTCODE/DEFINES/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/traits.dm
@@ -25,7 +25,6 @@
#define TRAIT_ARACHNID "Arachnid"
#define TRAIT_FLUTTER "flutter"
#define TRAIT_NUDIST "Nudist"
-#define TRAIT_CLOTH_EATER "cloth_eater"
#define TRAIT_CLOTH_EATER "cloth_eater"
#define TRAIT_WEREWOLF "Werewolf"
-#define TRAIT_RAD_FIEND "RadFiend"
+#define TRAIT_RAD_FIEND "RadFiend"
From 58aa56c57b50ee21db77bafb6021aa0c6f198898 Mon Sep 17 00:00:00 2001
From: BongaTheProto <93835010+BongaTheProto@users.noreply.github.com>
Date: Fri, 17 Feb 2023 22:52:32 -0500
Subject: [PATCH 10/68] frankenstein
---
code/__SPLURTCODE/DEFINES/loadout.dm | 8 +
code/modules/client/preferences.dm | 1 +
code/modules/client/preferences_savefile.dm | 5 +-
.../code/modules/client/preferences.dm | 1182 +++++++++++++++++
.../modules/client/preferences_savefile.dm | 5 +
tgstation.dme | 1 +
6 files changed, 1201 insertions(+), 1 deletion(-)
create mode 100644 code/__SPLURTCODE/DEFINES/loadout.dm
diff --git a/code/__SPLURTCODE/DEFINES/loadout.dm b/code/__SPLURTCODE/DEFINES/loadout.dm
new file mode 100644
index 0000000000..881080f664
--- /dev/null
+++ b/code/__SPLURTCODE/DEFINES/loadout.dm
@@ -0,0 +1,8 @@
+//the names of the customization tabs
+//#define SETTINGS_TAB 0 //Already exists
+#define GAME_PREFERENCES_TAB 1
+#define APPEARANCE_TAB 2
+#define SPEECH_TAB 3
+#define LOADOUT_TAB 4
+#define CONTENT_PREFERENCES_TAB 5
+#define KEYBINDINGS_TAB_OLD 6
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 7a5f4a0e3e..06a0cadebd 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1402,6 +1402,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Be Antagonist Victim: [be_victim ? be_victim : BEVICTIM_ASK]
"
dat += "Disable combat mode cursor: [disable_combat_cursor?"Yes":"No"]
"
dat += "Splashscreen Player Panel Style: [(toggles & TG_PLAYER_PANEL)?"TG":"Old"]
"
+ dat += "Character Creation Menu Style: [new_character_creator ? "New" : "Old"]
"
//SPLURT Edit end
dat += "
"
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index c265604f81..e2dcb8454d 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
-#define SAVEFILE_VERSION_MAX 57
+#define SAVEFILE_VERSION_MAX 57.01
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -490,6 +490,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["disable_combat_cursor"] >> disable_combat_cursor
S["use_new_playerpanel"] >> use_new_playerpanel
S["gfluid_blacklist"] >> gfluid_blacklist
+ S["new_character_creator"] >> new_character_creator
+
//favorite outfits
S["favorite_outfits"] >> favorite_outfits
@@ -692,6 +694,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["disable_combat_cursor"], disable_combat_cursor)
WRITE_FILE(S["use_new_playerpanel"], use_new_playerpanel)
WRITE_FILE(S["gfluid_blacklist"], gfluid_blacklist)
+ WRITE_FILE(S["new_character_creator"], new_character_creator)
var/mob/living/carbon/human/H = parent.mob
if(istype(H))
diff --git a/modular_splurt/code/modules/client/preferences.dm b/modular_splurt/code/modules/client/preferences.dm
index 13b9bc882b..9931dd1a2b 100644
--- a/modular_splurt/code/modules/client/preferences.dm
+++ b/modular_splurt/code/modules/client/preferences.dm
@@ -1,7 +1,11 @@
+#define APPEARANCE_CATEGORY_COLUMN "
| "
+ if(jobban_isbanned(user, "appearance"))
+ dat += "You are banned from using custom names and appearances. You can continue to adjust your characters, but you will be randomised once you join the game. " + dat += "Random Name " + dat += "Always Random Name:[be_random_name ? "Yes" : "No"] " + + dat += "[nameless ? "Default designation" : "Name"]:" + dat += "[real_name] " + dat += "Be nameless: [nameless ? "Yes" : "No"] " + + dat += "Gender: [gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))] " + dat += "Age: [age] " + + dat += "Special Names: " + var/old_group + for(var/custom_name_id in GLOB.preferences_custom_names) + var/namedata = GLOB.preferences_custom_names[custom_name_id] + if(!old_group) + old_group = namedata["group"] + else if(old_group != namedata["group"]) + old_group = namedata["group"] + dat += " " + dat += "[namedata["pref_name"]]: [custom_names[custom_name_id]] " + dat += " " + + dat += "Custom job preferences: " + dat += "Preferred AI Core Display: [preferred_ai_core_display] " + dat += "Preferred Security Department: [prefered_security_department] | "
+ dat += "
"
+ dat += "Flavor Text" + dat += "Set Examine Text" + if(length(features["flavor_text"]) <= MAX_FLAVOR_PREVIEW_LEN) + if(!length(features["flavor_text"])) + dat += "\[...\] " //skyrat - adds //come to brazil or brazil comes to you + else + dat += "[html_encode(features["flavor_text"])] " //skyrat - adds and uses html_encode + else + dat += "[TextPreview(html_encode(features["flavor_text"]))]... " //skyrat edit, uses html_encode + //SPLURT edit - naked flavor text + dat += " Naked Flavor Text" + dat += "Set Naked Examine Text" + if(length(features["naked_flavor_text"]) <= 40) + if(!length(features["naked_flavor_text"])) + dat += "\[...\] " + else + dat += "[html_encode(features["naked_flavor_text"])] " + else + dat += "[TextPreview(html_encode(features["naked_flavor_text"]))]... " + //SPLURT edit end + dat += " Silicon Flavor Text" + dat += "Set Silicon Examine Text" + if(length(features["silicon_flavor_text"]) <= MAX_FLAVOR_PREVIEW_LEN) + if(!length(features["silicon_flavor_text"])) + dat += "\[...\] " + else + dat += "[features["silicon_flavor_text"]] " + else + dat += "[TextPreview(features["silicon_flavor_text"])]... " + dat += " OOC notes" + dat += "Set OOC notes" + var/ooc_notes_len = length(features["ooc_notes"]) + if(ooc_notes_len <= MAX_FLAVOR_PREVIEW_LEN) + if(!ooc_notes_len) + dat += "\[...\] " + else + dat += "[features["ooc_notes"]] " + else + dat += "[TextPreview(features["ooc_notes"])]... " + //SPLURT EDIT + dat += " Headshot Image" + dat += "Set Headshot Image" + if(features["headshot_link"]) + dat += " " + //SPLURT EDIT END + //SKYRAT EDIT + dat += "ERP : [erppref] " + dat += "Non-Con : [nonconpref] " + dat += "Vore : [vorepref] " + //END OF SKYRAT EDIT + + dat += " Records" + dat += "Security Records " + if(length_char(security_records) <= 40) + if(!length(security_records)) + dat += "\[...\]" + else + dat += "[security_records]" + else + dat += "[TextPreview(security_records)]... " + + dat += " Medical Records " + if(length_char(medical_records) <= 40) + if(!length(medical_records)) + dat += "\[...\] " + else + dat += "[medical_records]" + else + dat += "[TextPreview(medical_records)]... " + + dat += APPEARANCE_CATEGORY_COLUMN //body moves right sandstorm change + + dat += " Body" + dat += "Gender:[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]" + if(gender != NEUTER && pref_species.sexes) + dat += "Body Model:[features["body_model"] == MALE ? "Masculine" : "Feminine"] " + dat += "Limb Modification: " + dat += "Modify Limbs " + for(var/modification in modified_limbs) + if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC) + dat += "[modification]: [modified_limbs[modification][2]] " + else + dat += "[modification]: [modified_limbs[modification][1]] " + dat += " " + dat += "Species:[pref_species.name] " + dat += "Custom Species Name:[custom_species ? custom_species : "None"] " + dat += "Random Body:Randomize! " + dat += "Always Random Body:[be_random_body ? "Yes" : "No"] " + dat += " Cycle background:[bgstate] " + + dat += " | " //body moves right sandstorm change
+
+ var/use_skintones = pref_species.use_skintones
+ if(use_skintones)
+ dat += APPEARANCE_CATEGORY_COLUMN
+
+ dat += "
| [marking_list[2]] - [actual_name] | ˄ ˅ X [color_marking_dat] |
"
+ dat += "Clothing & Equipment" + /* skyrat change + dat += "Underwear:[underwear]" + if(GLOB.underwear_list[underwear]?.has_color) + dat += "Underwear Color: #[undie_color] Change" + dat += "Undershirt:[undershirt]" + if(GLOB.undershirt_list[undershirt]?.has_color) + dat += "Undershirt Color: #[shirt_color] Change " + dat += "Socks:[socks]" + if(GLOB.socks_list[socks]?.has_color) + dat += "Socks Color: #[socks_color] Change " + */ + dat += "Backpack:[backbag]" + dat += "Jumpsuit: [jumpsuit_style] " + if((HAS_FLESH in pref_species.species_traits) || (HAS_BONE in pref_species.species_traits)) + dat += " Temporal Scarring: [(persistent_scars) ? "Enabled" : "Disabled"]" + dat += "Clear scar slots " + dat += "Uplink Location:[uplink_spawn_loc]" + dat += " | "
+
+ dat += ""
+ dat += "Lewd preferences" + dat += "Lust tolerance:[lust_tolerance]" + dat += "Sexual potency:[sexual_potency]" + dat += " | "
+
+ //SPLURT EDIT BEGIN - gregnancy preferences
+ dat += ""
+ dat += "Pregnancy preferences" + dat += "Chance of impregnation:[virility ? virility : "Disabled"]" + dat += "Chance of getting pregnant:[fertility ? fertility : "Disabled"]" + dat += "Lay inert eggs:[features["inert_eggs"] == TRUE ? "Enabled" : "Disabled"]" + if(fertility) + dat += "Pregnancy inflation:[pregnancy_inflation ? "Enabled" : "Disabled"]" + dat += "Pregnancy breast growth:[pregnancy_breast_growth ? "Enabled" : "Disabled"]" + if(fertility || features["inert_eggs"]) + dat += "Egg shell:[egg_shell]" + dat += " | "
+ //SPLURT EDIT END
+ dat += APPEARANCE_CATEGORY_COLUMN
+ if(NOGENITALS in pref_species.species_traits)
+ dat += "Your species ([pref_species.name]) does not support genitals!
"
+ dat += "Speech preferences" + dat += "Custom Speech Verb:" + dat += "[custom_speech_verb] " + dat += "Custom Tongue: " + dat += "[custom_tongue] " + //SANDSTORM EDIT - additional language + runechat color + dat += "Additional Language " + var/list/languages_sorted = sortList(language) + dat += "[language.len ? languages_sorted.Join(", ") : "None"] " + dat += "Custom runechat color: [enable_personal_chat_color ? "Enabled" : "Disabled"] [enable_personal_chat_color ? "[personal_chat_color] Change" : ""] " + dat += " | "
+ //END OF SANDSTORM EDIT
+ dat += ""
+ dat += "Vocal Bark preferences" + var/datum/bark/B = GLOB.bark_list[bark_id] + dat += "Vocal Bark Sound:" + dat += "[B ? initial(B.name) : "INVALID"] " + dat += "Vocal Bark Speed: [bark_speed] " + dat += "Vocal Bark Pitch: [bark_pitch] " + dat += "Vocal Bark Variance: [bark_variance] " + dat += " Preview Bark " + dat += " | "
+ dat += "
"
+ dat += "General Settings" + dat += "UI Style: [UI_style]" + dat += "Outline: [outline_enabled ? "Enabled" : "Disabled"] " + dat += "Outline Color: [outline_color ? "" : "Theme-based (null)"][outline_color] Change " + dat += "Screentip: [screentip_pref] " + dat += "Screentip Color: [screentip_color] Change " + dat += "tgui Monitors: [(tgui_lock) ? "Primary" : "All"] " + dat += "tgui Style: [(tgui_fancy) ? "Fancy" : "No Frills"] " + dat += "Input Framework: [(tgui_input_mode) ? "tgui" : "BYOND"] " + dat += "tgui Button Size: [(tgui_large_buttons) ? "Large" : "Small"] " + dat += "tgui Buttons Swapped: [(tgui_swapped_buttons) ? "Yes" : "No"] " + dat += "Show Runechat Chat Bubbles: [chat_on_map ? "Enabled" : "Disabled"] " + dat += "Runechat message char limit: [max_chat_length] " + dat += "See Runechat for non-mobs: [see_chat_non_mob ? "Enabled" : "Disabled"] " + //SKYRAT CHANGES BEGIN + dat += "See Runechat for emotes: [see_chat_emotes ? "Enabled" : "Disabled"] " + //SKYRAT CHANGES END + dat += " " + dat += "Action Buttons: [(buttons_locked) ? "Locked In Place" : "Unlocked"] " + dat += " " + dat += "PDA Color: [pda_color] Change " + dat += "PDA Style: [pda_style] " + dat += "PDA Reskin: [pda_skin] " + dat += " " + dat += "Ghost Ears: [(chat_toggles & CHAT_GHOSTEARS) ? "All Speech" : "Nearest Creatures"] " + dat += "Ghost Radio: [(chat_toggles & CHAT_GHOSTRADIO) ? "All Messages":"No Messages"] " + dat += "Ghost Sight: [(chat_toggles & CHAT_GHOSTSIGHT) ? "All Emotes" : "Nearest Creatures"] " + dat += "Ghost Whispers: [(chat_toggles & CHAT_GHOSTWHISPER) ? "All Speech" : "Nearest Creatures"] " + dat += "Ghost PDA: [(chat_toggles & CHAT_GHOSTPDA) ? "All Messages" : "Nearest Creatures"] " + dat += "Window Flashing: [(windowflashing) ? "Enabled":"Disabled"] " + dat += " " + dat += "Play Admin MIDIs: [(toggles & SOUND_MIDI) ? "Enabled":"Disabled"] " + dat += "Play Lobby Music: [(toggles & SOUND_LOBBY) ? "Enabled":"Disabled"] " + dat += "See Pull Requests: [(chat_toggles & CHAT_PULLR) ? "Enabled":"Disabled"] " + dat += " " + if(user.client) + if(unlock_content) + dat += "BYOND Membership Publicity: [(toggles & MEMBER_PUBLIC) ? "Public" : "Hidden"] " + if(unlock_content || check_rights_for(user.client, R_ADMIN)) + dat += "OOC Color: [ooccolor ? ooccolor : GLOB.normal_ooc_colour] Change " + dat += "Antag OOC Color: [aooccolor ? aooccolor : GLOB.normal_aooc_colour] Change " + + dat += " | "
+
+ dat += ""
+
+ dat += "Special Role Settings" + + if(jobban_isbanned(user, ROLE_SYNDICATE)) + dat += "You are banned from antagonist roles." + src.be_special = list() + + dat += "DISABLE ALL ANTAGONISM [(toggles & NO_ANTAG) ? "YES" : "NO"]" + + for (var/i in GLOB.special_roles) + if(jobban_isbanned(user, i)) + dat += "Be [capitalize(i)]: BANNED " + else + var/days_remaining = null + if(ispath(GLOB.special_roles[i]) && CONFIG_GET(flag/use_age_restriction_for_jobs)) //If it's a game mode antag, check if the player meets the minimum age + var/mode_path = GLOB.special_roles[i] + var/datum/game_mode/temp_mode = new mode_path + days_remaining = temp_mode.get_remaining_days(user.client) + + if(days_remaining) + dat += "Be [capitalize(i)]: \[IN [days_remaining] DAYS] " + else + var/enabled_text = "" + if(i in be_special) + if(be_special[i] >= 1) + enabled_text = "Enabled" + else + enabled_text = "Low" + else + enabled_text = "Disabled" + dat += "Be [capitalize(i)]: [enabled_text] " + dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Enabled" : "Disabled"] " + + dat += " " + + dat += " | "
+
+ if(user.client.holder) // sandstorm start - moves admin prefs to the right
+ dat += "Admin Settings" + dat += "Adminhelp Sounds: [(toggles & SOUND_ADMINHELP)?"Enabled":"Disabled"]" + dat += "Announce Login: [(toggles & ANNOUNCE_LOGIN)?"Enabled":"Disabled"] " + dat += " " + dat += "Combo HUD Lighting: [(toggles & COMBOHUD_LIGHTING)?"Full-bright":"No Change"] " + dat += "Use Modern Player Panel: [use_new_playerpanel ? "Yes" : "No"] " // sandstorm end - moves admins prefs to the right + + //deadmin + dat += " Deadmin While Playing" + if(CONFIG_GET(flag/auto_deadmin_players)) + dat += "Always Deadmin: FORCED" + else + dat += "Always Deadmin: [(deadmin & DEADMIN_ALWAYS)?"Enabled":"Disabled"] " + if(!(deadmin & DEADMIN_ALWAYS)) + dat += " " + if(!CONFIG_GET(flag/auto_deadmin_antagonists)) + dat += "As Antag: [(deadmin & DEADMIN_ANTAGONIST)?"Deadmin":"Keep Admin"] " + else + dat += "As Antag: FORCED " + + if(!CONFIG_GET(flag/auto_deadmin_heads)) + dat += "As Command: [(deadmin & DEADMIN_POSITION_HEAD)?"Deadmin":"Keep Admin"] " + else + dat += "As Command: FORCED " + + if(!CONFIG_GET(flag/auto_deadmin_security)) + dat += "As Security: [(deadmin & DEADMIN_POSITION_SECURITY)?"Deadmin":"Keep Admin"] " + else + dat += "As Security: FORCED " + + if(!CONFIG_GET(flag/auto_deadmin_silicons)) + dat += "As Silicon: [(deadmin & DEADMIN_POSITION_SILICON)?"Deadmin":"Keep Admin"] " + else + dat += "As Silicon: FORCED " + + dat += " Citadel Preferences" //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. + dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]" + dat += "Long strip menu: [long_strip_menu ? "Enabled" : "Disabled"] " + dat += "Auto stand: [autostand ? "Enabled" : "Disabled"] " + dat += "Auto OOC: [auto_ooc ? "Enabled" : "Disabled"] " + dat += "Force Slot Storage HUD: [no_tetris_storage ? "Enabled" : "Disabled"] " + dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")] " + if (user && user.client && !user.client.prefs.screenshake==0) + dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")] " + dat += "Recoil Screen Push: [(recoil_screenshake==100) ? "Full" : ((recoil_screenshake==0) ? "None" : "[screenshake]")] " + var/p_chaos + if (!preferred_chaos) + p_chaos = "No preference" + else + p_chaos = preferred_chaos + dat += "Preferred Chaos Amount: [p_chaos] " + + dat += " S.P.L.U.R.T. Preferences" + dat += "Be Antagonist Victim: [be_victim ? be_victim : BEVICTIM_ASK]" + dat += "Disable combat mode cursor: [disable_combat_cursor?"Yes":"No"] " + dat += "Splashscreen Player Panel Style: [(toggles & TG_PLAYER_PANEL)?"TG":"Old"] " + dat += "Character Creation Menu Style: [new_character_creator ? "New" : "Old"] " + dat += " " + + dat += " | "
+ dat += "
| Name | " + dat += "Cost | " + dat += "Restrictions | " + dat += "Description |
| [name][extra_loadout_data] | " + dat += "[gear.cost] | " + if(islist(gear.restricted_roles)) + if(gear.restricted_roles.len) + if(gear.restricted_desc) + dat += "" + dat += gear.restricted_desc + dat += "" + else + dat += "" + dat += gear.restricted_roles.Join(";") + dat += "" + if(!istype(gear, /datum/gear/unlockable)) + // the below line essentially means "if the loadout item is picked by the user and has a custom description, give it the custom description, otherwise give it the default description" + dat += " | [loadout_item ? (loadout_item[LOADOUT_CUSTOM_DESCRIPTION] ? loadout_item[LOADOUT_CUSTOM_DESCRIPTION] : gear.description) : gear.description] | [loadout_item ? (loadout_item[LOADOUT_CUSTOM_DESCRIPTION] ? loadout_item[LOADOUT_CUSTOM_DESCRIPTION] : gear.description) : gear.description] Progress: [min(progress_made, unlockable.progress_required)]/[unlockable.progress_required] | " + + dat += "
"
+ dat += "Fetish content prefs" + dat += "Allow Lewd Verbs: [(toggles & VERB_CONSENT) ? "Yes":"No"]" // Skyrat - ERP Mechanic Addition + dat += "Mute Lewd Verb Sounds: [(toggles & LEWD_VERB_SOUNDS) ? "Yes":"No"] " // Skyrat - ERP Mechanic Addition + dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"] " + dat += "Genital examine text:[(cit_toggles & GENITAL_EXAMINE) ? "Enabled" : "Disabled"] " + dat += "Vore examine text:[(cit_toggles & VORE_EXAMINE) ? "Enabled" : "Disabled"] " + dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"] " + dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"] " + dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"] " + dat += "Allow trash forcefeeding (requires Trashcan quirk) [(cit_toggles & TRASH_FORCEFEED) ? "Yes" : "No"] " + dat += "Forced Feminization: [(cit_toggles & FORCED_FEM) ? "Allowed" : "Disallowed"] " + dat += "Forced Masculinization: [(cit_toggles & FORCED_MASC) ? "Allowed" : "Disallowed"] " + dat += "Lewd Hypno: [(cit_toggles & HYPNO) ? "Allowed" : "Disallowed"] " + dat += "Bimbofication: [(cit_toggles & BIMBOFICATION) ? "Allowed" : "Disallowed"] " + dat += " | "
+ dat +=""
+ dat += "Other content prefs" + dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]" + dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"] " + dat += "Butt Enlargement: [(cit_toggles & BUTT_ENLARGEMENT) ? "Allowed" : "Disallowed"] " + dat += "Belly Inflation: [(cit_toggles & BELLY_INFLATION) ? "Allowed" : "Disallowed"] " + dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"] " + dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"] " + dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"] " + //SPLURT EDIT + dat += "? " + dat += "Unholy ERP verbs : [unholypref] " //https://www.youtube.com/watch?v=OHKARc-GObU + //END OF SPLURT EDIT + //SKYRAT EDIT + dat += "? " + dat += "Extreme ERP verbs : [extremepref] " // https://youtu.be/0YrU9ASVw6w + if(extremepref != "No") + dat += "? " + dat += "Harmful ERP verbs : [extremeharm] " + //END OF SKYRAT EDIT + dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disabled" : "Enabled"] " + dat += "? " + dat += "Genital Fluid Blacklist " + if(gfluid_blacklist?.len) + dat += "? " + dat += "Genital Fluid Un-Blacklist " + dat += " |