Commit Graph
100 Commits
Author SHA1 Message Date
Ivan Savenko c737b8bea3 Merge pull request #5940 from Laserlicht/case_insensitive
case insensitive cheat identifier
2025-07-31 17:05:26 +03:00
Ivan Savenko c0644da408 Merge pull request #5947 from Laserlicht/skill
Setting to increase selectable skills on levelup
2025-07-31 17:00:24 +03:00
Ivan Savenko b4693a9d7f Merge pull request #5859 from IvanSavenko/antilag
Lag compensation for multiplayer
2025-07-30 12:02:36 +03:00
Ivan Savenko 00e0173f18 Merge pull request #5920 from Opuszek/fix_berserk
Implement berserk behavior if no unit in melee range or unit can shoot.
2025-07-30 12:01:58 +03:00
Ivan Savenko d8e6931284 Merge pull request #5937 from Laserlicht/shortcut
Add key binding menu
2025-07-30 11:58:23 +03:00
Ivan Savenko 5c4cbcb130 Merge pull request #5949 from Opuszek/add_filter_to_hero_spell_widget
Map Editor:Add filter to the herospell widget
2025-07-30 11:24:52 +03:00
Ivan Savenko 9b9dc85d7e Merge pull request #5946 from Laserlicht/gamesettings
campaign unlock to gamesettings
2025-07-30 11:23:50 +03:00
Ivan Savenko f84f76b37b Merge pull request #5957 from Olegmods/patch-7
Fixes for commanders
2025-07-30 11:23:03 +03:00
Ivan Savenko 45f21c252b Merge pull request #5958 from IvanSavenko/townportal_fix
Do not limit number of daily casts of town portal spell
2025-07-30 11:22:55 +03:00
Ivan Savenko fda9e3ac37 Merge pull request #5955 from XCOM-HUB/patch-1
Update swedish.json
2025-07-28 18:54:22 +03:00
Ivan Savenko 747af469b5 Merge pull request #5954 from kdmcser/building_id
display lack id building
2025-07-28 18:54:10 +03:00
Ivan Savenko 97e6c5f395 Merge pull request #5952 from IvanSavenko/spell_ban_fix
Fix artifacts providing hero with banned spells
2025-07-28 18:53:50 +03:00
Ivan Savenko 99480ff9a4 Merge pull request #5951 from Opuszek/fix_crashing_hero_spell_widget
Fixes crash on uncheck customize spell
2025-07-28 18:53:42 +03:00
Ivan Savenko 6e60bdb78a Merge pull request #5950 from kdmcser/chinese
update Chinese translation
2025-07-28 18:53:25 +03:00
Ivan Savenko b7521450fb Merge pull request #5942 from IvanSavenko/university_popup
Show skill that can be learned in university on right click
2025-07-28 18:53:08 +03:00
Ivan Savenko 76aa075d10 Merge pull request #5948 from Opuszek/fix_segmentation_fault
Fixes segmentation fault when getting magic strength of a hero
2025-07-28 18:51:52 +03:00
Ivan Savenko 7a0a3cd427 Remove logging, update docs 2025-07-28 18:38:07 +03:00
Ivan Savenko 226ce1e20c Do not limit number of daily casts of town portal spell 2025-07-28 18:14:48 +03:00
Ivan Savenko 44cc3a0214 Add comments, rename entities to more logical names, reorganize code 2025-07-28 18:13:41 +03:00
Ivan Savenko 283230eb4e Add description for University using H3 string 2025-07-26 21:09:16 +03:00
Ivan Savenko 1f9a1dbf37 Fix artifacts providing hero with banned spells
Tomes of X Spells and Spellbinder's Hat (and any other sources for such
bonuses from mods) will no longer provide spells that are banned on map.

Option is only active for random maps and for HotA h3m's. RoE-SoD .h3m's
work as before.

If needed, behavior can be changed in config
2025-07-26 19:44:00 +03:00
Ivan Savenko 6a22b042ac Partial support for antilag in army management 2025-07-26 19:42:47 +03:00
Ivan Savenko 25ba05cdab Merge pull request #5935 from Laserlicht/entities_template_editor
banned entities in template editor
2025-07-22 13:24:37 +03:00
Ivan Savenko b223393048 Merge pull request #5941 from IvanSavenko/fix_regressions
Fix regressions
2025-07-22 12:38:58 +03:00
Ivan Savenko dc06e02383 Merge pull request #5939 from Laserlicht/search
Object search - allow searching all
2025-07-22 12:38:47 +03:00
Ivan Savenko 5d9450d9b5 Merge pull request #5938 from Laserlicht/patch-1
fix graphical regression
2025-07-22 12:38:06 +03:00
Ivan Savenko b3167a44ee Move MarketInstanceConstructor class to a separate file 2025-07-21 19:38:24 +03:00
Ivan Savenko 3d05644601 Create fake server on stack to instead of persistent member to eliminate
state
2025-07-20 23:57:58 +03:00
Ivan Savenko 2bcc2229c6 Failed prediction will now rollback all assumed changes 2025-07-20 23:54:39 +03:00
Ivan Savenko fe2a981ddf Show skill that can be learned in university on right click
As in title. Now if player has already visited university before, game
will show list of skills that can be learned in this university on right
click
2025-07-20 16:25:50 +03:00
Ivan Savenko a5c6cfe922 Initialize mod scope of loaded rmg template in template editor 2025-07-20 16:23:01 +03:00
Ivan Savenko aab628c5d4 Fix crash on using JsonDeserializer on JsonNode without valid mod scope 2025-07-20 16:22:35 +03:00
Ivan Savenko 81d09aee14 Add workaround & logging for mods that use incorrect building ID's 2025-07-20 16:21:53 +03:00
Ivan Savenko 241da5937d First semi-working version of antilag for hero movement 2025-07-19 18:04:20 +03:00
Ivan Savenko 3ea2c8bff0 Cleanup, remove unnecessary changes 2025-07-19 18:04:20 +03:00
Ivan Savenko 52da332640 GameHandler now uses GameConnectionID instead of connection pointers 2025-07-19 18:04:20 +03:00
Ivan Savenko 3576efc3f3 Initial version of antilag support 2025-07-19 18:04:20 +03:00
Ivan Savenko 58de180083 Split CConnection into GameConnection and IGameConnection classes 2025-07-19 18:04:20 +03:00
Ivan Savenko 790c5cb455 Remove static variable 2025-07-19 18:04:20 +03:00
Ivan Savenko 3d63284c51 Extracted interface through which GameHandler interacts with VCMIServer 2025-07-19 18:04:20 +03:00
Ivan Savenko 6b382a979a Added PackageReceived message to show when server starts pack processing 2025-07-19 18:04:20 +03:00
Ivan Savenko 7fcb0246fb Merge pull request #5909 from Laserlicht/template_editor_object
Template editor - object & townHints selection
2025-07-18 23:08:53 +03:00
Ivan Savenko 2877fa3301 Merge pull request #5927 from Laserlicht/fps_draw
optimized fps/battery box drawing
2025-07-18 23:08:42 +03:00
Ivan Savenko e82b92aa17 Merge pull request #5936 from Laserlicht/kingdom
fix kingdom overview rendering
2025-07-18 22:38:17 +03:00
Ivan Savenko 34f74fcec9 Merge pull request #5931 from Opuszek/fix_sanctuary
fixes sanctuary behavior
2025-07-18 22:37:53 +03:00
Ivan Savenko e02fc5ff3f Merge pull request #5934 from MichalZr6/fix_schemas
Fix JSON schemas
2025-07-17 16:17:35 +03:00
Ivan Savenko 163c95ffb0 Merge pull request #5926 from IvanSavenko/commander_fixes
Fixes for commanders logic
2025-07-17 16:12:42 +03:00
Ivan Savenko abd43e77cf Merge pull request #5922 from IvanSavenko/simple_building_config
Simplify town buildings configuration
2025-07-17 16:12:29 +03:00
Ivan Savenko afb71f72a7 Merge pull request #5910 from Opuszek/fix_mirror_shield
Make a blind/berserk spells activate immediately if reflected on an active unit
2025-07-17 16:12:20 +03:00
Ivan Savenko 6720289682 Merge pull request #5919 from IvanSavenko/rmg_banned_entities
Support for banned game entities in random map templates
2025-07-17 16:03:08 +03:00
Ivan Savenko 1727bff1e6 Limit commander experience level to map limit 2025-07-14 21:05:49 +03:00
Ivan Savenko aeddeb2612 Fix loading of subtypes for HAS_ANOTHER_BONUS limiter 2025-07-14 21:04:46 +03:00
Ivan Savenko c4cb794760 Add workaround for mods that use "true" (string) instead of real bool 2025-07-14 21:04:26 +03:00
Ivan Savenko 173b658ee5 Fix commander skill icon not updating on deselection 2025-07-14 21:03:46 +03:00
Ivan Savenko ae284e9c16 Simplify town buildings configuration
Goal is to minimize amount of copy-pasted parts of town building
configuration and to reduce chance of modders accidentally breaking it.

For example, Grail in any town produces 5k gold and requires artifact to
be built. No need to copy-paste this in any town. And if modder wants to
more unique Grail, he provide custom parameters that will override
default properties.

As a bonus, since all building ID's are now in config, modders can use
it for reference instead of searching for examples

Changes:

- All H3 buildings now have entry in buildingsLibrary.json.
- Moved all common parameters of town buildings to buildingsLibrary.json
- Added all new building ID's to buildingsLibrary.json - level 8
dwelling, additional upgrades of dwellings & hordes
- Removed hardcoded mapping of strings to building ID's from code.

Should not break any existing mods, or cause them to fail validation
2025-07-14 15:31:01 +03:00
Ivan Savenko 2774502526 Merge pull request #5883 from IvanSavenko/opening_spell_freeze_fix
Fix freeze on battle opening spell & add debug logging
2025-07-14 13:32:29 +03:00
Ivan Savenko 3b36d74882 Merge pull request #5901 from IvanSavenko/adventure_spells
(somewhat) configurable adventure map spells
2025-07-14 13:31:19 +03:00
Ivan Savenko 8fbf9568d9 Merge pull request #5915 from Laserlicht/queue
fix glitch with small queue
2025-07-14 12:36:47 +03:00
Ivan Savenko 2199e90520 Merge pull request #5913 from Laserlicht/hd-settinh
Hd setting
2025-07-14 12:36:41 +03:00
Ivan Savenko 5aeb06c319 Try to fix freeze on battle opening spell 2025-07-14 12:34:55 +03:00
Ivan Savenko 87555c600d Json validation for battle effects 2025-07-14 12:30:50 +03:00
Ivan Savenko 18a0a5a4d6 Updated schema to validate adventure map spells 2025-07-14 12:01:42 +03:00
Ivan Savenko 51408cccd8 Update docs 2025-07-14 11:26:41 +03:00
Ivan Savenko f58d08e563 Support for banned game entities in random map templates
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.
2025-07-14 00:18:11 +03:00
Ivan Savenko a0a99d7311 Fix build, fix sonar 2025-07-13 23:03:45 +03:00
Ivan Savenko 246010c13e Update docs, fix inconsistencies between config & code 2025-07-11 19:20:53 +03:00
Ivan Savenko b1aff17e82 Remove hardcoded checks for town portal from AI code 2025-07-11 18:03:18 +03:00
Ivan Savenko f51c7c5c28 Removed hardcoded AI logic for Water Walk and Fly spell 2025-07-11 17:38:03 +03:00
Ivan Savenko b0c511149d Removed hardcoded checks for Summon Boat spell 2025-07-11 17:11:01 +03:00
Ivan Savenko 7a1ede1e38 Adventure spell API refactoring to ease use by AI 2025-07-11 16:47:37 +03:00
Ivan Savenko 55bd4bc8bf Support for custom cursors for adventure map spells 2025-07-11 16:06:21 +03:00
Ivan Savenko a53aadf53a Remove unused default cursor 2025-07-11 12:25:40 +03:00
Ivan Savenko 5ada2d19e1 UI now shows spell range from config 2025-07-11 12:06:01 +03:00
Ivan Savenko 79f3126c63 (somewhat) configurable adventure map spells
- All adventure map spells have most of their parameters in json.
- Parameters of adventure map spells can now be defined separately per
each mastery level.
- It is now possible to add a new spell that will have effect similar to
H3 adventure map spell
2025-07-10 15:55:41 +03:00
Ivan Savenko 0d9fd09a6d Merge pull request #5908 from dydzio0614/commanders_fix
Fix commanders config
2025-07-10 15:55:05 +03:00
Ivan Savenko d3263a9a26 Merge pull request #5905 from IvanSavenko/sonar
Fix some sonar warnings and convert formatting from spaces to tabs
2025-07-10 15:54:40 +03:00
Ivan Savenko e12765dca0 Fix sonar warnings, convert spaces -> tabs 2025-07-09 17:52:51 +03:00
Ivan Savenko ac06f3d557 Merge pull request #5897 from Opuszek/fix_magic_mirror_spell
Fix magic_mirror spell
2025-07-09 12:37:33 +03:00
Ivan Savenko 5caf43a63c Merge pull request #5900 from IvanSavenko/bonus_limiters
Bonus limiters refactoring
2025-07-09 11:12:11 +03:00
Ivan Savenko 09ac0f1806 Merge pull request #5851 from Laserlicht/max_range_spell
max range for spell cast
2025-07-09 11:05:37 +03:00
Ivan Savenko 97db95a3ab Merge pull request #5904 from Laserlicht/glitch
fix graphical glitch
2025-07-09 11:05:14 +03:00
Ivan Savenko e3be6cc513 Merge pull request #5892 from Laserlicht/spell_school
custom spell schools in spell book
2025-07-09 11:04:27 +03:00
Ivan Savenko b3c20d30e5 Merge pull request #5903 from Laserlicht/bonus_hide
Hide bonus from creature window
2025-07-09 11:03:21 +03:00
Ivan Savenko c0145bad58 Merge pull request #5898 from IvanSavenko/clang
Add clang-tidy and clang-format configuration
2025-07-09 11:02:40 +03:00
Ivan Savenko 4af7949571 Bonus limiters refactoring
- Split massive `parseLimiter` method in smaller chunks
- Added alternative format for limiters with named parameters instead of
unclear `parameters` entry that often leads to bugs in mods. Old format
is still available.
- Added detailed validation for limiter format
- Converted vcmi json's to use new format
- Removed parameter-less `CREATURE_FACTION` and `SAME_FACTION` limiter.
They are unused in mods and have unclear use-case that can be replaced
by other limiters
- Expanded documentation on limiter types

All mods that were supported before should still be supported
2025-07-08 13:01:08 +03:00
Ivan Savenko 46072a1d60 Merge pull request #5896 from IvanSavenko/code_reorganize
Split large source files into smaller files per 1 class
2025-07-08 10:47:13 +03:00
Ivan Savenko fb8535d1cf Merge pull request #5882 from Laserlicht/save_stat
Statistics in highscore screen
2025-07-08 10:21:02 +03:00
Ivan Savenko 40f7de1342 Merge pull request #5889 from IvanSavenko/bonus_fixes
Fixes for bonus system
2025-07-08 10:05:38 +03:00
Ivan Savenko 0c037c6992 Merge pull request #5890 from IvanSavenko/battle_layout_fix
Tweaks for adaptive battle window UI
2025-07-08 10:05:27 +03:00
Ivan Savenko f76b2efee6 Merge pull request #5894 from IvanSavenko/army_swap_fix
Armies swap will now maintain unit ordering
2025-07-08 10:05:18 +03:00
Ivan Savenko 980ffa591e Merge pull request #5893 from IvanSavenko/event_fix
Fix events on .vmap's not activating on hero visit
2025-07-08 10:05:10 +03:00
Ivan Savenko 95bc827f1b Add clang-tidy and clang-format configuration 2025-07-07 21:37:27 +03:00
Ivan Savenko 4c2d67eb45 Fix build 2025-07-07 20:58:53 +03:00
Ivan Savenko 33431adb27 Apply formatting on changed files 2025-07-07 19:19:17 +03:00
Ivan Savenko 8721bdd728 Split CCreatureSet file on .h/.cpp per class basis 2025-07-07 19:12:31 +03:00
Ivan Savenko 2ad186130f Split MapDefines file on .h per class basis 2025-07-07 18:16:42 +03:00
Ivan Savenko ddff11184a Split AdventureSpellMechanics file on .h+.cpp per class basis 2025-07-07 17:28:16 +03:00
Ivan Savenko 5932e67568 Merge pull request #5875 from Laserlicht/patch-1
Fix AssetGenerator
2025-07-07 13:49:14 +03:00
Ivan Savenko ce4e37f2d9 Armies swap will now maintain unit ordering 2025-07-07 13:45:34 +03:00
Ivan Savenko 4fc63427b9 Fix events on .vmap's not activating on hero visit 2025-07-07 12:41:45 +03:00