One technique I have used on a product I worked on was something we called, "Event_Exits". What these did was whenever a significant event occurred in processing, the code would look for the presence of a script file by a predetermined name. If one was found, it would execute it.
What would be a great tool for both the DEVs and for Modders would be a similar piece of code in FE. Whenever events occur, just go out and look for an appropriate EventExit tag. I would think this would be fairly easy to code though it might be time consuming getting it placed everywhere an event occurs. But I think this could save you guys a lot of time long term.
Examples To Demo Concept (actual implementation at the discretion of the DEVs):
<EventExits>
<EventExit>
<Equipped_Primary_Weapon> <!-- Fires when item equipped in primary weapon slot -->
<!-- Some assignment of a trait or other check-->
<HasAbility Id="Placeholder"> <!-- NEW TAG: It'd be cool if spells and items used this also -->
<!-- If the Unit has an ability bonus by that name do what is inside this node -->
</HasAbility>
<NotHasAbility Id="Placeholder"> <!-- NEW TAG: It'd be cool if spells and items used this also -->
<!-- If the Unit DOES NOT have an ability bonus by that name do what is inside this node -->
</NotHasAbility>
<HasAbility Id="EquippedWeapon_Sword"> <!--This trait granted by sword when sword is equipped-->
<NotHasAbility Id="Blood_MancerAbility"> <!--Mancers don't get this bonus-->
<NotHasAbility Id="Blood_TrogAbility"> <!--nor do Trogs-->
<HasAbility Id="Swordsman2Ability"> <!--If has this ability, -->
<GameModifier> <!--adds a 10% bonus to Dodge if sword equipped -->
<ModType>Unit</ModType>
<Attribute>AdjustUnitStat</Attribute>
<StrVal>UnitStat_Dodge</StrVal>
<Calculate InternalName="Calc1" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_Dodge] * 0.1]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc1] + 1]]></Expression>
</Calculate>
</GameModifier>
<GameModifier>
<ModType>AddRaceAttribute</ModType> <!-- NEW ModType: It'd be cool if spells and items used this also -->
<Attribute>MySwordAbility</Attribute> <!-- Adds mod defined attri to entire race. "RemoveRaceAttribute" also option -->
</GameModifier>
<GameModifier>
<ModType>RemoveUnitAttribute</ModType> <!-- NEW ModType: It'd be cool if spells and items used this also -->
<Attribute>MyAxeAbility</Attribute> <!-- Removes this attribute from the unit "AddUnitAttribute" also option -->
</GameModifier>
</HasAbility>
</NotHasAbility>
</NotHasAbility>
</HasAbility>
<Return> <!--NEW TAG: Return tag forces return to program and returns Value-->
<Value>True</Value> <!--If this value is false, event failed. If true, succeeded.-->
</Return>
</Equipped_Primary_Weapon>
</EventExit>
<EventExit>
<Entered_River_Tile> <!-- Fires when unit enters a tile containing a river -->
<!-- Some assignment of a trait or other check-->
<HasAbility Id="FearOfWaterAbility"> <!--New or modder defined trait assigned by a new Water Spell-->
<Return> <!--Having FearOfWater, can't enter river tiles-->
<Value>False</Value> <!--If this value is false, event failed-->
</Return>
</HasAbility>
<HasAbility Id="Blood_TarthAbility"> <!-- For Tarth Only -->
<HasAbility Id="ShardTemple_Water"> <!-- Ability assigned when Temple completed on Water Shard -->
<GameModifier>
<ModType>Unit</ModType> <!-- Net effect: If Tarth and has Water Temple, heals -->
<Attribute>CurHealth</Attribute> <!-- 25% of current damage -->
<Calculate InternalName="Calc1" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_Dodge]]]></Expression>
</Calculate>
<Calculate InternalName="Calc2" ValueOwner="CastingUnit">
<Expression><![CDATA[[CurHealth]]]></Expression>
</Calculate>
<Calculate InternalName="Calc3" ValueOwner="CastingUnit">
<Expression><![CDATA[[Calc1] - [Calc2]]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc3] / 4]]></Expression>
</Calculate>
</GameModifier>
</HasAbility>
</HasAbility>
<Return> <!--Return tag forces return to program and returns Value-->
<Value>True</Value> <!--If this value is false, event failed-->
</Return>
</Entered_River_Tile>
</EventExit>
</EventExits>