Allows defining custom tags for skills, and testing for them later when
rolling for skills in randomization.
Existing flags were converted to tags.
List of predefined tags:
- `special` - skill is banned by default
- `onlyOnWaterMap` - skill is banned on random maps without water
- `wisdom` - for guaranteed rolls of Wisdom on levelup
- `spellSchool` - for guaranteed rolls of spell schools on levelup
- `bannedForUniversity` - to exclude skill from selection by University
- `bannedForWitchHut` - to exclude skill from selection by Witch Hut
- `bannedForScholar` - to exclude skill from selection by Scholar
(unused in H3)
- pushing type that is derived from type registered in Lua will now
correctly push type known to Lua
- Methods of types stored on stack as shared pointers now actually load
this as shared pointer
- It is now possible to return types other than Json from Lua function
- Scripting module and lua dependency are now required.
- Script context pool now only exists in gamestate
- removed unused pools from client and server
- scripts are now registered in pools on start instead of lazy
registering with caching
* Reinforcements spell support
* Fix build
* Add forgotten change to allow moving creatures between hero and garrison
* Extract findNearestTown into TownRelatedSpellUtils
* Fix for exchange when exist garrisoned hero in destination town
* Improve handling when garrisoned hero exist in destination town
* Fix portrait position
* Update GUIClasses.cpp
* Fix flag position
* Update GUIClasses.cpp
* Update ReinforcementsEffect.cpp
* Rework to reflect latest advices
* Delete lib/spells/adventure/TownRelatedSpellUtils.cpp
* Delete lib/spells/adventure/TownRelatedSpellUtils.h
* Custom title text for Garrison dialog
* Add forgotten change
* ReRun CI
Normalize quoted local relative include directives to remove redundant
path segments while preserving relative includes.
This applies the normalizer across the tree and updates 108 includes in
64 files, including cases where paths inside lib/* redundantly used
../../lib/... and now correctly use ../... .
These paths compiled before because include resolution normalized them,
but they were longer and harder to audit.
Many quoted local includes had an incorrect ../ depth and resolved to
non-existent files from the including file's directory.
This was easy to miss because normal target include directories and PCH
usage masked some failures, and several stale paths lived in files that
are only compiled in optional test configurations. As a result, the
problem mostly surfaced in stricter or broader fresh builds.
Audit all C++ and header local includes, keep them relative, and adjust
paths so each include resolves to an existing in-tree header. For
headers that were renamed or moved, update includes to their current
relative location instead of switching to include-root form.
A few legacy ERM tests also used dynamic_ptr_cast at call sites where we
had to replace stale headers. The helper/header path they relied on is
no longer present after 81af66d35b, so
those downcasts are now explicit dynamic_cast calls with the same intent.
As discussed on Discord:
- NKAI has been removed since it is now superseded by NKAI 2
- fuzzy logic as well as fuzzylite library itself is also removed - it
was disabled in 1.5 release or so, and AI developers have no interest in
using it
Player that use NKAI1 should automatically switch to NKAI2