From 66e1ca16461fbbeb89aa51097d61a9fccef315c8 Mon Sep 17 00:00:00 2001 From: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Date: Fri, 1 Jan 2021 13:17:46 +1100 Subject: [PATCH] Clownlike creatures are now more consistent. #fix #honk #banana (#55603) * Bananium golems can wear clown shoes and are clumsy. Clownlike creatures, including clowns, bananium golems and clown ops, heal from bananas and bananahonk. Clown Ops also don't understand death, like real clowns! --- code/__DEFINES/traits.dm | 1 + code/_globalvars/traits.dm | 1 + code/modules/antagonists/nukeop/clownop.dm | 10 ++++++++++ code/modules/clothing/shoes/miscellaneous.dm | 1 + code/modules/jobs/job_types/clown.dm | 1 + .../mob/living/carbon/human/species_types/golems.dm | 1 + .../reagents/chemistry/reagents/alcohol_reagents.dm | 2 +- .../reagents/chemistry/reagents/drink_reagents.dm | 2 +- 8 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index c95f6a57d8a..d51405f7ade 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -129,6 +129,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_HUSK "husk" #define TRAIT_BADDNA "baddna" #define TRAIT_CLUMSY "clumsy" +#define TRAIT_CLOWNLIKE "clownlike" //for those creatures that are related to clowns, but not necessarily clumsy #define TRAIT_CHUNKYFINGERS "chunkyfingers" //means that you can't use weapons with normal trigger guards. #define TRAIT_DUMB "dumb" #define TRAIT_ADVANCEDTOOLUSER "advancedtooluser" //Whether a mob is dexterous enough to use machines and certain items or not. diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index b398a428ee3..f68f5e39c74 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -22,6 +22,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HUSK" = TRAIT_HUSK, "TRAIT_BADDNA" = TRAIT_BADDNA, "TRAIT_CLUMSY" = TRAIT_CLUMSY, + "TRAIT_CLOWNLIKE" = TRAIT_CLOWNLIKE, "TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS, "TRAIT_DUMB" = TRAIT_DUMB, "TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER, diff --git a/code/modules/antagonists/nukeop/clownop.dm b/code/modules/antagonists/nukeop/clownop.dm index 02b835da6a7..0c671502cc8 100644 --- a/code/modules/antagonists/nukeop/clownop.dm +++ b/code/modules/antagonists/nukeop/clownop.dm @@ -12,6 +12,16 @@ nukeop_outfit = /datum/outfit/syndicate/clownop/leader challengeitem = /obj/item/nuclear_challenge/clownops +/datum/antagonist/nukeop/clownop/apply_innate_effects(mob/living/mob_override) + var/mob/living/L = owner.current || mob_override + ADD_TRAIT(L, TRAIT_NAIVE, "clownop") + ADD_TRAIT(L, TRAIT_CLOWNLIKE, "clownop") + +/datum/antagonist/nukeop/clownop/remove_innate_effects(mob/living/mob_override) + var/mob/living/L = owner.current || mob_override + REMOVE_TRAIT(L, TRAIT_NAIVE, "clownop") + REMOVE_TRAIT(L, TRAIT_CLOWNLIKE, "clownop") + /datum/antagonist/nukeop/leader/clownop/give_alias() title = pick("Head Honker", "Slipmaster", "Clown King", "Honkbearer") if(nuke_team?.syndicate_name) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 243ee3edc60..40bfd5d3d1b 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -99,6 +99,7 @@ pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes/clown var/enabled_waddle = TRUE lace_time = 20 SECONDS // how the hell do these laces even work?? + species_exception = list(/datum/species/golem/bananium) /obj/item/clothing/shoes/clown_shoes/Initialize() . = ..() diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index e20c0384c6b..244d49b00d3 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -55,6 +55,7 @@ H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names)) //rename the mob AFTER they're equipped so their ID gets updated properly. ADD_TRAIT(H, TRAIT_NAIVE, JOB_TRAIT) + ADD_TRAIT(H, TRAIT_CLOWNLIKE, JOB_TRAIT) H.dna.add_mutation(CLOWNMUT) for(var/datum/mutation/human/clumsy/M in H.dna.mutations) M.mutadone_proof = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 77910a96686..62160eb5e25 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -532,6 +532,7 @@ id = "bananium golem" fixed_mut_color = "ff0" say_mod = "honks" + inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_CHUNKYFINGERS, TRAIT_CLUMSY, TRAIT_CLOWNLIKE, TRAIT_RADIMMUNE,TRAIT_GENELESS,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) punchdamagelow = 0 punchdamagehigh = 1 punchstunthreshold = 2 //Harmless and can't stun diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 1af7487fb76..77a67546dec 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1203,7 +1203,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "A drink from Clown Heaven." /datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M) - if((ishuman(M) && M.job == "Clown") || ismonkey(M)) + if((ishuman(M) && HAS_TRAIT(M, TRAIT_CLOWNLIKE)) || ismonkey(M)) M.heal_bodypart_damage(1,1) . = 1 return ..() || . diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index d763de16a5c..c90dde33d7d 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -127,7 +127,7 @@ glass_desc = "The raw essence of a banana. HONK." /datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M) - if((ishuman(M) && M.job == "Clown") || ismonkey(M)) + if((ishuman(M) && HAS_TRAIT(M, TRAIT_CLOWNLIKE)) || ismonkey(M)) M.heal_bodypart_damage(1,1, 0) . = 1 ..()