From c46e3209a1e4ffeea8f916df8ffa23c53fda6b14 Mon Sep 17 00:00:00 2001 From: Wallem <66052067+Wallemations@users.noreply.github.com> Date: Sun, 30 Jun 2024 16:46:15 -0400 Subject: [PATCH] Adds the DET.ekt Skillchip, upgrading the detective's sense of taste. (#84469) ## About The Pull Request Gives the Detective a roundstart skillchip which allows them to unlock the hidden potential of their tastebuds. With this, they can identify chemicals by taste, and even identify bloodtypes in the same way. ## Why It's Good For The Game ![IMG_4060](https://github.com/tgstation/tgstation/assets/66052067/c5c45939-9484-48aa-8488-86798c3c16ed) I've been watching a lot of detective stuff and I think it's really funny how often they stick their fingers into random goo/blood and taste/smell it. The idea of a detective chugging a glass of unidentified liquid to identify that there's a lethal chem mix in there is equally funny to me. Imagine you're recovering from a mugging in the medbay and the detective comes in, takes a blood sample from you, and downs it in one go. ## Changelog :cl: Wallem add: The detective now starts with the DET.ekt Skillchip, which allows them to identify chemicals and bloodtypes by taste. /:cl: --- code/__DEFINES/traits/declarations.dm | 2 ++ code/_globalvars/traits/_traits.dm | 1 + code/modules/jobs/job_types/detective.dm | 2 ++ .../library/skill_learning/job_skillchips/detective.dm | 9 +++++++++ code/modules/reagents/chemistry/reagents.dm | 4 +++- .../reagents/chemistry/reagents/other_reagents.dm | 10 ++++++++++ tgstation.dme | 1 + 7 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 code/modules/library/skill_learning/job_skillchips/detective.dm 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"