From b4a3597388efd8cb81965479a68ff83b8751b4e4 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 18 Oct 2021 17:11:11 +0200 Subject: [PATCH] [MIRROR] Refactor rolling paper to use customizable reagent holder [MDB IGNORE] (#8905) * Refactor rolling paper to use customizable reagent holder (#61758) The component can accept dryable items and food items now. Any instance of the component can be set to use dryable items, just like normally food items are used. To add the dryable item, it's the same as with food. You attack with the item in hand. I am currently thinking about more uses for dryable items and also more ways the component can be used. * Refactor rolling paper to use customizable reagent holder Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com> --- code/__DEFINES/dcs/flags.dm | 1 + .../components/customizable_reagent_holder.dm | 5 ++++- code/game/objects/items/cigs_lighters.dm | 19 ++----------------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/code/__DEFINES/dcs/flags.dm b/code/__DEFINES/dcs/flags.dm index 3d045b12684..2657b95f3b3 100644 --- a/code/__DEFINES/dcs/flags.dm +++ b/code/__DEFINES/dcs/flags.dm @@ -48,6 +48,7 @@ //Ingredient type in datum/component/customizable_reagent_holder #define CUSTOM_INGREDIENT_TYPE_EDIBLE 1 +#define CUSTOM_INGREDIENT_TYPE_DRYABLE 2 //Icon overlay type in datum/component/customizable_reagent_holder #define CUSTOM_INGREDIENT_ICON_NOCHANGE 0 diff --git a/code/datums/components/customizable_reagent_holder.dm b/code/datums/components/customizable_reagent_holder.dm index 2620a45c894..229a4e7d958 100644 --- a/code/datums/components/customizable_reagent_holder.dm +++ b/code/datums/components/customizable_reagent_holder.dm @@ -33,7 +33,8 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE var/atom/atom_parent = parent - if (!atom_parent.reagents) + // assume replacement is OK + if (!atom_parent.reagents && !replacement) return COMPONENT_INCOMPATIBLE src.replacement = replacement @@ -108,6 +109,8 @@ switch (ingredient_type) if (CUSTOM_INGREDIENT_TYPE_EDIBLE) valid_ingredient = IS_EDIBLE(ingredient) + if (CUSTOM_INGREDIENT_TYPE_DRYABLE) + valid_ingredient = HAS_TRAIT(ingredient, TRAIT_DRYABLE) // only accept valid ingredients if (!valid_ingredient || HAS_TRAIT(ingredient, TRAIT_CUSTOMIZABLE_REAGENT_HOLDER)) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index b01c9e55ae8..4a0622ff25d 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -914,25 +914,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cig_paper" w_class = WEIGHT_CLASS_TINY -/obj/item/rollingpaper/afterattack(atom/target, mob/user, proximity) +/obj/item/rollingpaper/Initialize(mapload) . = ..() - if(!proximity) - return - if(!istype(target, /obj/item/food/grown)) - return + AddComponent(/datum/component/customizable_reagent_holder, /obj/item/clothing/mask/cigarette/rollie, CUSTOM_INGREDIENT_ICON_NOCHANGE, ingredient_type=CUSTOM_INGREDIENT_TYPE_DRYABLE, max_ingredients=2) - if(!HAS_TRAIT(target, TRAIT_DRIED)) - to_chat(user, span_warning("You need to dry [target] first!")) - return - - var/obj/item/clothing/mask/cigarette/rollie/R = new /obj/item/clothing/mask/cigarette/rollie(user.loc) - R.chem_volume = target.reagents.maximum_volume - target.reagents.trans_to(R, R.chem_volume, transfered_by = user) - qdel(target) - qdel(src) - user.put_in_active_hand(R) - to_chat(user, span_notice("You roll the [target.name] into a rolling paper.")) - R.desc = "Dried [target.name] rolled up in a thin piece of paper." /////////////// //VAPE NATION//