It's good to hear that I'm not just wasting your time with this stuff.

I've always wondered about the robustness of exception handling for Morrowind's scripting. Stability has always been an issue for my games. It seems like it's just a matter of time before the CTDs build up to the point where it's just less stressful to quit Morrowind and go and find a different game then adjusting my load order and cleaning my saves to no avail.
Those unmatched if/elseif/else/endif statements certainly can be a nuisance. I spent hours trying to track down one error for a simple mod. I can't even begin to imagine the work that you went through with all the scripts in your mod.
Here are a few more minor things. Since no one seems to be complaining I doubt there's anything significant here:
[spoiler]Begin Uvi_Chest_Deavvo? If ( TrapSpell == 1 ) Player->AddSpell "uvi_box_trap4" Set TrapSpell To 2ElseIf ( TrapSpell == 2 ) Set timer To ( timer + GetSecondsPassed ) If timer > 5 Player->RemoveSpell "uvi_box_trap4" Set timer To 0 Set TrapSpell To 0 EndIfEndIf ?[/spoiler]
Spoiler Ln 182 (shown), 194 and 206 are missing opening and closing brackets. Also present in Uvi_Chest_Gothren (Ln 177/189/201).
[spoiler]Begin Uvi_UT_Elevator_Switch? If ( Player->GetItemCount "key_teluvirith" > 0 ) If ( controlvar = 0 ) If ( Player->GetEffect sEffectLevitate == 1 ) If ( "uvirith_movableplug_UT".Moving != 17 ) ;out MessageBox "You are currently levitating. Do you want to move the elevator out of the way?" "Yes" "No" Set controlvar to 1 Else MessageBox "You are still levitating. Do you want to move the elevator back anyway?" "Yes" "No" Set controlvar to 2 Endif Else ?[/spoiler]
Spoiler Ln 29, single equal operator.
[spoiler]Begin Uvi_WeatherControl?If ( spelleffectmyst == 0 ) If ( GetDisabled "UviBall_SpellEffect" == 0 ) "UviBall_SpellEffect"->Disable Endif ?[/spoiler]
Spoiler Ln 25, not sure if that's an error but it looks like it should be reversed and dereferenced ("UviBall_SpellEffect"->GetDisabled) but Morrowind may accept both.
[spoiler]Begin Uvirith_Verena? Elseif ( state == 45 ) AiWander 512 0 0 0 30 10 10 0 40 10 0 0 0 0 Set state to 50 Elseif ( State == 50 )? If ( "furn_de_r_table_uvi"->GetDistance "verena_uvirith" <= 350 ) AiWander 512 0 0 0 30 10 10 0 40 10 0 0 0 0 Set state To 20 EndIf?[/spoiler]
Spoiler On Ln 202/217 it looks like you have 2 too many variables given to AiWander. MWSFD only seems to list 12 integer arguments for AiWander. Also, the variables combatCheck, warp, and combatDone appear to be undeclared. (Ln 275/277/281/283)
Endif/Elseif combos:
Uvirith_Arnamir: Ln 71/73
Uvirith_Arnamir_VBTimer: Ln 13/15
Undeclared variables:
Uvi_Apprentice: strongholdtravel on Ln 229.
Uvi_DrathaDrem_AshWait : timer on Ln 8.
Uvi_SpellCastCheck: controlvar on Ln 14.
Uvirith_Locket: ActionFlag on Ln 11/21.