diff --git a/code/datums/enchantments/bound_runes.dm b/code/datums/enchantments/bound_runes.dm index b6f769f2a5a..3e675c88732 100644 --- a/code/datums/enchantments/bound_runes.dm +++ b/code/datums/enchantments/bound_runes.dm @@ -1,4 +1,3 @@ - /datum/enchantment/binding_runes enchantment_name = "Binding Runes" examine_text = "Strange engravings cover this, it would be unwise to put it on." @@ -26,5 +25,5 @@ var/atom/real_enchanter = enchanter.resolve() if(!real_enchanter) return COMPONENT_ITEM_BLOCK_UNEQUIP - if(source != real_enchanter) + if(usr != real_enchanter) return COMPONENT_ITEM_BLOCK_UNEQUIP diff --git a/code/datums/enchantments/life_eternal.dm b/code/datums/enchantments/life_eternal.dm index d35211e5120..ce7a7a1bc9b 100644 --- a/code/datums/enchantments/life_eternal.dm +++ b/code/datums/enchantments/life_eternal.dm @@ -5,11 +5,13 @@ enchantment_color = "#FF69B4" enchantment_end_message = "The life essence fades away." essence_recipe = list( - /datum/thaumaturgical_essence/life = 80, - /datum/thaumaturgical_essence/cycle = 50, - /datum/thaumaturgical_essence/magic = 35, - /datum/thaumaturgical_essence/light = 30 + /datum/thaumaturgical_essence/life = 60, + /datum/thaumaturgical_essence/cycle = 30, + /datum/thaumaturgical_essence/magic = 20, + /datum/thaumaturgical_essence/light = 15 ) + required_type = list(/obj/item/clothing) + var/healing_power = 1 /datum/enchantment/life_eternal/register_triggers(atom/item) . = ..() @@ -18,15 +20,45 @@ registered_signals += COMSIG_ITEM_DROPPED RegisterSignal(item, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) -/datum/enchantment/life_eternal/proc/on_equip(obj/item/i, mob/living/user) - // Constant slow healing while equipped - START_PROCESSING(SSobj, src) +/datum/enchantment/life_eternal/proc/on_equip(obj/item/i, mob/living/user, slot) + var/datum/enchantment/life_eternal/enchantment + if(slot != ITEM_SLOT_HANDS) //preventing it from triggering if held + //I might have not have a brain, gentlemen, but i have an idea... + //We cycle through all gear with life_eternal enchantment, increasing healing_power counter, + //disabling previous enchantments processing, till we reach the final item, that will be processed. + //More enchanted items = higher healing power + for(var/obj/item/clothing/gear in user.get_all_gear()) + if(gear && gear != i && gear.has_enchantment(/datum/enchantment/life_eternal)) + enchantment = gear.get_enchantment(/datum/enchantment/life_eternal) + STOP_PROCESSING(SSobj, enchantment) + healing_power += 1 + else if(gear && gear == i) + START_PROCESSING(SSobj, src) + continue + else + return /datum/enchantment/life_eternal/proc/on_drop(obj/item/i, mob/living/user) + var/enchanted_items = 0 + var/datum/enchantment/life_eternal/enchantment = null STOP_PROCESSING(SSobj, src) + src.healing_power = 1 + for(var/obj/item/clothing/gear in user.get_all_gear()) + if(gear && gear.has_enchantment(/datum/enchantment/life_eternal)) + enchanted_items += 1 + enchantment = gear.get_enchantment(/datum/enchantment/life_eternal) + if(enchanted_items != 0) + enchantment.healing_power = enchanted_items + START_PROCESSING(SSobj, enchantment) + else + return + /datum/enchantment/life_eternal/process() if(enchanted_item.loc && isliving(enchanted_item.loc)) - var/mob/living/L = enchanted_item.loc - if(L.health < L.maxHealth) - L.heal_bodypart_damage(1, 1) + var/mob/living/carbon/human/L = enchanted_item.loc + if(L.stat != DEAD) + L.heal_wounds(0.1 * healing_power, TRUE) + L.heal_bodypart_damage(0.1 * healing_power, 0.1 * healing_power, TRUE, required_status = BODYPART_ORGANIC) + L.adjustOrganLoss(-0.05 * healing_power) + diff --git a/code/modules/crafting/alchemy/cauldron_recipes.dm b/code/modules/crafting/alchemy/cauldron_recipes.dm index cb2335e6730..de8b2b02598 100644 --- a/code/modules/crafting/alchemy/cauldron_recipes.dm +++ b/code/modules/crafting/alchemy/cauldron_recipes.dm @@ -165,7 +165,7 @@ Keep them reasonable to make /datum/alch_cauldron_recipe/str_potion recipe_name = "Strength of Troll Muscles" smells_like = "sour vomit" - output_reagents = list(/datum/reagent/buff/strength = 5) + output_reagents = list(/datum/reagent/buff/strength = 25) required_essences = list( /datum/thaumaturgical_essence/earth = 18, /datum/thaumaturgical_essence/order = 9,