New update on the problem: Looking through the Papyrus logs, I noticed the following:
[12/04/2012 - 11:07:00PM] error: Unable to call RegisterForUpdateGameTime - no native object bound to the script object, or object is of incorrect type
stack:
[item 32 in container (00000014)].DawnfangScript.RegisterForUpdateGameTime() - "<native>" Line ?
[item 32 in container (00000014)].DawnfangScript.OnEquipped() - "DawnfangScript.psc" Line 28
Using the info on the wiki page for Papyrus logs, I conclude that the FormID keeps changing for some reason, or that my savegame is dodgy. A bit of background info: Every time I test the mod, I load the same save and then quit, so that save is always running the mod for the first time. It's hardly a clean save (with the 100 or so mods I have running), but also I've tested the mod using a brand new game (with "coc whiterun" from the main menu) with no success. In the same .esp (and the same savegame/testing conditions), I created and tested an activator in the game world that gives messages every few seconds with the OnUpdateGameTime() event, so I know the event itself is working - it must be something specific to the Dawnfang sword in my inventory. So I'm not sure what to make of it. Any advice, guys? Maybe the FormID of items in the player's inventory changes depending on whether its the third or first-person model (or not equipped at all)? Alternatively, maybe Weapon types cannot be registered for updates? Or maybe the FormID can't be found because the mod was originally in a different load order? EDIT: If I type in "sv" with Dawnfang selected in the game console, it initially says the name of the attached script and variable values, as expected. But after equipping it, "sv" reports that it's registered for game updates but has no attached scripts, leading me to believe that the FormID is in fact changing somehow. But I really don't know, I'm just shooting ideas into the dark, here.