Skip to content

Commit

Permalink
Adds Affection Aversion quirk (#25194)
Browse files Browse the repository at this point in the history
* Adds Affection Aversion quirk

Stops affection modules. Very simple.

* I hate you, github

May or may not do anything. Stop giving me a merge conflict. Stop it.

* Revert "I hate you, github"

This reverts commit 6515023cc3f72d97d90bbdf982857b1d2724b1cf.

* Attempts to revert traits.dm

Because something went TERRIBLY wrong with my fork and/or my editor and I'm not sure why.

* Added quirk proper now that my fork is unfucked

Why did this even happen?

* These lists are alphabetized

* Same here

---------

Co-authored-by: Bloop <[email protected]>
  • Loading branch information
2 people authored and FFMirrorBot committed Nov 23, 2023
1 parent 1a0da8f commit 00d51e6
Show file tree
Hide file tree
Showing 5 changed files with 320 additions and 7 deletions.
148 changes: 148 additions & 0 deletions code/__DEFINES/~skyrat_defines/traits/declarations.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
// This file contains all of the "static" define strings that tie to a trait.
// WARNING: The sections here actually matter in this file as it's tested by CI. Please do not toy with the sections."

// BEGIN TRAIT DEFINES

/*
Remember to update _globalvars/traits.dm if you're adding/removing/renaming traits.
*/

//mob traits

// Defines for some extra traits
#define TRAIT_NO_HUSK "no_husk"
#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_AFFECTION_AVERSION "affection_aversion" // No more dogborg licking. "Dogborg bad" is no longer a personality
#define TRAIT_PERSONALSPACE "personalspace" // Block/counter-attack ass-slaps
#define TRAIT_MOOD_NOEXAMINE "mood_noexamine" // Can't assess your own mood
#define TRAIT_DNR "do_not_revive" // Can't be revived without supernatural means or admin intervention
#define TRAIT_HARD_SOLES "hard_soles" // No step on glass
#define TRAIT_SENSITIVESNOUT "sensitive_snout" // Snout hurts when booped
#define TRAIT_DETECTIVE "detective_ability" //Given to the detective, if they have this, they can see syndicate special descriptions.
#define TRAIT_FREE_GHOST "free_ghost" // Can ghost and return freely with this trait
#define TRAIT_GLOVES "gloves_trait" //Traits associated with wearing gloves
#define TRAIT_LINGUIST "Linguist" // Extra language point.
#define TRAIT_GLUED_ITEM "glued-item" // This is for glued items, undroppable. Syndie glue applies this.
#define TRAIT_STICKY_FINGERS "sticky_fingers" //This is so a mob can strip items faster and picks them up after
/// This makes trait makes it so that the person cannot be infected by the zombie virus.
#define TRAIT_MUTANT_IMMUNE "mutant_immune"
#define TRAIT_HYDRA_HEADS "hydrahead"

/// adds -6 quirk to negative quirks for free points.
#define TRAIT_GIFTED "gifted"

//AdditionalEmotes *turf traits
#define TRAIT_WATER_ASPECT "water_aspect"
#define TRAIT_WEBBING_ASPECT "webbing_aspect"
#define TRAIT_FLORAL_ASPECT "floral_aspect"
#define TRAIT_ASH_ASPECT "ash_aspect"
#define TRAIT_SPARKLE_ASPECT "sparkle_aspect"

/// Allows the user to instantly reload.
#define TRAIT_INSTANT_RELOAD "instant_reload"

// Trait sources
#define TRAIT_GHOSTROLE "ghostrole" // SKYRAT EDIT ADDITION -- Ghost Cafe Traits

/// One can breath under water, you get me?
#define TRAIT_WATER_BREATHING "water_breathing"

/// The trait which Akulas inherit, for their species mechanic revolving around wet_stacks
#define TRAIT_SLICK_SKIN "slick_skin"
/// The trait which is applied when a `slick skin` trait haver actually gets wet_stacks
#define TRAIT_SLIPPERY "slippery"

/// Under the effect of a numbling agent, such as morphine, for surgery.
#define TRAIT_NUMBED "numbed"

// felinid traits
#define TRAIT_FELINE "feline_aspect"

// canine traits
#define TRAIT_CANINE "canine_aspect"

// avian traits
#define TRAIT_AVIAN "avian_aspect"

// chameleon mutation
#define TRAIT_CHAMELEON_SKIN "chameleon_skin"

//Makes sure that people cant be cult sacrificed twice.
#define TRAIT_SACRIFICED "sacrificed"

/// The trait that determines if someone has the oversized quirk.
#define TRAIT_OVERSIZED "trait_oversized"

/// Cargo Loader trait
#define TRAIT_TRASHMAN "trait_trashman"

/// Trait source for xeno innate abilities
#define TRAIT_XENO_INNATE "xeno_innate"
/// Trait source for something added BY a xeno ability
#define TRAIT_XENO_ABILITY_GIVEN "xeno_ability_given"
/// Determines if something can receive healing from a xeno
#define TRAIT_XENO_HEAL_AURA "trait_xeno_heal_aura"

/// Trait that was granted by a reagent.
#define TRAIT_REAGENT "reagent"

/// trait that lets you do flips with a style meter
#define TRAIT_STYLISH "stylish"

/// trait that lets you do xenoarch magnification
#define TRAIT_XENOARCH_QUALIFIED "trait_xenoarch_qualified"

/// Traits granted by glassblowing
#define TRAIT_GLASSBLOWING "glassblowing"

/// Trait that is applied whenever someone or something is glassblowing
#define TRAIT_CURRENTLY_GLASSBLOWING "currently_glassblowing"

/// Trait that was granted by a NIFSoft
#define TRAIT_NIFSOFT "nifsoft"

/// Trait given to a piece of eyewear that allows the user to use NIFSoft HUDs
#define TRAIT_NIFSOFT_HUD_GRANTER "nifsoft_hud_granter"

/// Trait given to a brain that is able to accept souls from a RSD
#define TRAIT_RSD_COMPATIBLE "rsd_compatible"

// Defines for some extra inherent traits
#define TRAIT_REVIVES_BY_HEALING "trait_revives_by_healing"
#define TRAIT_ROBOTIC_DNA_ORGANS "trait_robotic_dna_organs"

//Defines for model features, set in the model_features list of a robot model datum. Are they a dogborg? Is the model small? etc.
/// Cyborgs with unique sprites for when they get totally broken down.
#define TRAIT_R_UNIQUEWRECK "unique_wreck"
/// Or when tipped over.
#define TRAIT_R_UNIQUETIP "unique_tip"
/// 64x32 skins
#define TRAIT_R_WIDE "wide_borg"
/// 32x64 skins
#define TRAIT_R_TALL "tall_borg"
/// Any model small enough to reject the shrinker upgrade.
#define TRAIT_R_SMALL "small_chassis"
/// Any model that has a custom front panel
#define TRAIT_R_UNIQUEPANEL "unique_openpanel"

// Lewd traits
#define TRAIT_MASOCHISM "masochism"
#define TRAIT_SADISM "sadism"
#define TRAIT_NEVERBONER "neverboner"
#define TRAIT_BIMBO "bimbo"
#define TRAIT_RIGGER "rigger"
#define TRAIT_ROPEBUNNY "rope bunny"
///traits gained by brain traumas, can be removed if the brain trauma is gone
#define TRAIT_APHRO "aphro"
///traits gained by quirks, cannot be removed unless the quirk itself is gone
#define TRAIT_LEWDQUIRK "lewdquirks"
///traits gained by chemicals, you get the idea
#define TRAIT_LEWDCHEM "lewdchem"

#define TRAIT_STRAPON "strapon"

#define TRAIT_CONDOM_BROKEN "broken"

// END TRAIT DEFINES
74 changes: 74 additions & 0 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,80 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_TURF_IGNORE_SLIPPERY" = TRAIT_TURF_IGNORE_SLIPPERY,
"TRAIT_TURF_IGNORE_SLOWDOWN" = TRAIT_TURF_IGNORE_SLOWDOWN,
),
<<<<<<< HEAD
=======
// SKYRAT EDIT ADDITION START - SKYRAT TRAITS
/obj/item/toy/plush/skyrat = list(
"TRAIT_AFFECTION_AVERSION" = TRAIT_AFFECTION_AVERSION,
"TRAIT_APHRO" = TRAIT_APHRO,
"TRAIT_AVIAN" = TRAIT_AVIAN,
"TRAIT_ASH_ASPECT" = TRAIT_ASH_ASPECT,
"TRAIT_BIMBO" = TRAIT_BIMBO,
"TRAIT_CANINE" = TRAIT_CANINE,
"TRAIT_CHAMELEON_SKIN" = TRAIT_CHAMELEON_SKIN,
"TRAIT_CONDOM_BROKEN" = TRAIT_CONDOM_BROKEN,
"TRAIT_CURRENTLY_GLASSBLOWING" = TRAIT_CURRENTLY_GLASSBLOWING,
"TRAIT_DETECTIVE" = TRAIT_DETECTIVE,
"TRAIT_DNR" = TRAIT_DNR,
"TRAIT_EXCITABLE" = TRAIT_EXCITABLE,
"TRAIT_FELINE" = TRAIT_FELINE,
"TRAIT_FLORAL_ASPECT" = TRAIT_FLORAL_ASPECT,
"TRAIT_FREE_GHOST" = TRAIT_FREE_GHOST,
"TRAIT_GHOSTROLE" = TRAIT_GHOSTROLE,
"TRAIT_GIFTED" = TRAIT_GIFTED,
"TRAIT_GLASSBLOWING" = TRAIT_GLASSBLOWING,
"TRAIT_GLOVES" = TRAIT_GLOVES,
"TRAIT_GLUED_ITEM" = TRAIT_GLUED_ITEM,
"TRAIT_HARD_SOLES" = TRAIT_HARD_SOLES,
"TRAIT_HYDRA_HEADS" = TRAIT_HYDRA_HEADS,
"TRAIT_INSTANT_RELOAD" = TRAIT_INSTANT_RELOAD,
"TRAIT_LINGUIST" = TRAIT_LINGUIST,
"TRAIT_LEWDCHEM" = TRAIT_LEWDCHEM,
"TRAIT_LEWDQUIRK" = TRAIT_LEWDQUIRK,
"TRAIT_MASOCHISM" = TRAIT_MASOCHISM,
"TRAIT_MOOD_NOEXAMINE" = TRAIT_MOOD_NOEXAMINE,
"TRAIT_MUTANT_IMMUNE" = TRAIT_MUTANT_IMMUNE,
"TRAIT_NEVERBONER" = TRAIT_NEVERBONER,
"TRAIT_NIFSOFT" = TRAIT_NIFSOFT,
"TRAIT_NIFSOFT_HUD_GRANTER" = TRAIT_NIFSOFT_HUD_GRANTER,
"TRAIT_NO_HUSK" = TRAIT_NO_HUSK,
"TRAIT_NORUNNING" = TRAIT_NORUNNING,
"TRAIT_NUMBED" = TRAIT_NUMBED,
"TRAIT_OVERSIZED" = TRAIT_OVERSIZED,
"TRAIT_OXYIMMUNE" = TRAIT_OXYIMMUNE,
"TRAIT_PERSONALSPACE" = TRAIT_PERSONALSPACE,
"TRAIT_R_UNIQUEWRECK" = TRAIT_R_UNIQUEWRECK,
"TRAIT_R_UNIQUETIP" = TRAIT_R_UNIQUETIP,
"TRAIT_R_WIDE" = TRAIT_R_WIDE,
"TRAIT_R_TALL" = TRAIT_R_TALL,
"TRAIT_R_SMALL" = TRAIT_R_SMALL,
"TRAIT_R_UNIQUEPANEL" = TRAIT_R_UNIQUEPANEL,
"TRAIT_REAGENT" = TRAIT_REAGENT,
"TRAIT_REVIVES_BY_HEALING" = TRAIT_REVIVES_BY_HEALING,
"TRAIT_RIGGER" = TRAIT_RIGGER,
"TRAIT_ROBOTIC_DNA_ORGANS" = TRAIT_ROBOTIC_DNA_ORGANS,
"TRAIT_ROPEBUNNY" = TRAIT_ROPEBUNNY,
"TRAIT_RSD_COMPATIBLE" = TRAIT_RSD_COMPATIBLE,
"TRAIT_SACRIFICED" = TRAIT_SACRIFICED ,
"TRAIT_SADISM" = TRAIT_SADISM,
"TRAIT_SENSITIVESNOUT" = TRAIT_SENSITIVESNOUT,
"TRAIT_SLICK_SKIN" = TRAIT_SLICK_SKIN,
"TRAIT_SLIPPERY" = TRAIT_SLIPPERY,
"TRAIT_SPARKLE_ASPECT" = TRAIT_SPARKLE_ASPECT,
"TRAIT_STICKY_FINGERS" = TRAIT_STICKY_FINGERS,
"TRAIT_STRAPON" = TRAIT_STRAPON,
"TRAIT_STYLISH" = TRAIT_STYLISH,
"TRAIT_TRASHMAN" = TRAIT_TRASHMAN,
"TRAIT_WATER_ASPECT" = TRAIT_WATER_ASPECT,
"TRAIT_WATER_BREATHING" = TRAIT_WATER_BREATHING,
"TRAIT_WEBBING_ASPECT" = TRAIT_WEBBING_ASPECT,
"TRAIT_XENO_ABILITY_GIVEN" = TRAIT_XENO_ABILITY_GIVEN,
"TRAIT_XENOARCH_QUALIFIED" = TRAIT_XENOARCH_QUALIFIED,
"TRAIT_XENO_HEAL_AURA" = TRAIT_XENO_HEAL_AURA,
"TRAIT_XENO_INNATE" = TRAIT_XENO_INNATE,
),
// SKYRAT EDIT ADDITION END
>>>>>>> 800ad77ed (Adds Affection Aversion quirk (#25194))
))

/// value -> trait name, list of ALL traits that exist in the game, used for any type of accessing.
Expand Down
74 changes: 74 additions & 0 deletions code/_globalvars/traits/admin_tooling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,80 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
/obj/item/organ/internal/lungs = list(
"TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING,
),
<<<<<<< HEAD
=======
// SKYRAT EDIT ADDITION START - SKYRAT TRAITS
/obj/item/toy/plush/skyrat = list(
"TRAIT_AFFECTION_AVERSION" = TRAIT_AFFECTION_AVERSION,
"TRAIT_APHRO" = TRAIT_APHRO,
"TRAIT_AVIAN" = TRAIT_AVIAN,
"TRAIT_ASH_ASPECT" = TRAIT_ASH_ASPECT,
"TRAIT_BIMBO" = TRAIT_BIMBO,
"TRAIT_CANINE" = TRAIT_CANINE,
"TRAIT_CHAMELEON_SKIN" = TRAIT_CHAMELEON_SKIN,
"TRAIT_CONDOM_BROKEN" = TRAIT_CONDOM_BROKEN,
"TRAIT_CURRENTLY_GLASSBLOWING" = TRAIT_CURRENTLY_GLASSBLOWING,
"TRAIT_DETECTIVE" = TRAIT_DETECTIVE,
"TRAIT_DNR" = TRAIT_DNR,
"TRAIT_EXCITABLE" = TRAIT_EXCITABLE,
"TRAIT_FELINE" = TRAIT_FELINE,
"TRAIT_FLORAL_ASPECT" = TRAIT_FLORAL_ASPECT,
"TRAIT_FREE_GHOST" = TRAIT_FREE_GHOST,
"TRAIT_GHOSTROLE" = TRAIT_GHOSTROLE,
"TRAIT_GIFTED" = TRAIT_GIFTED,
"TRAIT_GLASSBLOWING" = TRAIT_GLASSBLOWING,
"TRAIT_GLOVES" = TRAIT_GLOVES,
"TRAIT_GLUED_ITEM" = TRAIT_GLUED_ITEM,
"TRAIT_HARD_SOLES" = TRAIT_HARD_SOLES,
"TRAIT_HYDRA_HEADS" = TRAIT_HYDRA_HEADS,
"TRAIT_INSTANT_RELOAD" = TRAIT_INSTANT_RELOAD,
"TRAIT_LINGUIST" = TRAIT_LINGUIST,
"TRAIT_LEWDCHEM" = TRAIT_LEWDCHEM,
"TRAIT_LEWDQUIRK" = TRAIT_LEWDQUIRK,
"TRAIT_MASOCHISM" = TRAIT_MASOCHISM,
"TRAIT_MOOD_NOEXAMINE" = TRAIT_MOOD_NOEXAMINE,
"TRAIT_MUTANT_IMMUNE" = TRAIT_MUTANT_IMMUNE,
"TRAIT_NEVERBONER" = TRAIT_NEVERBONER,
"TRAIT_NIFSOFT" = TRAIT_NIFSOFT,
"TRAIT_NIFSOFT_HUD_GRANTER" = TRAIT_NIFSOFT_HUD_GRANTER,
"TRAIT_NO_HUSK" = TRAIT_NO_HUSK,
"TRAIT_NORUNNING" = TRAIT_NORUNNING,
"TRAIT_NUMBED" = TRAIT_NUMBED,
"TRAIT_OVERSIZED" = TRAIT_OVERSIZED,
"TRAIT_OXYIMMUNE" = TRAIT_OXYIMMUNE,
"TRAIT_PERSONALSPACE" = TRAIT_PERSONALSPACE,
"TRAIT_R_UNIQUEWRECK" = TRAIT_R_UNIQUEWRECK,
"TRAIT_R_UNIQUETIP" = TRAIT_R_UNIQUETIP,
"TRAIT_R_WIDE" = TRAIT_R_WIDE,
"TRAIT_R_TALL" = TRAIT_R_TALL,
"TRAIT_R_SMALL" = TRAIT_R_SMALL,
"TRAIT_R_UNIQUEPANEL" = TRAIT_R_UNIQUEPANEL,
"TRAIT_REAGENT" = TRAIT_REAGENT,
"TRAIT_REVIVES_BY_HEALING" = TRAIT_REVIVES_BY_HEALING,
"TRAIT_RIGGER" = TRAIT_RIGGER,
"TRAIT_ROBOTIC_DNA_ORGANS" = TRAIT_ROBOTIC_DNA_ORGANS,
"TRAIT_ROPEBUNNY" = TRAIT_ROPEBUNNY,
"TRAIT_RSD_COMPATIBLE" = TRAIT_RSD_COMPATIBLE,
"TRAIT_SACRIFICED" = TRAIT_SACRIFICED ,
"TRAIT_SADISM" = TRAIT_SADISM,
"TRAIT_SENSITIVESNOUT" = TRAIT_SENSITIVESNOUT,
"TRAIT_SLICK_SKIN" = TRAIT_SLICK_SKIN,
"TRAIT_SLIPPERY" = TRAIT_SLIPPERY,
"TRAIT_SPARKLE_ASPECT" = TRAIT_SPARKLE_ASPECT,
"TRAIT_STICKY_FINGERS" = TRAIT_STICKY_FINGERS,
"TRAIT_STRAPON" = TRAIT_STRAPON,
"TRAIT_STYLISH" = TRAIT_STYLISH,
"TRAIT_TRASHMAN" = TRAIT_TRASHMAN,
"TRAIT_WATER_ASPECT" = TRAIT_WATER_ASPECT,
"TRAIT_WATER_BREATHING" = TRAIT_WATER_BREATHING,
"TRAIT_WEBBING_ASPECT" = TRAIT_WEBBING_ASPECT,
"TRAIT_XENO_ABILITY_GIVEN" = TRAIT_XENO_ABILITY_GIVEN,
"TRAIT_XENOARCH_QUALIFIED" = TRAIT_XENOARCH_QUALIFIED,
"TRAIT_XENO_HEAL_AURA" = TRAIT_XENO_HEAL_AURA,
"TRAIT_XENO_INNATE" = TRAIT_XENO_INNATE,
),
// SKYRAT EDIT ADDITION END
>>>>>>> 800ad77ed (Adds Affection Aversion quirk (#25194))
))

/// value -> trait name, generated as needed for adminning.
Expand Down
10 changes: 10 additions & 0 deletions modular_skyrat/master_files/code/datums/traits/neutral.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
mob_trait = TRAIT_EXCITABLE
icon = FA_ICON_LAUGH_BEAM

/datum/quirk/affectionaversion
name = "Affection Aversion"
desc = "You refuse to be licked or nosed by quadruped cyborgs."
gain_text = span_notice("You've been added to the Do Not Lick and No Nosing registries.")
lose_text = span_notice("You've been removed from the Do Not Lick and No Nosing registries.")
medical_record_text = "Patient is in the Do Not Lick and No Nosing registries."
value = 0
mob_trait = TRAIT_AFFECTION_AVERSION

Check failure on line 32 in modular_skyrat/master_files/code/datums/traits/neutral.dm

View workflow job for this annotation

GitHub Actions / Run Linters

unknown variable: TRAIT_AFFECTION_AVERSION
icon = FA_ICON_CIRCLE_EXCLAMATION

/datum/quirk/personalspace
name = "Personal Space"
desc = "You'd rather people keep their hands off your rear end."
Expand Down
21 changes: 14 additions & 7 deletions modular_skyrat/modules/borgs/code/robot_upgrade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -354,12 +354,15 @@
var/mob/living/silicon/robot/borg = user
var/mob/living/mob = target

if(check_zone(borg.zone_selected) == "head")
borg.visible_message(span_warning("\the [borg] affectionally licks \the [mob]'s face!"), span_notice("You affectionally lick \the [mob]'s face!"))
playsound(borg, 'sound/effects/attackblob.ogg', 50, 1)
if(!HAS_TRAIT(target, TRAIT_AFFECTION_AVERSION)) // Checks for Affection Aversion trait

Check failure on line 357 in modular_skyrat/modules/borgs/code/robot_upgrade.dm

View workflow job for this annotation

GitHub Actions / Run Linters

undefined var: "TRAIT_AFFECTION_AVERSION"
if(check_zone(borg.zone_selected) == "head")
borg.visible_message(span_warning("\the [borg] affectionally licks \the [mob]'s face!"), span_notice("You affectionally lick \the [mob]'s face!"))
playsound(borg, 'sound/effects/attackblob.ogg', 50, 1)
else
borg.visible_message(span_warning("\the [borg] affectionally licks \the [mob]!"), span_notice("You affectionally lick \the [mob]!"))
playsound(borg, 'sound/effects/attackblob.ogg', 50, 1)
else
borg.visible_message(span_warning("\the [borg] affectionally licks \the [mob]!"), span_notice("You affectionally lick \the [mob]!"))
playsound(borg, 'sound/effects/attackblob.ogg', 50, 1)
to_chat(user, span_warning("ERROR: [target] is on the Do Not Lick registry!"))

// Quadruped nose - Boop
/obj/item/quadborg_nose
Expand All @@ -375,8 +378,12 @@
. = ..()
if(!proximity)
return
do_attack_animation(target, null, src)
user.visible_message(span_notice("[user] [pick("nuzzles", "pushes", "boops")] \the [target.name] with their nose!"))

if(!HAS_TRAIT(target, TRAIT_AFFECTION_AVERSION)) // Checks for Affection Aversion trait

Check failure on line 382 in modular_skyrat/modules/borgs/code/robot_upgrade.dm

View workflow job for this annotation

GitHub Actions / Run Linters

undefined var: "TRAIT_AFFECTION_AVERSION"
do_attack_animation(target, null, src)
user.visible_message(span_notice("[user] [pick("nuzzles", "pushes", "boops")] \the [target.name] with their nose!"))
else
to_chat(user, span_warning("ERROR: [target] is on the No Nosing registry!"))

/// The Shrinkening
/mob/living/silicon/robot
Expand Down

0 comments on commit 00d51e6

Please sign in to comment.