## ihhub/fheroes2 — fheroes2-psv-sdl2_dev…fheroes2-switch-sdl2_dev

_459+ commits._

### Features
- **GitHub Actions: add Nintendo Switch as build target (#3928)** (76a3aad)
- **Add hotkeys for Well dialog (#3934)** (7262f68)
- **Update skill order for new heroes (#3930)** (3c2fef7)
- **Add normal Game settings dialog (#3936)** (da9986c)
- **Add monster names, abilities and hero skills to translations (#3913)** (5aa3c38)
- **Add font checksums for Polish / German / alt. Russian (XXI Vek) versions (#3910)** (7e5673f)
- **Add language selection window (#3897)** (85c946d)
- **Add support for town hotkeys in fheroes2.key (#3885)** (0799b83)
- **Remove Unicode support (#3886)** (1c9b08e)
- **Add translation support without Unicode (#3869)** (67b8443)
- **Add clang-tidy integration (#3815)** (764c047)
- **Add 500 experience for conquering a town regardless of defending hero existence (#3837)** (e9f57a2)
- **Add additional getFilesFromDirectory() filtering on Vita (#3835)** (2450c26)
- **Add Alchemist Tower to the list of objects to be avoided by AI (#3803)** (05d4852)
- **Add Bane / Alliance monster behavior for campaign scenarios (#3792)** (d7cc213)
- **Add an option to restart Campaign scenario (#3790)** (6d1bf49)
- **Add morale and luck normalize functions (#3773)** (699589b)
- **Add link to code style (#3781)** (023b2c3)
- **Add extra conditions for object visiting by AI (#3762)** (a46e725)
- **Add -Wextra-semi compilation warning flag for makefile compilation (#3711)** (5fc9954)
- **CMake: Add WITH_DEBUG flag for Debug build type (#3694)** (caa760b)

### Fixes
- **Fix incorrect icons for scenario information dialog (#3940)** (ca88f19)
- **Fix attacking after turning back in some cases (#3937)** (e0bffa5)
- **Fix an assertion call during battle shadow rendering (#3931)** (6e4841d)
- **iconv: fix transliteration issues for certain languages (#3932)** (a1bb83c)
- **Fix AI archer avoid hand battle logic (#3920)** (d0ce362)
- **Fix UI defects in Kingdom castle dialog (#3921)** (e4640de)
- **Fix infinite loop after chain lightning spell (#3914)** (988364f)
- **Fix town fog area revealing (#3904)** (6acf701)
- **Fix incorrect cursor icon over castle (#3902)** (5351e35)
- **Fix FHEROES2_IMAGE_SUPPORT build (#3879)** (1c5917b)
- **Fix English phrasing and punctuation (#3891)** (71a8096)
- **Fix simultaneous activation of buttons in hero meeting screen (#3892)** (7051485)
- **Fix missing castle list (#3874)** (030b8d8)
- **Clang-Tidy: fix repo checkout for pull_request_target (#3854)** (8920b3c)
- **Fix inifinte loop during AI turn (#3852)** (1e5d01e)
- **Fix missing monster spell casting during battles (#3826)** (be948bd)
- **Fix next hero choose logic (#3431)** (95fe29b)
- **Fix Wizards scenario 3 with custom Ultimate Artifact (#3839)** (a023697)
- **Fix crash in Maps::GetFreeIndexesAroundTile() (#3831)** (d7eb86b)
- **Fix typo in Fizbin Medal (#3825)** (3641737)
- **Fix small font for russian localization (#3816)** (87d8614)
- **Fix town passability for some cases (#3805)** (ffdb801)
- **Fix placement of creatures during Month of Monster event (#3791)** (750c49e)
- **Update translation files and fix in-game translation function (#3778)** (2c5d674)
- **Fix passabilities for old saves being resaved (#3783)** (ce8916e)
- **Fix passabilities for old save files (#3776)** (17f6f60)
- **Fix displayed object info in popup dialogs (#3757)** (fcf9221)
- **Fix passabilities of objects on map (#3756)** (dcf2992)
- **Fix multiple issues with castle music (#3768)** (036877d)
- **Fix disembarkation on coast during diagonal move (#3553)** (89259fb)
- **Fix blocking way AI heroes (#3760)** (ea7e93c)
- **Fix missing update in hero meeting dialog (#3753)** (59934c7)
- **Fix incorrect object sorting logic (#3752)** (3af923d)
- **Fix rendering priorities of map's objects (#3744)** (91b0277)
- **Fix the tileId calculation in Maps::GetAroundIndexes() (#3740)** (467029e)
- **Fix black screen for loading a campaign map without files (#3733)** (a2be1c5)
- **Fix Bone Dragons' description (#3729)** (4147467)

### Backend
- **Remove sortTiles flag from Maps::GetAroundIndexes (#3939)** (285a0dd)
- **Castle Construction Screen, Tavern, one of the heroes available in the tavern changes every time the save file is loaded (#3800)** (6ee3415)
- **Code style check workflow: use system clang-format-diff (#3908)** (50a3d17)
- **Remove unused functions (#3927)** (8689bc6)
- **Use erase-remove idiom (#3878)** (a151f45)
- **Don't play ambient sounds during AI turn, move all battle sound-related stuff to Battle::Interface (#3924)** (6f95583)
- **Delete the fixes.yml existence check - it is no longer needed (#3925)** (06d294a)
- **Remove some useless experimental options (#3922)** (92ad831)
- **AI: the first target of Chain Lighting can't be immune to it (#3918)** (8c74169)
- **Properly update artifact and resource sprites (#3766)** (91c3951)
- **Do not draw flags for puzzle image (#3917)** (4495ae8)
- **Highlight cells from where a monster will attack (#3911)** (f00d0d7)
- **Improve project description in README.md and docs/README.md (#3899)** (4aa6117)
- **Restore background music after playing short-term music effects (#3907)** (d130840)
- **Use equal operator results as arguments (#3872)** (19a3b59)
- **clang-tidy: disable cppcoreguidelines-pro-type-union-access (#3888)** (588ef87)
- **Don't run clang-tidy-pr-comments if there is no fixes.yml file (#3896)** (e2a2bb8)
- **Implement regular win/loss conditions for multiplayer mode (#3876)** (c325192)
- **Remove unused overload (#3895)** (f6028af)
- **Render on window resizing event (#3893)** (b5f99e5)
- **Implement Town Screen Hotkeys (#3641)** (cea9150)
- **Differentiate castle entrance and castle tiles (#3866)** (1d628f5)
- **Clang-Tidy: turn off non-private-member-variables-in-classes (#3871)** (1e7915c)
- **Implement the secure way to run clang-tidy checks from forks (#3867)** (672237e)
- **Build .mo files in CI pipelines (#3864)** (e20c0e9)
- **Small performance optimizations (#3861)** (f0cbf8d)
- **Use std::chrono::steady_clock instead of std::chrono::high_resolution… (#3860)** (3803e82)
- **Improve win/loss checks (#3769)** (37991cc)
- **Make AI to use Lich's ability properly (#3856)** (28a70b4)
- **Update ru/fr translations and the Makefile (#3838)** (a2c49e5)
- **Use explicit get methods instead of operator() (#3822)** (05d8fad)
- **Don't run the Clang-Tidy workflow on PRs from forks (#3857)** (615e3d1)
- **Group duplicated switch branches (#3851)** (a168024)
- **Clang-Tidy: disable cppcoreguidelines-pro-bounds-pointer-arithmetic and modernize-use-auto (#3855)** (895bc89)
- **Make fog discovery by AI more efficient (#3853)** (dabcf9f)
- **Clang-Tidy: disable cppcoreguidelines-avoid-magic-numbers, readability-braces-around-statements and readability-magic-numbers (#3850)** (5f7ca9c)
- **Clang-Tidy: disable modernize-use-trailing-return-type and readability-implicit-bool-conversion, break list of checks into multiple lines (#3849)** (b780821)
- **Centering fast separation buttons (#3847)** (6965ef9)
- **Clang-Tidy workflow: use pull_request_target instead of pull_request (#3848)** (f6252dd)
- **Replace size() for checking emptiness of a container with empty() (#3818)** (8d3f903)
- **Remove required spellpoints from scroll in Mage Guild (#3774)** (03bdff1)
- **Replace System::GetEnvironment with getenv (#3817)** (12ebaec)
- **Refine battle pathfinding using a recursive greedy depth-limited approach (#2993)** (aa54134)
- **Align text evenly inside secondary skill window (#3836)** (c6310f8)
- **Display translated text in campaign dialog (#3820)** (b28bb23)
- **If the hero's army does not have any of the original troops left alive at the end of the battle, then the hero should lose (#3809)** (53ec563)
- **Clean-up normalize functions (#3819)** (7578a8e)
- **Post-release removing of unused headers and forward declarations (#3827)** (56ed480)
- **DialogBattleNecromancy(): set cursor to Cursor::POINTER (#3811)** (a432485)
- **Remove redundant c_str() calls (#3806)** (15eb0b5)
- **Revert some auxiliary changes introduced in #3576 (#3810)** (44d971d)
- **AI should check if an object is guarded while unveiling fog (#3804)** (8e17c5f)
- **Removed Army::GetUniqueCount() and replaced it with AllTroopsAreSame() (#3799)** (9016188)
- **AI heroes don't ever capture empty castles (#3798)** (7fbf96d)
- **Version 0.9.5 (#3788)** (5c2be63)
- **Correct AI hero task management (#3794)** (3626550)
- **Code cleanup and binary removal (#3793)** (9d977c8)
- **Cleanup tools (#3784)** (9908c9e)
- **Improve the project website (#3749)** (08d10dc)
- **Settings cleanup (#3759)** (756f0d2)
- **Implement continuous scrollbar (#3741)** (f5f9a79)
- **Do not show x marker for fully built castle icon (#3789)** (64544ac)
- **Cannot summon boats close to some objects on a world map #2935 (#3767)** (3b3d1b6)
- **getFilesFromDirectory(): FindFirstFile() searches for both long and short variants of names, so we need additional filtering (#3782)** (df0a5b3)
- **Improve AI logic (#3779)** (f0602cb)
- **Don't reset mixer on each focus update (#3771)** (d0efeea)
- **Adventure map, Haunted and Abandoned Mines, the information about the number of ghosts is not indicated in the mine information window (#3754)** (2ae02b4)
- **Remove ARRAY_COUNT macro (#3735)** (0885419)
- **Make AI to use Hut of Magi and Jail objects (#3758)** (5a621e5)
- **CMake: Implementing optional deploy of demo data (#3698)** (41794a9)
- **Use spacebar only for activating object (#3755)** (f93bb04)
- **Cache campaign map data in Campaign::tryGetMatchingFile() to speed it up (#3743)** (598c2f6)
- **Maps::FileInfo: don't save the full path to the map file, save only the basename (#3724)** (fe35ea1)
- **Adventure map, AI behavior, red AI player's hero Thundax does not capture a defenseless castle (0.9.4 3612) (#3626)** (92aa1b7)
- **Make the separate page for installation instructions, improve README.md (#3697)** (2e0226c)
- **Improve GitHub Actions scripts (#3696)** (1646a17)
- **Remove unused MapMonster, MapArtifact and MapResource structs (#3726)** (d2a4c3b)
- **Replace find_if with more suitable function (#3730)** (d9d221d)
- **Remove unused headers and forward declarations (#3658)** (9efabb1)
- **Remove static game data from save files (#3727)** (1bd3893)
- **Set app version from AppVeyor (#3702)** (0596bcb)
- **Combine the functions Settings::GetListFiles() and Settings::FindFiles() into one, use the exact filename match in Settings::GetLastFile() (#3710)** (896288e)
- **Remove "world: use unique artifacts for morale/luck" option (#3715)** (5d3b508)
- **Remove "battle: skip increase +2 defense" option (#3714)** (2000eb6)
- **Small AI improvements (#3712)** (5af0edd)
- **Castle screen, Creature separation window, the sentence "Fast separation into slots:" and the graphic "2" are not displayed when there are only 2 creatures in the starting slot during the distribution between the hero's army and the garrison (#3628)** (e10ab3f)
- **Rework on monster related code and added monster description (#3699)** (683f0a2)
- **Install non-dev SDL packages by default (#3655)** (9fc4458)
- **Visit artesian spring once a week (#3543)** (f81db61)
- **Remove WITHOUT_ZLIB build option (#3695)** (b7eabc8)
- **Remove Travis-CI usage from the project (#3644)** (abcdeda)
- **Allow right click on captured artifact graphic to get information about the artifact (Issue #1513) (#3675)** (da697a7)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/ihhub/fheroes2?utm_source=github-action)._