I looked through many of the script source files included in the latest dev release. Most of the problems I found were non-quest scripts. I didn't look at every quest script because most of them were the same and few had any issues.
Of what I've looked at, fbmwinterventionscript has the most room for improvement. I would almost want to rewrite it from scratch.
qf_mq101_0003372b, if I'm not mistaken, was a vanilla script and still contains alot of original code which, I assume, needs to stay that way. Anyway, it needs Game.GetPlayer() replaced with a playerREF property and some convenience functions expanded to full versions.
fbmwplayerwerewolfquestscript needs Game.GetPlayer() replaced with playerREF and some repetitive code replaced with loops + arrays of properties.
At a quick glance, it looks like fbmwmtwritsmanagement could be shortened to about 1/3 - 1/4 of it's current size by replacing redundant code with loops + arrays of properties. First need to know why so many if statements are commented out?
fbmwplayervampirequestscript could also use some loops + arrays of properties. IMO, it needs a check in the VampireChange() function that Actor == playerREF As Actor, but there could be a check before this function is called that I don't know about.
If VampClan == "0ClanAundae"
Target.AddSpell(AbVampireAundaeSpecials, abVerbose = False)
If VampClan == "0ClanBerne"
Target.AddSpell(AbVampireBerneSpecials, abVerbose = False)
If VampClan == "0ClanQuarra"
Target.AddSpell(AbVampireQuarraSpecials, abVerbose = False)
Debug.messagebox("Something is wrong, no clan defined.")
This looks like bad logic. The "0ClanBerne" and "0ClanQuarra" sections are unreachable.
morrowindbardssongsscript looks pretty good, but we could put the song scenes in a properties array and replace the PlayChosenSong() function with a single line of code. Also, with that array, the StopAllSongs() function couild use a loop.
In fbmw_qf_fbmwttsevengraces_0100f86f, we need to remove all those '== TRUE'. 'If xxx == TRUE' is logically equivalent to 'If xxx' but when you compile it it actually puts that extra comparison in there (IIRC). So 'If xxx == TRUE' compiles to '(If xxx == TRUE) == TRUE'.
fbmwbirthsigns could be converted to use several arrays of properties and probably 1/4 of its current size but if this script only runs once then that priority should be very low.
fbmwshrinedaring and fbmwshrinepride need to be rewritten. It looks to me like all the code is redundant and can be minimized easily.
fbmwtrapscript is very well written (looks like something I wrote :-p ). Just need to replace Game.GetPlayer() with playerREF
skywindutils already has playerREF property but isn't used through most of the script. A note about 'return Game.getPlayer().getDistance(target)': IIRC, I dealt with some issue with this function where if the target isn't persistent and isn't loaded, it would return a value without complaining but it would be invalid. It's been a while so I could be wrong.
fbmwtowershieldeventcallerscript has an awful lot going on in the OnHit event. It looks like it could easily call that event multiple times before it has had time to finish. I honestly don't know how that situation plays out.
fbmw_qf_fbmwbladestrainers_0100f87b, again, has a bunch of '== TRUE' that can safely be removed
If we put all those messages in fbmwvavampdreamssleepscript into a string array, you could replace the entire if/then/else block with a single statement
fbmw_arkngthandexteriorcrank needs to be rewritten. Yeah...
fbmw_qf_fbmwdamephala_0100f880 uses convenience functino 'GetRef()', easy to expand to full function but should be low priority
fbmwoffensivedefensespellscript needs to be converted to use 'RegisterForSingleUpdate'. That's a big no-no that has caused lots of people lots of headaches.
fbmw_qf_fbmwicadvancement_0100f9cc needs Game.GetPlayer() replaced with playerREF
fbmw_qf_fbmwfgadvancement_0100f9ce needs Game.GetPlayer() replaced with playerREF
fbmw_qf_fbmwbmstones_0100f9ef needs '== TRUE' removed
fbmwdebugdiseasestone needs to be rewritten
fbmw_qf_fbmwtgadvancement_0100f9ca needs Game.GetPlayer() replaced with playerREF
fbmwenvemberstrigger should be rewritten. The OnActivate Event has redundant logic and the 'LetThereBeLight()' and 'LightsOut()' functions can be combined to a single toggle function
fbmwdefaultstaffscript and fbmwstaffwardscript: I don't see how these scripts could work. Pretty sure they need to be rewritten.
fbmwmagicaugmentweap probably works as-is, but could definitely be optimized
fbmwtellighttrigger could use a few optimizations but otherwise well done :)
divineinterventionscript needs to be rewritten