You could streamline it down to this, though:
Actor property Player AutoState BusyEndStateEvent OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, \ bool abBashAttack, bool abHitBlocked)GoToState("Busy")If IsWeapMagicEquipped() ;end BrawlEndIfGoToState("")EndEventBool Function IsWeapMagicEquipped()Int i = 1If Player.getEquipped Weapon() == True || Player.getEquippedWeapon(false) == True Return TrueElseIf Player.getEquippedSpell(0) == True || Player.getEquippedSpell(1) == True Return TrueElse Return FalseEndIfEndFunctionEven though Hand-to-hand is considered a weapon, it is never considered to be equipped. So while checking for the source as a Weapon in this context will fail, checking if the player has something specific equipped will work.
Or even this, perhaps:
Weapon property Unarmed AutoState BusyEndStateEvent OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, \ bool abBashAttack, bool abHitBlocked)GoToState("Busy")If akSource != Unarmed ;end BrawlEndIfGoToState("")EndEventSince Unarmed is a defined record in the CK (it's the hardcoded Weapon hand-to-hand uses), you could do that just fine.