I can imagine that a change like this will introduce compatibility issues with existing mods which expect the ALWAYS block to be executed *after* the mod requirements have been evaluated.
There is already the ABORT action available which can be used to terminate a mod component in a safe manner.
@Wisp
Ah, yes, you're right.
The only real case scenario I can think of is the following one:
For some unknown reason, the BGEE version of
SPELL.IDS has the entry
2610 WIZARD_MONSTER_SUMMONING_4.
However, the file
spwi610.spl does not actually exist as a game resource, so checks like this one
REQUIRE_PREDICATE (RESOURCE_CONTAINS "SPELL.IDS" "[ %TAB%]WIZARD_MONSTER_SUMMONING_4[ %TAB%%WNL%$]")
are not reliable.
As a result, checking if a var is set
REQUIRE_PREDICATE (VARIABLE_IS_SET "WIZARD_MONSTER_SUMMONING_4")
would be more reliable in this case (provided that such variable has been defined in your
ALWAYS block, along with making sure that
"%WIZARD_MONSTER_SUMMONING_4%.spl" does exist as a game resource).
But as you said, the
ALWAYS block is executed *after* the mod requirements have been evaluated, so I can't use that either...
Sure, I could write
REQUIRE_PREDICATE (FILE_EXISTS_IN_GAME "SPWI610.SPL")
but you know better than me that functional programming is the way, so nope, that's not ideal either... Moreover, it won't work on IWDEE (since
WIZARD_MONSTER_SUMMONING_4 is
SPWI627 there...)
So to sum up, guess I'll use
ABORT...