static void HandleEquippedItem(Actor *actor, TESBoundObject *item, ExtraDataList *extraDataList, System.Byte leftHand) { if (item == null) { return; } var player = PlayerCharacter.Instance; var rightHand = leftHand == 0; if (actor == player) { player->RemoveEquippedItemFlags((System.Byte)((rightHand ? 1 : 0) + 1)); } var enchantment = item->GetEnchantment(extraDataList); if (enchantment == null) { return; } var castingType = enchantment->GetCastingType(); if (castingType == CastingType.ConstantEffect) { return; } var actorValue = enchantment->GetCostActorValue(rightHand); if (actorValue != ActorValue.None) { actor->RemoveActorValueModifiers(actorValue); var maximumCharge = item->GetMaximumCharge(extraDataList); actor->ActorValueOwner()->SetActorValue(actorValue, maximumCharge); if (extraDataList != null && extraDataList->HasExtraData(ExtraDataType.Charge)) { var charge = extraDataList->GetCharge(); actor->ActorValueOwner()->RestoreActorValue(ActorValueModifier.Damage, actorValue, -(maximumCharge - charge)); } } actor->RevertSelectedSpell((EquipType)(rightHand ? 1 : 0), enchantment); }
System.Single GetCharge(ExtraDataList *extraDataList) { return(getCharge(extraDataList)); }