From 8317e7f72acbb4462c91902af3c60adc673f8d63 Mon Sep 17 00:00:00 2001
From: faaaay <69845288+faaaay@users.noreply.github.com>
Date: Sat, 4 Dec 2021 02:34:46 +0000
Subject: [PATCH] Personal space quirk (#8230)
* replaces "iron ass" trait with "personal space"
* ass-slapping with the personalspace trait now also checks for combat mode
* re-adds Iron Ass for Player ChoiceTM
* minor punctuation fix + added to trait description
* fixes ironass value
* add checks for counterattacks
* Update code/modules/mob/living/carbon/carbon_defense.dm
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Update modular_skyrat/master_files/code/datums/traits/neutral.dm
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Update code/__DEFINES/~skyrat_defines/traits.dm
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Update modular_skyrat/master_files/code/datums/traits/neutral.dm
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* reremoves Iron Ass
* replaces magic numbers with defs
* remove TRAIT_IRONASS
* removes IRON_ASS check from carbon_defense
* Let's get this over with
* Of course I had to forget some of them...
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
---
code/__DEFINES/~skyrat_defines/traits.dm | 2 +-
.../mob/living/carbon/carbon_defense.dm | 34 +++++++++++++------
.../code/datums/traits/neutral.dm | 14 ++++----
3 files changed, 31 insertions(+), 19 deletions(-)
diff --git a/code/__DEFINES/~skyrat_defines/traits.dm b/code/__DEFINES/~skyrat_defines/traits.dm
index 74b1f61949a..958020cd995 100644
--- a/code/__DEFINES/~skyrat_defines/traits.dm
+++ b/code/__DEFINES/~skyrat_defines/traits.dm
@@ -3,7 +3,7 @@
#define TRAIT_NORUNNING "norunning" // You walk!
#define TRAIT_EXCITABLE "wagwag" //Will wag when patted!
#define TRAIT_OXYIMMUNE "oxyimmune" // Immune to oxygen damage, ideally give this to all non-breathing species or bad stuff will happen
-#define TRAIT_IRONASS "ironass"
+#define TRAIT_PERSONALSPACE "personalspace" // Block/counter-attack ass-slaps
#define TRAIT_MOOD_NOEXAMINE "mood_noexamine" // Can't assess your own mood
#define TRAIT_DNR "cant_revive" //You just can't be revived without supernatural means
#define TRAIT_HARD_SOLES "hard_soles" // No step on glass
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index d4c5fd1dcf4..7b6bb7928b1 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -1,4 +1,6 @@
#define SHAKE_ANIMATION_OFFSET 4
+#define PERSONAL_SPACE_DAMAGE 2
+#define ASS_SLAP_EXTRA_RANGE -1
/mob/living/carbon/get_eye_protection()
. = ..()
@@ -269,19 +271,27 @@
return
//SKYRAT EDIT ADDITION BEGIN - EMOTES
if(zone_selected == BODY_ZONE_PRECISE_GROIN && target.dir == src.dir)
- if(HAS_TRAIT(target, TRAIT_IRONASS))
- var/obj/item/bodypart/affecting = src.get_bodypart("[(src.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
- if(affecting?.receive_damage(2))
- src.update_damage_overlays()
- visible_message("[src] tried slapping [target]'s ass, however it was much harder than expected!",
- "You tried slapping [target]'s ass, but it felt like metal, ouch!",\
- "You hear a sore sounding slap.", ignored_mobs = list(target))
- playsound(target.loc, 'sound/effects/snap.ogg', 50, TRUE, -1)
- to_chat(target, "[src] tried slapping your ass, but it was deflected!")
- return
+ if(HAS_TRAIT(target, TRAIT_PERSONALSPACE) && (target.stat != UNCONSCIOUS) && (!target.handcuffed)) //You need to be conscious and uncuffed to use Personal Space
+ if(target.combat_mode && (!HAS_TRAIT(target, TRAIT_PACIFISM))) //Being pacified prevents violent counters
+ var/obj/item/bodypart/affecting = src.get_bodypart(BODY_ZONE_HEAD)
+ if(affecting?.receive_damage(PERSONAL_SPACE_DAMAGE))
+ src.update_damage_overlays()
+ visible_message(span_danger("[src] tried slapping [target]'s ass, but they were slapped instead!"),
+ span_danger("You tried slapping [target]'s ass, but they hit you back, ouch!"),
+ "You hear a slap.", ignored_mobs = list(target))
+ playsound(target.loc, 'sound/effects/snap.ogg', 50, TRUE, ASS_SLAP_EXTRA_RANGE)
+ to_chat(target, span_danger("[src] tried slapping your ass, but you hit them back!"))
+ return
+ else
+ visible_message(span_danger("[src] tried slapping [target]'s ass, but they were blocked!"),
+ span_danger("You tried slapping [target]'s ass, but they blocked you!"),
+ "You hear a slap.", ignored_mobs = list(target))
+ playsound(target.loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, ASS_SLAP_EXTRA_RANGE)
+ to_chat(target, span_danger("[src] tried slapping your ass, but you blocked them!"))
+ return
else
do_ass_slap_animation(target)
- playsound(target.loc, 'sound/weapons/slap.ogg', 50, TRUE, -1)
+ playsound(target.loc, 'sound/weapons/slap.ogg', 50, TRUE, ASS_SLAP_EXTRA_RANGE)
visible_message("[src] slaps [target] right on the ass!",\
"You slap [target] on the ass, how satisfying.",\
"You hear a slap.", ignored_mobs = list(target))
@@ -784,3 +794,5 @@
return TRUE
#undef SHAKE_ANIMATION_OFFSET
+#undef PERSONAL_SPACE_DAMAGE
+#undef ASS_SLAP_EXTRA_RANGE
diff --git a/modular_skyrat/master_files/code/datums/traits/neutral.dm b/modular_skyrat/master_files/code/datums/traits/neutral.dm
index 0c2b284c07a..249763af9a9 100644
--- a/modular_skyrat/master_files/code/datums/traits/neutral.dm
+++ b/modular_skyrat/master_files/code/datums/traits/neutral.dm
@@ -11,14 +11,14 @@
mob_trait = TRAIT_EXCITABLE
icon = "laugh-beam"
-/datum/quirk/ironass
- name = "Iron Ass"
- desc = "Your ass is incredibly firm, so firm infact that anyone slapping it will suffer grave injuries."
- gain_text = span_notice("Your ass feels solid!")
- lose_text = span_notice("Your ass doesn't feel so solid anymore.")
- medical_record_text = "Patient's ass seems incredibly solid."
+/datum/quirk/personalspace
+ name = "Personal Space"
+ desc = "You'd rather people keep their hands to themselves, and you won't let anyone touch your ass.."
+ gain_text = span_notice("You'd like it if people kept their hands off your ass.")
+ lose_text = span_notice("You're less concerned about people touching your ass.")
+ medical_record_text = "Patient demonstrates negative reactions to their posterior being touched."
value = 0
- mob_trait = TRAIT_IRONASS
+ mob_trait = TRAIT_PERSONALSPACE
icon = "hand-paper"
/datum/quirk/dnr