Sorry, you're perfectly right, I should have done that earlier. This is the magic effect that removes the current equipment on cast and re-equips on end. (I doubt it's relevant, but the caster and target are the same - this is usually cast as a result of a proximity trigger):
Scriptname zsEquipmentEffectScript extends activemagiceffectForm[] equippedItemsint numEquippedItemsEvent OnEffectStart(Actor akTarget, Actor akCaster)equippedItems = new Form[100]akTarget.unequipAll()EndEventEvent OnEffectFinish(Actor akTarget, Actor akCaster)int equipIdx = 0while (equipIdx < numEquippedItems) if (equippedItems[equipIdx] != NONE) akTarget.equipItem(equippedItems[equipIdx], false, true) equippedItems[equipIdx] = NONE endif equipIdx += 1endWhilenumEquippedItems = 0EndEventEvent OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)equippedItems[numEquippedItems] = akBaseObjectnumEquippedItems += 1EndEvent
The current result: unequip and requip take place, but enchantment effects of the equipment are not applied to the PC on re-equip. Manually re-equipping the same objects via the inventory screen causes the enchantments to become active again.