Alright, I've followed the following:
http://www.gamesas.com/topic/1349649-dynamically-attaching-scripts-to-actors-near-the-player/
It works beautifully (well, sort of) with this script attached to every actor:
Scriptname Interrupt_Archers_StaggerOnHit extends ReferenceAlias {Stagger an archer if they are hit while drawing their bow.} Spell property Interrupt_Archers_Stagger auto Spell Property ConjureDremoraLord Auto Spell Property Paralyze auto Event onHit(objectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ConjureDremoraLord.Cast(akAggressor) if((Self.GetActorRef()).IsInCombat()) if((Self.GetActorRef()).GetEquippedItemType(0) == 7 && (Self.GetActorRef()).IsWeaponDrawn()) Debug.MessageBox((akAggressor as Actor).GetBaseObject().GetName() + " struck " + (Self.GetActorRef()).GetBaseObject().GetName() + " holding weapon " + (Self.GetActorRef()).GetEquippedItemType(0) + " in left and " + (Self.GetActorRef()).GetEquippedItemType(1) + " in right" ) Interrupt_Archers_Stagger.Cast(Self.GetActorRef()) endif endif ;Paralyze.Cast(Self.GetActorRef(), Self.GetActorRef()) endEvent
So, you'll notice all the spells referenced in there. This is to show that I tried a few. I created one (the one I really want to use) and tried to use some existing spells. I even put the ConjureDremoraLord.Cast outside my "if" just in case.
Thing is, my ifs and debug messagebox do what they're supposed to when the conditions are met. But never does .cast ever work.
Anyone have any suggestions? I do have some mods installed, but I can't imagine any of them would make such a basic function stop working altogether.