From ab5b06fadc9aef78a47f758433aaa8cb18ec5c64 Mon Sep 17 00:00:00 2001 From: Jacquerel Date: Thu, 23 Nov 2023 21:44:08 +0000 Subject: [PATCH] Adds INTJ skillchip (#79902) ## About The Pull Request Adds a new skillchip, it lets you taste food by examining it. ![image](https://github.com/tgstation/tgstation/assets/7483112/666ab42e-2918-43e5-835c-99c71a552325) This has all of the effects of tasting food (various moodlets based on quality and food type) and can also trigger food allergies if you have them, however it does not consume the food nor give you any nutritional benefit. You can buy it from a vendor or sometimes it spawns in maintenance. ## Why It's Good For The Game The players are constantly clamouring for more additions to our most loved and useful feature, skill chips.
![intj](https://github.com/tgstation/tgstation/assets/7483112/58de56aa-b4bc-48fc-8c22-fa9c7a74314b)
## Changelog :cl: add: A new skill chip can be found in maintenance or purchased from the vendor, allowing you to experience food in new and exciting ways. add: Abductors also have access to this incredible power, simply using their genius level brains. /:cl: --- code/__DEFINES/traits/declarations.dm | 3 +++ code/_globalvars/lists/maintenance_loot.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/datums/components/food/edible.dm | 10 ++++++++++ code/modules/library/skill_learning/skillchip.dm | 9 +++++++++ code/modules/mob/living/brain/brain_item.dm | 1 + .../living/carbon/human/species_types/abductors.dm | 13 +++++++------ code/modules/power/supermatter/supermatter.dm | 11 +++++++++-- code/modules/reagents/reagent_containers.dm | 5 ++++- code/modules/vending/games.dm | 3 ++- 10 files changed, 47 insertions(+), 10 deletions(-) diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index f71295e2c63..95130514845 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -214,6 +214,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Added to mob or mind, changes the icons of the fish shown in the minigame UI depending on the possible reward. #define TRAIT_REVEAL_FISH "reveal_fish" +/// Added to a mob, allows that mob to experience flavour-based moodlets when examining food +#define TRAIT_REMOTE_TASTING "remote_tasting" + /// Stops the mob from slipping on water, or banana peels, or pretty much anything that doesn't have [GALOSHES_DONT_HELP] set #define TRAIT_NO_SLIP_WATER "noslip_water" /// Stops the mob from slipping on permafrost ice (not any other ice) (but anything with [SLIDE_ICE] set) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 50575d24b5b..c938fb4331c 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -351,6 +351,7 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items /obj/item/disk/nuclear/fake = 1, /obj/item/disk/surgery/advanced_plastic_surgery = 1, /obj/item/skillchip/brainwashing = 1, + /obj/item/skillchip/intj = 1, /obj/item/tattoo_kit = 1, /obj/item/folder/ancient_paperwork = 1, ) = 1, diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 0b59bd5a7ca..e4bc6e2dede 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -352,6 +352,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_REAGENT_SCANNER" = TRAIT_REAGENT_SCANNER, "TRAIT_RECENTLY_BLOCKED_MAGIC" = TRAIT_RECENTLY_BLOCKED_MAGIC, "TRAIT_RELAYING_ATTACKER" = TRAIT_RELAYING_ATTACKER, + "TRAIT_REMOTE_TASTING" = TRAIT_REMOTE_TASTING, "TRAIT_RESEARCH_SCANNER" = TRAIT_RESEARCH_SCANNER, "TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD, "TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT, diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 1e724f0e404..9986b2a4d43 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -264,6 +264,16 @@ Behavior that's still missing from this component that original food items had t for(var/datum/reagent/reagent as anything in owner.reagents.reagent_list) examine_list += span_notice("- [reagent.name] [reagent.volume]u: [round(reagent.purity * 100)]% pure") + if(!HAS_TRAIT(user, TRAIT_REMOTE_TASTING)) + return + var/fraction = min(bite_consumption / owner.reagents.total_volume, 1) + checkLiked(fraction, user) + if (!owner.reagents.get_reagent_amount(/datum/reagent/consumable/salt)) + examine_list += span_notice("It could use a little more Sodium Chloride...") + if (isliving(user)) + var/mob/living/living_user = user + living_user.taste(owner.reagents) + /datum/component/edible/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user) SIGNAL_HANDLER diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index e207a7a8e14..5d40d383fb0 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -498,4 +498,13 @@ activate_message = span_notice("You feel the knowledge and passion of several sunbaked, seasoned fishermen burn within you.") deactivate_message = span_notice("You no longer feel like casting a fishing rod by the sunny riverside.") +/obj/item/skillchip/intj + name = "Integrated Intuitive Thinking and Judging skillchip" + auto_traits = list(TRAIT_REMOTE_TASTING) + skill_name = "Mental Flavour Calculus" + skill_description = "When examining food, you can experience the flavours just as well as if you were eating it." + skill_icon = FA_ICON_DRUMSTICK_BITE + activate_message = span_notice("You think of your favourite food and realise that you can rotate its flavour in your mind.") + deactivate_message = span_notice("You feel your food-based mind palace crumbling...") + #undef SKILLCHIP_CATEGORY_GENERAL diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 9d54d95516d..8f29a7d2be7 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -433,6 +433,7 @@ desc = "A piece of juicy meat found in an ayy lmao's head." icon_state = "brain-x" brain_size = 1.3 + organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, TRAIT_LITERATE, TRAIT_REMOTE_TASTING) ////////////////////////////////////TRAUMAS//////////////////////////////////////// diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 345e30264ba..74d2bedf3a7 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -3,14 +3,15 @@ id = SPECIES_ABDUCTOR sexes = FALSE inherent_traits = list( - TRAIT_NO_UNDERWEAR, - TRAIT_NOBREATH, - TRAIT_NOHUNGER, - TRAIT_VIRUSIMMUNE, - TRAIT_NOBLOOD, TRAIT_CHUNKYFINGERS_IGNORE_BATON, + TRAIT_NEVER_WOUNDED, + TRAIT_NOBLOOD, + TRAIT_NOBREATH, TRAIT_NODISMEMBER, - TRAIT_NEVER_WOUNDED + TRAIT_NOHUNGER, + TRAIT_NO_UNDERWEAR, + TRAIT_REMOTE_TASTING, + TRAIT_VIRUSIMMUNE, ) mutanttongue = /obj/item/organ/internal/tongue/abductor mutantstomach = null diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index f8c5cf1c99f..28e04233da7 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -243,8 +243,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) /obj/machinery/power/supermatter_crystal/examine(mob/user) . = ..() var/immune = HAS_MIND_TRAIT(user, TRAIT_MADNESS_IMMUNE) - if(isliving(user) && !immune && (get_dist(user, src) < SM_HALLUCINATION_RANGE(internal_energy))) - . += span_danger("You get headaches just from looking at it.") + if(isliving(user)) + if (!immune && (get_dist(user, src) < SM_HALLUCINATION_RANGE(internal_energy))) + . += span_danger("You get headaches just from looking at it.") + var/mob/living/living_user = user + if (HAS_TRAIT(user, TRAIT_REMOTE_TASTING)) + to_chat(user, span_warning("The taste is overwhelming and indescribable!")) + living_user.electrocute_act(shock_damage = 15, source = src, flags = SHOCK_KNOCKDOWN | SHOCK_NOGLOVES) + . += span_notice("It could use a little more Sodium Chloride...") + . += delamination_strategy.examine(src) return . diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 0f81a378157..3ef86fbc4b0 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -61,13 +61,16 @@ reagents.add_reagent(/datum/reagent/blood, disease_amount, data) add_initial_reagents() -/obj/item/reagent_containers/examine() +/obj/item/reagent_containers/examine(mob/user) . = ..() if(has_variable_transfer_amount) if(possible_transfer_amounts.len > 1) . += span_notice("Left-click or right-click in-hand to increase or decrease its transfer amount.") else if(possible_transfer_amounts.len) . += span_notice("Left-click or right-click in-hand to view its transfer amount.") + if(isliving(user) && HAS_TRAIT(user, TRAIT_REMOTE_TASTING)) + var/mob/living/living_user = user + living_user.taste(reagents) /obj/item/reagent_containers/create_reagents(max_vol, flags) . = ..() diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index e51205c00e4..5e3d9d3b055 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -52,11 +52,12 @@ /obj/item/skillchip/appraiser = 2, /obj/item/skillchip/basketweaving = 2, /obj/item/skillchip/bonsai = 2, + /obj/item/skillchip/intj = 2, /obj/item/skillchip/light_remover = 2, + /obj/item/skillchip/master_angler = 2, /obj/item/skillchip/sabrage = 2, /obj/item/skillchip/useless_adapter = 5, /obj/item/skillchip/wine_taster = 2, - /obj/item/skillchip/master_angler = 2, ), ), list(