diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index f3b6020b051..c04b57241c7 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -617,6 +617,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CHEF_KISS "chefs_kiss" /// Allows clowns to bend balloons into animals #define TRAIT_BALLOON_SUTRA "balloon_sutra" +/// Allows detectives to identify chemicals by taste +#define TRAIT_DETECTIVES_TASTE "detectives_taste" ///Movement type traits for movables. See elements/movetype_handler.dm #define TRAIT_MOVE_GROUND "move_ground" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 87092adcff0..3d01e86d17e 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -184,6 +184,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA, "TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED, "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, + "TRAIT_DETECTIVES_TASTE" = TRAIT_DETECTIVES_TASTE, "TRAIT_DETECT_STORM" = TRAIT_DETECT_STORM, "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, "TRAIT_DISCOORDINATED_TOOL_USER" = TRAIT_DISCOORDINATED_TOOL_USER, diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 0ed502b2529..00bd8790d9b 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -73,6 +73,8 @@ ) implants = list(/obj/item/implant/mindshield) + skillchips = list(/obj/item/skillchip/job/detectives_taste) + /datum/outfit/job/detective/pre_equip(mob/living/carbon/human/human, visualsOnly = FALSE) . = ..() if (human.age < AGE_MINOR) diff --git a/code/modules/library/skill_learning/job_skillchips/detective.dm b/code/modules/library/skill_learning/job_skillchips/detective.dm new file mode 100644 index 00000000000..427b8566e7e --- /dev/null +++ b/code/modules/library/skill_learning/job_skillchips/detective.dm @@ -0,0 +1,9 @@ +/obj/item/skillchip/job/detectives_taste + name = "DET.ekt skillchip" + desc = "Detective \"Encyclopedic Knowledge of Tastes\" v1.21" + auto_traits = list(TRAIT_DETECTIVES_TASTE) + skill_name = "Detective's Taste" + skill_description = "Deduce the minute chemical compositions of any liquid substance just by swishing it around your mouth for a bit." + skill_icon = "vial" + activate_message = span_notice("An explosion of flavors hit your mouth as you remember the secret tastebuds long forgotten.") + deactivate_message = span_notice("Your mouth dulls to the hidden tastes of the world.") diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 11947c70602..576d62585f7 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -250,7 +250,9 @@ Primarily used in reagents/reaction_agents /// Should return a associative list where keys are taste descriptions and values are strength ratios /datum/reagent/proc/get_taste_description(mob/living/taster) - return list("[taste_description]" = 1) + if(isnull(taster) || !HAS_TRAIT(taster, TRAIT_DETECTIVES_TASTE)) + return list("[taste_description]" = 1) + return list("[LOWER_TEXT(name)]" = 1) /** * Used when you want the default reagents purity to be equal to the normal effects diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index df14037ac1e..77205b57792 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -127,6 +127,16 @@ if(data["blood_DNA"]) bloodsplatter.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) +/datum/reagent/blood/get_taste_description(mob/living/taster) + if(isnull(taster)) + return ..() + if(!HAS_TRAIT(taster, TRAIT_DETECTIVES_TASTE)) + return ..() + var/blood_type = data?["blood_type"] + if(!blood_type) + return ..() + return list("[blood_type] type blood" = 1) + /datum/reagent/consumable/liquidgibs name = "Liquid Gibs" color = "#CC4633" diff --git a/tgstation.dme b/tgstation.dme index 495382a09bd..f65ae96a779 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4400,6 +4400,7 @@ #include "code\modules\library\skill_learning\job_skillchips\_job.dm" #include "code\modules\library\skill_learning\job_skillchips\chef.dm" #include "code\modules\library\skill_learning\job_skillchips\clown.dm" +#include "code\modules\library\skill_learning\job_skillchips\detective.dm" #include "code\modules\library\skill_learning\job_skillchips\janitor.dm" #include "code\modules\library\skill_learning\job_skillchips\miner.dm" #include "code\modules\library\skill_learning\job_skillchips\psychologist.dm"