1
0
mirror of https://github.com/vcmi/vcmi.git synced 2026-06-11 22:31:57 +02:00

1716 Commits

Author SHA1 Message Date
Ivan Savenko 40ebce8da3 Fix discovered regressions 2026-06-03 16:46:55 +03:00
Ivan Savenko bb05dd89e6 Implemented calendar-aware reset for rewardables 2026-06-02 20:07:11 +03:00
Ivan Savenko de4395f1f7 Added Calendar class to replace getDate() method
Calendar wraps all game date management, including week & month
duration.

Temporarily removed unused Lua bindings to getDate
2026-06-02 20:07:11 +03:00
Ivan Savenko ca03be65fc Merge pull request #7323 from IvanSavenko/scripting
[1.8] Lua scripting support part 2
2026-05-28 22:32:13 +03:00
Ivan Savenko 59ebf3c504 Merge pull request #7341 from GeorgeK1ng/native_terrains
Add multiple nativeTerrains support
2026-05-28 03:38:12 +03:00
George King ae30135685 Apply remaining changes 2026-05-27 23:43:37 +02:00
Ivan Savenko aac1331f9b Merge pull request #7320 from GeorgeK1ng/mines
[1.8.0] Mines improvements
2026-05-27 22:36:11 +03:00
George King 77b94755ca Revert change 2026-05-27 20:16:48 +02:00
George King bebee22825 Update lib/mapObjects/MiscObjects.cpp
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2026-05-27 19:46:33 +02:00
George King 6ed4b97485 Latest changes (#184)
* fix text

* removed unused var

* fix android build

* code review

* add modscope

* fixes

* Start game improvements

* Improve multiplayer selection dialog

* Fix random map generating

* Fix maps filtering performance issue

* Make custom size dialog title yellow as other titles

* Reorder host and join buttons in main menu

* code review points

* remaining code review points

* allow to open wiki from main menu (needs custom main menu)

* list layout double height

* layout

* add mod page

* wiki adventure option

* use icons as table header in wiki

* panning fix

* small text fix

* smooth scroll in cviewport for panning

* fix text bounding

* fix redraw

* Adds disposed heroes selector to map editor

* Fixes a bug where a disposed hero could be chosen as the random starting hero

* disable hover effect for panning

* allow Inertia also for gamelist and objectlist

* add Inertia for missing wiki lists

* Generate Stack Experience Detail window

* Auto-update VCMI Qt translation files

* Fix asset gen

* MapEditor adds portraits to hero settings

* improve highlighted state for selected wiki element

* support for custom description/icon in wiki bonus

* markdown parser; fix center (entries); fix highlight

* allow to load english strings, when there is no translated ones

* implement anchors for wiki

* fix docs

* changed to dict to allow assembleFromFIle

* possiblity to define own categories

* no sorting for custom categories

* add possibility to do cutom order

* fix docs linter error

* language fallback fix (when partially translated)

* blockquotes, text styles and code(blocks)

* fix translation edge case

* add movement costs and spell school

* refactor to avoid copied code

* fix inline line break

* refactor to seperate functions

* make sonarcloud happy

* fixed sonarcloud and horicontal scrollbar

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (1105 of 1105 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (1099 of 1099 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (1099 of 1099 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/uk/
Translation: VCMI/Game client

* Translated using Weblate (Swedish)

Currently translated at 100.0% (416 of 416 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (1179 of 1179 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (925 of 925 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (1105 of 1105 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (1099 of 1099 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (925 of 925 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (416 of 416 strings)

Co-authored-by: Maurycy <maurycy.domaradzki@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/sv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/editor/sv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/launcher/sv/
Translation: VCMI/Game client
Translation: VCMI/Launcher
Translation: VCMI/Map Editor

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1099 of 1099 strings)

Co-authored-by: Francisco Serrador <fserrador@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/es/
Translation: VCMI/Game client

* Translated using Weblate (Czech)

Currently translated at 98.7% (411 of 416 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (1099 of 1099 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (925 of 925 strings)

Co-authored-by: George King <George.King@seznam.cz>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/cs/
Translate-URL: https://hosted.weblate.org/projects/vcmi/editor/cs/
Translate-URL: https://hosted.weblate.org/projects/vcmi/launcher/cs/
Translation: VCMI/Game client
Translation: VCMI/Launcher
Translation: VCMI/Map Editor

* Translated using Weblate (Japanese)

Currently translated at 97.0% (1069 of 1102 strings)

Translated using Weblate (Japanese)

Currently translated at 96.9% (1066 of 1099 strings)

Co-authored-by: Carson_N <sakai46jp@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ja/
Translation: VCMI/Game client

* Translated using Weblate (German)

Currently translated at 100.0% (1179 of 1179 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1099 of 1099 strings)

Co-authored-by: Laserlicht <13953785+Laserlicht@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/de/
Translation: VCMI/Game client

* Translated using Weblate (German)

Currently translated at 100.0% (1105 of 1105 strings)

Translated using Weblate (German)

Currently translated at 100.0% (416 of 416 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1099 of 1099 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/de/
Translate-URL: https://hosted.weblate.org/projects/vcmi/launcher/de/
Translation: VCMI/Game client
Translation: VCMI/Launcher

* Translated using Weblate (Russian)

Currently translated at 88.2% (970 of 1099 strings)

Co-authored-by: Konrad Donner <konrad800@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ru/
Translation: VCMI/Game client

* refactored; removed some markdown functionality

* remove leftover

* last leftover

* Make Stack Experience Details Window dynamic and standalone

* Fix missing class includes

* Fix background table data rows

* Remove unneded strings, fix stack bonuses

* Fix generated icons, fix bonuses, add missing strings

* Language strings cleanup, correct stack experience bonus source indicator

* Center scenario selection

* Fix missing include

* Switch lobby from `beholder.vcmi.eu` to `lobby.vcmi.eu`

* Add time tracker to all lobby database calls

* Add existing lobby database schema to config

* Remove no longer relevant code, add missing indexes to SQL schema

* Add untested DB upgrade script

* Generate .deb archive as part of lobby test CI run

* Mods active in room are now stored in separate table

* Better db upgrade script

* Fix bugs discovered during tests

* Do not abort lobby server on database access from another process

* Update docs

* API docs should now match actual API reply

* Only send update on a single room when romm is changed

* Fix issues found in review

* Dump performance metrics daily

* Update docs

* Fix regressions

* Better translation exporting for mods

Better version of translation exporting logic. Compared to existiing
version it:
- places generated json's in same directory structure as recommended for
mods (`modname/Content/configtranslation/language.json`). Files are
placed in same directory before (`exported`) to reduce chance of
information loss on overwrite
- (mostly) correctly handled mods that overwrite strings from another
submod of the same mod. For now only simple cases are handled (within
same mod, and without long overwrite chains), which seems to be
sufficient for existing mods

New translation is done by server (vcmiserver / VCMI_Server.exe) and not
by client command - this is due to reloading of library in runtime which
at the moment can't be done on client, especially during ongoing game

* Use strict json validation for translations

* Export campaigns and maps in mod that added map/campaign

* Add weblate docs

* Update docs

* Address comments

* Leftover removal

* Fix Begin button blink, statusbar and Sonar

* Merge pull request #7292 from vcmi/weblate

Translations update from Hosted Weblate

* Fix datarowws logic + Experience description

* fix panning for wiki

* improve scrollbar thumb

* Fixes for lobby regressions

- Fixed client not handling updateGameRoom message for new rooms
- Fixed account ID not updating correctly when using account details
from beholder for lobby domain name
- Removed unnecessary sending of all game rooms when server starts
connection. Now list is only send once connection is done
- Reverted some changes for 1.7.3 compatibility

* Changelog for 1.7.4

* wiki improvements

* remove not needed includes

* more places to open wiki

* fix history

* Workaround for loading vmap's with invalid spells

* Optimize getActiveGameRooms call

This call currently takes large part of DB access time.

According to EXPLAIN QUERY PLAN it looks like WHERE xxx IN(1,2,3) causes
SQLite to use full table SCAN instead of using available index.

For getActiveGameRooms this change decreases query time from ~60-70 ms
to <1 ms

* add statistic button

* disable mapeditor if demo is used

* fix progrssbar for demo

* fix position for demo buttons

* disable lobby button for demo

* fixed missing building icons in demo

* Fix Start button handling for all multiplayer games

* ReRun CI

* Merge pull request #7311 from GeorgeK1ng/map_format

[1.7.4] Improve WoG map support

* Apply code review and simplify

* Fix Sonar warning

* added missing translation

* Fix another Sonar warning

* Code review

* Fix compile

* Release preparation for 1.7.4

- Updated changelog with final changes
- Changed Android build ID to next available
- Updated Readme to include new release counter
- Set release date to 17th May

Changes in code
- Fixed possible crash in high scores on having two creatures with same
ID from different mods

* fix scroll

* fixes difficulty icons click when in chat

* more places for inertia scroll

* fix flickering number when changing camp bonus selection

* reset filter when navigate in wiki

* simplifies hash_value method of int3

* Merge pull request #7303 from vcmi/weblate

Translations update from Hosted Weblate

* Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/be/
Translation: VCMI/Linux metadata

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (French)

Currently translated at 11.2% (136 of 1206 strings)

Translated using Weblate (Swedish)

Currently translated at 98.5% (1188 of 1206 strings)

Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/sv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/be/
Translation: VCMI/Android
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Dutch)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 74.7% (902 of 1206 strings)

Translated using Weblate (French)

Currently translated at 11.2% (136 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ro/
Translation: VCMI/Game client

* Translated using Weblate (Dutch)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 74.7% (902 of 1206 strings)

Translated using Weblate (French)

Currently translated at 11.2% (136 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ro/
Translation: VCMI/Game client

* Translated using Weblate (Dutch)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 74.7% (902 of 1206 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (18 of 18 strings)

Translated using Weblate (French)

Currently translated at 11.2% (136 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ro/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/uk/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Dutch)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 74.7% (902 of 1206 strings)

Translated using Weblate (Vietnamese)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/bg/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/vi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ro/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/uk/
Translation: VCMI/Android
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Latvian)

Currently translated at 79.6% (960 of 1206 strings)

Translated using Weblate (Vietnamese)

Currently translated at 78.6% (949 of 1206 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/lv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/vi/
Translation: VCMI/Game client

* Translated using Weblate (Vietnamese)

Currently translated at 78.6% (949 of 1206 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/vi/
Translation: VCMI/Game client

* Translated using Weblate (Polish)

Currently translated at 100.0% (18 of 18 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (18 of 18 strings)

Translated using Weblate (Japanese)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Serbian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Latvian)

Currently translated at 79.6% (960 of 1206 strings)

Translated using Weblate (Russian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Vietnamese)

Currently translated at 78.6% (949 of 1206 strings)

Translated using Weblate (Italian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/lv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/vi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/it/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ja/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/pl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ru/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/tr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/zh_Hans/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Hungarian)

Currently translated at 45.0% (543 of 1206 strings)

Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Latvian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Portuguese)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Japanese)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Serbian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Italian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Filipino)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Japanese)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Latvian)

Currently translated at 79.6% (960 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Russian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Vietnamese)

Currently translated at 78.6% (949 of 1206 strings)

Translated using Weblate (Italian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/fil/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/it/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/ja/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/lv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/pt/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/ro/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/hu/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ko/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/lv/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/vi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/it/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ja/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ru/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/zh_Hans/
Translation: VCMI/Android
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Turkish)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Ertuğrul Hazar <ertugrulhazar@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/tr/
Translation: VCMI/Linux metadata

* Translated using Weblate (Serbian)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Portuguese)

Currently translated at 48.0% (579 of 1206 strings)

Translated using Weblate (Hungarian)

Currently translated at 45.0% (543 of 1206 strings)

Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/hu/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ko/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/pt/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/pl/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Hungarian)

Currently translated at 45.0% (543 of 1206 strings)

Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/hu/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ko/
Translation: VCMI/Game client

* Translated using Weblate (Serbian)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (French)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Portuguese)

Currently translated at 48.0% (579 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Hungarian)

Currently translated at 45.0% (543 of 1206 strings)

Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/hu/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ko/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/pt/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/el/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ro/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Serbian)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (French)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Portuguese)

Currently translated at 48.0% (579 of 1206 strings)

Translated using Weblate (Romanian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/pt/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/el/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ro/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (German)

Currently translated at 100.0% (18 of 18 strings)

Translated using Weblate (Serbian)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Portuguese)

Currently translated at 48.0% (579 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/pt/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/de/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Filipino)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Spanish)

Currently translated at 90.0% (1086 of 1206 strings)

Translated using Weblate (German)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/bg/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/es/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fil/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/de/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Filipino)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/bg/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fil/
Translation: VCMI/Game client

* Translated using Weblate (Filipino)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/bg/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fil/
Translation: VCMI/Game client

* Translated using Weblate (Hungarian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Filipino)

Currently translated at 79.1% (955 of 1206 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/bg/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/fil/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/hu/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Serbian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Italian)

Currently translated at 45.1% (545 of 1206 strings)

Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Hungarian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/be/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/ko/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/sr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/it/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/hu/
Translation: VCMI/Android
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Italian)

Currently translated at 45.1% (545 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/it/
Translation: VCMI/Game client

* Translated using Weblate (Italian)

Currently translated at 45.1% (545 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/it/
Translation: VCMI/Game client

* Translated using Weblate (Vietnamese)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Filipino)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Italian)

Currently translated at 45.1% (545 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/it/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/fil/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/vi/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 79.9% (964 of 1206 strings)

Translated using Weblate (Russian)

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Vietnamese)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Finnish)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Filipino)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/ru/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/fi/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/fil/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/vi/
Translation: VCMI/Android
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nb_NO/
Translation: VCMI/Game client

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nb_NO/
Translation: VCMI/Game client

* Translated using Weblate (Latvian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 79.9% (964 of 1206 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/lv/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Latvian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/be/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/lv/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Russian)

Currently translated at 79.4% (958 of 1206 strings)

Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/be/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ru/
Translation: VCMI/Game client

* Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/be/
Translation: VCMI/Game client

* Translated using Weblate (Swedish)

Currently translated at 100.0% (18 of 18 strings)

Translated using Weblate (Russian)

Currently translated at 79.4% (958 of 1206 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Belarusian)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/be/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ru/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/bg/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/sv/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 1206 strings)

Translated using Weblate (Russian)

Currently translated at 79.4% (958 of 1206 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/el/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/ru/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/bg/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Swedish)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Maurycy <maurycy.domaradzki@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/sv/
Translation: VCMI/Linux metadata

* Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Nowy dzień <literad@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/el/
Translation: VCMI/Game client

* Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/el/
Translation: VCMI/Game client

* Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Portuguese)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Dutch)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 1206 strings)

Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/el/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ko/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/pt/
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Korean)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (Turkish)

Currently translated at 88.7% (1070 of 1206 strings)

Translated using Weblate (Hungarian)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Portuguese)

Currently translated at 0.0% (0 of 18 strings)

Translated using Weblate (French)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Dutch)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Dutch)

Currently translated at 0.0% (0 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/fr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/hu/
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/tr/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/ko/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/nl/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/pt/
Translation: VCMI/Android
Translation: VCMI/Game client
Translation: VCMI/Linux metadata

* Translated using Weblate (Spanish)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Deleted User <noreply+36847@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/es/
Translation: VCMI/Linux metadata

* Translated using Weblate (Czech)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: George King <George.King@seznam.cz>
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/cs/
Translation: VCMI/Linux metadata

* Translated using Weblate (Greek)

Currently translated at 0.0% (0 of 2 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/el/
Translate-URL: https://hosted.weblate.org/projects/vcmi/linux/cs/
Translation: VCMI/Android
Translation: VCMI/Linux metadata

* Update translation files

Updated by "Remove blank strings" add-on in Weblate.

Update translation files

Updated by "Remove blank strings" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/vcmi/android/
Translate-URL: https://hosted.weblate.org/projects/vcmi/client/
Translation: VCMI/Android
Translation: VCMI/Game client

* Fixes for crashes in 1.7.4 beta

- Fixed crash in MP between 1.7.3 and 1.7.4 on opening exchange window
- Fixed crash if creature with area attack and death blow attacks empty
space (Magog in WoG)
- Fixed crash on formatting of spell effect preview text
- Fixed crash if hero has invalid path (e.g. blocked by another hero)
and player attempts to end turn
- Try to fix crash on opening battle-only mode in some cases(?)

* fix color in template editor

* update dependencies submodule and docs

* only skip portrait only

* add keyboard navigation

* respect custom name/bio/icon for hero if map is loaded

* Added support for Traditional Chinese

Requested via Weblate

- renamed existing "Chinese" to explicit "Simplified Chinese"
- existing `chinese` tag is kept as it - for compatibility with existing
mods
- regenerated launcher and map editor translations

* add dwellings for creatures

* Add more detailed documentation for translations

* Center scenario selection based on UI enhancements setting

* Fix bug where gate does not open

* Fix bug where flyers could not fly-and-attack into moat

* fixes local includes

* mapeditor: adds a widget for editing witch hut preset abilities

* Battle: fix defender-hero hit-test using wrong hero's rect

BattleFieldController::getHexAtPosition() resolved the defending-hero
region with the attacking hero's rectangle (owner.attackingHero->pos)
inside the defendingHero branch. Use owner.defendingHero->pos. This also
avoids a null dereference when the attacker has no hero (e.g. a wandering
monster attacking a hero), where owner.attackingHero is null.

Fixes #7364

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Battle obstacle positioning fixes

Removed multiple hacks in battle obstacle positioning logic.

Now position of image no longer depends on order of blocked tiles or
relies on image size hacks - instead it depends only on obstacle
`height`.

Also added debug command `/obstacles debug` that exports all in-game
obstacles (non-absolute for now) with overlay that shows how obstacle
will look like in combat - how it will be placed across hexes, and which
hexes will be blocked. NOTE: command is only usable during combat.

* Deterministic AI - do not rely on pointer ordering

This replaces std::maps that use hero instance pointer as key with
std::maps with custom comparator that guarantees same element order

Should prevent potential non-reproducible behavior in AI

* Support for arbitrary tags for skills

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)

* Try to fix macro expansion errors on vcmi.eu

* Allow flying units to attack from quicksand hex

* Replace boost locale with iconv

* Remove .zip wrapper from Github artifacts

`upload_artifact` and `download_artifact` now support unzipped, single-
file artifacts

This allows to remove .zip wrapper from our daily builds, including our
zip-in-zip Windows installer-less builds

---------

Co-authored-by: Laserlicht <13953785+Laserlicht@users.noreply.github.com>
Co-authored-by: Opuszek <panopuszek@gmail.com>
Co-authored-by: IvanSavenko <1576820+IvanSavenko@users.noreply.github.com>
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
Co-authored-by: Maurycy <maurycy.domaradzki@outlook.com>
Co-authored-by: Francisco Serrador <fserrador@gmail.com>
Co-authored-by: Carson_N <sakai46jp@gmail.com>
Co-authored-by: Karyoplasma <karyoplasma@proton.me>
Co-authored-by: Konrad Donner <konrad800@gmail.com>
Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Laserlicht <laserlicht@users.noreply.github.com>
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Nowy dzień <literad@protonmail.com>
Co-authored-by: Ertuğrul Hazar <ertugrulhazar@gmail.com>
Co-authored-by: Deleted User <noreply+36847@weblate.org>
Co-authored-by: Andrey Filipenkov <decapitator@ukr.net>
Co-authored-by: Simeon Manolov <s.manolloff@gmail.com>
Co-authored-by: Lyle Underwood <lyleunderwood@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 16:03:14 +02:00
George King 1d309b99d0 Code cleanup and review 2026-05-27 14:46:30 +02:00
George King 42f9003915 Add missing condition 2026-05-27 00:08:11 +02:00
George King 19bf70b310 Improve strings handling, fix guards assigning 2026-05-26 22:15:59 +02:00
George King 83c48f715c Make all mines strings configurable in JSON 2026-05-26 19:04:41 +02:00
Ivan Savenko 8eb01785cf Move CSpell into a separate file 2026-05-26 19:21:11 +03:00
George King fd6e20d3e9 Refactor conditional logic for dialog text 2026-05-21 21:46:57 +02:00
Ivan Savenko e0552e79ae Merge branch 'master' into 'develop' 2026-05-20 17:08:27 +03:00
George King 691d555a0a Enhance guarded mine dialog and guardian setup
Updated the dialog text handling for guarded mines and added logic to configure guards based on resources.
2026-05-13 11:11:37 +02:00
Ivan Savenko 0797024e48 Workaround for loading vmap's with invalid spells 2026-05-09 23:57:24 +03:00
Laserlicht 17c7c62104 Merge branch 'develop' into mepeditor_android 2026-05-05 00:47:39 +02:00
Ivan Savenko 6ad93dd3eb Reworked Lua API type safety
- 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
2026-04-30 18:00:38 +03:00
Ivan Savenko 24e8c26ec7 Remove unfinished ERM scripting module 2026-04-30 17:45:02 +03:00
Ivan Savenko 03d7d15348 Merge pull request #7283 from IvanSavenko/sonar
[1.8] Fix new Sonar warnings
2026-04-30 17:42:14 +03:00
Ivan Savenko 3ab30dbb4d Merge branch 'vcmi/beta' into 'vcmi/develop' 2026-04-30 16:43:21 +03:00
Ivan Savenko 9d27acbc27 Fix new Sonar warnings 2026-04-30 15:38:57 +03:00
Ivan Savenko 4e4527a2da Merge pull request #7260 from GeorgeK1ng/dialog_with_status
[1.7.4] Generate background for Recruitment, University, Backpack and Spell Research dialogs
2026-04-28 13:55:33 +03:00
Ivan Savenko 424d89c8e4 War Machine Factory now also warns on replacing war machine 2026-04-23 17:42:48 +03:00
Ivan Savenko cc907f570b Fix formatting 2026-04-23 17:25:06 +03:00
Ivan Savenko f8851b0ed9 Fix spell icon size & Shrine hover text to match H3 2026-04-23 17:25:06 +03:00
Andrej Dudenhefner 410d2c0623 add aviation
- add EPathfindingLayer `AVIATE` (different from `AIR`, can hover over free land and water)
- add transitions: `LAND` <-> `AVIATE` <-> `AIR` (cannot stop over obstacle)
- add layer specification to `MoveHero` destination handling
- add path finder `AVIATE` rules
- add node storage `AVIATE` specifications
- add adventure map aviation interactions
- add EAdventureState `DISEMBARKING`
- add disembark shortcut Shift+D for `ADVENTURE_DISEMBARK`
- add cursor icons for aviation under CC-BY-SA license
- correct move point generation / consumption
- can buy an airship from Airship Yard on land and coast at fixed cost
- add localization
2026-04-21 10:47:10 +02:00
George King 8ced16748e Support for generating dialogs with status bar 2026-04-20 02:37:17 +02:00
Laserlicht 1fb769c645 Merge branch 'develop' into mepeditor_android 2026-04-19 12:54:31 +02:00
George King 1d0a6198ff [1.7.4] Add Reinforcements spell support (#7217)
* 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
2026-04-19 12:10:24 +03:00
Laserlicht bb813c5f26 cleanup 2026-04-03 15:07:42 +02:00
Ivan Savenko 1a0c8bf8d9 Merge branch 'vcmi/beta' into 'vcmi/develop' 2026-03-31 23:05:13 +03:00
Laserlicht d92a566b9c initial mapeditor fupport for android 2026-03-30 23:01:24 +02:00
Boris Nagaev b05c0f8e6d Normalize local relative include directives
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.
2026-03-26 20:15:25 -05:00
Boris Nagaev 38bfd1c7e5 Fix broken relative local include paths
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.
2026-03-26 20:14:59 -05:00
Boris Nagaev 922018ae3e mapeditor: fix random artifact inspect crash
Selecting certain objects in the editor could abort both on a freshly generated
random map and after saving and reloading a map with random artifacts. The
runtime error was std::out_of_range from vector::_M_range_check, with __n shown
as 18446744073709551615, and the stack passed through
Inspector::updateProperties(CGArtifact*), CGArtifact::getArtifactInstance, and
CMap::getArtifactInstance.

The immediate problem was an unset ArtifactInstanceID (-1) on artifact-like
objects. Inspector asked for artifact instance unconditionally, and
CGArtifact::getArtifactInstance forwarded the invalid id into map storage.

The change handles this at both levels involved in the crash path. Inspector now
requests artifact instance only for spell scrolls, and CGArtifact now returns
nullptr when the stored id is unset.

A regression test in vcmitest now constructs EditorCallback + CMap + CGArtifact
with random artifact id and default stored instance, then checks that
getArtifactInstance does not throw and returns nullptr. It fails before the fix
with the same out_of_range path and passes after it.
2026-03-23 03:39:50 -05:00
Michał Zaremba 90f52c5928 Fix crash when updateProperties() is called for random artifacts
New function: isRandomArtifact(MapObjectBaseID id)
2026-03-06 16:40:44 +01:00
Ivan Savenko 20a379f740 Fixes for issues reported by Sonar 2026-02-01 15:31:36 +02:00
Ivan Savenko 82c38a4324 Fix build and tests, code review 2026-01-28 10:26:39 +00:00
Ivan Savenko bdebf6ab8b Reworked bonus addInfo into more extensible and type-safe form
- addInfo is now named parameters internally
- CAddInfo class renamed to BonusParameters
- parameters are now stored as const shared_ptr in bonus
- parameters now contain variant of all possible types instead of just
integer array
- no changes to existing mods
2026-01-27 18:25:33 +00:00
Ivan Savenko f7c1cab99c Add movement points limiter to rewardable objects
Now movement points have same level of functionality/checks as mana
points:

- support for test for movement points in limiter
- support for test for movement points percentage in limiter
- support to block granted movement points to go above hero limit
2026-01-27 18:21:51 +00:00
Ivan Savenko fa2ab0e024 Merge pull request #6783 from Laserlicht/tactics
[1.7.2] implement disabling of tactics
2026-01-27 17:13:20 +02:00
Ivan Savenko 0d2f26b653 Run unit tests as part of cross-repository PR 2026-01-25 21:21:01 +00:00
Laserlicht 1a5eaee157 implement disabling of tactics 2026-01-25 14:18:20 +01:00
Ivan Savenko 42cbfd3e04 Merge pull request #6608 from IvanSavenko/hota_mapsupport
[1.7.2?] More improvements for hota h3m support
2026-01-18 00:52:25 +02:00
Ivan Savenko 825c60552c Fix issues with map support discovered after testing 2026-01-17 11:51:07 +00:00
Ivan Savenko c62339fdb1 Merge branch 'beta' into mplace_bon 2026-01-16 22:48:26 +02:00