as we all know, many things in the engine are hard-coded, both in "ivandef.h", and in "define.dat". as the engine loads "define.dat" early at startup, and keeps it loaded, at least some hardcoded things can be changed to lookups in `game::GlobalValueMap`.
i think that it is most useful for special dungeons/levels, so if someone will want to change dungeon scripts (to make GC longer, for example, by inserting extra levels before Elpuri), it can be done entirely in script file.
also, adding level tags, and HomeLevel for monsters will allow to cleanup their `MustBeRemovedFromBone()` method, effectively replacing all special cases (Jenny, Enner, Elpuri, Oree, etc.) with one general case.
i did it all in my fork, and it seems to work ok. i'm suggesting to do the same in comm. version too. at least don't hardcode dungeon numbers anymore — this will allow authors to tweak (existing for now) dungeons that needs special processing without recompiling the code. i.e. after adding special processing to C++ side once, user will be able to test various dungeon designs without messing with the game sources.
i think that it is most useful for special dungeons/levels, so if someone will want to change dungeon scripts (to make GC longer, for example, by inserting extra levels before Elpuri), it can be done entirely in script file.
also, adding level tags, and HomeLevel for monsters will allow to cleanup their `MustBeRemovedFromBone()` method, effectively replacing all special cases (Jenny, Enner, Elpuri, Oree, etc.) with one general case.
i did it all in my fork, and it seems to work ok. i'm suggesting to do the same in comm. version too. at least don't hardcode dungeon numbers anymore — this will allow authors to tweak (existing for now) dungeons that needs special processing without recompiling the code. i.e. after adding special processing to C++ side once, user will be able to test various dungeon designs without messing with the game sources.