| Die letzten Änderungen an "Return to the Roots" | ||||
|---|---|---|---|---|
| d9a4572 | s25client | 28.09.2026 23:55 | FloSoft |
Merge pull request #1886 from Flamefire/campaign Allow relative path for campaign images |
| d3c6c71 | s25client | 28.09.2026 23:52 | FloSoft |
Merge pull request #1972 from Flamefire/unused-cleanup Remove `SUPPRESS_UNUSED`, duplicate `isSoldierJob` and fix CMake version range issues |
| 82cd540 | s25client | 28.09.2026 23:50 | FloSoft |
Merge pull request #1976 from Return-To-The-Roots/road-refactor Return success indicator for BuildRoad and SetFlag |
| 29d3ecd | s25client | 28.09.2026 23:48 | FloSoft |
Merge pull request #1974 from Flamefire/maxDiff-fix Fix `absDiff` |
| a131e83 | s25client | 28.09.2026 23:47 | FloSoft |
Merge pull request #1984 from Flamefire/fix-bob-crash Fix out-of-bounds access to override BOBs ny-offset |
| ff0200e | s25client | 28.09.2026 23:45 | FloSoft |
Merge pull request #1986 from jarvis-jhk/fix/ai-battle-log-dir ai-battle: log to the user data folder, not ./logs |
| 516bfaf | s25client | 27.09.2026 11:37 | JARVIS |
ai-battle: log to the user data folder, not ./logs Without a log path set, LOG writes to ./logs relative to the working directory; when that folder does not exist, the first Lua error or AI log line dies with "Could not open logs/... for writing" instead of the real message. Use RTTR's logs folder and create it, as the game does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
| dc38c36 | s25client | 27.09.2026 11:37 | JARVIS |
Guard IsBuildingEnabled against a missing game interface GamePlayer::IsBuildingEnabled dereferenced world.GetGameInterface() unconditionally for human players. Without a GUI (headless runs, tests) that is null, so any disabled building (every campaign mission disables some) crashed there. Guard it like the other GetGameInterface() uses: no interface, no cheats. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
| 6e80cac | s25client | 23.09.2026 11:15 | Flamefire |
Fix out-of-bounds access to override BOBs ny-offset In `glArchivItem_Bob::mergeLinks` the ny-offset array for additional Bobs was not resized leading to an OOB access when accessing the sprites after #1968 Fix by using a single array instead. Fixes #1982 Fixes #1983 |
| 22754f4 | libsiedler2 | 23.09.2026 11:12 | Flamefire |
Merge `spriteOverlayIdx` & `spriteOverlayNyOffset` Avoids having mismatching sizes of the arrays. |
| 2f2104d | s25client | 09.09.2026 03:58 | MichalLabuda |
Store the addon in AddonGui instance Avoid indexing the addon list in parallel which is error prone |
| 4623d2f | s25client | 08.09.2026 10:56 | Flamefire |
Merge pull request #1951 from MichalLabuda/addon-presets Add Addon presets |
| 73aafa2 | s25client | 07.09.2026 15:35 | Flamefire |
Store addon window/group in AddonGUI instance Avoid repeated getting of the window which is error prone |
| 42a3d70 | s25client | 06.09.2026 02:07 | Michał Łabuda | Merge branch 'master' into addon-presets |
| 4c52e76 | s25client | 04.09.2026 23:35 | FloSoft |
Merge pull request #1978 from Flamefire/skip-fix Fix hanging game after skipping |
| 81e0a2e | s25client | 04.09.2026 22:47 | Flamefire |
Fix hanging game after skipping When skipping the GameServer will accumulate executed time. After skipping is done the next GF will be executed when the time passed is bigger than 1 GF length. However the realtime clock would first need to catch up to the "game clock" which is significantly ahead. Use the same approach as in `GameClient`: When skipping mark the game clock such that the next unskipped GF will be run exactly 1 GF length after the last execution of the skipped GF. Fixes #1975 |
| 3111222 | s25client | 03.09.2026 16:24 | Michał Łabuda | Merge branch 'master' into addon-presets |
| 8dc1386 | s25client | 01.09.2026 22:29 | Flamefire |
Rename points in World::BuildRoad The mix of `curPoint` and `end` is confusing. Make them clear. |
| f4370d8 | s25client | 01.09.2026 21:20 | Flamefire |
Return success indicator for BuildRoad and SetFlag Useful for tests. BuildRoad returns the end point calculated from the route. |
| 320f32b | s25client | 01.09.2026 02:51 | Michał Łabuda | Merge branch 'master' into addon-presets |
| 1813dfc | s25client | 31.08.2026 23:33 | FloSoft |
Merge pull request #1973 from Return-To-The-Roots/clamp-fix Fix ambiguous clamp and switch to `std::chrono::milliseconds` |
| 44d7899 | s25client | 31.08.2026 13:32 | Flamefire | Fix spelling of Length |
| d8440ca | s25client | 31.08.2026 11:06 | Flamefire |
Fix `absDiff` Assert that it is indeed called with unsigned values. Fix the violation. |
| 163ec7a | s25client | 28.08.2026 12:02 | Flamefire | Add `assertNonNull` |
| 2907dc1 | s25client | 28.08.2026 11:29 | Flamefire | Factor out type-agnostic helper for GameEvent time interpolation |
| 6277878 | s25client | 27.08.2026 14:40 | Flamefire |
Disable clang-format for a line it keeps changing For some reason it sometimes adds a space before `&` |
| c771302 | s25client | 27.08.2026 12:50 | Flamefire | Use `std::chrono::milliseconds` consistently. |
| fcab253 | s25client | 27.08.2026 12:25 | Flamefire | Use `std::chrono::milliseconds` for game speed |
| de53cb1 | s25client | 26.08.2026 23:01 | Flamefire |
Merge pull request #1969 from ottml/fix_trading_overflow Fix underflow when trading |
| fac0308 | s25client | 26.08.2026 22:08 | Flamefire | Move `initGameRNG` to fixture |
| 332b143 | s25client | 26.08.2026 15:15 | sunrise | Code review |
| 144b846 | s25client | 26.08.2026 13:45 | sunrise | Use better name |
| 7e655f0 | s25client | 26.08.2026 13:18 | Flamefire | Ignore opencode config |
| 0fa587b | s25client | 26.08.2026 13:02 | Flamefire | Continue other CI jobs even on failure |
| bacf0fe | s25client | 24.08.2026 22:15 | Flamefire |
Remove duplicate `isSoldierJob` It's the same as `isSoldier` so rename/remove it. |
| 151a3fb | s25client | 24.08.2026 21:51 | Flamefire |
Remove use of `SUPPRESS_UNUSED` - Use `constexpr` instead of `const` - Use `[[maybe_unused]]` where applicable - Remove includes - Also shorten array-types to use CTAD instead of specifying the template params explicitely |
| 32d5ac7 | s25update | 24.08.2026 21:41 | Flamefire |
Fix dangling reference. `.str()` returns a string which is destroyed if not stored. So `.str().c_str()` yields a dangling pointer which effectively is a use-after free. |
| 12e8d9d | libutil | 24.08.2026 21:40 | Flamefire |
Remove `SUPPRESS_UNUSED` C++17 supports the `[[maybe_unused]]` attribute which makes the macro redundant. Convert the source to that instead to stay consistent. |
| 8d5ed0d | libutil | 24.08.2026 21:38 | Flamefire |
Update message on which Boost is used The setting for static/dynamic Boost is enforced by the Boost CMake config files. So the "either static or dynamic" option is no longer applicable. |
| 557b444 | s25client | 24.08.2026 21:33 | Flamefire |
Fix ambiguous clamp C++17 introduced `std::clamp` which makes passing a type from std namespace (such as chrono-types) ambiguous in the semi-recursive call. Use constexpr-ifs and `std::clamp` in the final path. |
| 88334c9 | s25client | 24.08.2026 21:33 | Flamefire | Fix missing space in CMake message |
| a8827b4 | s25client | 24.08.2026 20:11 | ApexFlex | Seed AI RNG deterministically on game start for reproducibility (#1956) |
| c112b2b | s25client | 17.08.2026 16:36 | sunrise | Return correct value for GetAvailableFiguresForTrading if not Job Helper |
| fdfd501 | s25client | 17.08.2026 16:35 | sunrise | Fix overflow |
| 5609a52 | s25client | 17.08.2026 16:34 | sunrise | Add test for overflow when trading less figures as in the nearest store house |
| 5ae47af | s25client | 13.08.2026 15:02 | Michał Łabuda | Merge branch 'master' into addon-presets |
| 5aef739 | s25client | 12.08.2026 15:05 | Flamefire |
Merge pull request #1961 from tost11/feature/fix-emergency-protocol fixed emergency protocol by removing sheduled wares requested before ... |
| 1fd8fe0 | s25client | 12.08.2026 13:13 | Flamefire | Merge branch 'master' into feature/fix-emergency-protocol |
| 48b813d | libutil | 12.08.2026 01:33 | Flamefire | Modernize span.hpp |
| 3fbfa86 | s25client | 11.08.2026 22:35 | Flamefire |
Make `HQPlacement` test more reliable Don't require ALL positions to be different. |