Compare commits

..

1134 commits
master ... 1.16

Author SHA1 Message Date
Gunter Labes
24ccf8d8fd
Properly implement DO_NOT_MODIFY_CACHE
This fixes node_to_string() by making sure the node is really not modified.
2024-08-10 13:01:15 +02:00
Sergey Popov
fd28ec3077
wesnothd: avoid a race condition when logging on
Ensure that there is no coroutine yield between confirmation of login
and update of player_connections_. Otherwise another login under same
name could succeed if it happened before handle_player() which resulted
in an assert later.
2024-08-10 11:03:15 +02:00
Steve Cotton
49c8c6ee00 CI: Use the macos-12 disk image instead of macos-11.0
Copy and paste from 1.18.2's setup. The other platforms are left
unchanged, except for using new versions of Github Actions
scripts, so there's still a docker.sh and a ubuntu.sh in the
directory that macos.sh is removed from.

Only the debug and translations builds are done on MacOS. The
release build would need signing to be set up.
2024-07-07 20:22:23 +02:00
Steve Cotton
bf5a26c58c 1.16.12+dev
I have no expectation that we'll release a 1.16.13, but it's still
useful to know which builds were from exactly the 1.16.12 tag.
2024-07-07 20:22:23 +02:00
pentarctagon
38dd046398 1.16.12 2024-03-17 20:45:44 -05:00
pentarctagon
cbffb7caed pot-update and regenerate doc files 2024-03-17 20:44:03 -05:00
pentarctagon
3eda6e4b61 changelog_entries 2024-03-17 20:40:49 -05:00
Wedge009
197bb5ee47 Set gold laurel first in case of only one difficulty setting.
Also use dense formatting as per existing code.

(cherry picked from commit 1c78750176)
2024-02-28 14:05:45 +11:00
Wedge009
c1d26698e9 Remove spurious if condition.
(cherry picked from commit c25321b713)
2024-02-28 14:05:44 +11:00
Wedge009
815cc536b7 Keep laurel decorations consistent with difficulty level (resolves #8442).
(cherry picked from commit a84561390a)
2024-02-28 14:05:44 +11:00
Steve Cotton
165d2ba37f Revert "systemd: drop _ prefix from username"
Prefixing all system and group names with the underscore is
recommended by the systemd developers.

This reverts commit 8b6ef6aeeb.

(cherry picked from commit 91bd96b319)
2024-01-25 09:33:05 +01:00
Gwyn Ciesla
8e25550407
Fix tmpfiles.conf and sysusers.conf paths in SConstruct. (#8280) 2024-01-23 04:08:25 +03:00
Severin Glöckner
8b6ef6aeeb systemd: drop _ prefix from username
man 5 sysuses.d recommends:
It is strongly recommended to pick user and group names that are unlikely to clash with normal users created by the administrator.
A good scheme to guarantee this is by prefixing all system and group names with the underscore, and avoiding too generic names.

Looks better without underscore. wesnoth is unique enough to not clash, most daemons on Arch don't have an underscore either.

The group is created implicitely when the user is created.
2024-01-18 01:29:30 +01:00
P. J. McDermott
6b328bfef8 systemd: Run as _wesnoth:_wesnoth
systemd 246+ logs a warning message, because running as "nobody" is
unsafe:
https://github.com/systemd/systemd/blob/v246/NEWS#L106-L113

Prefix names with underscore, as recommended by systemd documentation:
https://www.freedesktop.org/software/systemd/man/latest/sysusers.d.html
2024-01-15 21:33:55 +01:00
Nils Kneuper
65783af8e7 updated Czech translation 2024-01-13 14:20:34 +01:00
Steve Cotton
6135c97456 updated German translation 2024-01-06 15:51:05 +01:00
Nils Kneuper
0d29fa8862 updated Italian translation 2024-01-06 14:06:34 +01:00
Gunter Labes
e1ca9ea1a1
Sync with master workflow 2024-01-04 19:33:41 +01:00
Gunter Labes
dbb4f6e4bc
Confine special handling to only the affected platforms 2024-01-03 18:51:24 +01:00
P. J. McDermott
7da5f76d1d Save horizontal scrolling inversion check in static variable
Avoids two to four function calls on each SDL_MouseWheelEvent.

Also update code comment and changelog entry based on @vgaming's report
of issue #3362 being fixed.

Slightly improves commit e628e27.  Tested again with SDL 2.0.14 and
2.28.5.
2024-01-01 16:00:59 -06:00
P. J. McDermott
e628e278f5 Fix horizontal scrolling regression (fixes #7404)
The old issue #2218 was actually a bug in SDL, fixed on X11 in version
2.0.18 and on Wayland in version 2.0.20.  The hardcoded workaround in
pull #2481 (commit 4bc4373) caused a regression in fixed SDL versions.

This fix is similar to the workaround in widelands/widelands#5394
committed as widelands/widelands@67db32a.

Also make mouse handler use same coordinate signs as map and fix
mouse_wheel_*() virtual method calls, which have been wrong in the X
axis since commit dfe2f33 (and unused since commit c912f7e).

Tested with SDL 2.0.14 and 2.28.5.

Cherry picked from commit ab4001d (pull #8137) in the master branch
(1.17).
2023-12-31 14:03:09 -06:00
loonycyborg
ba9b2ebfb3
Add define for int64_t. Seems to be needed on msys2 mingw 2023-12-27 20:42:04 +03:00
loonycyborg
33253866aa
copy libssp-0.dll from arch because msys2 doesn't provide it anymore
yet binaries arch's cross-compiler makes still require it
2023-12-27 20:42:03 +03:00
gfgtdf
cf2ce3906d
Update changelog.md 2023-12-25 19:44:00 +01:00
pentarctagon
4fbb6ff0b5 1.16.11+dev 2023-12-25 11:55:18 -06:00
pentarctagon
83d4b397f1 1.16.11 2023-12-25 11:53:27 -06:00
pentarctagon
6fac1b7d3a changelog_entries. 2023-12-25 11:51:26 -06:00
pentarctagon
184e1c1c68 pot-update and regenerate doc files 2023-12-25 11:50:59 -06:00
Nils Kneuper
903b5d2660 updated Bulgarian translation 2023-12-16 10:56:41 +01:00
Nils Kneuper
825e1a5da5 fixed changelog (merge Welsh into normal row) 2023-12-16 10:46:56 +01:00
Nils Kneuper
1e91b76dbc updated British English translation 2023-12-16 10:46:32 +01:00
gfgtdf
c99ebfe60e [1.16] fix #4055 invalid mp addon version info 2023-12-15 21:11:34 +01:00
gfgtdf
eb09f5a766 fix #8115 segmentation fault on attack event (berserker) (#8116) 2023-12-15 21:09:36 +01:00
Gunter Labes
305c632a35
Update to new config file format 2023-12-05 10:40:33 +01:00
pentarctagon
213aae2ea0 pot-update and regenerate doc files 2023-12-03 22:22:09 -06:00
loonycyborg
3247d4f0a2
Lists of lists in CPPDEFINES don't work in newer scons versions 2023-11-29 05:05:04 +03:00
pentarctagon
b141ad900b Revert "Update to 23.08"
This reverts commit 7732768fff.
2023-11-28 14:54:03 -06:00
Nils Kneuper
abaed9897c updated French translation 2023-11-25 15:23:24 +01:00
Wedge009
b2e0e71308 Avoid pango 1.50.12+ that breaks non-system font loading on Windows when fontconfig is not used.
Works around #7543 for developers but does not resolve it as the official Wesnoth Windows builds do not use MSVC or vcpkg.
Only necessary for 1.16 because 1.17+ uses fontconfig.
2023-11-17 20:11:43 -06:00
pentarctagon
7732768fff Update to 23.08 2023-11-11 19:52:02 -06:00
Nils Kneuper
ddf0bd4cb9 updated Czech translation 2023-11-11 15:09:59 +01:00
Nils Kneuper
be92e416e6 updated Polish translation 2023-11-05 10:56:38 +01:00
Nils Kneuper
63d8edc7e3 fix missing closing " in Welsh credits 2023-10-28 11:22:04 +02:00
Nils Kneuper
d47a83cab5 updated Welsh translation credits 2023-10-28 09:55:44 +02:00
Nils Kneuper
67a6e0d655 updated Welsh translation 2023-10-21 12:08:42 +02:00
Nils Kneuper
fd2acc36c1 updated Slovak translation 2023-10-21 12:00:09 +02:00
Nils Kneuper
4f9f052ede updated Czech translation 2023-10-13 22:28:05 +02:00
Nils Kneuper
26bb5031c8 fix broken syntax in about_i18n for Slovak 2023-10-07 19:54:20 +02:00
Nils Kneuper
81ad620f2b verify that the Welsh files update correctly 2023-10-07 12:48:42 +02:00
Nils Kneuper
0e13f2377b added Welsh translation 2023-10-07 12:47:19 +02:00
Nils Kneuper
748a7863c7 updated Slovak translation 2023-10-07 12:11:19 +02:00
Nils Kneuper
ad3e2779d6 fix missing closing tag in Slovak credits entry 2023-10-01 01:19:53 +02:00
Nils Kneuper
88cd18448a updated Slovak translation, added new maintainer 2023-09-30 09:34:27 +02:00
Nils Kneuper
1c8df22891 updated Chinese (Simplified) translation 2023-09-30 09:31:00 +02:00
Nils Kneuper
9d457d136a
Update ar.po
Fixed build error for arabic manpages
2023-09-10 10:30:03 +02:00
Nils Kneuper
988173530f updated Arabic translation 2023-09-10 09:35:30 +02:00
Nils Kneuper
76ea1499c4 updated Czech translation 2023-09-09 13:21:41 +02:00
loonycyborg
41ec1d131e
Backport fix for issue #7441 2023-09-06 12:25:49 +03:00
Nils Kneuper
800060bce3 updated British English translation 2023-09-02 12:40:26 +02:00
Steve Cotton
7cb5f09bcf Fix a crash in :inspect when switching from page 2 to a different item
Switching to a different item cleared the data, but didn't clear the
cache of where the page breaks are located. The subsequent call to
`get_data_paged(int which_page)` has a bounds check for the page number,
so it's sufficient to just clear the page breaks, which is already ok
as it resets the object to the same state as a newly-created instance.
2023-08-19 13:44:40 +02:00
Pentarctagon
136e651d69 Compile fix for boost 1.83.
Fixes #7849
2023-08-17 23:19:21 -05:00
Nils Kneuper
0bf93f42e3 updated Japanese translation 2023-08-13 00:49:12 +02:00
Steve Cotton
6434bcd7f2 Changelog: separate the entries for 1.16.9 from 1.16.10
The files in the changelog_entries/ directory weren't processed
for 1.16.9, which resulted in them getting added to 1.16.10.

Checked for missing entries in 1.16.10 and added them too.
2023-08-08 11:05:07 +02:00
loonycyborg
95a97af027
Fetch older version of pango in mingw dockerfile
workaround for issue #7543
2023-08-06 19:17:53 +03:00
Pentarctagon
a3b65afc28 1.16.10+dev 2023-08-05 22:19:07 -05:00
Pentarctagon
2d34463be5 1.16.10 2023-08-05 22:18:30 -05:00
Pentarctagon
8a06dc066d pot-update and regenerate doc files 2023-08-05 22:15:24 -05:00
Pentarctagon
1deb3bc83d changelog_entries 2023-08-05 22:10:29 -05:00
Severin Glöckner
52beffb4e2 updated German HttT translation 2023-08-06 00:32:12 +02:00
Nils Kneuper
09440ecc2a updated Czech translation 2023-08-05 13:12:22 +02:00
Severin Glöckner
e7696736ad updated German UtBS translation 2023-08-04 19:46:14 +02:00
gfgtdf
8537aad68f [1.16] Fix #7820 "Enable planning mode on start" Setting
previously the code that tried to activate the whiteboard failed because it checks `can_modify_game_state` which checks for `!synced_context::is_unsynced`.

This moves init_side_end() further down to be called after check_victory and do_final_checkup for technical reasons. But this is safe to do since these functions only set unrelated variables and don't throw (except in case of  a gamebreaking error ofc)
2023-08-03 15:44:02 +02:00
gfgtdf
ec11479e68 wc: fix lua error at victory (#7823) 2023-08-03 15:32:32 +02:00
Nils Kneuper
151d917f56 updated Italian translation 2023-07-30 09:33:19 +02:00
Nils Kneuper
b834912eaa updated French translation 2023-07-29 11:17:14 +02:00
Gunter Labes
9ad7a3e821
Revert "Game Display: make first_turn a static local to the only function that uses it"
This reverts commit cc7204f66e.
2023-07-26 19:33:40 +02:00
Celtic Minstrel
7f8ce9982f Update type.cpp
Fixes the other error noted in #7813
2023-07-24 14:00:43 -04:00
Celtic Minstrel
c81c3d00ff Add event unit tests for dynamic filters and names (#6785)
Backport of be8783154e
2023-07-24 13:59:51 -04:00
Gunter Labes
6ce218f7a2
Just call std::_Exit
We're not using at_quick_exit so no real point in calling quick_exit.
2023-07-24 19:23:31 +02:00
Gunter Labes
92544f380d
Add missing include
Fixes part of #7813.
2023-07-24 18:18:51 +02:00
Pentarctagon
0250b1dfc8 pot-update and regenerate doc files 2023-07-22 22:55:22 -05:00
Wedge009
672519726d UtBS S3: Resolve Garak's attacks only partially being converted to fire damage on turn 2 (resolves #7774).
(cherry picked from commit 22d27a15f7)
2023-07-17 16:35:53 +10:00
Steve Cotton
76e2b074d0 WC: add po hints to the messages when units join 2023-07-16 13:40:22 +02:00
Steve Cotton
fbfc96aaf5 WC: remove trailing whitespace from unittypedata.lua
This was done on the master branch in 254716e41e,
here I'm cherry-picking only one file from that commit.
2023-07-16 13:40:22 +02:00
Wedge009
3392e98ef0 vcpkg: Use same base-line as current master.
This updates to pango 1.50.14 (from 1.50.12) which resolves #7217 (but introduces #7543).
2023-07-15 00:38:08 +10:00
Toom
9fbe346612 1.16 wmlunits fix syntax error 2023-07-13 11:37:09 +10:00
Wedge009
51e18a8601 Liberty S6: Correct target hex for Shadow Mage (resolves #7751).
(cherry picked from commit 0871e8953e)
2023-07-12 14:38:02 +10:00
Nils Kneuper
0e5f091077 updated Czech translation 2023-07-07 23:03:19 +02:00
Nils Kneuper
6f05fba7b2 updated Portuguese (Brazil) translation 2023-07-07 23:02:14 +02:00
Iris Morelle
006b60878e
campaignd: Correct Win32 resource section's FileDescription 2023-06-28 06:41:50 -04:00
Iris Morelle
d4b84ef98e
Update Win32 resource section copyrights 2023-06-28 06:41:49 -04:00
Severin Glöckner
8f2844846f fix shadow’s north-facing animation
[ci skip]
2023-06-25 14:33:56 +02:00
Severin Glöckner
e20d013472 fix macro comment
[ci skip]
2023-06-24 21:33:54 +02:00
Iris Morelle
c39a076a7e
Update changelog 2023-06-24 06:46:27 -04:00
Iris Morelle
bdaade45c0
gui/preferences: Update Display resolution list on game window resize
This fixes the window size in the dropdown menu becoming completely
out of sync as the game window gets resized by the player with the
Display section visible.
2023-06-24 06:30:41 -04:00
Nils Kneuper
2b600e22a3 updated Czech translation 2023-06-17 11:11:43 +02:00
Steve Cotton
b42a1b83a1
[1.16] UtBS: improve po hints (#7697)
po: The rest of this commit message is for the translators' changelog, because it's notes about
what changed recently, as found by looking at fuzzies while updating the German translation.

S01 "Come on, Kaleh, we have to go see if anyone is hurt or needs help. ..." was just a grammar fix,
of "answer to the call".

UtBS S08's dialogue had Esanoo refer to Melusand as "my master" repeatedly. That changed to
"leader" or "wise leader" in 1.15.4, mainly without other changes in the text.

Other lines should have changed "master" to "leader". Will be fixed in 1.17 but not backported:
* S08 Zhul's "You don’t know where to find your master?"
* S08 Kaleh's two game-over lines because "too many merfolk have died"

UtBS S08 "You dare defy me?!..." : the change is just a typo fix

UtBS S10 "This will go much faster if you don’t interrupt me. ..." the one-word change is from "the
many" to "many" in the last sentence.

UtBS unit type Dawarf: the unit description had a grammar correction of "it's isn't"
2023-06-13 19:56:28 +02:00
Pentarctagon
6818fc565a Revert "Apply upstream fix from https://github.com/flathub/org.wesnoth.Wesnoth/pull/20."
This reverts commit ed625c3347.
2023-06-12 15:25:35 -05:00
Pentarctagon
ed625c3347 Apply upstream fix from https://github.com/flathub/org.wesnoth.Wesnoth/pull/20. 2023-06-12 15:17:44 -05:00
Steve Cotton
d07b74f010 UtBS: Make the name of the dark assassin translatable again
It needs to be translatable because it needs to match the other strings that
call him by name. It was translatable until 1.15.4, and several of the .po
files that are already in the 1.16 still include it as an obsolete message, so
the next pot-update run will turn this back into a translated text in
Bulgarian, Greek, Irish, Galician, Latin, Lithuanian, Russian, Serbian and
Traditional Chinese.
2023-06-06 12:01:23 +02:00
Nils Kneuper
d8f9daa1a8 updated Spanish translation 2023-06-04 10:24:07 +02:00
Steve Cotton
f0ceaf2ae0 Remove an explicit GETTEXT_DOMAIN "wesnoth"
C++ source files are considered to be in textdomain "wesnoth" by default.

The 1.16 CMake scripts that sort files into textdomains miss this file,
because it treats files with no `GETTEXT_DOMAIN` as being in "wesnoth",
but not ones that explicitly declare themselves in "wesnoth".

Doing a pot-update with SCons includes this file anyway, so the official
"pot-update and regenerate doc files" commits already include it, even
without this fix.
2023-06-01 10:07:39 +02:00
Steve Cotton
364a5ad390 CMake part of using po4a-updatepo instead of po4a-gettextize
Cherry-picks the important part of 5b53be5d2a from master, making
the script use `PO4A-UPDATEPO_EXECUTABLE` instead of
`PO4A-GETTEXTIZE_EXECUTABLE`. In contrast to the master branch's
commit, this makes no changes to FindTranslationTools.cmake, so
`PO4A-GETTEXTIZE_EXECUTABLE` will still be defined in that script.
It's simply that that script has been extensively rewritten in
master, and I don't see a point in porting that part of the change.

The design of po4a seems to expect it to act as a build system,
running with a config file telling it which files to build. In
version 0.68-1, the po4a-gettextize tool has changed to error out
with a comment that it's not being run the way it expects.

See https://bugs.debian.org/1020821

po4a-updatepo works for now with 0.68-1, although it prints a deprecation
message.
2023-05-30 20:19:58 +02:00
loonycyborg
600a0ec98a Replace po4a-gettextize with po4a-updatepo
as recommended by error message in issue #7149

(cherry picked from commit 41202b9bc5)
2023-05-30 20:19:58 +02:00
Iris Morelle
16c2877643
desktop: Fix enumerate_storage_devices() inaccuracy on Linux
Current Linux distributions tend to use udisks2 for storage device
management, which uses /run/media/USERNAME instead of /media for
gathering mount points. This commit makes this the first candidate for
enumeration of mount point collections.
2023-05-25 00:15:16 -04:00
Pentarctagon
c2ce1bc537 cwesnoth.cmd cleanup 2023-05-21 11:53:17 -05:00
Iris Morelle
1325475d20
Update copyright on macOS About dialog 2023-05-19 01:51:20 -04:00
Iris Morelle
86461b3c43
Rewrite macOS version report again
This version doesn't rely on custom parsing of the version number from
the (notably *not meant to be parsed*) operatingSystemVersionString
property, and explicitly appends the version number components to the
reported string instead so we don't get weirdness like "Apple macOS
13.3.1 ((Build" from an operatingSystemVersionString value like
"Version 13.3.1 (a) (Build 22E772610a)" (found after the early May
2023 rapid response patch to Ventura).

Additionally, this replaces the clunky version comparison to decide
whether to use the macOS or OS X branding with the @available syntax.

<https://developer.apple.com/library/archive/releasenotes/AppKit/RN-AppKit/index.html>
(Under "Runtime Version Check")
2023-05-18 20:16:39 -04:00
Iris Morelle
f3b848f941
Fix unused variable warning on Xcode 14.3 2023-05-18 20:16:21 -04:00
Nils Kneuper
9be10d73f6 updated Czech translation 2023-05-13 10:17:12 +02:00
Pentarctagon
1acd78661f Don't call back() if open_window_stack is empty since that's UB.
Backport of #7162
2023-05-03 17:05:49 -05:00
Virtuti Militari
11e0e27670
add missing cstdint includes (#7586) 2023-05-03 15:53:25 -05:00
Nils Kneuper
acf407db5c updated Arabic translation 2023-04-29 16:53:11 +02:00
Nils Kneuper
a15e47a1a4 updated Italian translation 2023-04-22 00:36:25 +02:00
Pentarctagon
d9f3bb9fae Fix comments. 2023-04-21 12:59:10 -05:00
Pentarctagon
7149a3830c Store side leader information in the database.
Backport of #7530
2023-04-21 12:25:30 -05:00
Pentarctagon
eef9a072a5 Properly name job and prevent building multiple arches. 2023-04-17 00:31:50 -05:00
Pentarctagon
982c99a9b1 Backport CI fixes. 2023-04-16 23:08:08 -05:00
Pentarctagon
128b7cbc3d 1.16.9+dev 2023-04-15 20:18:50 -05:00
Pentarctagon
3be802ba1f 1.16.9 2023-04-15 20:16:27 -05:00
Pentarctagon
4e7b9b98c8 pot-update and regenerate doc files 2023-04-15 20:10:57 -05:00
Elvish_Hunter
85393d4ec5 wesnoth_addon_manager: removed unused --color switch 2023-04-15 21:26:49 +02:00
Elvish_Hunter
c7e2b5d83c wesnoth_addon_manager: exit gracefully when removing a non-existing add-on 2023-04-15 21:26:49 +02:00
Elvish_Hunter
531dfb4cca wesnoth_addon_manager: added --version flag 2023-04-15 21:26:48 +02:00
Elvish_Hunter
d4725dc0e6 wesnoth_addon_manager: added new --terms flag (prints the server upload terms) 2023-04-15 21:26:48 +02:00
Elvish_Hunter
f601a32476 wesnoth_addon_manager: added IPv6 support 2023-04-15 21:26:48 +02:00
Elvish_Hunter
7526d0588d wesnoth_addon_manager: added SSL/TLS support 2023-04-15 21:26:48 +02:00
Elvish_Hunter
58eaa70ae1 wesnoth_addon_manager: warn and exit if a deactivated server is used 2023-04-15 21:26:48 +02:00
Elvish_Hunter
4a34b683e5 wesnoth_addon_manager: don't upload old-style add-ons
Fixes #7431.
2023-04-15 21:26:48 +02:00
Elvish_Hunter
3995ca4e4c wesnoth_addon_manager: update another deprecated method 2023-04-15 21:26:48 +02:00
Elvish_Hunter
5b788c6caf wesnoth_addon_manager: update a deprecated method 2023-04-15 21:26:48 +02:00
Severin Glöckner
a8bf477e49 new credit entry 2023-04-15 20:57:13 +02:00
Nils Kneuper
435dc05490 updated French translation 2023-04-15 13:02:39 +02:00
Severin Glöckner
f659e3d4a9 updated German translation (DiD) 2023-04-15 03:13:38 +02:00
Severin Glöckner
5e38649b34 updated German Translation 2023-04-13 03:23:04 +02:00
Nils Kneuper
b5cc3b0235 updated British English translation 2023-04-10 10:00:32 +02:00
Nils Kneuper
cefdae37fc updated Spanish translation 2023-04-08 12:09:25 +02:00
Nils Kneuper
3d7c31fe4c updated Czech translation 2023-04-08 09:52:51 +02:00
Nils Kneuper
c0553d8b23 updated French translation 2023-04-08 09:51:35 +02:00
Nils Kneuper
76100ae563 updated Turkish translation 2023-04-08 09:50:29 +02:00
Pentarctagon
0bac96a4ca pot-update and regenerate doc files 2023-04-02 09:59:37 -05:00
Nils Kneuper
3824868dec updated French translation 2023-04-02 13:15:03 +02:00
Nils Kneuper
c1c73407cb updated Spanish translation 2023-04-01 11:18:37 +02:00
Wedge009
808c556654 DiD S8: Disallow undead bat from retrieving the Book.
Resolves #7485.

(cherry picked from commit e917bf98e6)
2023-03-28 08:45:04 +11:00
gfgtdf
98324ee4c2 wc: Fix untranslatable scenario name 2023-03-25 20:29:08 +01:00
gfgtdf
5bb6cdd8a4 Try to fix lua errors in pick advance mod 2023-03-25 20:29:08 +01:00
gfgtdf
fc37a1cb4d wc: Workaround [leadership] cumulative not working
This fixes in particular the banner ability
2023-03-25 20:29:08 +01:00
gfgtdf
dcc92d72b6
Update changelog 2023-03-25 19:33:27 +01:00
gfgtdf
0eae27a474 planning mode: Fix game hanging during enemies attack
Fixes #5302, planning mode now no longer tries to set the
defendings unit animation to "standing" during an attack when
there were planned moves for the defender.
2023-03-25 19:31:03 +01:00
gfgtdf
3c3fd51098 update changelog 2023-03-25 19:31:03 +01:00
gfgtdf
43fc79235a Fix crash on unit animations #5032
I don't really know how this code supposed to code work, i just
added a guard against possible UB there.
2023-03-25 19:31:03 +01:00
gfgtdf
7fe5d09745 block 'Back To..' in Mp in linger mode fixes #4236 2023-03-25 19:31:03 +01:00
gfgtdf
d483070ddb Fix assertion on invalid replay data
Fixes #2818
Fixes #4180
2023-03-25 19:31:03 +01:00
gfgtdf
b9ef1b6baa Fix executing whiteboard actions during events #7465 2023-03-25 19:31:03 +01:00
gfgtdf
aac0f087bf fix crash in whiteboard #3768 2023-03-25 19:31:03 +01:00
gfgtdf
a0361b43f8 Fix redo error after reloading #7253
The code was checking for [commands] instead of [command]
when loading savefiles.
2023-03-25 19:31:03 +01:00
gfgtdf
df9bbd5b25 Backport WC2 fixes
This fixes:
- "Destruction mechanic line 73 bug"
- [traits] in artifacts not working
- custom effects being lost in next scenario
- artifacts reduce HP
- Promoted commander have the wrong id

The fixed are not exactly pretty, in particular the one that uses a
preload event to workaround and engine bug.

Since we are already replacing artifacts.give_item We could in theory
also explicitly fix certain Items here, should we really need to.
2023-03-25 19:31:03 +01:00
gfgtdf
dd060f8540 Fix unit being constructed too early 1
This caused multiple bugs:
1) custom effects were not working on recall list units because units
   were created before lua initialisation (see issue #7234). This can
   cause OOS when the MP "Back to turn" feature is used.
2) (rare) Possible OOS causes by unsynced traits, see the comment
   in game_state.cpp before tb.build_team_stage_two()
2023-03-25 19:31:03 +01:00
Nils Kneuper
377cc62446 updated Bulgarian translation 2023-03-25 11:27:58 +01:00
Nils Kneuper
1a671afd7a updated Czech translation 2023-03-18 12:39:27 +01:00
Nils Kneuper
1c6d56867b updated Italian translation 2023-03-17 19:09:10 +01:00
loonycyborg
b3446e6a46
scons: backport sdl check fix for CI 2023-03-14 15:14:20 +03:00
Wedge009
59f8886e18 NR: Give Eryssa hero trait since her death is a loss condition.
Resolves #5374
Resolves #7448

(cherry picked from commit ba122806d9)
2023-03-14 15:45:08 +11:00
loonycyborg
fb45275626
scons: fix paths when compiling .rc files
Previous way of addressing compiled .rc files led to stale intermediate
targets leading to issue #7441
2023-03-09 22:25:59 +03:00
Wedge009
f50d76adb5 Correction: Lintair -> Lintanir
[ci skip]

(cherry picked from commit a2b79e8c4d)
2023-03-09 19:52:31 +11:00
Nils Kneuper
6a65058c38 updated Spanish translation 2023-02-25 12:26:03 +01:00
Wedge009
d7f4f4e36c Catch invalid argument exception for stoi in unit advancement. Resolves #7402.
(cherry picked from commit 1745a8bbca)
2023-02-23 13:58:21 +11:00
Toranks
21ce1c7a74 Grüü apparition fixed (and commits squashed)
This, instead of killing Grüü, moves him along with the others to participate
in the conversation, and also switches him to side 1 (this side is temporary
and only for narrative purposes, later on turn 7 he switches to side 4 again).

Grüü is correctly stored on the variable when the conversation ends, and
restored later on turn 7.

(cherry picked from commit cccd562cc5)
(cherry picked from commit 34a5cce2b0)
(cherry picked from commit f231348900)
(cherry picked from commit 89dbd2d373)
2023-02-21 08:21:29 +01:00
Nils Kneuper
0f96454d35 updated Dutch translation 2023-02-18 11:34:18 +01:00
Nils Kneuper
ef2bf208e2 updated Polish translation 2023-02-11 11:15:13 +01:00
Nils Kneuper
b18616fc0a updated Dutch translation 2023-02-11 11:13:25 +01:00
Nils Kneuper
f030eced1b updated Czech translation 2023-02-11 11:12:16 +01:00
Steve Cotton
29d86d2c36 Editor: let the help text switch between the top and bottom of the screen
If the northmost hexes of the map are visible, put the text on the bottom; if
the southmost are visible, put it on the top. Also, make the text smaller if
it's very wide.

It used to be fixed to the bottom of the screen, but this meant that it always
obscured the southmost hexes of the map, and the only way to avoid that is to
scroll east/west, or to add an extra row on the south. Similarly, having it at
the very top obscures the northmost hexes.

Moving it to any fixed location that isn't the edge of the screen makes it
possible to edit all the hexes, but also makes it more annoying when working
elsewhere on the map; that trade-off was rejected in review.

For very small maps, it will be at the bottom of the screen in the border
outside the map area. For any screen resolution there will be a specific
map-height that still has the old issue, but that's an improvement on it
happening for every map size.
2023-02-09 05:39:05 +01:00
Steve Cotton
76306d3fb6 Use an editor-only copy of font::set_help_string
This function shows a tooltip-like text at the bottom of the editor's screen,
for example when the paint tool is active it shows which terrains are assigned
to the left and right mouse buttons. There is similar functionality in GUI2,
for example when hovering over the title screen's buttons, which is handled via
event::MESSAGE_SHOW_TOOLTIP.

In the 1.17 branch's 3900419f92, I checked that
nothing outside the editor was calling the function. However, that analysis was
done after 1.17's refactoring of the graphics system. For 1.16 I'm not going to
repeat that analysis; the copy that's left in video.cpp is probably dead code,
but I see little reason to remove it from the stable branch.
2023-02-09 05:39:05 +01:00
Severin Glöckner
9186714a69 po: update IRC links 2023-02-04 23:15:23 +01:00
Nils Kneuper
97bf085317 updated Spanish translation 2023-02-04 12:21:53 +01:00
Nils Kneuper
0dfed528d5 updated Polish translation 2023-02-04 12:20:16 +01:00
Steve Cotton
c6de996b3e Use two-color orbs for allies' units (configurable by preferences)
These orbs no longer look the same as the player's own orbs, so they
won't cause confusion in multiplayer.

The relevant part of the advanced preference now shows:

```
[ ] - Show ally orb
[ ] - During ally’s turn, use a two-color orb to show movement
Radio buttons for colors: ( )  ( )  ( )  ( )  ( )  ( )  ( )
```

That offers these choices:

* Don't show ally orbs at all
* Always use the one-color (with ally color, not status)
* Use the two-color when that ally is playing, single color at other times
* Use the two-color when that ally is playing, no orb at other times

Rename some `allied_orb` functions to be `ally_orb`. This makes them consistent
with both the names of the corresponding `enemy_orb` functions and the WML
attribute that's used in the preferences file.

This probably doesn't need a change to the in-game help, at least for the en_US
version of the documentation. The current text in data/core/help.cfg is:

* Blue for allied units, except during that ally's own turn.
* During the ally's own turn, their units will be shown with the colors showing
whether the units can still move and attack; however their moves, and the
corresponding orb changes, are delayed as explained in "Shroud and Fog of War'.

(cherry picked from commit 686e35e0e3)
2023-01-31 10:36:50 +01:00
Steve Cotton
1db6357060 Orb color preferences dialog layout and tooltip
Add some spacing to make it clearer what is grouped with what, move the
disengage orb's setting to be part of the partial orb's group, and add
a tooltip for it.

This dialog uses checkbox labels as section headers to indicate what the rows
of colors refer to. This commit doesn't change that, but it makes the grouping
clearer. Actual section headers would take additional space and probably not
look any better.

(cherry picked from commit d35ea2f2dc)
2023-01-31 10:36:50 +01:00
Nils Kneuper
88a6fb216f updated Portuguese (Brazil) translation 2023-01-29 10:06:48 +01:00
Nils Kneuper
860a73a120 updated Chinese (Simplified) translation 2023-01-28 10:00:45 +01:00
Steve Cotton
18040c1ad7 Add a unit test for scoped arrays
The existing test for scoped vars is both copied and renamed.

(cherry picked from commit fba0970509
with files moved back to the old directory)
2023-01-25 02:12:03 +01:00
Steve Cotton
24b03ad5de Reduce log spam about the postponed removal of the SPECIAL_NOTES macro
This is a partial cherry-pick of b9e4fdffb4,
merely reflecting that the removal has been postponed from 1.17 to 1.19 along
with updating some outdated comments.

The motivation for backporting this is to make other warnings that are printed
to stdout/stderr more visible, instead of being scrolled offscreen by the
SPECIAL_NOTES messages.
2023-01-24 01:50:22 +01:00
Severin Glöckner
1df22e5eea po: fix build / formatting 2023-01-23 01:08:22 +01:00
Severin Glöckner
92a47a59f4 updated German translation (SoF) 2023-01-23 00:15:34 +01:00
Nils Kneuper
008c05ff00 updated Spanish translation 2023-01-22 20:50:51 +01:00
Nils Kneuper
9f9ef51fc5 updated British English translation 2023-01-22 20:49:30 +01:00
Pentarctagon
f83ab5db50 Revert "Revert "HttT S03: Rewrite intro, hint about training troops for S06""
This reverts commit 9022d583e5.

And back it goes.
2023-01-22 00:38:25 -06:00
Pentarctagon
257139f7d4 1.16.8+dev. 2023-01-22 00:35:42 -06:00
Pentarctagon
d5f20c0f4e 1.16.8. 2023-01-22 00:34:56 -06:00
Pentarctagon
6e57d12ffd Update changelog. 2023-01-22 00:33:15 -06:00
Pentarctagon
bfeed31d5e pot-update and regenerate doc files 2023-01-22 00:31:59 -06:00
Pentarctagon
9022d583e5 Revert "HttT S03: Rewrite intro, hint about training troops for S06"
This reverts commit 4b3e902567.

Temp revert to tag 1.16.8
2023-01-22 00:23:05 -06:00
Steve Cotton
1485cfd625 Fix crash in scenario editor when placing units
The previous bugfix fixed a crash when loading savegames with units whose
abilities accessed the map while the display_context was still being
constructed, however it reintroduced a bug in the scenario editor. Using the
unit tool always crashed when adding any unit.

This commit uses 4d1fc268b1's code path whenever possible, however it falls
back to 6a21fdc675's code path when 4d1fc268b1 would assert. In practise one
path is used in game and the other is used in the scenario editor, but doing
the logic in this way ensures that any edge cases are going to affect the
scenario editor rather than the game itself.
2023-01-22 02:33:17 +01:00
Nils Kneuper
3892b947af updated Spanish translation 2023-01-21 10:45:21 +01:00
Tahsin Jahin Khalid
77561e4472 [LoW] S3: fix mismatched coords of Urudin retreat (#7221)
The trigger for the move_to is now an area of 19 hexes.

Co-authored-by: Wedge009 <wedge009@wedge009.net>
(cherry picked from commit 0b483953e9)
2023-01-21 07:42:41 +11:00
Tahsin Jahin Khalid
c72ca64ea4 LoW: fix scenario count inconsistency
Closes #7218

(cherry picked from commit e04858f753)
2023-01-21 07:42:41 +11:00
Steve Cotton
4b3e902567 HttT S03: Rewrite intro, hint about training troops for S06
The island gives the player two fronts to progress on, and it's early enough
to give the player time to prepare for the SoE. Hint to them about improving
their recall list.

When trying to add that hint as a single-line change to the dialogue, I
reviewed the existing text and felt it didn't flow well. Reading the feedback
thread, Delfador should have more emotion about finding his childhood home
overrun; however I've gone for practical thoughts first.

The hint isn't #ifdef to only appear on easy, because the text wouldn't flow
without it - take that line out and it goes from "there are more orcs than I
thought" to "we must fight these orcs, who aren't the ones at the SoE". Also,
players who are already doing XP management can feel knowledgeable when they
see it.

(cherry picked from commit 9f780903ab)
2023-01-20 02:49:11 +01:00
Steve Cotton
a9322e2f23 Show id in "skipping duplicate variation" warning
Add a useful identifier to the message

    error config: Skipping duplicate unit variation ID: ''

This warning is generally shown because the variation_id is completely
missing, and so the message appeared as above, without any hint of which
unit was causing the problem.

In contrast to 19a5ce83's warning, this one is printed multiple times to
stdout even if the messages are identical; therefore backporting this to
1.16 seems reasonable.

(cherry picked from commit 323ce6ec26)
2023-01-17 21:02:54 +01:00
Steve Cotton
0932ac6661 Bump vcpkg baseline to use a non-obsolete version of libtool
The vital commit is fd766eba2b4cf59c7123d46189be373e2cee959d, but
I'm taking the most recent version of vcpkg as the new baseline
because it might as well use the latest.
2023-01-17 17:36:05 +01:00
Steve Cotton
a96efcfe6a Compatibility with Boost 1.81's locale changes
The collector_base class has been deprecated in Boost 1.81, and we're compiling
with Werror on the Windows CI so it needs an immediate fix for the new vcpkg.
2023-01-17 17:36:05 +01:00
Charles Dang
0824dd3b55 Spirit PO: used non-deprecated boost phoenix headers
See 4ea7e3a7b7

(cherry picked from commit d473176f86)
Phoenix has been a separate library since Boost 1.56, and Wesnoth 1.16
already requires Boost 1.65.
2023-01-17 17:36:05 +01:00
Nils Kneuper
356faf133d updated Spanish translation 2023-01-17 12:48:15 +01:00
Nils Kneuper
ea9b482a5e updated Finnish translation 2023-01-15 11:44:28 +01:00
Pentarctagon
a0f4e8f9ed 1.16.7+dev 2023-01-14 18:17:57 -06:00
Pentarctagon
c34d9d1270 1.16.7 2023-01-14 18:16:49 -06:00
Pentarctagon
86199d2eaf pot-update and regenerate doc files 2023-01-14 18:10:12 -06:00
Elvish_Hunter
937465fb8c wmllint: improve [campaign] rank= validation message 2023-01-14 22:47:32 +01:00
Elvish_Hunter
f10f9779eb wmllint: validate values of [campaign] rank= 2023-01-14 22:47:32 +01:00
Toom
0540523614 Escape < and > even if only one of them exists or if found multiple times (#7154)
* Escape < and > even if only one of them exists

In python negative index counts from the end, so without this change or another solution
"example with only < one side" would be converted to 
"example with only < one sid&gt;example with only < one side"

* Escape < and > even if found multiple times
2023-01-14 22:47:32 +01:00
Elvish_Hunter
467e8d2e55 wmlscope: used an enumerator instead of strings in scan_for_definitions() state checks 2023-01-14 22:47:32 +01:00
Elvish_Hunter
83dcaffc9b wmlscope: avoid crashing on non-UTF8 files 2023-01-14 22:47:32 +01:00
Nils Kneuper
9a981ef293 updated Italian translation 2023-01-14 12:04:43 +01:00
Nils Kneuper
6cff1d72c3 updated Czech translation 2023-01-14 12:03:13 +01:00
Nils Kneuper
8ab766b7d7 updated Portuguese (Brazil) translation 2023-01-14 12:01:48 +01:00
loonycyborg
a0193a6b79
Update screenshot links in appdata per issue #7260 2023-01-09 00:03:05 +03:00
Nils Kneuper
98442c8d63 updated Japanese translation 2023-01-08 16:00:30 +01:00
Pentarctagon
fff7220222 doxygen fixup. 2023-01-07 01:11:45 -06:00
Pentarctagon
e039ee8c18 Rename database column SOURCE to ADDON_ID.
Also rename VERSION to ADDON_VERSION and backport query-scripts changes.
2023-01-06 23:48:24 -06:00
Pentarctagon
2c3e674e89 Skip inserting rows that would cause a duplicate primary key error.
The cause is that somehow, during regular play, MP campaigns can end up with duplicate values in the [content] data for each [addon]. A very similar issue was fixed in 6c980d1, but there's apparently some other way to trigger it that I haven't been able to reproduce. Since the error itself is harmless, it'll just be avoided server-side to avoid the spurious errors in the server log file.
2023-01-06 11:01:55 -06:00
Nils Kneuper
b8393c49d1 updated British English translation 2023-01-02 12:20:04 +01:00
Nils Kneuper
d86f36f6c3 updated Turkish translation 2023-01-02 12:18:21 +01:00
Toranks
3f762a58ef Fixed texdomain
Weapon specials usually are on wesnoth-help texdomain

(cherry picked from commit 4a5d1932c7)
2023-01-02 14:13:01 +11:00
Wedge009
67fff40786 Correct path to unit portraits. 2023-01-02 13:38:15 +11:00
Pentarctagon
5c952f4c30 pot-update and regenerate doc files 2023-01-01 18:37:39 -06:00
Steve Cotton
4d1fc268b1 Allow abilities.cpp to access units and teams earlier during play_controller::init
Partially reverts 6a21fdc675
Fixes #5643
Fixes #7238

There's a bunch of global things that can be accessed either via global
pointers in the `resource` namespace, or via `display::get_singleton()`. The
singleton and these global pointers are set up in `play_controller::init`,
however there's a section where things are available via the global pointers
but the `display` singleton doesn't exist yet. During that time, checking
whether an ability is active can crash the game.

Removing the global pointers is a good goal, but detouring through a GUI class
to access the data causes its own problems.

The "has already been confirmed valid by both callers" comment is replaced with
an assert, because there's currently at least three callers.

(cherry picked from commit 7ddf691e13)
2022-12-31 02:20:42 +01:00
Steve Cotton
a35ae685de Add unit tests for weapon-special calculations
Covers the math for [attack]add=, [attack]divide=, [attack]multiply= and
[attack]sub=.

* 5 + 2 = 7
* 5 - 3 = 2
* 5 + 2 - 3 = 2. Yes it does, that's half of why this unit test exists ...
* 5 + 2 + 3 = 8
* 5 + 3 + 2 = 8
* 5 + 2 - (-3) = 7
* 3 * 3.34 = 10
* 3 * 3.334 = 9. ... and that's the other half of why this unit test exists.

(cherry picked from commit e28f29b4ac)
2022-12-29 21:12:39 +01:00
Steve Cotton
971ea6c6ef Handle out-of-bounds side numbers in Lua's sync.evaluate_multiple
Change the C++ to show a Lua error instead of crashing with an assert.

Cherry picked from commit a9d5c6ac6d,
with a changelog entry added.
2022-12-24 16:48:48 +01:00
Nils Kneuper
23a575d5d2 updated French translation 2022-12-23 14:01:19 +01:00
Nils Kneuper
9ad7da6620 updated Czech translation 2022-12-23 13:58:54 +01:00
Nils Kneuper
31df3eed12 updated Arabic translation 2022-12-23 13:55:43 +01:00
Gunter Labes
47fa4faa15
wmlunits: ignore a dependency on the addon itself 2022-12-19 16:19:44 +01:00
Pentarctagon
f0b99fbb27 Update Windows CI cmake version to match master branch 2022-12-18 15:55:53 -06:00
Pentarctagon
2ef00f37cd Update used actions to avoid deprecated Node.js 12 2022-12-18 15:54:40 -06:00
Pentarctagon
4ae1d3fade Update vcpkg baseline. 2022-12-18 08:19:09 -06:00
Pentarctagon
1b24365dae Add include. 2022-12-15 21:09:10 -06:00
Pentarctagon
04b179699f ignore openssl 3 deprecations on windows. 2022-12-15 18:51:42 -06:00
Pentarctagon
2ddc179ff1 Fixup cmakelists for updated vcpkg. 2022-12-15 15:47:59 -06:00
Pentarctagon
f1ee711169 Add OpenSSL explicitly. 2022-12-15 13:53:04 -06:00
Pentarctagon
63ff8737a3 Update vcpkg schema URL. 2022-12-15 11:00:43 -06:00
Pentarctagon
7e09ab2313 dynamic-load got removed in later SDL2 version. 2022-12-15 10:51:52 -06:00
Gunter Labes
48fcaaba0e
Just look for the toplevel dir tag
"campaign_name" is not an existing attribute in the given config anymore.
An addon should only contain a single toplevel dir tag with the name of the addon anyway.
2022-12-15 16:55:43 +01:00
Pentarctagon
274c6567a4 Update vcpkg. 2022-12-15 09:18:51 -06:00
Đoàn Trần Công Danh
d71e90ee50 gettext: fix build with Boost.Locale 1.81
See https://github.com/boostorg/locale/pull/128/

(cherry picked from commit fd96415bdf)
2022-12-15 14:29:56 +11:00
Steve Cotton
c41189e987 Inspect console: fix infinite loop in pagination
When given a string that includes newlines but doesn't end with a newline,
the old code would get stuck in an infinite loop.

Fixes #7194.

(cherry picked from commit b5ff5c3ddc)
2022-12-07 17:15:36 +01:00
Steve Cotton
e7903e4eac Fix [special_note] duplication when unstoring units
The movetype's special notes were becoming a new note for the individual unit.

Clean up the documentation on some of movetype's functions, as they had
documentation in both the .hpp and the .cpp.

(cherry picked from commit 38fdf06fa9)
2022-11-29 16:41:07 +01:00
Nils Kneuper
a06d450d56 updated Finnish translation 2022-11-27 12:28:11 +01:00
Severin Glöckner
695d146e13 updated German translation
partly translated WC2
2022-11-21 18:17:53 +01:00
Nils Kneuper
a735cd2b6f fixed error in arabic translation (I hope...) 2022-11-20 13:38:53 +01:00
Nils Kneuper
3fd4a6fca0 updated Arabic translation 2022-11-20 11:15:45 +01:00
Wedge009
cd052a6de6 LoW S9: Remove standard enemies-defeated as a victory condition.
Resolves #7130.

(cherry picked from commit ced504a97f)
2022-11-16 11:56:23 +11:00
Wedge009
1ccae3254a Disable saving of replays for story-only scenarios.
Resolves #6180.
Resolves #7123.

(cherry picked from commit bdc236e0a0)
2022-11-14 19:56:23 +11:00
Nils Kneuper
412e5d1979 updated Czech translation 2022-11-12 19:43:19 +01:00
Steve Cotton
6b090186da run_wml_tests: add an option to filter tests by name
For example, `run_wml_tests --filter backstab` runs only the tests listed
in `wml_test_schedule` that have `backstab` somewhere in their name.

(cherry picked from commit 34ae0490b1)
2022-11-12 02:08:21 +01:00
Steve Cotton
099ff0a17a Add unit tests for [break] and [return] during [fire_event]
Cherry-picked from b18b0e0f55,
including the docs from 16b900c273.
2022-11-12 02:08:04 +01:00
Nils Kneuper
138a28bdc8 updated French translation 2022-11-11 18:40:14 +01:00
Nils Kneuper
300c3cf635 Polish translation: removed some "\v" that should not occur 2022-11-06 11:17:15 +01:00
Nils Kneuper
4b84916e82 updated Polish translation 2022-11-06 11:15:24 +01:00
Nils Kneuper
aff68c3699 updated French translation 2022-11-06 10:48:11 +01:00
Nils Kneuper
89dd7f060d updated Portuguese (Brazil) translation 2022-11-05 10:59:01 +01:00
Wedge009
86c87ef3d4 DM S21: Show Delfador crossing at the Ford of Abez and take a route to Weldyn via Tath.
Resolves #7081

[ci skip]

(cherry picked from commit c8a0f9b9ca)
2022-11-03 11:20:31 +11:00
Wedge009
495433fae8 wmllint: Ignore labels for translation if a PNG extension is found (#7079)
* wmllint: Ignore labels for translation if a PNG extension is found.

Resolves #6995.

(cherry picked from commit 2010ffdbba)
2022-11-03 11:20:31 +11:00
Wedge009
74e2ac7e94 SoF S9: Separate Toomak's last breath message from the events following his death.
(cherry picked from commit 80b33deb9b)
2022-11-03 11:18:49 +11:00
Wedge009
70a41c5fd5 UtBS: Add missing text domain.
[ci skip]

(cherry picked from commit 0d87d022bc)
2022-11-01 22:36:14 +11:00
Wedge009
e40e66143b WC: Mark OK button for translation.
(cherry picked from commit 7ab7abc22e)
2022-11-01 15:50:04 +11:00
Dou1622
50e7c39e5c Fix wmllint translation mark errors (#6966)
* Fix wmllint translation mark errors

* Added wesnoth-help domain

* Try to give better labels for the WC map generator settings which are now marked for translation.

Co-authored-by: Wedge009 <wedge009@wedge009.net>
(cherry picked from commit a667740fe5)
2022-11-01 13:47:00 +11:00
demario
52bedc1d5d Fix male Dark Horse name
(cherry picked from commit ce06a1b81a)
2022-11-01 13:37:32 +11:00
Wedge009
6e9c6b08e3 DM S16: Show Delfador taking a more direct route to Weldyn.
Resolves #7067

[ci skip]

(cherry picked from commit 893eb26315)
2022-11-01 09:37:04 +11:00
Dou1622
acb3fecf81 Fix unknown speaker errors (#7016)
* Fix unknown speaker or id errors

Co-authored-by: Wedge009 <wedge009@wedge009.net>
(cherry picked from commit 858f2d2496)
2022-10-31 08:22:20 +11:00
Nils Kneuper
ee7d375f82 updated French translation 2022-10-29 12:20:28 +02:00
Nils Kneuper
5db8f11229 updated French translation 2022-10-22 11:55:56 +02:00
Nils Kneuper
1933c7379b updated Portuguese (Brazil) translation 2022-10-15 14:29:49 +02:00
Nils Kneuper
d014d11546 updated French translation 2022-10-15 14:28:17 +02:00
Pentarctagon
6f8e7f0156 Update changelog. 2022-10-12 08:06:08 -05:00
Pentarctagon
5d8681b4b0 Address review comments. 2022-10-12 08:04:29 -05:00
Pentarctagon
2b868b4a2b Set linux interval+count to something better for clients. 2022-10-12 08:04:16 -05:00
Pentarctagon
9b3fab1583 Add keepalive advanced preference. 2022-10-12 08:03:40 -05:00
Pentarctagon
c9c831101a Enabled client-side keepalive.
Also adds a windows version of keepalive to the servers.

Resolves #1336
2022-10-12 07:59:19 -05:00
Nils Kneuper
d74c3cede0 updated Czech translation 2022-10-08 11:34:18 +02:00
Nils Kneuper
b32c973b57 updated French translation 2022-10-08 11:32:54 +02:00
loonycyborg
78c4b46073
Fix -Wunused-variable warning 2022-10-05 03:19:28 +03:00
loonycyborg
855f006d0b
campaignd: fix native sendfile() codepath 2022-10-05 02:45:09 +03:00
loonycyborg
d0d9dfaf04
servers: implement consistent error handling policy for coro_* functions
- coro_ read function returns empty unique_ptr on error
- coro_ write functions close socket on error
- caller does need only to handle empty unique_ptr from reads, generally
  with immediate return
2022-10-04 22:25:51 +03:00
loonycyborg
f308614328
Servers: add explicit error checking to low level coro_ functions 2022-10-03 19:43:57 +03:00
loonycyborg
491c6464f9
campaignd: close socket on read error 2022-10-02 04:42:04 +03:00
Nils Kneuper
eadba482d2 updated French translation 2022-10-01 10:04:33 +02:00
loonycyborg
7b8ccf5a6c
servers: close socket on write error 2022-09-28 23:45:23 +03:00
User
b5ce501088 Timestamping server messages
Resolves #6641

(cherry picked from commit 3f1da792cb)
2022-09-26 06:48:19 +10:00
Nils Kneuper
f790bd922c updated Portuguese (Brazil) translation 2022-09-24 18:08:12 +02:00
Nils Kneuper
064608a722 updated French translation 2022-09-24 18:07:27 +02:00
Nils Kneuper
f27cc8bd98 updated Portuguese (Brazil) translation 2022-09-17 12:00:03 +02:00
Pentarctagon
25a545406c Revert "Open the forum profile of the currently selected user."
This reverts commit f0943366e4.

Relied on another thing that's less trivially backportable.
2022-09-14 13:03:01 -05:00
Pentarctagon
f0943366e4 Open the forum profile of the currently selected user.
Rather than always opening your own.
2022-09-14 12:12:27 -05:00
Wedge009
0bdd9281db DiD S8: Handle situations where factions have not yet appeared (#7006)
* DiD S8: Handle situations where factions have not yet appeared (resolves #7005).
* Convert 'arrived' flags to booleans.
* DiD S8: po hint to clarify 'Dela's men'.
* Accommodate feedback by getting rid of all the new work and just removing any reference to paladins or Dela altogether. Conversion of flag to boolean remains, however.

(cherry picked from commit 1cfb982a3c)
2022-09-14 15:06:23 +10:00
Elvish_Hunter
310cf7b580 wmlunits: used os.path.join() to build paths instead of string concatenation 2022-09-13 22:42:00 +02:00
Elvish_Hunter
9e89c62a0d wmlunits: used shutil.move() instead of calling mv as a subprocess
This also means moving files in a more pythonic way and removing two functions (bash and shell) which aren't used anywhere else.
2022-09-13 22:41:48 +02:00
loonycyborg
20166c02ad
campaignd: fixed file descriptor leak on sendfile() codepath 2022-09-13 20:19:22 +03:00
Nils Kneuper
2c3991fa7d updated Italian translation 2022-09-10 12:42:02 +02:00
Nils Kneuper
35af5e2f14 updated Czech translation 2022-09-10 12:40:22 +02:00
Pentarctagon
bacf0a1220 1.16.6+dev. 2022-09-04 19:25:17 -05:00
Pentarctagon
0ad6ba9091 1.16.6. 2022-09-04 19:24:29 -05:00
Pentarctagon
8a3e4d9b8b pot-update and regenerate doc files 2022-09-04 19:18:56 -05:00
Nils Kneuper
0f96f091c6 updated French translation 2022-09-04 10:09:40 +02:00
Pentarctagon
5efdb49954 Update flatpak runtime to freedesktop 22.08. 2022-09-03 14:05:07 -05:00
Steve Cotton
f3cb90caff Update changelog 2022-09-03 19:00:08 +02:00
Steve Cotton
1bbce65aee Show units' max move ranges, unless it's the owner's turn
If it's another player's turn, then movement points will be reset in a refresh
phase and it's not useful to show current movement.

Partially reverts 978229c247 (af0968d9c3 on 1.16), using the old logic for
the movement range but the allies-based logic for goto_x,goto_y information.

Fixes #6716.

(cherry picked from commit ae4ecd17e4)
2022-09-03 18:57:33 +02:00
Nils Kneuper
b8024dab89 :x 2022-09-03 15:17:21 +02:00
Nils Kneuper
df4d76ef3c updated British English translation 2022-09-03 11:12:02 +02:00
Nils Kneuper
b1fc5f1e39 updated French translation 2022-09-03 11:10:44 +02:00
Nils Kneuper
8ce13c9e68 updated Russian translation 2022-09-03 11:09:49 +02:00
mattsc
bf5e50978e
Merge pull request #6989 from mattsc/battle_calcs_speed
Lua AI: speed up battle_calcs.battle_outcome in extreme cases
2022-08-31 12:39:43 -07:00
mattsc
15d1fb7938 Lua AI: speed up battle_calcs.battle_outcome in extreme cases
The method used in the battle_outcome() function is somewhat simplified compared to the default engine calculation and faster in the vast majority of cases, but it can become extremely slow when the combined number of strikes of the attacker and defender is very large.
2022-08-29 06:58:13 -07:00
Nils Kneuper
f1c550b363 updated Czech translation 2022-08-27 20:09:54 +02:00
Nils Kneuper
e1f94faf16 updated Turkish translation 2022-08-27 20:08:49 +02:00
Nils Kneuper
ea83042ffd updated French translation 2022-08-27 20:07:31 +02:00
Nils Kneuper
4baa48df58 updated Italian translation 2022-08-27 20:06:02 +02:00
Severin Glöckner
5bde7158e3 minor German translation update 2022-08-26 11:32:51 +02:00
Severin Glöckner
d205955136 add missing space
This string is not tranlatable, can be backported during string freeze.
2022-08-22 14:22:58 +02:00
Pentarctagon
f0f76ed8a5 Pot update. 2022-08-20 19:41:25 -05:00
Nils Kneuper
fbd74c7453 updated Portuguese (Brazil) translation 2022-08-19 19:46:46 +02:00
Nils Kneuper
9f060fffa6 updated Czech translation 2022-08-13 18:49:10 +02:00
Nils Kneuper
bc01efebdd updated Bulgarian translation 2022-08-10 11:13:17 +02:00
Nils Kneuper
40ae66441d updated Italian translation 2022-08-10 11:12:24 +02:00
Pentarctagon
af6c023039 Update missed copyright notices. 2022-08-07 16:17:51 -05:00
Severin Glöckner
93d6427fd4 updated German translation 2022-08-01 20:44:20 +02:00
Wedge009
bdc54c678a Add missing new-lines to error messages.
Funnily enough, this was recently removed for master (1.17) in ba24612f73.
2022-08-01 18:23:46 +10:00
Nils Kneuper
14ec2eb318 updated French translation 2022-07-31 11:55:15 +02:00
Nils Kneuper
446bb9ed59 updated Chinese (Traditional) transalation 2022-07-30 19:18:04 +02:00
Pentarctagon
2efbe78f8f
Update workflow since github actions is deprecating using macOS 10.15. 2022-07-27 22:38:12 -05:00
Elvish_Hunter
489d955d80 Fixed {IS_HERO} to prevent loss of hero ellipse when leveling up 2022-07-27 16:27:01 +02:00
Pentarctagon
9b766013b2 Populate active_addons_ when all add-ons are enabled.
When loading into different screens prior to actually starting or joining a game, Wesnoth loads the configs of all add-ons, otherwise it wouldn't know to display eras, campaigns, etc for selection. However starting with a4e8ac339e, when loading all add-ons the `active_addons_` variable was no longer being populated with any of the the add-ons that were active. This meant that when checking to see if any of the active add-ons had changed it could falsely determine that nothing had changed and therefore could skip the step where it actually deactivated add-ons.

As an example of the current state prior to this fix:
* Player starts Wesnoth and joins the multiplayer lobby -> all add-ons are active, but `active_addons_` is empty.
* Player joins a game with no add-on content required -> Wesnoth checks the add-ons required for the game (none) against the contents of active_addons_ (empty).
* Wesnoth therefore determines that it doesn't need to deactivate any add-ons since it thinks no add-ons are active, when in fact all add-ons are active.
* Out of sync errors then happen if any of the players that join have add-ons installed that can globally affect other unit_types, such as [resistance_defaults], since those add-ons haven't been correctly deactivated.

The fix then is to make sure that game_config_manager::set_enabled_addon_all() correctly populates active_addons_ when it's called.

Fixes #6650
2022-07-26 10:04:59 -05:00
Tommy
ab42d54057 Update changelog 2022-07-25 14:46:02 +12:00
Tommy
444e7cfe6d Fix hex invalidation code for animations when zoomed
It did not match the actual animation placement... the code was both
duplicated and wrong. I guess one part got updated and the other part
didn't.

It still needs to be deduplicated...

(cherry picked from commit 49e75f0e89)
2022-07-25 14:38:09 +12:00
Tommy
e5c2a13468 Correctly invalidate the previous frame when displaying leadership
Fixes #3996.

I applied the fix by jostephd. The fix looks good, and works.

(cherry picked from commit 0b97284f07)
2022-07-25 10:03:01 +10:00
Nils Kneuper
c99397a643 updated Arabic translation 2022-07-23 12:45:12 +02:00
loonycyborg
96986838d2
servers: avoid exception on write error 2022-07-22 19:05:19 +03:00
Iris Morelle
7b1ec72acb campaignd: Drop removed pbl attributes on upload if applicable
Closes #6284.
2022-07-19 08:40:04 +02:00
Iris Morelle
9b23565b0c config: Add copy_or_remove_attributes()
Unlike copy_attributes(), this erases attributes in the destination that
don't exist in the source.
2022-07-19 08:40:04 +02:00
Nils Kneuper
b79d99844e updated Arabic translation 2022-07-17 10:51:03 +02:00
benediktwerner
d2f610c4a7 merged German translation 2022-07-16 23:17:51 +02:00
Nils Kneuper
c44e720ec0 updated Swedish translation 2022-07-16 10:59:20 +02:00
Nils Kneuper
6d75ecd0e9 updated Japanese translation 2022-07-16 10:57:53 +02:00
Nils Kneuper
0894435946 updated Italian translation 2022-07-16 10:56:48 +02:00
Pentarctagon
6b58a5694f
1.16.5+dev. 2022-07-13 11:11:37 -05:00
Pentarctagon
e3aca551be
1.16.5. 2022-07-13 11:10:31 -05:00
Pentarctagon
fd5de5c9e5
Check whether the unit is valid before using it.
Fixes #6863.
2022-07-13 09:55:45 -05:00
Wedge009
314d1031f7 Test scenario: Use progressive syntax for fire animation
[ci skip]

(cherry picked from commit a6c57d014d)
2022-07-13 13:15:07 +10:00
Pentarctagon
3bc6c81b9c
1.16.4+dev. 2022-07-10 10:32:15 -05:00
Pentarctagon
3864239cc0
1.16.4. 2022-07-10 10:31:20 -05:00
Pentarctagon
7d974dd3dd
pot-update and regenerate doc files 2022-07-10 10:28:53 -05:00
Nils Kneuper
356e5f9147 updated Czech translation 2022-07-10 11:44:05 +02:00
Nils Kneuper
1f3f6102f1 added a cmake hack for finding asciidoc when using recent archlinux 2022-07-09 12:06:28 +02:00
Nils Kneuper
7303ec9a6b updated Arabic translation 2022-07-09 11:03:43 +02:00
Nils Kneuper
fa440c1358 updated French translation 2022-07-09 11:01:00 +02:00
Nils Kneuper
c34c0d4c15 updated French translation 2022-07-07 19:34:55 +02:00
Nils Kneuper
cda4683b1d updated British English translation 2022-07-07 19:33:19 +02:00
mattsc
82b4d01337 Update changelog 2022-07-06 07:05:39 -07:00
Pentarctagon
3530ec2987
pot-update and regenerate doc files 2022-07-05 09:28:04 -05:00
Tommy
7fde85be6e Update changelog 2022-07-05 12:57:19 +12:00
Tommy
0e888f396f Ignore Scroll Lock status when checking hotkey commands
Fixes #6759

(cherry-picked from 034bc786cc)
2022-07-05 12:56:22 +12:00
mattsc
6ff3703da0 move-to-any-enemy CA: stop eval if no enemies
Otherwise there is an error caused by one of the sort functions later in the code.
2022-07-03 12:27:43 -07:00
Luis Miguel Iglesias Sánchez
5d4683c664
Fixed Warden’s and Arbiter’s animations popping on water tiles (#6831) 2022-07-03 02:29:09 +02:00
Nils Kneuper
236a5cbfaa updated Arabic translation 2022-07-02 12:19:28 +02:00
mattsc
b07320f4d0 AI: improve efficiency of move-to-any-enemy CA
The new method avoids a lot of path finding that the previous method did, esp. on large maps with many units and/or enemies, leading to significant speed improvements in some cases.

This fixes #6504
2022-07-01 18:24:15 -07:00
mattsc
a6bf253c73
Merge pull request #6816 from mattsc/fix_segfault_attack
Fix seg fault when weapon is removed during attack
2022-07-01 15:47:19 -07:00
mattsc
e8005f51aa Add no-unit error message for unit debug command
Fixes #6116
2022-07-01 15:42:57 -07:00
mattsc
6331a49c1c Fix seg fault when weapon is removed during attack
Events during attacks may modify either of the units involved. If, as a result, one of the units does not have a weapon of the type used any more, this previously caused a segmentation fault in unit_attack() in udisplay.cpp. The solution is to set the remaining number of strikes for the unit to zero. This prevents that unit from striking again, but lets the opponent continue its attack.

Fixes #4927 and #5914
2022-06-30 07:13:17 -07:00
Nils Kneuper
1ac042c941 updated Finnish translation 2022-06-25 12:00:42 +02:00
Nils Kneuper
f7f3e0c62c updated Arabic translation 2022-06-25 11:56:02 +02:00
mattsc
f08d2c1d9f ExpAI recruit rushers: include unit types from extra_recruit
This fixes #4924. Note, however, that the recruit rushers CA is set up for single-leader sides and does not work with multiple leaders, so this is of limited use.
2022-06-24 16:44:17 -07:00
mattsc
04d44a9e3b ExpAI recruit rushers: do not parse side __cfg each eval 2022-06-24 16:43:44 -07:00
mattsc
031ab276ec ExpAI recruit rushers: reset recruit_data.recruit each turn
While most data in recruit_data can stay persistent from turn to turn, some of recruit_data.recruit, such as enemy_types, needs to be updated each turn.
2022-06-24 16:43:22 -07:00
mattsc
6aaface658 ExpAI: do not use generic_recruit_engine
This removes the need for the Generic Recruit Engine and makes Recruit Rushers a "clean" candidate action.  In the process, it fixes a bug of data leakage between the Experimental AIs of different sides.
2022-06-24 16:41:13 -07:00
mattsc
e64ddeb040 Retreat injured CA: do not take villages from ally 2022-06-24 16:35:28 -07:00
mattsc
c40590879a Retreat injured CA: fix for regenerate ability without value key
The ability does not need to contain a value key if it only heals poison.
2022-06-24 16:07:06 -07:00
Wedge009
b9268c87cd Belated change log entry for resolution to #5620 and #6544.
[ci skip]

(cherry picked from commit 3de9599b74)
2022-06-23 07:50:17 +10:00
Tommy
d86c212f47 Fix wmlindent complaint.
(cherry picked from commit cf4c265fc3)
2022-06-23 07:50:17 +10:00
Tommy
ba255c2a7b Fix low-res themes during replay.
This was mentioned as a comment in #5620.

(cherry picked from commit 8380e018f5)
2022-06-23 07:50:17 +10:00
Tommy
32fbae8d7e Fix low-res editor themes.
Fixes #5620.

(cherry picked from commit 9615236ae0)
2022-06-23 07:50:17 +10:00
Tommy
1c798d9ec5 Fix "End Turn" button placement on low-res themes.
Fixes #6544.

I am not sure how this was even remotely working as it was.

(cherry picked from commit 91fd53ac45)
2022-06-23 07:50:17 +10:00
Pentarctagon
1867b81b4c
Fix whitespace. 2022-06-19 08:57:00 -05:00
Nils Kneuper
ce5c08e122 updated arabic translation credits 2022-06-19 11:31:26 +02:00
Celtic Minstrel
8ee5cdf092 Fix wmlindent quote detection (#6764)
* wmlindent: Fix parsing quotes in comments

* Remove unnecessary wmlindent ignores

* Run wmlindent
2022-06-18 13:16:48 -04:00
Celtic Minstrel
585f671557 Lua: fix assert when assigning a selected index to a menu button or toggle button 2022-06-18 12:48:34 -04:00
Celtic Minstrel
542382cba9 Fix a bunch of broken uses of helper.wml_error
It's deprecated, but here they were broken because helper wasn't even loaded.
2022-06-18 12:48:12 -04:00
Nils Kneuper
31e0b0656f updated Chinese (Traditional) translation 2022-06-18 10:44:00 +02:00
Nils Kneuper
524b07b6aa updated Arabic translation 2022-06-18 10:40:20 +02:00
Martin Hrubý (hrubymar10)
8c22b137bc
Fix Xcode project DEBUG scheme builds 2022-06-14 09:59:59 +02:00
mattsc
7792e9b5f4 Protect Unit MAI: fix typo in MAI removal code 2022-06-11 06:15:15 -07:00
Nils Kneuper
b019bfa180 updated Finnish translation 2022-06-11 14:02:20 +02:00
Nils Kneuper
82d69c92b8 updated Czech translation 2022-06-11 13:59:32 +02:00
mattsc
88071c7880 ExpAI castle switch CA: fix error when stored leader has been killed
The castle switch CA stores the leader move because the evaluation is expensive.  If the leader was killed in between storing and reevaluation of the CA, this would previously cause an on-screen error message and the CA to be blacklisted for the turn.

This fixes #6440.
2022-06-09 07:48:39 -07:00
mattsc
81ccaa2cd6 Attack predictions: fix for chance of being unscathed
The probabilities being combined here are additive, not multiplicative.  The two terms in the equations are the probabilities that either unit in a fight is already dead before the strike currently being evaluated.  As a result, this only affected fights in which both units can die before the last round of combat.  It also only affected the chance of being unscathed, the HP distributions shown were correct.

This fixes #6590.
2022-06-09 07:31:06 -07:00
mattsc
e8edb5e48c Bottleneck Micro AI: fix bug involving units without moves
An integral part of this MAI is that it moves weaker units out of the way for stronger ones.  Units without moves are taken into account by giving them a very high rating.  This was previously only done on what's considered the AI's territory (the AI side of the bottleneck) which works fine most of the time since the AI does not try to move onto enemy territory.  However, it breaks down on more open maps, where there are way for units to move around the bottleneck, as AI territory is not always well defined on them.  However, there is no need to restrict this to AI territory only.

This fixes #6599.
2022-06-09 06:25:54 -07:00
mattsc
c6bf0b4245 Update changelog 2022-06-06 19:30:00 -07:00
mattsc
78079ffd79
Merge pull request #6744 from mattsc/vision_path_oos
Fix potential for OOS errors due to wrong viewing side in vision_path
2022-06-06 19:15:51 -07:00
Nils Kneuper
6fefd6ac08 updated Polish translation 2022-06-06 10:00:15 +02:00
mattsc
19ecc3dc61 ai_helper: fix visibility bug in get_attackable_enemies()
The passed filter needs to be enclosed in an [and] tag, otherwise the check for visibility might not work correctly, for example if the filter contains a top level [or] tag.
2022-06-04 09:08:16 -07:00
Nils Kneuper
ac346b86c8 updated Polish translation 2022-06-04 10:44:17 +02:00
mattsc
c7a237d677 Path finding: fix viewing side in function vision_path
When finding the vision path for a unit, that unit's team's vision needs to be used.  This had the potential of causing OOS errors in rare cases on maps with tunnels and at least three sides that do not share vision.
2022-06-03 13:14:44 -07:00
Descacharrado
7de1b38f77 Use 'leader' and 'grunt' instead of 'chief' and 'lesser orc'
(cherry picked from commit 481378aaf3)
2022-06-01 10:07:50 +10:00
Descacharrado
a7fb72ec40 Avoid using 'that' twice
(cherry picked from commit 0742b902a2)
2022-06-01 10:07:50 +10:00
Descacharrado
72197b62ad NR S1 Vary the die dialog depending on race
(cherry picked from commit f468020b11)
2022-06-01 10:07:49 +10:00
Steve Cotton
b95a1f520b Editor palettes: allow keyboard scrolling to see the last row
Fixes #6724, where scrolling with the mousewheel could reach the last row, but
scrolling with keys or buttons couldn't. Although can_scroll_up() and
can_scroll_down() already existed, can_scroll_down() didn't allow access to the
last line when that line had less than the full number of items. The mousewheel
still worked, because it ignored that logic.

Remove a feature that was seen when the last row is visible - things jumped
between columns to fill the spaces. If you have 10 items, with 4 columns and 2
visible rows then it will appear like this:
    a b c d
    e f g h
when scrolling down it used to move items sideways to fill the last line, which
seems bad UI because it made items harder to find:
    c d e f
    g h i j
the new code is simpler, and will instead show the following when scrolling down:
    e f g h
    i j

Move the layout code into adjust_size(), so that it runs one time when the number
of buttons changes. That could be separated from this commit, but the code
would still be touched in this commit (`counter_from_zero` would still be
replaced by `i`), so doing it and testing the changes together made sense.

(cherry picked from commit 8edd8f2292)
2022-06-01 09:58:38 +10:00
Wedge009
77b71b2a9d Editor: Add missing items and scenery (resolves #6719)
(cherry picked from commit 8960e407e9)
2022-05-30 10:52:36 +10:00
Luis Miguel Iglesias Sánchez
142c6db677 EI S07a various fixes (#6639)
* Side 2 hidden without spoilers
* Fixed Grug upkeep, added dialogue about Ogres joining
* typographic quote

(cherry picked from commit 742bb75ca3)
2022-05-30 10:51:52 +10:00
Luis Miguel Iglesias Sánchez
c6eb655d67 UtBS S05 Enforce encounter with the Cloaked Figure (#6644)
* Enforce encounter with the Cloaked Figure

* Revert "Avoid counting encounters with 'Cloaked Figure'."

This reverts commit ada454b20a.

(cherry picked from commit 7e87826303)
2022-05-30 10:48:00 +10:00
Pentarctagon
8f90160b26
1.16.3+dev. 2022-05-29 10:06:05 -05:00
Pentarctagon
cdfe07df7f
1.16.3. 2022-05-29 10:04:52 -05:00
loonycyborg
afbe80746d
pot-update and regenerate doc files 2022-05-29 13:21:03 +03:00
Nils Kneuper
533ca873c2 updated French translation credits 2022-05-29 10:16:45 +02:00
Elvish_Hunter
8fa0526153 wmllint: fixed translation marks not being removed from values when checking if a string is empty 2022-05-28 22:04:49 +02:00
Elvish_Hunter
9d5134d4cf wmllint: fixed translation mark checks by adding a missing not 2022-05-28 21:14:02 +02:00
Elvish_Hunter
7976fefbb6 wmllint: automatically remove {SOUND:SLOW} and {SOUND:POISON} lines
Part of point 5 of issue #6403
2022-05-28 20:36:51 +02:00
Elvish_Hunter
e73bb70179 Prevent wmllint from updating a compatibility unit 2022-05-28 20:29:44 +02:00
Tahsin Jahin Khalid
16755deb60 wmllint: add Giant Stoat -> Frost Stoat monster ID change (#6694) 2022-05-28 20:19:28 +02:00
Nils Kneuper
656a3ac1eb updated French translation 2022-05-28 12:03:54 +02:00
loonycyborg
adb2e0921d
servers: avoid potential dangling queue items in send_doc_queued()
Use scope guards to ensure that queues are cleared of that socket whenever
coro_send_doc() throws.
2022-05-27 22:33:03 +03:00
loonycyborg
330c13b2da
servers: moved send_queued code into separate function from a lambda 2022-05-26 20:32:49 +03:00
Wedge009
bf2fdc6e4e THoT S4: Remove spurious WML (closes #6725)
(cherry picked from commit 799f251113)
2022-05-24 08:16:02 +10:00
Nils Kneuper
12c07516e7 updated Japanese translation 2022-05-22 11:07:56 +02:00
Nils Kneuper
7cda523b96 updated Czech translation 2022-05-21 10:52:11 +02:00
Nils Kneuper
641bfec3d5 updated French translation 2022-05-21 10:51:04 +02:00
Nils Kneuper
3c849f2f1c updated British English translation 2022-05-14 11:19:23 +02:00
Nils Kneuper
d54bbd857a updated Italian translation 2022-05-14 11:18:05 +02:00
Nils Kneuper
7d802ccef7 updated Italian translation 2022-05-08 10:49:13 +02:00
loonycyborg
9351998f50
pot-update and regenerate doc files 2022-05-08 04:44:51 +03:00
Steve Cotton
b8a37cb8ca
Fix a typo in the editor-help (#6690)
po: in wesnoth-help's `<header>text='The files: .map and .cfg' ...`,
the change is just a spelling correction of "scenaro" to "scenario".
2022-05-07 20:11:15 +02:00
Nils Kneuper
728d87274b updated French translation 2022-05-07 10:40:14 +02:00
Elvish_Hunter
c6b5bb7d98 wmllint: updated mainline campaigns tuple 2022-05-06 20:55:13 +02:00
Charles Dang
cc58f530e7
Merge pull request #6675 from mesilliac/1.16
Backport smooth scrolling fix
2022-05-03 19:57:03 -04:00
Tommy
5c7577c452 Scroll at a consistent speed.
Fixes #3607

(cherry picked from commit 4e58b57e95)
2022-05-03 19:56:41 +12:00
Wedge009
acafcd04b9 Editor: Add sconce tile to cave group.
[ci skip]

(cherry picked from commit 78ea9ed0dd)
2022-05-02 09:08:03 +10:00
Wedge009
b1bbb07375 Editor: Add some missing terrain groupings (resolves #6643).
[ci skip]

(cherry picked from commit af72f75b2d)
2022-05-02 09:08:03 +10:00
Elvish_Hunter
b23cccc23d wmllint: removed gif from two regexps 2022-05-01 11:21:00 +02:00
Nils Kneuper
8af84a1093 updated Czech translation 2022-04-30 13:23:53 +02:00
Wedge009
9dc9431bde Update change log.
[ci skip]

(cherry picked from commit 6b2edd401f)
2022-04-29 10:44:32 +10:00
Tommy
9be14b4603 Fix title-screen flicker when loading a game or starting a campaign.
It was being displayed for a single frame in between loading dialogs.

(cherry picked from commit 9284871e91)
2022-04-29 10:43:21 +10:00
Elvish_Hunter
20d2c042ba Changelog entry 2022-04-26 11:29:30 +02:00
Elvish_Hunter
dca1228e01 wmllint: finish removing support for the old special notes system
The magic comments 'notecheck off', 'notecheck on' and 'match <ability> with <note>' no longer have any effect.
2022-04-26 11:27:44 +02:00
Elvish_Hunter
b18cea57ab wmllint: removed --stringfreeze command line flag
This flag was supposed to disable repair attempts for newlines in messages, however it never did so, even when the non-standard word wrap check was still available. Instead, it just disabled repair attempts for double spaces after sentence ends.
2022-04-25 23:17:41 +02:00
Elvish_Hunter
71f142bb86 wmlindent: refactored indentation level handling code 2022-04-25 23:08:51 +02:00
Steve Cotton
745a0e1271
SoF: A few extra translation hints (#6633)
po: In SoF S09, many strings involving Krawg (a gryphon) assumed that Krawg was
the only flying unit. Similar texts have been added that are used when the player
has gryphon riders too; most of these will be marked as fuzzy versions of the
Krawg-only strings.
2022-04-23 11:59:14 +02:00
Nils Kneuper
3241fbf300 updated French translation 2022-04-23 11:15:53 +02:00
Nils Kneuper
f7f8aa00d5 updated Chinese (Simplified) translation 2022-04-23 11:13:31 +02:00
Wedge009
ff88db00f7 Update change log.
[ci skip]

(cherry picked from commit 034453d697)
2022-04-22 11:50:30 +10:00
Wedge009
2581ab6c87 SoF S9: Allow for Gryphon Riders to trigger an event on the final runic tablet, and add translator hint
Things in the scenario didn't quite make logical sense considering the presence of Gryphon Riders. This resolves the issue by allowing them to trigger an event, and by acknowledging them in the endlevel dialog. Additionally, one translator hint is added for the "Smash" text when the rune is smashed.

(cherry picked from commit f82079bcc0)
2022-04-22 11:49:20 +10:00
Steve Cotton
d6b56969a0 Add debug for "[event] is missing name or id"
The problem with this warning was that it didn't include any clue about what
had triggered it - just that there's a broken event somewhere, and it could be
in a scenario, macro, unit_type or even from another add-on if you're using a
non-default era.

When run with `--log-debug=wml`, this makes Wesnoth print out whatever the
contents of the affected [event] tag are.
2022-04-21 15:29:17 +02:00
Steve Cotton
1d1aa1f790 Unit tests for [drains], [poison] and [slow], with apply_to=opponent
Here `apply_to=opponent` means that the weapon special gives the opponent the
ability, the unit that should get poisoned or slowed is the unit that has the
weapon special.

There's a known bug in 1.16, that `apply_to=opponent` check the wrong unit to
see it it's `unpoisonable`, `undrainable` etc. It also checks the wrong unit to
see if it's already poisoned or slowed, so a battle between two units that both
have reverse-poison results in at most one being poisoned.

As 1.16 has already been released, to avoid OOS the test is checking that the
current behavior's known bug is preserved. For the 1.17 branch, the five lines
labelled `preserving known bug` will be changed to test the reverse.

Most of the credit for this is Newfrenchy's, as he's already written a fix
and a WML based test. This commit uses a Lua test instead to test more
combinations of statuses.

This adds a `COMMON_KEEP_A_B_UNIT_TEST` macro, which is a counterpart to the
`GENERIC_UNIT_TEST` macro that starts the leaders next to each other, ready
to attack. The `A_B` is because I'm planning a multiple-side variant too, and
the main reason for using separate files is Git's fuzzy-patch matching when
merging and rebasing. Having large blocks of identical text in
`wml_unit_test_macros.cfg` can mean the wrong section gets patched.

There's no test for [petrify], as simulate_combat doesn't provide a stat for it.

This tests only 3 of the 6 abilities whose behavior will change in 1.17's
equivalent of 1.16's 7b39b65606. That's sufficient to prevent any accidental
copy of the 1.17 fix to 1.16, and my thoughts on testing the others are:
* [firststrike]'s test is in 7b39b65606. It crashed, so is fixed in 1.16.
* [drains], [poison] and [slow] are tested here.
* [petrify] ends combat, it's also not exposed in simulate_combat's stats.
* [plague] triggers after combat ends.
2022-04-19 15:27:22 +02:00
Wedge009
1fb6ca626e Avoid potentially using unit IDs that are no longer valid
Resolves #6603 (crash with musl implementation of libc)

(cherry picked from commit aa6b5b493d)
2022-04-12 13:56:00 +10:00
Steve Cotton
6a37f9f9a1 Update changelog
[ci skip]
2022-04-09 13:56:39 +02:00
Nils Kneuper
5aeb8b1961 updated Czech translation 2022-04-09 12:01:41 +02:00
Steve Cotton
a1e60f061d SoF: Consistently use lower-case after ellipses
Sadly, this takes the campaign up to 100 string changes between 1.16.2 and
1.16.3. The only one of these that was already going to change for 1.16.3 is
S04t's volcanic forge one.
2022-04-09 01:26:54 +02:00
newfrenchy83
7b39b65606
fix [firststrike] special with apply_to=opponent crashes Wesnoth 1.16.x (#6573)
As reported on the forums at https://forums.wesnoth.org/viewtopic.php?p=672374#p672374, if a unit with "last strike" ([firststrike] special with apply_to=opponent, on any of its attacks) is targeted by other unit for attack, wesnoth crashes.

Fixes #6575.
2022-04-05 14:52:57 -05:00
Descacharrado
4840705675 changelog
(cherry picked from commit d4bddb5496)
2022-04-05 10:31:49 +10:00
Descacharrado
7c4368b064 Fix units stuck in spider wall and filter
(cherry picked from commit eb123ed8bb)
2022-04-05 10:30:29 +10:00
Nils Kneuper
de13e1579a updated French translation 2022-04-02 12:06:42 +02:00
Steve Cotton
ba1767f8b9 Add a unit test for [move_unit]location_id with an occupied hex 2022-03-29 09:24:18 +02:00
Steve Cotton
904bb9bfb8 wmlxgettext: add a --no-sort-by-file option
Some users of wmlxgettext have scripts that already provide the file list in
a deterministic order, and the sorting added in 2adcb92fab was choosing a
different order to the one desired.
2022-03-28 10:34:16 +02:00
Nils Kneuper
b109713853 updated Italian translation 2022-03-26 14:59:03 +01:00
Wedge009
30d02cb40c Update change log.
[ci skip]
2022-03-26 12:05:47 +11:00
Tahsin Jahin Khalid
ade9c0d73c DiD S8: Ensure Spectral Servant unit-line cannot pick up the book
Fixes #6576
2022-03-26 03:38:27 +06:00
Iris Morelle
27b1776840
Fix signedness mismatch error with Xcode 2022-03-24 15:55:33 -03:00
Iris Morelle
45948827df
server: Fix set-but-unused variable warnings 2022-03-24 15:55:32 -03:00
loonycyborg
63c72ea42b
wesnothd: Properly enable cloexec even on non-keepalive codepath 2022-03-24 13:48:56 +03:00
loonycyborg
ada186769b
Fix graceful shutdown
Don't instantly shut down server in response to accept failure when not
accepting connections.
2022-03-24 13:37:46 +03:00
Steve Cotton
d96968b2ec Add unit tests for Lua API wesnoth.simulate_combat 2022-03-22 19:16:12 +01:00
Nils Kneuper
4dc923eec1 updated Bulgarian translation 2022-03-19 16:43:26 +01:00
Pentarctagon
93e4dfc356 Fix #6389.
Previously this code assumed that all add-ons would have a _server.pbl or an _info.cfg. When neither was the case, it tried to dereference the begin() of an empty set, causing the crash.
2022-03-13 11:46:17 -05:00
Pentarctagon
51b4f02665
Make MSVC fail when C files generate warnings. 2022-03-12 16:34:19 -06:00
Nils Kneuper
3c2e7a65dd updated Czech translation 2022-03-12 12:54:41 +01:00
Pentarctagon
df049776cb
Changelog update. 2022-03-10 10:27:20 -06:00
Pentarctagon
6bd1cf502c
Store add-on passwords in the credentials file as well.
This allows storing add-on passwords for uploading in the same credentials file as is currently used by the client when connecting to a multiplayer server. For add-on authors that don't keep their passwords as plaintext in their _server.pbl, this removes the need for them to manually enter their password each time they upload an add-on.
2022-03-10 10:26:39 -06:00
Pentarctagon
8036edf175
Ignore lua submodule folder in 1.16. 2022-03-09 15:04:20 -06:00
Steve Cotton
d8d18a77f7 SoF: explain the Shorbear tools as products of the volcanic forge
I don't like the explanation of the tools being made of unobtainium, so changed
it to use a convenient plot device. I think this also solves a plot hole about
the forge; instead of it being near the Shorbear Caves by random chance, this
gives a reason for the Shorbear Clan to live there (even if they haven't been
in there in living memory).

(cherry picked from commit 1f41893f18)
2022-03-09 13:32:20 +01:00
Steve Cotton
2f6a999989 Piglets: add a po hint that these are wild boars' young 2022-03-07 08:27:56 +01:00
Pentarctagon
a5825a58c7
2022 copyright update. 2022-03-06 19:08:20 -06:00
Aaron Winter
d28b524bb5 updated German translation 2022-03-06 08:20:17 +01:00
Elvish_Hunter
459104cbec Changelog entry 2022-03-01 11:18:23 +01:00
Elvish_Hunter
ead8607f27 Fix a deprecated macro call 2022-03-01 11:16:15 +01:00
Elvish_Hunter
0e988f6c7a Fix an incorrect macro argument reported by wmlscope 2022-03-01 11:16:01 +01:00
Elvish_Hunter
0da1ea40dd wmlscope: allow reporting deprecated macro calls 2022-03-01 11:09:46 +01:00
Iris Morelle
38eb7df787
macos: Use 1.16 changelog for 1.16 branch builds 2022-02-26 13:38:29 -03:00
Iris Morelle
9874afd4fa
macos: Update bundle copyright year 2022-02-26 13:37:22 -03:00
Wedge009
9fe10e570b DM S23: It makes more sense that Asheviere does not mention the attack on Sagus at all.
[ci skip]

(cherry picked from commit 0c13523544)
2022-02-22 11:45:22 +11:00
Wedge009
e5d9dab248 Not aware of north-east Wesnoth being a special region used as a proper noun, so remove capitalisation.
[ci skip]

(cherry picked from commit 77cb32302b)
2022-02-21 14:02:25 +11:00
Wedge009
c4a9336041 Directions are not capitalised.
[ci skip]

(cherry picked from commit e76717b40b)
2022-02-21 14:02:25 +11:00
Wedge009
fd9f1f0a7b Drake description: 'in to' should be a single word in this context.
[ci skip]

(cherry picked from commit ea576c78ac)
2022-02-21 14:02:24 +11:00
Alexander Lacson
beab603091 SotBE: Proofread Pass (#6166)
(cherry picked from commit c80f7f7608)
2022-02-21 14:01:58 +11:00
Celtic Minstrel
b261de4f2b Lua: Fix incorrect check for string type 2022-02-20 13:56:33 -05:00
Celtic Minstrel
351ad17758 Lua: Fix a deprecation warning in the hex reference API 2022-02-20 13:51:36 -05:00
Nils Kneuper
576cc889e0 updated Czech translation 2022-02-19 15:23:40 +01:00
Tahsin Jahin Khalid
dc315931a6 [world conquest] Update modding instructions
Cherry-picked from ed0afaa382 and its preceding
commits, which I (Steve) forgot to squash-merge in the Github UI.
2022-02-18 10:18:16 +01:00
Wedge009
897e6b9b63 Replace deprecated placement=map_overwrite.
(cherry picked from commit c836a81f67)
2022-02-17 16:05:45 +11:00
Wedge009
0607f310e9 HttT S17: Comply with current Wesnoth Lua API specifications
wesnoth.special_locatioons is deprecated.

Resolves #6517

(cherry picked from commit 47ec300d54)
2022-02-17 09:51:14 +11:00
Pentarctagon
b1ff723986
Mark PUA as MP-only so it doesn't show up as available for campaigns. 2022-02-16 14:48:05 -06:00
Gunter Labes
f27cbcfaad
Improve empty value checks 2022-02-16 20:54:09 +01:00
Gunter Labes
6e476296fb Fix comment handling if the value is empty (fixes #6514) 2022-02-16 12:14:36 +01:00
Alexander Lacson
3190470386 [wmltools] Fix Docstrings
docstrings of the keyboardinterrupt handler.
2022-02-16 12:13:59 +01:00
Alexander Lacson
5e5727cb79 wmlxgettext and wmlindent change exit code
For keyboard interrupt change exit code from 0 to 1.
2022-02-16 12:13:39 +01:00
Elvish_Hunter
be0b2fd0ae wmllint and wmlindent: avoid crashing on non-UTF8 files
Fixes #2091
2022-02-16 12:10:08 +01:00
Elvish_Hunter
a7b22f56d7 wmllint: handle deprecated [unit] placement= values 2022-02-16 12:09:54 +01:00
Tahsin Jahin Khalid
8ef7c36289 SoF: update changelog on thursagan bug fix 2022-02-16 07:37:47 +01:00
Tahsin Jahin Khalid
a6024d4549 SoF: fix thursagan's arcanister advancement breaking in some cases 2022-02-16 07:37:47 +01:00
Wedge009
28ce494474 Spelling correction.
[ci skip]

(cherry picked from commit c3aaabd26c)
2022-02-15 23:34:16 +11:00
Wedge009
c80f83da94 Set Chantal's side to have shroud so that share_vision has the intended effect when the player finds her.
(cherry picked from commit 4c88909396)
2022-02-15 23:34:15 +11:00
Wedge009
80c9263003 Replace deprecated share_maps and share_view with share_vision.
Closes #6496.

share_maps=yes -> share_vision=shroud
share_view=yes -> share_vision=all

(cherry picked from commit f983a998a2)
2022-02-15 23:32:44 +11:00
doofus-01
f47909ad55
fix bad Swamp-Icy_Cobble (Ss-Rra) transition (#6491) 2022-02-12 04:08:40 -08:00
Nils Kneuper
cb2ae4605b updated Czech translation 2022-02-12 13:08:07 +01:00
Gunter Labes
bd209189a8
Remove excessive newline 2022-02-11 10:56:09 +01:00
newfrenchy83
e348e6da6b correction in documentation 2022-02-11 06:22:59 +01:00
newfrenchy83
3fe24cade9 (1.16) remove only_active argument to weapon_specials() 2022-02-11 06:22:59 +01:00
Steve Cotton
359e4c8270 Change [filter_weapon] to not depend on attack_type::weapon_specials
This changes it to use the function that attack_type::get_value already uses,
thus removing a call to attack_type::weapon_specials. The latter is being
refactored by newfrenchy83 (and that refactor is expected to be backported as
it allows UI improvements).

This code is part of the object used for [filter_weapon]formula=, however the
implementation of that filter creates exactly one attack_type_callable, so
doesn't trigger this code. For testing I called it via a debugger.

(cherry picked from commit 6ccac5a5e8)
2022-02-10 16:35:24 +01:00
loonycyborg
2b92aa0d89 Update flatpak build dockerfile
(cherry picked from commit c6f9a96a09)
2022-02-10 16:10:52 +03:00
loonycyborg
a7bd28a85a flatpak: update freedesktop runtime version to 21.08. Fixes #6497
(cherry picked from commit 35211181b4)
2022-02-10 16:10:52 +03:00
Steve Cotton
6a72b2e511 Add-ons manager: handle the selected add-on changing in small-screen mode
Fix another instance of issue #3059, where code assumes that all parts of the
add-ons manager's UI are accessible, an assumption that fails when the dialog
uses a stacked widget to handle small window sizes.

The up and down arrow keys select the previous or next add-on in the list,
even when the small-window layout is hiding the list. That feels like a feature
rather than a bug, as it's useful and an understandable UX; however it needs
the fix in this commit so that on_addon_select() doesn't throw an exception
and close the dialog. The new code is the same as the fix that 050feb623b
applied to on_selected_version_change, traversing the stacked widget to get the
info.
2022-02-08 14:07:40 +01:00
Pentarctagon
6bbcdf9ad0
Add additional logging. 2022-02-07 09:39:52 -06:00
loonycyborg
930bce2186
servers: exception safety fix for async_send_doc_queued() 2022-02-06 04:15:08 +03:00
Nils Kneuper
2d20b72a9e updated Russian translation 2022-02-05 13:47:30 +01:00
Nils Kneuper
5b9f3f6bec updated Portuguese (Brazil) translation 2022-02-05 13:15:02 +01:00
Pentarctagon
0983707698
Don't name the unused variable. 2022-02-04 15:42:50 -06:00
Pentarctagon
60e48e38c9
Log if a forced_unwind exception is caught in game destructor. 2022-02-04 13:40:12 -06:00
loonycyborg
44f18ea01c
servers: log more diagnostic information on caught std::exception 2022-02-04 21:31:43 +03:00
Wedge009
73e492cc26 Correct translation of variable.
[ci skip]
2022-02-04 12:04:19 +11:00
Pentarctagon
52986a42a1
Make the adhoc add-on download check more detailed.
Originally this simply checked for whether the add-on's directory existed to avoid downloading the same add-on multiple times when migrating from one major release to another. However this then causes add-ons to not get updated when joining a multiplayer game where to person joining has the add-on (so the directory exists) but needs an updated version of it.

Fixes #6383
2022-02-03 10:47:04 -06:00
Steve Cotton
f2fa807e61 Fix deprecation of [advancefrom], mark as already removed
The existing code searched for `[units][advancefrom]` instead of
`[unit_type][advancefrom]`, so wasn't triggering. It was planned
for removed in 1.17, so simply mark it as already-removed instead.

The deprecation warning is shown on stdout/stderr, but not in the
in-game UI, so it's generally not visible to players. I think it
would be better if it was visible, but OTOH it's something that's
easy for someone to check all add-ons for with a simple grep.
2022-02-02 08:43:37 +01:00
Alexander Lacson
a72c5ff64e Update about.cfg
Add max_torch as miscellaneous contributor.

(cherry picked from commit 9faaea1b28)
2022-01-31 23:50:36 +01:00
doofus-01
b23ddded76
Merge pull request #6477 from doofus-01/1.16_variations-20220129
image-only affects, but only the second commit is a "change"
2022-01-30 19:17:54 -08:00
Bruno Macabeus
4a8d098a12 Add /clear chat command 2022-01-31 13:59:25 +11:00
doofus-01
1ded573793 icy stone walls variation for Xos, based on adjacent terrain, not new code 2022-01-30 16:34:46 -08:00
doofus-01
b1cb0e0e15 more variations for rocks, rubble, and snowbits 2022-01-30 05:25:44 -08:00
Nils Kneuper
560f70cfa2 updated Czech translation 2022-01-29 11:21:43 +01:00
Wedge009
13cbc0da3d Capitalise direct references to the completed Sceptre of Fire.
Arguably, references to generic sceptres, as is the case with references to the Sceptre of Fire before its completion throughout the rest of this campaign, ought to use the default US English spelling of 'scepter'. This was the case in The Rise of Wesnoth where Haldric quips that the Ruby of Fire should be made into a 'scepter'.

[ci skip]

(cherry picked from commit 101359b06c)
2022-01-26 19:02:35 +11:00
Alexander Lacson
67a1ab4567 SoF Proofread Pass and Campaign Prose edits (#6177)
* SoF Proofread Pass and Campaign Prose edits

This is a proofread pass. But this also has edits that are more than just minor edits which try to improve the campaign text.

commit

* SoF Proofread Second Draft

This is a changelog relative to the first draft:
- Fixed up "nor" in S1.
- reverted the ellipsis I added to indicate pause in story part of S2.
- Reworded my edit in S3 to be closer to the original.
- Followed Wedge's suggestion for S4.
- S5: Exchanged Shorbear dwarves and elves, removed introductory clause in ln 560, rewording in ln 592.
- Reverted my edit in S6.
- in S8, converted comma into ellipsis to indicate pause.
- S9: Reworded exposition of Thursagan, changed wording in ln1221, changed a period to a semi-colon.

* SoF Proofread Third Draft

* Update 4t_The_Jeweler.cfg

* Update 1_A_Bargain_is_Struck.cfg

removed a comma

* Update 1_A_Bargain_is_Struck.cfg

* More prose edits (SoF)

* Update 4t_The_Jeweler.cfg

* SoF Proofread Pass edits

* Capitalize Sceptre

* S5 and S9 small dialog change

* S6 change semicolon to period

* S9 change semicolon to exclamation

(cherry picked from commit ec66a0a832)
2022-01-26 18:50:06 +11:00
Steve Cotton
f047a53f48 Add a "special notes" section to terrain help pages
The notes are automatically added based on the terrain's properties,
there isn't a way to add or remove them in WML.

Any questions about negative values for gives_healing() are issue #4232.

(cherry picked from commits 1afb7effc4
and d3e1c73ca1)
2022-01-26 01:24:55 +01:00
Steve Cotton
bd9444ef06 Editor: document the magenta D and the special terrain overlays
This adds help documentation for:
* The deprecated terrain marker
* XO and UO movement overlays
* Castle, keep and village overlays
* Fake Shroud
2022-01-25 12:30:36 +01:00
doofus-01
d194544c7e
1.16 - various small sprite updates (#6452)
* flip water serpent defense frames

* fix layering issue with lizard tail

* update sea-serpent attack icon

* NE anims for swamp lizard
2022-01-23 19:00:51 -08:00
Nils Kneuper
76578ae2f6 updated Portuguese (Brazil) translation 2022-01-22 11:38:52 +01:00
Nils Kneuper
a589d8635d updated Italian translation 2022-01-22 11:37:15 +01:00
Nils Kneuper
ceab683b67 updated British English translation 2022-01-22 11:33:51 +01:00
Pentarctagon
09131c8695
This should be optional. 2022-01-20 09:06:24 -06:00
Pentarctagon
7c6521d5a8
Shouldn't have backported this line. 2022-01-19 20:59:54 -06:00
Tahsin Jahin Khalid
cebcd653fb world conquest: fix for hp glitch when picking up items 2022-01-18 23:11:47 +06:00
doofus-01
fe1f46c320
1.16 saurian sprites cleanup (#6450)
* Fill stray transparent pixels

* Fix shadow overlay

* Add missing leg bracelets

* Correct eye colors

* Replace pure black with a lighter shade

* Unify near-black colors

* Saurian palette cleanup

Co-authored-by: MJ <michal@jadczuk.pl>
2022-01-17 19:02:42 -08:00
loonycyborg
07eff028fe
pot-update to fix es_ES translation stats 2022-01-17 23:55:03 +03:00
Steve Cotton
ec7bd83721 Fix the po stats script to recognise "es_419"
The failure mode caused it to overwrite the es_ES stats
with the es_419 ones. Skipping the CI step, as this script
is only run by the pot-update targets.

[ci_skip]
2022-01-17 21:50:23 +01:00
Wedge009
bd871f3e24 Spelling corrections
[ci skip]

(cherry picked from commit 6e6d57d365)
2022-01-17 10:16:07 +11:00
Severin Schoepke
a12fd551ec Fix typo: "with heavy loses" -> "with heavy losses"
(cherry picked from commit 1dd8c60fc8)
2022-01-17 10:06:55 +11:00
Wedge009
807f8d5188 Change log corrections.
[ci skip]
2022-01-17 10:02:47 +11:00
Descacharrado
48077331e4 Fixed the possibility of a missplaces dialogue when a bridge was broken
(cherry picked from commit 68453aa18f)
2022-01-17 09:54:13 +11:00
Descacharrado
afdd6083ce DM S14 Smooth undead appearance and add dialogue (#6429)
(cherry picked from commit 939a1b1a70)
2022-01-17 09:51:08 +11:00
Descacharrado
e537d91dd7 UtBS S08 Kromph and Dust Devil able to trigger Eloh's event (#6428)
(cherry picked from commit 3fad3f7cd9)
2022-01-17 09:47:10 +11:00
Wedge009
bccf8c49f2 Spelling correction.
[ci skip]

(cherry picked from commit 1f662a7acd)
2022-01-17 09:33:38 +11:00
Wedge009
79937a5ca4 Remove non-standard spacing and replace hyphen with em dash as per typography standards.
[ci skip]

(cherry picked from commit d1f3a195a2)
2022-01-17 09:33:11 +11:00
Wedge009
527cd415d5 Remove non-standard spacing.
[ci skip]

(cherry picked from commit b775ba81b8)
2022-01-17 09:32:24 +11:00
Wedge009
4f0795381b Remove non-standard spacing.
[ci skip]

(cherry picked from commit 5a1dbc3d34)
2022-01-17 09:31:59 +11:00
Wedge009
bae537155f Remove non-standard capitalisation.
[ci skip]

(cherry picked from commit 7a2f327a23)
2022-01-17 09:30:35 +11:00
Wedge009
58571928a2 Spelling correction.
[ci skip]

(cherry picked from commit 807e48c33f)
2022-01-17 09:30:01 +11:00
Wedge009
e75134dab6 Remove non-standard spacing.
[ci skip]

(cherry picked from commit 93ee9de570)
2022-01-17 09:29:27 +11:00
Steve Cotton
b825c3fb62 Black Nightmare: add a translation hint for this unit's name 2022-01-16 20:19:58 +01:00
Pentarctagon
46d155be92
1.16.2+dev. 2022-01-16 12:12:08 -06:00
Pentarctagon
a623cc2575
1.16.2. 2022-01-16 12:10:36 -06:00
loonycyborg
75a0648412
pot-update and regenerate doc files 2022-01-16 21:02:15 +03:00
Nils Kneuper
c8e40b2472 :x 2022-01-16 17:57:59 +01:00
Aaron Winter
ebb2fea5c9 updated German translation 2022-01-16 16:25:47 +01:00
Nils Kneuper
78b62e3c41 added Spanish (Latin American) translation 2022-01-16 12:56:45 +01:00
loonycyborg
fe21b428d9
pot-update and regenerate doc files 2022-01-16 13:36:24 +03:00
Aaron Winter
11f382ba39 updated i18n credits 2022-01-15 16:17:28 +01:00
Aaron Winter
d72a123209 updated German translation 2022-01-15 16:08:53 +01:00
Steve Cotton
eb24b7ee96 Fix a changelog typo
[ci_skip]
2022-01-15 15:49:20 +01:00
Nils Kneuper
1df5f246f7 updated Scottish Gaelic translation 2022-01-15 13:17:50 +01:00
Nils Kneuper
72870150c5 updated Japanese translation 2022-01-15 13:14:40 +01:00
Nils Kneuper
b5f25f2ccc updated Italian translation 2022-01-15 13:13:48 +01:00
Nils Kneuper
6e7d14ab16 updated Chinese (Simplified) translation 2022-01-15 13:12:40 +01:00
Nils Kneuper
f26fb8b11b updated Czech translation 2022-01-15 13:11:38 +01:00
Pentarctagon
e5e885fff1
Update the cache ID to try and get the vcpkg cache working again. 2022-01-14 10:47:54 -06:00
Pentarctagon
ca0eaf43e2
a few macOS WML unit tests will sometimes timeout so increase the limit. 2022-01-14 10:46:25 -06:00
Steve Cotton
7e63a1d06f Update changelog 2022-01-14 13:27:59 +01:00
Elvish_Hunter
5f3629f1bb Fixed some wmlscope warnings 2022-01-13 21:24:08 +01:00
Pentarctagon
1c3001e568
Check for pango and readline with cmake.
Fixes #6444
2022-01-13 13:47:27 -06:00
Steve Cotton
8351fec2ae Don't leave a hex selected when using 't' to continue a move
Fixes the minor part of issue #6292, that functionality showing the path
to a selected hex was active after continuing an interrupted move. That
feature is completely separate to the main bug of #6292, but it looks
confusingly similar in testing. The intended way to activate this feature is
via the "Select Hex" hotkey, which doesn't have any keybinding by default, so
should only be reachable by people who want the feature.

It would be good to refactor the movement handling so that it's not split
between mouse-handling and menu-handling files, but it would also need a lot of
work and would be out-of-scope for backporting to 1.16.
2022-01-13 08:34:56 +01:00
Steve Cotton
af0968d9c3 Only show planned moves to self and allies
Fixes #6292, that the planned final destination from multi-turn moves and
interrupted moves was visible to enemies. There are three side-numbers involved
in this logic, listed below; the GUI code was checking whether the move should
be visible to the player whose turn it is, rather to the viewing team.

* un->side(), the owner of the unit
* mouse_handler::side_num_, the side whose turn it is
* viewing_team(), the side of the player whose computer this wesnoth-client is
  running on, thus which side's shroud and fog should be applied.

The plans are still hidden for units belonging to local AI sides, to hide any
goto_x,goto_y settings by campaign authors. The edge case in multiplayer of
allied network AI sides isn't tested here, but I think it's a trivial matter
whether or not those plans are shown.
2022-01-13 08:34:56 +01:00
Pentarctagon
22bdbc7c88
Turns out github actions doesn't have a macOS ARM CI. 2022-01-12 11:52:34 -06:00
Pentarctagon
372bdd6e4d
Run the WML unit tests on macOS.
Not really sure why they're able to run now.
2022-01-11 16:06:46 -06:00
Tahsin Jahin Khalid
d48e94a24a World Conquest: updated changelog on bug fixes 2022-01-12 00:36:17 +06:00
Tahsin Jahin Khalid
8114898013 world conquest: replace attack icon of ice-bow to something appropriate
It was rather humorous seeing a _cold_ ranged attack having the attack icon of lightning
2022-01-12 00:31:59 +06:00
Steve Cotton
096d8aba14 Fix [store_unit]'s stored coordinates for recalls
Units on the recall list might have x,y coordinates that are on the map, which
therefore need to be replaced with "recall,recall" within [store_unit]. The
existing code created a temporary variable, changed the coordinates, and then
returned the unchanged original instead of the temporary.

Add a new test that `[put_to_recall_list]` followed by `[modify_unit]`
doesn't move the unit back to the map.
2022-01-11 15:23:46 +01:00
Tahsin Jahin Khalid
165f2cfb40 World Conquest: Fix for Winged Scepter bug
The Winged Scepter item will now grant flight movement and defences as stated in the description (and not just movement as it did before).
2022-01-11 19:33:15 +06:00
Elvish_Hunter
fdfce55d1a wmllint: fixed a typo in a terrain code 2022-01-11 14:24:54 +01:00
Elvish_Hunter
77e4a793ae Fixed a gui.get_user_choice() call in the test scenario 2022-01-10 21:35:13 +01:00
Elvish_Hunter
b643d25406 Fixed broken gui.get_user_choice() 2022-01-10 21:32:37 +01:00
Elvish_Hunter
6115e141c0 wmllint: fixed Ggf -> Gg^Emf and Qv -> Mv terrain conversions 2022-01-10 21:05:35 +01:00
Descacharrado
8bf732ea9c UtBS S04 - enhance goblin leader trigger "how can he move that fast?" (#6427)
* enhance fast moving trigger

(cherry picked from commit 48c7ba7c28)
2022-01-10 17:17:21 +11:00
Tahsin Jahin Khalid
836ac46978 world conquest: typo fixes in file comments 2022-01-08 23:49:42 +06:00
Nils Kneuper
20989f87cf updated Chinese (Simplified) translation 2022-01-08 12:12:35 +01:00
Nils Kneuper
758be2c83d updated Turkish translation 2022-01-08 12:10:51 +01:00
Nils Kneuper
c1b2069cf9 updated Portuguese (Brazil) translation 2022-01-08 12:09:55 +01:00
Nils Kneuper
2211243289 updated Italian translation 2022-01-08 12:08:56 +01:00
Nils Kneuper
63ea31adcc updated British English translation 2022-01-08 12:07:43 +01:00
Elvish_Hunter
d867c81809 Ran wmlindent 2022-01-07 13:15:10 +01:00
Elvish_Hunter
16c3070c3c Silence a few wmlscope warnings 2022-01-07 10:56:08 +01:00
Elvish_Hunter
84acdf0615 Removed two no longer useful wmlscope directives 2022-01-07 10:52:47 +01:00
Aaron Winter
64f63946c5 updated German translation 2022-01-05 08:09:50 +01:00
Pentarctagon
68ed937329
Don't check controller type when it's not present. 2022-01-03 16:19:17 -06:00
loonycyborg
929e7d0eb2
pot-update and regenerate doc files 2022-01-02 21:10:27 +03:00
Pentarctagon
a4e8ac339e Only try to activate required addons after loading all addons present.
The current issue is that, when loading a replay that requires addons from the main menu, it's checking for which addons can be enabled with game_classification.active_addons(...) before it reloads the cache to contain addons (such as eras) that are behind the #ifdef MULTIPLAYER define. It is of course impossible to find addon content before it has been loaded, which results in things like OOS errors due to unknown unit types.

Fixes #6283
2022-01-01 13:31:10 -06:00
Descacharrado
05b70ae0b8 Added attack icon to the nightblade's kick 2022-01-01 19:39:39 +01:00
newfrenchy83
0728ae834e fix weapon abilities showed in void attack in attack dialog window
if by example, formation affect a dark Adept, and he is defender, then formation name appear in defender attack.(if name and description of formation in chance_to_hit abilities)
2021-12-31 13:04:58 +01:00
Evan Miller
299550113a
Support macOS 10.8-10.11 SDKs
Adapted from https://github.com/macports/macports-ports/pull/13437
2021-12-29 15:37:50 -06:00
Pentarctagon
23cb582d5c
Remove unneeded cmake file. 2021-12-28 14:59:49 -06:00
mattsc
9f11701944 Wolves multipack MAI: prevent potential for infinite loop
The MAI was set up to be blacklisted if no attacks were found, but that did not always work. In addition, removing attacks from the wolves also means that no other CA can use them for other attacks instead.
2021-12-28 18:24:50 +01:00
Steve Cotton
48024c5caa NR S05a_01 Spelling correction for "our retreat is cut off"
(cherry picked from commit deb55fd1e9)
2021-12-28 09:51:44 +01:00
Elvish_Hunter
8c22a8e6e1 Changelog entry 2021-12-27 22:47:08 +01:00
Elvish_Hunter
fffa8a62d2 wmllint: added support for unit levels and types in recruitment pattern checks 2021-12-27 22:44:51 +01:00
Steve Cotton
167e7874d5 Improve comments for translators around VNGETTEXT
I tried to use the Wiki docs, and found the Wiki docs were outdated compared to
our codebase, which prompted this code review.

(cherry picked from commit 59df683484)
2021-12-27 13:49:09 +01:00
Elvish_Hunter
b574f76f3d Removed a superfluous backtick from the changelog 2021-12-26 22:51:06 +01:00
Elvish_Hunter
948afc6a97 Added --version flag to wmllint, wmlscope and wmlindent
Also made GUI.pyw report the version in the about dialog. Fixes #6346
2021-12-26 22:46:37 +01:00
Martin Hrubý (hrubymar10)
84792b4195
Update Xcode project 2021-12-25 20:16:10 +01:00
Steve Cotton
9981f5a2dc Replace a hardcoded string with font::unicode_bullet
This is just clean-up to match the preferred coding style.
2021-12-22 22:11:11 +01:00
Pentarctagon
cd435f23ad
Add SSL debug logging to wesnothd_connection as well. 2021-12-22 13:54:00 -06:00
Pentarctagon
53168a5b90
Add debug logging of SSL certs to addon manager. 2021-12-22 13:53:48 -06:00
loonycyborg
d228f6ac29
servers: set CLOEXEC on sockets we accept 2021-12-22 20:22:55 +03:00
loonycyborg
9eee6058a7
Revert "wesnothd: enable keepalive on socket before accept rather than after"
This reverts commit 1a95b20611.
2021-12-22 20:22:41 +03:00
loonycyborg
03679821b4
servers: convert the rest of throw statements for server_shutdown 2021-12-22 14:44:20 +03:00
loonycyborg
13643e30d2
servers: use BOOST_THROW_EXCEPTION macro to ensure that exception cloning is available 2021-12-22 14:04:34 +03:00
loonycyborg
e70a3bd2e0
wesnothd: enable keepalive on socket before accept rather than after 2021-12-20 11:31:38 +03:00
Pentarctagon
2e6b69c8e3
SDL2 version check. 2021-12-19 21:04:59 -06:00
Pentarctagon
d4b9104abe
Update INSTALL.md. 2021-12-19 21:04:58 -06:00
Pentarctagon
029606b722
Alternate way to find SDL2. 2021-12-19 21:04:58 -06:00
Pentarctagon
7e25d47d53
Remove a couple no longer needed cmake files. 2021-12-19 20:55:17 -06:00
Pentarctagon
57a39ec4ea
Changelog update. 2021-12-19 17:54:12 -06:00
Pentarctagon
290e821402
Get the scenario_id from the addon content list sent by the server if it's not otherwise available.
Fixes #6285
2021-12-19 17:51:12 -06:00
Nils Kneuper
3cce6719e2 updated Czech translation 2021-12-13 12:32:52 +01:00
doofus-01
d5b5cf1cba
1.16 - some terrain graphics fixes (#6382)
* make X*^Efs sconce overlay rules symmetric

* different sconces for Xu-style walls (Xo-style was existing type) - minor, graphics only change
2021-12-12 12:08:31 -08:00
doofus-01
68aa08ad21
1.16 - some attack icon work (#6339)
* feet

* different icons for ranged and melee mug globs

* spiked mace icon and alternate

* empty border for easier IPF-constructed images

* some spear icon alternates

* shadow claws icon added and wired into the mainline ghost shadow branch

* trident icon alternates for Triton

* icemonax tail attack icon
2021-12-11 04:13:35 -08:00
Nils Kneuper
ec3c9e3f30 updated British English translation 2021-12-11 11:40:40 +01:00
Nils Kneuper
e9aa965ec6 updated Portuguese (Brazil) translation 2021-12-11 11:39:26 +01:00
Steve Cotton
c1499e06b5 Print which campaign is causing the extra_defines warning
Whether or not it's the campaign being played, this warning
gets printed if any add-on has a [campaign]extra_defines=
attribute with one of the deprecated strings (a hardcoded
list about 20 lines above the line that's changed here).
2021-12-10 22:51:38 +01:00
newfrenchy83
c61a65efed
fix 'add' and 'sub' not added in leadership shema validation(1.16) (#6325)
Fix 'add', 'sub', 'multiply' and 'divide' not added in leadership schema validation(1.16)

* also add 'multiply' and 'divide'

This is equivalent to cherry-picking these five commits, which I intended to squash-and-merge
instead of rebase-and-merge when merging that PR to master:
* 3e70b335da
* 0813c60142
* 17e0c244ab
* 0deb6dcce2
* a202146b89
2021-12-09 18:16:19 +01:00
Steve Cotton
fa0c0c2554 Remove the nonfunctional "title screen tutorial" hotkey and binding
The code that it used to trigger was removed in
f86168ab26.

(cherry picked from commits 46fbe51a6f
and afd9bd1688)
2021-12-09 13:50:26 +01:00
Descacharrado
513e8dba2b UtBS S06b Look at the blown charges and make sure no units get stuck (#6369)
* Look at the blown charges and make sure no units get stuck

(cherry picked from commit d4158a5869)
2021-12-09 09:59:03 +11:00
Descacharrado
d0fac1841d UtBS S06b Fixed weird scout AI behaviour (#6368)
* Fixed weird ai behaviour

(cherry picked from commit 74fa3d6127)
2021-12-09 09:59:03 +11:00
Steve Cotton
1b543d8ed1 Update changelog (including other people's changes) 2021-12-08 12:14:40 +01:00
Wedge009
0f2bcf594d Update change log.
[ci skip]
2021-12-08 15:13:54 +11:00
Wedge009
bf4928c807 UtBS S9: Turn rebels into loyal units (#6371)
* Turn rebels into loyal units instead of just having zero upkeep costs for the scenario.

Resolves #6365.

(cherry picked from commit deee08fd5a)
2021-12-08 15:13:28 +11:00
newfrenchy83
3bb7438afc
fix advancement for Darken Volk (#6358)
* fix advancement for Darken Volk

* moe modify_unit_type in [campaign]

* revert eb6eb7d962
2021-12-08 15:02:22 +11:00
Descacharrado
c76c605574
Update 1.16 Changelog with my backported PRs (#6366) 2021-12-07 11:21:55 -06:00
Wedge009
ed06a79b1d Update change log.
[ci skip]
2021-12-07 23:51:37 +11:00
Wedge009
423da97087 UtBS S9: Avoid 'punishing' the player for saving the rebels (#6362)
* Avoid 'punishing' the player for avoiding bloodshed by giving rebels zero upkeep costs for the scenario upon reuniting with Kaleh's side.

Resolves #6229.

Co-authored-by: Descacharrado <Luis_koopa@hotmail.com>
(cherry picked from commit 594f0cd293)
2021-12-07 23:00:23 +11:00
Wedge009
6739f1b39c Avoid counting encounters with 'Cloaked Figure'.
Resolves #6355.

The 'Cloaked Figure' that hounds Kaleh and friends can be encountered up to three times:
* S4 - guaranteed as his appearance is triggered by Kaleh entering the cave which is a scenario requirement.
* S5 - appearance is at a random turn during the battle between the dwarves and the trolls.
* S8 - final appearance is triggered when moving through the narrow passage.

It is possible to miss the encounter in S5 due to the randomised turn mechanic. Thus, it can be confusing when Kaleh says 'third time'.
This is just a quick work-around - another option may be to make the appearance in S5 more deterministic.

[ci skip]

(cherry picked from commit ada454b20a)
2021-12-07 23:00:23 +11:00
Pentarctagon
f6beed7bd6
Add a specific prompt for a moderator joining a password protected game. 2021-12-05 23:31:43 -06:00
Wedge009
fc8aae50f6 Ensure humans are removed from display during their 'die' event.
(cherry picked from commit 378301722b)
2021-12-06 13:01:55 +11:00
Descacharrado
165f33d48a UtBS S02 Added a ring icon for the immune unit (#6344)
* Added a ring icon for the immune unit

(cherry picked from commit 472e756599)
2021-12-06 13:01:55 +11:00
Descacharrado
18b00b6496 TRoW S19: Don't let units spawn on chasm 2021-12-05 17:49:30 -05:00
Pentarctagon
9decea7e4f
Prompt moderators to observe game with observers disabled.
Fixes #4101
2021-12-05 16:09:55 -06:00
nemaara
7b6459d735 DiD S3: fix whitespace 2021-12-04 19:15:42 -05:00
Descacharrado
e8c0a78b04 Eastern Invasion and Liberty Bone Knight attack image (#6297)
* Added attack images for the Bone Knight's trample and Nightblade's kick

(cherry picked from commit e81cef3a08)
2021-12-05 09:37:41 +11:00
nemaara
b14e097995 TSG: revise storytext (fix #6132) 2021-12-04 15:08:37 -05:00
nemaara
ba2051fd3c DiD S3: add some more flavor text 2021-12-04 15:05:58 -05:00
nemaara
eb6eb7d962 DiD: don't remove loyal trait from Darken Volk (fix #6351) 2021-12-04 14:43:56 -05:00
Descacharrado
88e3bfd142 UtBS Hide Dark Assassin's race until uncloacked (#6302) 2021-12-04 14:36:19 -05:00
Descacharrado
bf5f560770 UtBS S06b: Improve Grog spawn 2021-12-04 14:33:13 -05:00
Nils Kneuper
2a1f220113 updated Portuguese (Brazil) translation 2021-12-04 12:19:19 +01:00
Wedge009
8fc0350df0 Change capitalisation and update po hint as per post-merge discussion from #6198.
Committed on behalf of @Descacharrado.

[ci skip]

(cherry picked from commit a4c4ad1268)
2021-12-04 08:48:14 +11:00
newfrenchy83
91239039da remove 'formation' name of attack prediction windows
Like description of Utbs formation abilities is opposite of what suggest name in attack prediction windows, it best to remove that.
2021-12-03 09:16:13 -06:00
Elvish_Hunter
35676b08b1 wmllint: automatically remove {MAGENTA_IS_THE_TEAM_COLOR} 2021-12-03 11:51:27 +01:00
Descacharrado
4bf0476b95 Changed and documented the change of XP bar color to blue
(cherry picked from commit ca6cafb88f)
2021-12-03 20:08:04 +11:00
Wedge009
faf7db6036 Maintain consistency with existing backwards-compatibility for race=elf.
Also, CHECK_EXPLORER macro is redundant with race restriction in [filter].

(cherry picked from commit fcc64cef59)
2021-12-03 20:08:03 +11:00
Wedge009
fee8e853bb Restrict who remarks about the dark underground tunnels.
* Enforce Quenoth race to exclude Elyssa - it sounds strange for her to complain about the dark tunnels and then boast about her fireballs.
* Exclude Kaleh otherwise he can complain about the darkness and then tell himself 'we have no choice'.

Potentially could exclude Zhul as well, but it sounds fine if she complains about the darkness and then reminds Kaleh about the elves' disadvantage.

(cherry picked from commit a2a13c547e)
2021-12-03 20:08:03 +11:00
Steve Cotton
2adcb92fab wmlxgettext: sort-by-filename before processing files
Add a sort inside wmlxgettext so that the order of filenames on the command
line doesn't affect the output. The sort is run unconditionally, because I
don't see a usecase for not enabling it. For consistency with xgettext and
msgcat, if there was an option to enable it then it would be called
`--sort-by-file`.

The aim of this change is to reduce the number of changes in .po files caused
by a pot-update. When multiple comments refer to the same translatable string,
separate runs of pot-update could generate them in a random order. If I've
understood the root cause correctly, wmlxgettext itself was deterministic, but
the order of the files on wmlxgettext's command line was not deterministic.

For testing, I tried reversing the sort order; the resulting reordering hit
lines that commonly swap order during pot-updates.

This affects the ordering of the lines beginning `#.` that are generated from
`#po:` comments and also those auto-generated from `[message]speaker=`, etc.

(cherry picked from commit 3761faf925)
2021-12-02 09:55:35 +01:00
Descacharrado
e08b1e7f52 UtBS S02 Ogre now dissappears before Nym starts moving or talking (#6343)
* Ogre now dissappears before Nym starts moving/talks

* Changed the adjacency filter to fit the changes to the event

* Updated comment with a proper explanation of what occurs

(cherry picked from commit d9ea4105a6)
2021-12-02 19:44:14 +11:00
Wedge009
055097f202 Minor correction.
[ci skip]

(cherry picked from commit 4248738a38)
2021-12-01 11:35:02 +11:00
Tahsin Jahin Khalid
c826233343 Fixed an extra whitespace in the Horse unit race description
(cherry picked from commit 01fa0c1e7c)
2021-12-01 11:35:02 +11:00
Wedge009
2201c5aeea Phrasing.
[ci skip]

(cherry picked from commit a5f7d969aa)
2021-11-30 17:37:09 +11:00
Wedge009
3627082abb Minor correction.
The statue Ras-Tabahn refers to is on the 'left' (west) from the player's perspective. However, the party is heading south, and still facing south, when this line is spoken.
Thus, the line really should say to 'our right'. Additionally, there is an animation of the statue being broken straight afterwards so it should be pretty unambiguous as to what is being referred to.

[ci skip]

(cherry picked from commit f2203a48da)
2021-11-30 08:55:28 +11:00
Pentarctagon
2c45eb4e03
Can't checkout a commit with depth=1 2021-11-28 01:29:18 -06:00
Wedge009
9c4adddcb7 Ardonna should only call her own bats 'my pet'.
It's possible, however unlikely, for none of Ardonna's bats to have died before killing the hostile bats in 'Following the Shadow'.
In such a case, when the 'You can now raise bat corpses!' event triggers, Ardonna will still refer to the enemy bat as her 'pet' so add this condition to avoid it.

(cherry picked from commit aa6b45ee9f)
2021-11-27 12:40:21 +11:00
Wedge009
3334230d89 Capitalise 'Sceptre of Fire'.
[ci skip]

(cherry picked from commit c1bca269cb)
2021-11-24 13:54:17 +11:00
Steve Cotton
0d4854d5ff ui: Fix 800x600 theme's sidebar tooltips
Two changes in the theme config for 1024x600, which is inherited by the config
for 800x600. Both are the same line but otherwise only loosely related to each
other; together these fix issue #6264, which was that trigger areas for some
tooltips overlapped.

Reduce the width for the unit's name, thus giving the side-flag and side-number
(which get the remaining horizontal space) enough space to display themselves.
128 pixels wide is the same as the name gets in larger themes, even though
those larger themes use larger font sizes. This means that the side number
doesn't get ellipsed, at least for games with up to 9 sides, with the
side-effect that the tooltip can be displayed when hovering over the flag.

Move the name, and thus the flag and side-number down by 1 pixel, so that they
don't overlap with the tooltip trigger areas for movement points and terrain
defense. The name's location is based on the placement of `unit-box-botleft`;
the theme for larger screen-sizes similarly adds 5 pixels of padding because
the `unit-box` is only 72x72 for the image, and the text areas for movement
points and defense go lower than that.
2021-11-23 22:39:30 +01:00
Wedge009
80b3ea48a1 Capitalise references to the Academy of Magic on Isle of Alduin, for consistency.
Resolves #6310.

[ci skip]

(cherry picked from commit 10e99924b5)
2021-11-23 14:09:59 +11:00
Wedge009
b1d12cbb5d Avoid unnecessary wording.
[ci skip]

(cherry picked from commit dcb127ffee)
2021-11-23 13:10:02 +11:00
Wedge009
9d19a104c5 Correct scenario count for SoF.
Looks like scenario '2p5' introduced in #4609 wasn't included in the scenario count.

[ci skip]

(cherry picked from commit 5cda4f8089)
2021-11-22 19:36:21 +11:00
fujimo-t
decc964402 Replace std::regex by boost to temporary workaround for Mingw-w64's bug
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98723

(cherry picked from commit 6b52e1f76a)
2021-11-22 09:26:31 +11:00
Wedge009
a6b9e88eb0 Restore word mistakenly removed in 19a42e3ead.
[ci skip]

(cherry picked from commit 3922d04b44)
2021-11-21 22:08:55 +11:00
Nils Kneuper
9408d8355a updated British English translation 2021-11-20 09:57:52 +01:00
Aaron Winter
cc74772e26 updated German translation 2021-11-20 08:58:20 +01:00
Aaron Winter
32b003c71c Revert "updated German translation"
This reverts commit 24bdaf710b.
2021-11-20 08:53:05 +01:00
Aaron Winter
24bdaf710b updated German translation 2021-11-20 08:38:17 +01:00
Steve Cotton
d887a48551 UtBS: Use a lower-case letter for "taurochs"
It's the name of a species, so lower-casing it is consistent with #6067.

(cherry picked from commit c449232730)
2021-11-20 08:08:29 +01:00
Pentarctagon
1b0d245baf
Cleanup some names. 2021-11-18 17:18:52 -06:00
Pentarctagon
0a119b00eb
Attempt to trim down the CI after getting caught in github's automated platform abuse tool.
Removed:
* Two linux jobs - now only two combinations of the gcc/clang + scons/cmake matrix are run.
* Two macOS jobs - the Release configuration is now only run on ARM, and the Debug configuration is only run on Intel.

Also pinned vcpkg to a particular commit so it doesn't ignore the cache when new versions of dependencies come out. This does mean though that when dependencies or dependency versions change that the vcpkg commit and the cache ID will need to be manually updated. And while it's *probably* safe to have stable and master share the same vcpkg cache, this may become problematic if their dependencies and/or versions become incompatible.
2021-11-18 17:14:09 -06:00
Pentarctagon
bfe9c3d937
Fixup manpage. 2021-11-18 12:59:01 -06:00
Pentarctagon
0946c6b4ca
Upload artifacts that could be used for releases.
Also don't upload things anymore that aren't being used.
2021-11-18 12:58:01 -06:00
Pentarctagon
ebac7ccddc
Add --simple-version command line option.
This option automaticaly implies --nobanner as well as displays nothing else but the version.
2021-11-18 12:33:22 -06:00
max-torch
ff3ae6f685 Define KeyboardInterrupt Exception Handler in wmlxgettext
Note: The signal class object was used to avoid wrapping the entire main routine in a try...except clause.
2021-11-17 23:11:41 +01:00
max-torch
a279fae285 Edit wmlscope KeyboardInterrupt Displayed Message 2021-11-17 23:11:28 +01:00
max-torch
8f649293de Edit wmllint KeyboardInterrupt Displayed Message 2021-11-17 23:11:17 +01:00
max-torch
26636bfdc8 Define KeyboardInterrupt Exception Handler in wmlindent
Note: The signal class object was used to avoid wrapping the entire main routine in a try...except clause.
2021-11-17 23:11:00 +01:00
Wedge009
6ad2bfbed9 Refactor the boarding events for TRoW S8 Clearwater Port.
Resolves #6298.

(cherry picked from commit 76fda0bf3d)
2021-11-17 22:55:28 +11:00
Descacharrado
c1531a66a4 HttT S05b - Added cracked temples (#6279)
* Added cracked temples to core and to S05b in HttT

* Compressed png files

(cherry picked from commit 49e43694f4)
2021-11-17 22:55:28 +11:00
Pentarctagon
55c3a7b465
Fix whitespace. 2021-11-16 15:21:20 -06:00
Pentarctagon
430ea23620
Changelog update. 2021-11-15 11:50:42 -06:00
Pentarctagon
07f75ea500
Check whether to display lobby joins in the game creation screen.
Fixes #6234
2021-11-15 11:48:41 -06:00
V N
e74ceb4432
Update changelog 2021-11-13 18:54:50 +01:00
V N
d30ca01656
Fix multi-account password saving
Fixes GH-6288, and hopefully makes the code
more readable / easier to understand.
2021-11-13 18:15:16 +01:00
Nils Kneuper
1e844357c1 updated Czech translation 2021-11-13 10:12:51 +01:00
Nils Kneuper
76947efe5e updated Portuguese (Brazil) translation 2021-11-13 10:11:40 +01:00
Nils Kneuper
c6c46a0843 updated Japanese translation 2021-11-13 10:10:36 +01:00
Pentarctagon
bc31063963
Adds some additional text regarding wesnothd's [redirect] and mysql support.
Fixes #1210
2021-11-10 10:37:06 -06:00
Pentarctagon
ab3d4920f4
Add help information for the :benchmark command. 2021-11-10 10:36:55 -06:00
Pentarctagon
fa7deb0f66
Typo fix. 2021-11-10 10:36:42 -06:00
Pentarctagon
b08be54e65
Check for potential duplicates before inserting. 2021-11-10 10:35:51 -06:00
kabachuha
565ba530df HttT: add gendered variants to item pickup prompts
Should help to address the issue with gendered verb forms or noun cases in some languages as described in #4436 . This reuses the same preexisting mechanism as in the latter part of httt_utils.cfg.

Backport of 536d6a226c
2021-11-10 12:49:03 +03:00
kabachuha
2ee66b1b18 Fixed boars' attack descriptions being started with capital letters
Attack descriptions start with a lowercase letter in mainline Wesnoth.

Backport of c0981406d8
2021-11-10 12:42:12 +03:00
kabachuha
33344f75eb Removed WC2-specific feedback link
It doesn't need a special feedback link anymore as it's now a part of mainline Wesnoth.

Backport of 3de79c15fb
2021-11-10 12:39:50 +03:00
kabachuha
f99f5faf8d Paraphrased allied orbs description to remove outdated color reference
backport of d445cb36dc
2021-11-10 12:37:29 +03:00
Steve Cotton
335e945d17 SotA S02: Add l10n hints about temple label and bats
The lines about bats were converted to typographic quotes in 3fcba6aa,
which has already been cherry-picked to 1.16 as 8fcd08fc.

(cherry picked from commit d1bd5991cf
and with the fixup from 77cb1de312)
2021-11-10 08:21:29 +01:00
Steve Cotton
2291014cc4 UtBS: Remove leading whitespace from Ethereal Shadow's special note
The Ethereal Nightgaunt's equivalent note was already fixed in
f94d0bb80a.

(cherry picked from commit f8a41624e3)
2021-11-10 08:15:58 +01:00
Steve Cotton
a449af1ca4 TRoW S04a: Typographic style is not to have a hyphen in "un-life"
For consistency, there should also be no hyphen in "un-death".
The style was decided in PR #5525.

(cherry picked from commit a0ae4a7342)
2021-11-10 08:15:58 +01:00
Steve Cotton
6e4091eedf Remove a leading space from the Silver Mage's [special_note]
The strings in special-notes.cfg don't have a leading space,
and this one causes a warning in poedit.

(cherry picked from commit 18a234594a)
2021-11-10 08:15:57 +01:00
Descacharrado
9ada328249 UtBS S06b Fix Dwarf Sergeant confusing a dust devil or human for a troll (#6198)
* Fix Dwarf Sergeant confusing a dust devil or human for a troll #6196

(cherry picked from commit 3b951350c8)
2021-11-10 14:17:37 +11:00
Alexander Lacson
64c475f830 SoF Add Rune Chest Objective Notes (#6208)
(cherry picked from commit 732559e8fa)
2021-11-10 13:48:10 +11:00
Alexander Lacson
ea654d1de5 Add Objective Note for Thursagan's Rune Mechanic (#6207)
(cherry picked from commit b99b089e90)
2021-11-10 13:48:00 +11:00
Descacharrado
af068aa6f6 UtBS S06b: hermit enhancement and tentacle fix. (#6200)
(cherry picked from commit 4abe584a06)
2021-11-10 13:47:48 +11:00
Descacharrado
df893a25b4 TRoW S19: Automatically collect chest at the end of the scenario (#6192)
(cherry picked from commit 1b905240af)
2021-11-10 13:47:38 +11:00
Alexander Lacson
58472b048d SoF S4: Make mining gold and coal clearer (#6182)
(cherry picked from commit 3a312f3703)
2021-11-10 13:47:21 +11:00
Alexander Lacson
d5d518665b Tutorial: Suggested Proofread Edits (#6179)
(cherry picked from commit 8ca8bc08b1)
2021-11-10 13:45:57 +11:00
Alexander Lacson
36749ca6fa DM: Proofread Pass (#6178)
(cherry picked from commit b5bda6ca99)
2021-11-10 13:45:24 +11:00
Alexander Lacson
0277d7bd7b SotA clarifications and prose edits. (#6168)
* SotA S6 Provide better tomato surprise hint. (fix #6120)

* SotA S2 Add objective note about guardhouse. (fix #6121)

* SotA S4 Add objective note. (fix #6123)

(cherry picked from commit 750d5457e0)
2021-11-10 13:44:31 +11:00
Alexander Lacson
f9a959481c Improve help entry of "Mountains" terrain. Resolves #5906 (#6163)
Improve help entry of "Mountains" terrain. (fix #5906)

(cherry picked from commit 8a98519f9d)
2021-11-10 13:44:31 +11:00
Alexander Lacson
ed4f6dea78 Reference SotA in SoF, closes #6151 (#6152)
SoF: Add a reference to SotA North Knalga in Sceptre of Fire. (fix #6151)
(cherry picked from commit e49b5c7b0e)
2021-11-10 13:43:03 +11:00
max-torch
f1302144cd Update 21_The_Plan.cfg
Restoring to original without comma. To satisfy requested change in pull request.

(cherry picked from commit e24f1beaaa)
2021-11-10 13:39:41 +11:00
max-torch
3784b83c76 TRoW Proofread Pass Third Draft
In response to concerns in #6143.

(cherry picked from commit 1ee5b511a1)
2021-11-10 13:39:41 +11:00
max-torch
a2449b833a TroW Proofread Pass Second Draft
Second Draft of ef932b939f.

(cherry picked from commit a4cd9d4aa7)
2021-11-10 13:39:40 +11:00
max-torch
36807dd6d6 TRoW Proofread Pass
For the campaign The Rise of Wesnoth. For Approval. Minor edits and proofreads. `wmlxgettext` was used so as to ensure all text was reviewed.

(cherry picked from commit ef932b939f)
2021-11-10 13:39:40 +11:00
Alexander Lacson
b0988d3c8b Dead Water Proofread Pass (#6139)
DW: proofread text
(cherry picked from commit c3a852cef8)
2021-11-10 13:38:37 +11:00
Alexander Lacson
6c48867062 Sota proofread (#6136)
Only proofreading. No major edits to tone, meaning or dialog. The `wmlxgettext` module was used so that no text would be overlooked.

(cherry picked from commit dd3baa4881)
2021-11-10 13:37:41 +11:00
Discontinuum
5525c39477 Simplify the description of leadership (#6117)
(cherry picked from commit 36a610603e)
2021-11-10 13:32:05 +11:00
Descacharrado
0cb5c5bf45 DM S07 Fix for player having to pass turn in order to meet alternative win condition (#6189)
Closes #6173

(cherry picked from commit a351c78579)
2021-11-10 12:52:25 +11:00
Steve Cotton
da9065aac7 Re-apply reverted MP string changes from b765c0be66
This reverts 2cfa7d4dd5,
the "Revert "Revert "Revert this for 1.16.1""" commit.
2021-11-10 02:42:58 +01:00
Iris Morelle
c1ab38403f
Update changelog 2021-11-09 22:30:42 -03:00
Iris Morelle
bab195f14b
Update utils::format_timespan() documentation and tests
CC #6036
2021-11-09 22:19:07 -03:00
Iris Morelle
c159cf9131
Add a detailed parameter to utils::format_timespan()
This allows switching between producing full detailed output like "2
days, 3 months, 1 seconds", and only mentioning the largest time unit,
e.g. "2 days". The default is false.

CC #6036
2021-11-09 22:19:07 -03:00
Iris Morelle
4df1365ffa
Make utils::format_timespan() use gettext plurals
This uses N_n() in combination with VNGETTEXT() to get the plural forms
written to po files by xgettext.

NOTE: This is NOT a string-freeze-compliant change. Changing the strings
from being standalone to being part of a plural form set causes them to
be automatically fuzzied by the pot-update target. Merging this in 1.16
will have to wait until after 1.16.0 is released.

CC #6036
2021-11-09 22:19:07 -03:00
Iris Morelle
190b3cce08
i18n: Add N_n() no-op macro to allow xgettext to extract plural forms
This is intended to allow xgettext to extract plural forms from the code
without actually altering the input. Basically, this is to _n() as N_()
is to _(), and doesn't actually call any gettext functions.
2021-11-09 22:19:06 -03:00
Wedge009
0e37282fdb Minor correction.
Was written 13 years ago. While 'the many' could be acceptable as well, there is no precedent for its use elsewhere in this dialogue. Plus the prior sentence just says 'some'.

[ci skip]

(cherry picked from commit 3ff8afa160)
2021-11-10 12:08:27 +11:00
Wedge009
d6737070e1 Minor correction.
[ci skip]

(cherry picked from commit 96756a7583)
2021-11-10 12:07:39 +11:00
Wedge009
010034e05a TSG Epilogue: wording revision (fix #6169)
[ci skip]

(cherry picked from commit 0d78c64c91)
2021-11-10 12:06:31 +11:00
Wedge009
76d335c773 Add label to mark Alanin's goal. Resolves #6159.
[ci skip]

(cherry picked from commit 8436700b36)
2021-11-10 12:04:44 +11:00
Wedge009
80a790e1ca Accommodate variable $ally_name and translations. Resolves #6155.
[ci skip]

(cherry picked from commit 60a451932b)
2021-11-10 12:04:22 +11:00
Wedge009
d842a10730 Correct 13-year-old variable error...
Previously the invalid variable would just be rendered blank, leaving the remaining text as 'which way should we go?' which is still sensible albeit with a lack of starting capital letter.

[ci skip]

(cherry picked from commit dac45d3eb5)
2021-11-10 12:04:21 +11:00
Wedge009
9114f9bf5d Clarify objectives (resolves #5608)
According to the bonus objective as it stands, it should be possible to end the scenario early by simply destroying the 'generator' stones even if leaving a few skeletons around.
However, the way victory condition is established simply by counting the number of enemy units at the start of a turn - if there are no units left, then the stones are assumed to be destroyed. (No generator stones active -> no enemy units)
As a work-around, simply update the objectives to make it clear that all enemies need to be eliminated for victory to be achieved.
2021-11-10 12:03:06 +11:00
Wedge009
99c3d2c7b5 Correct punctuation.
[ci skip]

(cherry picked from commit da3eac4ecb)
2021-11-10 11:59:01 +11:00
Wedge009
8d3d4b2c71 Avoid use of 'cool' and 'guys' (closes #6107) (#6108)
Avoid use of 'cool' and 'guys' (closes #6107)

Have left 'guys' in Camerin's lines as it's justifiable in his informal crazy talk - Northern Rebirth is supposed to be rather informal in parts and light-hearted in tone.

[ci skip]

(cherry picked from commit 1b48ace4f3)
2021-11-10 11:59:01 +11:00
Wedge009
f1f00e0f5c Correct inconsistency in Ring description (resolves #6043)
Otherwise contradicts desert mechanic explanation: '...at the *beginning* of each your turns, every unit... will suffer from thirst...'

(cherry picked from commit b5fa99c5a3)
2021-11-10 11:59:00 +11:00
Wedge009
06fc639b74 LoW S4: Avoid use of 'men' with respect to female elves (resolves #4880)
See issue #4880 for discussion.

(cherry picked from commit 2a1a53f211)
2021-11-10 11:59:00 +11:00
Wedge009
8a2d08589c Revise capitalisation (#6067)
* Revise capitalisation as per https://wiki.wesnoth.org/ProseStyle

Capitalisation of race names was inconsistent in parts, even within the same scenario in some cases.
As per https://wiki.wesnoth.org/ProseStyle, race names are generally lower-case unless part of unit or place names, or a specific group (such as 'Quenoth Elves'):
* Elf/Elves/Elvish/Elven
* Drakes
* Dwarf/Dwarves/Dwarvish/Dwarven
* Goblins
* Gryphons
* Humans
* Mer/Merfolk
* Nagas
* Ogres
* Orcs
* Saurians
* Trolls
* Woses

I substitute 'human' for 'men' on occasion, not for PC-ness, but to make it clear it's a reference to the race, not males (non-humans sometimes say 'men' when speaking to fellow male soldiers, for example).

Capitalisation of titles is a little less straightforward. Clearly cases such as King Haldric, Queen Asheviere, Prince of Wesnoth, Great Chief, etc, are capitalised.
However, use of a title alone can be valid with or without capital, eg 'the king/King'. I try to be consistent and consider the context:
* Title is used in place of the name, eg compare 'by the King's order' with 'by Garard's order'
* Would the speaker show respect to the person concerned as their leader, or a foreign dignitary? Contrast, 'Asheviere, that vile queen'.
* Compare 'my king' with 'my father' (latter is not usually capitalised in everyday English)
* Occasionally, when the speaker may not otherwise know a character's name or the correct protocol to address, may say something like 'Sir Elf'.

I apologise if I run counter to previous revisions - removal of 'princess' as a direct address in Northern Rebirth, for example, also dealt with the capitalisation issue, if I recall correctly.

Miscellaneous changes:
* Magi, as plural of mage, is not usually capitalised.
* Council may be capitalised when referring to a specific instance, such as the Elvish High Council in the Ka'lian, but not in instances such as 'making council'.

The review focused solely on campaign prose - there may be cases in other data files where capitalisation needs revising too.

* Capitalise proper noun use of 'kingdom'.

Just as England may be referred to as such on its own, it was also known as the Kingdom of England.
In the same way, Wesnoth is usually referred to simply as Wesnoth, but it would be formally called the Kingdom of Wesnoth.

* Capitalise 'majesty' when used as an address.

For consistency with existing instances of 'Your Majesty'.

* Capitalise 'Land of the Dead'.

While we might not normally refer to such as a place as a proper noun, Delfador's Memoirs seems to establish this as a specific location in Wesnoth lore.
For consistency, also capitalise a few references to this place in Northern Rebirth and Son of the Black-Eye.

(Granted, this does make Iliah-Malal's line in DM S18 seem a bit awkward, contrasting with 'land of the living', but the precedent has been set throughout the rest of the campaign.)

* Capitalise instances of the Book of Crelanu.

I leave book as lower-case when it's not yet famously known as the Book of Crelanu, such as in Legend of Wesmere, as well as in DM S15, where it is simply described as a book belonging to the old mage Crelanu.

* Harbour of Tirigaz does not appear to be a formal (capitalised) name.

In S12, Tirigaz is only described as a 'harbour'. Other instances of Tirigaz describes it as (lower-case) a port city.

[ci skip]

(cherry picked from commit 9cd5503338)
2021-11-10 11:56:02 +11:00
Wedge009
8fcd08fc08 Replace 'straight' apostrophes with 'curly' or 'typesetter' apostrophes or quotes as per https://wiki.wesnoth.org/Typography_Style_Guide
[ci skip]

(cherry picked from commit 3fcba6aa1c)
2021-11-10 11:51:31 +11:00
Wedge009
347360b273 Rephrase #6060 as per suggestion from @CelticMinstrel.
(cherry picked from commit 5ba9620ae3)
2021-11-10 11:51:30 +11:00
Wedge009
016035badf Avoid contemporary phrasing
Introduced in #5382, discussion seems to agree that we should avoid this.

(cherry picked from commit 60e52a61d9)
2021-11-10 11:51:30 +11:00
Wedge009
5f22034094 Correct typo.
This string appears to be untouched for 13 years so hard to ask for the original intent but it doesn't appear to be an intentional attempt to sound archaic.

(cherry picked from commit 71ebeb8eb4)
2021-11-10 11:51:29 +11:00
Wedge009
c7cab90d5d Add translation hints for time format strings.
Also mark Add-On Manager time string for translation.
Resolves #6246.
2021-11-10 11:44:29 +11:00
Charles Dang
38b8fc1f50 Save Index: why was year *after* time...
(cherry picked from commit 6cf37037f2)
2021-11-10 11:34:20 +11:00
Wedge009
30c57f1a3f Rename kick attack for horses and wyverns.
Makes attack name consistent with other weapon attacks and also avoids translation issues (resolves #6071).

(cherry picked from commit 76d0f33e2c)
2021-11-10 11:26:41 +11:00
Wedge009
e04f3f41da Resolve title-screen vs main menu inconsistency.
Discussed in #4390 and originally introduced in 7c8c3114.

(cherry picked from commit 0709145670)
2021-11-10 11:22:56 +11:00
Pentarctagon
8989e65c3f
1.16.1+dev. 2021-11-08 19:07:02 -06:00
Pentarctagon
237adec312
1.16.1. 2021-11-08 19:05:37 -06:00
loonycyborg
d9d3c3461e
pot-update and regenerate doc files 2021-11-09 03:51:18 +03:00
loonycyborg
ff489be529
campaignd: return proper exit code 2021-11-09 01:07:16 +03:00
loonycyborg
e21e025519
wesnothd: properly terminate in response to failure to bind port 2021-11-08 23:23:54 +03:00
loonycyborg
2c391ece5f
wesnothd: prevent spurious log messages about unknown data
due to control falling through to handle_player_in_game() after message
was already handled.
2021-11-08 15:18:39 +03:00
Charles Dang
302a95e93c Orb Colors: fixed lack of borders on a label
Also moved this row to the bottom for UI cleanliness
2021-11-07 22:41:26 -05:00
Charles Dang
9fb9c5dc79 Attempt to fix build 2021-11-07 19:53:41 -05:00
Charles Dang
7b06daa5b2 Chatbox: partially fixed buggy nick autocompletion (fixes #6263)
I don't really like this solution, since as mentioned in #3729, while this works for players
in the lobby, since lobby_info.users isn't updated while a player is in staging/join, anyone
who joins the lobby (or your game) after your create or join a game won't get included in the
autocomplete list. BEeides, I don't like the idea of exposing the full lobby_info object here
just for the user list, but it at least gets ac working and not crashing.
2021-11-07 19:30:16 -05:00
Charles Dang
2cfa7d4dd5 Revert "Revert "Revert this for 1.16.1""
This reverts commit 100045c00f.
2021-11-07 11:48:06 -05:00
Steve Cotton
9c9bc6a64d Update changelog
I haven't added changelog entries for:
* 297ee3d1 campaignd more args to setattr - not sure what to say here
* 08f1890b and 5f0d1848 - they're just clean-ups
* 02db53c9 UI for abilities with apply_to=opponent - I'm calling for it to be reverted
* 100045c0 string changes for MP - PR already opened to revert this
2021-11-07 17:17:26 +01:00
Charles Dang
5f0d1848d6 Removed command handlers related to rooms 2021-11-07 01:25:20 -04:00
Charles Dang
08f1890b0c Cleaned up unused chat rooms handling 2021-11-07 01:25:19 -04:00
Alexander Lacson
51a9f8f311 Make wmltools Forest avoid version control subdirectories (#6236)
This also makes wmltools Forest avoid .DS_Store and Thumbs.db files.
2021-11-06 23:23:21 +01:00
Elvish_Hunter
603430c3aa gui.get_user_choice(): fixed a 'number expected, got function' error 2021-11-06 22:23:33 +01:00
Nils Kneuper
8e8d9a3c8f updated Portuguese (Brazil) translation 2021-11-06 10:58:56 +01:00
Pentarctagon
54482b133c
Re-add html character escaping. 2021-11-05 15:52:21 -05:00
Steve Cotton
8304ada17c Fix pango_text::set_maximum_height
Change back to handling the height in our code instead of expecting Pango to
handle it. Pango is still expected to handle the maximum width, as Pango needs
to handle the word-wrapping.

While writing f282eb7, I had noticed that set_maximum_height called
PangoLayout's pango_layout_set_height, and removed the apparently unnecessary
enforcement of the maximum height from our wrapper code. The documentation
added in this commit explains why that was incorrect.

This fixes the bug that some tooltips on the sidebar stopped working. The text
on that sidebar is densely packed, and while this commit makes no visual
change, it removes a few blank pixels of padding below the text. That extra
padding was sufficient for the next line's area to overlap, making
tooltips::add_tooltip remove the previously-added tooltip.
2021-11-05 21:42:29 +01:00
Steve Cotton
b0c59a558a Fix iterator-use-after-invalidation in tooltips
It's undefined behavior to access an iterator after calling std::map::erase(),
the correct method is to use the new iterator that erase() returns instead.
2021-11-05 21:42:29 +01:00
Hejnewar
c2b4d11ebf
Increase the limits of timer values that players can set 2021-11-03 16:07:28 +01:00
Wedge009
92e8e1cd86 Add translation hints for time format strings.
[ci skip]
2021-11-02 18:35:43 +11:00
newfrenchy83
02db53c928
Have the names of the abilities used as weapons show in the attack dialog window when apply_to=opponent (#6111)
If a weapon with apply_to=opponent is used, this name will appear in the opponent attack affected.
2021-10-31 10:50:22 -05:00
loonycyborg
d08e16b45e wesnothd: avoid potential use of null optional when handling surrender 2021-10-31 11:39:20 +03:00
loonycyborg
cdfec1c1c6 Fixed UB due to debug log side effects not evaluating 2021-10-31 01:18:43 +03:00
loonycyborg
7ff88e3fc2 Add extra debug info when verifying TLS cert in the client 2021-10-31 00:57:03 +03:00
Nils Kneuper
f2b5c915bc updated Dutch translation 2021-10-30 11:34:51 +02:00
Celtic Minstrel
1f32466782 Lua: Fix nil-safety issues in location_set
Fixes #6231
2021-10-28 20:51:48 -04:00
Iris Morelle
831655fd57
campaignd: Include core= attribute from _server.pbl
Closes #5664.
2021-10-27 17:26:59 -03:00
loonycyborg
f8b98a725f wesnothd: fix crash when yielding after kick in is_login_allowed() 2021-10-27 19:46:36 +03:00
loonycyborg
4c63401607 wesnothd: properly shutdown tls connection without leaving clients hanging 2021-10-27 18:49:52 +03:00
loonycyborg
734a99c781 servers: add dedicated catch for boost::system::system_error
To get message from error_code instead of what()
2021-10-27 17:43:42 +03:00
loonycyborg
8cdf83393e wesnothd: Fix server crash if client is autokicked by registered login 2021-10-27 16:40:20 +03:00
loonycyborg
71422ead8e wesnoth: use async_shutdown() instead of shutdown() 2021-10-27 03:32:16 +03:00
kabachuha
5e195930c9 SoF 2p5: add forgoten defeat condition on Alanin's death
not breaking the string freeze cause the existing string is reused
2021-10-27 01:35:53 +03:00
Iris Morelle
53eb1628f5
Italian translation update 2021-10-26 19:11:21 -03:00
Iris Morelle
264367197f
gui2/addon_manager: Move Search to the top right on small resolutions 2021-10-26 18:27:06 -03:00
Iris Morelle
4503c994f8
tutorial: Use Delfador's mentoring portrait for the menu 2021-10-26 16:50:19 -03:00
Iris Morelle
28323814ed vcpkg: Boost 1.77 necessitates an explicit boost-math dependency 2021-10-26 15:41:48 -03:00
loonycyborg
80015e78c0 wesnothd: check for possible null optional in error message 2021-10-26 20:36:00 +03:00
loonycyborg
9a1b4caa55 Made get_dlls.py get dlls for wesnothd too 2021-10-26 17:18:55 +03:00
Charles Dang
100045c00f Revert "Revert this for 1.16.1"
This reverts commit 4c4e30945a.
2021-10-26 02:17:51 -04:00
Charles Dang
c234b3ddda GUI2: increased listbox header toggle heights
Removed borders in the campaign dialog usage to compensate.
2021-10-26 02:15:24 -04:00
Charles Dang
8f68fa1054 MP Staging: fixed weirdness caused by accidentally removing the wrong node (fixes #5648) 2021-10-26 02:15:23 -04:00
loonycyborg
8d06e6f223 wesnothd: don't let exceptions stop asio's event loop
Generally if we catch exception but continue the loop the player
associated with it would be automatically disconnected either due to
socket_ptr going out of scope or scope_exit calling remove_player().
2021-10-26 04:27:14 +03:00
loonycyborg
fb2d03fdba wesnothd: avoid trying to remove destructed players from games during stack unwinding 2021-10-26 01:51:38 +03:00
loonycyborg
a6923bfef0 wesnothd: remove catch clause for std::exception
it loses too much information about the exception
2021-10-26 01:51:38 +03:00
Iris Morelle
297ee3d1ce
campaignd: Allow more than 3 arguments to setattr
This makes it possible to pass strings with whitespace in them.
Obviously this is still a bit awkward since only single whitespace is
accepted.
2021-10-25 16:52:29 -03:00
Pentarctagon
e321d18687
1.16.0+dev. 2021-10-23 19:26:32 -05:00
Pentarctagon
91d1296af9
1.16.0. 2021-10-23 19:23:51 -05:00
Iris Morelle
ce6f367607
wesnothd: Accept 1.16.* versions by default 2021-10-23 21:21:28 -03:00
Iris Morelle
97eb451da1
pot and documentation update 2021-10-23 21:00:43 -03:00
loonycyborg
ab97a37394
wesnothd: exception safety fix
This fixes crash in response to server_shutdown exception getting
thrown, as well as any other exception, that happens if there are any
players logged on.
2021-10-24 01:45:59 +03:00
Iris Morelle
bfa16ee0c7
Spanish translation update 2021-10-23 18:19:55 -03:00
Steve Cotton
5e3a98dd97 Update changelog
[ci skip]
2021-10-23 22:36:56 +02:00
Steve Cotton
13c5d8a96e
Disable the fast path of [modify_unit] (#6222)
With these two lists emptied, is_simple() will always return false, and the
code will always use the slow path. The slow path is slow because it stores and
unstores the unit, triggering the desired side effects of unstoring a unit.

Fixes issue #5133, and tests that with the new unit test.

Fixes bug #4978, that changing the facing wasn't updating the display.
2021-10-23 22:33:23 +02:00
Elvish_Hunter
59e19cbe5f GUI.pyw: update constant for the 1.16 series 2021-10-23 20:56:14 +02:00
Iris Morelle
5b5676d2d0
Finnish translation update 2021-10-23 14:12:08 -03:00
Iris Morelle
db7f9e7c49
Spanish translation update 2021-10-23 13:52:42 -03:00
Steve Cotton
219f2c8f02
For a [message] with options, zero-initialise the default selection int (#6217)
I can't reproduce the issue (it selects the first option by default for me even
without this), but this probably fixes #6038 "When you have a long list of
[message][option], it will default to highlighting the 3rd entry for some
reason."
2021-10-23 18:17:31 +02:00
Nils Kneuper
7f2323ddc5 updated Finnish translation credits 2021-10-23 12:17:17 +02:00
Nils Kneuper
782dcf272f updated Italian translation 2021-10-23 12:14:48 +02:00
Nils Kneuper
62f0f62c97 updated Finnish translation 2021-10-23 12:13:08 +02:00
Aaron Winter
3e8b5196b2 updated German translation 2021-10-23 08:08:27 +02:00
Pentarctagon
378d71ff13
Fixup 1.16 trailer credits. 2021-10-22 23:37:46 -05:00
Pentarctagon
cccf8094a0
Add 1.16 trailer to credits. 2021-10-22 22:29:27 -05:00
Iris Morelle
07fba86f71
desktop/version: Use release version from DisplayVersion if available
Reportedly Windows 10 20H2 and later record the feature release id into
DisplayVersion and leave ReleaseId stuck at 2009 for some mysterious
reason. Windows 11 currently will identify itself as Windows 11 21H2
based on this information.
2021-10-21 16:27:23 -03:00
Iris Morelle
2c103cc63a
desktop/version: Attempt to identify Windows 11 GA
This is based on current rumours circulating on Windows 11 release day.
It needs to be fact-checked and tested on live systems.
2021-10-21 16:27:23 -03:00
Steve Cotton
7d04b80385
Error handling for corrupt .mo files (#6214)
Previously, a corrupt .mo file caused the game to exit immediately. This meant
that a broken add-on could stop the user from reaching the main menu, a
situation that could only be recovered by editing the preferences file or by
deleting the add-on with a file browser.

The engine generates the locale 3 times:
* once with no .mo files loaded
* once with only the mainline .mo files loaded
* once with all .mo files loaded

This means that:
* starting Wesnoth with a corrupt .mo file in mainline will make the engine run
  showing en_US text
* changing language with a corrupt .mo file in mainline will make the engine
  stay in whatever language it had successfully loaded
* a corrupt .mo file in an add-on will disable .mo files in all add-ons, but
  leave mainline translations active, and will let the user play the game
2021-10-21 20:27:01 +02:00
loonycyborg
c9d7e02d34
docker: Compile own openssl for steamrt builds
Steam's scout image provides way too old openssl library version which doesn't
doesn't properly handle recent expiry of one of root Let's Encrypt
certs.
2021-10-19 18:59:08 +03:00
loonycyborg
b8b27ae821
Update steamrt docker builds 2021-10-19 18:58:56 +03:00
Severin Glöckner
efad706bde German translation: forwardport localized images 2021-10-18 18:14:44 +02:00
Severin Glöckner
c267d0c752 German translation update 2021-10-18 18:14:38 +02:00
Iris Morelle
94707b31d4
Update credits 2021-10-17 22:34:04 -03:00
Iris Morelle
c1005f2d1f
gui2/title_screen: Don't display locale identifiers on the Language button
CC #6205
2021-10-17 22:34:04 -03:00
Severin Glöckner
869926a2b4 add missing [special_note] to movetypes 2021-10-18 02:55:29 +02:00
Nils Kneuper
877aaafb2c fixed changelog for Japanese translation 2021-10-16 13:58:20 +02:00
Nils Kneuper
b62531154c updated Czech translation 2021-10-16 13:58:04 +02:00
Nils Kneuper
4d241b788b updated Japanese translation 2021-10-16 13:56:37 +02:00
Nils Kneuper
922b7a8715 updated Portuguese (Brazil) translation 2021-10-16 13:48:11 +02:00
Aaron Winter
6f499ddeab updated German translation 2021-10-16 11:09:47 +02:00
Wedge009
da5e23e912 Avoid event taking away a village just captured by the player.
Resolves #6187.

(cherry picked from commit 2bba4a4df4)
2021-10-15 01:21:46 +11:00
Celtic Minstrel
485b98e5bc
Fix color_adjust requiring all keys
Fixes #6191
2021-10-14 01:07:33 -04:00
Iris Morelle
039fed73c7
Spanish translation update 2021-10-13 10:28:23 -03:00
loonycyborg
694c3fb22a
wesnothd: made ipv6 addresses work with /query status/searchlog 2021-10-10 18:54:11 +03:00
loonycyborg
ca9dd3a8d8
Fix issue #2926
wesnothd: implement support for printing time for which user was connected in
/query status and /query searchlog
2021-10-10 18:53:56 +03:00
loonycyborg
e5a0400721
wesnothd: avoid invalid iterator use when terminating game
Set game::owner_ to past-the-end iterator when game is being destroyed
to avoid comparison with invalid iterator when remove_player() is called
for other players after game host has disconnected making game::owner_
invalid.
2021-10-10 18:52:50 +03:00
doofus-01
12d4129aca
Update changelog.md 2021-10-09 17:46:36 -07:00
doofus-01
57078c4eb7
SoF - S6 - fix #6146 and related side-storing issue causing auto-defeat (#6181) 2021-10-09 17:31:57 -07:00
Wedge009
374104d7c6 Remove changes not actually in 1.16 branch just yet.
Those changes are in master but not in 1.16 due to the string freeze (pending #5973).
Unfortunately these changes are already published in places like Steam...

[ci skip]
2021-10-10 00:13:13 +11:00
Iris Morelle
81b1ce0338
Update British English translation 2021-10-08 11:36:23 -03:00
Descacharrado
9a9989fe11 TRoW S8: smoothen naga appearance (fix #6140) 2021-10-07 15:31:30 -04:00
Wedge009
c7e6bb9c56 Specify specials mode.
Unset specials mode is deprecated.

(cherry picked from commit f0ba2c386e)
2021-10-08 00:37:22 +11:00
Iris Morelle
9c2ad49026
lua: Fix wesnoth.audio.volume always setting the volume to 0 2021-10-05 12:24:49 -03:00
Descacharrado
24a11e4404 Pinnacle rock map label covered during dialog fix
Issue #6125 - UtBS S2 Across the Harsh Sands Pinnacle Rock is covered during dialog fix. Now the camera will scroll to the tile where the "Pinnacle Rock" map label is.

(cherry picked from commit ade778cab0)
2021-10-01 00:29:26 +10:00
Wedge009
24ebaf7048 Make 100% gold carry-over explicit in objectives (resolves #6131)
(cherry picked from commit 7f6c7c0283)
2021-09-30 11:26:20 +10:00
Nils Kneuper
3c7613c2ec updated Italian translation 2021-09-29 14:56:57 +02:00
Pentarctagon
1ad44fda5e
1.15.18+dev. 2021-09-26 01:17:38 -05:00
Pentarctagon
9d50ee7052
1.15.18. 2021-09-26 01:15:49 -05:00
Iris Morelle
afd1a9021c
pot and documentation update 2021-09-25 21:08:11 -03:00
doofus-01
06b7efd77c
1.16 - terrain graphics variations and transitions (#6078)
* some tent variations

* dead great tree variations

* Stone tile (Irs) to water/swamp transition, and raise Irs transition layers over swamp water and underground paths

* change when muted-blue waterfalls are applied
2021-09-25 17:04:43 -07:00
Wedge009
faa451d75e Update change log.
[ci skip]
2021-09-26 09:42:06 +10:00
Wedge009
c6b9749026 Display Difficulty as em dash when it is not valid (resolves #5321)
Also shows campaign-specific difficulty for MP games.

* Test scenario: No difficulty -> —
* Pre-1.15 Tutorial: No difficulty -> —
* SP Campaigns: Custom difficulty -> no change
* MP Campaigns: Plain difficulty -> Custom difficulty
* MP Scenario: No difficulty -> —

Save Game                Before              After
---------                ------              -----
Test scenario            Medium              —
Tutorial (1.14 Tutorial) Medium              —
Tutorial (1.17 Campaign) Tutorial (Beginner) Tutorial (Beginner)

MP single scenario       Medium              —

SP campaign (HttT)       Commander (Normal)  Commander (Normal)
MP campaign (HttT)       Medium              Commander (Normal)
SP campaign (LoW)        Lord (Challenging)  Lord (Challenging)
MP campaign (LoW)        Medium              Lord (Challenging)

Using — follows precedent in MP Staging, plus has the benefit of not breaking the string freeze in lead-up to 1.16 release.
2021-09-26 09:34:49 +10:00
Wedge009
af629b7131 Remove scaling by zoom_factor in unit height adjustment calculation (resolves #5974).
It appears double zoom_factor scaling results in units being drawn way off their actual hex at high zoom, for tiles with a large (~20 pixels) unit height offset parameter.
2021-09-26 09:34:49 +10:00
Nils Kneuper
a8d6f65c7a correct translation definition file for Burmese 2021-09-26 01:32:25 +02:00
Nils Kneuper
781d603600 updated Italian translation 2021-09-26 01:29:30 +02:00
Lordbob
c3a837fdd7
Wire in ringcaster portrait
Temporary substitute until I finish the lvl 3 portrait
2021-09-25 16:21:11 -05:00
Lordbob
8ceec1f950
wire in ringcaster portrait 2021-09-25 16:21:11 -05:00
Lordbob
263064e994
Wire in ophidian portrait
Temporary substitute until I can finish the lvl 3 portrait.
2021-09-25 16:21:10 -05:00
Lordbob
46938d56d1
Wire in Ophidian portrait 2021-09-25 16:21:10 -05:00
Lordbob
c2e04296f9
Last-second naga portraits
New portraits for Ringcaster/Zephyr and Ophidian/Sicarius
2021-09-25 16:21:10 -05:00
Iris Morelle
1f384d8987
Minor README formatting or content fixes
[ci skip]
2021-09-25 18:19:40 -03:00
Iris Morelle
94e8ef7b6d
gui2: Make dropdown button light source consistent with other buttons 2021-09-25 11:22:55 -03:00
Wedge009
da982a3dc3 Update change log.
[ci skip]
2021-09-26 00:13:34 +10:00
Wedge009
1ef03e4552 Update change log.
[ci skip]
2021-09-26 00:08:42 +10:00
Nils Kneuper
291fb3fd79 add Burmese po files (fixed version) to 1.16 2021-09-25 12:29:49 +02:00
Nils Kneuper
29fe94440b add Burmese to 1.16 LINGUAS files 2021-09-25 12:25:26 +02:00
Nils Kneuper
1bcc6a5ace updated British English translation 2021-09-25 11:04:06 +02:00
Nils Kneuper
7d65b2603e updated French translation 2021-09-25 11:02:27 +02:00
Nils Kneuper
7379ee7c2a updated Portuguese (Brazil) translation 2021-09-25 11:01:14 +02:00
Wedge009
06d0daa4e5 Work-around crash situation caused by using scenario-specific tools in map context (closes #5883)
(cherry picked from commit b002444322)
2021-09-25 15:27:41 +10:00
Iris Morelle
a0cd1dda2a
Changelog
[ci skip]
2021-09-24 23:17:11 -03:00
Iris Morelle
d5ebd982f4
Use parentheses in English language variation names
For consistency. Also because square brackets are ugly and not standard
punctuation in English.

This is not a string freeze-breaking change. Ironic, I know.
2021-09-24 23:15:13 -03:00
Iris Morelle
5f5b2c1b1b
gui2/title_screen: Increase bottom row margins from 0px to 10px
This hopefully makes it seem a little tidier than having all of the
bottom row buttons and labels hugging the edges of the game screen.
2021-09-24 23:15:07 -03:00
Iris Morelle
da7d8c6aed
gui2/title_screen: Give the Language button its label back
This makes the Language button use one of the new title screen button
definitions so it has an actual label in addition to its icon. However,
it also makes the label dynamic to reflect the current language choice.

More specifically, it reflects the current locale's language name, which
turns out requires a surprising amount of effort on our part to obtain.
2021-09-24 23:15:02 -03:00
Iris Morelle
df9f12568e
gui2/button: Add definitions for special title screen buttons
These buttons have an icon like normal action buttons do, but they also
keep their text label and use a smaller font. Currently only one
instance is provided, for the Language button.
2021-09-24 23:14:50 -03:00
Iris Morelle
ff3e7c3339
Spanish translation update 2021-09-24 13:27:39 -03:00
Iris Morelle
67aa5d9a08
gui2/core_selection: Use a more apropos OK label
This is not a string freeze-violating change because the string already
exists in its textdomain.
2021-09-23 17:28:57 -03:00
Iris Morelle
47d0ca2843
gui2/core_selection: Allow links to be parsed in core descriptions 2021-09-23 16:28:38 -03:00
Astrid Halberkamp
681fa20f35 TRoW S12: Always give Lord Typhon a storm trident (#6113)
Per #6103
2021-09-23 15:18:31 +02:00
Iris Morelle
5daf66222f
Spanish translation update 2021-09-23 08:50:33 -03:00
Astrid Halberkamp
9fecd16f2c LoW S3: fix deprecated WML warning 2021-09-23 10:27:19 +02:00
Iris Morelle
460de107ed
Spanish translation update 2021-09-22 15:06:03 -03:00
Astrid Halberkamp
957b23e550 TRoW S07: Make sure Lady Jessene is visible 2021-09-22 09:02:35 +02:00
newfrenchy83
e1fe49a694
Fix bug in attack prediction window
When a unit has an ability that's a weapon special (ie: firststrike as an ability), and when that ability affects the opponent, the ability's name is shown on the attacking unit's weapons in the attack dialog.
2021-09-20 13:08:14 -05:00
Wedge009
3116867c60 TRoW S22: Remove out-of-turns lose condition. (Resolves #6109)
Turns are unlimited for this scenario.

[ci skip]

(cherry picked from commit c45c6d8ddd)
2021-09-20 22:25:11 +10:00
Wedge009
fd91907e18 Link side-bar unit defence rating to unit's Help page (resolves #1297).
(cherry picked from commit daabe2d183)
2021-09-20 11:46:20 +10:00
Wedge009
6b1de3bc1d Switch to hard-coded colours for formula debugger as well.
(cherry picked from commit 8285cac7f5)
2021-09-20 11:46:19 +10:00
Wedge009
1014fd1741 Switch to hard-coded colours instead of relying on pango names (resolves #4348).
* Pango changed its definition of 'green' in version 1.32.2 to align with CSS specifications (see #4348 for details).
* This change focuses only on instances of '<span color="green">', leaving instances of named colours that don't use 'green'.
* Problem: Cannot use this approach with '<format>' (at least not that I'm currently aware) so it breaks time-of-day bonus colour consistency.

(cherry picked from commit 57cfcf87d7)
2021-09-20 11:46:19 +10:00
Wedge009
8d2171df26 Clear dehydration status on victory (resolves #5687)
Even though units are not dehydrated in subsequent scenarios, the dehydration icon may otherwise still appear in the side-bar without this.

(cherry picked from commit 4c9e016fa3)
2021-09-19 14:51:05 +10:00
Nils Kneuper
4220e99d89 updated French translation 2021-09-18 12:06:18 +02:00
Nils Kneuper
7c892a50c1 updated Portuguese (Brazil) translation 2021-09-18 12:05:23 +02:00
Iris Morelle
c97d9ce79c
Update changelog
[ci skip]
2021-09-18 05:51:11 -03:00
Iris Morelle
29e214cf5a
i18n: Make dsngettext() strip caret annotations from plural forms too
This affects operation of dsngettext() and its users (e.g. _n() and
VNGETTEXT()) specifically when the plural version of a string is chosen.

Apparently back in 2007 in commit 4852283ab3,
this function and its late sibling were made to only strip carets from
singular forms under the probable assumption that disambiguation won't
be needed for plurals because of the way GNU gettext pairs them with
their singular msgid under a single unique entry. Like everything else
related to our gettext functionality, this wasn't documented in the C++
code.

However, there's no guarantee that this will remain the case forever if
we some day decide to replace the GNU gettext format with something
without this guarantee. It's also likely to confuse more people later
down the line (especially now that the Lua API exposes this
functionality).

Closes #6093.
2021-09-18 05:50:16 -03:00
Wedge009
d1c86c1c46 Make the team Eryssa leads (if alive) have consistent colour (resolves #5375)
(cherry picked from commit 5f3382e8d8)
2021-09-18 12:24:50 +10:00
Pentarctagon
dc61835567 Specify a non-zero value for nplayers.
Fixes #6077
2021-09-16 22:47:14 -05:00
Wedge009
7f002f3ce6 Use existing macro to avoid situations where Nym's otherwise-mute Dust Devil pet might speak.
Resolves #4892.

(cherry picked from commit 9941ee2258)
2021-09-17 12:47:43 +10:00
Wedge009
2041bca678 Ignore auto-generated Steam file in save directory (#6069)
* Ignore auto-generated Steam file in save directory

'The file steam_autocloud.vdf will be created in each location specified by your Steamworks cloud paths. This file file is used by Steam, and can be ignored by your game.'
Reference: https://partner.steamgames.com/doc/features/cloud

* Rephrase commentary to avoid any allegation of copyright infringement.

(cherry picked from commit 52c6d7eafe)
2021-09-16 02:30:43 +10:00
doofus-01
ca91280807
1.16 sprint - naga stuff (#6076)
* various small image fixes

* naga zephyr defense anim

* naga high guard defense animation adjustment
2021-09-12 12:15:05 -07:00
Nils Kneuper
9569977676 updated Czech translation 2021-09-12 16:15:43 +02:00
Nils Kneuper
b7df6e4a90 updated Russian translation 2021-09-11 10:09:52 +02:00
Nils Kneuper
5750e3d49d updated Portuguese (Brazil) translation 2021-09-11 10:08:48 +02:00
Nils Kneuper
367c87c37d updated Czech translation 2021-09-11 10:07:48 +02:00
Nils Kneuper
849cdd03d5 updated Bulgarian translation 2021-09-11 10:05:54 +02:00
Pentarctagon
480ff7cbed
.ogg -> .wav 2021-09-10 11:23:30 -05:00
Pentarctagon
43f60a9d8b
Add doxygen docs to wesnothd's game.hpp. (#6017)
Also removed some methods/parameters that are not used.
2021-09-08 13:18:15 -05:00
doofus-01
b34b8a9dcd
1.16 Chasm terrain graphics updates (#6066)
* muted-blues waterfall for swamp-chasm transition

* touchups to snow-chasm transition images
2021-09-06 21:23:58 -07:00
doofus-01
8927330c3b
Merge pull request #6065 from doofus-01/1.16_aethermaw_sprites
2p_Aethermaw - fix sprite decorations above fog
2021-09-06 16:21:17 -07:00
doofus-01
8042db88e9 2p_Aethermaw - fix sprit decorations above fog 2021-09-06 13:56:26 -07:00
nemaara
6e3caa5ae4
UtBS S4: reduce difficulty 2021-09-06 16:53:29 -04:00
doofus-01
9a36ff4d8c
Naga Sicarius sprite (#6056)
* update naga sicarius sprite, including attack/defense animations
2021-09-06 11:27:18 -07:00
Steve Cotton
d3d21e59ee WC: Add a WC_ prefix to defines with generic names
Macros with very generic names such as "STR_CASTLE" were defined and not
undefined. This prefixes all of them to be WC_STR_CASTLE, etc.

Either fixes or reduces the severity of #6062.
2021-09-06 16:13:48 +02:00
Pentarctagon
6f817df889
Expand Wesnoth's README.
Supercedes #5843
2021-09-05 21:19:11 -05:00
Nils Kneuper
5bdae673af updated Portuguese (Brazil) translation 2021-09-04 13:18:58 +02:00
nemaara
0694d92a08
SotBE S13: rebalance scenario 2021-09-02 02:53:22 -04:00
Pentarctagon
1dc2680ebf
1.15.17+dev. 2021-09-01 19:49:37 -05:00
Pentarctagon
4604f876b0
1.15.17. 2021-09-01 19:48:08 -05:00
Pentarctagon
7dc237ba59
Fixup WC schema validation failures. 2021-09-01 19:41:12 -05:00
mattsc
1fe6e24b64 Messenger MAI: fix bug of own units blocking waypoint
ignore_own_units=true was accidentally dropped when adding [avoid] tag functionality to the Micro AI in a60736b6c7
2021-09-01 07:21:21 -07:00
Pentarctagon
851c49fcc3
changelog update. 2021-08-31 21:50:46 -05:00
Pentarctagon
cddf3c783b
Re-enable WC. 2021-08-31 21:45:04 -05:00
Steve Cotton
30f50bac68 Fix an off-by-one in mapgen's x and y filters, and add unit tests
Fixes the currently suspected root cause of #5108, but requires further testing
to confirm that it fixes that issue.

Closes #6501 (the question of how to test the mapgen filter).
2021-09-01 01:21:06 +02:00
Tahsin Jahin Khalid
9dabf99d17
[world conquest] [1.16] [lua] Check for wc2_scenario value before executing wc2_start_units function (#6053)
What this does is just checks the value of wc2_scenario before executing the function, and executes it for the first scenario only as intended.
2021-08-31 10:36:26 -05:00
Celtic Minstrel
05ed330d79 Revert "When writing WML, output preprocessor-safe strings"
This reverts commit a9906226a7.

It turns out that this breaks simple_wml, so even though it's an improvement for
offline serialization, it can't be done at this time.
2021-08-29 19:18:26 -04:00
doofus-01
abce6e6a77
Merge pull request #6050 from doofus-01/1.16_terrain_20210828
lower isolated pine trees within images
2021-08-28 18:40:46 -07:00
doofus-01
5643f97c3b ran woptipng on the forest terrain images 2021-08-28 16:18:05 -07:00
Nils Kneuper
5037ad1a4e updated Polish translation 2021-08-28 14:44:29 +02:00
Nils Kneuper
8c1d23d218 updated British English translation 2021-08-28 14:42:25 +02:00
doofus-01
c658e3ed5a lower isolated pine trees within image 2021-08-28 05:03:59 -07:00
Aaron Winter
159649db74 updated German translation 2021-08-27 16:32:49 +02:00
Steve Cotton
8919c2e948 UtBS S02: Don't move Nym if she's already adjacent to the bottle 2021-08-26 10:42:13 +02:00
Steve Cotton
9d32c77035 WC: End the campaign at the end of the final scenario
Fixes the campaign part of #5891.
2021-08-23 19:52:16 +02:00
doofus-01
2ed26f609c
naga sprite animations (#6027)
* revised naga ophidian sprite, and added defense and attack animations

* ran woptipng
2021-08-22 17:50:51 -07:00
Pentarctagon
706a38b92e
Fixup changelog header. 2021-08-22 14:04:13 -05:00
Pentarctagon
7b80f1f711
1.15.16+dev. 2021-08-21 22:40:53 -05:00
Pentarctagon
9e88add2c3
1.15.16. 2021-08-21 22:40:07 -05:00
Iris Morelle
aff21f4466
pot and documentation update 2021-08-21 23:33:20 -04:00
Nils Kneuper
a16e5455ba updated Turkish translation 2021-08-21 10:55:15 +02:00
Nils Kneuper
f6b066be16 updated Russian translation 2021-08-21 10:54:23 +02:00
Nils Kneuper
93d0436db7 updated Indonesian translation 2021-08-21 10:53:25 +02:00
Nils Kneuper
757f020e23 updated Finnish translation 2021-08-21 10:52:11 +02:00
Aaron Winter
eaf576ed7f updated German translation 2021-08-20 20:29:44 +02:00
Tahsin Jahin Khalid
5cf3b08e15
[world conquest] replaced khalifate unit types with dunefolk unit types
I have also removed one mention of "Dune Piercer", which is non-existent unit, and substituted it with "Dune Rider".
2021-08-17 17:20:38 -05:00
kabachuha
d2fff8ac30 Updated my (kabachuha's) entry in the credits 2021-08-17 22:36:16 +03:00
kabachuha
84e465aac6 Update Russian translation credits 2021-08-17 22:22:27 +03:00
Celtic Minstrel
bd556a7405 Lua API: Fix functional.map returning the wrong answer if used on a table that contains numeric keys but is not strictly an array 2021-08-17 13:56:23 -04:00
Celtic Minstrel
45f47fc3e6 Lua API: Fix an error in the terrain hex API
Attempting to access a non-string key was an error.
2021-08-17 13:56:23 -04:00
Celtic Minstrel
19c61374ff Lua API: Fix an incorrect error message 2021-08-17 13:56:23 -04:00
Celtic Minstrel
4f0de69cd2 AI: Fix assertion when trying to move to an off-map location
This could, for example, be triggered using ai.move().
2021-08-17 13:56:23 -04:00
Celtic Minstrel
8b27a8e305 Lua AI: Fix non-integer candidate evaluation scores being treated as 0 2021-08-17 13:56:23 -04:00
Celtic Minstrel
4fbf33a0ca Lua: Fix console pretty-print output not showing zero or negative keys in tables 2021-08-17 13:56:23 -04:00
Celtic Minstrel
add5476964 AI: Fix missing serialization code for sticky candidate actions 2021-08-17 13:56:23 -04:00
Celtic Minstrel
0880d78077 Schema: Add [candidate_action][filter_own] 2021-08-17 13:56:23 -04:00
Celtic Minstrel
6145abd4ad fix whitespace 2021-08-17 13:56:23 -04:00
Celtic Minstrel
b39d9b0222 Include optional arguments in preprocess-output-macros file
Fixes #4697
2021-08-17 13:56:23 -04:00
Celtic Minstrel
a9dcc25b20 Include deprecation info in preprocess-output-macros file 2021-08-17 13:56:23 -04:00
Celtic Minstrel
b1b79bfd14 Make optional_reference bool conversion explicit
If this is non-explicit, then the following code:

optional_reference<config> ref = ...;
auto str = ref["key"]

results in ref being converted to bool and used as an index into the key string.
2021-08-17 13:56:23 -04:00
Celtic Minstrel
a9906226a7 When writing WML, output preprocessor-safe strings
Basically, this means that the output will parse to the original value even if run through the preprocessor.
2021-08-17 13:56:23 -04:00
Hejnewar
55d12404aa
Update Polish translation credits 2021-08-17 16:05:21 +02:00
Tahsin Jahin Khalid
3546bf99b1 [world conquest] World Conquest Era is only available for the WC campaign
Until a proper solution is found for #5228 , this will have to do. It suppresses the appearance of the era in the era selection list for other scenarios.
Hmm, I guess the [campaign] tag should support the allow_era= key in future but for the moment, this will do.
2021-08-16 23:04:19 -05:00
Steve Cotton
26054a7ead Update changelog
I'm leaving the Lua parts of the changelog for CelticMinstrel, but this now
covers all of the other changes from 1.15.15 to date.

[ci_skip]
2021-08-16 12:37:20 +02:00
Steve Cotton
25163c06a2 UtBS S09: Reveal the boss of the scenario at the end of part 1
This foreshadows that the player will need to attack the north-west after
defeating the north-east enemy, which is a bit fairer to anyone playing this
scenario for the first time.

Removes a now-unused string (Darius' pre-sacrifice speech). There are no new
strings here, the others are just being moved around.

For clearing shroud, change to using radius= because clearing a circle looks
better than clearing a square.

There's no significance to whether the new plan is "Plan B" or "Plan C" - back
in Wesnoth 1.10 it seems to have been dependent on whether all the merfolk had
been rescued.

Fixes issue #5540 about Hekuba spawning on a water hex.
2021-08-16 11:04:07 +02:00
nemaara
8896244030
Merge pull request #6026 from Wedge009/liberty_s06_sighted_1.16
Resolve #6019 - allied side not triggering failure condition when sighted (1.16)
2021-08-15 20:14:58 -04:00
Wedge009
94d88bb00c Resolve #6019 - allied side not triggering failure condition when sighted 2021-08-16 10:08:01 +10:00
doofus-01
dfadb99e4e
Merge pull request #6022 from doofus-01/1.16_troll_snow_fix
MOUNTAINS_RESTRICTED ... snow-castle
2021-08-14 22:42:23 -07:00
doofus-01
2fb553bcbb ran woptipng.py 2021-08-14 19:20:36 -07:00
doofus-01
f2fc0417a6 snow version of the small mountains for castless and chasms 2021-08-14 18:56:50 -07:00
Aaron Winter
aec6cbc955 updated German translation 2021-08-14 20:01:09 +02:00
Nils Kneuper
856d3e8786 updated French translation 2021-08-14 14:50:26 +02:00
Nils Kneuper
5d83cb46a8 updated Czech translation 2021-08-14 14:35:22 +02:00
Nils Kneuper
882c8313f3 updated Polish translation 2021-08-14 14:34:04 +02:00
Pentarctagon
cc4c9e96b2
Put quotes around missing era in case it's blank. 2021-08-13 14:06:08 -05:00
nemaara
47c19ceff6 TSG S8b: reduce difficulty 2021-08-12 01:30:42 -04:00
Pentarctagon
df781bfe27
Remove duplicate schema attributes. 2021-08-12 00:24:23 -05:00
Pentarctagon
1dcfee8fb5
Schema update for [era]. 2021-08-11 21:56:01 -05:00
Tahsin Jahin Khalid
1a1f971fe8
[world conquest] [1.16] update to new mushroom terrain from the deprecated mushroom terrain (#5960)
replace deprecated ^Uf and Uft with ^Tf and Tt respectively
2021-08-11 13:11:08 -05:00
Steve Cotton
ef80064ed8 Allow the campaign selection to be bigger on HDPI screens
This doesn't scale the campaign image (and the campaign images are generally
350x350 images anyway), so it looks a bit wrong, but it's a lot more useable
on HDPI than putting a 1050x750 limit on a treeview with a text panel.

(cherry picked from commit 62a8bad97c)
2021-08-09 06:36:47 +02:00
doofus-01
799d652e48
August 8th animations (#6012)
* fix the naga dirkfang chakri sound timing

* naga ringcaster defense and attack animations

* ran woptipng.py
2021-08-08 20:32:05 -07:00
Nils Kneuper
f8a856bad7 updated Russian translation 2021-08-07 12:30:25 +02:00
Nils Kneuper
574929b051 updated French translation 2021-08-07 12:29:07 +02:00
Nils Kneuper
cf078b40a7 updated Turkish translation 2021-08-07 12:27:59 +02:00
Elvish_Hunter
1dae7b1a3d wmllint: added automatic update of four terrain macros
Fixes #6009
2021-08-06 20:51:55 +02:00
Pentarctagon
58fe9e4b1e Have add-ons with no min version specified require the latest version.
Fixes #5004
2021-08-02 16:01:46 -05:00
Steve Cotton
d56fcd47e5 Tutorial S01: HDPI support
Remove the maximum size for the character-select dialog, the window will
automatically choose the minimum size that fits the text.

Extend the map 1 hex south. This means that, if the full map fits on screen,
the horizontal center of the map (where the print statements appear) is between
the keep and the south village, thus their labels don't overlap the print
statements.

(cherry picked from commit 25052e967e)
2021-08-02 16:16:34 +02:00
Celtic Minstrel
cc089162cf Add a deprecation message for something that has been deprecated since at least 1.14 2021-07-31 23:48:48 -04:00
Pentarctagon
5988c7b612 Missed some deprecated fungus on map edges. 2021-07-31 18:45:54 -05:00
Pentarctagon
35bb541f32
Use enum in copyright update script. 2021-07-31 12:56:09 -05:00
Tahsin Jahin Khalid
6673524c8f
[world conquest] add campaign icons, campaign image and credits (#5958) 2021-07-31 12:16:25 -05:00
Celtic Minstrel
6c12d7e01f fix whitespace 2021-07-31 12:19:57 -04:00
Celtic Minstrel
35d22698eb Lua API: Ensure unit test assertions specify a message string 2021-07-31 12:19:57 -04:00
Celtic Minstrel
cba14eb5c4 Lua API: Fix wesnoth.map.find(filter, unit) ignoring the unit 2021-07-31 12:19:57 -04:00
Celtic Minstrel
8590a2bd70 AI: Fix short goal syntax 2021-07-31 12:19:57 -04:00
Celtic Minstrel
5ae496e492 Add deprecation messages for the most FormulaAI WML 2021-07-31 12:19:57 -04:00
Celtic Minstrel
318ed3bf30 New config methods for getting deprecated attributes or children 2021-07-31 12:19:57 -04:00
Celtic Minstrel
99fd840b6d Update the shroud unit tests and add a few more for cases new in 1.16 2021-07-31 12:19:57 -04:00
Celtic Minstrel
ab16cc614f Add unit tests for the Lua shroud functions 2021-07-31 12:19:57 -04:00
Celtic Minstrel
cda910854e Lua API: Fix the deprecation wrappers for place_shroud and remove_shroud
- The "all" special case moved to place_shroud, as it should be
- Shroud data string handling fixed

Fixes #5885
2021-07-31 12:19:57 -04:00
Celtic Minstrel
0801061ee2 Lua AI: Fix a typo 2021-07-31 12:19:57 -04:00
Celtic Minstrel
0ae97085b6 Fix a misplaced doc comment 2021-07-31 12:19:57 -04:00
Elvish_Hunter
0be3c8466d wmllint: removed check for spaces in e-mail addresses 2021-07-31 17:49:37 +02:00
Nils Kneuper
81b4597b23 updated Italian translation 2021-07-31 09:42:36 +02:00
Nils Kneuper
634a3e26fd updated Russian translation 2021-07-31 09:41:24 +02:00
Aaron Winter
f37513c1b7 updated German translation 2021-07-31 09:29:57 +02:00
Steve Cotton
7d10aad57f SotA: Synchronise the zombie recruitment dialog
This dialog works by setting variables in the postshow function,
so the code had to be moved around to ensure that those variables
were synchronised, not just the return value of the dialog.

The message about not having enough gold isn't necessary for the
replay, so that gets moved into the synchronised code too.

(cherry picked from commit 9369b520e7)
2021-07-30 06:40:42 +02:00
Steve Cotton
32c107b797 Tutorial S01: Synchronise the choice of character
This avoids showing the dialog during replays, and thus avoids an
OOS if the person watching the replay chooses the other character.

(cherry picked from commit 3d50320369)
2021-07-30 06:40:42 +02:00
Pentarctagon
417aae61be Add a script to automatically update the copyright notice in source files. 2021-07-29 11:42:50 -05:00
Pentarctagon
79ebcad196 Re-add attribution to copyright notices.
These are mostly useless and outdated/wrong, but apparently it's probably illegal to remove them.
2021-07-27 20:20:34 -05:00
Pentarctagon
35ffda3d4c
Fixup some copyright notices.
In hindsight I should've written the script checking these notices first...
2021-07-26 12:33:30 -05:00
Pentarctagon
1c6d9fafa1 Copyright update.
This additionally:
* Makes all copyright notices identical aside from the starting year for Wesnoth-specific source files. Files not included: mariadbpp, lua, spirit po, xbrz, and bcrypt (crypt_blowfish).
* Removes all attribution from the files, since the vast majority of them are outdated or seemingly just outright incorrect. For example, I would guess that Dave is no longer the sole author of the majority of Wesnoth's current code.
2021-07-26 11:35:06 -05:00
Nils Kneuper
d568d0f45c updated Chinese (Traditional) translation 2021-07-26 11:52:12 +02:00
Charles Dang
4c4e30945a Revert this for 1.16.1
String changes not allowed for 1.16.0 anymore but we want the design updates.
2021-07-26 01:54:24 -04:00
Charles Dang
87126e6870 Faction Select: one more tiny refinement 2021-07-26 01:53:49 -04:00
Charles Dang
b765c0be66 Faction Select: refined design 2021-07-26 01:53:48 -04:00
doofus-01
f8c0f3c60d
1.16 animation update 7/24 (#5980)
* naga shield guard mace attack anim, shield attack/def anims

* naga high guard defense anim

* naga guard - adjust some animation timings, and base frame
2021-07-25 18:58:40 -07:00
Aaron Winter
bdaeb3212d Merge branch '1.16' of https://github.com/wesnoth/wesnoth into 1.16 2021-07-25 20:43:43 +02:00
Aaron Winter
e197bb71d9 updated German translation 2021-07-25 20:43:30 +02:00
Pentarctagon
6fd9137c67 Prevents logging of duplicate deprecation messages and messages missing timestamps.
Fixes #5942
2021-07-24 18:50:43 -05:00
Aaron Winter
000799fce0 updated German translation 2021-07-24 20:08:55 +02:00
Aaron Winter
2334d48b35 updated German translation 2021-07-24 20:07:47 +02:00
Nils Kneuper
46cab83cd7 updated British English translation 2021-07-24 10:56:49 +02:00
Nils Kneuper
eca3fa6e9a updated Portuguese (Brazil) translation 2021-07-24 10:55:37 +02:00
Nils Kneuper
e6c3c1f522 removed "\v\v" from translated string 2021-07-24 10:54:17 +02:00
Nils Kneuper
5cc8b452d7 updated Russian translation 2021-07-24 10:52:33 +02:00
Nils Kneuper
c66dcfea3d updated Turkish translation 2021-07-24 10:49:14 +02:00
Charles Dang
4e4b603364 MP Join Game: removed "Team: " prefix before team name 2021-07-23 23:27:57 -04:00
Charles Dang
1bc0dc4c1a MP Staging: removed "Team: " prefix before team names 2021-07-23 23:27:56 -04:00
Charles Dang
00f9c54eac Find other version save dirs in descending order
This means they appear in the Load dropdown most recent first.
2021-07-23 23:24:14 -04:00
Charles Dang
2e49f20102 Wesnothd Connection: time out after 1 minute waiting for handshake
As opposed to spinning indefinitely.
2021-07-23 23:24:13 -04:00
Charles Dang
3cd5342d3f Preferences: fixed border sizing in MP section 2021-07-23 23:24:12 -04:00
newfrenchy83
72a5952f10
add the names of the abilities used as weapons in the attack prediction window(UI) for 1.16 (#5951)
Now, if a weapon is affected by an ability used as a weapon, the name will appear as if it was a classic special.
2021-07-22 09:07:21 -05:00
Steve Cotton
b02b1ad2ff Tutorial S01: Don't let the first Quintain attack on turn 2
A player can follow Dacyn's instructions to the letter, yet get
killed if they choose a village 2 hexes away from the Quintain on
turn 2.

There are better suggestions about handling this in
https://r.wesnoth.org/t54644 , however during the string-freeze
let's simply make the Quintain stay on its starting spot on turn 1.

Add a CLEAR_PRINT because the player has just completed the
"End your turn" instruction.
2021-07-20 06:15:36 +02:00
doofus-01
ec44c3be73
1.16 - Troll defense animations (#5964)
* two-frame defense anim for troll warrior, grunt, rocklobber

* ran woptipng.py on the trolls directory
2021-07-18 20:48:35 -07:00
Pentarctagon
9759853269
1.15.15+dev. 2021-07-18 11:57:36 -05:00
Pentarctagon
304a8b7dcf
1.15.15. 2021-07-18 11:57:34 -05:00
newfrenchy83
db7f3200b8 update codeblock for 1.16 2021-07-18 11:49:07 -05:00
loonycyborg
df6e679f13
pot-update and regenerate doc files 2021-07-18 12:04:01 +03:00
Pentarctagon
1cfbef2d93
Update changelog. 2021-07-17 15:54:31 -05:00
mattsc
ea7c3e3176 Update changelog 2021-07-17 07:02:42 -07:00
Nils Kneuper
3b3d4cc08a updated Turkish translation 2021-07-17 11:30:31 +02:00
Pentarctagon
b418f50319
Fixup version. 2021-07-15 20:10:18 -05:00
Pentarctagon
c6052e805f Add a prompt to migrate data from previous versions of wesnoth.
Currently migrated, if existing:
* Add-ons (redownloaded if present on new add-ons server)
* Preferences file
* Credentials file
2021-07-15 20:06:55 -05:00
Pentarctagon
65a951111c
Fix building with gcc 8.3. 2021-07-15 14:35:25 -05:00
Celtic Minstrel
16fef70909 WC: Add player count to campaign abbreviation
1-player will be WC1, 2-player WC2, 3-player WC3
2021-07-13 19:42:56 -04:00
Celtic Minstrel
89596b7c04 WC: Player count is now an option in the settings dialog 2021-07-13 19:42:56 -04:00
Celtic Minstrel
30376fd77d WC: Change it to a campaign so it can use the built-in difficulty selection
Fixes #5113
2021-07-13 19:42:56 -04:00
Celtic Minstrel
8ee8a0647e WC: Miscellaneous cleanup
- Remove the IS_ADD_ON check
- The indentation of the generator Lua was weird
- Don't transclude macros into the Lua code

Squashed from the following commits:
9a3143215b 163bb2f52d f64c6c6c46 0cadfb3286
782c176744 315cebf0d9 81b147bc51 cf9fbdd516
24cf433aaf ceacb9ecad
2021-07-13 19:42:56 -04:00
Celtic Minstrel
ecccc60027 Lua API: Fix some issues with versions
Fixes #5955
Fixes #5957
2021-07-13 19:40:52 -04:00
Celtic Minstrel
d7c148c3b4 Fix a missing detail in saved game serialization
The translatable string explaining why you can't currently end your turn was missing from the saved game. This fixes that.
2021-07-13 14:11:21 -04:00
Toom
5c31e17e4f
Update dune explorer image path, closes #5945 (#5946) 2021-07-12 16:41:53 -05:00
Celtic Minstrel
b05215d8aa Fix wesnoth.schedule.get_time_of_day with a turn number 2021-07-11 14:03:07 -04:00
Celtic Minstrel
35911a3dcc Fix crash when accessing variables from a map generator
On some machines, the crash doesn't occur, but the variable is still not loaded correctly.

Addresses #5896
2021-07-11 14:03:07 -04:00
Celtic Minstrel
2968aca834 Lua API: Fix extraneous quotes in deprecation messages for attributes 2021-07-11 14:03:07 -04:00
Celtic Minstrel
cab47b696d Lua API: Revive mp_settings.active_mods and mp_settings.era_id
These were removed without deprecation in 0efd35acbc
This adds them back as deprecated.

Fixes #5941
2021-07-11 14:03:07 -04:00
Celtic Minstrel
b56c17d216 Add a deprecation message for the Giant Stoat 2021-07-11 14:03:07 -04:00
doofus-01
582b90b235
1.16 animation update (#5916)
* work on scarab attack anims

* make the fire guardian/wraith bob a bit to show floating
2021-07-10 09:19:14 -07:00
Nils Kneuper
f7e3c02fb8 updated Czech translation 2021-07-10 10:42:25 +02:00
Nils Kneuper
074e84cb81 updated Russian translation 2021-07-10 10:40:58 +02:00
Nils Kneuper
a93f47ff31 updated Turkish translation 2021-07-10 10:39:04 +02:00
mattsc
fc7054c568 Fix custom synced commands not changing the AI game state
The old ai.synced_command function always set the AI-context game state to changed when executing such a command. This was inadvertently omitted when the implementation was changed to invoke_synced_command in fef953a4. While custom synced commands may or may not change the game state and the engine has no means of determining this correctly in all cases (meaning that neither behavior is technically wrong), the fact that the behavior was changed should be considered a bug. This commit changes it back to how it was before fef953a4.
2021-07-09 19:42:03 -07:00
Martin Hrubý (hrubymar10)
3fa666070b
Fix Xcode project 2021-07-09 09:32:05 +02:00
nemaara
7571fa1ec9 UtBS S8: increase turn limit 2021-07-09 02:49:50 -04:00
Martin Hrubý (hrubymar10)
a6351b0bef
Update Xcode project 2021-07-08 20:20:00 +02:00
Celtic Minstrel
346d47b64c Lua API: Fix campaign end text being untranslatable
Fixes #5928
2021-07-08 13:33:05 -04:00
Celtic Minstrel
839bcb513c Lua API: Fix side.side_name = side.side_name changing the side name
Addresses #4994
2021-07-08 13:33:05 -04:00
Celtic Minstrel
4426f9740f Lua API: Fix crash if passing an out-of-bounds side to wesnoth.interface.end_turn 2021-07-08 13:33:05 -04:00
Celtic Minstrel
c90f13cf77 Fix incorrect default in wesnoth.audio.play 2021-07-08 13:33:05 -04:00
Steve Cotton
326b4a7997 Make failure loading textdomains non-fatal
Prior to this, if any .po file included a \v (vertical tab), then the game
exited before reaching the title screen. It didn't have to be in a mainline
translation - any add-on could break the game, and would do so before the title
screen appeared, thus preventing the user from using the add-on manager or
language selection to avoid the problem.

Instead, treat a parsing error similarly to the .po file simply not existing.
Fixes #5923.

(cherry picked from commit 23a0377b56)
2021-07-07 11:25:29 +02:00
Steve Cotton
d23f072597 Add a unit test for wesnoth.current.synced_state
The edge-case of calling evaluate_single within an unsynced event was
surprising, and I'm not sure it's correct. However, as we're about to
release the 1.16 branch I think it's better to include that as a test
that the API doesn't change during the stable branch.

(cherry picked from commit f9fc806fd2)
2021-07-07 04:41:56 +02:00
Steve Cotton
b4b0c73acb Say what the error is when a broken .po file stops Wesnoth starting
Bug #5923 is that a broken .po file can make Wesnoth fail to start, not
even reaching the title screen. Additionally, the error message printed
to the console just said "*timestamp* error general:", and then missed
the details of what had broken.

This commit fixes the error message to show which add-on and which line
are causing the problem.

(cherry picked from commit eaa39d653b)
2021-07-04 22:55:36 +02:00
Elvish_Hunter
339b1d5de0 wmlscope: document external docstring directive 2021-07-04 21:09:59 +02:00
Elvish_Hunter
baa1456538 wmlscope: allow defining external docstrings for inline macros
External docstrings can be defined with the '# wmlscope: docstring' directive
2021-07-04 21:09:44 +02:00
Elvish_Hunter
3fcb9fce41 wmlscope: do not report 'INTERNAL:' macros in the macro reference 2021-07-04 21:09:26 +02:00
Nils Kneuper
4e2e832bdf updated Turkish translation 2021-07-03 19:04:59 +02:00
Nils Kneuper
8f1578faec updated Portuguese (Brazil) translation 2021-07-03 19:01:01 +02:00
Nils Kneuper
7516cd428c updated Italian translation 2021-07-03 18:59:55 +02:00
Nils Kneuper
5757bca9ee updated Spanish translation 2021-07-03 18:58:26 +02:00
Nils Kneuper
b0c73ac1b0 updated Bulgarian translation 2021-07-03 18:54:01 +02:00
Celtic Minstrel
39401aca02 Lua AI: Fix bug in ai.get_attacks() 2021-07-01 01:47:07 -04:00
Celtic Minstrel
d598014db8 Improve a deprecation message 2021-07-01 01:46:55 -04:00
Celtic Minstrel
dd94e03a84 Return nil instead of an empty string when indexing beyond the string length
Fixes #5893
2021-07-01 01:46:40 -04:00
Celtic Minstrel
6f889d98ba Fix another deprecation message 2021-07-01 01:46:26 -04:00
Gunter Labes
ed4d16c976
Remove dead code 2021-06-30 15:58:26 +02:00
Gunter Labes
aa1e62aa52
Call actually existing function
Fixes 7b2ceb8.
2021-06-30 14:27:53 +02:00
Celtic Minstrel
b3c1289a4a Add deprecation wrappers for math functions removed in Lua 5.4 2021-06-28 14:31:44 -04:00
Steve Cotton
072a67bf99 Fix an intermittent crash with keyboard input during the load screen 2021-06-28 16:28:06 +02:00
Pentarctagon
08226655d5
Remove 32-bit specific flag. 2021-06-28 09:11:44 -05:00
Pentarctagon
253aca2c32 Add rc file to VS+cmake configuration. 2021-06-28 09:10:22 -05:00
Steve Cotton
3c41b209d3 Fix whitespace from 16157e286b 2021-06-28 13:57:44 +02:00
doofus-01
4d414fa9c9
various animations (#5903)
* jinn attack animations

* fix some horse frames
2021-06-27 20:52:21 -07:00
Celtic Minstrel
767010fb52 Fix some incorrect deprecation messages 2021-06-27 19:59:39 -04:00
Gunter Labes
c5a3a506ca
Update deprecated path options 2021-06-27 11:12:12 +02:00
Nils Kneuper
4abfe7a302 updated Chinese (Traditional) translation 2021-06-27 11:09:41 +02:00
Nils Kneuper
294c242239 updated Portuguese (Brazil) translation 2021-06-26 14:29:31 +02:00
Nils Kneuper
70d2884005 updated British English translation 2021-06-26 14:27:40 +02:00
Pentarctagon
ade32fa227
Add notes to the Windows INSTALL.md instructions. 2021-06-26 01:26:01 -05:00
Celtic Minstrel
951508fd2b WC: Update deprecated uses of get_viewing_side
Addresses #5895
2021-06-25 23:43:53 -04:00
Celtic Minstrel
4fbe2bdec0 Fix [modify_side]reset_maps|view
Addresses #5897
2021-06-25 23:43:46 -04:00
Celtic Minstrel
845067d7e8 Fix wml.remove_children 2021-06-25 23:43:28 -04:00
Celtic Minstrel
16157e286b Implement shroud API deprecation wrappers that handle shroud data strings
Addresses #5885
2021-06-25 23:43:20 -04:00
Celtic Minstrel
10b59c99d0 Fix shroud parsing functions
Addresses #5885
2021-06-25 23:43:12 -04:00
Iris Morelle
00b60265ee
gui2/addon_manager: Remove broken untranslatable tooltip
This didn't actually do anything in practice anyway because GUI2
wouldn't display the stacked widget's tooltip.
2021-06-25 21:12:30 -04:00
Elvish_Hunter
8679f0573f Added a missing undef for the Sky Hunter's DIVERSION_ANIM_FILTER local macro 2021-06-25 21:38:28 +02:00
Elvish_Hunter
52a23d38cb wmlscope: match level 4 deprecated macros 2021-06-25 21:37:59 +02:00
Elvish_Hunter
e97de1706a wmllint: added names to the translatable keys tuple 2021-06-25 21:37:21 +02:00
Elvish_Hunter
cd7bffe0b2 wmllint: removed checks for arcane, spirit and defense cap special notes
These special notes now are automatically added by the engine.
2021-06-24 21:17:58 +02:00
Elvish_Hunter
6af31a3e48 wmllint: added special_note to the translatable keys tuple 2021-06-24 21:17:25 +02:00
Pentarctagon
a5dd081648 Print cmake version. 2021-06-24 12:51:43 -05:00
Pentarctagon
d62715673a Update CI branch name configuration value for 1.16. 2021-06-24 12:51:43 -05:00
Pentarctagon
b2472be6e6 Specify working cmake version to use on CI. 2021-06-24 12:51:43 -05:00
Pentarctagon
4a3020be51
Remove no longer needed HTML escaping. 2021-06-23 14:48:52 -05:00
Iris Morelle
037bdc2561
Revert "Fix change making translatable strings from elsewhere untranslatable"
This reverts commit 63e482ff61.
2021-06-23 11:46:45 -04:00
Iris Morelle
8c6a0a50cd
pot and documentation update 2021-06-23 11:40:43 -04:00
Tahsin Jahin Khalid
33b678ae2e edited out an non-existent textdomain [IoM]
Yeah, while reading the .pot file, I noticed these did not show up and saw this.
2021-06-23 10:32:06 -05:00
Iris Morelle
63e482ff61
Fix change making translatable strings from elsewhere untranslatable
Partial revert of de529cc48f.

CC #5884
2021-06-23 09:19:34 -04:00
loonycyborg
3d6707936e
pot-update and regenerate doc files 2021-06-23 10:15:36 +03:00
Celtic Minstrel
34349a4452 Remove all textdomain declarations execpt the first from the test scenario
Addresses #5884
2021-06-23 00:10:11 -04:00
Iris Morelle
0cb7b4e52b
pofix: 1.14 announcement rules for 1.14.17
[ci skip]
2021-06-22 15:53:35 -04:00
Celtic Minstrel
affcaba0b1 Fix the deprecation message for {SPECIAL_NOTES} 2021-06-20 23:14:39 -04:00
doofus-01
4e77d499db
Merge pull request #5880 from doofus-01/1.16_anims_20210620
1.16 - some naga animations
2021-06-20 17:05:15 -07:00
Gunter Labes
91b5231cf1
Update deprecated lua 2021-06-20 15:20:21 -05:00
25571 changed files with 1172604 additions and 2783785 deletions

View file

@ -1,4 +0,0 @@
---
Checks: '-*,modernize-use-nullptr,performance-unnecessary-value-param'
WarningsAsErrors: true
...

View file

@ -13,7 +13,3 @@ indent_size = 4
[*.{cpp,hpp}]
indent_style = tab
indent_size = 4
[*.lua]
indent_style = tab
indent_size = 4

4
.gitattributes vendored
View file

@ -2,8 +2,8 @@
/attic export-ignore
.gitattributes export-ignore
.gitignore export-ignore
/.github export-ignore
/changelog_entries export-ignore
.travis.yml export-ignore
RELEASE_NOTES export-ignore
# help github's language detection and syntax highlighting
*.cfg linguist-language=INI

36
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,36 @@
---
name: Bug report
about: Create a report to help us improve the game
title: ''
labels: 'bug'
assignees: ''
---
### Game and System Information
- What version of the game are you running?
- Where did you download it from? (Steam, Mac App Store, our website, built from source, etc.)
- If you're using a custom build, what compiler did you use, and what commit did you build at?
- What OS are you running?
### Describe the bug
A clear and concise description of what the bug is.
### To Reproduce
Steps to reproduce the behavior:
1. First..
2. Then...
3. Lastly...
### Expected behavior
A clear and concise description of what you expected to happen.
### Screenshots
If applicable, add screenshots to help explain your problem.
### Savefiles
If applicable, attach savefiles to help explain your problem. (To find savefiles, start Wesnoth, click on the `i` button at the bottom left corner of the title screen, and open the `Saved games` directory.)
### Additional context
Add any other context (compiler logs, console output, etc) about the problem here.

View file

@ -1,46 +0,0 @@
name: Bug Report
description: Create a bug report to help us improve the game.
labels: ['Bug']
body:
- type: textarea
id: info
attributes:
label: Game and System Information
description: |
- What version of the game are you running? (If you built wesnoth yourself, mention the exact commit)
- What OS are you running?
value: |
- **Version:**
- **OS:**
- type: textarea
id: description
attributes:
label: Description of the bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: to_reproduce
attributes:
label: Steps to reproduce the behavior
placeholder: |
1.
2.
3.
- type: textarea
id: expectation
attributes:
label: Expected behavior
description: |
A clear and concise description of what you expected to happen. If applicable, add screenshots or savefiles to help explain your problem.
To find savefiles, start Wesnoth, click on the `i` button at the bottom left corner of the title screen, and open the `Saved games` directory.
- type: textarea
id: more_info
attributes:
label: Additional context
description: Add any other context (compiler logs, console output, etc) about the problem here.

View file

@ -0,0 +1,21 @@
---
name: Feature Request
about: Request a new feature to enhance the game
title: ''
labels: 'enhancement'
assignees: ''
---
### Game and System Information
- What version of the game are you running?
- Where did you download it from? (Steam, Mac App Store, our website, built from source, etc.)
- If you're using a custom build, what compiler did you use, and what commit did you build at?
- What OS are you running?
### Describe the desired feature
Try to explain the desired end result, rather than speculating about how the feature could be implemented
### Screenshots
If applicable, add screenshots or mockups to help explain your request.

View file

@ -1,14 +0,0 @@
name: Feature Request
description: Request a new feature to enhance the game.
labels: ['Enhancement']
body:
- type: textarea
id: description
attributes:
label: Describe the desired feature
description: |
Try to explain the desired end result, rather than speculating about how the feature could be implemented.
If applicable, add screenshots or mockups to help explain your request.
validations:
required: true

View file

@ -0,0 +1,31 @@
---
name: Text Typos or Improvements
about: Any typo fixes or improvement suggestions for campaign dialog, unit descriptions,
or other game text.
title: ''
labels: Prose
assignees: ''
---
Note: The house style of Wesnoth uses a good many words and constructions that
are archaic, poetic, or dialectal. If you speak modern English as a second
language you may incorrectly read these as errors. Please see
[NotSpellingMistakes](https://wiki.wesnoth.org/NotSpellingMistakes) for a list
of things you will encounter that may look like spelling or usage errors but
are not.
Note that the mainline campaigns are now using correct typography,
including sexed quotes and en and em dashes. These will appear as three byte
sequences if you are not using a viewer that supports UTF-8.
### Text Issues: Typos, grammar mistakes, suggested improvemetns
* Is the text in English? If not, what language is it in?
* What campaign does the text appear in? If it's not in a campaign, say where it is:
* Please quote the text verbatim. You can use `**bold**` to point out the mistaken part:
* _(optional)_ What do you propose to change the text to?

View file

@ -1,42 +0,0 @@
name: Text Typos or Improvements
description: Any typo fixes or improvement suggestions for campaign dialog, unit descriptions, or other game text.
labels: ['Prose']
body:
- type: markdown
attributes:
value: >
**Note:** The house style of Wesnoth uses a good many words and constructions that are archaic, poetic,
or dialectal. If you speak modern English as a second language you may incorrectly read these as errors.
Please see [NotSpellingMistakes](https://wiki.wesnoth.org/NotSpellingMistakes) for a list of things you
will encounter that may look like spelling or usage errors but are not.
Note that the mainline campaigns are now using correct typography, including sexed quotes and en and em
dashes. These will appear as three byte sequences if you are not using a viewer that supports UTF-8.
- type: input
id: language
attributes:
label: Language
description: What language does the typo appear in?
- type: input
id: location
attributes:
label: Source
description: Where does the typo appear? If part of a campaign, specify the scenario.
validations:
required: true
- type: textarea
id: original_text
attributes:
label: Original Text
description: Quote the text verbatim. You can use `**bold**` to highlight the issue.
validations:
required: true
- type: textarea
id: new_text
attributes:
label: Proposed Change

104
.github/labeler.yml vendored
View file

@ -1,13 +1,3 @@
Achievements:
- changed-files:
- any-glob-to-any-file:
- src/achievements.hpp
- src/achievements.cpp
- src/gui/dialogs/achievements_dialog.hpp
- src/gui/dialogs/achievements_dialog.cpp
- data/achievements.cfg
- data/campaigns/*/achievements.cfg
Add-ons:
- changed-files:
- any-glob-to-any-file:
@ -44,100 +34,10 @@ Building:
- src/SConscript
- src/SConstruct
Campaign AToTB:
Campaign:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Two_Brothers/**
Campaign DW:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Dead_Water/**
Campaign DM:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Delfadors_Memoirs/**
Campaign DiD:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Descent_Into_Darkness/**
Campaign EI:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Eastern_Invasion/**
Campaign HttT:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Heir_To_The_Throne/**
Campaign LoW:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Legend_of_Wesmere/**
Campaign L:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Liberty/**
Campaign NR:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Northern_Rebirth/**
Campaign SoF:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Sceptre_of_Fire/**
Campaign SotA:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Secrets_of_the_Ancients/**
Campaign SotBE:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Son_Of_The_Black_Eye/**
Campaign THoT:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/The_Hammer_of_Thursagan/**
Campaign TRoW:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/The_Rise_Of_Wesnoth/**
Campaign TSG:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/The_South_Guard/**
Campaign Tutorial:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/tutorial/**
Campaign UtBS:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Under_the_Burning_Suns/**
Campaign WoF:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/Winds_of_Fate/**
Campaign WC:
- changed-files:
- any-glob-to-any-file:
- data/campaigns/World_Conquest/**
- data/campaigns/**/*
CMake:
- changed-files:

View file

@ -2,243 +2,160 @@ name: CI
on:
push:
branches: [ master ]
branches: [ 1.16 ]
pull_request:
branches: [ master ]
branches: [ 1.16 ]
workflow_dispatch:
jobs:
checks: # checks that don't need a wesnoth binary
runs-on: ubuntu-latest
container:
image: wesnoth/wesnoth:2404-master
options: --tty # docker create options
env:
CLICOLOR_FORCE: 1
# run after all other jobs have completed to check overall build status
discord-notification:
runs-on: ubuntu-20.04
name: Discord Notification
needs: [ubuntu-2004-scons-gcc-release-lto, ubuntu-2004-cmake-clang-debug, steam-runtime, mingw, flatpak, translations, macos-intel]
if: always()
steps:
- uses: technote-space/workflow-conclusion-action@v3
- uses: rjstone/discord-webhook-notify@v1
if: env.WORKFLOW_CONCLUSION == 'failure' && github.event_name == 'push'
with:
severity: error
webhookUrl: ${{ secrets.DISCORD_CI_WEBHOOK }}
description: |-
pusher: ${{ github.actor }}
commit: ${{ github.event.head_commit.message }}
commit url: ${{ github.event.head_commit.url }}
ubuntu-2004-scons-gcc-release-lto:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set git safe directory
if: success() || failure()
run: |
git config --global --add safe.directory '*'
- name: Check for invalid characters
if: success() || failure()
run: |
./utils/CI/check_utf8.sh
./utils/CI/utf8_bom_dog.sh
- name: Whitespace and WML indentation check
if: success() || failure()
run: ./utils/CI/fix_whitespace.sh; git status; git diff --exit-code
- name: WML missing images check
if: success() || failure()
run: utils/CI/check_wml_images.sh
- name: Run luacheck
if: success() || failure()
run: luacheck .
- name: Doxygen check
if: success() || failure()
run: doxygen doc/doxygen/Doxyfile
copyright: # check takes a bit longer and does not need to run in docker (sound/music only)
runs-on: ubuntu-latest
steps:
- { uses: actions/checkout@v4, with: { fetch-depth: 50 } }
- name: Sound/Music copyright check
run: ./update_copyrights
ubuntu:
strategy:
fail-fast: false
matrix:
include:
# the check for WML tests below may need to be adjusted if configurations are changed
- { cfg: debug, tool: scons, cc: gcc, cxx: g++, std: 17, lto: false, sys_lua: false }
- { cfg: release, tool: cmake, cc: gcc, cxx: g++, std: 20, lto: true, sys_lua: false }
- { cfg: release, tool: cmake, cc: clang, cxx: clang++, std: 17, lto: true, sys_lua: true }
runs-on: ubuntu-latest
container:
image: wesnoth/wesnoth:2404-master
options: --tty # docker create options
env:
TOOL: ${{ matrix.tool }}
CFG: ${{ matrix.cfg }}
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
CXX_STD: ${{ matrix.std }}
LTO: ${{ matrix.lto }}
SYS_LUA: ${{ matrix.sys_lua }}
CLICOLOR_FORCE: 1
SDL_VIDEODRIVER: dummy
steps:
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
# 1) wesnothd and campaignd should be buildable without SDL2 being present
# 2) boost is installed via apt as well as built and installed into /usr/local (for _GLIBCXX_DEBUG support in boost program options)
# 3) mariadbpp currently has a deprecation warning that causes strict builds to fail
# scons doesn't build it for the wesnoth client and the boost tests, but cmake apparently does
- name: Build wesnoth, wesnothd, campaignd and unit tests
id: build # needed to check step outcome
run: |
case $TOOL in
scons)
build() {
ldconfig
scons "$@" build="$CFG" ctool="$CC" cxxtool="$CXX" cxx_std="$CXX_STD" \
extra_flags_config="-pipe" forum_user_handler=true \
nls=false enable_lto="$LTO" system_lua="$SYS_LUA" force_color=true \
jobs=2 --debug=time glibcxx_debug=true glibcxx_assertions=true compile_db=true
}
build strict=true wesnoth boost_unit_tests
build cdb
# disable all warnings since we have coverage on them in a standard build, and clang-tidy
# triggers false positive compiler warnings that clang itself won't
run-clang-tidy -quiet -use-color -j 2 -extra-arg="-w" -warnings-as-errors='*' '^(?!.*src/modules/|.*build/)'
apt remove -y -qq libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev
build strict=false wesnothd campaignd
;;
cmake)
build() {
ldconfig
cmake "$@" -DCMAKE_BUILD_TYPE="$CFG" -DCXX_STD="$CXX_STD" \
-DEXTRA_FLAGS_CONFIG="-pipe" -DENABLE_MYSQL=true \
-DENABLE_NLS=false -DENABLE_LTO="$LTO" -DFORCE_COLOR_OUTPUT=true -DLTO_JOBS=2 \
-DENABLE_SYSTEM_LUA="$SYS_LUA -DCLANG_TIDY=true" .
}
rm -R /usr/local/lib/cmake
rm /usr/local/lib/libboost*
rm -R /usr/local/include/boost
build -DENABLE_GAME=true -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=true -DENABLE_STRICT_COMPILATION=false
make conftests
make VERBOSE=1 -j2
apt remove -y -qq libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev
build -DENABLE_GAME=false -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=false -DENABLE_STRICT_COMPILATION=false
make VERBOSE=1 -j2
;;
esac
- name: Check path options
if: success() || steps.build.outcome == 'success'
run: |
./wesnoth --version
for opt in data userdata usercache
do
output=$(./wesnoth --nobanner --"$opt"-path)
if [ "$output" = "" ]; then printf 'option --%s-path prints nothing to stdout!\n' "$opt" >&2; exit 1; fi
printf '%s-path: %s\n' "$opt" "$output"
done
- name: WML validation
# only run on release builds (takes ~10 times as long on debug); since there are multiple release builds
# but running the following tests multiple times doesn't make much sense use cc==clang as the check
if: matrix.cc == 'clang' && (success() || steps.build.outcome == 'success')
run: ./utils/CI/schema_validation.sh
- name: Run WML tests
# only run on release builds (takes ~6 times as long on debug)
if: matrix.cc == 'clang' && (success() || steps.build.outcome == 'success')
run: ./run_wml_tests -v -v -g -c -t 20 -bt 1000 -a=--userdata-dir=ud
- name: Upload userdata files from WML unit tests (logs, replays)
if: matrix.cc == 'clang' && (success() || failure())
uses: actions/upload-artifact@v4
with:
name: WMLTest-userdata-Linux
path: ud
- name: Run play tests
if: success() || steps.build.outcome == 'success'
run: ./utils/CI/play_test_executor.sh
- name: Run MP tests
if: success() || steps.build.outcome == 'success'
run: ./utils/CI/mp_test_executor.sh
- name: Run unit tests
if: success() || steps.build.outcome == 'success'
run: ./run_boost_tests
submodules: "recursive"
- name: Ubuntu 20.04
run: |
export BRANCH=master
export IMAGE=2004
export NLS=false
export TOOL=scons
export CC=gcc
export CXX=g++
export CXX_STD=17
export CFG=release
export LTO=true
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
ubuntu-2004-cmake-clang-debug:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Ubuntu 20.04
run: |
export BRANCH=master
export IMAGE=2004
export NLS=false
export TOOL=cmake
export CC=clang
export CXX=clang++
export CXX_STD=17
export CFG=debug
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
steam-runtime:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Steam Runtime
run: |
version=$(sed -n 's/#define VERSION "\(.*\)"/\1/p' src/wesconfig.h)
cd utils/dockerbuilds && ./make_steam_build
tar -cf "steambuild-$version.tar" steambuild
export BRANCH=master
export IMAGE=steamrt
export NLS=false
export TOOL=scons
export CC=gcc-9
export CXX=g++-9
export CXX_STD=17
export CFG=release
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Steam-Linux
path: utils/dockerbuilds/steambuild-*.tar
path: |
~/steambuild-*.tar
mingw:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: MinGW Crosscompile
run: |
version=$(sed -n 's/#define VERSION "\(.*\)"/\1/p' src/wesconfig.h)
git archive --format=tar HEAD > "wesnoth-$version.tar"
tar -rf "wesnoth-$version.tar" src/modules/
bzip2 "wesnoth-$version.tar"
export BRANCH=master
export IMAGE=mingw
export NLS=false
export TOOL=scons
export CC=gcc
export CXX=g++
export CXX_STD=17
export CFG=release
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
cd utils/dockerbuilds && ./make_mingw_build
mv mingwbuild/wesnoth*-win64.exe "wesnoth-$version-win64.exe"
- name: Upload Source
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Source
path: wesnoth-*.tar.bz2
- name: Upload Windows-Installer
uses: actions/upload-artifact@v4
with:
name: Windows-Installer
path: utils/dockerbuilds/wesnoth-*-win64.exe
name: Source-And-Windows-Installer
path: |
~/wesnoth-*.tar.bz2
~/wesnoth-*-win64.exe
flatpak:
runs-on: ubuntu-latest
container:
image: wesnoth/wesnoth:flatpak-master
options: --tty --cap-add=ALL --privileged # docker create options
runs-on: ubuntu-20.04
steps:
- { uses: actions/checkout@v4, with: { submodules: "recursive", fetch-depth: 500, fetch-tags: true } }
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Flatpak
run: |
# write to an ignored filename so the build is not marked as modified
jq '.modules |= map(select(.name == "wesnoth").sources[0]={type:"dir",path:"."})' packaging/flatpak/org.wesnoth.Wesnoth.json > wesnoth-manifest.json
git config --global --add safe.directory "$PWD"
branch=ci-$(git describe || git log -n 1 --format=%h) # if git describe fails fall back to the commit hash
flatpak-builder --force-clean --default-branch="$branch" --disable-rofiles-fuse --jobs=2 wesnoth-app wesnoth-manifest.json
flatpak build-export export wesnoth-app "$branch"
flatpak build-bundle export wesnoth.flatpak org.wesnoth.Wesnoth "$branch" --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
- name: Upload flatpak bundle
uses: actions/upload-artifact@v4
with:
name: Flatpak-Bundle
path: wesnoth.flatpak
export BRANCH=master
export IMAGE=flatpak
export NLS=false
export TOOL=scons
export CC=gcc
export CXX=g++
export CXX_STD=17
export CFG=release
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
translations:
runs-on: ubuntu-latest
container:
image: wesnoth/wesnoth:2404-master
env:
LANGUAGE: en_US.UTF-8
LANG: en_US.UTF-8
LC_ALL: en_US.UTF-8
CLICOLOR_FORCE: 1
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
@ -247,26 +164,27 @@ jobs:
- name: Translations
run: |
cmake -DENABLE_NLS=true -DENABLE_GAME=false -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=false -DENABLE_POT_UPDATE_TARGET=TRUE .
make update-po4a-man; echo "Ran make update-po4a-man"
make update-po4a-manual; echo "Ran make update-po4a-manual"
make pot-update; echo "Ran make pot-update"
make mo-update; echo "Ran make mo-update"
make clean
scons translations build=release --debug=time nls=true jobs=2; echo "Ran scons translations"
scons pot-update; echo "Ran scons pot-update"
scons update-po4a; echo "Ran scons update-po4a"
scons manual
export BRANCH=master
export IMAGE=2004
export NLS=only
export TOOL=scons
export CC=gcc
export CXX=g++
export CXX_STD=17
export CFG=release
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
macos-intel:
strategy:
fail-fast: false
matrix:
cfg: [ Release ]
runs-on: macos-13
cfg: [ Debug ]
runs-on: macos-12
env:
CFG: ${{ matrix.cfg }}
DEVELOPER_DIR: /Applications/Xcode_13.1.app/Contents/Developer
steps:
- uses: actions/checkout@v4
@ -288,7 +206,6 @@ jobs:
[ -x "build/$CFG/unit_tests" ] || { printf 'Failed to build unit test executable!\n' >&2; exit 1; }
- name: Create disk image
working-directory: projectfiles/Xcode
continue-on-error: true # allow failures since this is not essential and it does fail spuriously (hdiutil: create failed - Resource busy)
run: hdiutil create -volname "Wesnoth_$CFG" -fs 'HFS+' -srcfolder "build/$CFG" -ov -format UDBZ "Wesnoth_${CFG}.dmg"
- name: Upload disk image
uses: actions/upload-artifact@v4
@ -297,95 +214,4 @@ jobs:
path: projectfiles/Xcode/Wesnoth_${{ matrix.cfg }}.dmg
- name: Run WML tests
if: matrix.cfg == 'Release'
run: ./run_wml_tests -g -c -t 30 -bt 350 -p "projectfiles/Xcode/build/$CFG/The Battle for Wesnoth.app/Contents/MacOS/The Battle for Wesnoth" -a=--userdata-dir="$PWD/ud"
- name: Upload userdata files from WML unit tests (logs, replays)
if: matrix.cfg == 'Release' && (success() || failure())
uses: actions/upload-artifact@v4
with:
name: WMLTest-userdata-MacOS
path: ud
- name: Run unit tests
run: ./run_boost_tests --path=projectfiles/Xcode/build/"$CFG" --executable=unit_tests
windows:
strategy:
fail-fast: false
matrix:
cfg: [Release]
env:
CFG: ${{ matrix.cfg }}
VCPKG_FEATURE_FLAGS: dependencygraph
permissions:
contents: write # for dependency graph
defaults:
run:
shell: cmd
runs-on: windows-latest
steps:
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
- name: Make version of the runner image (https://github.com/actions/runner-images/releases) accessible to expression
run: echo IMAGE_VERSION=%ImageVersion%>> %GITHUB_ENV%
- name: Cache object files
id: windows-cache
uses: actions/cache@v4
with:
path: vcpkg_installed # vcpkg generates this dir next to vcpkg.json
# the final key part needs to be changed if anything in the build process changes that is not already included here
key: win-cache-master-${{ matrix.cfg }}-${{ env.IMAGE_VERSION }}-${{ hashFiles('vcpkg.json') }}-0001
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Run cmake
run: cmake -DCMAKE_BUILD_TYPE=%CFG% -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true
-DENABLE_TESTS=true -DENABLE_MYSQL=false -DENABLE_NLS=false
-DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_INSTALL_OPTIONS=--debug
-DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_GENERATOR_PLATFORM=x64 -G "Visual Studio 17 2022" .
- name: Build wesnoth, wesnothd, campaignd and unit tests
run: MSBuild.exe wesnoth.sln -p:Configuration=%CFG%
- name: Run WML unit tests
if: matrix.cfg == 'Release'
run: python run_wml_tests -v -g -c -t 20 -p %CFG%/wesnoth.exe -a=--userdata-dir=ud
- name: Upload userdata files from WML unit tests (logs, replays)
if: matrix.cfg == 'Release' && (success() || failure())
uses: actions/upload-artifact@v4
with:
name: WMLTest-userdata-Windows
path: ud
# run after all other jobs have completed to check overall build status
notification:
runs-on: ubuntu-latest
needs: [checks, copyright, ubuntu, steam-runtime, mingw, flatpak, translations, macos-intel, windows]
if: failure() && github.event_name == 'push'
steps:
- name: Discord Notification
uses: rjstone/discord-webhook-notify@v1
with:
severity: error
webhookUrl: ${{ secrets.DISCORD_CI_WEBHOOK }}
description: |-
pusher: ${{ github.actor }}
commit: ${{ github.event.head_commit.message }}
commit url: ${{ github.event.head_commit.url }}
- name: Prepare message
if: github.event_name == 'push'
env:
MSG: ${{ github.event.head_commit.message }}
run: |
printf COMMIT_SUBJECT=%s "${MSG}" | head -n 1 >> "$GITHUB_ENV"
- name: IRC Notification
uses: rectalogic/notify-irc@v1
with:
channel: ${{ vars.IRC_CHANNEL }}
server: ${{ vars.IRC_SERVER }}
nickname: ${{ vars.IRC_NICK }} # is also used for sasl username
sasl_password: ${{ secrets.IRC_SASL_PASSWORD }}
message: "❌ ${{ github.workflow }} workflow run ${{ github.run_number }} failed on \x0306${{ github.ref_name }}\x0F: ${{ env.COMMIT_SUBJECT }} by \x0315${{ github.actor }}\x0F: \x0302${{ github.event.head_commit.url }}\x0F"
run: ./run_wml_tests -g -c -t 30 -p "projectfiles/Xcode/build/$CFG/The Battle for Wesnoth.app/Contents/MacOS/The Battle for Wesnoth"

145
.github/workflows/ci-scripts/docker.sh vendored Executable file
View file

@ -0,0 +1,145 @@
#!/bin/bash
echo "Using docker:"
echo "BRANCH: $BRANCH"
echo "IMAGE: $IMAGE"
echo "NLS: $NLS"
echo "TOOL: $TOOL"
echo "CC: $CC"
echo "CXX: $CXX"
echo "CXX_STD: $CXX_STD"
echo "CFG: $CFG"
echo "LTO: $LTO"
echo "CACHE_DIR: $CACHE_DIR"
# set the fake display for unit tests
export DISPLAY=:99.0
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1024x768x24
error() { printf '%s\n' "$*"; }
die() { error "$*"; exit 1; }
# print given message ($1) and execute given command; sets EXIT_VAL on failure
execute() {
local message=$1; shift
printf 'Executing %s\n' "$message"
if "$@"; then
: # success
else
EXIT_VAL=$?
echo "********** !FAILURE! **********"
echo "********** !FAILURE! **********"
echo "********** !FAILURE! **********"
echo "********** !FAILURE! **********"
echo "********** !FAILURE! **********"
error "$message failed! ($*)"
fi
}
# in order:
# check for proper indentation of WML
# check for trailing whitespace in hpp|cpp files
# check for trailing whitespace in lua files
checkindent() {
./utils/CI/fix_whitespace.sh
git status
(( $(git status --short | wc -l) == 0 ))
}
EXIT_VAL=-1
# remove temp dockerfile so it doesn't get picked up by `git status`
rm utils/dockerbuilds/CI/Dockerfile-CI-2004-master
if [ "$NLS" == "only" ]; then
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
./utils/CI/check_utf8.sh || exit 1
./utils/CI/utf8_bom_dog.sh || exit 1
echo "Checked for invalid characters"
cmake -DENABLE_NLS=true -DENABLE_GAME=false -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=false -DENABLE_POT_UPDATE_TARGET=TRUE .
make update-po4a-man || exit 1
echo "Ran cmake pdate-po4a-man"
make update-po4a-manual || exit 1
echo "Ran make update-po4a-manual"
make pot-update || exit 1
echo "Ran make pot-update"
make mo-update || exit 1
echo "Ran make mo-update"
make clean
scons translations build=release --debug=time nls=true jobs=2 || exit 1
echo "Ran scons translations"
scons pot-update || exit 1
echo "Ran scons pot-update"
scons update-po4a || exit 1
echo "Ran scons update-po4a"
scons manual || exit 1
exit 0
elif [ "$IMAGE" == "flatpak" ]; then
# docker's --volume means the directory is on a separate filesystem
# flatpak-builder doesn't support this
# therefore manually move stuff between where flatpak needs it and where CI caching can see it
rm -R .flatpak-builder/*
cp -R "$CACHE_DIR"/. .flatpak-builder/
jq '.modules[2].sources[0]={"type":"dir","path":"/home/wesnoth-CI"} | ."build-options".env.FLATPAK_BUILDER_N_JOBS="2"' packaging/flatpak/org.wesnoth.Wesnoth.json > utils/dockerbuilds/CI/org.wesnoth.Wesnoth.json
flatpak-builder --ccache --force-clean --disable-rofiles-fuse wesnoth-app utils/dockerbuilds/CI/org.wesnoth.Wesnoth.json
EXIT_VAL=$?
rm -R "$CACHE_DIR"/*
cp -R .flatpak-builder/. "$CACHE_DIR"/
chmod -R 777 "$CACHE_DIR"/
exit $EXIT_VAL
else
if [ "$TOOL" == "cmake" ]; then
export CCACHE_MAXSIZE=3000M
export CCACHE_COMPILERCHECK=content
export CCACHE_DIR="$CACHE_DIR"
cmake -DCMAKE_BUILD_TYPE="$CFG" -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=true -DENABLE_NLS="$NLS" \
-DEXTRA_FLAGS_CONFIG="-pipe" -DENABLE_STRICT_COMPILATION=true -DENABLE_LTO="$LTO" -DLTO_JOBS=2 -DENABLE_MYSQL=true \
-DCXX_STD="$CXX_STD" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache . && \
make VERBOSE=1 -j2
EXIT_VAL=$?
ccache -s
ccache -z
else
scons wesnoth wesnothd campaignd boost_unit_tests build="$CFG" \
ctool="$CC" cxxtool="$CXX" cxx_std="$CXX_STD" \
extra_flags_config="-pipe" strict=true forum_user_handler=true \
nls="$NLS" enable_lto="$LTO" jobs=2 --debug=time
EXIT_VAL=$?
fi
fi
if [ $EXIT_VAL != 0 ]; then
exit $EXIT_VAL
fi
# rename debug executables to what the tests expect
if [ "$CFG" == "debug" ]; then
mv wesnoth-debug wesnoth
mv wesnothd-debug wesnothd
mv campaignd-debug campaignd
mv boost_unit_tests-debug boost_unit_tests
fi
execute "WML validation" ./utils/CI/schema_validation.sh
execute "Whitespace and WML indentation check" checkindent
execute "Doxygen check" ./utils/CI/doxygen-check.sh
execute "WML tests" ./run_wml_tests -g -c -t 20
execute "Play tests" ./utils/CI/play_test_executor.sh
execute "MP tests" ./utils/CI/play_test_executor.sh
execute "Boost unit tests" ./utils/CI/test_executor.sh
if [ -f "errors.log" ]; then
error $'\n*** \n*\n* Errors reported in wml unit tests, here is errors.log...\n*\n*** \n'
cat errors.log
fi
mv wesnoth "$CACHE_DIR"/wesnoth
mv wesnothd "$CACHE_DIR"/wesnothd
exit $EXIT_VAL

45
.github/workflows/ci-scripts/ubuntu.sh vendored Executable file
View file

@ -0,0 +1,45 @@
#!/bin/bash
echo "Using linux:"
echo "BRANCH: $BRANCH"
echo "IMAGE: $IMAGE"
echo "NLS: $NLS"
echo "TOOL: $TOOL"
echo "CC: $CC"
echo "CXX: $CXX"
echo "CXX_STD: $CXX_STD"
echo "CFG: $CFG"
echo "LTO: $LTO"
echo "CACHE_DIR: $CACHE_DIR"
version=$(grep '#define VERSION' src/wesconfig.h | cut -d\" -f2)
echo "Found version: $version"
if [ "$IMAGE" == "steamrt" ]; then
cd utils/dockerbuilds/
./make_steam_build || exit 1
tar -cf steambuild.tar steambuild
mv steambuild.tar ~/steambuild-$version.tar
elif [ "$IMAGE" == "mingw" ]; then
git archive --format=tar HEAD > wesnoth.tar
bzip2 -z wesnoth.tar
mv wesnoth.tar.bz2 ~/wesnoth-$version.tar.bz2
cd utils/dockerbuilds/
./make_mingw_build || exit 1
cd mingwbuild
mv ./wesnoth*-win64.exe ~/wesnoth-$version-win64.exe
else
# create temp docker file to pull the pre-created images
echo FROM wesnoth/wesnoth:"$IMAGE"-"$BRANCH" > utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH"
echo COPY ./ /home/wesnoth-CI/ >> utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH"
echo WORKDIR /home/wesnoth-CI >> utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH"
docker build -t wesnoth-repo:"$IMAGE"-"$BRANCH" -f utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH" .
docker run --cap-add=ALL --privileged \
--volume ~/build-cache:"$CACHE_DIR" \
--env BRANCH --env IMAGE --env NLS --env TOOL --env CC --env CXX \
--env CXX_STD --env CFG --env LTO --env CACHE_DIR \
wesnoth-repo:"$IMAGE"-"$BRANCH" ./.github/workflows/ci-scripts/docker.sh
fi

View file

@ -1,67 +0,0 @@
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
workflow_dispatch:
jobs:
analyze:
name: Analyze
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners
# Consider using larger runners for possible analysis time improvements.
runs-on: ubuntu-24.04
timeout-minutes: 360
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'cpp', 'python', 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]
# Use only 'java' to analyze code written in Java, Kotlin or both
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- { name: Checkout repository, uses: actions/checkout@v4, with: { submodules: "recursive" } }
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
- name: Install dependencies
if: matrix.language == 'cpp'
run: |
utils/autorevision.sh -t h > src/revision.h
sudo apt update
sudo apt install scons libboost-system1.83-dev libboost-filesystem1.83-dev libboost-iostreams1.83-dev \
libboost-serialization1.83-dev libboost-locale1.83-dev libboost-regex1.83-dev libboost-random1.83-dev \
libboost-program-options1.83-dev libboost-thread1.83-dev libboost-context1.83-dev libboost-test-dev \
libboost-coroutine1.83-dev libboost-graph1.83-dev libasio-dev libsdl2-dev libsdl2-image-dev \
libsdl2-mixer-dev libvorbis-dev libpango1.0-dev libssl-dev libcurl4-openssl-dev liblua5.4-dev
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

View file

@ -1,88 +0,0 @@
name: Image metadata check CI
on:
push:
branches: [ master ]
paths: [ '**.webp', '**.png', '**.jpg', '**.jpeg' ]
pull_request:
paths: [ '**.webp', '**.png', '**.jpg', '**.jpeg' ]
permissions:
contents: read
jobs:
build:
name: Image Metadata
runs-on: ubuntu-latest
env:
BASE_SHA: ${{ github.event_name == 'push' && github.event.before || github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event_name == 'push' && github.event.after || github.event.pull_request.head.sha }}
steps:
- name: exiftool installation
run: |
sudo apt-get install --assume-yes exiftool
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: check image EXIF metadata
run: |
mapfile -t image_files < <(git diff --name-only --diff-filter=d "$BASE_SHA" "$HEAD_SHA" | grep -E '\.(webp|je?pg)$')
# cycle through the changed image files, make sure they have the right fields
for file in "${image_files[@]}"; do
# check Artist tag, fail if missing
artist="$(exiftool -p '$Artist' "$file")"
if [ "$artist" ]; then
printf 'Artist tag in %s is %s\n' "$file" "$artist"
else
printf 'no Artist EXIF tag in %s\n' "$file"
exit 1
fi
# check Copyright tag, fail if missing or wrong type
copyright="$(exiftool -p '$Copyright' "$file")"
case $copyright in
'GNU GPL v2+'|'CC BY-SA 4.0'|CC0)
printf 'Copyright tag in %s is %s\n' "$file" "$copyright"
;;
'')
printf 'no Copyright EXIF tag in %s\n' "$file"
exit 1
;;
*)
printf 'Copyright tag %s in file %s is not an accepted license! Must be one of: "GNU GPL v2+", "CC BY-SA 4.0", "CC0"\n' "$copyright" "$file"
exit 1
;;
esac
done
- name: check png XMP metadata
run: |
mapfile -t image_files < <(git diff --name-only --diff-filter=d "$BASE_SHA" "$HEAD_SHA" | grep -E '\.png$')
# cycle through the changed image files, make sure they have the right fields
for file in "${image_files[@]}"; do
# check Creator tag, fail if missing
artist="$(exiftool -p '$XMP:Creator' "$file")"
if [ "$artist" ]; then
printf 'Creator tag in %s is %s\n' "$file" "$artist"
else
printf 'no Creator XMP tag in %s\n' "$file"
exit 1
fi
# check Rights tag, fail if missing or wrong type
copyright="$(exiftool -p '$XMP:Rights' "$file")"
case $copyright in
'GNU GPL v2+'|'CC BY-SA 4.0'|CC0)
printf 'Rights tag in %s is %s\n' "$file" "$copyright"
;;
'')
printf 'no Rights XMP tag in %s\n' "$file"
exit 1
;;
*)
printf 'Rights tag %s in file %s is not an accepted license! Must be one of: "GNU GPL v2+", "CC BY-SA 4.0", "CC0"\n' "$copyright" "$file"
exit 1
;;
esac
done

View file

@ -1,45 +0,0 @@
name: IRC Notification
on:
push:
pull_request_target:
types: [ opened, closed, reopened ]
issues:
types: [ opened, closed, reopened ]
# create: # creation also gets mentioned when pushing
delete:
jobs:
notify:
if: vars.IRC_CHANNEL != '' # skip if not set up (like in a fork for example)
runs-on: ubuntu-latest
steps:
- name: Prepare message
if: github.event_name == 'push'
env:
MSG: ${{ github.event.head_commit.message }}
run: |
printf COMMIT_SUBJECT=%s "${MSG}" | head -n 1 >> "$GITHUB_ENV"
- uses: rectalogic/notify-irc@v1
env: { COLOR: "\x03", BLUE: "02", PURPLE: "06", ACTOR: "\x0315${{ github.actor }}\x03" }
with:
channel: ${{ vars.IRC_CHANNEL }}
server: ${{ vars.IRC_SERVER }}
nickname: ${{ vars.IRC_NICK }} # is also used for sasl username
sasl_password: ${{ secrets.IRC_SASL_PASSWORD }}
# See https://docs.github.com/en/actions/learn-github-actions/expressions
# github context: https://docs.github.com/en/actions/learn-github-actions/contexts#github-context
# github.event data: https://docs.github.com/en/webhooks-and-events/webhooks/webhook-events-and-payloads
message: >-
${{ (github.event_name == 'push' &&
format('{1} {2} {0}{3}{4}{0}: {5}: {0}{6}{7}{0}', env.COLOR, env.ACTOR,
(github.event.created && (github.event.tag && 'tagged' || 'created')) || (github.event.deleted && 'deleted') || (github.event.forced && 'force-pushed to') || 'pushed to',
env.PURPLE, github.ref_name, env.COMMIT_SUBJECT, env.BLUE, github.event.compare)
) || (github.event_name == 'pull_request_target' &&
format('{1} {2} PR #{3} for {0}{4}{5}{0}: {6}: {0}{7}{8}{0}', env.COLOR, env.ACTOR, github.event.action, github.event.number, env.PURPLE, github.base_ref, github.event.pull_request.title, env.BLUE, github.event.pull_request.html_url)
) || (github.event_name == 'issues' &&
format('{1} {2} issue {0}{3}#{4}{0}: {5}: {0}{6}{7}{0}', env.COLOR, env.ACTOR, github.event.action, env.PURPLE, github.event.issue.number, github.event.issue.title, env.BLUE, github.event.issue.html_url)
) || ((github.event_name == 'create' || github.event_name == 'delete') &&
format('{1} {2}d {3} {0}{4}{5}{0}', env.COLOR, env.ACTOR, github.event_name, github.event.ref_type, env.PURPLE, github.event.ref)
)
}}
_debug: ${{ toJSON(github) }}

View file

@ -1,78 +0,0 @@
name: Map Diff
on:
pull_request_target:
paths:
- '**.map'
jobs:
comment-map-diff:
permissions:
pull-requests: write
continue-on-error: true
runs-on: ubuntu-20.04
defaults:
run:
working-directory: utils/wesnoth-map-diff
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- name: Package install
run: npm install
- name: Package build
run: npm run build:prod
- name: Get maps diff
id: get-maps-diff
env:
SHA: ${{ github.event.pull_request.head.sha }}
run: |
sudo apt-get -y -q install pngquant
comment_body=""
log() { printf '\e[1m%s\e[m\n' "$*"; } # write log message in bold
## Get changed maps
git fetch --depth=1 origin "$SHA"
mapfile -t map_paths < <(git diff --name-only HEAD "$SHA" | grep '\.map$')
for map_path in "${map_paths[@]}"
do
## Get new map version
log "Check out $map_path from $SHA..."
new_map=${map_path##*/}
git show "$SHA":"$map_path" > "$new_map"
log "Generate map diff image for $map_path..."
node build/index.js "../../$map_path" "$new_map" diff_image.png
identify diff_image.png
log 'Compress image...'
pngquant --force --output diff_image.png diff_image.png
identify diff_image.png
log 'Uploading diff_image.png...'
json=$(curl -s -F image=@diff_image.png https://api.imgur.com/3/upload | tee /dev/stderr) || continue
log 'Generating HTML comment...'
html=$(jq -r --arg path "$map_path" 'if .data.link != null
then @html "<h3>\($path)</h3><img src=\"\(.data.link)\" /> <br />"
elif has("errors") then .errors[].status | halt_error
else "Unexpected JSON structure!\n" | halt_error end' <<< "$json") || continue
comment_body+=$html
done
printf 'COMMENT_BODY=%s\n' "$comment_body" >> "$GITHUB_OUTPUT"
- name: Find comment
uses: peter-evans/find-comment@v2
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
- name: Add comment
uses: peter-evans/create-or-update-comment@v3
with:
issue-number: ${{ github.event.pull_request.number }}
comment-id: ${{ steps.fc.outputs.comment-id }}
edit-mode: replace
body: ${{ steps.get-maps-diff.outputs.COMMENT_BODY }}

18
.gitignore vendored
View file

@ -19,15 +19,6 @@ uninstall.cmake
CMakeCache.txt
install_manifest.txt
out/**/*
CTestTestfile.cmake
DartConfiguration.tcl
Testing/*
doc/CTestTestfile.cmake
doc/design/CTestTestfile.cmake
doc/man/CTestTestfile.cmake
doc/manual/CTestTestfile.cmake
src/CTestTestfile.cmake
src/Testing/
# scons
.scons-option-cache
@ -114,6 +105,7 @@ tags
/create_images*
/wesmage*
pgo_data/
src/modules/lua/
# build results etc.
wesnoth_zip
@ -127,7 +119,6 @@ wesnoth.plg
*.exe
*.dll
*.so
compile_commands.json
# library files
.libs
@ -147,7 +138,6 @@ src/test
error*.log
boost_test_result.xml
*build*.sh
boost_tests.log
# translations
locales
@ -166,8 +156,6 @@ po/**/Makefile*
data/tools/unit_tree/**/files
data/tools/unit_tree/**/reports
data/tools/unit_tree/**/Locale
data/tools/macro_reference.html
about.wiki
# doc
doc/doxygen/html
@ -222,7 +210,3 @@ config.h
callgrind.out.*
data/dist
clean.sh
widgets_tested.log
# clangd cache
.cache/clangd

3
.gitmodules vendored
View file

@ -2,6 +2,3 @@
path = src/modules/mariadbpp
url = https://github.com/viaduck/mariadbpp.git
ignore = untracked
[submodule "src/modules/lua"]
path = src/modules/lua
url = https://github.com/lua/lua.git

View file

@ -1,15 +0,0 @@
-- ignore line length warnings
max_line_length=false
max_code_line_length=false
max_string_line_length=false
max_comment_line_length=false
-- show the warning/error codes as well
codes=true
-- don't show files with no issues
quiet=1
-- don't show undefined variable usage
-- there are thousands of warnings here because luacheck is unaware of Wesnoth's lua environment and has no way to check which have been loaded
global=false
-- don't show unused variables
unused=false
exclude_files={"src/modules/lua/testes/*.lua"}

View file

@ -1,10 +1,9 @@
# set minimum version
cmake_minimum_required(VERSION 3.14)
# set minimum version
cmake_minimum_required(VERSION 3.7)
project(wesnoth)
include(CheckCXXCompilerFlag)
include(CTest)
# use our own version of FindBoost.cmake and other Find* scripts
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
@ -52,27 +51,7 @@ option(ENABLE_MYSQL "Enable building MP/add-ons servers with mysql support" OFF)
option(ENABLE_TESTS "Build unit tests")
option(ENABLE_NLS "Enable building of translations" ${ENABLE_GAME})
set(BOOST_VERSION "1.67")
if(NOT WIN32)
set(Lua_FIND_VERSION_MAJOR 5)
set(Lua_FIND_VERSION_MINOR 4)
option(ENABLE_SYSTEM_LUA "Enable use of system Lua ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR} (compiled as C++)" OFF)
endif()
if(ENABLE_SYSTEM_LUA)
set(Lua_FIND_VERSION_EXACT ON)
set(Lua_FIND_VERSION_COUNT 2)
include(FindLua)
if(NOT LUA_FOUND)
message(FATAL_ERROR "Lua ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR} C++ not found. Try setting 'LUA_DIR'.")
endif()
else()
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/src/modules/lua/.git")
message(FATAL_ERROR "Lua submodule does not exist. You must run 'git submodule update --init --recursive' to initialize it.")
else()
message("-- Lua submodule found.")
endif()
endif()
set(BOOST_VERSION "1.66")
# set what std version to use
if(NOT CXX_STD)
@ -87,24 +66,32 @@ set(CMAKE_CXX_EXTENSIONS OFF)
find_package(OpenSSL 1.0 REQUIRED)
if(APPLE)
find_library(APPKIT_LIBRARY AppKit REQUIRED)
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
find_library(IOKIT_LIBRARY IOKit REQUIRED)
find_library(SECURITY_LIBRARY Security REQUIRED)
endif()
find_package(Boost ${BOOST_VERSION} REQUIRED COMPONENTS iostreams program_options regex system thread random coroutine locale filesystem graph)
find_package(Boost ${BOOST_VERSION} REQUIRED COMPONENTS iostreams program_options regex system thread random coroutine locale filesystem)
find_package(ICU REQUIRED COMPONENTS data i18n uc)
# no, gettext executables are not required when NLS is deactivated
find_package(Gettext)
find_package(Python)
find_package(X11)
if(NOT WIN32 AND NOT ENABLE_SYSTEM_LUA)
# Use the safer `mkstemp' instead of `tmpnam' on POSIX systems.
add_definitions(-DLUA_USE_POSIX)
if(NOT WIN32)
# needed to get some SDL2 defines in... (as of rev31694 -D_GNU_SOURCE=1 is required!)
if(NOT MINGW)
set(SDL2_CONFIG "sdl2-config" CACHE STRING "Path to sdl2-config script")
exec_program(${SDL2_CONFIG} ARGS "--cflags" OUTPUT_VARIABLE SDL2_CFLAGS)
add_definitions(${SDL2_CFLAGS})
else()
# equivalent to sdl2-config --cflags --libs
# since cmake cannot execute sdl2-config in msys2 shell
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -I/mingw64/include/SDL2 -Dmain=SDL_main -L/mingw64/lib -lmingw32 -lSDL2main -lSDL2 -mwindows)
endif()
# Use the safer `mkstemp' instead of `tmpnam' on POSIX systems.
add_definitions(-DLUA_USE_POSIX)
endif()
#check for some compiler/arch specific things and export defines accordingly...
@ -167,11 +154,8 @@ option(ENABLE_PEDANTIC_COMPILATION "Sets the pedantic compilation mode" OFF)
option(ENABLE_DEBUG_WINDOW_LAYOUT "Add the debug option to allow the generation of debug layout files in dot format" OFF)
option(ENABLE_DESIGN_DOCUMENTS "Enables the generation of design documents, and has additional dependencies" OFF)
option(ENABLE_LTO "Sets Link Time Optimization for Release builds" OFF)
option(GLIBCXX_ASSERTIONS "Whether to define _GLIBCXX_ASSERTIONS" OFF)
option(GLIBCXX_DEBUG "Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC. Requires a version of Boost's program_options that's compiled with __GLIBCXX_DEBUG too." OFF)
option(GLIBCXX_DEBUG "Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC" OFF)
option(ENABLE_POT_UPDATE_TARGET "Enables the tools to update the pot files and manuals. This target has extra dependencies." OFF)
option(FORCE_COLOR_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." FALSE)
option(CLANG_TIDY "Enable clang-tidy linter checks." OFF)
if(UNIX AND NOT APPLE AND NOT CYGWIN)
option(ENABLE_NOTIFICATIONS "Enable Window manager notification messages" ON)
@ -186,7 +170,7 @@ set(BINARY_PREFIX "" CACHE STRING "Prefix in front of all binaries")
### Set the environment compiler flags.
if(NOT MSVC)
if(NOT WIN32)
if(NOT DEFINED CXX_FLAGS_USER)
MESSAGE(STATUS "Environment compiler flags set to »${CXX_FLAGS_USER}«")
@ -206,18 +190,6 @@ if(NOT MSVC)
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Qunused-arguments -Wno-unknown-warning-option -Wmismatched-tags -Wno-conditional-uninitialized -Wno-unused-lambda-capture")
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU"
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
# GCC-13 added this new warning, and included it in -Wextra,
# however in GCC-13 it has a lot of false positives.
#
# It's likely to generate false postives with GCC-14 too, but
# I'm using a narrow version check as GCC-14 is still in dev.
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110075
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-dangling-reference")
endif()
### Set strict compiler flags.
if(ENABLE_STRICT_COMPILATION)
@ -246,21 +218,6 @@ if(NOT MSVC)
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fno-omit-frame-pointer -fno-optimize-sibling-calls")
endif()
### Force colour output (for example for Ninja, or piped CI)
if(FORCE_COLOR_OUTPUT)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fdiagnostics-color=always")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fcolor-diagnostics")
endif()
endif()
### Enable clang-tidy linting
if (CLANG_TIDY)
set(CMAKE_CXX_CLANG_TIDY "clang-tidy -Wno-unknown-warning-option")
endif()
### Set the final compiler flags.
set(COMPILER_FLAGS "${COMPILER_FLAGS} ${CXX_FLAGS_USER}")
@ -303,8 +260,6 @@ if(NOT MSVC)
if(APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -Wl,-pie")
elseif(WIN32 AND MINGW)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie")
else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie -Wl,-z,relro,-z,now")
endif()
@ -433,14 +388,7 @@ if(NOT MSVC)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG -ggdb3 ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_DEBUG}" CACHE STRING "change cmake's Debug flags to match scons' flags" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${LINK_EXTRA_FLAGS_CONFIG} ${LINK_EXTRA_FLAGS_DEBUG}" CACHE STRING "" FORCE)
# Enabling GLIBCXX_ASSERTIONS puts bounds-checks on std::vector::operator[], etc
if(GLIBCXX_ASSERTIONS)
MESSAGE("Defining _GLIBCXX_ASSERTIONS")
add_definitions(-D_GLIBCXX_ASSERTIONS)
endif()
# GLIBCXX_DEBUG enables more checks that GLIBCXX_ASSERTIONS, but changes the ABI of Boost's program_options library.
# When _GLIBCXX_DEBUG is defined, _GLIBCXX_ASSERTIONS is automatically implied (Gnu's c++config.h will define it).
# adds GLIBCXX_DEBUG definitions
if(GLIBCXX_DEBUG)
MESSAGE("Defining _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC")
add_definitions(-D_GLIBCXX_DEBUG)
@ -478,14 +426,14 @@ if(NOT MSVC)
# End setting profiler build options
# #
else()
set(CMAKE_CXX_FLAGS "/W3 /WX /wd4503 /wd4351 /wd4250 /wd4244 /wd4267 /we4239 /wd4275 /EHsc /utf-8 /Zc:__cplusplus" CACHE STRING "Global flags used by the CXX compiler during all builds." FORCE)
set(CMAKE_CXX_FLAGS "/W3 /WX /wd4503 /wd4351 /wd4250 /wd4244 /wd4267 /we4239 /wd4275 /EHsc /utf-8" CACHE STRING "Global flags used by the CXX compiler during all builds." FORCE)
set(CMAKE_C_FLAGS "/WX" CACHE STRING "Global flags used by the C compiler during all builds." FORCE)
add_definitions(-D_WIN32_WINNT=0x0A00 -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -DNOMINMAX)
add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_WIN7 -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -DNOMINMAX)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_LUA")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT")
# -DNDEBUG is automatically added to all release build types, so manually remove this define from the related variables
RemoveFlag(CMAKE_CXX_FLAGS_RELEASE CACHE "/DNDEBUG" "Default C++ flags for RELEASE")
RemoveFlag(CMAKE_C_FLAGS_RELEASE CACHE "/DNDEBUG" "Default C flags for RELEASE")
@ -529,25 +477,29 @@ endif()
#
if(ENABLE_GAME OR ENABLE_TESTS)
find_package(CURL REQUIRED)
find_package(VorbisFile REQUIRED)
find_package(PkgConfig REQUIRED)
find_package(Fontconfig REQUIRED)
find_package(SDL2 2.0.18 REQUIRED)
if(NOT MSVC)
# for everything else, use pkgconfig
# SDL2_image and SDL2_mixer don't seem to have any cmake configuration available at all
# find_package can't be used for SDL2 since at least as of Ubuntu 20.04 they forgot to include the sdl2-config-version.cmake, so cmake can't tell if it's >= 2.0.8 and thus rejects using it
# meanwhile SDL2_image and SDL2_mixer don't seem to have any cmake configuration available at all
# the best I could find is that the more modern cmake module support is only available if you build SDL2 yourself instead of using a distro-packaged version
# still wouldn't help for SDL2_image and SDL2_mixer though
pkg_check_modules(SDL2 REQUIRED sdl2>=2.0.8)
pkg_check_modules(SDL2IMAGE REQUIRED SDL2_image>=2.0.2)
pkg_check_modules(SDL2MIXER REQUIRED SDL2_mixer>=2.0.0)
else()
# for MSVC, vcpkg builds and provides custom SDL2-related modules for cmake to use, so use those
# for MSVC, vcpkg builds and provides SDL2-related modules for cmake to use, so use those
# this also fixes the issue with our previous FindSDL2* scripts incorrectly using the Release version of these libs instead of the Debug version
find_package(SDL2 2.0.8 CONFIG REQUIRED)
find_package(SDL2_image CONFIG REQUIRED)
find_package(SDL2_mixer CONFIG REQUIRED)
endif()
pkg_check_modules(CAIRO REQUIRED cairo>=1.10)
pkg_check_modules(PANGOCAIRO REQUIRED pangocairo>=1.44.0)
pkg_check_modules(PANGO REQUIRED pango>=1.44.0)
pkg_check_modules(PANGOCAIRO REQUIRED pangocairo>=1.22.0)
# TODO: can use find_package and Fontconfig::Fontconfig with cmake 3.14+
pkg_check_modules(FONTCONFIG REQUIRED fontconfig>=2.4.1)
pkg_check_modules(PANGO REQUIRED pango>=1.22.0)
pkg_check_modules(LIBREADLINE readline)
endif()
@ -590,7 +542,7 @@ endif()
add_subdirectory(doc)
if(GETTEXT_FOUND AND Python_FOUND AND ENABLE_NLS)
if(GETTEXT_FOUND AND ENABLE_NLS)
add_subdirectory(po)
endif()

View file

@ -1,2 +0,0 @@
The Battle for Wesnoth's Code of Conduct may be found in the following forum post:
https://forums.wesnoth.org/viewtopic.php?t=24277

View file

@ -1,6 +1,6 @@
# Contributing to Wesnoth
Wesnoth was built with the hard work of volunteers all over the world! Everyone is welcome to come and contribute code, art, and music to improve the game for everyone who wants to play it.
Wesnoth was built with the hard work of volunteers all over the world! Everyone is welcome to come and contribute. TODO: list the different types of contributions that people can make.
## Contacting Us
@ -18,7 +18,7 @@ Wesnoth's engine conforms to the C++17 standard. We encourage the use of standar
### Code Formatting
All C++, WML and Lua files are in UTF-8, as we use Gettext-style translations, and translatable strings use some punctuation that's outside of the ASCII subset. More details are in the [Typography Style Guide](https://wiki.wesnoth.org/Typography_Style_Guide) and the guide to [using Gettext strings](https://wiki.wesnoth.org/GettextForWesnothDevelopers).
All C++, WML and Lua files are in UTF-8, as we use Gettext-style translations, and translatable strings use some punctuation that's outside of the ASCII subset. More details are in the [Typography Style Guide](https://wiki.wesnoth.org/GettextForWesnothDevelopers).
If your pull request touches the engine's C++ source code, we recommend (but don't require) you run `clang-format` on your changes before submission (Visual Studio Code gives you a handy context menu option to do so). This ensures that your code remains formatted according to our conventions. Make a local commit before running `clang-format`, in case more code than expected gets changed.
@ -118,9 +118,6 @@ private:
};
```
## Translations
For specific information on how to update and submit translations, see [here](https://wiki.wesnoth.org/WesnothTranslationsHowTo).
## Bug Reports
Please report any bugs here on GitHub (preferred) or on the forums.

2552
Doxyfile Normal file

File diff suppressed because it is too large Load diff

View file

@ -2,13 +2,13 @@
## Prerequisites
Wesnoth requires a compiler with sufficient C++17 support such as GCC 11 and
Wesnoth requires a compiler with sufficient C++17 support such as GCC 7 and
later, or a version of Clang with equivalent support.
You'll need to have these libraries and their development headers installed in
order to build Wesnoth:
* Boost libraries >= 1.66.0
* Boost libraries >= 1.65.0
Most headers plus the following binary libs:
* Filesystem
* Locale
@ -17,22 +17,17 @@ order to build Wesnoth:
* Regex
* Program Options
* System
* Coroutine
* Graph
* Charconv (This requires boost 1.85 or higher and is optional but reccomended especially for clang builds)
* SDL2 libraries:
* SDL2 >= 2.0.18 (macOS: 2.0.22 due to needing https://github.com/libsdl-org/SDL/commit/3bebdaccb7bff8c40438856081d404a7ce3def30)
* SDL2_image >= 2.0.2 (with PNG, JPEG, and WEBP support)
* SDL2 >= 2.0.8
* SDL2_image >= 2.0.2 (with PNG and JPEG support)
* SDL2_mixer >= 2.0.0 (with Ogg Vorbis support)
* Fontconfig >= 2.4.1
* Cairo >= 1.10.0
* Pango >= 1.44.0 (with Cairo backend)
* Pango >= 1.22.0 (with Cairo backend)
* Vorbisfile aka libvorbis
* libbz2
* libz
* libssl
* libcrypto (from OpenSSL)
* libcurl4 (OpenSSL version)
The following libraries are optional dependencies that enable additional
features:
@ -55,13 +50,11 @@ created directory:
$ tar xvjf wesnoth-<version>.tar.bz2
$ cd wesnoth-<version>
Alternatively, you can clone this git repository. Since Wesnoth uses submodules, when cloning you must add the `--recurse-submodules` option, or if you have already cloned the repository without using that option then you must run the command `git submodule update --init --recursive`.
The following build systems are fully supported for compiling Wesnoth on Linux,
*BSD, and other Unix-like platforms:
* SCons >= 0.98.3
* CMake >= 3.14
* CMake >= 2.8.5
You will also need to have a working installation of GNU gettext to build the
translations.
@ -77,7 +70,7 @@ See [here](https://github.com/wesnoth/wesnoth/blob/master/projectfiles/Xcode/REA
### Windows
Wesnoth uses CMake for project configuration and vcpkg for installing dependencies. See [here](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio) for information on using Visual Studio with cmake. The first time it's run, vcpkg will build all the required dependencies which may take over an hour, however it will only need to be done once.
NOTE 1: You will need to run `vcpkg integrate install` on the command line to make Visual Studio aware of vcpkg. If Visual Studio is open when this is executed, then you will need to close and re-open Visual Studio.
NOTE 1: You will need a Windows implementation of pkg-config present in your PATH, such as [pkg-config-lite](https://sourceforge.net/projects/pkgconfiglite/).
## SCons Build
@ -164,19 +157,20 @@ false value.
### Some of the most important options follow.
| SCons | CMake | Description |
| Scons | CMake | Description |
|------------------------------------------------------------------------|--------------------------------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `build=<build type>` | `CMAKE_BUILD_TYPE=<build type>` | Selects a specific build configuration when compiling. `release` produces the default, optimized (-O3) build for regular use. `debug` produces a slower and larger unoptimized (-O0) build with full debug symbols, which is often needed for obtaining detailed backtraces when reporting bugs. |
| `wesnoth` | `ENABLE_GAME=<boolean>` | Whether to build the game client binary. To disable just don't mention the target for SCons. |
| `wesnothd` | `ENABLE_SERVER=<boolean>` | Whether to build the MP server binary. To disable just don't mention the target for SCons. |
| | `ENABLE_GAME=<boolean>` | Whether to build the game client binary. Use command line target selection selection with SCons instead. |
| | `ENABLE_SERVER=<boolean>` | Whether to build the MP server binary. Use command line target selection with SCons instead. |
| `prefix=<full path>` | `CMAKE_INSTALL_PREFIX=<full path>` | Installation prefix for binaries, resources, and documentation files. |
| `nls=<boolean>` | `ENABLE_NLS=<boolean>` | Whether to compile and install translations. |
| `strict=<boolean>` | `ENABLE_STRICT_COMPILATION=<boolean>` | Whether to treat compiler warnings as errors or not. Primarily intended for developers. |
| `prefsdir=<directory name>` | `PREFERENCES_DIR=<directory name>` | Hardcoded user preferences and user data directory. The default is to leave this unspecified so that Wesnoth will use separate XDG paths such as .config/wesnoth and .local/share/wesnoth/<version> for its user preferences and data, respectively. |
| `cxxtool=<program>` | `CMAKE_CXX_COMPILER=<program>` | Specifies which C++ compiler to use. By default, the system's default C++ compiler will be automatically selected during configuration. |
| `ccache=<boolean>` | `CMAKE_CXX_COMPILER_LAUNCHER=ccache` | Whether to run the compiler through ccache first. Useful if the compiler executable is not a symbolic link to ccache. Requires ccache to be installed first. If using CMake, use CMAKE_C_COMPILER and CMAKE_CXX_COMPILER instead. |
| `ccache=<boolean>` | | Whether to run the compiler through ccache first. Useful if the compiler executable is not a symbolic link to ccache. Requires ccache to be installed first. If using CMake, use CMAKE_C_COMPILER and CMAKE_CXX_COMPILER instead. |
| `extra_flags_<buildtype>=<flags>` `extra_flags_config=<flags>` | `CXX_FLAGS_USER=<flags>` | Additional compiler flags to use when compiling a specific build type (SCons-only). To apply the same flags to all builds, use extra_flags_config (SCons) or CXX_FLAGS_USER (CMake) without a build type suffix. Alternatively, you may specify your flags in the CXXFLAGS environment variable. |
| `fifodir=<full path>` `server_uid=<UID>` `server_gid=<GID>` | `FIFO_DIR=<full path>` `SERVER_UID=<UID>` `SERVER_GID=<GID>` | Directory and owner id for the wesnothd control FIFO file. This is relevant only if you wish to be able to communicate with a local wesnothd instance through a named pipe. You must run wesnothd with the same UID specified at build time for this to work. |
| `enable_lto=<boolean>` | `ENABLE_LTO=<boolean>` | Controls using Link Time Optimization. Enabling will result in a smaller, faster executable at the cost of increased time to compile and link. For cmake, use LTO_JOBS=N tells how many threads to use during linking. |
| `--debug=time` | `VERBOSE=1` (make option) | Enables some additional output while building. |
| `jobs=N` | `-jN` (make option) | Enables compiling with multiple threads, where N is the number of threads to use. |
| `enable_lto=<boolean>` | `ENABLE_LTO=<boolean>` | Controls using Link Time Optimization. Enabling will result in a smaller, faster executable at the cost of increased time to compile and link. For cmake, use LTO_JOBS=N tells how many threads to use during linking.|
| `--debug=time` | `VERBOSE=1` (make option) | Enables some additional output while building.|
| `strict=true` | `ENABLE_STRICT_COMPILATION=true` | Forces all warnings to be errors (-Werror).|
| `jobs=N` | `-jN` (make option) | Enables compiling with multiple threads, where N is the number of threads to use.|

View file

@ -1,14 +1,9 @@
[![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|Branch|CI status|
|------|---------|
|Master|[![CI](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml/badge.svg)](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3Amaster)|
|1.18|[![CI](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml/badge.svg?branch=1.18)](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3A1.18)|
About
=====
**The Battle for Wesnoth** is an Open Source, turn-based tactical strategy game with a high fantasy theme, featuring both singleplayer and online/hotseat multiplayer combat. Fight a desperate battle to reclaim the throne of Wesnoth, search for the key to immortality, or take part in any number of other adventures.
**The Battle for Wesnoth** is an Open Source, turn-based tactical strategy game with a high fantasy theme, featuring both singleplayer and online/hotseat multiplayer combat. Fight a desperate battle to reclaim the throne of Wesnoth, or take hand in any number of other adventures.
Community
---------
@ -22,23 +17,12 @@ Discord:
IRC:
<https://wiki.wesnoth.org/Support#IRC>
Mastodon:
<https://fosstodon.org/@wesnoth>
Twitter:
<https://twitter.com/Wesnoth>
Steam forums:
<https://steamcommunity.com/app/599390/discussions/>
Features
--------
* A variety of different campaigns, each with their own tactical challenges, emotionally charged story, and multiple difficulty levels.
* A detailed world and storytelling with hundreds of sprites, animations, and characters.
* Many different unit skills and traits across several factions.
* A map editor with multiple tools, hundreds types of terrain, and the ability for you to save and share maps with others. Create your own scenarios/battles for near infinite replayability.
* Highly moddable, allowing a wide array of community created map packs, eras, and entire campaigns.
* Online and local multiplayer gameplay to play with friends, strangers, or against the AI.
* Changeable settings for base gameplay, with nearly limitless options for different hotkey configurations.
* Beautifully composed playlist that captures the era and grandiosity of this lore-filled high-fantasy world.
Installing
----------
@ -50,20 +34,14 @@ Wesnoth can be played on Windows, macOS, and Linux, and can be installed using:
* standalone installers on [SourceForge](https://sourceforge.net/projects/wesnoth/files/) (Windows and macOS)
* [Flatpak](https://flathub.org/apps/details/org.wesnoth.Wesnoth) (Linux)
Additionally, Wesnoth is available for [iOS](https://apps.apple.com/us/app/battle-for-wesnoth/id575852062) and [Android](https://sourceforge.net/projects/wesnoth-on-android/files/).
Additionally, Wesnoth is available for [iOS](https://apps.apple.com/us/app/battle-for-wesnoth/id575852062) and [Android](https://play.google.com/store/apps/details?id=it.alessandropira.wesnoth114).
To build the game from source, see [INSTALL](/INSTALL.md) for instructions.
Contributing
------------
Wesnoth is most in need of skilled C++ developers (C++14 and later), however there are things that nearly anyone can help with:
* Simple tasks in C++.
* The Lua and WML used for content scripting.
* Python used by various external tools.
* Even play testing and giving feedback on updated campaigns!
Additionally, Wesnoth lacks art for a variety of unit animations - anyone who would be interested in lending a hand in updating existing unit sprites or creating animations should take a look at the [Art Contributions](https://forums.wesnoth.org/viewforum.php?f=9) forum as well as contact our current art director.
Wesnoth is most in need of skilled C++ developers (C++14 and later), however there are things that nearly anyone can help with from simpler tasks in C++, the Lua and WML used for content scripting, Python used by various external tools, and even things like play testing and giving feedback on updated campaigns. Additionally, Wesnoth lacks art for a variety of unit animations - anyone who would be interested in lending a hand updating existing unit sprites or creating animations should take a look at the Art Forum as well as contact our current art director.
See also: [CONTRIBUTING](/CONTRIBUTING.md)
@ -73,7 +51,7 @@ For any questions, the best place to start is to simply join Wesnoth's forums, D
Donations
---------
Donations can be sent via [Software in the Public Interest](https://www.spi-inc.org/projects/wesnoth/), [Liberapay](https://liberapay.com/Wesnoth), as well as when downloading through itch.io. All money donated is used to pay for project expenses such as server rent and art commissions, and is very much appreciated.
Donations can be sent via [Liberapay](https://liberapay.com/Wesnoth) as well as when downloading through itch.io. All money donated is used to pay for project expenses such as server rent and art commissions, and is very much appreciated.
License
@ -99,11 +77,3 @@ A (translated) description of how to play the game can be found in doc/manual/ma
For information on creating your own maps, scenarios, and other content, see:
<https://wiki.wesnoth.org/Create>
Gallery
-------
![screenshot_main_menu](https://www.wesnoth.org/images/sshots/wesnoth-1.16.0-1.jpg)
![scrreenshot_isars_cross](https://www.wesnoth.org/images/sshots/wesnoth-1.16.0-2.jpg)
![screenshot_campaign_menu](https://www.wesnoth.org/images/sshots/wesnoth-1.16.0-5.jpg)
![screenshot_map](https://www.wesnoth.org/images/sshots/wesnoth-1.16.0-8.jpg)

View file

@ -9,8 +9,6 @@
EnsureSConsVersion(0,98,3)
lua_ver = "5.4"
import os, sys, shutil, re, subprocess
from glob import glob
from subprocess import Popen, PIPE, call, check_output
@ -59,8 +57,7 @@ opts.AddVariables(
('arch', 'What -march option to use for build=release, will default to pentiumpro on Windows', ""),
('opt', 'override for the build\'s optimization level', ""),
BoolVariable('harden', 'Whether to enable options to harden the executables', True),
BoolVariable('glibcxx_assertions', 'Whether to define _GLIBCXX_ASSERTIONS for build=debug', False),
BoolVariable('glibcxx_debug', "Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC for build=debug. Requires a version of Boost's program_options that's compiled with __GLIBCXX_DEBUG too.", False),
BoolVariable('glibcxx_debug', 'Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC for build=debug', False),
EnumVariable('profiler', 'profiler to be used', "", ["", "gprof", "gcov", "gperftools", "perf"]),
EnumVariable('pgo_data', 'whether to generate profiling data for PGO, or use existing profiling data', "", ["", "generate", "use"]),
BoolVariable('use_srcdir', 'Whether to place object files in src/ or not', False),
@ -103,7 +100,6 @@ opts.AddVariables(
('boost_suffix', 'Suffix of boost libraries.'),
PathVariable('gettextdir', 'Root directory of Gettext\'s installation.', "", OptionalPath),
PathVariable('gtkdir', 'Directory where GTK SDK is installed.', "", OptionalPath),
BoolVariable('system_lua', 'Enable use of system Lua ' + lua_ver + ' (compiled as C++, only for non-Windows systems).', False),
PathVariable('luadir', 'Directory where Lua binary package is unpacked.', "", OptionalPath),
('host', 'Cross-compile host.', ''),
EnumVariable('multilib_arch', 'Address model for multilib compiler: 32-bit or 64-bit', "", ["", "32", "64"]),
@ -118,9 +114,7 @@ opts.AddVariables(
BoolVariable("autorevision", 'Use autorevision tool to fetch current git revision that will be embedded in version string', True),
BoolVariable("lockfile", "Create a lockfile to prevent multiple instances of scons from being run at the same time on this working copy.", False),
BoolVariable("OS_ENV", "Forward the entire OS environment to scons", False),
BoolVariable("history", "Clear to disable GNU history support in lua console", True),
BoolVariable('force_color', 'Always produce ANSI-colored output (GNU/Clang only).', False),
BoolVariable('compile_db', 'Produce a compile_commands.json file.', False),
BoolVariable("history", "Clear to disable GNU history support in lua console", True)
)
#
@ -167,8 +161,7 @@ else:
from cross_compile import *
setup_cross_compile(env)
if sys.platform != 'win32':
env.Tool("system_include")
env.Tool("system_include")
if 'HOME' in os.environ:
env['ENV']['HOME'] = os.environ['HOME']
@ -190,12 +183,7 @@ if env['distcc']:
if env['ccache']: env.Tool('ccache')
if env['compile_db']:
env.Tool('compilation_db')
cdb = env.CompilationDatabase()
Alias('cdb', cdb)
boost_version = "1.67"
boost_version = "1.66"
def SortHelpText(a, b):
return (a > b) - (a < b)
@ -211,7 +199,9 @@ Important switches include:
in build/release and copy resulting binaries
into distribution/working copy root.
build=debug same for debug build variant
binaries will be copied with -debug suffix
build=profile build with instrumentation for a supported profiler
binaries will be copied with -profile suffix
With no arguments, the recipe builds wesnoth and wesnothd. Available
build targets include the individual binaries:
@ -232,7 +222,6 @@ You can make the following special build targets:
update-po = merge message catalog templates with localized message catalogs for particular lingua
update-po4a = update translations of manual and manpages
af bg ca ... = linguas for update-po
translations = build all translations
dist = make distribution tarball as wesnoth.tar.bz2 (*).
data-dist = make data tarball as wesnoth-data.tar.bz2 (*).
binary-dist = make data tarball as wesnoth-binaries.tar.bz2 (*).
@ -322,7 +311,7 @@ def Warning(message):
from metasconf import init_metasconf
configure_args = dict(
custom_tests = init_metasconf(env, ["cplusplus", "sdl", "boost", "cairo", "pango", "pkgconfig", "gettext_tool", "lua"]),
custom_tests = init_metasconf(env, ["cplusplus", "sdl", "boost", "cairo", "pango", "pkgconfig", "gettext_tool", "lua", "gl"]),
config_h = "$build_dir/config.h",
log_file="$build_dir/config.log", conf_dir="$build_dir/sconf_temp")
@ -340,15 +329,6 @@ if "gcc" in env["TOOLS"]:
env.AppendUnique(CCFLAGS = Split("-Wall -Wextra"))
env.AppendUnique(CXXFLAGS = Split("-Werror=non-virtual-dtor -std=c++" + env["cxx_std"]))
# GCC-13 added this new warning, and included it in -Wextra,
# however in GCC-13 it has a lot of false positives.
#
# It's likely to generate false postives with GCC-14 too, but
# I'm using a narrow version check as GCC-14 is still in dev.
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110075
if "CXXVERSION" in env and env["CXXVERSION"].startswith("13."):
env.AppendUnique(CXXFLAGS = "-Wno-dangling-reference")
if env["prereqs"]:
conf = env.Configure(**configure_args)
@ -370,22 +350,21 @@ if env["prereqs"]:
def have_sdl_other():
return \
conf.CheckSDL2('2.0.18') & \
conf.CheckSDL2Mixer() & \
conf.CheckSDL2Image()
conf.CheckSDL(require_version = '2.0.8') & \
conf.CheckSDL("SDL2_mixer", header_file = "SDL_mixer") & \
conf.CheckSDL("SDL2_image", header_file = "SDL_image")
if sys.platform == "msys":
env["PKG_CONFIG_FLAGS"] = "--dont-define-prefix"
have_server_prereqs = (\
conf.CheckCPlusPlus(gcc_version = "8") & \
conf.CheckCPlusPlus(gcc_version = "7") & \
conf.CheckBoost("iostreams", require_version = boost_version) & \
conf.CheckBoostIostreamsGZip() & \
conf.CheckBoostIostreamsBZip2() & \
conf.CheckBoost("program_options", require_version = boost_version) & \
conf.CheckBoost("random", require_version = boost_version) & \
conf.CheckBoost("smart_ptr", header_only = True) & \
conf.CheckBoostCharconv() & \
CheckAsio(conf) & \
conf.CheckBoost("thread") & \
conf.CheckBoost("locale") & \
@ -411,26 +390,12 @@ if env["prereqs"]:
have_client_prereqs = have_client_prereqs & conf.CheckLib("vorbisfile") & conf.CheckOgg()
have_client_prereqs = have_client_prereqs & conf.CheckPNG()
have_client_prereqs = have_client_prereqs & conf.CheckJPG()
have_client_prereqs = have_client_prereqs & conf.CheckWebP()
# have_client_prereqs = have_client_prereqs & conf.CheckOpenGL()
# have_client_prereqs = have_client_prereqs & conf.CheckGLEW()
have_client_prereqs = have_client_prereqs & conf.CheckCairo(min_version = "1.10")
have_client_prereqs = have_client_prereqs & conf.CheckPango("cairo", require_version = "1.44.0")
have_client_prereqs = have_client_prereqs & conf.CheckPango("cairo", require_version = "1.22.0")
have_client_prereqs = have_client_prereqs & conf.CheckPKG("fontconfig")
have_client_prereqs = have_client_prereqs & conf.CheckBoost("regex")
have_client_prereqs = have_client_prereqs & conf.CheckLib("curl")
have_client_prereqs = have_client_prereqs & conf.CheckBoost("graph")
if env["system_lua"]:
if env["PLATFORM"] == 'win32':
Warning("System Lua cannot be used on Windows.")
if not conf.CheckLua(lua_ver):
have_client_prereqs = False
else:
if not File("#/src/modules/lua/.git").rfile().exists():
have_client_prereqs = False
Warning("Lua submodule does not exist. You must run 'git submodule update --init --recursive' to initialize it.")
else:
print("Lua submodule found.")
if not have_client_prereqs:
Warning("Client prerequisites are not met. wesnoth cannot be built.")
@ -508,8 +473,6 @@ for env in [test_env, client_env, env]:
if os.path.isabs(env["build_dir"]):
build_root = ""
env.Prepend(CPPPATH = [build_root + "$build_dir", "#/src"])
if env["system_lua"]:
env.Append(CPPDEFINES = ["HAVE_SYSTEM_LUA"])
env.Append(CPPDEFINES = ["HAVE_CONFIG_H"])
@ -519,8 +482,6 @@ for env in [test_env, client_env, env]:
if env['pedantic']:
env.AppendUnique(CXXFLAGS = Split("-Wdocumentation -Wno-documentation-deprecated-sync"))
if env['force_color']:
env.AppendUnique(CCFLAGS = ["-fcolor-diagnostics"])
if "gcc" in env["TOOLS"]:
env.AppendUnique(CCFLAGS = Split("-Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wtrampolines"))
@ -534,9 +495,6 @@ for env in [test_env, client_env, env]:
if env['sanitize']:
env.AppendUnique(CCFLAGS = ["-fsanitize=" + env["sanitize"]], LINKFLAGS = ["-fsanitize=" + env["sanitize"]])
env.AppendUnique(CCFLAGS = Split("-fno-omit-frame-pointer -fno-optimize-sibling-calls"))
if env['force_color']:
env.AppendUnique(CCFLAGS = ["-fdiagnostics-color=always"])
# #
# Determine optimization level
@ -581,11 +539,10 @@ for env in [test_env, client_env, env]:
debug_flags = Split(debug_flags)
debug_flags.append("${ '-O3' if TARGET.name == 'gettext.o' else '' }") # workaround for "File too big" errors
glibcxx_debug_flags = ""
if env["glibcxx_assertions"] == True:
glibcxx_debug_flags = " ".join([glibcxx_debug_flags, "_GLIBCXX_ASSERTIONS"])
if env["glibcxx_debug"] == True:
glibcxx_debug_flags = " ".join([glibcxx_debug_flags, "_GLIBCXX_DEBUG", "_GLIBCXX_DEBUG_PEDANTIC"])
glibcxx_debug_flags = "_GLIBCXX_DEBUG _GLIBCXX_DEBUG_PEDANTIC"
else:
glibcxx_debug_flags = ""
# #
# End determining options for debug build
@ -672,7 +629,7 @@ for env in [test_env, client_env, env]:
env[d] = os.path.join(env["prefix"], env[d])
if env["PLATFORM"] == 'win32':
env.Append(LIBS = ["wsock32", "crypt32", "iconv", "z", "shlwapi", "winmm", "ole32", "uuid"], CCFLAGS = ["-mthreads"], LINKFLAGS = ["-mthreads"], CPPDEFINES = ["_WIN32_WINNT=0x0A00"])
env.Append(LIBS = ["wsock32", "crypt32", "iconv", "z", "shlwapi", "winmm", "ole32", "uuid"], CCFLAGS = ["-mthreads"], LINKFLAGS = ["-mthreads"], CPPDEFINES = ["_WIN32_WINNT=0x0601"])
if env["PLATFORM"] == 'darwin': # Mac OS X
env.Append(FRAMEWORKS = "Cocoa") # Cocoa GUI
@ -680,9 +637,6 @@ for env in [test_env, client_env, env]:
env.Append(FRAMEWORKS = "IOKit") # IOKit
env.Append(FRAMEWORKS = "CoreGraphics") # CoreGraphics
if env["PLATFORM"] == 'sunos':
env.Append(LINKFLAGS = "-lsocket")
if not env['static_test']:
test_env.Append(CPPDEFINES = "BOOST_TEST_DYN_LINK")
@ -715,6 +669,9 @@ if env["use_srcdir"] == True:
else:
build_dir = os.path.join("$build_dir", build)
if build == "release" : build_suffix = ""
else : build_suffix = "-" + build
Export("build_suffix")
env.SConscript("src/SConscript", variant_dir = build_dir, duplicate = False)
Import(binaries + ["sources"])
binary_nodes = [eval(binary) for binary in binaries]
@ -743,7 +700,7 @@ env.Clean(all, 'TAGS')
# Unix installation productions
#
# These will not be portable to Windows or Mac. They assume a Unix-like
# directory structure and FreeDesktop standard locations for icon, app,
# directory structure and FreeDesktop standard locations foicon, app,
# and doc files.
#
@ -820,7 +777,7 @@ env.InstallBinary(campaignd)
install = env.Alias('install', [])
for installable in ('wesnoth',
'wesnothd', 'campaignd'):
if os.path.exists(installable) or installable in COMMAND_LINE_TARGETS or "all" in COMMAND_LINE_TARGETS:
if os.path.exists(installable + build_suffix) or installable in COMMAND_LINE_TARGETS or "all" in COMMAND_LINE_TARGETS:
env.Alias('install', env.Alias('install-'+installable))
#

View file

@ -1,332 +0,0 @@
#!/usr/bin/env python3
# encoding: utf-8
# known issues:
# xcode - if a file already exists in 'wesnoth' target, then it incorrectly thinks it also exists in the 'tests' target even though the tests build will fail
"""
Add files to the specified build targets, supporting
CMake, SCons, Xcode and the Code::Blocks projects.
Valid build targets are:
* "wesnoth" - the main game (default if no target is specified)
* "wesnothd" - the wesnoth server
* "campaignd"
* "lua"
* "tests" - boost unit tests
The files will be added to:
* the lists used by CMake and SCons in "source_lists"
* the Xcode project
* The Code::Blocks project
This only supports files inside the "src" directory.
"""
import argparse
import sys
import inspect
import pathlib
try:
import pbxproj
except:
print('\n'.join((
'This script requires the "pbxproj" module.',
'Install it using "pip install pbxproj"',
'optionally setting up a python3-venv first.',
)))
exit(1)
#=========#
# Globals #
#=========#
# Either the executable directory or the current working directory
# should be the wesnoth root directory
rootdir = pathlib.Path(inspect.getsourcefile(lambda:0))
if not rootdir.joinpath("projectfiles").exists():
rootdir = pathlib.Path()
if not rootdir.joinpath("projectfiles").exists():
raise Exception("Could not find project file directory")
# the names of the targets in the Xcode project
xcode_target_translations = {
"wesnoth": ["The Battle for Wesnoth", "unit_tests"],
"wesnothd": ["wesnothd"],
"campaignd": ["campaignd"],
"lua": ["liblua"],
"tests": ["unit_tests"],
}
# the names of the targets in source_lists
source_list_target_translations = {
"wesnoth": "wesnoth",
"wesnothd": "wesnothd",
"campaignd": "campaignd",
"lua": "lua",
"tests": "boost_unit_tests",
}
# the names of the targets in Code::Blocks
code_blocks_target_translations = {
"wesnoth": "wesnoth",
"wesnothd": "wesnothd",
"campaignd": "campaignd",
"lua": "liblua",
"tests": "tests",
}
#=======#
# XCode #
#=======#
def modify_xcode(filename, targets, remove):
"""Add the given file to the specified targets.
"""
projectfile = rootdir.joinpath(
"projectfiles",
"Xcode",
"The Battle for Wesnoth.xcodeproj",
"project.pbxproj",
)
project = pbxproj.XcodeProject.load(projectfile)
translated_targets = [item for t in targets for item in xcode_target_translations[t]]
translated_targets = list(set(translated_targets))
print(" xcode targets:", translated_targets)
for tname in translated_targets:
if not project.get_target_by_name(tname):
raise Exception(
f"Could not find target '{tname}' in Xcode project file")
# groups are organized by directory structure under "src"
# except for tests, which have a separate root, "tests"
if pathlib.Path("tests") in filename.parents:
src_groups = project.get_groups_by_name("tests")
else:
src_groups = project.get_groups_by_name("src")
if len(src_groups) != 1:
raise Exception("problem finding 'src' group in xcode project")
src_group = src_groups[0]
parent_group = src_group
for d in filename.parts[:-1]:
if d == "tests":
continue
found_groups = project.get_groups_by_name(d, parent=parent_group)
if len(found_groups) != 1:
groupname = parent_group.get_name()
raise Exception(f"problem finding '{d}' group in '{groupname}'")
parent_group = found_groups[0]
if remove :
# Remove from all targets if we want to remove
for file in project.get_files_by_name(filename.name, parent=parent_group):
project.remove_file_by_id(file.get_id())
else:
# if the group already has an entry with the same filename, loudly skip.
# note: this doesn't allow adding to targets one at a time.
# a new file should be added to all targets at once...
# or maybe targets could be checked somehow,
# or maybe the file could simply be completely removed and readded.
if project.get_files_by_name(filename.name, parent=parent_group):
print(" '"+filename.name+"' already found in Xcode project '"+",".join(translated_targets)+"', skipping")
return
# force is True here because otherwise a duplicate filename in
# a different place will block addition of the new file.
# the rest is just to match existing project file structure.
project.add_file(filename.name,
force=True,
tree="<group>",
parent=parent_group,
target_name=translated_targets,
)
# that's done, save the file
project.save()
return
#==============#
# source_lists #
#==============#
def modify_source_list(filename, source_list, remove):
source_list_file = rootdir.joinpath("source_lists", source_list)
sl_lines = open(source_list_file).readlines()
file_line = filename.as_posix() + '\n'
# we only need source files in the source_lists, not header files
if filename.suffix != ".cpp":
return
if remove:
if file_line in sl_lines: sl_lines.remove(file_line)
else:
# if the target already has an entry with the same filename, loudly skip
if file_line in sl_lines:
print(f" '{filename}' already found in '{source_list}', skipping")
return
sl_lines.append(file_line)
sl_lines.sort()
open(source_list_file, 'w').writelines(sl_lines)
def add_to_source_lists(filename, targets):
translated_targets = [source_list_target_translations[t] for t in targets]
print(" source_list targets:", translated_targets)
for t in translated_targets:
modify_source_list(filename, t, False)
def remove_from_source_lists(filename):
# remove from all tagerts if -r was specified.
for t in source_list_target_translations.values():
modify_source_list(filename, t, True)
#==============#
# Code::Blocks #
#==============#
def modify_code_blocks_target(filename, target, remove):
cbp_file = rootdir.joinpath(
"projectfiles",
"CodeBlocks",
f"{target}.cbp",
)
cbp_lines = open(cbp_file).readlines()
filename_for_cbp = pathlib.PurePath(
"..", "..", "src", filename
).as_posix()
elem = f"\t\t<Unit filename=\"{filename_for_cbp}\" />\n"
if remove:
if elem in cbp_lines: cbp_lines.remove(elem)
else:
# if the target already has an entry with the same filename, loudly skip
if elem in cbp_lines:
print(f" '{filename}' already found in '{target}.cbp', skipping")
return
# find an appropriate line to add before/after
index = 0
for line in cbp_lines:
if line.startswith("\t\t<Unit "):
if elem < line:
break
elif line.startswith("\t\t<Extensions>"):
# we must be the last entry, as this comes after the Unit section
break
index += 1
cbp_lines.insert(index, elem)
open(cbp_file, 'w').writelines(cbp_lines)
def modify_code_blocks(filename, targets, remove):
translated_targets = code_blocks_target_translations.values() if remove else [code_blocks_target_translations[t] for t in targets]
print(" code::blocks targets:", translated_targets)
for t in translated_targets:
modify_code_blocks_target(filename, t, remove)
def sanity_check_existing_cpp_hpp(filenames):
"""
If we're adding a .cpp file, check whether a .hpp should be added too, etc.
Only the files named on the command line are added, this exits if the check fails.
"""
any_check_failed = False
for filename in filenames:
if filenames.count(filename) > 1:
print(f"ERROR: File '{filename}' given multiple times")
any_check_failed = True
if not rootdir.joinpath("src", filename).exists():
print(f"WARN: File '{filename}' does not exist")
any_check_failed = True
spouse = None
if filename.suffix == ".cpp":
spouse = filename.with_suffix(".hpp")
elif filename.suffix == ".hpp":
spouse = filename.with_suffix(".cpp")
if rootdir.joinpath("src", spouse).exists() and not filenames.count(spouse):
print(f"WARN: Requested to add '{filename}', should '{spouse}' be added too?")
any_check_failed = True
if any_check_failed:
break
if any_check_failed:
print("ERROR: Not making changes, as checks failed and --no-checks option was not used.")
exit(1)
def canonicalise_filenames(original_filenames):
"""
The script supports giving the filenames with or without the "src/" prefix.
Strip the "src/" if present, functions that need it will add it again later.
"""
filenames = []
# If src/src/ exists, the filenames become ambiguous. No need to support that.
if rootdir.joinpath("src", "src").exists():
print("Please don't add a file or directory called src/src.")
exit(1)
for filename in options.filename:
filename = pathlib.PurePath(filename)
parts = filename.parts
if parts[0] == "src":
filename = pathlib.PurePath(*parts[1:])
else:
filename = pathlib.PurePath(*parts)
filenames.append(filename)
return filenames
#======#
# main #
#======#
if __name__ == "__main__":
ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
# a file argument is mandatory
ap.add_argument("filename", action="store", nargs="+",
help="the .cpp and .hpp files to add")
ap.add_argument("--target", action="store", nargs=1,
default=["wesnoth"],
help="which build targets to add the file to")
ap.add_argument("--no-checks", action="store_true",
help="do not check whether the files exist, etc")
ap.add_argument("-r", "--remove", action="store_true",
help="remove the specified files from projectfiles instead of adding them, --target is then ignored")
# By default, recognise --help too
options = ap.parse_args()
# Bail out if someone uses the old syntax of "add_source_file src/foo.cpp campaignd"
if not options.no_checks:
if len(options.filename) == 2 and not options.filename[1].count('.'):
print("The usage has changed, targets now need to be given using --target name")
exit(1)
# Convert the names to pathlib.PurePath objects without leading "src/"
filenames = canonicalise_filenames(options.filename)
if not options.no_checks:
sanity_check_existing_cpp_hpp(filenames)
for filename in filenames:
if options.remove:
print(f"removing '{filename}' from all targets")
modify_xcode(filename, options.target, True)
remove_from_source_lists(filename)
modify_code_blocks(filename, options.target, True)
else:
print(f"adding '{filename}' to targets: {options.target}")
modify_xcode(filename, options.target, False)
add_to_source_lists(filename, options.target)
modify_code_blocks(filename, options.target, False)

View file

@ -2,29 +2,23 @@ This directory contains old art and resources not currently used anywhere in
the game. It should not ship with the distribution tarball.
Some notes on specific images and image groups follow:
scepter_of_fire.png:
Old story image of the Scepter, quite large.
units/thain.png,units/thain2.png:
Originally from SoF. 1.3-sized.
desert-elvish-druid-statue.png, desert-elvish-shyde-statue:
Used in older versions of UtBS. 1.3-sized.
keratur.png:
The original image for the uncloaked assassin in UtBS. 1.3-sized.
spider-lich.png:
Old unit image from UtBS.
clasher-attack-mace.png
Orphaned when the Drake Clasher lost this attack.
keratur.png
The original image for the uncloaked assassin in UtBS. 1.3-sized.
perrin.png
Originally from THoT. No longer used, removed for GitHub #6602.
ratheln.png
Originally from THoT. No longer used, removed in GitHub #6593.
righteous-flame-icon.png
Originally from THoT. No longer used, removed for GitHub #6602.
scepter_of_fire.png
Old story image of the Scepter, quite large.
spider-lich.png
Old unit image from UtBS.
thain.png,thain2.png
Originally from SoF. 1.3-sized.
units/fire-dragon-flying-*.png
Jetryl plans to finish these. See FR #11041.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 B

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 B

After

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 815 B

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1,014 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 815 B

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 953 B

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 B

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 953 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 B

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 B

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 890 B

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 B

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 B

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 990 B

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

After

Width:  |  Height:  |  Size: 208 B

Some files were not shown because too many files have changed in this diff Show more