From 00d51e6e27f5af2b63d333d14e93fe11cc2aaf7c Mon Sep 17 00:00:00 2001 From: DBGit42 <149782698+DBGit42@users.noreply.github.com> Date: Wed, 22 Nov 2023 18:01:26 -0700 Subject: [PATCH] Adds Affection Aversion quirk (#25194) * 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 <13398309+vinylspiders@users.noreply.github.com> --- .../~skyrat_defines/traits/declarations.dm | 148 ++++++++++++++++++ code/_globalvars/traits/_traits.dm | 74 +++++++++ code/_globalvars/traits/admin_tooling.dm | 74 +++++++++ .../code/datums/traits/neutral.dm | 10 ++ .../modules/borgs/code/robot_upgrade.dm | 21 ++- 5 files changed, 320 insertions(+), 7 deletions(-) create mode 100644 code/__DEFINES/~skyrat_defines/traits/declarations.dm diff --git a/code/__DEFINES/~skyrat_defines/traits/declarations.dm b/code/__DEFINES/~skyrat_defines/traits/declarations.dm new file mode 100644 index 00000000000..9bda321330e --- /dev/null +++ b/code/__DEFINES/~skyrat_defines/traits/declarations.dm @@ -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 diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index d76376ded36..34ec53044f2 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -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. diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 388ea89cc7e..ad15a697f40 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -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. diff --git a/modular_skyrat/master_files/code/datums/traits/neutral.dm b/modular_skyrat/master_files/code/datums/traits/neutral.dm index e37161a1986..5f3fe059464 100644 --- a/modular_skyrat/master_files/code/datums/traits/neutral.dm +++ b/modular_skyrat/master_files/code/datums/traits/neutral.dm @@ -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 + icon = FA_ICON_CIRCLE_EXCLAMATION + /datum/quirk/personalspace name = "Personal Space" desc = "You'd rather people keep their hands off your rear end." diff --git a/modular_skyrat/modules/borgs/code/robot_upgrade.dm b/modular_skyrat/modules/borgs/code/robot_upgrade.dm index 2d0cb42c6c2..358ca96d73f 100644 --- a/modular_skyrat/modules/borgs/code/robot_upgrade.dm +++ b/modular_skyrat/modules/borgs/code/robot_upgrade.dm @@ -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 + 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 @@ -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 + 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