From 1c9be4236a64b2ba4aa4b90d7e37b4ffec4afd10 Mon Sep 17 00:00:00 2001 From: Robbe Bryssinck Date: Sat, 12 Feb 2022 00:10:54 +0100 Subject: [PATCH] feat: sync enchantments --- Code/client/Games/Skyrim/TESObjectREFR.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Code/client/Games/Skyrim/TESObjectREFR.cpp b/Code/client/Games/Skyrim/TESObjectREFR.cpp index 2d925bf66..2034e3c21 100644 --- a/Code/client/Games/Skyrim/TESObjectREFR.cpp +++ b/Code/client/Games/Skyrim/TESObjectREFR.cpp @@ -183,7 +183,18 @@ void TESObjectREFR::AddItem(const Container::Entry& arEntry) noexcept // TODO: deal with temp forms for enchanted items if (arEntry.ExtraEnchantId != 0) { - spdlog::info("Enchanted"); + TP_ASSERT(arEntry.ExtraEnchantId.ModId != 0xFFFFFFFF, "Enchantment is sent as temp!"); + + uint32_t enchantId = modSystem.GetGameId(arEntry.ExtraEnchantId); + if (EnchantmentItem* pEnchantment = RTTI_CAST(TESForm::GetById(enchantId), TESForm, EnchantmentItem)) + { + ExtraEnchantment* pExtraEnchantment = Memory::Allocate(); + *((uint64_t*)pExtraEnchantment) = 0x141623E70; + pExtraEnchantment->next = nullptr; + pExtraEnchantment->pEnchantment = pEnchantment; + pExtraEnchantment->usCharge = arEntry.ExtraEnchantCharge; + pExtraEnchantment->bRemoveOnUnequip = arEntry.ExtraEnchantRemoveUnequip; + } } if (arEntry.ExtraHealth > 0.f)