From e06a6da7ec81e419e9b543000a7fade85e44c805 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 9 Sep 2020 08:18:51 +0200 Subject: [PATCH] [MIRROR] adds trait injector mapping helper (#708) * adds trait injector mapping helper (#53473) adds trait injector mapping helper and updates the traits_by_type list thanks to anturk and mso * adds trait injector mapping helper Co-authored-by: Fikou --- code/__DEFINES/traits.dm | 1 + code/_globalvars/traits.dm | 49 ++++++++++++++++++++++-- code/modules/mapping/mapping_helpers.dm | 39 +++++++++++++++++++ icons/effects/mapping_helpers.dmi | Bin 16356 -> 16501 bytes 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 25fd070a663..656c2f1592a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -281,6 +281,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define CHOKEHOLD_TRAIT "chokehold" //trait associated to being held in a chokehold #define RESTING_TRAIT "resting" //trait associated to resting #define STAT_TRAIT "stat" //trait associated to a stat value or range of +#define MAPPING_HELPER_TRAIT "mapping-helper" //obtained from mapping helper // unique trait sources, still defines #define CLONING_POD_TRAIT "cloning-pod" diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index e3de3a9ae37..287d168c329 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -5,6 +5,11 @@ */ GLOBAL_LIST_INIT(traits_by_type, list( /mob = list( + "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, + "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, + "TRAIT_FLOORED" = TRAIT_FLOORED, + "TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED, + "TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION, "TRAIT_BLIND" = TRAIT_BLIND, "TRAIT_MUTE" = TRAIT_MUTE, "TRAIT_EMOTEMUTE " = TRAIT_EMOTEMUTE, @@ -24,8 +29,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH, "TRAIT_DISFIGURED" = TRAIT_DISFIGURED, "TRAIT_XENO_HOST" = TRAIT_XENO_HOST, - "TRAIT_STUNRESISTANCE" = TRAIT_STUNRESISTANCE, "TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE, + "TRAIT_STUNRESISTANCE" = TRAIT_STUNRESISTANCE, + "TRAIT_IWASBATONED" = TRAIT_IWASBATONED, "TRAIT_SLEEPIMMUNE" = TRAIT_SLEEPIMMUNE, "TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE, "TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE, @@ -53,6 +59,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT, "TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE, "TRAIT_EASYLIMBWOUND" = TRAIT_EASYLIMBWOUND, + "TRAIT_HARDLIMBWOUND" = TRAIT_HARDLIMBWOUND, "TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER, "TRAIT_NOBREATH" = TRAIT_NOBREATH, "TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC, @@ -96,29 +103,65 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD, "TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD, "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, + "TRAIT_TRAIT_MEDIBOTCOMINGTHROUGH" = TRAIT_MEDIBOTCOMINGTHROUGH, "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, "TRAIT_NOFLASH" = TRAIT_NOFLASH, "TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE, "TRAIT_NAIVE" = TRAIT_NAIVE, "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, + "TRAIT_SPECIAL_TRAUMA_BOOST" = TRAIT_SPECIAL_TRAUMA_BOOST, "TRAIT_BLOODCRAWL_EAT" = TRAIT_BLOODCRAWL_EAT, "TRAIT_SPACEWALK" = TRAIT_SPACEWALK, "TRAIT_GAMERGOD" = TRAIT_GAMERGOD, - "TRAIT_DWARF" = TRAIT_DWARF, "TRAIT_GIANT" = TRAIT_GIANT, + "TRAIT_DWARF" = TRAIT_DWARF, "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, "TRAIT_NICE_SHOT" = TRAIT_NICE_SHOT, "TRAIT_TUMOR_SUPPRESSION" = TRAIT_TUMOR_SUPPRESSED, - "TRAIT_PERMANENTLY_ONFIRE" = TRAIT_PERMANENTLY_ONFIRE + "TRAIT_PERMANENTLY_ONFIRE" = TRAIT_PERMANENTLY_ONFIRE, + "TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE" = TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE, + "TRAIT_WINE_TASTER" = TRAIT_WINE_TASTER, + "TRAIT_BONSAI" = TRAIT_BONSAI, + "TRAIT_LIGHTBULB_REMOVER" = TRAIT_LIGHTBULB_REMOVER, + "TRAIT_KNOW_CYBORG_WIRES" = TRAIT_KNOW_CYBORG_WIRES, + "TRAIT_KNOW_ENGI_WIRES" = TRAIT_KNOW_ENGI_WIRES, + "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, + "TRAIT_AGEUSIA" = TRAIT_AGEUSIA, + "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, + "TRAIT_NIGHT_VISION" = TRAIT_NIGHT_VISION, + "TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP, + "TRAIT_SPIRITUAL" = TRAIT_SPIRITUAL, + "TRAIT_FAN_CLOWN" = TRAIT_FAN_CLOWN, + "TRAIT_FAN_MIME" = TRAIT_FAN_MIME, + "TRAIT_VORACIOUS" = TRAIT_VORACIOUS, + "TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE, + "TRAIT_FREERUNNING" = TRAIT_FREERUNNING, + "TRAIT_SKITTISH" = TRAIT_SKITTISH, + "TRAIT_POOR_AIM" = TRAIT_POOR_AIM, + "TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA, + "TRAIT_DRUNK_HEALING" = TRAIT_DRUNK_HEALING, + "TRAIT_TAGGER" = TRAIT_TAGGER, + "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, + "TRAIT_MUSICIAN" = TRAIT_MUSICIAN, + "TRAIT_LIGHT_DRINKER" = TRAIT_LIGHT_DRINKER, + "TRAIT_EMPATH" = TRAIT_EMPATH, + "TRAIT_FRIENDLY" = TRAIT_FRIENDLY, + "TRAIT_GRABWEAKNESS" = TRAIT_GRABWEAKNESS, + "TRAIT_SNOB" = TRAIT_SNOB, + "TRAIT_BALD" = TRAIT_BALD ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS ), /obj/item = list( "TRAIT_NODROP" = TRAIT_NODROP, + "TRAIT_NO_STORAGE_INSERT" = TRAIT_NO_STORAGE_INSERT, "TRAIT_T_RAY_VISIBLE" = TRAIT_T_RAY_VISIBLE, "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT + ), + /atom = list( + "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER ) )) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 5a20bd34d76..cf3a2e8ba51 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -169,6 +169,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) //This helper applies components to things on the map directly. /obj/effect/mapping_helpers/component_injector name = "Component Injector" + icon_state = "component" late = TRUE var/all = FALSE //Will inject into all fitting the criteria if true, otherwise first found var/target_type //Will inject into atoms of this type @@ -380,3 +381,41 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) log_mapping("[src] at [x],[y] could not find an airlock on current turf, cannot place paper note.") qdel(src) +//This helper applies traits to things on the map directly. +/obj/effect/mapping_helpers/trait_injector + name = "Trait Injector" + icon_state = "trait" + late = TRUE + ///Will inject into all fitting the criteria if false, otherwise first found. + var/first_match_only = TRUE + ///Will inject into atoms of this type. + var/target_type + ///Will inject into atoms with this name. + var/target_name + ///Name of the trait, in the lower-case text (NOT the upper-case define) form. + var/trait_name + +//Late init so everything is likely ready and loaded (no warranty) +/obj/effect/mapping_helpers/trait_injector/LateInitialize() + if(!GLOB.trait_name_map) + GLOB.trait_name_map = generate_trait_name_map() + if(!GLOB.trait_name_map.Find(trait_name)) + CRASH("Wrong trait in [type] - [trait_name] is not a trait") + var/turf/target_turf = get_turf(src) + var/matches_found = 0 + for(var/a in target_turf.GetAllContents()) + var/atom/atom_on_turf = a + if(atom_on_turf == src) + continue + if(target_name && atom_on_turf.name != target_name) + continue + if(target_type && !istype(atom_on_turf,target_type)) + continue + ADD_TRAIT(atom_on_turf, trait_name, MAPPING_HELPER_TRAIT) + matches_found++ + if(first_match_only) + qdel(src) + return + if(!matches_found) + stack_trace("Trait mapper found no targets at ([x], [y], [z]). First Match Only: [first_match_only ? "true" : "false"] target type: [target_type] | target name: [target_name] | trait name: [trait_name]") + qdel(src) diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index d1feca89b360f434e4d89022d339ce49ea82bb8d..a1afaf1c724de5f46db44088d1abc3806ecea4fb 100644 GIT binary patch literal 16501 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�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%0DltWvu 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 A`v3p{