Compare commits

...
Sign in to create a new pull request.

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
4616 changed files with 1049959 additions and 654696 deletions

208
.github/labeler.yml vendored
View file

@ -1,130 +1,184 @@
Add-ons:
- src/server/campaignd/**
- src/server/common/**
- src/addon/**
- src/gui/dialogs/addon/**
- changed-files:
- any-glob-to-any-file:
- src/server/campaignd/**
- src/server/common/**
- src/addon/**
- src/gui/dialogs/addon/**
AI:
- data/ai/**/*
- data/campaigns/*/ai/**
- src/ai/**/*
- changed-files:
- any-glob-to-any-file:
- data/ai/**/*
- data/campaigns/*/ai/**
- src/ai/**/*
Audio:
- data/campaigns/*/sounds/**
- data/core/music/*
- data/core/sounds/**/*
- sounds/*
- changed-files:
- any-glob-to-any-file:
- data/campaigns/*/sounds/**
- data/core/music/*
- data/core/sounds/**/*
- sounds/*
Building:
- projectfiles/**/*
- source_lists/*
- CMakeLists.txt
- cmake/*
- src/CMakeLists.txt
- SConstruct
- scons/*
- src/SConscript
- src/SConstruct
- changed-files:
- any-glob-to-any-file:
- projectfiles/**/*
- source_lists/*
- CMakeLists.txt
- cmake/*
- src/CMakeLists.txt
- SConstruct
- scons/*
- src/SConscript
- src/SConstruct
Campaign:
- data/campaigns/**/*
- changed-files:
- any-glob-to-any-file:
- data/campaigns/**/*
CMake:
- CMakeLists.txt
- cmake/*
- src/CMakeLists.txt
- changed-files:
- any-glob-to-any-file:
- CMakeLists.txt
- cmake/*
- src/CMakeLists.txt
Docker:
- .dockerignore
- utils/dockerbuilds/travis/*
- utils/travis/docker_run.sh
- changed-files:
- any-glob-to-any-file:
- .dockerignore
- utils/dockerbuilds/travis/*
- utils/travis/docker_run.sh
Docs:
- doc/**/*
- changed-files:
- any-glob-to-any-file:
- doc/**/*
Editor:
- data/core/editor/*
- src/editor/**/*
- changed-files:
- any-glob-to-any-file:
- data/core/editor/*
- src/editor/**/*
Graphics:
- images/**/*
- data/campaigns/*/images/**
- data/core/images/**/*
- changed-files:
- any-glob-to-any-file:
- images/**/*
- data/campaigns/*/images/**
- data/core/images/**/*
Help:
- data/tips.cfg
- data/core/help.cfg
- src/help/*
- src/gui/dialogs/help_browser.*
- changed-files:
- any-glob-to-any-file:
- data/tips.cfg
- data/core/help.cfg
- src/help/*
- src/gui/dialogs/help_browser.*
Input:
- data/core/hotkeys.cfg
- changed-files:
- any-glob-to-any-file:
- data/core/hotkeys.cfg
Lua API:
- src/scripting/**/*
- data/lua/**/*
- changed-files:
- any-glob-to-any-file:
- src/scripting/**/*
- data/lua/**/*
macOS:
- projectfiles/Xcode/**/*
- src/macosx/*
- changed-files:
- any-glob-to-any-file:
- projectfiles/Xcode/**/*
- src/macosx/*
MP:
- data/multiplayer/**/*
- src/server/wesnothd/**
- src/server/common/**
- changed-files:
- any-glob-to-any-file:
- data/multiplayer/**/*
- src/server/wesnothd/**
- src/server/common/**
Packaging:
- packaging/**/*
- changed-files:
- any-glob-to-any-file:
- packaging/**/*
Schema:
- utils/travis/schema_validation.sh
- data/schema/**/*
- src/serialization/schema/*
- changed-files:
- any-glob-to-any-file:
- utils/travis/schema_validation.sh
- data/schema/**/*
- src/serialization/schema/*
SCons:
- SConstruct
- scons/*
- src/SConscript
- src/SConstruct
- changed-files:
- any-glob-to-any-file:
- SConstruct
- scons/*
- src/SConscript
- src/SConstruct
Services:
- utils/mp-server/**
- changed-files:
- any-glob-to-any-file:
- utils/mp-server/**
Terrain:
- src/terrain/**/*
- data/campaigns/*/images/terrain/**
- data/campaigns/**/terrain.cfg
- data/campaigns/**/terrain_graphics.cfg
- data/core/images/terrain/**
- data/core/terrain.cfg
- data/core/terrain-graphics.cfg
- data/core/terrain-graphics/**
- changed-files:
- any-glob-to-any-file:
- src/terrain/**/*
- data/campaigns/*/images/terrain/**
- data/campaigns/**/terrain.cfg
- data/campaigns/**/terrain_graphics.cfg
- data/core/images/terrain/**
- data/core/terrain.cfg
- data/core/terrain-graphics.cfg
- data/core/terrain-graphics/**
Translations:
- po/**/*
- data/languages/*
- changed-files:
- any-glob-to-any-file:
- po/**/*
- data/languages/*
Travis:
- utils/travis/**/*
- changed-files:
- any-glob-to-any-file:
- utils/travis/**/*
UI:
- src/gui/**/*
- data/gui/**/*
- data/schema/gui.cfg
- data/themes/*
- changed-files:
- any-glob-to-any-file:
- src/gui/**/*
- data/gui/**/*
- data/schema/gui.cfg
- data/themes/*
Unit Tests:
- data/test/**/*
- changed-files:
- any-glob-to-any-file:
- data/test/**/*
Units:
- src/units/**/*
- data/campaigns/*/units/**
- data/core/units/**/*
- data/core/images/units/**/*
- changed-files:
- any-glob-to-any-file:
- src/units/**/*
- data/campaigns/*/units/**
- data/core/units/**/*
- data/core/images/units/**/*
WML Tools:
- data/tools/**/*
- changed-files:
- any-glob-to-any-file:
- data/tools/**/*
WFL:
- src/formula/**
- src/ai/formula/**
- changed-files:
- any-glob-to-any-file:
- src/formula/**
- src/ai/formula/**

View file

@ -2,9 +2,9 @@ name: CI
on:
push:
branches: [ master ]
branches: [ 1.16 ]
pull_request:
branches: [ master ]
branches: [ 1.16 ]
workflow_dispatch:
jobs:
@ -14,11 +14,11 @@ jobs:
name: Discord Notification
needs: [ubuntu-2004-scons-gcc-release-lto, ubuntu-2004-scons-clang-debug, ubuntu-2004-cmake-clang-release, ubuntu-2004-cmake-gcc-debug, steam-runtime, mingw, flatpak, translations, macos-intel-master-release, macos-intel-master-debug, windows-release, windows-debug]
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@v2
- uses: technote-space/workflow-conclusion-action@v3
- uses: rjstone/discord-webhook-notify@v1
if: env.WORKFLOW_CONCLUSION == 'failure' && github.event_name == 'push'
with:
@ -33,7 +33,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
@ -51,41 +51,11 @@ jobs:
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
ubuntu-2004-scons-clang-debug:
ubuntu-2004-cmake-clang-debug:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Ubuntu 20.04
run: |
export BRANCH=master
export IMAGE=2004
export NLS=false
export TOOL=scons
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 master
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Ubuntu-Clang-Debug
path: |
~/build-cache/wesnoth
~/build-cache/wesnothd
ubuntu-2004-cmake-clang-release:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
@ -98,46 +68,16 @@ jobs:
export CC=clang
export CXX=clang++
export CXX_STD=17
export CFG=release
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
ubuntu-2004-cmake-gcc-debug:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Ubuntu 20.04
run: |
export BRANCH=master
export IMAGE=2004
export NLS=false
export TOOL=cmake
export CC=gcc
export CXX=g++
export CXX_STD=17
export CFG=debug
export LTO=false
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Ubuntu-GCC-Debug
path: |
~/build-cache/wesnoth
~/build-cache/wesnothd
steam-runtime:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
@ -155,11 +95,18 @@ jobs:
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: |
~/steambuild-*.tar
mingw:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
@ -177,11 +124,19 @@ jobs:
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Source-And-Windows-Installer
path: |
~/wesnoth-*.tar.bz2
~/wesnoth-*-win64.exe
flatpak:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
@ -203,7 +158,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
@ -221,175 +176,42 @@ jobs:
export CACHE_DIR=/home/wesnoth-CI/build
./.github/workflows/ci-scripts/ubuntu.sh
macos-intel-master-release:
runs-on: macos-10.15
macos-intel:
strategy:
fail-fast: false
matrix:
cfg: [ Debug ]
runs-on: macos-12
env:
CFG: ${{ matrix.cfg }}
DEVELOPER_DIR: /Applications/Xcode_13.1.app/Contents/Developer
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: macOS Intel Release
- name: Get dependencies
run: |
export CFG=Release
export CACHE_DIR=~/build-cache
./.github/workflows/ci-scripts/macos.sh
macos-intel-master-debug:
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
HOMEBREW_NO_AUTO_UPDATE=1 brew install scons
./projectfiles/Xcode/Fix_Xcode_Dependencies
- name: Build translations
run: scons translations build=release --debug=time nls=true jobs=2
- name: Build wesnoth and unit tests
working-directory: projectfiles/Xcode
run: |
xcodebuild ARCHS=x86_64 -project "The Battle for Wesnoth.xcodeproj" -target "The Battle for Wesnoth" -target "unit_tests" -configuration "$CFG"
# xcodebuild or maybe clang do not appear to fail properly when input files cannot be found; double check executables were produced
[ -x "build/$CFG/The Battle for Wesnoth.app" ] || { printf 'Failed to build wesnoth executable!\n' >&2; exit 1; }
[ -x "build/$CFG/unit_tests" ] || { printf 'Failed to build unit test executable!\n' >&2; exit 1; }
- name: Create disk image
working-directory: projectfiles/Xcode
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
with:
submodules: "recursive"
- name: macOS Intel Debug
run: |
export CFG=Debug
export CACHE_DIR=~/build-cache
./.github/workflows/ci-scripts/macos.sh
- name: Upload
uses: actions/upload-artifact@v2
with:
name: macOS-Intel-Debug
path: |
~/work/wesnoth/wesnoth/projectfiles/Xcode/Wesnoth_Debug.dmg
# enabling both intel and arm macOS jobs would tend to confuse the github actions CI
# sometimes it would succeed, other times it would fail at random with extra entries for macOS jobs that didn't exist in this configuration file
# try re-enabling at some point to see if this got fixed in the mean time
# macos-arm-master-release:
# runs-on: macos-11.0
#
# steps:
# - uses: actions/checkout@v2
# with:
# submodules: "recursive"
#
# - name: macOS ARM Release
# run: |
# export CFG=Release
# export CACHE_DIR=~/build-cache
# ./.github/workflows/ci-scripts/macos.sh
# macos-arm-master-debug:
# runs-on: macos-11.0
#
# steps:
# - uses: actions/checkout@v2
# with:
# submodules: "recursive"
#
# - name: macOS ARM Debug
# run: |
# export CFG=Debug
# export CACHE_DIR=~/build-cache
# ./.github/workflows/ci-scripts/macos.sh
# - name: Upload
# uses: actions/upload-artifact@v2
# with:
# name: macOS-ARM-Debug
# path: |
# ~/work/wesnoth/wesnoth/projectfiles/Xcode/Wesnoth_Debug.dmg
# in the case of needing to recompile the vcpkg-created Windows dependencies, increment the cache-name and key for both Release and Debug
# this will create a brand new cache and recompile the vcpkg dependencies from scratch
windows-debug:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Cache object files
id: windows-master-N007
uses: actions/cache@v2
with:
path: |
D:/a/wesnoth/vcpkg
D:/a/wesnoth/wesnoth/vcpkg_installed
key: windows-master-N008
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Build vcpkg
shell: cmd
run: |
git clone --depth=1 https://github.com/microsoft/vcpkg.git D:/a/wesnoth/vcpkg
D:/a/wesnoth/vcpkg/bootstrap-vcpkg.bat
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v1.8
- name: Use cmake
run: |
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=true -DENABLE_MYSQL=false -DENABLE_NLS=false -DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_TOOLCHAIN_FILE=D:/a/wesnoth/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_GENERATOR_PLATFORM=x64 -G "Visual Studio 16 2019" .
# delete buildtrees directory to free up space after cmake invokes vcpkg to build the dependencies
# otherwise the job was failing when trying to write a .obj file
# building vcpkg on the more spacious C drive didn't work since for some reason vcpkg decides to not create the pango/cairo pkgconfig files there
- name: Build wesnoth
shell: cmd
run: |
rmdir /s /q D:\a\wesnoth\vcpkg\buildtrees
MSBuild.exe wesnoth.sln -p:Configuration=Debug
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Windows-Debug
path: |
D:/a/wesnoth/wesnoth/Debug/wesnoth.exe
D:/a/wesnoth/wesnoth/Debug/wesnothd.exe
D:/a/wesnoth/wesnoth/Debug/wesnoth.pdb
D:/a/wesnoth/wesnoth/Debug/wesnothd.pdb
windows-release:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Cache object files
id: windows-master-N008
uses: actions/cache@v2
with:
path: |
D:/a/wesnoth/vcpkg
D:/a/wesnoth/wesnoth/vcpkg_installed
key: windows-master-N007
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Build vcpkg
shell: cmd
run: |
git clone --depth=1 https://github.com/microsoft/vcpkg.git D:/a/wesnoth/vcpkg
D:/a/wesnoth/vcpkg/bootstrap-vcpkg.bat
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v1.8
- name: Use cmake
run: |
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=true -DENABLE_MYSQL=false -DENABLE_NLS=false -DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_TOOLCHAIN_FILE=D:/a/wesnoth/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_GENERATOR_PLATFORM=x64 -G "Visual Studio 16 2019" .
# delete buildtrees directory to free up space after cmake invokes vcpkg to build the dependencies
# otherwise the job was failing when trying to write a .obj file
# building vcpkg on the more spacious C drive didn't work since for some reason vcpkg decides to not create the pango/cairo pkgconfig files there
- name: Build wesnoth
shell: cmd
run: |
rmdir /s /q D:\a\wesnoth\vcpkg\buildtrees
MSBuild.exe wesnoth.sln -p:Configuration=Release
- name: Run WML unit tests
shell: cmd
run: |
python run_wml_tests -v -g -c -t 20 -p D:/a/wesnoth/wesnoth/Release/wesnoth.exe
name: MacOS ${{ matrix.cfg }} disk image
path: projectfiles/Xcode/Wesnoth_${{ matrix.cfg }}.dmg
- name: Run WML tests
if: matrix.cfg == 'Release'
run: ./run_wml_tests -g -c -t 30 -p "projectfiles/Xcode/build/$CFG/The Battle for Wesnoth.app/Contents/MacOS/The Battle for Wesnoth"

View file

@ -91,19 +91,6 @@ elif [ "$IMAGE" == "flatpak" ]; then
cp -R .flatpak-builder/. "$CACHE_DIR"/
chmod -R 777 "$CACHE_DIR"/
exit $EXIT_VAL
elif [ "$IMAGE" == "mingw" ]; then
scons wesnoth wesnothd build="$CFG" \
cxx_std=$CXX_STD strict=false \
nls=false enable_lto="$LTO" jobs=2 --debug=time \
arch=x86-64 prefix=/windows/mingw64 gtkdir=/windows/mingw64 host=x86_64-w64-mingw32
EXIT_VAL=$?
exit $EXIT_VAL
elif [ "$IMAGE" == "steamrt" ]; then
scons ctool=$CC cxxtool=$CXX boostdir=/usr/local/include boostlibdir=/usr/local/lib extra_flags_config=-lrt \
cxx_std=$CXX_STD strict=true nls="$NLS" enable_lto="$LTO" jobs=2 --debug=time \
build="$CFG"
EXIT_VAL=$?
exit $EXIT_VAL
else
if [ "$TOOL" == "cmake" ]; then
export CCACHE_MAXSIZE=3000M

View file

@ -1,29 +0,0 @@
#!/bin/bash
echo ~
echo $PWD
HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache scons
export PATH="/usr/local/opt/gettext/bin:/usr/local/opt/ccache/libexec:$PWD/utils/CI:$PATH"
export CC=ccache-clang
export CXX=ccache-clang++
export CCACHE_MAXSIZE=3000M
export CCACHE_COMPILERCHECK=content
export CCACHE_DIR="$CACHE_DIR"
./projectfiles/Xcode/Fix_Xcode_Dependencies
scons translations build=release --debug=time nls=true jobs=2 || exit 1
cd ./projectfiles/Xcode
xcodebuild CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -project "The Battle for Wesnoth.xcodeproj" -target "The Battle for Wesnoth" -configuration "$CFG"
EXIT_VAL=$?
ccache -s
ccache -z
if [ "$CFG" = "Debug" ]; then
hdiutil create -volname "Wesnoth_${CFG}" -fs 'HFS+' -srcfolder "build/$CFG" -ov -format UDBZ "Wesnoth_${CFG}.dmg"
fi
exit $EXIT_VAL

View file

@ -12,14 +12,34 @@ echo "CFG: $CFG"
echo "LTO: $LTO"
echo "CACHE_DIR: $CACHE_DIR"
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"
version=$(grep '#define VERSION' src/wesconfig.h | cut -d\" -f2)
echo "Found version: $version"
docker build -t wesnoth-repo:"$IMAGE"-"$BRANCH" -f utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH" .
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
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

View file

@ -4,9 +4,9 @@ on:
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@main
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
sync-labels: ""

1
.gitignore vendored
View file

@ -105,6 +105,7 @@ tags
/create_images*
/wesmage*
pgo_data/
src/modules/lua/
# build results etc.
wesnoth_zip

View file

@ -427,9 +427,11 @@ if(NOT WIN32)
# #
else()
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=_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
@ -475,16 +477,30 @@ endif()
#
if(ENABLE_GAME OR ENABLE_TESTS)
# TODO: SDL2::SDL2 etc component target available with cmake 3.19+
find_package(SDL2 2.0.8 REQUIRED)
find_package(SDL2_image 2.0.2 REQUIRED)
find_package(SDL2_mixer 2.0.0 REQUIRED)
find_package(VorbisFile REQUIRED)
find_package(PkgConfig REQUIRED)
if(NOT MSVC)
# for everything else, use pkgconfig
# 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 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.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()
if(ENABLE_TESTS)

View file

@ -38,7 +38,7 @@ PROJECT_NAME = "The Battle for Wesnoth"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.15.14+dev
PROJECT_NUMBER = 1.16.12+dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

View file

@ -70,6 +70,8 @@ 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 a Windows implementation of pkg-config present in your PATH, such as [pkg-config-lite](https://sourceforge.net/projects/pkgconfiglite/).
## SCons Build
Unlike CMake or the classic "autotools" build-system (configure && make),

View file

@ -3,40 +3,77 @@
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, or take
hand 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
---------
License
-------
The official Battle for Wesnoth Forums:
<https://forums.wesnoth.org/>
Please see the wiki for information regarding The Battle for Wesnoth's licensing:
Discord:
<https://discord.gg/battleforwesnoth>
<https://wiki.wesnoth.org/Wesnoth:Copyrights>
IRC:
<https://wiki.wesnoth.org/Support#IRC>
Twitter:
<https://twitter.com/Wesnoth>
Steam forums:
<https://steamcommunity.com/app/599390/discussions/>
Installing
----------
See [INSTALL](/INSTALL.md) for instructions on how to build the game from source code.
Wesnoth can be played on Windows, macOS, and Linux, and can be installed using:
* [Steam](https://store.steampowered.com/app/599390/Battle_for_Wesnoth/) (all)
* [itch.io](https://wesnoth.itch.io/battle-for-wesnoth) (Windows and macOS)
* The [macOS App Store](https://apps.apple.com/us/app/the-battle-for-wesnoth/id1450738104)
* 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://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 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)
For any questions, the best place to start is to simply join Wesnoth's forums, Discord, or IRC and start asking!
Donations
---------
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
-------
All source code is licensed under the GNU GPL v2+. Most art and music is also licensed under the GNU GPL v2+, however new contributions are now licensed under the Creative Commons BY-SA v4.0. For more detailed information on Wesnoth's licensing, see the wiki:
<https://wiki.wesnoth.org/Wesnoth:Copyrights>
More Information
----------------
For extensive documentation about all aspects of the game, see the
official Battle for Wesnoth web site.
For extensive documentation about all aspects of the game, see the official Battle for Wesnoth web site:
<https://www.wesnoth.org/>
<https://wiki.wesnoth.org/>
A (translated) description of how to play the game can be found in
doc/manual/manual.*.html, or online at:
A (translated) description of how to play the game can be found in doc/manual/manual.*.html, or online at:
<https://wiki.wesnoth.org/WesnothManual>
The official Battle for Wesnoth Forums (with over 400,000 posts from more than
20,000 registered members) can be found at:
For information on creating your own maps, scenarios, and other content, see:
<https://forums.wesnoth.org/>
<https://wiki.wesnoth.org/Create>

View file

@ -767,7 +767,8 @@ if not access(fifodir, F_OK):
env.Alias("install-wesnothd", fifodir)
if env["systemd"]:
env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.service", "lib/systemd/system")
env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.conf", "lib/tmpfiles.d")
env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.tmpfiles.conf", "lib/tmpfiles.d")
env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.sysusers.conf", "lib/sysusers.d")
# Wesnoth campaign server
env.InstallBinary(campaignd)

View file

@ -1,4 +1,4 @@
## Version 1.15.14+dev
## Version 1.16.12+dev
### Add-ons client
### Add-ons server
### Campaigns
@ -13,6 +13,402 @@
### WML Engine
### Miscellaneous and Bug Fixes
## Version 1.16.12
### Security Fixes
* Run wesnothd server as `_wesnoth:_wesnoth` instead of `nobody:users`, improving safety and fixing a warning message in systemd 246+
### Translations
* Updated translations: Czech, German, Italian
### Miscellaneous and Bug Fixes
* Fix a regression from 1.13.11 that inverted horizontal scrolling with SDL versions 2.0.18+ on X11 and versions 2.0.20+ on Wayland (issues #3362 and #7404, PR #8158)
## Version 1.16.11
### Translations
* Updated translations: Arabic, British English, Bulgarian, Chinese (Simplified), Czech, French, Japanese, Polish, Slovak, Welsh
### Miscellaneous and Bug Fixes
* Fix a crash in the `:inspect` window when pagination is used (issue #7851).
* Fix "Something is wrong with the addon version check database supporting the multiplayer lobby".
Note that It also required the host of the game to use wesnoth 1.16.11
## Version 1.16.10
### Campaigns
* Under the Burning Suns
* S03: Ensure all of Garaks attacks are changed to fire type (issue #7774).
* Make the name of the dark assassin translatable again (PR #7675).
* Added po hints (translation hints).
* World Conquest
* Fix lua error at victory after promoting a replacement commander (issue #7823).
### Translations
* Updated translations: Arabic, Czech, French, Italian, Spanish, Portuguese (Brazil)
### User interface
* Fix file dialogs (e.g. Save As dialog in the Map Editor) not listing /run/media/USER
as a possible file location on modern Linux distributions.
* Update the preferences windows Display resolution list if the game window is resized.
* Enable Whiteboard if the "enable planning mode on start" option is set (issue #7820).
### Miscellaneous and Bug Fixes
* Fix compilation with Clang 16 (PR #7586).
* Fix crash in the Flatpak version when recruiting in Wayland (issue #7104).
* Fix the version dialogs display on MacOS.
* Fixed updating POT files with version 0.68-1 of the po4a toolsuite (issue #7149).
## Version 1.16.9
### Campaigns
* Heir to the Throne
* S03: Rewrite intro text, including a hint about training troops (PR #7291)
* World Conquest
* Fixed rare lua error when a unit is killed.
* Fixed Bezoar Item.
* Fixed some items losing their effects in later scenarios.
* Fixed units losing hp when picking up an artifact
* Partially fixed "Promote to commander" (but required a further fix in 1.16.10)
### Editor
* Scrolling the map north or south can move the text that overlays the map, so it doesn't always obscure the southmost hexes of the map. (issue #6422)
### Multiplayer
* Allied units orbs no longer look like the players own units orbs (issue #7108).
* By default, they are now two-color during the allys turn.
* Added an advanced setting to always show them as single-color (the ally color).
* "Back to Turn" menu no longer crashes the game when used
After the game has ended. #4236
### Translations
* Updated translations: British English, Bulgarian, Chinese (Simplified), Czech, Dutch, French, German, Italian, Polish, Portuguese (Brazil), Spanish, Turkish
### User interface
* Improved the layout of the orb colors dialog, and added tooltips.
### Miscellaneous and Bug Fixes
* Fixed Possible Crash when using planning mode #3768
* Fixed Possible OOS when using planning mode #7465
* Fixed game hanging when an enemy attacks a unit
with planned moves #5302
* Fixed custom effects implemented via wesnoth.effects
losing their effects in later scenarios.
* Fix Crash undo+redo error after reloading #7253
* Fix Crash when loading old replays #7253
* Fix Crash when a unit has bad animations replays #5032
* Postponed the removal of the `SPECIAL_NOTES` macro, which means there will be fewer log messages.
* `wesnoth_addon_manager` now supports SSL/TLS connection (using the `--secure` flag)
* `wesnoth_addon_manager` now supports IPv6 connection (using the `--ipv6` flag)
* Added new command line flag `--terms` to `wesnoth_addon_manager` (retrieves and prints the add-ons server upload terms)
* w`esnoth_addon_manager` now supports the `--version` flag (reports the current Wesnoth version)
* Removed unused `--color` switch from `wesnoth_addon_manager`
## Version 1.16.8
### Editor
* Fixed: the unit tool crashes when placing a unit (issue #7296).
### Translations
* Updated translations: Finnish, Spanish
### Miscellaneous and Bug Fixes
* Make the log messages about "Skipping duplicate unit variation ID" say which `[unit_type]` is causing the error.
## Version 1.16.7
### Translations
* Updated translations: Arabic, British English, Czech, Finnish, French, Italian, Japanese, Polish, Portuguese (Brazil), Turkish
### Miscellaneous and Bug Fixes
* wmllint now validates `rank=` values in `[campaign]` (issue #7224)
* Add disconnect check to alert users when they lose connection to the multiplayer server (issue #1336)
* Fixed a crash when checking if abilities are active during game initialisation after loading a saved game. (issues #5643, #7238)
* Fix a crash when an out-of-bounds side number is used in Luas `sync.evaluate_multiple` (PR #7222)
* Fixed special notes being duplicated when storing units (issue #7153).
## Version 1.16.6
### Translations
* Updated translations: Arabic, British English, Bulgarian, Chinese (Simplified), Chinese (Traditional), Czech, French, Italian, Japanese, Portuguese (Brazil), Russian, Swedish, Turkish
### Miscellaneous and Bug Fixes
* Fixed drake flare leadership animation over water (issue #3996)
* Fixed animations not clearing properly when zoomed (issue #6589)
* Fixed the `{IS_HERO}` macro to avoid losing the hero ellipse when a unit levels up
* Fixed highlighted movement range when hovering over units after their owner ends turn. It now shows their max movement next turn, instead of the remaining moves from their previous turn. (issue #6716)
* Fixed out of sync errors occurring when unused add-ons contain the [resistance_defaults] or [terrain_defaults] tags (issue #6650)
## Version 1.16.5
### Miscellaneous and Bug Fixes
* Fixed frequent crashes occurring in multiplayer matches (issue #6863).
## Version 1.16.4
### Campaigns
* Eastern Invasion
* S07a:
* Better handling for side 2 (issue #4145)
* Fixed Grug upkeep, added dialogue about ogres joining (issue #4145)
* Northern Rebirth
* S1: Fixed Al'Tar confusing an orc for a slave (issue #6735)
* Under the Burning Suns
* S5: Enforce encounter with the Cloaked Figure (issue #6364)
### Translations
* Updated translations: Arabic, British English, Chinese (Traditional), Czech, Polish, Finnish, French
### Units
* Fixed Wardens and Arbiters animations popping on water tiles (issue #6508)
### User interface
* Resolved broken layout in some low-resolution configurations (issue #5620, #6544)
### Miscellaneous and Bug Fixes
* Fixed path finding visibility bug that sometimes caused OOS errors on maps with tunnels and at least three sides that do not share vision (PR #6744)
* Fixed being unable to interact with units when Scroll Lock is active (issue #6759)
* Removing the Protect Unit Micro AI no longer causes a Lua error
* Fixed chance of being unscathed in damage calculation for some fights in which both units can die (issue #6590)
* Fixed visibility bug in ai_helper.get_attackable_enemies() for some complex filters
* Fixed bug in Bottleneck Micro AI involving units without moves on terrain with multiple open passages (issue #6599)
* Fixed error in Castle Switch CA of the Experimental AI after a leader was killed (issue #6440)
* Fixed error in retreat-injured CA when regenerate ability code does not include a value= key
* Retreat-injured CA no longer takes villages from allies
* Experimental AI no longer uses generic_recruit_engine: fixes a data leakage bug between Experimental AIs of different sides
* Experimental AI recruit rushers: include unit types from extra_recruit (issue #4924)
* Fix segfault when weapon is removed during attack (issues #4927 and #5914)
* Add no-unit error message for unit debug command (issue #6116)
* Significantly improve efficiency of move-to-any-enemy CA
## Version 1.16.3
### Add-ons client
* Fixed: using the up or down arrow keys in small-screen mode returned to the title screen (issue #6485).
* Add-on passwords that are not stored in the `_server.pbl` can now be stored in the same credentials file as multiplayer passwords (PR #6543).
### Campaigns
* Delfadors Memoirs
* S11: Finding Chantal will now share her sides vision with the player, as originally intended.
* S14: Smoother appearance of enemies and added dialogue (#6176).
* Descent into Darkness
* S08: Prevent Spectral Servant from picking up the book (issue #6576).
* Northern Rebirth
* S05a_01: Solve units getting stuck in the wall before the spider chamber (issue #6607).
* Sceptre of Fire
* Fixed Thursagan's Arcanister advancement being "lost" after dismounting a minecart.
* Improvements and spelling corrections to the English prose text (PR #6177).
* S9: Allow Grypon Riders to complete the scenario (issue #6332)
* Son of the Black Eye
* Improvements and spelling corrections to the English prose text (PR #6166).
* The Rise of Wesnoth
* S22: Fixed the possibility of a misplaced dialogue when a bridge was broken (issue #6376).
* Under the Burning Suns
* S08: Kromph and the Dust devil now trigger a critical event (issue #6211).
* World Conquest
* Updated the modding instructions, helping add-on authors add extra factions etc.
### Editor
* Add documentation for the magenta D and special terrain overlays (PR #6460).
* Added some missing terrain groupings (issue #6643)
### Multiplayer
* Fixed updating add-ons when joining a game that requires a new version (issue #6383).
* Add a `/clear` command for the lobby-chat window.
### Packaging
* flatpak: update freedesktop runtime version to 21.08 (issue #6497).
### Terrain
* Better transition for Swamp to Icy Cobbles (PR #6491).
* New graphics variations for icy and rocky terrains.
* The help browser adds special notes for castles and healing terrains (PR #6461).
### Translations
* Updated translations: British English, Bulgarian, Chinese (Simplified), Czech, French, Italian, Japanese, Portuguese (Brazil), Russian
* Fixed the stats for Spanish being overwritten by the stats for Spanish (Latin American).
### Units
* Saurian sprites cleanup (PR #6450).
* Various small sprite updates for sea serpents and swamp lizards (PR #6452).
### User interface
* Mark the Plan Unit Advance mod as MP-only so it doesn't show up as available for campaigns.
### Miscellaneous and Bug Fixes
* wmlscope can now report about calls to deprecated macros when using the `--unresolved` switch.
* wmlxgettexts old behavior of processing files in the order theyre given on the command line can be selected with the `--no-sort-by-file` option (PR #6586).
* Fixed a crash with "laststrike" (firststrike given to the opponent) weapon specials (issue #6575).
* Fixed a crash with locally-edited add-ons that had neither `_server.pbl` nor `_info.cfg` (issue #6389).
* Added more unit tests for weapon specials.
* Resolve crash on systems using musl implementation of libc (issue #6603)
* The `--stringfreeze` (`-Z`) command line flag has been removed from wmllint.
* The checks for the old special notes system have been removed from wmllint; the `notecheck off`, `notecheck on` and `match <ability> with <note>` magic comments no longer have any effect.
* Resolved title screen flashing during the loading screen (issue #2395)
* Fixed erratic keyboard and mouse scroll speed (issue #3607)
* wmllint automatically removes the obsolete lines `{SOUND:SLOW}` and `{SOUND:POISON}`
## Version 1.16.2
### Campaigns
* Delfadors Memoirs
* S07: Clarified objectives (issue #5608) and remove End Turn being required to trigger victory (issue #6173)
* Descent into Darkness
* S08: Prevent possibility of Darken Volk advancing to Lich (issue #6351)
* Heir to the Throne
* S05b: Temples given an aged appearance to match ancient temples description (issue #5576)
* Sceptre of Fire
* Added notes about Thursagans rune mechanics
* S04: Mining objectives are much clearer now (issue #6154)
* Secret of the Ancients
* S06: Ardonna should no longer mistake hostile bats as my pet
* S20: Directions “left” and “right” in character speech now use the characters orientation, not the players
* Consistently capitalise the name of the Academy of Magic (issue #6310)
* The Rise of Wesnoth
* S08: The appearance of Naga is now smoother (issue #6140)
* S08: Refactored ship-boarding events (issue #6298)
* S19: The trolls gold is automatically collected upon victory if not already obtained (issue #6141)
* S19: Avoid units spawning over chasms
* Under the Burning Suns
* Correct Travelers Ring description (issue #6043) and add an icon overlay (issue #6126)
* Remove the “formation” ability from the attack predictions dialog, as it was in a confusing location; its effect is still shown in the calculations and chance-to-hit percentage (PR #6326)
* S02: Pinnacle Rock is now shown during dialogue (issue #6125)
* S04: Improve dialogue about dark underground tunnels (PR #6345)
* S06b:
* Account for non-elvish units encountering Dwarf Sergeant (issue #6196)
* Grog will not die as quick now (issue #6196 & #6197)
* Hermit dialogue cannot be accidentally skipped now (issue #6196)
* Fixed bug where tentacles would not spawn (issue #6196)
* Fast units cannot get stuck on the wall now (issue #6196)
* Camera now moves to where the charges are blown up (issue #6197)
* Fixed weird scout AI behaviour (issue #6196)
* S09: Rebels joining Kalehs side are now loyal (issue #6229 and #6365)
* The last unit killed to trigger certain events should no longer linger during those events (issue #6341)
* The Dark Assassins race is not revealed until uncloaked (issue #6213)
* The Dust Devils XP bar is now blue (issue #6212)
* World Conquest:
* Fixed for Winged Scepter not giving the correct defence values
* Corrected the attack icon of ice bow from a lightning bolt to an iceball
### Multiplayer
* Lobby joins are no longer displayed in chat even when that preference has been disabled (issue #6234)
* Added a specific prompt for moderators before joining password-protected games (issue #4101)
* Fixed add-ons not getting enabled for clients, leading to errors such as Unknown Terrain (issue #6285)
* Fixed an information leak where planned multi-turn moves could be visible to enemy players (issue #6292)
* Made planned moves visible to allies; this refers to trying to move more hexes than the unit can move this turn, it isnt the whiteboard (issue #6292)
### Lua API
* Fixed an error in `gui.get_user_choice()` and added support for the current DescriptionWML syntax (PR #6247)
### Translations
* Added translations: Spanish (Latin American)
* Updated translations: British English, Chinese (Simplified), Czech, Finnish, Italian, Japanese, Portuguese (Brazil), Scottish Gaelic, Turkish.
* Lots of corrections of typos in `en_US` (untranslated text), which will require marking translations as `non-fuzzy` again
* Implemented delayed translation option for gettext plurals (issue #6036, PR #6097)
* Comments in .po files are now kept in order when the .pot is regenerated (issue #5989)
### Units
* Added attack image for the Bone Knights trample
* Added attack image for the Nightblades kick
### User interface
* Improved translatability of MP ban durations (issue #6036, PR #6097)
* Fixed missing sidebar tooltips in low resolutions such as 800x600 (issue #6264)
### Miscellaneous and Bug Fixes
* Password storage was fixed to work with multiple accounts (PR #6290)
* wmllint now automatically removes `{MAGENTA_IS_THE_TEAM_COLOR}`
* Added workaround for connecting to the multiplayer server taking too long when Chinese or Japanese language is selected (issue #6291)
* Added `KeyboardInterrupt` handling to many Python WML tools
* Added `--simple-version` command line option
* wmllint, wmlscope and wmlindent now support the command line `--version` flag, which reports the current version of Wesnoth (issue #6346).
* wmllint is now capable of handling unit levels and types when checking recruitment patterns.
* Fixed units on a recall list sometimes being put on the map by `[modify_unit]` or `[store_unit]...[unstore_unit]` (issues #6295 and #6315)
* Fixed abilities that are shown as weapon specials in the attack prediction window being shown on the placeholder for units with no ranged attack, or dark adepts' melee response
* Fixed a glitch after a move is interrupted, paths to the hex where the move started were shown (issue #6292)
## Version 1.16.1
### Add-ons server
* Fixed `core=` attribute in `_server.pbl` being completely ignored (issue #5664).
### Campaigns
* Tutorial
* Use a portrait on the Campaigns menu.
* Sceptre of Fire
* S02p5: Added defeat condition if Alanin dies.
### Multiplayer
* Increased the limits of timer values (up to 10 minutes turn bonus, 50 minutes reservoir).
* Re-added HTML character escaping.
### Lua API
* Fixed an error in `gui.get_user_choice()` (part of PR #6247).
* Fixed an error in handling `x,y` locations (issue #6231).
### Packaging
* Fixed missing dependency on boost-math in the vcpkg config.
* Made `get_dlls.py` install libraries for `wesnothd` too.
### Translations
* Updated translations: Dutch, Italian, Portuguese (Brazil).
* Added po hints for time format strings.
### User interface
* Made the Add-ons Manager search box less unwieldy on very small resolutions.
* Made listbox header toggle buttons taller.
### WML Engine
* Fixed `[item]x,y=` at scenario scope (issue #6231).
### Miscellaneous and Bug Fixes
* Fixed missing tooltips on the side-bar (hover over the unit type to see a description, etc) (issues #6007 and #6096).
* Fixed several issues in the multiplayer server about TLS connections, error-handling and disconnections.
* Added `.DS_Store` and `Thumbs.db` to wmltool's list of files to ignore.
## Version 1.16.0
### Campaigns
* Sceptre of Fire
* S06: Fix some WML variable handling causing autodefeat in S06 or rune-equip bugs in a later scenario (issue #6146)
* Under the Burning Suns
* S05: Avoid village just taken by the player being re-assigned to the enemy (issue #6187)
### Lua API
* Fixed `wesnoth.audio.volume = N` always setting volume to 0.
### Translations
* Updated translations: British English, Czech, Finnish, Italian, Japanese, Portuguese (Brazil), Spanish.
### User interface
* Don't display the locale API identifier on the Language button (issue #6205).
### Miscellaneous and Bug Fixes
* Fix the engine exiting immediately due to a corrupt .mo file (issue #6194)
* When showing [message] with [options] but no default, highlight the first one (issue #6038)
* Ensure that [modify_unit] has some expected side-effects of unstoring a unit (issues #4978 and #5133)
## Version 1.15.18
### Campaigns
* Northern Rebirth
* Give Eryssas side a consistent team color (issue #5375)
* The Rise of Wesnoth
* Remove time-runs-out lose condition for final scenario (issue #6109)
* Under the Burning Suns
* Avoid a few possibilities where the Dust Devil could speak (issue #4892)
* Avoid dehydration status icon persisting into the next scenario (issue #5687)
### Editor
* Avoid rare crash situation after editing scenarios (issue #5883)
### Translations
* Updated translations: British English, Bulgarian, Czech, French, Italian, Portuguese (Brazil), Russian, Spanish.
* gettext plural forms now have caret prefixes stripped as well (PR #6094).
### User interface
* Steam cloud file is no longer listed in the Load Game dialog.
* Redefine green text in dialogs and tool-tips so they are no longer too dark with recent Pango versions (issue #4348)
* Gave the main menu's Language button a label again, now displaying the current language.
* Tweaked margins around the main menu's bottom row.
* Difficulty no longer displayed in the Load Game dialog when it is not relevant to a save file (issue #5321)
### Miscellaneous and Bug Fixes
* Correct unit display adjustments on certain tiles when at zoom level other than 100% (issue #5974)
## Version 1.15.17
### Campaigns
* World Conquest is re-enabled.
### Translations
* Updated translations: British English, Polish
### Miscellaneous and Bug Fixes
* Messenger MAI: fixed bug of own units sometimes blocking the path to a waypoint for the messenger
* A bug that would corrupt WML sent to the multiplayer and add-ons server was fixed.
## Version 1.15.16
### Campaigns
* Liberty
* S06: Enforce failure condition for allied team (issue #6019)
* The South Guard
* S8b: Reduced difficulty
* Tutorial
* S01: Don't let the first Quintain chase the player to a village (PR #5968)
* S01: Synchronise the choice of character dialog, so that replays don't get OOS (issue #5926)
* S01: Fix some glitches on HDPI displays (PR #6005)
* Secrets of the Ancients
* Synchronise the walking corpse recruitment dialog, so that replays don't get OOS (issue #5334)
* Under the Burning Suns
* S09: Reveal the boss of the scenario at the end of part 1 (issue #5540)
* World Conquest
* Add campaign icons, campaign image and credits (PR #5958)
* Update to new mushroom terrain from the deprecated mushroom terrain (issue #5135, PR #5960)
### Multiplayer
* If an add-on needs to be installed on all players' devices but doesn't specify a min version, assume it needs the latest (issue #5004)
### Terrain
* Fix transition between snowy mountains and castles (issue #6016)
### Translations
* Updated translations: British English, Chinese (Traditional), Czech, Finnish, French, Indonesian, Italian, Polish, Portuguese (Brazil), Russian, Turkish
### Units
* Added and improved Naga animations (issue #5980, PR #6012)
* Added Troll defense animations (PR #5964)
### User interface
* The names of the abilities used as specials appear in the attack prediction window with specials weapons
* In the Load Game dialog, list directories from previous versions in decending order
* Refined design of the Faction Select screen
* Made the campaign selection on bigger on HDPI screens (PR #6013)
### Miscellaneous and Bug Fixes
* Added a timeout when connecting to the wesnothd server
* Improved logging of deprecation messages, fixing duplication and missing timestamps (issue #5942)
* Added `[era]` attributes to the schema
* Added to wmllint an automatic update of four terrain-graphics macros
* Removed wmllint's check for spaces in e-mail addresses
* Standardised the date line of copyright statements, and updated them to 2021
## Version 1.15.15
### Translations
* Updated translations: British English, Bulgarian, Chinese (Traditional), Czech, Italian, Portuguese (Brazil), Russian, Spanish, Turkish
### User interface
* Added a prompt to allow migrating settings and redownloading add-ons used in a previous version of Wesnoth when starting a new versions for the first time.
### Miscellaneous and Bug Fixes
* Fixed: keyboard input during the loading screen intermittently caused a crash (issue #4447)
* AI: fixed custom synced commands not changing the game state
## Version 1.15.14
### Add-ons client
* Fixed: using the versions drop-down in small-screen mode returned to the title screen (issue #5810)

View file

@ -0,0 +1,9 @@
This directory is where PR authors can add a file per PR containing the text that should be added to the main changelog.md during the release process for the next version. The format should match that of the main changelog as well as use an existing category defined there. For example, a file could contain:
### Terrain
* Change codes "Irs, Ias, Icr, Ior, and Icn" to "Isr, Isa, Isc, Iwo, and Iwc", respectively
The purpose of this is to make it easier to add changelog entries with a PR while avoiding merge conflicts in the main changelog file if someone ends up merging their PR before yours.
The contents of this directory (aside from this README file) will then be deleted after each release.

View file

@ -1,386 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindPackageHandleStandardArgs
-----------------------------
This module provides a function intended to be used in :ref:`Find Modules`
implementing :command:`find_package(<PackageName>)` calls. It handles the
``REQUIRED``, ``QUIET`` and version-related arguments of ``find_package``.
It also sets the ``<PackageName>_FOUND`` variable. The package is
considered found if all variables listed contain valid results, e.g.
valid filepaths.
.. command:: find_package_handle_standard_args
There are two signatures::
find_package_handle_standard_args(<PackageName>
(DEFAULT_MSG|<custom-failure-message>)
<required-var>...
)
find_package_handle_standard_args(<PackageName>
[FOUND_VAR <result-var>]
[REQUIRED_VARS <required-var>...]
[VERSION_VAR <version-var>]
[HANDLE_COMPONENTS]
[CONFIG_MODE]
[FAIL_MESSAGE <custom-failure-message>]
)
The ``<PackageName>_FOUND`` variable will be set to ``TRUE`` if all
the variables ``<required-var>...`` are valid and any optional
constraints are satisfied, and ``FALSE`` otherwise. A success or
failure message may be displayed based on the results and on
whether the ``REQUIRED`` and/or ``QUIET`` option was given to
the :command:`find_package` call.
The options are:
``(DEFAULT_MSG|<custom-failure-message>)``
In the simple signature this specifies the failure message.
Use ``DEFAULT_MSG`` to ask for a default message to be computed
(recommended). Not valid in the full signature.
``FOUND_VAR <result-var>``
Obsolete. Specifies either ``<PackageName>_FOUND`` or
``<PACKAGENAME>_FOUND`` as the result variable. This exists only
for compatibility with older versions of CMake and is now ignored.
Result variables of both names are always set for compatibility.
``REQUIRED_VARS <required-var>...``
Specify the variables which are required for this package.
These may be named in the generated failure message asking the
user to set the missing variable values. Therefore these should
typically be cache entries such as ``FOO_LIBRARY`` and not output
variables like ``FOO_LIBRARIES``.
``VERSION_VAR <version-var>``
Specify the name of a variable that holds the version of the package
that has been found. This version will be checked against the
(potentially) specified required version given to the
:command:`find_package` call, including its ``EXACT`` option.
The default messages include information about the required
version and the version which has been actually found, both
if the version is ok or not.
``HANDLE_COMPONENTS``
Enable handling of package components. In this case, the command
will report which components have been found and which are missing,
and the ``<PackageName>_FOUND`` variable will be set to ``FALSE``
if any of the required components (i.e. not the ones listed after
the ``OPTIONAL_COMPONENTS`` option of :command:`find_package`) are
missing.
``CONFIG_MODE``
Specify that the calling find module is a wrapper around a
call to ``find_package(<PackageName> NO_MODULE)``. This implies
a ``VERSION_VAR`` value of ``<PackageName>_VERSION``. The command
will automatically check whether the package configuration file
was found.
``FAIL_MESSAGE <custom-failure-message>``
Specify a custom failure message instead of using the default
generated message. Not recommended.
Example for the simple signature:
.. code-block:: cmake
find_package_handle_standard_args(LibXml2 DEFAULT_MSG
LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
The ``LibXml2`` package is considered to be found if both
``LIBXML2_LIBRARY`` and ``LIBXML2_INCLUDE_DIR`` are valid.
Then also ``LibXml2_FOUND`` is set to ``TRUE``. If it is not found
and ``REQUIRED`` was used, it fails with a
:command:`message(FATAL_ERROR)`, independent whether ``QUIET`` was
used or not. If it is found, success will be reported, including
the content of the first ``<required-var>``. On repeated CMake runs,
the same message will not be printed again.
Example for the full signature:
.. code-block:: cmake
find_package_handle_standard_args(LibArchive
REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
VERSION_VAR LibArchive_VERSION)
In this case, the ``LibArchive`` package is considered to be found if
both ``LibArchive_LIBRARY`` and ``LibArchive_INCLUDE_DIR`` are valid.
Also the version of ``LibArchive`` will be checked by using the version
contained in ``LibArchive_VERSION``. Since no ``FAIL_MESSAGE`` is given,
the default messages will be printed.
Another example for the full signature:
.. code-block:: cmake
find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
find_package_handle_standard_args(Automoc4 CONFIG_MODE)
In this case, a ``FindAutmoc4.cmake`` module wraps a call to
``find_package(Automoc4 NO_MODULE)`` and adds an additional search
directory for ``automoc4``. Then the call to
``find_package_handle_standard_args`` produces a proper success/failure
message.
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake)
# internal helper macro
macro(_FPHSA_FAILURE_MESSAGE _msg)
if (${_NAME}_FIND_REQUIRED)
message(FATAL_ERROR "${_msg}")
else ()
if (NOT ${_NAME}_FIND_QUIETLY)
message(STATUS "${_msg}")
endif ()
endif ()
endmacro()
# internal helper macro to generate the failure message when used in CONFIG_MODE:
macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
# <name>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
if(${_NAME}_CONFIG)
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing:${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
else()
# If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
# List them all in the error message:
if(${_NAME}_CONSIDERED_CONFIGS)
set(configsText "")
list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
math(EXPR configsCount "${configsCount} - 1")
foreach(currentConfigIndex RANGE ${configsCount})
list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
string(APPEND configsText " ${filename} (version ${version})\n")
endforeach()
if (${_NAME}_NOT_FOUND_MESSAGE)
string(APPEND configsText " Reason given by package: ${${_NAME}_NOT_FOUND_MESSAGE}\n")
endif()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}")
else()
# Simple case: No Config-file was found at all:
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
endif()
endif()
endmacro()
function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
# Set up the arguments for `cmake_parse_arguments`.
set(options CONFIG_MODE HANDLE_COMPONENTS)
set(oneValueArgs FAIL_MESSAGE VERSION_VAR FOUND_VAR)
set(multiValueArgs REQUIRED_VARS)
# Check whether we are in 'simple' or 'extended' mode:
set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} )
list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
if(${INDEX} EQUAL -1)
set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
set(FPHSA_REQUIRED_VARS ${ARGN})
set(FPHSA_VERSION_VAR)
else()
cmake_parse_arguments(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
if(FPHSA_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
endif()
if(NOT FPHSA_FAIL_MESSAGE)
set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG")
endif()
# In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package()
# when it successfully found the config-file, including version checking:
if(FPHSA_CONFIG_MODE)
list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
endif()
if(NOT FPHSA_REQUIRED_VARS)
message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
endif()
endif()
# now that we collected all arguments, process them
if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG")
set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
endif()
list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
string(TOUPPER ${_NAME} _NAME_UPPER)
string(TOLOWER ${_NAME} _NAME_LOWER)
if(FPHSA_FOUND_VAR)
if(FPHSA_FOUND_VAR MATCHES "^${_NAME}_FOUND$" OR FPHSA_FOUND_VAR MATCHES "^${_NAME_UPPER}_FOUND$")
set(_FOUND_VAR ${FPHSA_FOUND_VAR})
else()
message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_NAME}_FOUND\" and \"${_NAME_UPPER}_FOUND\" are valid names.")
endif()
else()
set(_FOUND_VAR ${_NAME_UPPER}_FOUND)
endif()
# collect all variables which were not found, so they can be printed, so the
# user knows better what went wrong (#6375)
set(MISSING_VARS "")
set(DETAILS "")
# check if all passed variables are valid
set(FPHSA_FOUND_${_NAME} TRUE)
foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
if(NOT ${_CURRENT_VAR})
set(FPHSA_FOUND_${_NAME} FALSE)
string(APPEND MISSING_VARS " ${_CURRENT_VAR}")
else()
string(APPEND DETAILS "[${${_CURRENT_VAR}}]")
endif()
endforeach()
if(FPHSA_FOUND_${_NAME})
set(${_NAME}_FOUND TRUE)
set(${_NAME_UPPER}_FOUND TRUE)
else()
set(${_NAME}_FOUND FALSE)
set(${_NAME_UPPER}_FOUND FALSE)
endif()
# component handling
unset(FOUND_COMPONENTS_MSG)
unset(MISSING_COMPONENTS_MSG)
if(FPHSA_HANDLE_COMPONENTS)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(${_NAME}_${comp}_FOUND)
if(NOT DEFINED FOUND_COMPONENTS_MSG)
set(FOUND_COMPONENTS_MSG "found components: ")
endif()
string(APPEND FOUND_COMPONENTS_MSG " ${comp}")
else()
if(NOT DEFINED MISSING_COMPONENTS_MSG)
set(MISSING_COMPONENTS_MSG "missing components: ")
endif()
string(APPEND MISSING_COMPONENTS_MSG " ${comp}")
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
string(APPEND MISSING_VARS " ${comp}")
endif()
endif()
endforeach()
set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}")
string(APPEND DETAILS "[c${COMPONENT_MSG}]")
endif()
# version handling:
set(VERSION_MSG "")
set(VERSION_OK TRUE)
# check with DEFINED here as the requested or found version may be "0"
if (DEFINED ${_NAME}_FIND_VERSION)
if(DEFINED ${FPHSA_VERSION_VAR})
set(_FOUND_VERSION ${${FPHSA_VERSION_VAR}})
if(${_NAME}_FIND_VERSION_EXACT) # exact version required
# count the dots in the version string
string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${_FOUND_VERSION}")
# add one dot because there is one dot more than there are components
string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS)
if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT)
# Because of the C++ implementation of find_package() ${_NAME}_FIND_VERSION_COUNT
# is at most 4 here. Therefore a simple lookup table is used.
if (${_NAME}_FIND_VERSION_COUNT EQUAL 1)
set(_VERSION_REGEX "[^.]*")
elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 2)
set(_VERSION_REGEX "[^.]*\\.[^.]*")
elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 3)
set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*")
else ()
set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*")
endif ()
string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${_FOUND_VERSION}")
unset(_VERSION_REGEX)
if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD)
set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
set(VERSION_OK FALSE)
else ()
set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")")
endif ()
unset(_VERSION_HEAD)
else ()
if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _FOUND_VERSION)
set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
set(VERSION_OK FALSE)
else ()
set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")")
endif ()
endif ()
unset(_VERSION_DOTS)
else() # minimum version specified:
if (${_NAME}_FIND_VERSION VERSION_GREATER _FOUND_VERSION)
set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
set(VERSION_OK FALSE)
else ()
set(VERSION_MSG "(found suitable version \"${_FOUND_VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")")
endif ()
endif()
else()
# if the package was not found, but a version was given, add that to the output:
if(${_NAME}_FIND_VERSION_EXACT)
set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
else()
set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
endif()
endif()
else ()
# Check with DEFINED as the found version may be 0.
if(DEFINED ${FPHSA_VERSION_VAR})
set(VERSION_MSG "(found version \"${${FPHSA_VERSION_VAR}}\")")
endif()
endif ()
if(VERSION_OK)
string(APPEND DETAILS "[v${${FPHSA_VERSION_VAR}}(${${_NAME}_FIND_VERSION})]")
else()
set(${_NAME}_FOUND FALSE)
endif()
# print the result:
if (${_NAME}_FOUND)
FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
else ()
if(FPHSA_CONFIG_MODE)
_FPHSA_HANDLE_FAILURE_CONFIG_MODE()
else()
if(NOT VERSION_OK)
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})")
else()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing:${MISSING_VARS}) ${VERSION_MSG}")
endif()
endif()
endif ()
set(${_NAME}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
set(${_NAME_UPPER}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
endfunction()

View file

@ -1,47 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#.rst:
# FindPackageMessage
# ------------------
#
#
#
# FIND_PACKAGE_MESSAGE(<name> "message for user" "find result details")
#
# This macro is intended to be used in FindXXX.cmake modules files. It
# will print a message once for each unique find result. This is useful
# for telling the user where a package was found. The first argument
# specifies the name (XXX) of the package. The second argument
# specifies the message to display. The third argument lists details
# about the find result so that if they change the message will be
# displayed again. The macro also obeys the QUIET argument to the
# find_package command.
#
# Example:
#
# ::
#
# if(X11_FOUND)
# FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}"
# "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
# else()
# ...
# endif()
function(FIND_PACKAGE_MESSAGE pkg msg details)
# Avoid printing a message repeatedly for the same find result.
if(NOT ${pkg}_FIND_QUIETLY)
string(REPLACE "\n" "" details "${details}")
set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg})
if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}")
# The message has not yet been printed.
message(STATUS "${msg}")
# Save the find details in the cache to avoid printing the same
# message again.
set("${DETAILS_VAR}" "${details}"
CACHE INTERNAL "Details about finding ${pkg}")
endif()
endif()
endfunction()

View file

@ -1,221 +0,0 @@
#.rst:
# FindSDL2
# -------
#
# Locate SDL2 library
#
# This module defines
#
# ::
#
# SDL2_LIBRARY, the name of the library to link against
# SDL2_FOUND, if false, do not try to link to SDL2
# SDL2_INCLUDE_DIR, where to find SDL2.h
# SDL2_VERSION_STRING, human-readable string containing the version of SDL2
#
#
#
# This module responds to the flag:
#
# ::
#
# SDL2_BUILDING_LIBRARY
# If this is defined, then no SDL2_main will be linked in because
# only applications need main().
# Otherwise, it is assumed you are building an application and this
# module will attempt to locate and set the proper link flags
# as part of the returned SDL2_LIBRARY variable.
#
#
#
# Don't forget to include SDL2main.h and SDL2main.m your project for the
# OS X framework based version. (Other versions link to -lSDL2main which
# this module will try to find on your behalf.) Also for OS X, this
# module will automatically add the -framework Cocoa on your behalf.
#
#
#
# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your
# configuration and no SDL2_LIBRARY, it means CMake did not find your SDL2
# library (SDL2.dll, libsdl.so, SDL2.framework, etc). Set
# SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again.
# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this
# value as appropriate. These values are used to generate the final
# SDL2_LIBRARY variable, but when these values are unset, SDL2_LIBRARY
# does not get created.
#
#
#
# $SDL2DIR is an environment variable that would correspond to the
# ./configure --prefix=$SDL2DIR used in building SDL2. l.e.galup 9-20-02
#
# Modified by Eric Wing. Added code to assist with automated building
# by using environmental variables and providing a more
# controlled/consistent search behavior. Added new modifications to
# recognize OS X frameworks and additional Unix paths (FreeBSD, etc).
# Also corrected the header search path to follow "proper" SDL2
# guidelines. Added a search for SDL2main which is needed by some
# platforms. Added a search for threads which is needed by some
# platforms. Added needed compile switches for MinGW.
#
# On OSX, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of SDL2_LIBRARY to
# override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.
#
# Note that the header path has changed from SDL2/SDL.h to just SDL.h
# This needed to change because "proper" SDL convention is #include
# "SDL.h", not <SDL2/SDL.h>. This is done for portability reasons
# because not all systems place things in SDL/ (see FreeBSD).
#=============================================================================
# Copyright 2003-2009 Kitware, Inc.
# Copyright 2012 Benjamin Eikel
# Copyright 2015 Andreas Löf
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
# nor the names of their contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#=============================================================================
find_path(SDL2_INCLUDE_DIR SDL.h
HINTS
ENV SDL2DIR
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDLDIR}
include/SDL2 include
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
find_library(SDL2_LIBRARY_TEMP
NAMES SDL2
HINTS
ENV SDL2DIR
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
)
if(NOT SDL2_BUILDING_LIBRARY)
if(NOT SDL2_INCLUDE_DIR MATCHES ".framework")
# Non-OS X framework versions expect you to also dynamically link to
# SDLmain. This is mainly for Windows and OS X. Other (Unix) platforms
# seem to provide SDLmain for compatibility even though they don't
# necessarily need it.
find_library(SDL2MAIN_LIBRARY
NAMES SDL2main SDLmain SDLmain-1.1
HINTS
ENV SDL2DIR
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS
/sw
/opt/local
/opt/csw
/opt
)
endif()
endif()
# SDL2 may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
if(NOT APPLE)
find_package(Threads)
endif()
# MinGW needs an additional library, mwindows
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows
# (Actually on second look, I think it only needs one of the m* libraries.)
if(MINGW)
set(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW")
endif()
if(SDL2_LIBRARY_TEMP)
# For SDL2main
if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY)
list(FIND SDL2_LIBRARY_TEMP "${SDL2MAIN_LIBRARY}" _SDL2_MAIN_INDEX)
if(_SDL2_MAIN_INDEX EQUAL -1)
set(SDL2_LIBRARY_TEMP "${SDL2MAIN_LIBRARY}" ${SDL2_LIBRARY_TEMP})
endif()
unset(_SDL2_MAIN_INDEX)
endif()
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# CMake doesn't display the -framework Cocoa string in the UI even
# though it actually is there if I modify a pre-used variable.
# I think it has something to do with the CACHE STRING.
# So I use a temporary variable until the end so I can set the
# "real" variable in one-shot.
if(APPLE)
set(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
endif()
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
if(NOT APPLE)
set(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
endif()
# For MinGW library
if(MINGW)
set(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP})
endif()
# Set the final string here so the GUI reflects the final state.
set(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found")
# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
set(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "")
endif()
if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MAJOR "${SDL_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MINOR "${SDL_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_VERSION_PATCH "${SDL_VERSION_PATCH_LINE}")
set(SDL2_VERSION_STRING ${SDL_VERSION_MAJOR}.${SDL_VERSION_MINOR}.${SDL_VERSION_PATCH})
unset(SDL_VERSION_MAJOR_LINE)
unset(SDL_VERSION_MINOR_LINE)
unset(SDL_VERSION_PATCH_LINE)
unset(SDL_VERSION_MAJOR)
unset(SDL_VERSION_MINOR)
unset(SDL_VERSION_PATCH)
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)

View file

@ -1,131 +0,0 @@
#.rst:
# FindSDL2_image
# -------------
#
# Locate SDL2_image library
#
# This module defines:
#
# ::
#
# SDL2_IMAGE_LIBRARIES, the name of the library to link against
# SDL2_IMAGE_INCLUDE_DIRS, where to find the headers
# SDL2_IMAGE_FOUND, if false, do not try to link against
# SDL2_IMAGE_VERSION_STRING - human-readable string containing the
# version of SDL2_image
#
#
#
# For backward compatiblity the following variables are also set:
#
# ::
#
# SDL2IMAGE_LIBRARY (same value as SDL2_IMAGE_LIBRARIES)
# SDL2IMAGE_INCLUDE_DIR (same value as SDL2_IMAGE_INCLUDE_DIRS)
# SDL2IMAGE_FOUND (same value as SDL2_IMAGE_FOUND)
#
#
#
# $SDL2DIR is an environment variable that would correspond to the
# ./configure --prefix=$SDL2DIR used in building SDL2.
#
# Created by Andreas Löf. This was influenced by the FindSDL_image.cmake
# module, but with modifications to use SDL2.
#
#=============================================================================
# Copyright 2005-2009 Kitware, Inc.
# Copyright 2012 Benjamin Eikel
# Copyright 2015 Andreas Löf
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
# nor the names of their contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#=============================================================================
if(NOT SDL2_IMAGE_INCLUDE_DIR AND SDL2IMAGE_INCLUDE_DIR)
set(SDL2_IMAGE_INCLUDE_DIR ${SDL2IMAGE_INCLUDE_DIR} CACHE PATH "directory cache
entry initialized from old variable name")
endif()
find_path(SDL2_IMAGE_INCLUDE_DIR SDL_image.h
HINTS
ENV SDL2IMAGEDIR
ENV SDL2DIR
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
include/SDL2
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
if(NOT SDL2_IMAGE_LIBRARY AND SDL2IMAGE_LIBRARY)
set(SDL2_IMAGE_LIBRARY ${SDL2IMAGE_LIBRARY} CACHE FILEPATH "file cache entry
initialized from old variable name")
endif()
find_library(SDL2_IMAGE_LIBRARY
NAMES SDL2_image
HINTS
ENV SDL2IMAGEDIR
ENV SDL2DIR
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
)
if(SDL2_IMAGE_INCLUDE_DIR AND EXISTS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL_IMAGE_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL_IMAGE_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL_IMAGE_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_IMAGE_VERSION_MAJOR "${SDL_IMAGE_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_IMAGE_VERSION_MINOR "${SDL_IMAGE_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_IMAGE_VERSION_PATCH "${SDL_IMAGE_VERSION_PATCH_LINE}")
set(SDL2_IMAGE_VERSION_STRING ${SDL_IMAGE_VERSION_MAJOR}.${SDL_IMAGE_VERSION_MINOR}.${SDL_IMAGE_VERSION_PATCH})
unset(SDL_IMAGE_VERSION_MAJOR_LINE)
unset(SDL_IMAGE_VERSION_MINOR_LINE)
unset(SDL_IMAGE_VERSION_PATCH_LINE)
unset(SDL_IMAGE_VERSION_MAJOR)
unset(SDL_IMAGE_VERSION_MINOR)
unset(SDL_IMAGE_VERSION_PATCH)
endif()
set(SDL2_IMAGE_LIBRARIES ${SDL2_IMAGE_LIBRARY})
set(SDL2_IMAGE_INCLUDE_DIRS ${SDL2_IMAGE_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image
REQUIRED_VARS SDL2_IMAGE_LIBRARIES SDL2_IMAGE_INCLUDE_DIRS
VERSION_VAR SDL2_IMAGE_VERSION_STRING)
# for backward compatiblity
set(SDL2IMAGE_LIBRARY ${SDL2_IMAGE_LIBRARIES})
set(SDL2IMAGE_INCLUDE_DIR ${SDL2_IMAGE_INCLUDE_DIRS})
set(SDL2IMAGE_FOUND ${SDL2_IMAGE_FOUND})
mark_as_advanced(SDL2_IMAGE_LIBRARY SDL2_IMAGE_INCLUDE_DIR)

View file

@ -1,131 +0,0 @@
#.rst:
# FindSDL2_mixer
# -------------
#
# Locate SDL2_mixer library
#
# This module defines:
#
# ::
#
# SDL2_MIXER_LIBRARIES, the name of the library to link against
# SDL2_MIXER_INCLUDE_DIRS, where to find the headers
# SDL2_MIXER_FOUND, if false, do not try to link against
# SDL2_MIXER_VERSION_STRING - human-readable string containing the
# version of SDL2_mixer
#
#
#
# For backward compatiblity the following variables are also set:
#
# ::
#
# SDL2MIXER_LIBRARY (same value as SDL2_MIXER_LIBRARIES)
# SDL2MIXER_INCLUDE_DIR (same value as SDL2_MIXER_INCLUDE_DIRS)
# SDL2MIXER_FOUND (same value as SDL2_MIXER_FOUND)
#
#
#
# $SDL2DIR is an environment variable that would correspond to the
# ./configure --prefix=$SDL2DIR used in building SDL2.
#
# Created by Andreas Löf. This was influenced by the FindSDL_mixer.cmake
# module, but with modifications to use SDL2.
#
#=============================================================================
# Copyright 2005-2009 Kitware, Inc.
# Copyright 2012 Benjamin Eikel
# Copyright 2015 Andreas Löf
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
# nor the names of their contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#=============================================================================
if(NOT SDL2_MIXER_INCLUDE_DIR AND SDL2MIXER_INCLUDE_DIR)
set(SDL2_MIXER_INCLUDE_DIR ${SDL2MIXER_INCLUDE_DIR} CACHE PATH "directory cache
entry initialized from old variable name")
endif()
find_path(SDL2_MIXER_INCLUDE_DIR SDL_mixer.h
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
include/SDL2
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
if(NOT SDL2_MIXER_LIBRARY AND SDL2MIXER_LIBRARY)
set(SDL2_MIXER_LIBRARY ${SDL2MIXER_LIBRARY} CACHE FILEPATH "file cache entry
initialized from old variable name")
endif()
find_library(SDL2_MIXER_LIBRARY
NAMES SDL2_mixer
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
)
if(SDL2_MIXER_INCLUDE_DIR AND EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_MIXER_VERSION_MAJOR "${SDL_MIXER_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_MIXER_VERSION_MINOR "${SDL_MIXER_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_MIXER_VERSION_PATCH "${SDL_MIXER_VERSION_PATCH_LINE}")
set(SDL2_MIXER_VERSION_STRING ${SDL_MIXER_VERSION_MAJOR}.${SDL_MIXER_VERSION_MINOR}.${SDL_MIXER_VERSION_PATCH})
unset(SDL_MIXER_VERSION_MAJOR_LINE)
unset(SDL_MIXER_VERSION_MINOR_LINE)
unset(SDL_MIXER_VERSION_PATCH_LINE)
unset(SDL_MIXER_VERSION_MAJOR)
unset(SDL_MIXER_VERSION_MINOR)
unset(SDL_MIXER_VERSION_PATCH)
endif()
set(SDL2_MIXER_LIBRARIES ${SDL2_MIXER_LIBRARY})
set(SDL2_MIXER_INCLUDE_DIRS ${SDL2_MIXER_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer
REQUIRED_VARS SDL2_MIXER_LIBRARIES SDL2_MIXER_INCLUDE_DIRS
VERSION_VAR SDL2_MIXER_VERSION_STRING)
# for backward compatiblity
set(SDL2MIXER_LIBRARY ${SDL2_MIXER_LIBRARIES})
set(SDL2MIXER_INCLUDE_DIR ${SDL2_MIXER_INCLUDE_DIRS})
set(SDL2MIXER_FOUND ${SDL2_MIXER_FOUND})
mark_as_advanced(SDL2_MIXER_LIBRARY SDL2_MIXER_INCLUDE_DIR)

View file

@ -26,6 +26,7 @@ set(GETTEXT_XGETTEXT_OPTIONS
--keyword=vgettext
--keyword=VGETTEXT
--keyword=_n:1,2
--keyword=N_n:1,2
--keyword=sngettext:1,2
--keyword=vngettext:1,2
--keyword=VNGETTEXT:1,2
@ -108,9 +109,10 @@ if(NOT XSLTPROC_EXECUTABLE)
set(TRANSLATION_TOOLS_FOUND false)
endif(NOT XSLTPROC_EXECUTABLE)
# added a hack to find asciidoc when using latest archlinux by searching inside the python site packages...
find_path(ASCIIDOC_DOCBOOK_XSL_PATH
xhtml.xsl
HINTS /usr/share/asciidoc/docbook-xsl /etc/asciidoc/docbook-xsl /opt/local/etc/asciidoc/docbook-xsl
HINTS /usr/share/asciidoc/docbook-xsl /etc/asciidoc/docbook-xsl /opt/local/etc/asciidoc/docbook-xsl /usr/lib/*/site-packages/asciidoc/resources/docbook-xsl
NO_DEFAULT_PATH
)
if(NOT ASCIIDOC_DOCBOOK_XSL_PATH)

View file

@ -1,72 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#.rst:
# SelectLibraryConfigurations
# ---------------------------
#
#
#
# select_library_configurations( basename )
#
# This macro takes a library base name as an argument, and will choose
# good values for basename_LIBRARY, basename_LIBRARIES,
# basename_LIBRARY_DEBUG, and basename_LIBRARY_RELEASE depending on what
# has been found and set. If only basename_LIBRARY_RELEASE is defined,
# basename_LIBRARY will be set to the release value, and
# basename_LIBRARY_DEBUG will be set to basename_LIBRARY_DEBUG-NOTFOUND.
# If only basename_LIBRARY_DEBUG is defined, then basename_LIBRARY will
# take the debug value, and basename_LIBRARY_RELEASE will be set to
# basename_LIBRARY_RELEASE-NOTFOUND.
#
# If the generator supports configuration types, then basename_LIBRARY
# and basename_LIBRARIES will be set with debug and optimized flags
# specifying the library to be used for the given configuration. If no
# build type has been set or the generator in use does not support
# configuration types, then basename_LIBRARY and basename_LIBRARIES will
# take only the release value, or the debug value if the release one is
# not set.
# This macro was adapted from the FindQt4 CMake module and is maintained by Will
# Dicharry <wdicharry@stellarscience.com>.
macro( select_library_configurations basename )
if(NOT ${basename}_LIBRARY_RELEASE)
set(${basename}_LIBRARY_RELEASE "${basename}_LIBRARY_RELEASE-NOTFOUND" CACHE FILEPATH "Path to a library.")
endif()
if(NOT ${basename}_LIBRARY_DEBUG)
set(${basename}_LIBRARY_DEBUG "${basename}_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "Path to a library.")
endif()
get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE AND
NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE AND
( _isMultiConfig OR CMAKE_BUILD_TYPE ) )
# if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
# single-config generators, set optimized and debug libraries
set( ${basename}_LIBRARY "" )
foreach( _libname IN LISTS ${basename}_LIBRARY_RELEASE )
list( APPEND ${basename}_LIBRARY optimized "${_libname}" )
endforeach()
foreach( _libname IN LISTS ${basename}_LIBRARY_DEBUG )
list( APPEND ${basename}_LIBRARY debug "${_libname}" )
endforeach()
elseif( ${basename}_LIBRARY_RELEASE )
set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} )
elseif( ${basename}_LIBRARY_DEBUG )
set( ${basename}_LIBRARY ${${basename}_LIBRARY_DEBUG} )
else()
set( ${basename}_LIBRARY "${basename}_LIBRARY-NOTFOUND")
endif()
set( ${basename}_LIBRARIES "${${basename}_LIBRARY}" )
if( ${basename}_LIBRARY )
set( ${basename}_FOUND TRUE )
endif()
mark_as_advanced( ${basename}_LIBRARY_RELEASE
${basename}_LIBRARY_DEBUG
)
endmacro()

View file

@ -6,11 +6,5 @@ rem Usage:
rem cwesnoth <command line>
rem
setlocal
rem Disable stdout.txt/stderr.txt redirection in SDLmain.
set SDL_STDIO_REDIRECT=0
wesnoth --wconsole %*
endlocal
pause

View file

@ -71,15 +71,6 @@
default=yes
[/advanced_preference]
#[advanced_preference]
# field=dummy_slider
# name="Dummy Slider"
# type=int
# default=42
# min=0
# max=50
#[/advanced_preference]
[advanced_preference]
field=chat_message_aging
name= _ "Chat message aging"
@ -160,5 +151,13 @@
default=no
[/advanced_preference]
#ifdef __UNUSED__
#endif
[advanced_preference]
field=keepalive_timeout
name= _ "Server disconnect timeout"
description= _ "The amount of time in seconds before a disconnect is detected. If currently logged into the multiplayer server, you must log out and then log back in for this to take effect."
type=int
default=10
min=10
max=300
step=5
[/advanced_preference]

View file

@ -1188,7 +1188,10 @@ function ai_helper.get_attackable_enemies(filter, side, cfg)
local filter_plus_vision = {}
if filter then filter_plus_vision = ai_helper.table_copy(filter) end
if (not ignore_visibility) then
table.insert(filter_plus_vision, { "filter_vision", { side = viewing_side, visible = 'yes' } })
filter_plus_vision = {
{ "and", filter_plus_vision },
{ "filter_vision", { side = viewing_side, visible = 'yes' } }
}
end
local enemies = {}

View file

@ -670,6 +670,16 @@ function battle_calcs.battle_outcome(attacker, defender, cfg, cache)
def_strikes = math.floor(def_strikes * defender.hitpoints / defender.max_hitpoints)
end
-- At around 15 combined strikes, wesnoth.simulate_combat becomes faster
if (att_strikes + def_strikes > 14) then
if (def_weapon == 0) then def_weapon = nil end
if (att_weapon == 0) then
return wesnoth.simulate_combat(attacker, defender, def_weapon)
else
return wesnoth.simulate_combat(attacker, att_weapon, defender, def_weapon)
end
end
-- Maximum number of hits that either unit can survive
local att_max_hits = math.floor((attacker.hitpoints - 1) / def_damage)
if (att_max_hits > def_strikes) then att_max_hits = def_strikes end

View file

@ -59,7 +59,7 @@ end
local ca_castle_switch = {}
function ca_castle_switch:evaluation(cfg, data, filter_own, recruiting_leader)
-- @recruiting_leader is passed from the recuit_rushers CA for the leader_takes_village()
-- @recruiting_leader is passed from the recuit_rushers CA for the leader_takes_villages evaluation
-- evaluation. If it is set, we do the castle switch evaluation only for that leader
local start_time, ca_name = wesnoth.ms_since_init() / 1000., 'castle_switch'
@ -99,6 +99,11 @@ function ca_castle_switch:evaluation(cfg, data, filter_own, recruiting_leader)
return 0
end
-- Also need to check that the stored leader has not been killed
if data.CS_leader and not data.CS_leader.valid then
data.CS_leader, data.CS_leader_target = nil, nil
end
local avoid_map = AH.get_avoid_map(ai, nil, true)
if data.CS_leader and wesnoth.sides[wesnoth.current.side].gold >= AH.get_cheapest_recruit_cost(data.CS_leader)

View file

@ -2,6 +2,10 @@
-- Move AI units toward any enemy on the map. This has a very low CA score and
-- only kicks in when the AI would do nothing else. It prevents the AI from
-- being inactive on maps without enemy leaders and villages.
-- It has a very simple algorithm that does well enough in many cases, but should
-- be considered a fall-back option. If more complex behavior is desired, use
-- the move-to-targets CA and customize it with [goal] tags. That works even
-- on maps without enemy leaders and villages.
local H = wesnoth.require "helper"
local AH = wesnoth.require "ai/lua/ai_helper.lua"
@ -30,32 +34,53 @@ function ca_move_to_any_enemy:evaluation(cfg, data, filter_own)
-- In principle we don't even need to pass avoid_map here, as the loop below also
-- checks this, but we might as well eliminate unreachable enemies right away
local enemies = AH.get_attackable_enemies({}, wesnoth.current.sude, { avoid_map = avoid_map })
local enemies = AH.get_attackable_enemies({}, wesnoth.current.side, { avoid_map = avoid_map })
if (not enemies[1]) then
if AH.print_eval() then AH.done_eval_messages(start_time, ca_name) end
return 0
end
-- Presort unit/enemy pairs by distance in hexes to avoid unnecessary path finding.
-- As AI units are dealt with one by one below, this only needs to be done individually
-- for each AI unit, not for the whole set of pairs.
local unit_distances = {}
for i,u in ipairs(units) do
local enemy_distances = {}
for i,e in ipairs(enemies) do
local dist = wesnoth.map.distance_between(u, e)
table.insert(enemy_distances, { x = e.x, y = e.y, dist = dist })
end
-- Sort enemies by distance for this AI unit
table.sort(enemy_distances, function(a, b) return (a.dist < b.dist) end)
table.insert(unit_distances, { x = u.x, y = u.y, enemy_distances = enemy_distances })
end
-- Finally, sort AI units by distance to their closest enemies
table.sort(unit_distances, function(a, b) return (a.enemy_distances[1].dist < b.enemy_distances[1].dist) end)
local unit, destination
-- Find first unit that can reach a hex adjacent to an enemy, and find closest enemy of those reachable.
-- This does not need to find the absolutely best combination, close to that is good enough.
for i,u in ipairs(units) do
local best_cost, best_path, best_enemy = AH.no_path
for i,e in ipairs(enemies) do
-- We only need to look at adjacent hexes. And we don't worry whether they
-- are occupied by other enemies. If that is the case, no path will be found,
-- but one of those enemies will later be found as potential target.
for xa,ya in H.adjacent_tiles(e.x, e.y) do
if (not avoid_map:get(xa, ya)) then
local path, cost = AH.find_path_with_avoid(u, xa, ya, avoid_map)
-- Find the closest enemies to the sorted AI units. This does not need to find the absolutely best
-- combination, such as which hex adjacent to the unit is best, as these enemies are out
-- of reach of the AI (otherwise other CAs would have triggered previously).
-- This moves one AI unit at a time in order to speed up evaluation.
for i,ud in ipairs(unit_distances) do
local u = wesnoth.units.get(ud.x, ud.y)
local best_cost, best_path = AH.no_path
for i,ed in ipairs(ud.enemy_distances) do
-- Only do path finding if the distance to the enemy in less than the current best path cost,
-- otherwise it is impossible to find a shorter path.
if (not best_path) or (ed.dist < best_cost) then
if (not avoid_map:get(ed.x, ed.y)) then
local path, cost = AH.find_path_with_avoid(u, ed.x, ed.y, avoid_map, { ignore_enemies = true })
if (cost < best_cost) then
best_cost = cost
best_path = path
best_enemy = e
-- We also don't care if this is the closest adjacent hex, just pick the first found
break
end
end
end
end
if best_enemy then
if best_path then
MTAE_destination = AH.next_hop(u, nil, nil, { path = best_path, avoid_map = avoid_map })
if (MTAE_destination[1] ~= u.x) or (MTAE_destination[2] ~= u.y) then
MTAE_unit = u

File diff suppressed because it is too large Load diff

View file

@ -64,7 +64,7 @@ function retreat_functions.retreat_injured_units(units, avoid_map)
local regen_amount = 0
if abilities then
for regen in wml.child_range(abilities, "regenerate") do
if regen.value > regen_amount then
if (regen.value or 0) > regen_amount then
regen_amount = regen.value
end
end
@ -153,8 +153,6 @@ function retreat_functions.get_retreat_injured_units(healees, regen_amounts, avo
local max_rating, best_loc, best_unit = - math.huge
for i,u in ipairs(healees) do
local possible_locations = wesnoth.paths.find_reach(u)
-- TODO: avoid ally's villages (may be preferable to lower rating so they will
-- be used if unit is very injured)
if (not regen_amounts[i]) then
-- Unit cannot self heal, make the terrain do it for us if possible
local location_subset = {}
@ -168,7 +166,16 @@ function retreat_functions.get_retreat_injured_units(healees, regen_amounts, avo
end
local curing = 0
if heal_amount > 0 then
curing = 2
-- Do not take villages from an allied side
local owner = wesnoth.map.get_owner(loc)
if owner
and (owner ~= wesnoth.current.side)
and (not wesnoth.sides.is_enemy(wesnoth.current.side, owner))
then
heal_amount = 0
else
curing = 2
end
end
local healer_values = healing_locs:get(loc[1], loc[2]) or {0, 0}
heal_amount = math.max(heal_amount, healer_values[1])

View file

@ -312,11 +312,9 @@ function ca_bottleneck_move:evaluation(cfg, data)
-- A unit that cannot move any more, (or at least cannot move out of the way)
-- must be considered to have a very high rating (it's in the best position
-- it can possibly achieve), but only if it is in own territory
if on_my_territory then
local best_move_away = bottleneck_move_out_of_way(unit, data)
if (not best_move_away) then current_rating_map:insert(unit.x, unit.y, 20000) end
end
-- it can possibly achieve)
local best_move_away = bottleneck_move_out_of_way(unit, data)
if (not best_move_away) then current_rating_map:insert(unit.x, unit.y, 20000) end
end
local enemies = AH.get_attackable_enemies()

View file

@ -31,7 +31,7 @@ function ca_messenger_move:execution(cfg)
local path = AH.find_path_with_avoid(messenger, x, y, avoid_map)
if (not path) then path = { { messenger.x, messenger.y } } end
local next_hop = AH.next_hop(messenger, x, y, { path = path, avoid_map = avoid_map } )
local next_hop = AH.next_hop(messenger, x, y, { path = path, avoid_map = avoid_map, ignore_own_units = true } )
if (not next_hop) then next_hop = { messenger.x, messenger.y } end
-- Compare this to the "ideal path"

View file

@ -1,22 +0,0 @@
local internal_recruit_cas = {}
local internal_params = {}
-- The following external engine creates the CA functions recruit_rushers_eval and recruit_rushers_exec
-- It also exposes find_best_recruit and find_best_recruit_hex for use by other recruit engines
wesnoth.require("ai/lua/generic_recruit_engine.lua").init(internal_recruit_cas, internal_params)
local ca_recruit_rushers = {}
function ca_recruit_rushers:evaluation(cfg)
internal_params.high_level_fraction = cfg.high_level_fraction
internal_params.randomness = cfg.randomness
internal_params.score_function = function() return cfg.ca_score end
return internal_recruit_cas:recruit_rushers_eval()
end
function ca_recruit_rushers:execution()
return internal_recruit_cas:recruit_rushers_exec()
end
return ca_recruit_rushers

View file

@ -7,9 +7,9 @@ local M = wesnoth.map
local ca_wolves_multipacks_attack = {}
function ca_wolves_multipacks_attack:evaluation(cfg)
-- If wolves have attacks left, call this CA
-- It will be disabled by being black-listed, so as to avoid
-- having to do the full attack evaluation for every single move evaluation
-- If wolves have attacks left, always call the execution function in order to avoid
-- having to do the full attack evaluation for every loop through the CA evaluations.
-- If no attacks are found, attacks_left is set to zero for the wolves instead.
local wolves = AH.get_units_with_attacks {
side = wesnoth.current.side,
@ -192,6 +192,11 @@ function ca_wolves_multipacks_attack:execution(cfg)
end
end
end
else -- otherwise take attacks away from all wolves in the pack
for _,pack_wolf in ipairs(pack) do
local wolf = wesnoth.units.find_on_map { id = pack_wolf.id }[1]
AH.checked_stopunit_attacks(ai, wolf)
end
end
end
end

View file

@ -46,7 +46,7 @@ function wesnoth.micro_ais.protect_unit(cfg)
MAIH.delete_aspects(cfg.side, aspect_parms)
-- We also need to add the move_leader_to_keep CA back in
-- This works even if it was not removed, it simply overwrites the existing CA
wesnoth.side.add_ai_component(cfg.side, "stage[main_loop].candidate_action",
wesnoth.sides.add_ai_component(cfg.side, "stage[main_loop].candidate_action",
{
id="move_leader_to_keep",
engine="cpp",

View file

@ -21,7 +21,7 @@ function wesnoth.micro_ais.recruit_rushers(cfg)
local optional_keys = { "high_level_fraction", "randomness" }
local CA_parms = {
ai_id = 'mai_rusher_recruit',
{ ca_id = "move", location = 'ca_recruit_rushers.lua', score = cfg.ca_score or 180000 }
{ ca_id = "move", location = '../../lua/ca_recruit_rushers.lua', score = cfg.ca_score or 180000 }
}
handle_default_recruitment(cfg)

View file

@ -346,7 +346,6 @@
message= _ "<span color='#A00000'>Important:</span> The animal Micro AIs in this scenario are written for a number of animal unit types that do not exist in Wesnoth mainline, such as sheep, sheep dogs, or deer. In this test scenario, these units have been replaced by mainline units."
[/message]
# wmlindent: start ignoring
[message]
speaker=narrator
image=wesnoth-icon.png
@ -354,7 +353,6 @@
"+{ANIMAL_AI_DESCRIPTIONS1}
[/message]
# wmlindent: stop ignoring
[message]
speaker=narrator
image=wesnoth-icon.png
@ -366,13 +364,11 @@
caption= _ "Question for the Player"
image=wesnoth-icon.png
# wmllint: unbalanced-on
# wmlindent: start ignoring
message= _ "It is possible to include a human-controlled Side 1, so that the action stops once every turn for looking around (or to mess with things in debug mode).
Note that there is no end to this scenario. For demonstration purposes, any unit that is killed is replaced by another unit of the same type at the beginning of the next turn. In order to end the scenario, there's a right-click option - but that only works in human-controlled mode. In AI-only mode, you have to press 'Esc' or reload a previous savefile.
Also note: The Animal AIs are coded as Micro AIs. A Micro AI can be added and adapted to the need of a scenario easily using only WML and the [micro_ai] tag. Check out the <span color='#00A000'>Micro AI wiki page</span> at https://wiki.wesnoth.org/Micro_AIs for more information." # wmllint: no spellcheck
# wmlindent: stop ignoring
# wmllint: unbalanced-off
[option]
label= _ "<span font='16'>I'll just watch the animals.</span>"
@ -426,13 +422,11 @@ Also note: The Animal AIs are coded as Micro AIs. A Micro AI can be added and ad
type=Wolf
[/filter_second]
# wmlindent: start ignoring
[message]
speaker=$second_unit.id
message= _ "Yowl!
Translation: Those boars are mean! We better stay away from them and their young."
[/message]
# wmlindent: stop ignoring
[micro_ai]
side=6

View file

@ -347,7 +347,7 @@
[message]
speaker=Gwabbo
message= _ "Kai, please lead us against them yourself, it will hearten the folk. And — if you will permit — you reach the age now where a kai must learn battle skills."
message= _ "Kai, please lead us against them yourself, it will hearten the folk. And — if you will permit — you now reach the age where a kai must learn battle skills."
[/message]
[message]

View file

@ -38,7 +38,7 @@
[part]
{DW_BIGMAP}
story= _ "Mal-Ravanal, it seemed, was a great human wizard who had transformed himself into a lich. He had attacked the edges of the kingdom of Wesnoth, and was building a fearsome army of undead humans there. He had also sent necromancers to attack the orcs, and even the elves, in a quest for undead soldiers of different races. It seemed that he also lusted for merfolk slaves. Krellis scouts reported that more dark armies were heading north."
story= _ "Mal-Ravanal, it seemed, was a great human wizard who had transformed himself into a lich. He had attacked the edges of the Kingdom of Wesnoth, and was building a fearsome army of undead humans there. He had also sent necromancers to attack the orcs, and even the elves, in a quest for undead soldiers of different races. It seemed that he also lusted for merfolk slaves. Krellis scouts reported that more dark armies were heading north."
[/part]
[part]
@ -363,7 +363,7 @@ _f, _f, _f, _f, _f, _f, _f
[else]
[message]
speaker=Cylanna
message= _ "However, I am afraid that not everyone will follow you on so perilous an adventure. First you must prove you are not afraid of danger. If you leave now, many will think the mission is but an excuse to flee."
message= _ "However, I am afraid that not everyone will follow you on so perilous an adventure. First, you must prove you are not afraid of danger. If you leave now, many will think the mission is but an excuse to flee."
[/message]
[/else]
[/if]
@ -502,6 +502,7 @@ _f, _f, _f, _f, _f, _f, _f
[/message]
[message]
speaker=second_unit
#po: This should just be "translated" to whatever noise a bat makes in your language.
message= _ "Neep, neep!"
[/message]
[message]
@ -775,7 +776,7 @@ _f, _f, _f, _f, _f, _f, _f
[/if]
[message]
speaker=Cylanna
message= _ "I believe it is undead and has no will of its own, but the Kai may have the will power to direct it."
message= _ "I believe it is undead and has no will of its own, but the Kai may have the willpower to direct it."
[/message]
[message]
speaker=Kai Krellis
@ -928,7 +929,7 @@ _f, _f, _f, _f, _f, _f, _f
[else]
[message]
speaker=Cylanna
message= _ "Killing these enemies was good, but there were many more on the way. It will take greater might than we have to defeat them."
message= _ "Killing these enemies was good, but there are many more on the way. It will take greater might than we have to defeat them."
[/message]
[message]
speaker=Kai Krellis

View file

@ -431,7 +431,7 @@
[message]
speaker=narrator
image=wesnoth-icon.png
message= _ "You can choose when the slaves come out of their villages and attack their captors. When you are ready, right click anywhere and select the slave revolt."
message= _ "You can choose when the slaves come out of their villages and attack their captors. When you are ready, right-click anywhere and select 'Inspire the slaves to revolt'."
[/message]
#define PUT_SLAVE TYPE X Y
@ -499,6 +499,7 @@
#endif
[message]
speaker=narrator
#po: "to hand" is an expression that means "nearby".
message= _ "Cheers erupted from several villages, and former slaves rushed out with whatever meager weapons they could find, or fists and rocks if no weapons were to hand. Screams and curses came from the saurian castles."
image=wesnoth-icon.png
[/message]
@ -660,7 +661,7 @@
[message]
speaker=Gwabbo
message= _ "Dont let him go too crazy. Those saurian spears will go right through his scales."
message= _ "Dont let him go too crazy. Those saurian spears can go right through his scales."
[/message]
[/event]
@ -721,7 +722,7 @@
[message]
speaker=Kai Krellis
message= _ "So you will help us defeat them?"
message= _ "So, you will help us defeat them?"
[/message]
[message]

View file

@ -545,7 +545,7 @@
[then]
[message]
speaker=Marg-Tonz
message= _ "I told not to bother the ships! Now youre in for it."
message= _ "I told you not to bother the ships! Now youre in for it."
[/message]
{WAKE_ORCS}
[/then]

View file

@ -13,7 +13,7 @@
[story]
[part]
{DW_BIGMAP}
story= _ "It had been more of an adventure than the Kai Krellis had planned, but they were finally at their destination. The small island where Tyegëa and her students lived was before them."
story= _ "It had been more of an adventure than Kai Krellis had planned, but they were finally at their destination. The small island where Tyegëa and her students lived was before them."
[/part]
[/story]
@ -67,6 +67,10 @@
description= _ "Choose a unit to take the holy water"
condition=win
[/objective]
[gold_carryover]
carryover_percentage=100
[/gold_carryover]
[/objectives]
[unit]
@ -176,11 +180,11 @@
[/message]
[message]
speaker=Tyegea
message= _ "That remains to be seen. I find it disturbing that a Kai — and my descendant — would run here begging for help. Before I agree to save you, you have to prove that my blood flows in your veins. Prove that your are, despite appearances, courageous, and worthy of my help."
message= _ "That remains to be seen. I find it disturbing that a kai — and my descendant — would run here begging for help. Before I agree to save you, you have to prove that my blood flows in your veins. Prove that your are, despite appearances, courageous, and worthy of my help."
[/message]
[message]
speaker=Kai Krellis
message= _ "Well, I defeated the Drakes on your island."
message= _ "Well, I defeated the drakes on your island."
[/message]
[message]
speaker=Tyegea

View file

@ -288,7 +288,7 @@
[/message]
[message]
speaker=Caladon
message= _ "Well, he calls himself Mal-Govon now, but yes. He called this land the KINGDOM of Agnovon. He was its first king. And its last, and every one in between, too! He kept getting older and older, but he never died. Well, NOW hes dead of course. He still putters around in that castle over there, but he hasnt really cared about keeping his kingdom under control for a good long while. I bet I can wake him up, though. Watch THIS!"
message= _ "Well, he calls himself Mal-Govon now, but yes. He called this land the KINGDOM of Agnovon. He was its first king. And its last. And each one in between too! He kept getting older and older, but he never died. Well, NOW hes dead of course. He still putters around in that castle over there, but he hasnt really cared about keeping his kingdom under control for a good long while. I bet I can wake him up, though. Watch THIS!"
[/message]
[message]
speaker=narrator
@ -307,7 +307,7 @@
[/message]
[message]
speaker=Mal-Govon
message= _ "What I remember, you old fool, is you leaving behind the smoldering bodies of the orcs you had hired to steal my sword. Now, you bring mer to do your dirty work. When they lay expiring like gasping fish on the shore, will you not flee again? Do not speak to <i>me</i> of fear."
message= _ "What I remember, you old fool, is you leaving behind the smoldering bodies of the orcs you had hired to steal my sword. Now, you bring merfolk to do your dirty work. When they lie expiring like gasping fish on the shore, will you not flee again? Do not speak to <i>me</i> of fear."
[/message]
[message]
speaker=Kai Krellis
@ -369,7 +369,7 @@
[message]
speaker=Kai Krellis
message= _ "I am Kai Krellis of Jotha. I am attempting to defeat Mal-Govon and take his sword. Will you to join us in battle against a common enemy?"
message= _ "I am Kai Krellis of Jotha. I am attempting to defeat Mal-Govon and take his sword. Will you join us in battle against a common enemy?"
[/message]
[message]
@ -1068,7 +1068,7 @@
[then]
[message]
speaker=Kai Krellis
message= _ "We thank all you humans for your help, and release you from any farther obligations. Where we are going, you cannot easily follow."
message= _ "We thank all you humans for your help, and release you from any further obligations. Where we are going, you cannot easily follow."
[/message]
[kill]
race=human

View file

@ -189,6 +189,7 @@
result=victory
linger_mode=no
carryover_report=no
replay_save=no
{NEW_GOLD_CARRYOVER 100}
[/endlevel]
[/event]

View file

@ -419,7 +419,7 @@
[/message]
[message]
speaker=Nebthun
message= _ "Indeed, though we have not been hard pressed. The creatures have been busy fouling the waters and making the bay more to their liking. We worry that they will soon be back to finish with us, and I fear we will not survive."
message= _ "Indeed, though we have not been hard-pressed. The creatures have been busy fouling the waters and making the bay more to their liking. We worry that they will soon be back to finish with us, and I fear we will not survive."
[/message]
[message]
speaker=Kai Krellis

View file

@ -10,7 +10,7 @@
duration=forever
description= _ "This trident gives merfolk the power to throw lightning at their enemies."
silent=yes
cannot_use_message= _ "Only the merfolk can use this item."
cannot_use_message= _ "Only merfolk can use this item."
[filter]
race=merman
x={X}
@ -349,7 +349,7 @@
# End level:
[message]
speaker=Cylanna
message= _ "Killing these enemies was good, but there were many more on the way. Im sure it is still unsafe here."
message= _ "Killing these enemies was good, but there are many more on the way. Im sure it is still unsafe here."
[/message]
[message]

View file

@ -47,7 +47,7 @@
[about]
title= _ "Co-Authors"
[entry]
name="Oto 'tapik' Buchta"
name="Oto tapik Buchta"
comment="First scenario, various improvements"
[/entry]
[entry]
@ -62,7 +62,7 @@
[about]
title = _ "Campaign Maintenance"
[entry]
name = "Jeffrey 'Sigurd' Westcoat (SigurdFireDragon)"
name = "Jeffrey Sigurd Westcoat (SigurdFireDragon)"
comment= "former maintainer"
[/entry]
[/about]
@ -77,7 +77,7 @@
comment="Side-mutation and recall-list handling."
[/entry]
[entry]
name="Iris Morelle (shadowm/shikadiqueen)"
name="Iris Morelle (Irydacea/shadowm)"
comment="WML help"
[/entry]
[/about]
@ -91,7 +91,7 @@
title= _ "Additional thanks to"
[entry]
name="Arkadiusz D. Danilecki"
comment="Inspiration and borrowings from his 'A New Order'"
comment="Inspiration and borrowings from his A New Order"
[/entry]
[/about]
[/campaign]

View file

@ -53,13 +53,13 @@
[story]
[part]
story = _ "This is the true story of Delfador the Great from his humble beginnings; the tale of how he became the most famous and powerful of all the mages of Wesnoth."
story = _ "This is the true story of how Delfador the Great arose from his humble beginnings, the tale of how he became the most famous and powerful of all the mages of Wesnoth."
[/part]
[part]
story = _ "It begins on the Isle of Alduin, at the Academy which trains mages from throughout the Great Continent."
story = _ "It begins on the Isle of Alduin, at the Academy, which trains mages from throughout the Great Continent."
[/part]
[part]
story = _ "After ten years of training, two tests stand between that apprentice and attainment of the degree of Mage:"
story = _ "After ten years of training, two tests stand between one particular apprentice and attainment of the degree of Mage:"
[/part]
[part]
story = _ "<i>The New Mage Ceremony</i>"
@ -219,6 +219,7 @@
result=victory
linger_mode=no
carryover_report=no
replay_save=no
[/endlevel]
[/event]
[/scenario]

View file

@ -65,7 +65,7 @@
story = _ "Delfadors wandering time with Methor took them to many strange places, both within and beyond the lands of men. They studied and practiced, applying magecraft to aid those they traveled among and to deepen their understanding of the hidden currents and powers of the world."
[/part]
[part]
story = _ "But the elder mages health was taxed by the rigors of the journey. A year after the two left Alduin, Methor settled in a tranquil valley at the edge of the Dulatus Hills, not far southeast of the capitol at Weldyn. He opened a small school of his own, and with Delfador assisting him he began training a handful of youths who might in time be worthy to enter the great Academy on Alduin."
story = _ "But the elder mages health was taxed by the rigors of the journey. A year after the two left Alduin, Methor settled in a tranquil valley at the edge of the Dulatus Hills, not far southeast of the capital at Weldyn. He opened a small school of his own; and with Delfador assisting him, he began training a handful of youths who might in time be worthy to enter the great Academy on Alduin."
[/part]
[/story]
{DM_TRACK {SEARCH_STAGE2}}
@ -74,7 +74,7 @@
name=start
[message]
speaker=Methor
message=_"Delfador, your time as my apprentice is now almost over. You are a fully-trained mage, and may choose your own path in life. I hope, however, that you will take my advice, and enroll yourself in the service of King Garard. I have many contacts at the court and..."
message=_"Delfador, your time as my apprentice is now almost over. You are a fully-trained mage and may choose your own path in life. I hope, however, that you will take my advice and enroll yourself in the service of King Garard. I have many contacts at the court and"
[/message]
[message]
speaker=Grogor-Tuk

View file

@ -121,7 +121,7 @@
{NAMED_UNIT 1 Horseman 30 21 Gar _"Gar" ()} {FACING ne}
[message]
speaker=Derrin
message=_"Beware, stranger! I come to warn you — a party of orcs have moved into the Great Valley to the north, and have been raiding the lands around. If you press on westward, you will have to fight them."
message=_"Beware, stranger! I come to warn you — a party of orcs have moved into the Great Valley to the north and have been raiding the lands around. If you press on westward, you will have to fight them."
[/message]
[message]
speaker=Delfador

View file

@ -213,7 +213,7 @@
[/message]
[message]
speaker=Delfador
message=_"Kill them all! For our murdered friend."
message=_"Kill them all! For our slain friend."
[/message]
[/event]
@ -236,7 +236,7 @@
name=victory
[message]
speaker=Leollyn
message=_"Well now, you arrived just in the nick of time. A fellow mage, too, I see. Now what did you say your name was?"
message=_"Well now, you arrived just in the nick of time. A fellow mage too, I see. Now what did you say your name was?"
[/message]
[if]
[variable]

View file

@ -82,7 +82,7 @@
[/message]
[message]
speaker=Lionel
message=_"Bad news, my liege. The orcs mass in great numbers on the north shore of the river, near to the Ford of Abez. We have been cut off from the dwarves of Knalga — the rumor is that the orcs plan to overrun them, then turn their attention to Wesnoth. The good people of our northern provinces flee, and the land there falls into anarchy. We were attacked more than once by thugs and bandits, and by evil creatures that roamed the night in the shapes of men."
message=_"Bad news, my liege. The orcs mass in great numbers on the north shore of the river, near the Ford of Abez. We have been cut off from the dwarves of Knalga — the rumor is that the orcs plan to overrun them, then turn their attention to Wesnoth. The good people of our northern provinces flee, and the land there falls into anarchy. We were attacked more than once by thugs and bandits, and by evil creatures that roamed the night in the shapes of men."
[/message]
[message]
speaker=Leollyn
@ -90,7 +90,7 @@
[/message]
[message]
speaker=Garard II
message=_"Then there is no time to be lost! I will ride to the Ford of Abez with an army. As bold as the orcs may be to cross our borders in secret and prey on the defenseless, they are disorganized and cowardly in the face of a foe worth their mettle. They need reminding that Wesnoth is too hot for them. Gurcyn, you have been to the west — will the Elves lend their archers to help us?"
message=_"Then there is no time to be lost! I will ride to the Ford of Abez with an army. As bold as the orcs may be to cross our borders in secret and prey on the defenseless, they are disorganized and cowardly in the face of a foe worth their mettle. They need reminding that Wesnoth is too hot for them. Gurcyn, you have been to the west — will the elves lend their archers to help us?"
[/message]
[message]
speaker=Gurcyn
@ -98,7 +98,7 @@
[/message]
[message]
speaker=Delfador
message=_"Your majesty... may I join your army? I mean, I came to Weldyn to seek your employ. And if its archers you need, might not a mage be of help?"
message=_"Your Majesty... may I join your army? I mean, I came to Weldyn to seek your employ. And if its archers you need, might not a mage be of help?"
[/message]
[message]
speaker=Garard II
@ -125,11 +125,11 @@
[/message]
[message]
speaker=Delfador
message=_"Im honored that you would entrust me with such a task... but I too stay in Weldyn, by the kings order!"
message=_"Im honored that you would entrust me with such a task... but I too stay in Weldyn, by the Kings order!"
[/message]
[message]
speaker=Leollyn
message=_"Hmmm... King Garard placed you under my command, and I may command you to travel north, if you wish to; he will not interfere with a mission of magery as he might with one of war. But you must be sure you are ready for such a grave task. Dealings with the spirit world are dangerous even for the most powerful mages. Allow only your mind to enter the land of the dead — should your body follow, there is no return! Do you still wish to go?"
message=_"Hmmm... King Garard placed you under my command, and I may command you to travel north, if you wish to; he will not interfere with a mission of magery as he might with one of war. But you must be sure you are ready for such a grave task. Dealings with the spirit world are dangerous even for the most powerful mages. Allow only your mind to enter the Land of the Dead — should your body follow, there is no return! Do you still wish to go?"
[/message]
[message]
speaker=Delfador
@ -147,6 +147,7 @@
bonus=no
carryover_percentage=100
carryover_report=no
replay_save=no
[/endlevel]
[/event]
# wmllint: unwho LEOLLYN

View file

@ -155,11 +155,11 @@
#ifdef EASY
[message]
speaker=Garrath
message=_"You know, you really ought to be more careful before handing over money to suspicious strangers like me. But, since I'm feeling nice at the moment, I think I will actually keep my word and offer you some protection."
message=_"You know, you really ought to be more careful before handing over money to suspicious strangers like me. But, since Im feeling nice at the moment, I think I will actually keep my word and offer you some protection."
[/message]
[message]
speaker=Harold
message=_"Hey, what's your problem, Garrath? I thought we had a deal!"
message=_"Hey, whats your problem, Garrath? I thought we had a deal!"
[/message]
[message]
speaker=Garrath
@ -181,11 +181,11 @@
[/redraw]
[message]
speaker=Delfador
message=_"...I'm not entirely sure what just happened here, but I guess I should be grateful?"
message=_"...Im not entirely sure what just happened here, but I guess I should be grateful?"
[/message]
[message]
speaker=Lionel
message=_"While it appears we lucked out this time, I fear for the travelers for whom this man does NOT keep his word..."
message=_"While it appears fortune favored us this time, I fear for the travelers for whom this man does <i>not</i> keep his word..."
[/message]
#else
[message]
@ -251,7 +251,7 @@
[then]
[message]
speaker=Garrath
message=_"Hey, that was one of OUR villages! Deal's off; we're no longer protecting you!"
message=_"Hey, that was one of <i>our</i> villages! Deals off; were no longer protecting you!"
[/message]
# Need to conditionalize here to ensure Garrath's reply makes sense:
[if]
@ -261,7 +261,7 @@
[then]
[message]
speaker=Harold
message=_"So... does that mean that OUR deal is back on now, Garrath?"
message=_"So... does that mean that <i>our</i> deal is back on now, Garrath?"
[/message]
[message]
speaker=Garrath
@ -271,7 +271,7 @@
[/if]
[message]
speaker=Delfador
message=_"Wait, I'm sorry! I didn't realize you were so attached to that village! Please give me a chance to make it up to you!"
message=_"Wait, Im sorry! I didnt realize you were so attached to that village! Please give me a chance to make it up to you!"
[/message]
[message]
speaker=Garrath
@ -290,7 +290,7 @@
[message]
speaker=Delfador
# If debugging, feel free to edit the variable $gold into this message to see how much you have left:
message=_"I'm afraid I don't have much gold left..."
message=_"Im afraid I dont have much gold left..."
[/message]
[message]
speaker=Garrath
@ -307,7 +307,7 @@
speaker=Delfador
message=_"Well..."
[option]
label=_"Here's 20 more gold."
label=_"Heres 20 more gold."
[command]
[gold]
side=1
@ -320,18 +320,18 @@
{VARIABLE_OP times_garrath_paid add 1}
[message]
speaker=Garrath
message=_"Pleasure doing business with you! Just don't let it happen again!"
message=_"Pleasure doing business with you! Just dont let it happen again!"
[/message]
# If Harold is dead, dialogue will still make sense with this omitted:
[message]
speaker=Harold
message=_"Sheesh, Garrath, won't you make up your mind already?!"
message=_"Sheesh, Garrath, wont you make up your mind already?!"
[/message]
# (nothing else to do; Garrath stays an ally)
[/command]
[/option]
[option]
label=_"Nope, I'm not giving you any more gold."
label=_"Nope, Im not giving you any more gold."
[command]
[message]
speaker=Garrath
@ -364,12 +364,12 @@
[/message]
[message]
speaker=Delfador
message=_"Sorry! It's a hard habit to break! Perhaps I can pay you again to make up for it?"
message=_"Sorry! Its a hard habit to break! Perhaps I can pay you again to make up for it?"
# (possible future direction: actually let him do so, but at a higher price than before. For now, though, we won't.)
[/message]
[message]
speaker=Garrath
message=_"Nope, I'm through with your games! Men, attack!"
message=_"Nope, Im through with your games! Men, attack!"
[/message]
[modify_side]
side=2
@ -411,7 +411,7 @@
[then]
[message]
speaker=Garrath
message=_"Hm, it looks like you don't have any gold left. We're not interested in you anymore; bye!"
message=_"Hm, it looks like you dont have any gold left. Were not interested in you anymore; bye!"
[/message]
[kill]
side=2
@ -436,7 +436,7 @@
[/filter_second]
[message]
speaker=Harold
message=_"I'll be taking back that money that your men “borrowed” from me now, Garrath!"
message=_"Ill be taking back that money that your men “borrowed” from me now, Garrath!"
[/message]
[/event]

View file

@ -59,24 +59,190 @@
[/side]
# wmllint: validate-on
#define MEMOIRS_GENERATOR_SKELETON X Y
# set the generator's terrain
[event]
name=prestart
[item]
x,y={X},{Y}
image=scenery/monolith2.png
[/item]
[/event]
# generate a unit each turn
[event]
id=generator_{X}_{Y}
name=new turn
first_time_only=no
[scroll_to]
x,y={X},{Y}
[/scroll_to]
[sound]
name=magic-dark.ogg
[/sound]
{RANDOM (Skeleton,Skeleton Archer)}
[unit]
type=$random
side=2
x,y={X},{Y}
animate=yes
[/unit]
{CLEAR_VARIABLE random}
[/event]
# if someone capable of destroying the generator moves there
[event]
name=moveto
[filter]
side=1
x,y={X},{Y}
type_adv_tree=Mage,Journeyman Mage,Paladin
[/filter]
[message]
speaker=unit
message=_"I call upon all that is holy to break the power of this evil stone!"
[/message]
[sound]
name=lightning.ogg
[/sound]
[color_adjust]
red=100
green=100
blue=100
[/color_adjust]
[delay]
time=10
[/delay]
[color_adjust]
red=0
green=0
blue=0
[/color_adjust]
[remove_event]
id=generator_{X}_{Y}
[/remove_event]
[set_variable]
name=generators_destroyed
add=1
[/set_variable]
[if]
[variable]
name=generators_destroyed
equals={ON_DIFFICULTY 2 2 3}
[/variable]
[then]
[if]
[not]
[have_unit]
side=2
[/have_unit]
[/not]
[then]
[message]
speaker=Delfador
message=_"I think thats all of them! Lets move on — the less time we spend in this swamp the better."
[/message]
{CLEAR_VARIABLE generators_destroyed}
[endlevel]
result=victory
bonus=yes
[/endlevel]
[/then]
[else]
[objectives]
side=1
[objective]
description=_ "Survive until daybreak"
condition=win
show_turn_counter=yes
[/objective]
[objective]
{ALTERNATIVE_OBJECTIVE_CAPTION}
description=_ "Defeat remaining enemy units"
condition=win
[/objective]
[objective]
description=_ "Death of Delfador"
condition=lose
[/objective]
[objective]
description=_ "Death of Lionel"
condition=lose
[/objective]
[gold_carryover]
bonus=yes
carryover_percentage=80
[/gold_carryover]
[/objectives]
# if the player manages to destroy all generators he then has to kill remaining enemy units. an unlikely outcome unless we are on EASY. the following child event is spawned from this condition.
[event]
name=die
first_time_only=no
[filter]
side=2
[/filter]
[if]
[not]
[have_unit]
side=2
[/have_unit]
[/not]
[then]
[message]
speaker=Delfador
message=_"I think thats all of them! Lets move on — the less time we spend in this swamp the better."
[/message]
{CLEAR_VARIABLE generators_destroyed}
[endlevel]
result=victory
bonus=yes
[/endlevel]
[/then]
[/if]
[/event]
[/else]
[/if]
[/then]
[/if]
[/event]
# if someone who can't destroy the generator moves there
[event]
name=moveto
[filter]
x,y={X},{Y}
side=1
[not]
type_adv_tree=Mage,Journeyman Mage,Paladin
[/not]
[/filter]
[message]
speaker=unit
message=_"Evil emanates from this stone, but I have not the power to destroy it."
[/message]
[/event]
#enddef
#ifdef EASY
{MEMOIRS_GENERATOR_SKELETON 18 3}
{MEMOIRS_GENERATOR_SKELETON 10 16}
#endif
#ifdef NORMAL
#else
{MEMOIRS_GENERATOR_SKELETON 7 5}
{MEMOIRS_GENERATOR_SKELETON 11 19}
#endif
#ifdef HARD
{MEMOIRS_GENERATOR_SKELETON 18 3}
{MEMOIRS_GENERATOR_SKELETON 7 5}
{MEMOIRS_GENERATOR_SKELETON 11 19}
#endif HARD
#endif
[event]
name=prestart
{MODIFY_UNIT (id=Delfador) facing nw}
{MODIFY_UNIT (id=Lionel) facing se}
{VARIABLE generators_destroyed 0}
[objectives]
side=1
[objective]
@ -86,7 +252,7 @@
[/objective]
[objective]
{ALTERNATIVE_OBJECTIVE_CAPTION}
description=_ "Destroy the stones"
description=_ "Destroy the stones and defeat all enemies"
condition=win
[/objective]
[objective]
@ -180,35 +346,12 @@
speaker=Lionel
message=_"I hope I never see another night like that! Lets leave this evil place as quickly as possible — I want to get us out of Illuven before dusk."
[/message]
{CLEAR_VARIABLE generators_destroyed}
[endlevel]
result=victory
bonus=no
[/endlevel]
[/event]
# if the player manages to destroy all generators...
# an unlikely outcome unless we are on EASY
[event]
name=new turn
first_time_only=no
[if]
[not]
[have_unit]
side=2
[/have_unit]
[/not]
[then]
[message]
speaker=Delfador
message=_"I think thats all of them! Lets move on — the less time we spend in this swamp the better."
[/message]
[endlevel]
result=victory
bonus=yes
[/endlevel]
[/then]
[/if]
[/event]
{MEMOIRS_DEATHS}
[/scenario]

View file

@ -166,7 +166,7 @@
[/filter]
[message]
speaker=unit
message=_"I am defeated... My children: hear my last words! Destroy the humans, and never let them set foot on our island again!"
message=_"I am defeated... My children, hear my last words! Destroy the humans, and never let them set foot on our island again!"
[/message]
[message]
speaker=Delfador
@ -186,7 +186,7 @@
[/filter]
[message]
speaker=Delfador
message=_"Ur-Thorodor, listen to me! We are not here to take your island. If you will let just me remain here, then I promise you, on behalf of King Garard, that no Wesnothian will set foot on your island without your permission again. As a token of good faith, I command my army to return to the mainland."
message=_"Ur-Thorodor, listen to me! We are not here to take your island. If you will let me remain here, then I promise you, on behalf of King Garard, that no Wesnothian will set foot on your island without your permission again. As a token of good faith, I command my army to return to the mainland."
[/message]
[message]
speaker=Lionel
@ -194,7 +194,7 @@
[/message]
[message]
speaker=Delfador
message=_"Its the only way! Lionel, lead our soldiers back to the mainland. I will rejoin you when I have carried out my mission, and determined what is amiss in the world of the dead."
message=_"Its the only way! Lionel, lead our soldiers back to the mainland. I will rejoin you when I have carried out my mission and determined what is amiss in the world of the dead."
[/message]
[message]
speaker=Ur-Thorodor

View file

@ -81,7 +81,7 @@
story=_ "It was one of those moments that altered the destiny of the world. The orc warrior held many possibilities in his hand. He could simply have taken Delfadors head. Had that occurred, the orcs might have overrun the whole of Wesnoth and ruled it for ages. But what he chose, thinking it rare sport to abuse one of the hated human mages, was to strike Delfador with his gauntleted fist."
[/part]
[part]
story=_ "The blow interrupted Delfadors meditation. He began to topple over to the ground, but before his head reached it he vanished as though he had never been there at all."
story=_ "The blow interrupted Delfadors meditation. He began to topple over to the ground; but before his head reached it, he vanished as though he had never been there at all."
[/part]
[/story]
@ -156,7 +156,7 @@
[/message]
[message]
speaker=Delfador
message=_"This is surely the land of the dead... and it seems I am still alive. But then, as Leollyn warned, I can never return! I suppose I may as well explore."
message=_"This is surely the Land of the Dead... and it seems I am still alive. But then, as Leollyn warned, I can never return! I suppose I may as well explore."
[/message]
[set_recruit]
recruit=""
@ -297,7 +297,7 @@
{MEMOIRS_DEAD_HOUSE 36 18 Ghoul Penella ( _ "Penella") (
[message]
speaker=Penella
message=_"Do not fear me, Delfador. It is my doom to appear as you see me. I was a serf of a cruel lord. He demanded great taxes to fight many wars... then plague came... my family were starving, and we were forced to eat the flesh of those who had died."
message=_"Do not fear me, Delfador. It is my doom to appear as you see me. I was a serf of a cruel lord. He demanded great taxes to fight many wars... then plague came... my family was starving, and we were forced to eat the flesh of those who had died."
[/message]
[allow_recruit]
type=Ghoul
@ -530,7 +530,7 @@
[/message]
[message]
speaker=Delfador
message=_"I am only a man, a living man seeking a way home from the house of the dead."
message=_"I am only a man, a living man seeking a way home from the Land of the Dead."
[/message]
[message]
speaker=narrator

View file

@ -55,6 +55,9 @@
side=3
controller=ai
hidden=yes
# Shroud is required for share_vision to have the intended effect in the event where the player finds Chantal.
shroud=yes
share_vision=none
recruit=Elvish Ranger,Elvish Rider
{GOLD 120 110 100}
team_name=allies
@ -208,11 +211,11 @@
[/message]
[message]
speaker=Chantal
message=_"Yes. I am Chantal, and I know many things. I know you come from the great human kingdom of the south, and are a master of magic. You have faced great adversity, and visited a place from where few hope to return, and from where none before have returned unchanged. Fate is heavy upon you, and you deserve our help."
message=_"Yes. I am Chantal, and I know many things. I know you come from the great human kingdom of the south and are a master of magic. You have faced great adversity and visited a place from where few hope to return, from where none before have returned unchanged. Fate is heavy upon you, and you deserve our help."
[/message]
[message]
speaker=Delfador
message=_"Oh... well... very nice of you, but I dont feel very fated. In fact, Ive been positively blundering! I was just trying to defend my master Methors school against the orcs, and then to find out the source of the undead activity... and I have failed at both."
message=_"Oh... well... very nice of you, but I dont feel very fated. In fact, Ive been positively blundering! I was just trying to defend my master Methors school against the orcs, and then I was tasked with finding the source of the undead activity... and now I have failed at both."
[/message]
[message]
speaker=Chantal
@ -257,7 +260,8 @@
[/set_recruit]
[modify_side]
side=3
share_maps=yes
# Originally share_maps=yes. Since player's side has fog=no, this is effectively share_vision=all.
share_vision=shroud
[/modify_side]
[objectives]
side=1

View file

@ -239,7 +239,7 @@
# 417 YW; Parthyn is strongly garrisoned within the next
# few years. It is now 470 YW and Garard I died a few months
# previously. Garard II, the new King, is 30 years old.
message= _ "This is the nearest human garrison, Delfador. Here is the only place to cross the river. Soon after the last King of Wesnoth began his reign, he put a strong garrison not far south of here in the town of Parthyn, and orcs have not been able to cross into Wesnoth over this part of the river since."
message= _ "This is the nearest human garrison, Delfador — the only place where the river can be crossed. Soon after the last King of Wesnoth began his reign, he put a strong garrison not far south of here in the town of Parthyn, and orcs have not been able to cross into Wesnoth over this part of the river since."
[/message]
[message]
speaker=Delfador
@ -296,7 +296,7 @@
[then]
[message]
speaker=unit
message= _ "There's something there in the mist!"
message= _ "Theres something there in the mist!"
[/message]
[/then]
[/if]
@ -327,7 +327,7 @@
[/message]
[message]
speaker=Delfador
message= _ "Prepare to fight them! We must keep the Ford clear!"
message= _ "Prepare to fight them! We must keep the ford clear!"
[/message]
[fire_event]
name=enemies
@ -391,7 +391,7 @@
[/message]
[message]
role=Commander
message= _ "Yes, close by the southeast wall of our fort across the Ford. But they are jealous of their privileges and hold aloof from us."
message= _ "Yes, close by the southeast wall of our fort across the ford. But they are jealous of their privileges and hold aloof from us."
[/message]
[message]
speaker=Delfador
@ -544,7 +544,7 @@
[/message]
[message]
role=Teacher
message= _ "I recognize it. Very well; we shall join battle."
message= _ "I recognize it. Very well; we shall join the battle."
[/message]
{SUBSUME_SIDE_AND_VILLAGES 5}
@ -1106,11 +1106,11 @@
[/message]
[message]
speaker=Delfador
message= _ "My King does not command him... but if Elves and Humans do not stand together in this, I fear we will fall separately."
message= _ "My king does not command him... but if elves and humans do not stand together in this, I fear we will fall separately."
[/message]
[message]
speaker=Chantal
message= _ "I do not doubt it. Go to your King, Delfador, and have faith in yourself; for I sense that you hold the fate of Wesnoth in your hands, and will need all the strength you have. I think we will meet again."
message= _ "I do not doubt it. Go to your king, Delfador, and have faith in yourself; for I sense that you hold the fate of Wesnoth in your hands, and will need all the strength you have. I think we will meet again."
[/message]
{CHANTAL_DEPARTS}

View file

@ -15,16 +15,16 @@
[story]
[part]
story=_"While Delfador was still at the Academy, major events were taking place throughout Wesnoth. After centuries of squabbling, a warlord emerged to unite the Orcs. This was ill tidings for men and Elves alike."
story=_"While Delfador was still at the Academy, major events were taking place throughout Wesnoth. After centuries of squabbling, a warlord emerged to unite the orcs. This was ill tidings for humans and elves alike."
[/part]
[part]
#po: "errantry" is an archaic English word associated with medieval
#po: knights. It means he wandered around looking for monsters to
#po: slay and wrongs to right.
story=_"There was an elf named Kalenz who had already in Delfadors time been a legend among his people for centuries; his tale, <i>The Legend of Wesmere</i>, is known throughout the Elven lands. Prolonged in life by a necromantic potion, he put aside the High Lordship of the Elves after the death of his beloved wife, and wandered the Great Continent in errantry."
story=_"There was an elf named Kalenz who had already, in Delfadors time, been a legend among his people for centuries; his tale, <i>The Legend of Wesmere</i>, is known throughout the elven lands. Prolonged in life by a necromantic potion, he put aside the High Lordship of the Elves after the death of his beloved wife, and wandered the Great Continent in errantry."
[/part]
[part]
story=_"But Kalenz half-knew and half-feared he would be needed again, and the day he had long foreseen finally arrived. Report came to him of large orcish forces attacking the outskirts of elvish forests, including Lintanir itself. Kalenz quickly gathered a small troop of picked guards. War had returned to the land of the Elves."
story=_"But Kalenz half-knew and half-feared he would be needed again, and the day he had long foreseen finally arrived. Reports came to him of large orcish forces attacking the outskirts of elvish forests, including Lintanir itself. Kalenz quickly gathered a small troop of handpicked guards. War had returned to the land of the elves."
[/part]
[/story]
{DM_TRACK {KALENZ_STAGE1}}
@ -206,7 +206,7 @@
name=start
[message]
speaker=Tan-drul
message= _ "Kill these filthy elves! All warlords will then accept our leader, Zorlan, as king and he will reward you all!"
message= _ "Kill these filthy elves! Show all warlords the might of Zorlan! When they accept him as sovereign we will all be rewarded!"
[/message]
[message]
speaker=Kalenz
@ -260,7 +260,7 @@
[/message]
[message]
speaker=Chantal
message= _ "A paramount chief of all the Orcs has arisen, and he is setting a trap for the humans at the Ford of Abez. I think we must aid the humans, lest we be defeated separately once they are crushed."
message= _ "A paramount chief of all the orcs has arisen, and he is setting a trap for the humans at the Ford of Abez. I think we must aid the humans, lest we be defeated separately once they are crushed."
[/message]
[message]
speaker=Chantal
@ -280,7 +280,11 @@
[/message]
[message]
speaker=Chantal
message= _ "No. But Cleodil gave some of the Books least dangerous secrets to her daughters, and so I had them from my mother. And I think I have found the one we have been awaiting since Cleodil accepted the guardianship of the Book. You know of what I speak."
message= _ "No. The preparation of holy water was a secret that Lady Cleodil passed on to her daughters and granddaughters. She thought it wise to share the least dangerous secrets of the Book."
[/message]
[message]
speaker=Chantal
message= _ "Returning to present matters, I believe I have found the one we have been awaiting ever since Lady Cleodil accepted guardianship of the Book. You know of what I speak."
[/message]
[message]
speaker=Kalenz
@ -288,7 +292,7 @@
[/message]
[message]
speaker=Chantal
message= _ "Delfador, a mage trusted of their King. He has survived a passage through the Land of the Dead not merely alive but uncorrupted. He helped us defeat the orcs when they threatened Lintanir, and I fought undead with him at Parthyn Ford. I have come north partly because I am thinking to fetch the Book of Crelanu so I can take it to him."
message= _ "Delfador, a mage trusted of their king. He has survived a passage through the Land of the Dead not merely alive but uncorrupted. He helped us defeat the orcs when they threatened Lintanir, and I fought undead with him at Parthyn Ford. I have come north partly because I am thinking to fetch the Book of Crelanu so I can take it to him."
[/message]
[message]
speaker=Kalenz

View file

@ -208,7 +208,7 @@
[/lift_fog]
[message]
role=enemy_speaker
message= _ "We have more help!"
message= _ "We have reinforcements!"
[/message]
{MODIFY_UNIT (role=enemy_speaker) role ""}
[/event]
@ -237,7 +237,7 @@
[/lift_fog]
[message]
role=enemy_speaker
message= _ "And now even more help!"
message= _ "And now even more reinforcements!"
[/message]
{MODIFY_UNIT (role=enemy_speaker) role ""}
[/event]
@ -262,7 +262,7 @@
[/message]
[message]
speaker=Chantal
message= _ "That is Delfador. Do you see, now?"
message= _ "That is Delfador. Do you see now?"
[/message]
[message]
speaker=Kalenz
@ -282,7 +282,7 @@
[/message]
[message]
speaker=Kalenz
message= _ "You speak my thought, granddaughter. May it be so."
message= _ "You speak my thoughts, granddaughter. May it be so."
[/message]
[objectives]
@ -328,10 +328,19 @@
[/not]
[/filter_condition]
# do not allow an elvish victory before Delfador shows up
{NAMED_UNIT 2 (Draug) 42 3 Krumful _"Krumful" (facing=sw)}
{NAMED_UNIT 2 (Spectre) 42 2 Unhul _"Unhul" (facing=sw)}
# try to impede an elvish victory before Delfador shows up
[message]
speaker=Rudimil
message= _ "The elves have advanced much further than anticipated; Krumful, Unhul, arise!"
[/message]
{NAMED_UNIT 2 (Draug) 46 2 Krumful _"Krumful" (facing=sw)}
[+unit]
animate=yes
[/unit]
{NAMED_UNIT 2 (Spectre) 44 2 Unhul _"Unhul" (facing=sw)}
[+unit]
animate=yes
[/unit]
[/event]
[event]
@ -351,7 +360,7 @@
[/fire_event]
[message]
speaker=Delfador
message= _ "I arrive too late for the entertainment, it would seem."
message= _ "I have arrived too late for the entertainment, it would seem."
[/message]
[/then]
[/if]

View file

@ -241,7 +241,7 @@
[/message]
[message]
speaker=Delfador
message= _ "Agreed, but we must make haste, for the King is hard pressed."
message= _ "Agreed, but we must make haste, for the King is hard-pressed."
[/message]
[/event]
@ -316,7 +316,7 @@
[/filter]
[message]
speaker=Zorlan
message=_ "Argh! It can't be, beaten by these swine!"
message=_ "Argh! It cant be, beaten by these swine!"
[/message]
[/event]
@ -328,7 +328,7 @@
[/message]
[message]
speaker=Garard II
message= _ "Delfador! And you, elvish friends! The kingdom of Wesnoth is in your debt today!"
message= _ "Delfador! And you, elvish friends! The Kingdom of Wesnoth is in your debt today!"
[/message]
[message]
speaker=Delfador
@ -344,27 +344,27 @@
[/message]
[message]
speaker=Delfador
message= _ "Your Majesty, we have more urgent matters. Leollyn sent me on a mission to find out why the dead are restless. A foul necromancer has opened a portal to the land of the dead. It must be closed at all costs, and I am afraid my skills may be insufficient for that task."
message= _ "Your Majesty, we have more urgent matters. Leollyn sent me on a mission to find out why the dead are restless. A foul necromancer has opened a portal to the Land of the Dead. It must be closed at all costs, and I am afraid my skills may be insufficient for that task."
[/message]
[message]
speaker=Kalenz
message= _ "Delfador, our weapons are weak against the undead, but perhaps we have other help to give you. Centuries ago the great mage Crelanu entrusted to us a book of lore, powerful knowledge, perilous secrets that it took Crelanu all his life to gather."
message= _ "Delfador, our weapons are weak against the undead, but perhaps we have other help to give you. Centuries ago, the great mage Crelanu entrusted to us a book of lore and perilous secrets that took him his entire life to gather."
[/message]
[message]
speaker=Kalenz
message= _ "Crelanu charged us to guard his book until someone worthy of it appeared. We believe you are that one, Delfador. The book may help you find a way to close that portal."
message= _ "Crelanu charged us with guarding this book until someone worthy of it should arrive. We believe you are the one, Delfador. The book may help you find a way to close the portal."
[/message]
[message]
speaker=Delfador
message= _ "Friends, your words do me perhaps greater honor than I deserve. I am not sure I am worthy of this charge."
message= _ "Friends, your words do me greater honor than I perhaps deserve. I am not sure I am worthy of this charge."
[/message]
[message]
speaker=Kalenz
message= _ "Chantal and I are sure of your quality. But be warned: there is a curse on this book. Crelanu fairly warned us that his arts would bring much woe down upon us. And so it proved, though at the time we had no other choice. The victories you win with it may cost you as dearly."
message= _ "You may have some doubts, but Chantal and I are sure of your quality. But be warned: there is a curse on this book. Crelanu fairly warned us that his arts would bring much woe down upon us. And so it proved, though at the time we had no other choice. The victories you win with it may cost you as dearly."
[/message]
[message]
speaker=Delfador
message= _ "Curse or no, we must close that portal soon, or else we are all doomed."
message= _ "Curse or no, we must close the portal soon, or else we are all doomed."
[/message]
[message]
speaker=Kalenz
@ -380,7 +380,7 @@
[/message]
[message]
speaker=Delfador
message= _ "Thank you, friends. May we meet again in happier times. Now I must make haste, for I need to study the book and prepare for the battle with the undead."
message= _ "Thank you, friends. May we meet again in happier times. Now I must make haste, for I need to study the book and prepare for battle with the undead."
[/message]
{ELVES_DEPART}

View file

@ -15,7 +15,7 @@
[story]
[part]
music=loyalists.ogg
story=_"Kalenz and Chantal and their troops departed to ride against the remnants of the orcish Great Horde. Delfador returned to Weldyn with the King and his gift from the elves, the Book of Crelanu. However, despite the victory, Delfador was deeply worried by the undead menace. On the way back they met with Lionel who was arriving with reinforcements, and were deeply saddened to learn that Leollyn had died under very suspicious circumstances."
story=_"Kalenz, Chantal, and their troops departed to ride against the remnants of the orcish Great Horde. Delfador returned to Weldyn with the King and his gift from the elves, the Book of Crelanu. However, despite the victory, Delfador was deeply worried by the undead menace. On the way back, they met with Lionel who was arriving with reinforcements, and were deeply saddened to learn that Leollyn had died under very suspicious circumstances."
[/part]
[part]
background=story/portraits/garard-large.png
@ -31,15 +31,15 @@
[/part]
[part]
background=story/portraits/garard-large.png
story={CAPTION ( _ "Garard II")} + _ "Peace, Lionel. The elves fought well and have earned Our respect. But this council is here to address an alarming matter. Young master Delfador here reports of an undead threat. He was able to fight them off at Parthyn Ford, but more are coming."
story={CAPTION ( _ "Garard II")} + _ "Peace, Lionel. The elves fought well and have earned our respect. But this council is here to address an alarming matter. Young master Delfador here reports of an undead threat. He was able to fight them off at Parthyn Ford, but more are coming."
[/part]
[part]
background=portraits/lionel.png
story={CAPTION ( _ "Lionel")} + _ "With your permission, sire, I will take some picked men north and crush these abominations."
story={CAPTION ( _ "Lionel")} + _ "With your permission, sire, I will take some handpicked men north and crush these abominations."
[/part]
[part]
background=story/portraits/young_delfador-large.png
story={CAPTION ( _ "Delfador")} + _ "Your majesty, these are no stray undead; this lunatic, Iliah-Malal, has opened a portal to the Land of the Dead. Unless we close this portal soon, the relatively small numbers of enemy troops he now commands will swell into an endless stream of undead. And our army, having equipped and trained primarily to fight raiding orcs, is not well suited to fight even the forces he fields now. Mages, in combination with heavy infantry are most effective against them."
story={CAPTION ( _ "Delfador")} + _ "Your Majesty, these are no stray undead; this lunatic, Iliah-Malal, has opened a portal to the Land of the Dead. Unless we close this portal soon, the relatively small numbers of enemy troops he now commands will swell into an endless stream of undead. And our army, having equipped and trained primarily to fight raiding orcs, is not well suited to fight even the forces he fields now. Mages, in combination with heavy infantry, are most effective against them."
[/part]
[part]
background=story/portraits/sagus.png
@ -104,7 +104,7 @@
[/part]
[part]
background=story/portraits/young_delfador-large.png
story={CAPTION ( _ "Delfador")} + _ "There are three things we must do. First, we must organize our defenses as best we can. Second, we need to ask the elves to create a diversion, to distract and delay Iliah-Malal. The elves will not be able to fight the undead head on on the field, but they can harass them by striking from forests where the undead dare not follow. And last, I have been studying and I think I now know how to close Iliah-Malals portal to the Land of the Dead. I will need a small escort, but this must be done immediately."
story={CAPTION ( _ "Delfador")} + _ "There are three things we must do. First, we must organize our defenses as best we can. Second, we need to ask the elves to create a diversion that will distract and delay Iliah-Malal. The elves will not be able to fight the undead head-on on the field, but they can harass them by striking from forests where the undead dare not follow. And last, I have been studying the Book of Crelanu and I think I now know how to close Iliah-Malals portal to the Land of the Dead. I will need a small escort, but this must be done immediately."
[/part]
[part]
background=portraits/lionel.png
@ -116,7 +116,7 @@
[/part]
[part]
background=story/portraits/young_delfador-large.png
story={CAPTION ( _ "Delfador")} + _ "These are only the first steps. If we are to defeat the undead, we need to use and train the army differently than we have. First, you must recall every mage in Wesnoth, from Alduin and elsewhere. And you must prepare more heavy infantry."
story={CAPTION ( _ "Delfador")} + _ "These are only the first steps. If we are to defeat the undead, we need to reform the composition of our army. First, you must recall every mage in Wesnoth, from Alduin and elsewhere. And you must prepare more heavy infantry."
[/part]
[part]
background=portraits/lionel.png
@ -124,7 +124,7 @@
[/part]
[part]
background=story/portraits/garard-large.png
story={CAPTION ( _ "Garard II")} + _ "Delfador could. You will command the heavy infantry. Make sure to shield the mages in battle, for they are precious. Now, go, close the portal and come back soon!"
story={CAPTION ( _ "Garard II")} + _ "Delfador could. You will command the heavy infantry. Make sure to shield our mages in battle, for they are precious. Now go, close the portal and come back soon!"
[/part]
[/story]

View file

@ -20,7 +20,7 @@
[story]
[part]
story= _ "Delfador took a small escort to the north in order to attempt to close the portal. But with Iliah-Malals army at large north of the Great River, this was a perilous road. Delfador was constrained to avoid well-trodden paths. This meant a detour..."
story= _ "Delfador took a small escort to the north on a mission to close the portal. But with Iliah-Malals army at large north of the Great River, this was a perilous road. It was imperative that Delfador avoid well-trodden paths. This meant a detour..."
show_title=yes
[/part]
[/story]
@ -144,7 +144,7 @@
[/message]
[message]
speaker=Delfador
message=_"Dwarves, attacked by undead. We must help them."
message=_"Dwarves, under attack by undead. We must help them."
[/message]
[message]
speaker=Gruv-Malal
@ -195,7 +195,7 @@
[/message]
[message]
speaker=Delfador
message=_"I am Delfador. Friends, a great evil has been unleashed. A portal has been opened to the land of the dead near the northernmost extent of these hills, nearly under the eaves of Lintanir Forest. I must close it, or else we are all doomed."
message=_"I am Delfador. Friends, a great evil has been unleashed. A portal has been opened to the Land of the Dead near the northernmost extent of these hills, nearly under the eaves of Lintanir Forest. I must close it, or else we are all doomed."
[/message]
[message]
speaker=Ulrek

View file

@ -23,7 +23,7 @@
[story]
[part]
story= _ "The dwarves led Delfador through a veritable maze of tunnels. Delfador was amazed at the speed with which the dwarves could move through their tunnels. Far sooner than he would have believed possible they reached their destination, undetected by Iliah-Malal."
story= _ "The dwarves led Delfador through a veritable maze of tunnels; Delfador was amazed at the speed with which the dwarves could move through them. Far sooner than he would have believed possible, they reached their destination, undetected by Iliah-Malal."
show_title=yes
[/part]
[/story]
@ -209,11 +209,11 @@
name=start
[message]
speaker=Prepolur
message=_"Living men and dwarves are nearing. Rise, Portal Guard and slay the intruders!"
message=_"Living men and dwarves are nearing. Rise, my fellow dead, and slay the intruders!"
[/message]
[message]
speaker=Delfador
message=_"The portal must be closed at any cost. You must allow me to get close to it, so I can seal it."
message=_"The portal must be closed at all costs. You must allow me to get close to it, so I can seal it."
[/message]
[message]
speaker=Ulrek
@ -255,7 +255,7 @@
[/message]
[message]
speaker=Delfador
message= _ "They have reinforcements. Hurry, we must close the portal before we are overrun!"
message= _ "(<i>To the dwarves</i>). Their master has arrived with reinforcements. Hurry, we must close the portal before we are overrun!"
[/message]
[message]
speaker=Iliah-Malal
@ -328,11 +328,11 @@
[/filter]
[message]
speaker="Iliah-Malal"
message=_ "Fool! You could not kill me in the land of the dead, nor can you in the land of the living! I transcend both death and life, and I will destroy you!"
message=_ "Fool! You could not kill me in the Land of the Dead, nor can you in the land of the living! I transcend both death and life, and I will destroy you!"
[/message]
[message]
speaker=Delfador
message= _ "We cannot defeat him now. We must carry out our mission first, so we will be able to defeat him later."
message= _ "We cannot defeat him now. We must allow some time to pass after the portal has been closed. By then, his power will have weakened, rendering him vulnerable."
[/message]
# He gets a full heal, not an advance, otherwise we'd have to make sure we ported him to the next scenario properly
{FULL_HEAL id=Iliah-Malal}
@ -373,7 +373,7 @@
[/message]
[message]
speaker=Iliah-Malal
message=_"Delfador, you have proven your skill. I have an offer for you. Join me and you will live as my right hand. Together our magic skills will be unmatched and irresistible."
message=_"Delfador, you have proven your skill. I have an offer for you. Join me, and you will live as my right hand. Together, our magic skills will be unmatched and irresistible."
[/message]
[message]
speaker=Delfador
@ -393,7 +393,7 @@
[/message]
[message]
speaker=Delfador
message=_"(<i>To the dwarves</i>). Now that the portal is closed, his power will start to weaken, but that doesn't help us now. Quickly, back in the tunnel! I will stay last to seal the entrance."
message=_"(<i>To the dwarves</i>). Now that the portal is closed, his power will start to weaken. It will be some time until he is rendered vulnerable; at the moment, we must flee. Quickly, back to the tunnel! I will enter it last to seal the entrance."
[/message]
#Delf collapses the cave entrance

View file

@ -15,7 +15,7 @@
[story]
[part]
story= _ "With the portal closed, Iliah-Malal was weakened. He retreated into the Swamp of Dread to recover his strength and attempt another conjuration. Delfadors troop, hurrying west by secret Dwarvish ways and stealthily crossing the Listra by night, found the necromancer there, on the brink of raising another army amidst the fetid reek."
story= _ "With the portal closed, Iliah-Malal was weakened. He retreated into the Swamp of Dread to recover his strength and attempt another conjuration. Delfadors troop, hurrying west by secret dwarvish ways and stealthily crossing the Listra by night, found the necromancer there, on the brink of raising another army amidst the fetid reek."
[/part]
[part]
story= _ "Using dwarvish and elvish messengers, Delfador was able to communicate the news to the King and ask for help. Mustering all the troops he could find, Lionel marched north to join Delfador for the battle that would decide the fate of Wesnoth."
@ -330,7 +330,7 @@
[/message]
[message]
speaker=Delfador
message= _ "Your mindless minions will be no match for the spirit and fire of the living."
message= _ "Your mindless minions are no match for the spirit and fire of the living."
[/message]
{MODIFY_UNIT (id=Lionel) facing nw}
[message]
@ -491,11 +491,11 @@
[/if]
[message]
speaker=Lionel
message=_"And the portal, it is sealed for good?"
message=_"And the portal, is it sealed for good?"
[/message]
[message]
speaker=Delfador
message=_"Yes, it is. But it was too great a work of magic to be entirely undone; there is a flaw still remaining, a trace of Iliah-Malals way between worlds. Raising undead will be a little easier in the future than it has been before. Those who come after us will have to be vigilant against the corruption of the dark arts, and show themselves worthy of the land they live in."
message=_"Yes, it is. But it was too great a work of magic to be entirely undone; there is a flaw still remaining, a trace of Iliah-Malals way between worlds. Raising undead will be a little easier in the future than it has been before. Those who come after us will have to be vigilant against the corruption of the dark arts and show themselves worthy of the land they live in."
[/message]
# This is set-up for the next scenario, where Kalenz leads side 1 again

View file

@ -31,7 +31,7 @@
[/part]
[part]
# Eldred's raid takes place in 496
story= _ "One day reports came of Wesnothian forces seizing elvish land on the border. Kalenz gathered a small force and hurried to the disputed country."
story= _ "One day, reports came of Wesnothian forces seizing elvish land on the border. Kalenz gathered a small force and hurried to the disputed country."
[/part]
[/story]
{DM_TRACK {BOOK_STAGE1}}
@ -162,11 +162,11 @@
[/lift_fog]
[message]
speaker=Kalenz
message= _ "Generals of Wesnoth: you have attacked defenseless elvish land. You must leave immediately. I am Kalenz, High Lord of the Elves. Delfador the Great will confirm the treaty between us."
message= _ "Generals of Wesnoth, you have attacked defenseless elvish land. You must leave immediately. I am Kalenz, High Lord of the Elves. Delfador the Great will confirm the treaty between us."
[/message]
[message]
speaker=Eldred
message= _ "This is elvish land no more. I, Eldred, prince of Wesnoth and heir to the throne, claim it for Wesnoth and Queen Asheviere. Delfador does not rule in Wesnoth!"
message= _ "This is elvish land no more. I, Eldred, Prince of Wesnoth and heir to the throne, claim it for Wesnoth and Queen Asheviere. Delfador does not rule in Wesnoth!"
[/message]
[message]
speaker=Kalenz
@ -213,11 +213,11 @@
[/message]
[message]
speaker=Chantal
message= _ "Kalenz, I am very worried. There is a cloud of evil swirling around the Royal Palace, and it has more centers than the prince alone. I see dark days ahead..."
message= _ "Kalenz, I am very worried. There is a cloud of evil swirling around the Royal Palace, and it has more centers than the Prince alone. I see dark days ahead..."
[/message]
[message]
speaker=Kalenz
message= _ "I wonder if the Book of Crelanu is not behind this. The Book is not evil in itself, but the power it gives tends to magnify any evil in the readers soul. Delfador, has anyone but you opened its covers since you got it from us?"
message= _ "I wonder if the Book of Crelanu is behind this. The Book is not evil in itself, but the power it gives tends to magnify any evil in the readers soul. Delfador, has anyone but you opened its covers since you got it from us?"
[/message]
[message]
speaker=Delfador

View file

@ -26,7 +26,7 @@
#po: "demesne" = the part of a feudal lord's lands reserved for
#po: personal use.
#po: The "Sceptre" spelling is intentional.
story=_ "Upon his return to Weldyn, Delfador discovered that the Book was missing. The queen had left with a strong escort to visit her familys demesne and her ailing parents. Lionel, the Kings most trusted general, had been sent at Ashevieres request on an errand to Knalga to retrieve the Sceptre of Fire. That mission would cost Lionel his life; and neither Lionel nor Delfador knew that Lionels mission had been compromised from the start."
story=_ "Upon his return to Weldyn, Delfador discovered that the Book was missing. The Queen had left with a strong escort to visit her familys demesne and her ailing parents. Lionel, the Kings most trusted general, had been sent at Ashevieres request on an errand to Knalga to retrieve the Sceptre of Fire. That mission would cost Lionel his life; and neither Lionel nor Delfador knew that Lionels mission had been compromised from the start."
[/part]
[part]
story= _ "Although the King did reprimand Eldred for his actions, Delfador could sense that the military commanders were solidly behind Eldred and his mother. Asheviere had flattered them and beguiled them with promises of glory and plunder in a coming war."
@ -35,7 +35,7 @@
story= _ "Delfador was granted an audience with the King and expressed his concerns about the Book, but the King put off a decision until Asheviere returned to Weldyn, and ordered Delfador to take no further action. And for once, Delfador knew he could not obey the Kings order."
[/part]
[part]
story= _ "Since he could not ask even his personal guard to go against the Kings wishes, he turned to Kalenz and the elves. Traveling by night to remain unseen they reached Ashevieres family demesne."
story= _ "Since he could not ask even his personal guard to go against the Kings wishes, he turned to Kalenz and the elves. Traveling by night to remain unseen, they reached Ashevieres family demesne."
[/part]
[/story]
{DM_TRACK {BOOK_STAGE3}}
@ -161,11 +161,11 @@
[message]
speaker=Delfador
message= _ "I am grieved to have to resort to this. Yet the book must be recovered at all costs and no one should be left alive."
message= _ "I am grieved to have to resort to this. Yet the Book must be recovered at all costs; and no one should be left alive."
[/message]
[message]
speaker=Kalenz
message= _ "The books curse is already weighing heavy upon you, friend. But we cannot falter. We have acquired orcish weapons, as you have requested. Nobody will be able to link this to you or the elves."
message= _ "The Books curse is already weighing heavy upon you, friend. But we cannot falter. We have acquired orcish weapons, as you have requested. Nobody will be able to link this to you or the elves."
[/message]
[message]
speaker=Kalenz
@ -173,7 +173,7 @@
[/message]
[message]
speaker=Rhuwin
message= _ "Elves! And that traitor, Delfador is with them! Riders, quickly, go alert the queen. And guards, prepare to strike them down!"
message= _ "Elves! And that traitor, Delfador is with them! Riders, quickly, go alert the Queen. And guards, prepare to strike them down!"
[/message]
{HIGHLIGHT_IMAGE 1 19 scenery/signpost.png ()}
@ -272,7 +272,7 @@
name=new-objectives
[message]
speaker=Delfador
message= _ "The guards are slain. Now we must look for the book."
message= _ "The guards are slain. Now we must look for the Book."
[/message]
[objectives]
side=1
@ -331,7 +331,7 @@
[then]
[message]
speaker=Rhuwin
message= _ "Everyone, quickly, go alert the queen!"
message= _ "Everyone, quickly, go alert the Queen!"
[/message]
# loop through all remaining units and have them go to the nearest exit
[store_unit]

View file

@ -21,7 +21,7 @@
show_title=yes
[/part]
[part]
story= _ "Delfador and the elves went through the secret door and ended in the dungeon, a veritable maze of narrow corridors."
story= _ "Delfador and the elves went through the secret door and found themselves in the dungeon, a veritable maze of narrow corridors."
[/part]
[/story]
@ -122,7 +122,7 @@
{MODIFY_UNIT (side=1) facing sw}
[message]
speaker=Chantal
message= _ "There is no doubt the book is here; I can feel its presence."
message= _ "There is no doubt the Book is here; I can feel its presence."
[/message]
[message]
speaker=Kalenz
@ -149,7 +149,7 @@
[/message]
[message]
speaker="Sagus"
message= _ "I am the one whose place you took in the court of Wesnoth. But my daughter brought me what you seek, and I have seized the power of it."
message= _ "I am the one whose place you took in the court of Wesnoth. But my daughter brought me what you seek, and I have gained its power."
[/message]
[message]
speaker=Chantal
@ -161,7 +161,7 @@
[/message]
[message]
speaker=Delfador
message= _ "Sagus... old friend... The book you have taken is no good for you, your daughter or the Kingdom. It will destroy you both!"
message= _ "Sagus... old friend... The Book you have taken is no good for you, your daughter, or the Kingdom. It will destroy you both!"
[/message]
[message]
speaker="Sagus"
@ -211,7 +211,7 @@
[/filter]
[message]
speaker=Delfador
message= _ "The book is recovered, but the damage is done. Friends, thank you. Now lets get out of here!"
message= _ "The Book is recovered, but the damage is done. Friends, thank you. Now lets get out of here!"
[/message]
[endlevel]
result=victory

View file

@ -8,13 +8,13 @@
[story]
[part]
music=battle-epic.ogg
story=_ "Delfador returned to Weldyn, but not before secreting the Book of Crelanu in a place known only to him. To his surprise, Asheviere made no further mention of the events in the manor. But not long after, orcish raids increased to a degree that threatened the Kingdom. The King mustered his armies to deal with the orcish menace, leading to the great battle at the Ford of Abez that was lost through betrayal."
story=_ "Delfador returned to Weldyn, but not before secreting the Book of Crelanu to a place known only to him. To his surprise, Asheviere made no mention of the events in the manor. But not long after, orcish raids increased to a degree that threatened the Kingdom. The King mustered his armies to deal with the orcish menace, leading to the great battle at the Ford of Abez that was lost through betrayal."
[/part]
[part]
story=_"Delfadors last great quest, after that battle, was ending the usurpation of Asheviere and restoring the rightful <i>Heir to the Throne</i>."
[/part]
[part]
story=_ "Afterwards, Delfador lived the rest of his life as an advisor to the new rulers. He devoted much of his attention to restoring the Great Academy in Alduin to its former glory. But his efforts there were to bear little fruit in his lifetime; for through many years of war and strife, very few mages were left, and none of them came near in power and skill to Delfador, greatest mage ever to grace the courts of Wesnoth."
story=_ "Afterwards, Delfador lived the rest of his life as an advisor to the new rulers. He devoted much of his attention to restoring the great Academy in Alduin to its former glory. But his efforts there were to bear little fruit in his lifetime; for through many years of war and strife, very few mages were left, and none of them came near in power and skill to Delfador, greatest mage ever to grace the courts of Wesnoth."
[/part]
[/story]

View file

@ -267,15 +267,11 @@
{OLD_JOURNEY 683 422}
{OLD_JOURNEY 656 418}
{OLD_BATTLE 625 417}
{NEW_JOURNEY 598 405}
{NEW_JOURNEY 564 400}
{NEW_JOURNEY 537 413}
{NEW_JOURNEY 519 433}
{NEW_JOURNEY 498 463}
{NEW_JOURNEY 490 500}
{NEW_JOURNEY 511 530}
{NEW_JOURNEY 552 547}
{NEW_JOURNEY 583 565}
{NEW_JOURNEY 640 436}
{NEW_JOURNEY 655 455}
{NEW_JOURNEY 645 485}
{NEW_JOURNEY 646 519}
{NEW_JOURNEY 618 543}
{NEW_JOURNEY 612 582}
{NEW_JOURNEY 644 590}
{NEW_JOURNEY 670 615}
@ -302,15 +298,11 @@
{OLD_JOURNEY 683 422}
{OLD_JOURNEY 656 418}
{OLD_BATTLE 625 417}
{OLD_JOURNEY 598 405}
{OLD_JOURNEY 564 400}
{OLD_JOURNEY 537 413}
{OLD_JOURNEY 519 433}
{OLD_JOURNEY 498 463}
{OLD_JOURNEY 490 500}
{OLD_JOURNEY 511 530}
{OLD_JOURNEY 552 547}
{OLD_JOURNEY 583 565}
{OLD_JOURNEY 640 436}
{OLD_JOURNEY 655 455}
{OLD_JOURNEY 645 485}
{OLD_JOURNEY 646 519}
{OLD_JOURNEY 618 543}
{OLD_JOURNEY 612 582}
{OLD_JOURNEY 644 590}
{OLD_JOURNEY 670 615}
@ -433,14 +425,15 @@
{OLD_JOURNEY 513 359}
{OLD_JOURNEY 532 363}
{OLD_BATTLE 556 361}
{NEW_JOURNEY 564 400}
{NEW_JOURNEY 537 413}
{NEW_JOURNEY 519 433}
{NEW_JOURNEY 498 463}
{NEW_JOURNEY 490 500}
{NEW_JOURNEY 511 530}
{NEW_JOURNEY 552 547}
{NEW_JOURNEY 583 565}
{NEW_JOURNEY 590 360}
{NEW_JOURNEY 613 377}
{NEW_JOURNEY 626 396}
{NEW_JOURNEY 620 422}
{NEW_JOURNEY 640 436}
{NEW_JOURNEY 655 455}
{NEW_JOURNEY 645 485}
{NEW_JOURNEY 646 519}
{NEW_JOURNEY 618 543}
{NEW_JOURNEY 612 582}
{NEW_JOURNEY 644 590}
{NEW_JOURNEY 670 615}
@ -454,14 +447,15 @@
{OLD_JOURNEY 513 359}
{OLD_JOURNEY 532 363}
{OLD_BATTLE 556 361}
{OLD_JOURNEY 564 400}
{OLD_JOURNEY 537 413}
{OLD_JOURNEY 519 433}
{OLD_JOURNEY 498 463}
{OLD_JOURNEY 490 500}
{OLD_JOURNEY 511 530}
{OLD_JOURNEY 552 547}
{OLD_JOURNEY 583 565}
{OLD_JOURNEY 590 360}
{OLD_JOURNEY 613 377}
{OLD_JOURNEY 626 396}
{OLD_JOURNEY 620 422}
{OLD_JOURNEY 640 436}
{OLD_JOURNEY 655 455}
{OLD_JOURNEY 645 485}
{OLD_JOURNEY 646 519}
{OLD_JOURNEY 618 543}
{OLD_JOURNEY 612 582}
{OLD_JOURNEY 644 590}
{OLD_JOURNEY 670 615}
@ -478,14 +472,15 @@
{OLD_JOURNEY 513 359}
{OLD_JOURNEY 532 363}
{OLD_BATTLE 556 361}
{OLD_JOURNEY 564 400}
{OLD_JOURNEY 537 413}
{OLD_JOURNEY 519 433}
{OLD_JOURNEY 498 463}
{OLD_JOURNEY 490 500}
{OLD_JOURNEY 511 530}
{OLD_JOURNEY 552 547}
{OLD_JOURNEY 583 565}
{OLD_JOURNEY 590 360}
{OLD_JOURNEY 613 377}
{OLD_JOURNEY 626 396}
{OLD_JOURNEY 620 422}
{OLD_JOURNEY 640 436}
{OLD_JOURNEY 655 455}
{OLD_JOURNEY 645 485}
{OLD_JOURNEY 646 519}
{OLD_JOURNEY 618 543}
{OLD_JOURNEY 612 582}
{OLD_JOURNEY 644 590}
{OLD_JOURNEY 670 615}

View file

@ -80,7 +80,7 @@
[/filter]
[message]
speaker=Delfador
message=_"With Ulrek slain we cannot count on dwarvish help! All is lost!"
message=_"With Ulrek slain, we cannot count on dwarvish help! All is lost!"
[/message]
[endlevel]
result=defeat

View file

@ -1,85 +0,0 @@
#textdomain wesnoth-dm
#define MEMOIRS_GENERATOR_SKELETON X Y
# set the generator's terrain
[event]
name=prestart
[item]
x,y={X},{Y}
image=scenery/monolith2.png
[/item]
[/event]
# generate a unit each turn
[event]
id=generator_{X}_{Y}
name=new turn
first_time_only=no
[scroll_to]
x,y={X},{Y}
[/scroll_to]
[sound]
name=magic-dark.ogg
[/sound]
{RANDOM (Skeleton,Skeleton Archer)}
[unit]
type=$random
side=2
x,y={X},{Y}
animate=yes
[/unit]
{CLEAR_VARIABLE random}
[/event]
# if someone capable of destroying the generator moves there
[event]
name=moveto
[filter]
side=1
x,y={X},{Y}
type_adv_tree=Mage,Journeyman Mage,Paladin
[/filter]
[message]
speaker=unit
message=_"I call upon all that is holy to break the power of this evil stone!"
[/message]
[sound]
name=lightning.ogg
[/sound]
[color_adjust]
red=100
green=100
blue=100
[/color_adjust]
[delay]
time=10
[/delay]
[color_adjust]
red=0
green=0
blue=0
[/color_adjust]
[remove_event]
id=generator_{X}_{Y}
[/remove_event]
[/event]
# if someone who can't destroy the generator moves there
[event]
name=moveto
[filter]
x,y={X},{Y}
side=1
[not]
type_adv_tree=Mage,Journeyman Mage,Paladin
[/not]
[/filter]
[message]
speaker=unit
message=_"Evil emanates from this stone, but I have not the power to destroy it."
[/message]
[/event]
#enddef

View file

@ -14,7 +14,7 @@
[/filter]
[message]
speaker=unit
message=_"Ahh... I can slake my thirst at this well. Glug, glug glug..." # wmllint: no spellcheck
message=_"Ahh... I can slake my thirst at this well. Glug, glug, glug..." # wmllint: no spellcheck
[/message]
[/event]
#enddef
@ -51,6 +51,7 @@
set_description=_"staff of power"
increase_damage=4
[set_specials]
mode=append
{WEAPON_SPECIAL_MAGICAL}
[/set_specials]
[/effect]

View file

@ -15,6 +15,10 @@
define=CAMPAIGN_DESCENT
first_scenario=01_Saving_Parthyn
[modify_unit_type]
type="Dark Sorcerer"
remove_advancement="Lich"
[/modify_unit_type]
{CAMPAIGN_DIFFICULTY EASY "units/undead-necromancers/adept.png~RC(magenta>black)" ( _ "Neophyte") ( _ "Easy")}
{CAMPAIGN_DIFFICULTY NORMAL "units/undead-necromancers/dark-sorcerer.png~RC(magenta>black)" ( _ "Evoker") ( _ "Normal")} {DEFAULT_DIFFICULTY}
{CAMPAIGN_DIFFICULTY HARD "units/undead-necromancers/lich.png~RC(magenta>black)" ( _ "Summoner") ( _ "Challenging")}

View file

@ -1104,7 +1104,78 @@
[/and]
[then]
[fire_event]
name=rat eating
name=rat eating1
[/fire_event]
[/then]
[/if]
[if]
[variable]
name=s_unit.type
equals=Necrophage
[/variable]
[or]
[variable]
name=s_unit.type
equals=Ghast
[/variable]
[/or]
[and]
[variable]
name=s_unit.max_hitpoints
greater_than=419
[/variable]
[/and]
[then]
[fire_event]
name=rat eating2
[/fire_event]
[/then]
[/if]
[if]
[variable]
name=s_unit.type
equals=Necrophage
[/variable]
[or]
[variable]
name=s_unit.type
equals=Ghast
[/variable]
[/or]
[and]
[variable]
name=s_unit.max_hitpoints
greater_than=999
[/variable]
[/and]
[then]
[fire_event]
name=rat eating3
[/fire_event]
[/then]
[/if]
# there's no way you do this without debug, right?
[if]
[variable]
name=s_unit.type
equals=Necrophage
[/variable]
[or]
[variable]
name=s_unit.type
equals=Ghast
[/variable]
[/or]
[and]
[variable]
name=s_unit.max_hitpoints
greater_than=9999
[/variable]
[/and]
[then]
[fire_event]
name=rat eating4
[/fire_event]
[/then]
[/if]
@ -1130,13 +1201,40 @@
[/message]
[/event]
[event]
name=rat eating
name=rat eating1
[message]
speaker=Malin Keshar
message= _ "I must be absolutely mad to be spending hours here just feeding rats to this rotten pile of flesh..."
[/message]
[/event]
[event]
name=rat eating2
[message]
speaker=Darken Volk
message= _ "Has this boy been smoking again?"
[/message]
[/event]
[event]
name=rat eating3
[message]
speaker=Malin Keshar
message= _ "Day 1337:
All sense of time and being are entombed within darkness. How long has passed since I came here? My senses are a blur. My past life, my prior goals, my very self is all but a distant memory. All I know now is the constant squealing of rats and the ever growing mountain of flesh that feasts before me."
[/message]
[/event]
[event]
name=rat eating4
#po: Malin Keshar breaks the fourth wall here and addresses the player, whom the 'you' refers to.
[message]
speaker=Malin Keshar
message= _ "You. You there behind the screen. You are the one controlling me. Why are you doing this? What did I do to deserve this torment? Please, I beg of you. End me now. Release me from my misery!"
[/message]
[/event]
# spawn crawlers
[event]
name=new turn

View file

@ -33,7 +33,7 @@
{STORYTXT_BACKGROUND travel.jpg}
[/part]
[part]
story=_ "As Malin and Darken Volk continue their raids on the orcs, they eventually force the usually fractious Whitefang chieftains to unite in opposition. The orcs pursue the two necromancers east toward the mouth of the river Men call the Longlier and Elves call the Arkan-thoria, where they manage to surround the humans and force a fight."
story=_ "As Malin and Darken Volk continue their raids on the orcs, they eventually force the usually fractious Whitefang chieftains to unite in opposition. The orcs pursue the two necromancers east toward the mouth of the river humans call the Longlier and elves call the Arkan-thoria, where they manage to surround the humans and force a fight."
{STORYTXT_BACKGROUND travel.jpg}
[/part]
[/story]

View file

@ -752,7 +752,9 @@
[floating_text]
x,y=$x1,$y1
color=255,0,0
# wmllint: markcheck off
text=-1
# wmllint: markcheck on
[/floating_text]
[remove_item]

View file

@ -31,7 +31,7 @@
{CHARACTER_STATS_MALIN_KESHAR}
shroud=yes
share_maps=yes
share_vision=shroud
facing=nw
[/side]
# wmllint: validate-on
@ -64,7 +64,7 @@
color=black
hidden=yes
shroud=yes
share_maps=no
share_vision=none
[ai]
village_value=0

View file

@ -404,7 +404,7 @@
{MODIFY_UNIT (id=Malin Keshar) facing ne}
{VARIABLE dela_arrived 0}
{VARIABLE dela_arrived no}
[/event]
# This helps prevent Darken from getting himself killed easily by preventing
@ -763,7 +763,7 @@
message= _ "Nothing to say this time? No quip bout how we dont understand ya? No comment about yer moral superiority? I can only hope youll be so quiet when I kill you."
[/message]
{VARIABLE dela_arrived 1}
{VARIABLE dela_arrived yes}
[/event]
[event]
@ -820,7 +820,7 @@
[and]
[variable]
name=dela_arrived
numerical_equals=1
boolean_equals=yes
[/variable]
[/and]
[then]
@ -949,6 +949,14 @@
[not]
type_adv_tree=Ghost,Vampire Bat
[/not]
[not]
type_adv_tree=Walking Corpse
variation=bat
[/not]
[not]
# this unit does not advance normally so each type has to be listed individually
type=Spectral Servant,Phantom,Eidolon
[/not]
[/filter]
[remove_item]
@ -998,7 +1006,7 @@
x=$bookX
y=$bookY
side=1
type=Ghost,Wraith,Spectre,Shadow,Nightgaunt
type=Ghost,Wraith,Spectre,Shadow,Nightgaunt,Spectral Servant,Phantom,Eidolon
[/filter]
[message]
@ -1029,6 +1037,28 @@
[/message]
[/event]
[event]
name=moveto
first_time_only=no
[filter]
x=$bookX
y=$bookY
side=1
type_adv_tree=Walking Corpse
variation=bat
[/filter]
[message]
speaker=unit
message= _ "..."
[/message]
[message]
speaker=Malin Keshar
message= _ "Its impossible for a bat to carry a book that heavy."
[/message]
[/event]
[event]
name=time over
@ -1078,7 +1108,7 @@
[message]
speaker=Malin Keshar
message= _ "The terrain is hazardous in these mountains. Neither the paladins nor Dela will be able to pursue me."
message= _ "The terrain is hazardous in these mountains. No one will be able to pursue me."
[/message]
[message]

View file

@ -34,7 +34,7 @@
{STORYTXT_BACKGROUND book.jpg}
[/part]
[part]
story= _ "So reads the book that Malin has reclaimed. <i>“The spells of necromancy can free the spirit from the limitations of the flesh, but only once the soul has been unbound from the body. The necromancer must make the necessary incantations with his dying breaths, then conquer his own spirit much the same way he binds the spirits of others. Because he retains his own will, however, the lich can call upon the awesome powers of the spirit world.”</i>"
story= _ "So reads the book that Malin has reclaimed. <i>“The spells of necromancy can free the spirit from the limitations of the flesh, but only once the soul has been unbound from the body. The necromancer must make the necessary incantations with his dying breaths, then conquer his own spirit in much the same way he binds the spirits of others. Because he retains his own will, however, the lich can call upon the awesome powers of the spirit world.”</i>"
{STORYTXT_BACKGROUND book.jpg}
[/part]
[part]

View file

@ -26,7 +26,7 @@
{STORYTXT_BACKGROUND end.jpg}
[/part]
[part]
story= _ "The lich sometimes wonders if his endeavors are naught but a fruitless crusade, but then again, so what? Life, unlife, death... nothing has ever given his existence meaning. And yet, he still persists on? For what?"
story= _ "The lich sometimes wonders if his endeavors are naught but a fruitless crusade, but then again, so what? Life, unlife, death... nothing has ever given his existence meaning. And yet, he still persists? For what?"
{STORYTXT_BACKGROUND end.jpg}
[/part]
[part]

View file

@ -371,7 +371,9 @@
[floating_text]
x,y=$runit.x,$runit.y
color=255,0,0
# wmllint: markcheck off
text=5
# wmllint: markheck on
[/floating_text]
{VARIABLE counter 0}
@ -714,7 +716,9 @@
[floating_text]
x,y=$cunit.x,$cunit.y
color=255,0,0
# wmllint: markcheck off
text=2
# wmllint: markcheck on
[/floating_text]
[/then]
[/if]

View file

@ -602,7 +602,7 @@
#define AMLA_OPTION_SORROW1
[advancement]
max_times=1
description=_"Reduces nearby enemy units' damage"
description=_"Reduces nearby enemy units damage"
image="attacks/curse.png"
id=eidolon_sorrow1
strict_amla=yes

View file

@ -35,11 +35,10 @@
name= _ "Darken Volk"
profile=portraits/darken_volk.png
unrenamable=yes
advances_to=Necromancer
random_traits=no
[modifications]
# NOTE: if you change these, make sure you don't break the
# removal of the loyal trait in 'Alone at Last'
# removal of the loyal trait in 'Alone at Last
[trait]
id=loyal
name= _ "loyal"

View file

@ -33,6 +33,7 @@
side=2
canrecruit=yes
controller=ai
hidden=yes
recruit=Skeleton Rider,Vampire Bat,Skeleton,Skeleton Archer
[ai]
recruitment_pattern=fighter,fighter,scout,scout,archer
@ -124,6 +125,14 @@
carryover_percentage=70
[/gold_carryover]
[/objectives]
[store_unit]
[filter]
id=Garnad
[/filter]
kill=yes
variable=saved_Garnad
[/store_unit]
[/event]
[event]
@ -136,21 +145,13 @@
id=Owaec
[/recall]
[store_unit]
[filter]
id=Garnad
[/filter]
kill=yes
variable=saved_Garnad
[/store_unit]
[message]
speaker=Gweddry
message= _ "We have come to the Great River. Should we cross here, or try to find a ford?"
[/message]
[message]
speaker=Dacyn
message= _ "We must cross here. The undead are chasing us, and their hordes are much too great for us to defeat. We've haven't faced even a small part of their force yet. We need to cross the river before the bulk of their army arrives!"
message= _ "We must cross here. The undead are chasing us, and their hordes are much too great for us to defeat. Weve havent faced even a small part of their force yet. We need to cross the river before the bulk of their army arrives!"
[/message]
[message]
speaker=Owaec
@ -189,6 +190,10 @@
x,y=36,29
[/unstore_unit]
{CLEAR_VARIABLE saved_Garnad}
[modify_side]
side=2
hidden=no
[/modify_side]
[terrain]
x,y=36,29
@ -211,7 +216,7 @@
[/message]
[message]
speaker=Dacyn
message= _ "They're closing in on us! We must get moving quickly."
message= _ "Theyre closing in on us! We must get moving quickly."
[/message]
[/event]
@ -244,7 +249,7 @@
[message]
speaker=Mal-Hakralan
message= _ "I see, this is where the scared dogs ran to. Don't think you can get away <b>this</b> easily."
message= _ "I see, this is where the scared dogs ran to. Dont think you can get away <b>this</b> easily."
[/message]
[message]
speaker=Dacyn
@ -368,7 +373,8 @@
[then]
[message]
speaker=Grug
message= _ "Grug say join you will he."
#po: "Grug say join you will he" means "I will join you" in a weird speech pattern. "Gork and Drog too" means that two other ogres will be joining Gweddry.
message= _ "Grug say join you will he. Gork and Drog too."
[/message]
[modify_unit]
@ -379,24 +385,22 @@
side=1
canrecruit=no
[modifications]
{TRAIT_LOYAL}
{TEAM_COLOR_OVERRIDE () purple}
[/modifications]
{TRAIT_LOYAL}
{TEAM_COLOR_OVERRIDE () purple}
[/modify_unit]
[unit]
name= _ "Gork"
side=1
type=Ogre
x,y=recall,recall
x,y=39,4
random_traits=yes
[/unit]
[unit]
name= _ "Drog"
side=1
type=Ogre
x,y=recall,recall
x,y=40,5
random_traits=yes
[/unit]

View file

@ -328,7 +328,7 @@
[message]
speaker=Dacyn
message= _ "We have no time to lose! Let's get moving quickly before the rest of their army catches up with us."
message= _ "We have no time to lose! Lets get moving quickly before the rest of their army catches up with us."
[/message]
[endlevel]

View file

@ -254,7 +254,7 @@
[/value]
[value]
message= _ "Don't hurt $ogre_name|!"
message= _ "Dont hurt $ogre_name|!"
[/value]
[value]

View file

@ -411,35 +411,35 @@
[message]
speaker=narrator
message= _ "Several of Gweddry's men find themselves locked away in a crude orcish cell."
message= _ "Several of Gweddrys men find themselves locked away in a crude orcish cell."
image=wesnoth-icon.png
[/message]
[message]
role=escapee sidekick 1
message= _ "We've got to get out of here!"
message= _ "Weve got to get out of here!"
[/message]
[message]
role=escapee sidekick 2
message= _ "I'm sure the commander will come and save us!"
message= _ "Im sure the commander will come and save us!"
[/message]
[message]
role=escapee sidekick 1
message= _ "What? Didn't you see those huge trolls drag them away? It's hopeless!"
message= _ "What? Didnt you see those huge trolls drag them away? Its hopeless!"
[/message]
[message]
role=escapee leader
message= _ "Be quiet, you two! There's something back here..."
message= _ "Be quiet, you two! Theres something back here..."
[/message]
{MOVE_UNIT role="escapee leader" 22 2}
[message]
role=escapee leader
message= _ "Look! There's a gap in the wall over here. I think I can slip through if I clear away some of these rocks..."
message= _ "Look! Theres a gap in the wall over here. I think I can slip through if I clear away some of these rocks..."
[/message]
[animate_unit]
@ -508,7 +508,7 @@
[message]
speaker=unit
message= _ "The door won't open from this side."
message= _ "The door wont open from this side."
[/message]
[/event]
@ -526,7 +526,7 @@
[message]
speaker=unit
message= _ "There's strange noises coming from those pits. I don't like this."
message= _ "Theres strange noises coming from those pits. I dont like this."
[/message]
[event]
@ -583,7 +583,7 @@
[message]
speaker=unit
message= _ "This tunnel seems to go deeper into the caves. We can't go that way."
message= _ "This tunnel seems to go deeper into the caves. We cant go that way."
[/message]
[/event]
@ -598,7 +598,7 @@
[message]
speaker=unit
message= _ "There's a pile of orcish gear and trash here. The stench is wretched."
message= _ "Theres a pile of orcish gear and trash here. The stench is wretched."
[/message]
[/event]
@ -632,7 +632,7 @@
[not]
x,y=$x1,$y1
[/not]
message= _ "But there's too many of them!"
message= _ "But theres too many of them!"
[/message]
[message]
@ -688,7 +688,7 @@
[message]
id=$unit.id
message= _ "I'll try to slip past the trolls. You wait here."
message= _ "Ill try to slip past the trolls. You wait here."
[/message]
[/then]
[/if]
@ -881,7 +881,7 @@
[message]
speaker=unit
message= _ "Here's one of the prison cells! Let me open it..."
message= _ "Heres one of the prison cells! Let me open it..."
[/message]
[sound]
@ -951,7 +951,7 @@
[message]
x=13-16
y=8-10
message= _ "Finally, we're rescued!"
message= _ "Finally, were rescued!"
[/message]
[fire_event]
@ -1017,7 +1017,7 @@
[message]
x=29-32
y=7-9
message= _ "Now let's get out of here!"
message= _ "Now lets get out of here!"
[/message]
[fire_event]
@ -1041,7 +1041,7 @@
[message]
speaker=King Dra-Nak
message= _ "What? Who's there? Get them!"
message= _ "What? Whos there? Get them!"
[/message]
[fire_event]
@ -1282,7 +1282,7 @@
[message]
speaker=narrator
message= _ "You've regained $stored_player_gold gold!"
message= _ "Youve regained $stored_player_gold gold!"
image=wesnoth-icon.png
sound=gold.ogg
[/message]

View file

@ -368,7 +368,7 @@
# wmllint: local spelling Khrakrahs
[message]
speaker=Dacyn
message= _ "We head south. My research revealed that the dragon Khrakrahs is in possession of a Null Stone; with it I will be able to block Mal-Ravanals teleportation. Once we have retrieved the stone, we must travel to Weldyn. Our experience fighting the undead will prove invaluable in the defense of our homeland. Also, I have advice to give the king: I know Mal-Ravanals weakness."
message= _ "We head south. My research revealed that the dragon Khrakrahs is in possession of a Null Stone; with it I will be able to block Mal-Ravanals teleportation. Once we have retrieved the stone, we must travel to Weldyn. Our experience fighting the undead will prove invaluable in the defense of our homeland. Also, I have advice to give the King: I know Mal-Ravanals weakness."
[/message]
[message]
speaker=Gweddry

View file

@ -182,7 +182,7 @@
[/recall]
[message]
speaker=Gweddry
message= _ "We have finally reached Weldyn, but it seems the undead have it surrounded. We must break through to reach the king!"
message= _ "We have finally reached Weldyn, but it seems the undead have it surrounded. We must break through to reach the King!"
[/message]
[message]
speaker=Dacyn

View file

@ -20,7 +20,7 @@
background=portraits/dacyn.png
[/part]
[part]
story= _ "The greatest seer in the land, Galdren, foresaw that some day, some day soon, a great evil would spread over the land. The king, naturally, was worried. The seer told him that the only way to stop the evil was to appoint a mage, versed well in combat with the spirits of darkness, to be the kings advisor."
story= _ "The greatest seer in the land, Galdren, foresaw that some day, some day soon, a great evil would spread over the land. The King, naturally, was worried. The seer told him that the only way to stop the evil was to appoint a mage, versed well in combat with the spirits of darkness, to be the kings advisor."
[/part]
[part]
story= _ "In all the land, there were two magi that clearly stood out from the rest. A mage from the east named Ravan, and myself. The King, wishing to choose the best advisor, sent us both before Galdren. Then he conversed with the seer privately. None know what was said, but when he came out he announced that the seer was dead, and he had chosen me as his new advisor."
@ -176,6 +176,7 @@
{NEW_GOLD_CARRYOVER 100}
carryover_report=no
linger_mode=no
replay_save=no
[/endlevel]
[/event]
[/scenario]

View file

@ -266,7 +266,7 @@
[message]
speaker=Gweddry
message= _ "But how? We don't know which one of them he is."
message= _ "But how? We dont know which one of them he is."
[/message]
[message]

View file

@ -38,7 +38,7 @@
[/attack]
[attack]
name=trample
icon=attacks/blank-attack.png
icon=attacks/hoof-skeletal.png
description=_"trample"
type=impact
range=melee

View file

@ -392,7 +392,7 @@
[/filter]
[message]
speaker=Delfador
message= _ "I have... have failed in my duty to protect the prince! I am defeated."
message= _ "I have... have failed in my duty to protect the Prince! I am defeated."
[/message]
[message]
speaker=Konrad

View file

@ -455,7 +455,7 @@
[/message]
[message]
speaker=Kaylan
message= _ "You have risked your life to defend our city. In return, I place one of my citys finest defenders in your service. Simyr, step forward. I place your lance in the service of young prince Konrad here. May you help him restore order to the country."
message= _ "You have risked your life to defend our city. In return, I place one of my citys finest defenders in your service. Simyr, step forward. I place your lance in the service of young Prince Konrad here. May you help him restore order to the country."
[/message]
[kill]
id=Simyr

View file

@ -39,6 +39,11 @@
bonus=yes
carryover_percentage=40
[/gold_carryover]
[note]
# po: a hint that the player has 3 scenarios before the first main test of their XP management
description= _ "Youll need experienced troops at Elensefar."
[/note]
[/objectives]
[/event]
@ -193,17 +198,22 @@
speaker=Konrad
message= _ "So this is Alduin. It looks a little... desolate."
[/message]
[message]
speaker=Delfador
message= _ "I fear so, Konrad. It seems that the orcs have come even here. Here to the place where I was born, where I was trained."
[/message]
[message]
speaker="Usadar Q'kai"
message= _ "Who is that? Oh, a party of elves has landed. We shall drive them back into the sea!"
[/message]
[message]
speaker=Delfador
message= _ "I did not think the orcs would have come here. This island used to be so beautiful. We must recapture it! To arms!"
message= _ "If the orcs have come here, their forces at Elensefar must be even more numerous than I feared."
[/message]
[message]
speaker=Delfador
# po: a hint for players who are expecting campaigns to have a steadily-rising difficulty curve.
message= _ "Konrad, training is important. If we only have inexperienced troops when we reach Elensefar, then our journey is likely to end in sight of the citys gates."
[/message]
[message]
speaker=Delfador
message= _ "This island is the place where I was born, and where I learned magic; it used to be so beautiful. We must recapture it! To arms!"
[/message]
[/event]
@ -307,7 +317,7 @@
[message]
speaker=Seimus
message= _ "She has taken control of the Bay of Pearls, long held by the Mer, and has turned them into slaves. There they dive for pearls by which she grows richer every day. There are even rumors that she may break the ancient treaty and attack Elensefar!"
message= _ "She has taken control of the Bay of Pearls, long held by the mer, and has turned them into slaves. There they dive for pearls by which she grows richer every day. There are even rumors that she may break the ancient treaty and attack Elensefar!"
[/message]
[message]

View file

@ -153,9 +153,9 @@
{VARIABLE via_isle_of_the_damned yes}
{CLEAR_VARIABLE moremirmu}
{PLACE_IMAGE scenery/temple1.png 11 13}
{PLACE_IMAGE scenery/temple1.png 10 17}
{PLACE_IMAGE scenery/temple1.png 9 15}
{PLACE_IMAGE scenery/temple-cracked1.png 11 13}
{PLACE_IMAGE scenery/temple-cracked2.png 10 17}
{PLACE_IMAGE scenery/temple-cracked3.png 9 15}
#reset gold held to 100
[store_side]

View file

@ -313,7 +313,8 @@
x,y=$x1,$y1
side=2
type=$unit.type
placement=map_overwrite
placement=map
overwrite=yes
moves=0
attacks_left=0
[modifications]
@ -335,7 +336,7 @@
[/message]
[message]
role=Advisor
message= _ "Thats the princess, Lisar. The daughter of the Queen, and her successor!"
message= _ "Thats the Princess, Lisar. The daughter of the Queen, and her successor!"
[/message]
[message]
speaker=Konrad

View file

@ -393,7 +393,7 @@
[/message]
[message]
speaker=Moremirmu
message= _ "You must escape the clutches of that vile Queen, my lord. If you take a course bearing north-east, on past the mountain of gryphons, you will be able to ford the Great River at Abez. Make haste though, for you will not be able to ford the river in winter!"
message= _ "You must escape the clutches of that vile queen, my lord. If you take a course bearing north-east, on past the mountain of gryphons, you will be able to ford the Great River at Abez. Make haste though, for you will not be able to ford the river in winter!"
[/message]
[message]
speaker=Konrad

View file

@ -169,12 +169,12 @@
[/filter_second]
[message]
speaker=second_unit
message= _ "Here are the mother Gryphons eggs!"
message= _ "Here are the mother gryphons eggs!"
[/message]
[message]
speaker=Konrad
{KONRAD_VARIATION glad}
message= _ "Excellent! We should be able to breed Gryphons for our own uses now!"
message= _ "Excellent! We should be able to breed gryphons for our own uses now!"
[/message]
{VARIABLE get_gryphons yes}
{REMOVE_IMAGE 13 16}

View file

@ -199,7 +199,7 @@
[/message]
[message]
speaker=Delfador
message= _ "The forces of the king were encamped here, and the forces of the north were on the north side of the river. For three days and three nights the armies faced each other, neither willing to ford the river. On the fourth day, the northern armies crossed and attacked us."
message= _ "The forces of the King were encamped here, and the forces of the north were on the north side of the river. For three days and three nights the armies faced each other, neither willing to ford the river. On the fourth day, the northern armies crossed and attacked us."
[/message]
[message]
speaker=Konrad
@ -211,19 +211,19 @@
[/message]
[message]
speaker=Kalenz
message= _ "And then the kings son, in the heat of battle, turned upon the king!"
message= _ "And then the Kings son, in the heat of battle, turned upon the King!"
[/message]
[message]
speaker=Konrad
message= _ "But you avenged the murder. You killed the prince. Right, Delfador?"
message= _ "But you avenged the murder. You killed the Prince. Right, Delfador?"
[/message]
[message]
speaker=Delfador
message= _ "When I saw the king betrayed and his banner fallen, I fled the battle. I know not now whether it was wisdom or cowardice, but I did flee, seeing no further hope on that day."
message= _ "When I saw the King betrayed and his banner fallen, I fled the battle. I know not now whether it was wisdom or cowardice, but I did flee, seeing no further hope on that day."
[/message]
[message]
speaker=Konrad
message= _ "Oh, but the elves always told me that you killed the prince, Delfador, even though you never talked about it."
message= _ "Oh, but the elves always told me that you killed the Prince, Delfador, even though you never talked about it."
[/message]
[message]
speaker=Delfador

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