It is now possible to load saves made with different configuration of
submods, for example after mod update.
This is mostly to prevent save breakage for like half of our players
when 1.7.2 & hota update with Bulwark is out
Same list of "main" mods is still required, however submods can now be
rearranged if desired. In theory we can relax this requirement further,
but for now it is better to play it safe and see how this version will
work out.
Disabling submod that adds new game entities will break save as before,
and in case of disabling towns/heroes will hide these saves from save
list. Othervice, attempt to load such save will result in error mid-
load. Submods that are graphical-only or balance-only should be possible
to disable.
Enabling submods with new objects should now be possible, but in general
new objects will be considered to be banned since list of (for example)
allowed heroes is generated on map start, so heroes added mid-game will
be considered as banned and won't appear in taverns
Mostly based on the mysterious island map test results
Added support for:
- Pandoras or map events can now grant movement points
- Pandoras or map events can now specify map difficulties on which these
objects are present
- Timed events and town events can now specify map difficulties on which
these objects are present
- Creature banks now support selection of difficulty preset (number of
guards/reward) instead of random-selection
- Wandering monsters "joins only for money" flag is now supported
- Wandering monsters presence of upgraded stack can now be configured in
map
- Pyramid can now grant specific spell configured in map
- Treasure Chest, Corpse, Sea Chest, Flotsam, Tree of Knowledge can now
grant specific reward instead of randomly selected one
- Treasure Chest, Corpse, Warrior's Tomb, Shipwreck Survivor and Sea
Chest can now grant specific artifact configured in map
The following entities can now be banned in a random map template
definition:
- Hero
- Artifact
- Spell
- Secondary skill
The ban follows the same rules as banning via the map settings in the
map editor.
It is also now possible to bypass dependencies and access identifiers
from mods that are not dependencies when defining:
- Banned entities in random map templates
- the chance of a hero class appearing in a tavern of a specific faction
- the chance of a spell appearing in a mage guild of a specific faction
- the chance of a hero class receiving a secondary skill
For this to work, the identifier must be specified in full, e.g.
`modName:objectName`. If the specified mod is not active, the game will
silently ignore this entry.
This behaviour is not affected by mod load order. It is possible to use
this format to access a mod that has not yet been loaded.
It is now possible to give artifacts per-instance bonuses, if needed.
Unlike shared bonuses, per-instance bonuses stack if multiple instances
of same artifacts are equipped on hero.
This to implement resource-producing artifacts in line with H3 -
equipping multiple such artifacts on a single hero will give bonus from
each instance of such artifact.
Also, both existing bonuses and new instanceBonuses fields now use json
object instead of json lists. This allows easier modification of
individual bonuses of artifacts and potentially - custom icons /
descriptions for artifact bonuses.
- CClient now inherits directly from CPrivilegedInfoCallback, like
IGameCallback did before. However CClient no longer needs dummy
implementation of IGameEventCallback
- CGObjectInstance hierarchy now uses CPrivilegedInfoCallback for
callback. Actual events can only be emitted in calls that receive
IGameEventCallback pointer, e.g. heroVisit
- CGameHandler now inherits directly from both CPrivilegedInfoCallback
and IGameEventCallback as it did before via IGameCallback
- files now generally contain only 1 class (except for tightly coupled
classes)
- files are now located in lib/entities/artifact directory
- removed excessive includes
No changes to functionality